forked from OpenWF/SpaceNinjaServer
		
	Inventory Infrastructure and Example for Suits (#10)
This commit is contained in:
		
							parent
							
								
									ec95bab507
								
							
						
					
					
						commit
						b3a5479e75
					
				@ -11,7 +11,6 @@
 | 
			
		||||
        "node": true
 | 
			
		||||
    },
 | 
			
		||||
    "rules": {
 | 
			
		||||
        "@typescript-eslint/no-misused-promises": "off",
 | 
			
		||||
        "prettier/prettier": "error",
 | 
			
		||||
        "@typescript-eslint/semi": ["error"],
 | 
			
		||||
        "@typescript-eslint/explicit-function-return-type": "off",
 | 
			
		||||
 | 
			
		||||
@ -3,5 +3,7 @@
 | 
			
		||||
  "buildLabel": "2023.05.25.13.39/oZkc-RIme5c1CCltUfg2gQ",
 | 
			
		||||
  "matchmakingBuildId": "4920386201513015989",
 | 
			
		||||
  "version": "33.0.14",
 | 
			
		||||
    "worldSeed": "GWvLyHiw7/Qr/60056xmAmDrn0Y9et2S3BYlLSkLDNBMtumSr3KxWV8He5Jz72yYq3tsY+cd53QeTf+bb54+llGTbYiQF+64BtiLWMVhWP1IUaP4SxWHXojlpQC13op/udHI1whc+8zrxEzzZmv/QlpvigAAbjBDtwu97Df0vgn+YrOKi4G3OhgIkTRocAAzD1P/BGbT8gaKE01H8rXl3+Gq6jCA1O1v800SL6DwKOgMsXVvWp7g2n/tPxJe/j9bmu4XFG0bSa5y5hikLKxvntA/5ut+iogv4MyMBe+TydVxjPqNbkKnby5l4KAL+3inpuPraeg4jcNMt0AwKG8NIQ=="
 | 
			
		||||
  "worldSeed": "GWvLyHiw7/Qr/60056xmAmDrn0Y9et2S3BYlLSkLDNBMtumSr3KxWV8He5Jz72yYq3tsY+cd53QeTf+bb54+llGTbYiQF+64BtiLWMVhWP1IUaP4SxWHXojlpQC13op/udHI1whc+8zrxEzzZmv/QlpvigAAbjBDtwu97Df0vgn+YrOKi4G3OhgIkTRocAAzD1P/BGbT8gaKE01H8rXl3+Gq6jCA1O1v800SL6DwKOgMsXVvWp7g2n/tPxJe/j9bmu4XFG0bSa5y5hikLKxvntA/5ut+iogv4MyMBe+TydVxjPqNbkKnby5l4KAL+3inpuPraeg4jcNMt0AwKG8NIQ==",
 | 
			
		||||
  "skipStoryModeChoice": true,
 | 
			
		||||
  "skipTutorial": true
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1,7 +1,7 @@
 | 
			
		||||
import { RequestHandler } from "express";
 | 
			
		||||
 | 
			
		||||
const deleteSessionController: RequestHandler = (_req, res) => {
 | 
			
		||||
    res.json({ sessionId: { $oid: "64768f104722f795300c9fc0" }, rewardSeed: 5867309943877621023 });
 | 
			
		||||
    res.sendStatus(200);
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
export { deleteSessionController };
 | 
			
		||||
 | 
			
		||||
@ -1,11 +1,29 @@
 | 
			
		||||
import inventory from "@/static/fixed_responses/inventory.json";
 | 
			
		||||
/* eslint-disable @typescript-eslint/no-misused-promises */
 | 
			
		||||
import { toInventoryResponse } from "@/src/helpers/inventoryHelpers";
 | 
			
		||||
import { Inventory } from "@/src/models/inventoryModel";
 | 
			
		||||
import { Request, RequestHandler, Response } from "express";
 | 
			
		||||
 | 
			
		||||
const inventoryController: RequestHandler = (request: Request, response: Response) => {
 | 
			
		||||
    console.log(request.query);
 | 
			
		||||
const inventoryController: RequestHandler = async (request: Request, response: Response) => {
 | 
			
		||||
    const accountId = request.query.accountId;
 | 
			
		||||
 | 
			
		||||
    if (!accountId) {
 | 
			
		||||
        response.status(400).json({ error: "accountId was not provided" });
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
    console.log(accountId);
 | 
			
		||||
    response.json(inventory);
 | 
			
		||||
 | 
			
		||||
    const inventory = await Inventory.findOne({ accountOwnerId: accountId });
 | 
			
		||||
 | 
			
		||||
    if (!inventory) {
 | 
			
		||||
        response.status(400).json({ error: "inventory was undefined" });
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    const inventoryJSON = inventory.toJSON();
 | 
			
		||||
 | 
			
		||||
    const inventoreResponse = toInventoryResponse(inventoryJSON);
 | 
			
		||||
 | 
			
		||||
    response.json(inventoreResponse);
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
export { inventoryController };
 | 
			
		||||
 | 
			
		||||
@ -13,11 +13,8 @@ const loginController: RequestHandler = async (request, response) => {
 | 
			
		||||
    // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-argument
 | 
			
		||||
    const body = JSON.parse(request.body); // parse octet stream of json data to json object
 | 
			
		||||
    const loginRequest = toLoginRequest(body);
 | 
			
		||||
    // console.log(body);
 | 
			
		||||
    //console.log(String.fromCharCode.apiRouterly(null, req.body));
 | 
			
		||||
 | 
			
		||||
    const account = await Account.findOne({ email: loginRequest.email }); //{ _id: 0, __v: 0 }
 | 
			
		||||
    console.log("findone", account);
 | 
			
		||||
 | 
			
		||||
    if (!account && config.autoCreateAccount) {
 | 
			
		||||
        try {
 | 
			
		||||
@ -32,7 +29,8 @@ const loginController: RequestHandler = async (request, response) => {
 | 
			
		||||
                ConsentNeeded: false,
 | 
			
		||||
                TrackedSettings: []
 | 
			
		||||
            });
 | 
			
		||||
            console.log("CREATED ACCOUNT", newAccount);
 | 
			
		||||
            console.log("creating new account");
 | 
			
		||||
            // eslint-disable-next-line @typescript-eslint/no-unused-vars
 | 
			
		||||
            const { email, password, ...databaseAccount } = newAccount;
 | 
			
		||||
            const newLoginResponse: ILoginResponse = {
 | 
			
		||||
                ...databaseAccount,
 | 
			
		||||
@ -47,7 +45,6 @@ const loginController: RequestHandler = async (request, response) => {
 | 
			
		||||
                MatchmakingBuildId: config.matchmakingBuildId
 | 
			
		||||
            };
 | 
			
		||||
 | 
			
		||||
            console.log(newLoginResponse);
 | 
			
		||||
            response.json(newLoginResponse);
 | 
			
		||||
            return;
 | 
			
		||||
        } catch (error: unknown) {
 | 
			
		||||
@ -77,7 +74,6 @@ const loginController: RequestHandler = async (request, response) => {
 | 
			
		||||
        MatchmakingBuildId: config.matchmakingBuildId
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    console.log("login response", newLoginResponse);
 | 
			
		||||
    response.json(newLoginResponse);
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										9
									
								
								src/helpers/inventoryHelpers.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								src/helpers/inventoryHelpers.ts
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,9 @@
 | 
			
		||||
import { IInventoryDatabase, IInventoryResponse } from "@/src/types/inventoryTypes";
 | 
			
		||||
 | 
			
		||||
const toInventoryResponse = (inventoryDatabase: IInventoryDatabase): IInventoryResponse => {
 | 
			
		||||
    // eslint-disable-next-line @typescript-eslint/no-unused-vars
 | 
			
		||||
    const { accountOwnerId, ...inventoreResponse } = inventoryDatabase;
 | 
			
		||||
    return inventoreResponse;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
export { toInventoryResponse };
 | 
			
		||||
							
								
								
									
										258
									
								
								src/models/inventoryModel.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										258
									
								
								src/models/inventoryModel.ts
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,258 @@
 | 
			
		||||
import { Document, Schema, model } from "mongoose";
 | 
			
		||||
import { IInventoryDatabase, IInventoryResponse, ISuitDatabase, ISuitDocument, Oid } from "../types/inventoryTypes";
 | 
			
		||||
 | 
			
		||||
const polaritySchema = new Schema({
 | 
			
		||||
    Slot: Number,
 | 
			
		||||
    Value: String
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
const abilityOverrideSchema = new Schema({
 | 
			
		||||
    Ability: String,
 | 
			
		||||
    Index: Number
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
const colorSchema = new Schema({
 | 
			
		||||
    t0: Number,
 | 
			
		||||
    t1: Number,
 | 
			
		||||
    t2: Number,
 | 
			
		||||
    t3: Number,
 | 
			
		||||
    en: Number,
 | 
			
		||||
    e1: Number,
 | 
			
		||||
    m0: Number,
 | 
			
		||||
    m1: Number
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
const suitConfigSchema = new Schema({
 | 
			
		||||
    Skins: [String],
 | 
			
		||||
    pricol: colorSchema,
 | 
			
		||||
    attcol: colorSchema,
 | 
			
		||||
    eyecol: colorSchema,
 | 
			
		||||
    sigcol: colorSchema,
 | 
			
		||||
    Upgrades: [String],
 | 
			
		||||
    Songs: [
 | 
			
		||||
        {
 | 
			
		||||
            m: String,
 | 
			
		||||
            b: String,
 | 
			
		||||
            p: String,
 | 
			
		||||
            s: String
 | 
			
		||||
        }
 | 
			
		||||
    ],
 | 
			
		||||
    Name: String,
 | 
			
		||||
    AbilityOverride: abilityOverrideSchema,
 | 
			
		||||
    PvpUpgrades: [String],
 | 
			
		||||
    ugly: Boolean
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
suitConfigSchema.set("toJSON", {
 | 
			
		||||
    transform(_document, returnedObject) {
 | 
			
		||||
        delete returnedObject._id;
 | 
			
		||||
        delete returnedObject.__v;
 | 
			
		||||
    }
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
const suitSchema = new Schema({
 | 
			
		||||
    ItemType: String,
 | 
			
		||||
    Configs: [suitConfigSchema],
 | 
			
		||||
    UpgradeVer: Number,
 | 
			
		||||
    XP: Number,
 | 
			
		||||
    InfestationDate: Date,
 | 
			
		||||
    Features: Number,
 | 
			
		||||
    Polarity: [polaritySchema],
 | 
			
		||||
    Polarized: Number,
 | 
			
		||||
    ModSlotPurchases: Number,
 | 
			
		||||
    FocusLens: String,
 | 
			
		||||
    UnlockLevel: Number
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
suitSchema.set("toJSON", {
 | 
			
		||||
    transform(_document, returnedObject: ISuitDocument) {
 | 
			
		||||
        // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call
 | 
			
		||||
        returnedObject.ItemId = { $oid: returnedObject._id.toString() } satisfies Oid;
 | 
			
		||||
        delete returnedObject._id;
 | 
			
		||||
        delete returnedObject.__v;
 | 
			
		||||
    }
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
const inventorySchema = new Schema({
 | 
			
		||||
    accountOwnerId: Schema.Types.ObjectId,
 | 
			
		||||
    SubscribedToEmails: Number,
 | 
			
		||||
    Created: Schema.Types.Mixed,
 | 
			
		||||
    RewardSeed: Number,
 | 
			
		||||
    RegularCredits: Number,
 | 
			
		||||
    PremiumCredits: Number,
 | 
			
		||||
    PremiumCreditsFree: Number,
 | 
			
		||||
    FusionPoints: Number,
 | 
			
		||||
    SuitBin: Schema.Types.Mixed,
 | 
			
		||||
    WeaponBin: Schema.Types.Mixed,
 | 
			
		||||
    SentinelBin: Schema.Types.Mixed,
 | 
			
		||||
    SpaceSuitBin: Schema.Types.Mixed,
 | 
			
		||||
    SpaceWeaponBin: Schema.Types.Mixed,
 | 
			
		||||
    PvpBonusLoadoutBin: Schema.Types.Mixed,
 | 
			
		||||
    PveBonusLoadoutBin: Schema.Types.Mixed,
 | 
			
		||||
    RandomModBin: Schema.Types.Mixed,
 | 
			
		||||
    TradesRemaining: Number,
 | 
			
		||||
    DailyAffiliation: Number,
 | 
			
		||||
    DailyAffiliationPvp: Number,
 | 
			
		||||
    DailyAffiliationLibrary: Number,
 | 
			
		||||
    DailyFocus: Number,
 | 
			
		||||
    GiftsRemaining: Number,
 | 
			
		||||
    HandlerPoints: Number,
 | 
			
		||||
    MiscItems: [Schema.Types.Mixed],
 | 
			
		||||
    ChallengesFixVersion: Number,
 | 
			
		||||
    ChallengeProgress: [Schema.Types.Mixed],
 | 
			
		||||
    RawUpgrades: [Schema.Types.Mixed],
 | 
			
		||||
    ReceivedStartingGear: Boolean,
 | 
			
		||||
    Suits: [suitSchema],
 | 
			
		||||
    LongGuns: [Schema.Types.Mixed],
 | 
			
		||||
    Pistols: [Schema.Types.Mixed],
 | 
			
		||||
    Melee: [Schema.Types.Mixed],
 | 
			
		||||
    Ships: [Schema.Types.Mixed],
 | 
			
		||||
    QuestKeys: [Schema.Types.Mixed],
 | 
			
		||||
    FlavourItems: [Schema.Types.Mixed],
 | 
			
		||||
    Scoops: [Schema.Types.Mixed],
 | 
			
		||||
    TrainingRetriesLeft: Number,
 | 
			
		||||
    LoadOutPresets: Schema.Types.Mixed,
 | 
			
		||||
    CurrentLoadOutIds: [Schema.Types.Mixed],
 | 
			
		||||
    Missions: [Schema.Types.Mixed],
 | 
			
		||||
    RandomUpgradesIdentified: Number,
 | 
			
		||||
    LastRegionPlayed: String,
 | 
			
		||||
    XPInfo: [Schema.Types.Mixed],
 | 
			
		||||
    Recipes: [Schema.Types.Mixed],
 | 
			
		||||
    WeaponSkins: [Schema.Types.Mixed],
 | 
			
		||||
    PendingRecipes: [Schema.Types.Mixed],
 | 
			
		||||
    TrainingDate: Schema.Types.Mixed,
 | 
			
		||||
    PlayerLevel: Number,
 | 
			
		||||
    Upgrades: [Schema.Types.Mixed],
 | 
			
		||||
    EquippedGear: [String],
 | 
			
		||||
    DeathMarks: [String],
 | 
			
		||||
    FusionTreasures: [Schema.Types.Mixed],
 | 
			
		||||
    WebFlags: Schema.Types.Mixed,
 | 
			
		||||
    CompletedAlerts: [String],
 | 
			
		||||
    Consumables: [Schema.Types.Mixed],
 | 
			
		||||
    LevelKeys: [Schema.Types.Mixed],
 | 
			
		||||
    TauntHistory: [Schema.Types.Mixed],
 | 
			
		||||
    StoryModeChoice: String,
 | 
			
		||||
    PeriodicMissionCompletions: [Schema.Types.Mixed],
 | 
			
		||||
    KubrowPetEggs: [Schema.Types.Mixed],
 | 
			
		||||
    LoreFragmentScans: [Schema.Types.Mixed],
 | 
			
		||||
    EquippedEmotes: [String],
 | 
			
		||||
    PendingTrades: [Schema.Types.Mixed],
 | 
			
		||||
    Boosters: [Schema.Types.Mixed],
 | 
			
		||||
    ActiveDojoColorResearch: String,
 | 
			
		||||
    SentientSpawnChanceBoosters: Schema.Types.Mixed,
 | 
			
		||||
    Affiliations: [Schema.Types.Mixed],
 | 
			
		||||
    QualifyingInvasions: [Schema.Types.Mixed],
 | 
			
		||||
    FactionScores: [Number],
 | 
			
		||||
    SpaceSuits: [Schema.Types.Mixed],
 | 
			
		||||
    SpaceMelee: [Schema.Types.Mixed],
 | 
			
		||||
    SpaceGuns: [Schema.Types.Mixed],
 | 
			
		||||
    ArchwingEnabled: Boolean,
 | 
			
		||||
    PendingSpectreLoadouts: [Schema.Types.Mixed],
 | 
			
		||||
    SpectreLoadouts: [Schema.Types.Mixed],
 | 
			
		||||
    SentinelWeapons: [Schema.Types.Mixed],
 | 
			
		||||
    Sentinels: [Schema.Types.Mixed],
 | 
			
		||||
    EmailItems: [Schema.Types.Mixed],
 | 
			
		||||
    CompletedSyndicates: [String],
 | 
			
		||||
    FocusXP: Schema.Types.Mixed,
 | 
			
		||||
    Wishlist: [String],
 | 
			
		||||
    Alignment: Schema.Types.Mixed,
 | 
			
		||||
    CompletedSorties: [String],
 | 
			
		||||
    LastSortieReward: [Schema.Types.Mixed],
 | 
			
		||||
    Drones: [Schema.Types.Mixed],
 | 
			
		||||
    StepSequencers: [Schema.Types.Mixed],
 | 
			
		||||
    ActiveAvatarImageType: String,
 | 
			
		||||
    KubrowPets: [Schema.Types.Mixed],
 | 
			
		||||
    ShipDecorations: [Schema.Types.Mixed],
 | 
			
		||||
    OperatorAmpBin: Schema.Types.Mixed,
 | 
			
		||||
    DailyAffiliationCetus: Number,
 | 
			
		||||
    DailyAffiliationQuills: Number,
 | 
			
		||||
    DiscoveredMarkers: [Schema.Types.Mixed],
 | 
			
		||||
    CompletedJobs: [Schema.Types.Mixed],
 | 
			
		||||
    FocusAbility: String,
 | 
			
		||||
    FocusUpgrades: [Schema.Types.Mixed],
 | 
			
		||||
    OperatorAmps: [Schema.Types.Mixed],
 | 
			
		||||
    HasContributedToDojo: Boolean,
 | 
			
		||||
    HWIDProtectEnabled: Boolean,
 | 
			
		||||
    KubrowPetPrints: [Schema.Types.Mixed],
 | 
			
		||||
    AlignmentReplay: Schema.Types.Mixed,
 | 
			
		||||
    PersonalGoalProgress: [Schema.Types.Mixed],
 | 
			
		||||
    DailyAffiliationSolaris: Number,
 | 
			
		||||
    SpecialItems: [Schema.Types.Mixed],
 | 
			
		||||
    ThemeStyle: String,
 | 
			
		||||
    ThemeBackground: String,
 | 
			
		||||
    ThemeSounds: String,
 | 
			
		||||
    BountyScore: Number,
 | 
			
		||||
    ChallengeInstanceStates: [Schema.Types.Mixed],
 | 
			
		||||
    LoginMilestoneRewards: [String],
 | 
			
		||||
    OperatorLoadOuts: [Schema.Types.Mixed],
 | 
			
		||||
    DailyAffiliationVentkids: Number,
 | 
			
		||||
    DailyAffiliationVox: Number,
 | 
			
		||||
    RecentVendorPurchases: [Schema.Types.Mixed],
 | 
			
		||||
    Hoverboards: [Schema.Types.Mixed],
 | 
			
		||||
    NodeIntrosCompleted: [String],
 | 
			
		||||
    CompletedJobChains: [Schema.Types.Mixed],
 | 
			
		||||
    SeasonChallengeHistory: [Schema.Types.Mixed],
 | 
			
		||||
    MoaPets: [Schema.Types.Mixed],
 | 
			
		||||
    EquippedInstrument: String,
 | 
			
		||||
    InvasionChainProgress: [Schema.Types.Mixed],
 | 
			
		||||
    DataKnives: [Schema.Types.Mixed],
 | 
			
		||||
    NemesisHistory: [Schema.Types.Mixed],
 | 
			
		||||
    LastNemesisAllySpawnTime: Schema.Types.Mixed,
 | 
			
		||||
    Settings: Schema.Types.Mixed,
 | 
			
		||||
    PersonalTechProjects: [Schema.Types.Mixed],
 | 
			
		||||
    CrewShips: [Schema.Types.Mixed],
 | 
			
		||||
    CrewShipSalvageBin: Schema.Types.Mixed,
 | 
			
		||||
    PlayerSkills: Schema.Types.Mixed,
 | 
			
		||||
    CrewShipAmmo: [Schema.Types.Mixed],
 | 
			
		||||
    CrewShipSalvagedWeaponSkins: [Schema.Types.Mixed],
 | 
			
		||||
    CrewShipWeapons: [Schema.Types.Mixed],
 | 
			
		||||
    CrewShipSalvagedWeapons: [Schema.Types.Mixed],
 | 
			
		||||
    CrewShipWeaponSkins: [Schema.Types.Mixed],
 | 
			
		||||
    TradeBannedUntil: Schema.Types.Mixed,
 | 
			
		||||
    PlayedParkourTutorial: Boolean,
 | 
			
		||||
    SubscribedToEmailsPersonalized: Number,
 | 
			
		||||
    MechBin: Schema.Types.Mixed,
 | 
			
		||||
    DailyAffiliationEntrati: Number,
 | 
			
		||||
    DailyAffiliationNecraloid: Number,
 | 
			
		||||
    MechSuits: [Schema.Types.Mixed],
 | 
			
		||||
    InfestedFoundry: Schema.Types.Mixed,
 | 
			
		||||
    BlessingCooldown: Schema.Types.Mixed,
 | 
			
		||||
    CrewMemberBin: Schema.Types.Mixed,
 | 
			
		||||
    CrewShipHarnesses: [Schema.Types.Mixed],
 | 
			
		||||
    CrewShipRawSalvage: [Schema.Types.Mixed],
 | 
			
		||||
    CrewMembers: [Schema.Types.Mixed],
 | 
			
		||||
    AdultOperatorLoadOuts: [Schema.Types.Mixed],
 | 
			
		||||
    LotusCustomization: Schema.Types.Mixed,
 | 
			
		||||
    UseAdultOperatorLoadout: Boolean,
 | 
			
		||||
    DailyAffiliationZariman: Number,
 | 
			
		||||
    NemesisAbandonedRewards: [String],
 | 
			
		||||
    DailyAffiliationKahl: Number,
 | 
			
		||||
    LastInventorySync: Schema.Types.Mixed,
 | 
			
		||||
    NextRefill: Schema.Types.Mixed,
 | 
			
		||||
    ActiveLandscapeTraps: [Schema.Types.Mixed],
 | 
			
		||||
    EvolutionProgress: [Schema.Types.Mixed],
 | 
			
		||||
    RepVotes: [Schema.Types.Mixed],
 | 
			
		||||
    LeagueTickets: [Schema.Types.Mixed],
 | 
			
		||||
    Quests: [Schema.Types.Mixed],
 | 
			
		||||
    Robotics: [Schema.Types.Mixed],
 | 
			
		||||
    UsedDailyDeals: [Schema.Types.Mixed],
 | 
			
		||||
    LibraryPersonalProgress: [Schema.Types.Mixed],
 | 
			
		||||
    CollectibleSeries: [Schema.Types.Mixed],
 | 
			
		||||
    LibraryAvailableDailyTaskInfo: Schema.Types.Mixed,
 | 
			
		||||
    HasResetAccount: Boolean,
 | 
			
		||||
    PendingCoupon: Schema.Types.Mixed,
 | 
			
		||||
    Harvestable: Boolean,
 | 
			
		||||
    DeathSquadable: Boolean
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
inventorySchema.set("toJSON", {
 | 
			
		||||
    transform(_document, returnedObject: ISuitDocument) {
 | 
			
		||||
        delete returnedObject._id;
 | 
			
		||||
        delete returnedObject.__v;
 | 
			
		||||
    }
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
const Suit = model<ISuitDatabase>("Suit", suitSchema);
 | 
			
		||||
const Inventory = model<IInventoryDatabase>("Inventory", inventorySchema);
 | 
			
		||||
 | 
			
		||||
export { Inventory, Suit };
 | 
			
		||||
							
								
								
									
										25
									
								
								src/services/inventoryService.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								src/services/inventoryService.ts
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,25 @@
 | 
			
		||||
import { Inventory } from "@/src/models/inventoryModel";
 | 
			
		||||
import new_inventory from "@/static/fixed_responses/postTutorialInventory.json";
 | 
			
		||||
import config from "@/config.json";
 | 
			
		||||
import { Types } from "mongoose";
 | 
			
		||||
 | 
			
		||||
const createInventory = async (accountOwnerId: Types.ObjectId) => {
 | 
			
		||||
    try {
 | 
			
		||||
        const inventory = new Inventory({ ...new_inventory, accountOwnerId: accountOwnerId });
 | 
			
		||||
        if (config.skipStoryModeChoice) {
 | 
			
		||||
            inventory.StoryModeChoice = "WARFRAME";
 | 
			
		||||
        }
 | 
			
		||||
        if (config.skipTutorial) {
 | 
			
		||||
            inventory.PlayedParkourTutorial = true;
 | 
			
		||||
            inventory.ReceivedStartingGear = true;
 | 
			
		||||
        }
 | 
			
		||||
        await inventory.save();
 | 
			
		||||
    } catch (error) {
 | 
			
		||||
        if (error instanceof Error) {
 | 
			
		||||
            throw new Error(`error creating inventory" ${error.message}`);
 | 
			
		||||
        }
 | 
			
		||||
        throw new Error("error creating inventory that is not of instance Error");
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
export { createInventory };
 | 
			
		||||
@ -1,4 +1,5 @@
 | 
			
		||||
import { Account } from "@/src/models/loginModel";
 | 
			
		||||
import { createInventory } from "@/src/services/inventoryService";
 | 
			
		||||
import { IDatabaseAccount } from "@/src/types/loginTypes";
 | 
			
		||||
 | 
			
		||||
const isCorrectPassword = (requestPassword: string, databasePassword: string): boolean => {
 | 
			
		||||
@ -6,10 +7,10 @@ const isCorrectPassword = (requestPassword: string, databasePassword: string): b
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const createAccount = async (accountData: IDatabaseAccount) => {
 | 
			
		||||
    console.log("test", accountData);
 | 
			
		||||
    const account = new Account(accountData);
 | 
			
		||||
    try {
 | 
			
		||||
        await account.save();
 | 
			
		||||
        await createInventory(account._id);
 | 
			
		||||
        return account.toJSON();
 | 
			
		||||
    } catch (error) {
 | 
			
		||||
        if (error instanceof Error) {
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										1232
									
								
								src/types/inventoryTypes.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1232
									
								
								src/types/inventoryTypes.ts
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@ -1,5 +1,5 @@
 | 
			
		||||
{
 | 
			
		||||
  "ShipOwnerId": "removed",
 | 
			
		||||
  "ShipOwnerId": "647bce8a1caba352f90b6a09",
 | 
			
		||||
  "Ship": {
 | 
			
		||||
    "Rooms": [
 | 
			
		||||
      { "Name": "AlchemyRoom", "MaxCapacity": 1600 },
 | 
			
		||||
@ -9,7 +9,15 @@
 | 
			
		||||
      { "Name": "OutsideRoom", "MaxCapacity": 1600 },
 | 
			
		||||
      { "Name": "PersonalQuartersRoom", "MaxCapacity": 1600 }
 | 
			
		||||
    ],
 | 
			
		||||
    "ContentUrlSignature": "removed"
 | 
			
		||||
    "ContentUrlSignature": "removed",
 | 
			
		||||
    "Features": [
 | 
			
		||||
      "/Lotus/Types/Items/ShipFeatureItems/EarthNavigationFeatureItem",
 | 
			
		||||
      "/Lotus/Types/Items/ShipFeatureItems/ArsenalFeatureItem",
 | 
			
		||||
      "/Lotus/Types/Items/ShipFeatureItems/SocialMenuFeatureItem",
 | 
			
		||||
      "/Lotus/Types/Items/ShipFeatureItems/ModsFeatureItem",
 | 
			
		||||
      "/Lotus/Types/Items/ShipFeatureItems/FoundryFeatureItem",
 | 
			
		||||
      "/Lotus/Types/Items/ShipFeatureItems/MercuryNavigationFeatureItem"
 | 
			
		||||
    ]
 | 
			
		||||
  },
 | 
			
		||||
  "Apartment": {
 | 
			
		||||
    "Rooms": [
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										121
									
								
								static/fixed_responses/new_inventory.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										121
									
								
								static/fixed_responses/new_inventory.json
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,121 @@
 | 
			
		||||
{
 | 
			
		||||
  "SubscribedToEmails": 0,
 | 
			
		||||
  "Created": { "$date": { "$numberLong": "1685829131" } },
 | 
			
		||||
  "SubscribedToEmailsPersonalized": 0,
 | 
			
		||||
  "RewardSeed": -5604904486637265640,
 | 
			
		||||
  "CrewMemberBin": { "Slots": 3 },
 | 
			
		||||
  "CrewShipSalvageBin": { "Slots": 8 },
 | 
			
		||||
  "DrifterMelee": [{ "ItemType": "/Lotus/Types/Friendly/PlayerControllable/Weapons/DuviriDualSwords", "ItemId": { "$oid": "647bb619e15fa43f0ee4b1b1" } }],
 | 
			
		||||
  "FusionPoints": 0,
 | 
			
		||||
  "MechBin": { "Slots": 4 },
 | 
			
		||||
  "OperatorAmpBin": { "Slots": 8 },
 | 
			
		||||
  "PveBonusLoadoutBin": { "Slots": 0 },
 | 
			
		||||
  "PvpBonusLoadoutBin": { "Slots": 0 },
 | 
			
		||||
  "RandomModBin": { "Slots": 15 },
 | 
			
		||||
  "RegularCredits": 0,
 | 
			
		||||
  "SentinelBin": { "Slots": 10 },
 | 
			
		||||
  "SpaceSuitBin": { "Slots": 4 },
 | 
			
		||||
  "SpaceWeaponBin": { "Slots": 4 },
 | 
			
		||||
  "SuitBin": { "Slots": 2 },
 | 
			
		||||
  "WeaponBin": { "Slots": 8 },
 | 
			
		||||
  "LastInventorySync": { "$oid": "647bb5d79f963c9d24668257" },
 | 
			
		||||
  "NextRefill": { "$date": { "$numberLong": "1685829131" } },
 | 
			
		||||
  "ActiveLandscapeTraps": [],
 | 
			
		||||
  "ChallengeProgress": [],
 | 
			
		||||
  "CrewMembers": [],
 | 
			
		||||
  "CrewShips": [],
 | 
			
		||||
  "CrewShipHarnesses": [],
 | 
			
		||||
  "CrewShipSalvagedWeapons": [],
 | 
			
		||||
  "CrewShipSalvagedWeaponSkins": [],
 | 
			
		||||
  "CrewShipWeapons": [],
 | 
			
		||||
  "CrewShipWeaponSkins": [],
 | 
			
		||||
  "DataKnives": [],
 | 
			
		||||
  "DrifterGuns": [],
 | 
			
		||||
  "Drones": [],
 | 
			
		||||
  "Horses": [],
 | 
			
		||||
  "Hoverboards": [],
 | 
			
		||||
  "KubrowPets": [],
 | 
			
		||||
  "KubrowPetEggs": [],
 | 
			
		||||
  "KubrowPetPrints": [],
 | 
			
		||||
  "LongGuns": [],
 | 
			
		||||
  "MechSuits": [],
 | 
			
		||||
  "Melee": [],
 | 
			
		||||
  "MoaPets": [],
 | 
			
		||||
  "OperatorAmps": [],
 | 
			
		||||
  "OperatorLoadOuts": [],
 | 
			
		||||
  "AdultOperatorLoadOuts": [],
 | 
			
		||||
  "KahlLoadOuts": [],
 | 
			
		||||
  "PendingRecipes": [],
 | 
			
		||||
  "PersonalGoalProgress": [],
 | 
			
		||||
  "PersonalTechProjects": [],
 | 
			
		||||
  "Pistols": [],
 | 
			
		||||
  "QualifyingInvasions": [],
 | 
			
		||||
  "RepVotes": [],
 | 
			
		||||
  "Scoops": [],
 | 
			
		||||
  "Sentinels": [],
 | 
			
		||||
  "SentinelWeapons": [],
 | 
			
		||||
  "Ships": [],
 | 
			
		||||
  "SpaceGuns": [],
 | 
			
		||||
  "SpaceMelee": [],
 | 
			
		||||
  "SpaceSuits": [],
 | 
			
		||||
  "SpecialItems": [],
 | 
			
		||||
  "StepSequencers": [],
 | 
			
		||||
  "Suits": [],
 | 
			
		||||
  "Upgrades": [],
 | 
			
		||||
  "WeaponSkins": [],
 | 
			
		||||
  "Boosters": [],
 | 
			
		||||
  "Consumables": [],
 | 
			
		||||
  "EmailItems": [],
 | 
			
		||||
  "FlavourItems": [],
 | 
			
		||||
  "FocusUpgrades": [],
 | 
			
		||||
  "FusionTreasures": [],
 | 
			
		||||
  "LeagueTickets": [],
 | 
			
		||||
  "LevelKeys": [],
 | 
			
		||||
  "LoreFragmentScans": [],
 | 
			
		||||
  "MiscItems": [],
 | 
			
		||||
  "PendingSpectreLoadouts": [],
 | 
			
		||||
  "Quests": [],
 | 
			
		||||
  "QuestKeys": [],
 | 
			
		||||
  "RawUpgrades": [],
 | 
			
		||||
  "Recipes": [],
 | 
			
		||||
  "Robotics": [],
 | 
			
		||||
  "ShipDecorations": [],
 | 
			
		||||
  "SpectreLoadouts": [],
 | 
			
		||||
  "XPInfo": [],
 | 
			
		||||
  "CrewShipAmmo": [],
 | 
			
		||||
  "CrewShipRawSalvage": [],
 | 
			
		||||
  "EvolutionProgress": [],
 | 
			
		||||
  "Missions": [],
 | 
			
		||||
  "TauntHistory": [],
 | 
			
		||||
  "CompletedSyndicates": [],
 | 
			
		||||
  "UsedDailyDeals": [],
 | 
			
		||||
  "DailyAffiliation": 16000,
 | 
			
		||||
  "DailyAffiliationPvp": 16000,
 | 
			
		||||
  "DailyAffiliationLibrary": 16000,
 | 
			
		||||
  "DailyAffiliationCetus": 16000,
 | 
			
		||||
  "DailyAffiliationQuills": 16000,
 | 
			
		||||
  "DailyAffiliationSolaris": 16000,
 | 
			
		||||
  "DailyAffiliationVentkids": 16000,
 | 
			
		||||
  "DailyAffiliationVox": 16000,
 | 
			
		||||
  "DailyAffiliationEntrati": 16000,
 | 
			
		||||
  "DailyAffiliationNecraloid": 16000,
 | 
			
		||||
  "DailyAffiliationZariman": 16000,
 | 
			
		||||
  "DailyAffiliationKahl": 16000,
 | 
			
		||||
  "DailyFocus": 250000,
 | 
			
		||||
  "GiftsRemaining": 8,
 | 
			
		||||
  "LibraryAvailableDailyTaskInfo": {
 | 
			
		||||
    "EnemyTypes": ["/Lotus/Types/Enemies/Orokin/OrokinBladeSawmanAvatar"],
 | 
			
		||||
    "EnemyLocTag": "/Lotus/Language/Game/OrokinBladeSawman",
 | 
			
		||||
    "EnemyIcon": "/Lotus/Interface/Icons/Npcs/Orokin/OrokinBladeSawman.png",
 | 
			
		||||
    "ScansRequired": 4,
 | 
			
		||||
    "RewardStoreItem": "/Lotus/StoreItems/Upgrades/Mods/FusionBundles/UncommonFusionBundle",
 | 
			
		||||
    "RewardQuantity": 10,
 | 
			
		||||
    "RewardStanding": 10000
 | 
			
		||||
  },
 | 
			
		||||
  "DuviriInfo": { "Seed": 5898912197983600352, "NumCompletions": 0 },
 | 
			
		||||
  "TradesRemaining": 0,
 | 
			
		||||
  "HasContributedToDojo": false,
 | 
			
		||||
  "HasResetAccount": false,
 | 
			
		||||
  "PendingCoupon": { "Expiry": { "$date": { "$numberLong": "0" } }, "Discount": 0 },
 | 
			
		||||
  "PremiumCreditsFree": 0
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										145
									
								
								static/fixed_responses/postTutorialInventory.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										145
									
								
								static/fixed_responses/postTutorialInventory.json
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,145 @@
 | 
			
		||||
{
 | 
			
		||||
  "SubscribedToEmails": 0,
 | 
			
		||||
  "Created": { "$date": { "$numberLong": "1685829131" } },
 | 
			
		||||
  "SubscribedToEmailsPersonalized": 0,
 | 
			
		||||
  "RewardSeed": -5604904486637265640,
 | 
			
		||||
  "CrewMemberBin": { "Slots": 3 },
 | 
			
		||||
  "CrewShipSalvageBin": { "Slots": 8 },
 | 
			
		||||
  "DrifterMelee": [{ "ItemType": "/Lotus/Types/Friendly/PlayerControllable/Weapons/DuviriDualSwords", "ItemId": { "$oid": "647bd268c547fe5b2909e715" } }],
 | 
			
		||||
  "FusionPoints": 0,
 | 
			
		||||
  "MechBin": { "Slots": 4 },
 | 
			
		||||
  "OperatorAmpBin": { "Slots": 8 },
 | 
			
		||||
  "PveBonusLoadoutBin": { "Slots": 0 },
 | 
			
		||||
  "PvpBonusLoadoutBin": { "Slots": 0 },
 | 
			
		||||
  "RandomModBin": { "Slots": 15 },
 | 
			
		||||
  "RegularCredits": 3000,
 | 
			
		||||
  "SentinelBin": { "Slots": 10 },
 | 
			
		||||
  "SpaceSuitBin": { "Slots": 4 },
 | 
			
		||||
  "SpaceWeaponBin": { "Slots": 4 },
 | 
			
		||||
  "SuitBin": { "Slots": 1 },
 | 
			
		||||
  "WeaponBin": { "Slots": 5 },
 | 
			
		||||
  "DailyAffiliation": 16000,
 | 
			
		||||
  "DailyAffiliationCetus": 16000,
 | 
			
		||||
  "DailyAffiliationEntrati": 16000,
 | 
			
		||||
  "DailyAffiliationKahl": 16000,
 | 
			
		||||
  "DailyAffiliationLibrary": 16000,
 | 
			
		||||
  "DailyAffiliationNecraloid": 16000,
 | 
			
		||||
  "DailyAffiliationPvp": 16000,
 | 
			
		||||
  "DailyAffiliationQuills": 16000,
 | 
			
		||||
  "DailyAffiliationSolaris": 16000,
 | 
			
		||||
  "DailyAffiliationVentkids": 16000,
 | 
			
		||||
  "DailyAffiliationVox": 16000,
 | 
			
		||||
  "DailyAffiliationZariman": 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",
 | 
			
		||||
  "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": [],
 | 
			
		||||
  "Hoverboards": [],
 | 
			
		||||
  "KubrowPets": [],
 | 
			
		||||
  "KubrowPetEggs": [],
 | 
			
		||||
  "KubrowPetPrints": [],
 | 
			
		||||
  "MechSuits": [],
 | 
			
		||||
  "MoaPets": [],
 | 
			
		||||
  "OperatorAmps": [],
 | 
			
		||||
  "OperatorLoadOuts": [],
 | 
			
		||||
  "AdultOperatorLoadOuts": [],
 | 
			
		||||
  "KahlLoadOuts": [],
 | 
			
		||||
  "PendingRecipes": [],
 | 
			
		||||
  "PersonalGoalProgress": [],
 | 
			
		||||
  "PersonalTechProjects": [],
 | 
			
		||||
  "QualifyingInvasions": [],
 | 
			
		||||
  "RepVotes": [],
 | 
			
		||||
  "Sentinels": [],
 | 
			
		||||
  "SentinelWeapons": [],
 | 
			
		||||
  "SpaceGuns": [],
 | 
			
		||||
  "SpaceMelee": [],
 | 
			
		||||
  "SpaceSuits": [],
 | 
			
		||||
  "SpecialItems": [],
 | 
			
		||||
  "StepSequencers": [],
 | 
			
		||||
  "Upgrades": [],
 | 
			
		||||
  "Boosters": [],
 | 
			
		||||
  "EmailItems": [],
 | 
			
		||||
  "FocusUpgrades": [],
 | 
			
		||||
  "FusionTreasures": [],
 | 
			
		||||
  "LeagueTickets": [],
 | 
			
		||||
  "LevelKeys": [],
 | 
			
		||||
  "LoreFragmentScans": [],
 | 
			
		||||
  "MiscItems": [],
 | 
			
		||||
  "PendingSpectreLoadouts": [],
 | 
			
		||||
  "Quests": [],
 | 
			
		||||
  "Robotics": [],
 | 
			
		||||
  "ShipDecorations": [],
 | 
			
		||||
  "SpectreLoadouts": [],
 | 
			
		||||
  "XPInfo": [],
 | 
			
		||||
  "CrewShipAmmo": [],
 | 
			
		||||
  "CrewShipRawSalvage": [],
 | 
			
		||||
  "EvolutionProgress": [],
 | 
			
		||||
  "Missions": [],
 | 
			
		||||
  "TauntHistory": [],
 | 
			
		||||
  "CompletedSyndicates": [],
 | 
			
		||||
  "UsedDailyDeals": [],
 | 
			
		||||
  "LibraryAvailableDailyTaskInfo": {
 | 
			
		||||
    "EnemyTypes": ["/Lotus/Types/Enemies/Orokin/OrokinBladeSawmanAvatar"],
 | 
			
		||||
    "EnemyLocTag": "/Lotus/Language/Game/OrokinBladeSawman",
 | 
			
		||||
    "EnemyIcon": "/Lotus/Interface/Icons/Npcs/Orokin/OrokinBladeSawman.png",
 | 
			
		||||
    "ScansRequired": 4,
 | 
			
		||||
    "RewardStoreItem": "/Lotus/StoreItems/Upgrades/Mods/FusionBundles/UncommonFusionBundle",
 | 
			
		||||
    "RewardQuantity": 10,
 | 
			
		||||
    "RewardStanding": 10000
 | 
			
		||||
  },
 | 
			
		||||
  "HasContributedToDojo": false,
 | 
			
		||||
  "HasResetAccount": false,
 | 
			
		||||
  "PendingCoupon": { "Expiry": { "$date": { "$numberLong": "0" } }, "Discount": 0 },
 | 
			
		||||
  "PremiumCredits": 50
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user