XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

XFESpaceNinjaServer

A simple server for a small space ninja game

公开
关注 0 Fork 0 Star 0
返回提交历史

XFEstudio/XFESpaceNinjaServer

Inventory Infrastructure and Example for Suits (#10)

b3a5479e
OrdisPrime <134585663+OrdisPrime@users.noreply.github.com>
提交于

代码差异

13 个文件 +1834 -20
Modified .eslintrc +0 -1
@@ -11,7 +11,6 @@
11 11 "node": true
12 12 },
13 13 "rules": {
14 "@typescript-eslint/no-misused-promises": "off",
15 14 "prettier/prettier": "error",
16 15 "@typescript-eslint/semi": ["error"],
17 16 "@typescript-eslint/explicit-function-return-type": "off",
Modified config.json +7 -5
@@ -1,7 +1,9 @@
1 1 {
2 "autoCreateAccount": true,
3 "buildLabel": "2023.05.25.13.39/oZkc-RIme5c1CCltUfg2gQ",
4 "matchmakingBuildId": "4920386201513015989",
5 "version": "33.0.14",
6 "worldSeed": "GWvLyHiw7/Qr/60056xmAmDrn0Y9et2S3BYlLSkLDNBMtumSr3KxWV8He5Jz72yYq3tsY+cd53QeTf+bb54+llGTbYiQF+64BtiLWMVhWP1IUaP4SxWHXojlpQC13op/udHI1whc+8zrxEzzZmv/QlpvigAAbjBDtwu97Df0vgn+YrOKi4G3OhgIkTRocAAzD1P/BGbT8gaKE01H8rXl3+Gq6jCA1O1v800SL6DwKOgMsXVvWp7g2n/tPxJe/j9bmu4XFG0bSa5y5hikLKxvntA/5ut+iogv4MyMBe+TydVxjPqNbkKnby5l4KAL+3inpuPraeg4jcNMt0AwKG8NIQ=="
2 "autoCreateAccount": true,
3 "buildLabel": "2023.05.25.13.39/oZkc-RIme5c1CCltUfg2gQ",
4 "matchmakingBuildId": "4920386201513015989",
5 "version": "33.0.14",
6 "worldSeed": "GWvLyHiw7/Qr/60056xmAmDrn0Y9et2S3BYlLSkLDNBMtumSr3KxWV8He5Jz72yYq3tsY+cd53QeTf+bb54+llGTbYiQF+64BtiLWMVhWP1IUaP4SxWHXojlpQC13op/udHI1whc+8zrxEzzZmv/QlpvigAAbjBDtwu97Df0vgn+YrOKi4G3OhgIkTRocAAzD1P/BGbT8gaKE01H8rXl3+Gq6jCA1O1v800SL6DwKOgMsXVvWp7g2n/tPxJe/j9bmu4XFG0bSa5y5hikLKxvntA/5ut+iogv4MyMBe+TydVxjPqNbkKnby5l4KAL+3inpuPraeg4jcNMt0AwKG8NIQ==",
7 "skipStoryModeChoice": true,
8 "skipTutorial": true
7 9 }
Modified src/controllers/api/deleteSessionController.ts +1 -1
@@ -1,7 +1,7 @@
1 1 import { RequestHandler } from "express";
2 2
3 3 const deleteSessionController: RequestHandler = (_req, res) => {
4 res.json({ sessionId: { $oid: "64768f104722f795300c9fc0" }, rewardSeed: 5867309943877621023 });
4 res.sendStatus(200);
5 5 };
6 6
7 7 export { deleteSessionController };
Modified src/controllers/api/inventoryController.ts +22 -4
@@ -1,11 +1,29 @@
1 import inventory from "@/static/fixed_responses/inventory.json";
1 /* eslint-disable @typescript-eslint/no-misused-promises */
2 import { toInventoryResponse } from "@/src/helpers/inventoryHelpers";
3 import { Inventory } from "@/src/models/inventoryModel";
2 4 import { Request, RequestHandler, Response } from "express";
3 5
4 const inventoryController: RequestHandler = (request: Request, response: Response) => {
5 console.log(request.query);
6 const inventoryController: RequestHandler = async (request: Request, response: Response) => {
6 7 const accountId = request.query.accountId;
8
9 if (!accountId) {
10 response.status(400).json({ error: "accountId was not provided" });
11 return;
12 }
7 13 console.log(accountId);
8 response.json(inventory);
14
15 const inventory = await Inventory.findOne({ accountOwnerId: accountId });
16
17 if (!inventory) {
18 response.status(400).json({ error: "inventory was undefined" });
19 return;
20 }
21
22 const inventoryJSON = inventory.toJSON();
23
24 const inventoreResponse = toInventoryResponse(inventoryJSON);
25
26 response.json(inventoreResponse);
9 27 };
10 28
11 29 export { inventoryController };
Modified src/controllers/api/loginController.ts +2 -6
@@ -13,11 +13,8 @@ const loginController: RequestHandler = async (request, response) => {
13 13 // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-argument
14 14 const body = JSON.parse(request.body); // parse octet stream of json data to json object
15 15 const loginRequest = toLoginRequest(body);
16 // console.log(body);
17 //console.log(String.fromCharCode.apiRouterly(null, req.body));
18 16
19 17 const account = await Account.findOne({ email: loginRequest.email }); //{ _id: 0, __v: 0 }
20 console.log("findone", account);
21 18
22 19 if (!account && config.autoCreateAccount) {
23 20 try {
@@ -32,7 +29,8 @@ const loginController: RequestHandler = async (request, response) => {
32 29 ConsentNeeded: false,
33 30 TrackedSettings: []
34 31 });
35 console.log("CREATED ACCOUNT", newAccount);
32 console.log("creating new account");
33 // eslint-disable-next-line @typescript-eslint/no-unused-vars
36 34 const { email, password, ...databaseAccount } = newAccount;
37 35 const newLoginResponse: ILoginResponse = {
38 36 ...databaseAccount,
@@ -47,7 +45,6 @@ const loginController: RequestHandler = async (request, response) => {
47 45 MatchmakingBuildId: config.matchmakingBuildId
48 46 };
49 47
50 console.log(newLoginResponse);
51 48 response.json(newLoginResponse);
52 49 return;
53 50 } catch (error: unknown) {
@@ -77,7 +74,6 @@ const loginController: RequestHandler = async (request, response) => {
77 74 MatchmakingBuildId: config.matchmakingBuildId
78 75 };
79 76
80 console.log("login response", newLoginResponse);
81 77 response.json(newLoginResponse);
82 78 };
83 79
Added src/helpers/inventoryHelpers.ts +9 -0
@@ -0,0 +1,9 @@
1 import { IInventoryDatabase, IInventoryResponse } from "@/src/types/inventoryTypes";
2
3 const toInventoryResponse = (inventoryDatabase: IInventoryDatabase): IInventoryResponse => {
4 // eslint-disable-next-line @typescript-eslint/no-unused-vars
5 const { accountOwnerId, ...inventoreResponse } = inventoryDatabase;
6 return inventoreResponse;
7 };
8
9 export { toInventoryResponse };
Added src/models/inventoryModel.ts +258 -0
@@ -0,0 +1,258 @@
1 import { Document, Schema, model } from "mongoose";
2 import { IInventoryDatabase, IInventoryResponse, ISuitDatabase, ISuitDocument, Oid } from "../types/inventoryTypes";
3
4 const polaritySchema = new Schema({
5 Slot: Number,
6 Value: String
7 });
8
9 const abilityOverrideSchema = new Schema({
10 Ability: String,
11 Index: Number
12 });
13
14 const colorSchema = new Schema({
15 t0: Number,
16 t1: Number,
17 t2: Number,
18 t3: Number,
19 en: Number,
20 e1: Number,
21 m0: Number,
22 m1: Number
23 });
24
25 const suitConfigSchema = new Schema({
26 Skins: [String],
27 pricol: colorSchema,
28 attcol: colorSchema,
29 eyecol: colorSchema,
30 sigcol: colorSchema,
31 Upgrades: [String],
32 Songs: [
33 {
34 m: String,
35 b: String,
36 p: String,
37 s: String
38 }
39 ],
40 Name: String,
41 AbilityOverride: abilityOverrideSchema,
42 PvpUpgrades: [String],
43 ugly: Boolean
44 });
45
46 suitConfigSchema.set("toJSON", {
47 transform(_document, returnedObject) {
48 delete returnedObject._id;
49 delete returnedObject.__v;
50 }
51 });
52
53 const suitSchema = new Schema({
54 ItemType: String,
55 Configs: [suitConfigSchema],
56 UpgradeVer: Number,
57 XP: Number,
58 InfestationDate: Date,
59 Features: Number,
60 Polarity: [polaritySchema],
61 Polarized: Number,
62 ModSlotPurchases: Number,
63 FocusLens: String,
64 UnlockLevel: Number
65 });
66
67 suitSchema.set("toJSON", {
68 transform(_document, returnedObject: ISuitDocument) {
69 // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call
70 returnedObject.ItemId = { $oid: returnedObject._id.toString() } satisfies Oid;
71 delete returnedObject._id;
72 delete returnedObject.__v;
73 }
74 });
75
76 const inventorySchema = new Schema({
77 accountOwnerId: Schema.Types.ObjectId,
78 SubscribedToEmails: Number,
79 Created: Schema.Types.Mixed,
80 RewardSeed: Number,
81 RegularCredits: Number,
82 PremiumCredits: Number,
83 PremiumCreditsFree: Number,
84 FusionPoints: Number,
85 SuitBin: Schema.Types.Mixed,
86 WeaponBin: Schema.Types.Mixed,
87 SentinelBin: Schema.Types.Mixed,
88 SpaceSuitBin: Schema.Types.Mixed,
89 SpaceWeaponBin: Schema.Types.Mixed,
90 PvpBonusLoadoutBin: Schema.Types.Mixed,
91 PveBonusLoadoutBin: Schema.Types.Mixed,
92 RandomModBin: Schema.Types.Mixed,
93 TradesRemaining: Number,
94 DailyAffiliation: Number,
95 DailyAffiliationPvp: Number,
96 DailyAffiliationLibrary: Number,
97 DailyFocus: Number,
98 GiftsRemaining: Number,
99 HandlerPoints: Number,
100 MiscItems: [Schema.Types.Mixed],
101 ChallengesFixVersion: Number,
102 ChallengeProgress: [Schema.Types.Mixed],
103 RawUpgrades: [Schema.Types.Mixed],
104 ReceivedStartingGear: Boolean,
105 Suits: [suitSchema],
106 LongGuns: [Schema.Types.Mixed],
107 Pistols: [Schema.Types.Mixed],
108 Melee: [Schema.Types.Mixed],
109 Ships: [Schema.Types.Mixed],
110 QuestKeys: [Schema.Types.Mixed],
111 FlavourItems: [Schema.Types.Mixed],
112 Scoops: [Schema.Types.Mixed],
113 TrainingRetriesLeft: Number,
114 LoadOutPresets: Schema.Types.Mixed,
115 CurrentLoadOutIds: [Schema.Types.Mixed],
116 Missions: [Schema.Types.Mixed],
117 RandomUpgradesIdentified: Number,
118 LastRegionPlayed: String,
119 XPInfo: [Schema.Types.Mixed],
120 Recipes: [Schema.Types.Mixed],
121 WeaponSkins: [Schema.Types.Mixed],
122 PendingRecipes: [Schema.Types.Mixed],
123 TrainingDate: Schema.Types.Mixed,
124 PlayerLevel: Number,
125 Upgrades: [Schema.Types.Mixed],
126 EquippedGear: [String],
127 DeathMarks: [String],
128 FusionTreasures: [Schema.Types.Mixed],
129 WebFlags: Schema.Types.Mixed,
130 CompletedAlerts: [String],
131 Consumables: [Schema.Types.Mixed],
132 LevelKeys: [Schema.Types.Mixed],
133 TauntHistory: [Schema.Types.Mixed],
134 StoryModeChoice: String,
135 PeriodicMissionCompletions: [Schema.Types.Mixed],
136 KubrowPetEggs: [Schema.Types.Mixed],
137 LoreFragmentScans: [Schema.Types.Mixed],
138 EquippedEmotes: [String],
139 PendingTrades: [Schema.Types.Mixed],
140 Boosters: [Schema.Types.Mixed],
141 ActiveDojoColorResearch: String,
142 SentientSpawnChanceBoosters: Schema.Types.Mixed,
143 Affiliations: [Schema.Types.Mixed],
144 QualifyingInvasions: [Schema.Types.Mixed],
145 FactionScores: [Number],
146 SpaceSuits: [Schema.Types.Mixed],
147 SpaceMelee: [Schema.Types.Mixed],
148 SpaceGuns: [Schema.Types.Mixed],
149 ArchwingEnabled: Boolean,
150 PendingSpectreLoadouts: [Schema.Types.Mixed],
151 SpectreLoadouts: [Schema.Types.Mixed],
152 SentinelWeapons: [Schema.Types.Mixed],
153 Sentinels: [Schema.Types.Mixed],
154 EmailItems: [Schema.Types.Mixed],
155 CompletedSyndicates: [String],
156 FocusXP: Schema.Types.Mixed,
157 Wishlist: [String],
158 Alignment: Schema.Types.Mixed,
159 CompletedSorties: [String],
160 LastSortieReward: [Schema.Types.Mixed],
161 Drones: [Schema.Types.Mixed],
162 StepSequencers: [Schema.Types.Mixed],
163 ActiveAvatarImageType: String,
164 KubrowPets: [Schema.Types.Mixed],
165 ShipDecorations: [Schema.Types.Mixed],
166 OperatorAmpBin: Schema.Types.Mixed,
167 DailyAffiliationCetus: Number,
168 DailyAffiliationQuills: Number,
169 DiscoveredMarkers: [Schema.Types.Mixed],
170 CompletedJobs: [Schema.Types.Mixed],
171 FocusAbility: String,
172 FocusUpgrades: [Schema.Types.Mixed],
173 OperatorAmps: [Schema.Types.Mixed],
174 HasContributedToDojo: Boolean,
175 HWIDProtectEnabled: Boolean,
176 KubrowPetPrints: [Schema.Types.Mixed],
177 AlignmentReplay: Schema.Types.Mixed,
178 PersonalGoalProgress: [Schema.Types.Mixed],
179 DailyAffiliationSolaris: Number,
180 SpecialItems: [Schema.Types.Mixed],
181 ThemeStyle: String,
182 ThemeBackground: String,
183 ThemeSounds: String,
184 BountyScore: Number,
185 ChallengeInstanceStates: [Schema.Types.Mixed],
186 LoginMilestoneRewards: [String],
187 OperatorLoadOuts: [Schema.Types.Mixed],
188 DailyAffiliationVentkids: Number,
189 DailyAffiliationVox: Number,
190 RecentVendorPurchases: [Schema.Types.Mixed],
191 Hoverboards: [Schema.Types.Mixed],
192 NodeIntrosCompleted: [String],
193 CompletedJobChains: [Schema.Types.Mixed],
194 SeasonChallengeHistory: [Schema.Types.Mixed],
195 MoaPets: [Schema.Types.Mixed],
196 EquippedInstrument: String,
197 InvasionChainProgress: [Schema.Types.Mixed],
198 DataKnives: [Schema.Types.Mixed],
199 NemesisHistory: [Schema.Types.Mixed],
200 LastNemesisAllySpawnTime: Schema.Types.Mixed,
201 Settings: Schema.Types.Mixed,
202 PersonalTechProjects: [Schema.Types.Mixed],
203 CrewShips: [Schema.Types.Mixed],
204 CrewShipSalvageBin: Schema.Types.Mixed,
205 PlayerSkills: Schema.Types.Mixed,
206 CrewShipAmmo: [Schema.Types.Mixed],
207 CrewShipSalvagedWeaponSkins: [Schema.Types.Mixed],
208 CrewShipWeapons: [Schema.Types.Mixed],
209 CrewShipSalvagedWeapons: [Schema.Types.Mixed],
210 CrewShipWeaponSkins: [Schema.Types.Mixed],
211 TradeBannedUntil: Schema.Types.Mixed,
212 PlayedParkourTutorial: Boolean,
213 SubscribedToEmailsPersonalized: Number,
214 MechBin: Schema.Types.Mixed,
215 DailyAffiliationEntrati: Number,
216 DailyAffiliationNecraloid: Number,
217 MechSuits: [Schema.Types.Mixed],
218 InfestedFoundry: Schema.Types.Mixed,
219 BlessingCooldown: Schema.Types.Mixed,
220 CrewMemberBin: Schema.Types.Mixed,
221 CrewShipHarnesses: [Schema.Types.Mixed],
222 CrewShipRawSalvage: [Schema.Types.Mixed],
223 CrewMembers: [Schema.Types.Mixed],
224 AdultOperatorLoadOuts: [Schema.Types.Mixed],
225 LotusCustomization: Schema.Types.Mixed,
226 UseAdultOperatorLoadout: Boolean,
227 DailyAffiliationZariman: Number,
228 NemesisAbandonedRewards: [String],
229 DailyAffiliationKahl: Number,
230 LastInventorySync: Schema.Types.Mixed,
231 NextRefill: Schema.Types.Mixed,
232 ActiveLandscapeTraps: [Schema.Types.Mixed],
233 EvolutionProgress: [Schema.Types.Mixed],
234 RepVotes: [Schema.Types.Mixed],
235 LeagueTickets: [Schema.Types.Mixed],
236 Quests: [Schema.Types.Mixed],
237 Robotics: [Schema.Types.Mixed],
238 UsedDailyDeals: [Schema.Types.Mixed],
239 LibraryPersonalProgress: [Schema.Types.Mixed],
240 CollectibleSeries: [Schema.Types.Mixed],
241 LibraryAvailableDailyTaskInfo: Schema.Types.Mixed,
242 HasResetAccount: Boolean,
243 PendingCoupon: Schema.Types.Mixed,
244 Harvestable: Boolean,
245 DeathSquadable: Boolean
246 });
247
248 inventorySchema.set("toJSON", {
249 transform(_document, returnedObject: ISuitDocument) {
250 delete returnedObject._id;
251 delete returnedObject.__v;
252 }
253 });
254
255 const Suit = model<ISuitDatabase>("Suit", suitSchema);
256 const Inventory = model<IInventoryDatabase>("Inventory", inventorySchema);
257
258 export { Inventory, Suit };
Added src/services/inventoryService.ts +25 -0
@@ -0,0 +1,25 @@
1 import { Inventory } from "@/src/models/inventoryModel";
2 import new_inventory from "@/static/fixed_responses/postTutorialInventory.json";
3 import config from "@/config.json";
4 import { Types } from "mongoose";
5
6 const createInventory = async (accountOwnerId: Types.ObjectId) => {
7 try {
8 const inventory = new Inventory({ ...new_inventory, accountOwnerId: accountOwnerId });
9 if (config.skipStoryModeChoice) {
10 inventory.StoryModeChoice = "WARFRAME";
11 }
12 if (config.skipTutorial) {
13 inventory.PlayedParkourTutorial = true;
14 inventory.ReceivedStartingGear = true;
15 }
16 await inventory.save();
17 } catch (error) {
18 if (error instanceof Error) {
19 throw new Error(`error creating inventory" ${error.message}`);
20 }
21 throw new Error("error creating inventory that is not of instance Error");
22 }
23 };
24
25 export { createInventory };
Modified src/services/loginService.ts +2 -1
@@ -1,4 +1,5 @@
1 1 import { Account } from "@/src/models/loginModel";
2 import { createInventory } from "@/src/services/inventoryService";
2 3 import { IDatabaseAccount } from "@/src/types/loginTypes";
3 4
4 5 const isCorrectPassword = (requestPassword: string, databasePassword: string): boolean => {
@@ -6,10 +7,10 @@ const isCorrectPassword = (requestPassword: string, databasePassword: string): b
6 7 };
7 8
8 9 const createAccount = async (accountData: IDatabaseAccount) => {
9 console.log("test", accountData);
10 10 const account = new Account(accountData);
11 11 try {
12 12 await account.save();
13 await createInventory(account._id);
13 14 return account.toJSON();
14 15 } catch (error) {
15 16 if (error instanceof Error) {
Modified static/fixed_responses/getShip.json +10 -2
@@ -1,5 +1,5 @@
1 1 {
2 "ShipOwnerId": "removed",
2 "ShipOwnerId": "647bce8a1caba352f90b6a09",
3 3 "Ship": {
4 4 "Rooms": [
5 5 { "Name": "AlchemyRoom", "MaxCapacity": 1600 },
@@ -9,7 +9,15 @@
9 9 { "Name": "OutsideRoom", "MaxCapacity": 1600 },
10 10 { "Name": "PersonalQuartersRoom", "MaxCapacity": 1600 }
11 11 ],
12 "ContentUrlSignature": "removed"
12 "ContentUrlSignature": "removed",
13 "Features": [
14 "/Lotus/Types/Items/ShipFeatureItems/EarthNavigationFeatureItem",
15 "/Lotus/Types/Items/ShipFeatureItems/ArsenalFeatureItem",
16 "/Lotus/Types/Items/ShipFeatureItems/SocialMenuFeatureItem",
17 "/Lotus/Types/Items/ShipFeatureItems/ModsFeatureItem",
18 "/Lotus/Types/Items/ShipFeatureItems/FoundryFeatureItem",
19 "/Lotus/Types/Items/ShipFeatureItems/MercuryNavigationFeatureItem"
20 ]
13 21 },
14 22 "Apartment": {
15 23 "Rooms": [
Added static/fixed_responses/new_inventory.json +121 -0
@@ -0,0 +1,121 @@
1 {
2 "SubscribedToEmails": 0,
3 "Created": { "$date": { "$numberLong": "1685829131" } },
4 "SubscribedToEmailsPersonalized": 0,
5 "RewardSeed": -5604904486637265640,
6 "CrewMemberBin": { "Slots": 3 },
7 "CrewShipSalvageBin": { "Slots": 8 },
8 "DrifterMelee": [{ "ItemType": "/Lotus/Types/Friendly/PlayerControllable/Weapons/DuviriDualSwords", "ItemId": { "$oid": "647bb619e15fa43f0ee4b1b1" } }],
9 "FusionPoints": 0,
10 "MechBin": { "Slots": 4 },
11 "OperatorAmpBin": { "Slots": 8 },
12 "PveBonusLoadoutBin": { "Slots": 0 },
13 "PvpBonusLoadoutBin": { "Slots": 0 },
14 "RandomModBin": { "Slots": 15 },
15 "RegularCredits": 0,
16 "SentinelBin": { "Slots": 10 },
17 "SpaceSuitBin": { "Slots": 4 },
18 "SpaceWeaponBin": { "Slots": 4 },
19 "SuitBin": { "Slots": 2 },
20 "WeaponBin": { "Slots": 8 },
21 "LastInventorySync": { "$oid": "647bb5d79f963c9d24668257" },
22 "NextRefill": { "$date": { "$numberLong": "1685829131" } },
23 "ActiveLandscapeTraps": [],
24 "ChallengeProgress": [],
25 "CrewMembers": [],
26 "CrewShips": [],
27 "CrewShipHarnesses": [],
28 "CrewShipSalvagedWeapons": [],
29 "CrewShipSalvagedWeaponSkins": [],
30 "CrewShipWeapons": [],
31 "CrewShipWeaponSkins": [],
32 "DataKnives": [],
33 "DrifterGuns": [],
34 "Drones": [],
35 "Horses": [],
36 "Hoverboards": [],
37 "KubrowPets": [],
38 "KubrowPetEggs": [],
39 "KubrowPetPrints": [],
40 "LongGuns": [],
41 "MechSuits": [],
42 "Melee": [],
43 "MoaPets": [],
44 "OperatorAmps": [],
45 "OperatorLoadOuts": [],
46 "AdultOperatorLoadOuts": [],
47 "KahlLoadOuts": [],
48 "PendingRecipes": [],
49 "PersonalGoalProgress": [],
50 "PersonalTechProjects": [],
51 "Pistols": [],
52 "QualifyingInvasions": [],
53 "RepVotes": [],
54 "Scoops": [],
55 "Sentinels": [],
56 "SentinelWeapons": [],
57 "Ships": [],
58 "SpaceGuns": [],
59 "SpaceMelee": [],
60 "SpaceSuits": [],
61 "SpecialItems": [],
62 "StepSequencers": [],
63 "Suits": [],
64 "Upgrades": [],
65 "WeaponSkins": [],
66 "Boosters": [],
67 "Consumables": [],
68 "EmailItems": [],
69 "FlavourItems": [],
70 "FocusUpgrades": [],
71 "FusionTreasures": [],
72 "LeagueTickets": [],
73 "LevelKeys": [],
74 "LoreFragmentScans": [],
75 "MiscItems": [],
76 "PendingSpectreLoadouts": [],
77 "Quests": [],
78 "QuestKeys": [],
79 "RawUpgrades": [],
80 "Recipes": [],
81 "Robotics": [],
82 "ShipDecorations": [],
83 "SpectreLoadouts": [],
84 "XPInfo": [],
85 "CrewShipAmmo": [],
86 "CrewShipRawSalvage": [],
87 "EvolutionProgress": [],
88 "Missions": [],
89 "TauntHistory": [],
90 "CompletedSyndicates": [],
91 "UsedDailyDeals": [],
92 "DailyAffiliation": 16000,
93 "DailyAffiliationPvp": 16000,
94 "DailyAffiliationLibrary": 16000,
95 "DailyAffiliationCetus": 16000,
96 "DailyAffiliationQuills": 16000,
97 "DailyAffiliationSolaris": 16000,
98 "DailyAffiliationVentkids": 16000,
99 "DailyAffiliationVox": 16000,
100 "DailyAffiliationEntrati": 16000,
101 "DailyAffiliationNecraloid": 16000,
102 "DailyAffiliationZariman": 16000,
103 "DailyAffiliationKahl": 16000,
104 "DailyFocus": 250000,
105 "GiftsRemaining": 8,
106 "LibraryAvailableDailyTaskInfo": {
107 "EnemyTypes": ["/Lotus/Types/Enemies/Orokin/OrokinBladeSawmanAvatar"],
108 "EnemyLocTag": "/Lotus/Language/Game/OrokinBladeSawman",
109 "EnemyIcon": "/Lotus/Interface/Icons/Npcs/Orokin/OrokinBladeSawman.png",
110 "ScansRequired": 4,
111 "RewardStoreItem": "/Lotus/StoreItems/Upgrades/Mods/FusionBundles/UncommonFusionBundle",
112 "RewardQuantity": 10,
113 "RewardStanding": 10000
114 },
115 "DuviriInfo": { "Seed": 5898912197983600352, "NumCompletions": 0 },
116 "TradesRemaining": 0,
117 "HasContributedToDojo": false,
118 "HasResetAccount": false,
119 "PendingCoupon": { "Expiry": { "$date": { "$numberLong": "0" } }, "Discount": 0 },
120 "PremiumCreditsFree": 0
121 }
Added static/fixed_responses/postTutorialInventory.json +145 -0
@@ -0,0 +1,145 @@
1 {
2 "SubscribedToEmails": 0,
3 "Created": { "$date": { "$numberLong": "1685829131" } },
4 "SubscribedToEmailsPersonalized": 0,
5 "RewardSeed": -5604904486637265640,
6 "CrewMemberBin": { "Slots": 3 },
7 "CrewShipSalvageBin": { "Slots": 8 },
8 "DrifterMelee": [{ "ItemType": "/Lotus/Types/Friendly/PlayerControllable/Weapons/DuviriDualSwords", "ItemId": { "$oid": "647bd268c547fe5b2909e715" } }],
9 "FusionPoints": 0,
10 "MechBin": { "Slots": 4 },
11 "OperatorAmpBin": { "Slots": 8 },
12 "PveBonusLoadoutBin": { "Slots": 0 },
13 "PvpBonusLoadoutBin": { "Slots": 0 },
14 "RandomModBin": { "Slots": 15 },
15 "RegularCredits": 3000,
16 "SentinelBin": { "Slots": 10 },
17 "SpaceSuitBin": { "Slots": 4 },
18 "SpaceWeaponBin": { "Slots": 4 },
19 "SuitBin": { "Slots": 1 },
20 "WeaponBin": { "Slots": 5 },
21 "DailyAffiliation": 16000,
22 "DailyAffiliationCetus": 16000,
23 "DailyAffiliationEntrati": 16000,
24 "DailyAffiliationKahl": 16000,
25 "DailyAffiliationLibrary": 16000,
26 "DailyAffiliationNecraloid": 16000,
27 "DailyAffiliationPvp": 16000,
28 "DailyAffiliationQuills": 16000,
29 "DailyAffiliationSolaris": 16000,
30 "DailyAffiliationVentkids": 16000,
31 "DailyAffiliationVox": 16000,
32 "DailyAffiliationZariman": 16000,
33 "DailyFocus": 250000,
34 "DuviriInfo": { "Seed": 5898912197983600352, "NumCompletions": 0 },
35 "GiftsRemaining": 8,
36 "TradesRemaining": 0,
37 "Recipes": [{ "ItemCount": 1, "ItemType": "/Lotus/Types/Recipes/Weapons/BoltonfaBlueprint" }],
38 "SeasonChallengeHistory": [
39 { "challenge": "SeasonDailySolveCiphers", "id": "001000220000000000000308" },
40 { "challenge": "SeasonDailyVisitFeaturedDojo", "id": "001000230000000000000316" },
41 { "challenge": "SeasonDailyKillEnemiesWithRadiation", "id": "001000230000000000000317" },
42 { "challenge": "SeasonWeeklyCompleteSortie", "id": "001000230000000000000309" },
43 { "challenge": "SeasonWeeklyVenusBounties", "id": "001000230000000000000310" },
44 { "challenge": "SeasonWeeklyZarimanBountyHunter", "id": "001000230000000000000311" },
45 { "challenge": "SeasonWeeklyCatchRarePlainsFish", "id": "001000230000000000000312" },
46 { "challenge": "SeasonWeeklyKillArchgunEnemies", "id": "001000230000000000000313" },
47 { "challenge": "SeasonWeeklyHardKillSilverGroveSpecters", "id": "001000230000000000000314" },
48 { "challenge": "SeasonWeeklyHardKillRopalolyst", "id": "001000230000000000000315" }
49 ],
50 "StoryModeChoice": "WARFRAME",
51 "ChallengeProgress": [{ "Progress": 2, "Name": "EMGetKills" }],
52 "ChallengesFixVersion": 6,
53 "ActiveQuest": "/Lotus/Types/Keys/VorsPrize/VorsPrizeQuestKeyChain",
54 "Consumables": [{ "ItemCount": 1, "ItemType": "/Lotus/Types/Restoratives/LisetAutoHack" }],
55 "DataKnives": [{ "ItemType": "/Lotus/Weapons/Tenno/HackingDevices/TnHackingDevice/TnHackingDeviceWeapon", "XP": 450000, "ItemId": { "$oid": "647bd274f22fc794a2cd3d33" } }],
56 "FlavourItems": [
57 { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageItem1" },
58 { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageItem2" },
59 { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageItem3" },
60 { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageItem4" }
61 ],
62 "LongGuns": [{ "ItemType": "/Lotus/Weapons/MK1Series/MK1Paris", "XP": 0, "Configs": [{}, {}, {}], "ItemId": { "$oid": "647bd27cf856530b4f3bf343" } }],
63 "Melee": [{ "ItemType": "/Lotus/Weapons/Tenno/Melee/LongSword/LongSword", "XP": 0, "Configs": [{}, {}, {}], "ItemId": { "$oid": "647bd27cf856530b4f3bf343" } }],
64 "Pistols": [{ "ItemType": "/Lotus/Weapons/MK1Series/MK1Kunai", "XP": 0, "Configs": [{}, {}, {}], "ItemId": { "$oid": "647bd27cf856530b4f3bf343" } }],
65 "PlayedParkourTutorial": true,
66 "PremiumCreditsFree": 50,
67 "QuestKeys": [{ "ItemType": "/Lotus/Types/Keys/VorsPrize/VorsPrizeQuestKeyChain" }],
68 "RawUpgrades": [{ "ItemCount": 1, "LastAdded": { "$oid": "6450f9bfe0714a4d6703f05f" }, "ItemType": "/Lotus/Upgrades/Mods/Warframe/AvatarShieldMaxMod" }],
69 "ReceivedStartingGear": true,
70 "Scoops": [{ "ItemType": "/Lotus/Weapons/Tenno/Speedball/SpeedballWeaponTest", "ItemId": { "$oid": "647bd27cf856530b4f3bf343" } }],
71 "Ships": [{ "ItemType": "/Lotus/Types/Items/Ships/DefaultShip", "ItemId": { "$oid": "647bd27cf856530b4f3bf343" } }],
72 "Suits": [{ "ItemType": "/Lotus/Powersuits/Volt/Volt", "XP": 0, "Configs": [{}, {}, {}], "UpgradeVer": 101, "ItemId": { "$oid": "647bd27cf856530b4f3bf343" } }],
73 "TrainingRetriesLeft": 0,
74 "WeaponSkins": [{ "ItemType": "/Lotus/Upgrades/Skins/Volt/VoltHelmet", "ItemId": { "$oid": "647bd27cf856530b4f3bf343" } }],
75 "LastInventorySync": { "$oid": "647bd27cf856530b4f3bf343" },
76 "NextRefill": { "$date": { "$numberLong": "1685829131" } },
77 "ActiveLandscapeTraps": [],
78 "CrewMembers": [],
79 "CrewShips": [],
80 "CrewShipHarnesses": [],
81 "CrewShipSalvagedWeapons": [],
82 "CrewShipSalvagedWeaponSkins": [],
83 "CrewShipWeapons": [],
84 "CrewShipWeaponSkins": [],
85 "DrifterGuns": [],
86 "Drones": [],
87 "Horses": [],
88 "Hoverboards": [],
89 "KubrowPets": [],
90 "KubrowPetEggs": [],
91 "KubrowPetPrints": [],
92 "MechSuits": [],
93 "MoaPets": [],
94 "OperatorAmps": [],
95 "OperatorLoadOuts": [],
96 "AdultOperatorLoadOuts": [],
97 "KahlLoadOuts": [],
98 "PendingRecipes": [],
99 "PersonalGoalProgress": [],
100 "PersonalTechProjects": [],
101 "QualifyingInvasions": [],
102 "RepVotes": [],
103 "Sentinels": [],
104 "SentinelWeapons": [],
105 "SpaceGuns": [],
106 "SpaceMelee": [],
107 "SpaceSuits": [],
108 "SpecialItems": [],
109 "StepSequencers": [],
110 "Upgrades": [],
111 "Boosters": [],
112 "EmailItems": [],
113 "FocusUpgrades": [],
114 "FusionTreasures": [],
115 "LeagueTickets": [],
116 "LevelKeys": [],
117 "LoreFragmentScans": [],
118 "MiscItems": [],
119 "PendingSpectreLoadouts": [],
120 "Quests": [],
121 "Robotics": [],
122 "ShipDecorations": [],
123 "SpectreLoadouts": [],
124 "XPInfo": [],
125 "CrewShipAmmo": [],
126 "CrewShipRawSalvage": [],
127 "EvolutionProgress": [],
128 "Missions": [],
129 "TauntHistory": [],
130 "CompletedSyndicates": [],
131 "UsedDailyDeals": [],
132 "LibraryAvailableDailyTaskInfo": {
133 "EnemyTypes": ["/Lotus/Types/Enemies/Orokin/OrokinBladeSawmanAvatar"],
134 "EnemyLocTag": "/Lotus/Language/Game/OrokinBladeSawman",
135 "EnemyIcon": "/Lotus/Interface/Icons/Npcs/Orokin/OrokinBladeSawman.png",
136 "ScansRequired": 4,
137 "RewardStoreItem": "/Lotus/StoreItems/Upgrades/Mods/FusionBundles/UncommonFusionBundle",
138 "RewardQuantity": 10,
139 "RewardStanding": 10000
140 },
141 "HasContributedToDojo": false,
142 "HasResetAccount": false,
143 "PendingCoupon": { "Expiry": { "$date": { "$numberLong": "0" } }, "Discount": 0 },
144 "PremiumCredits": 50
145 }