update 33.6.8 and initial mastery rank
This commit is contained in:
		
							parent
							
								
									3a4d117f62
								
							
						
					
					
						commit
						def75cb5de
					
				| @ -1,8 +1,8 @@ | ||||
| { | ||||
|   "autoCreateAccount": true, | ||||
|   "buildLabel": "2023.08.31.08.49/GF1WtVJD8oH48xuIF4Cm-A", | ||||
|   "matchmakingBuildId": "2303555329115379348", | ||||
|   "version": "33.6.7", | ||||
|   "buildLabel": "2023.08.31.08.49/brZhF2aVfaQsmU9STfvSqQ", | ||||
|   "matchmakingBuildId": "5359904157077190191", | ||||
|   "version": "33.6.8", | ||||
|   "worldSeed": "Y7nz7/N46OXUuG0UFBiaQhuY59a8IR8fIpwPJu3Uw0y0WGqS1BTISQ3FiQ4RV2Q4L19X7rr9864tDFU2xklR+PvdayCI+/+07iHK2LzxoaSRysylW/3U5rINPDLA4akw5LwsMltL3VuEyxvn9MXKamUO27i+lP5Bsg6Fbmx4UwgqOjQaYMjAqPn0yy+VY6vZsQJFCCLM5wDghhpcwDuTFzakKiq4N5nKPc7+VPNDRKE6qlMzPRt9DCzrtpakn6/WdFecmt9Gzl/HFe1fmZSYE1bEbvL93d1Nvi391YZNLIlRqSg/h+Hirbw8pT7xxbgsXVyJo/TbyivwyQt/ay70Vw==", | ||||
|   "skipStoryModeChoice": true, | ||||
|   "skipTutorial": true, | ||||
|  | ||||
							
								
								
									
										14
									
								
								src/constants/timeConstants.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								src/constants/timeConstants.ts
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,14 @@ | ||||
| const millisecondsPerSecond = 1000; | ||||
| const secondsPerMinute = 60; | ||||
| const minutesPerHour = 60; | ||||
| const hoursPerDay = 24; | ||||
| 
 | ||||
| const unixMinute = secondsPerMinute * millisecondsPerSecond; | ||||
| const unixHour = unixMinute * minutesPerHour; | ||||
| const unixDay = hoursPerDay * unixHour; | ||||
| 
 | ||||
| export const unixTimesInMs = { | ||||
|     minute: unixMinute, | ||||
|     hour: unixHour, | ||||
|     day: unixDay | ||||
| }; | ||||
| @ -5,7 +5,6 @@ import { Request, RequestHandler, Response } from "express"; | ||||
| import config from "@/config.json"; | ||||
| import testMissions from "@/static/fixed_responses/testMissions.json"; | ||||
| import testQuestKeys from "@/static/fixed_responses/testQuestKeys.json"; | ||||
| import testInventory from "../../../static/testInventory.json"; | ||||
| 
 | ||||
| const inventoryController: RequestHandler = async (request: Request, response: Response) => { | ||||
|     const accountId = request.query.accountId; | ||||
| @ -29,10 +28,6 @@ const inventoryController: RequestHandler = async (request: Request, response: R | ||||
|     if (config.testMission) inventoryResponse.Missions = testMissions; | ||||
|     if (config.testQuestKey) inventoryResponse.QuestKeys = testQuestKeys; | ||||
| 
 | ||||
|     const now = Math.floor(Date.now()) - 129600; | ||||
|     const date: string = (now + 24 * 60 * 60 * 1000).toString(); | ||||
|     inventoryResponse.TrainingDate = { $date: { $numberLong: "1693769173000" } }; | ||||
|     console.log(inventoryResponse.TrainingDate); | ||||
|     response.json(inventoryResponse); | ||||
| }; | ||||
| 
 | ||||
|  | ||||
| @ -2,50 +2,43 @@ import { parseString } from "@/src/helpers/general"; | ||||
| import { getJSONfromString } from "@/src/helpers/stringHelpers"; | ||||
| import { Inventory } from "@/src/models/inventoryModel"; | ||||
| import { getInventory } from "@/src/services/inventoryService"; | ||||
| import { IMongoDate } from "@/src/types/commonTypes"; | ||||
| import { RequestHandler } from "express"; | ||||
| import { unixTimesInMs } from "@/src/constants/timeConstants"; | ||||
| 
 | ||||
| interface ITrainingResultsRequest { | ||||
|     numLevelsGained: number; | ||||
| } | ||||
| 
 | ||||
| const epochDay = 86400 * 1000; // in ms
 | ||||
| const timeNow = Date.now() + epochDay; | ||||
| interface ITrainingResultsResponse { | ||||
|     NewTrainingDate: IMongoDate; | ||||
|     NewLevel: number; | ||||
|     InventoryChanges: any[]; | ||||
| } | ||||
| 
 | ||||
| // eslint-disable-next-line @typescript-eslint/no-misused-promises
 | ||||
| const trainingResultController: RequestHandler = async (req, res): Promise<void> => { | ||||
|     console.log(req.body.toString()); | ||||
|     const accountId = parseString(req.query.accountId); | ||||
| 
 | ||||
|     const trainingResults = getJSONfromString(req.body.toString()) as ITrainingResultsRequest; | ||||
| 
 | ||||
|     const nextTrainingDate = Date.now().toString; | ||||
| 
 | ||||
|     if (trainingResults.numLevelsGained == 0) { | ||||
|         res.json({ | ||||
|             NewTrainingDate: { | ||||
|                 $date: { $numberLong: nextTrainingDate } | ||||
|             }, | ||||
|             NewLevel: 0, | ||||
|             InventoryChanges: [] | ||||
|         }); | ||||
|     } | ||||
| 
 | ||||
|     const inventory = await getInventory(accountId); | ||||
| 
 | ||||
|     console.log("inventory", inventory.TrainingDate); | ||||
|     inventory.TrainingDate = new Date(Date.now() + epochDay * 500); | ||||
|     console.log("inventory after", inventory.TrainingDate); | ||||
|     await inventory.save(); | ||||
|     inventory.TrainingDate = new Date(Date.now() + unixTimesInMs.day); | ||||
| 
 | ||||
|     if (trainingResults.numLevelsGained == 1) { | ||||
|         res.json({ | ||||
|             NewTrainingDate: { | ||||
|                 $date: { $numberLong: nextTrainingDate } | ||||
|             }, | ||||
|             NewLevel: 1, | ||||
|             InventoryChanges: [] | ||||
|         }); | ||||
|         inventory.PlayerLevel += 1; | ||||
|     } | ||||
| 
 | ||||
|     const changedinventory = await inventory.save(); | ||||
| 
 | ||||
|     res.json({ | ||||
|         NewTrainingDate: { | ||||
|             $date: { $numberLong: changedinventory.TrainingDate.getTime().toString() } | ||||
|         }, | ||||
|         NewLevel: trainingResults.numLevelsGained == 1 ? changedinventory.PlayerLevel : inventory.PlayerLevel, | ||||
|         InventoryChanges: [] | ||||
|     } satisfies ITrainingResultsResponse); | ||||
| }; | ||||
| 
 | ||||
| export { trainingResultController }; | ||||
|  | ||||
| @ -3,9 +3,6 @@ import config from "@/config.json"; | ||||
| import worldState from "@/static/fixed_responses/worldState.json"; | ||||
| 
 | ||||
| const worldStateController: RequestHandler = (_req, res) => { | ||||
|     // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
 | ||||
|     worldState.WorldSeed = config.worldSeed; | ||||
|     worldState.BuildLabel = config.buildLabel; | ||||
|     res.json(worldState); | ||||
| }; | ||||
| 
 | ||||
|  | ||||
| @ -9,7 +9,7 @@ import { | ||||
|     IInventoryDatabaseDocument, | ||||
|     IInventoryResponseDocument | ||||
| } from "../types/inventoryTypes/inventoryTypes"; | ||||
| import { Oid } from "../types/commonTypes"; | ||||
| import { IMongoDate, Oid } from "../types/commonTypes"; | ||||
| import { ISuitDatabase, ISuitDocument } from "@/src/types/inventoryTypes/SuitTypes"; | ||||
| import { IWeaponDatabase } from "@/src/types/inventoryTypes/weaponTypes"; | ||||
| 
 | ||||
| @ -163,7 +163,7 @@ FlavourItemSchema.set("toJSON", { | ||||
|     } | ||||
| }); | ||||
| 
 | ||||
| const inventorySchema = new Schema<IInventoryDatabase, InventoryDocumentProps>({ | ||||
| const inventorySchema = new Schema<IInventoryDatabaseDocument, InventoryDocumentProps>({ | ||||
|     accountOwnerId: Schema.Types.ObjectId, | ||||
|     SubscribedToEmails: Number, | ||||
|     Created: Schema.Types.Mixed, | ||||
| @ -336,17 +336,17 @@ const inventorySchema = new Schema<IInventoryDatabase, InventoryDocumentProps>({ | ||||
| }); | ||||
| 
 | ||||
| inventorySchema.set("toJSON", { | ||||
|     transform(_document, returnedObject: IInventoryDatabaseDocument) { | ||||
|     transform(_document, returnedObject) { | ||||
|         delete returnedObject._id; | ||||
|         delete returnedObject.__v; | ||||
| 
 | ||||
|         const trainingDate = returnedObject.TrainingDate; | ||||
|         const trainingDate = (returnedObject as IInventoryDatabaseDocument).TrainingDate; | ||||
| 
 | ||||
|         (returnedObject as unknown as IInventoryResponse).TrainingDate = { | ||||
|         (returnedObject as IInventoryResponse).TrainingDate = { | ||||
|             $date: { | ||||
|                 $numberLong: trainingDate.getTime().toString() | ||||
|             } | ||||
|         }; | ||||
|         } satisfies IMongoDate; | ||||
|     } | ||||
| }); | ||||
| 
 | ||||
|  | ||||
| @ -2,7 +2,7 @@ export interface Oid { | ||||
|     $oid: string; | ||||
| } | ||||
| 
 | ||||
| export interface BSONDate { | ||||
| export interface IMongoDate { | ||||
|     $date: { | ||||
|         $numberLong: string; | ||||
|     }; | ||||
|  | ||||
| @ -1,7 +1,7 @@ | ||||
| /* eslint-disable @typescript-eslint/no-explicit-any */ | ||||
| 
 | ||||
| import { Document, Types } from "mongoose"; | ||||
| import { Oid, BSONDate } from "../commonTypes"; | ||||
| import { Oid, IMongoDate } from "../commonTypes"; | ||||
| import { AbilityOverride, Color, FocusSchool, Polarity } from "@/src/types/inventoryTypes/commonInventoryTypes"; | ||||
| import { ISuitDatabase } from "@/src/types/inventoryTypes/SuitTypes"; | ||||
| import { OperatorLoadOutSigcol, IWeaponDatabase } from "@/src/types/inventoryTypes/weaponTypes"; | ||||
| @ -13,9 +13,10 @@ export interface IInventoryDatabase extends Omit<IInventoryResponse, "TrainingDa | ||||
| } | ||||
| 
 | ||||
| export interface IInventoryResponseDocument extends IInventoryResponse, Document {} | ||||
| 
 | ||||
| export interface IInventoryResponse { | ||||
|     SubscribedToEmails: number; | ||||
|     Created: BSONDate; | ||||
|     Created: IMongoDate; | ||||
|     RewardSeed: number; | ||||
|     RegularCredits: number; | ||||
|     PremiumCredits: number; | ||||
| @ -59,7 +60,7 @@ export interface IInventoryResponse { | ||||
|     Recipes: Consumable[]; | ||||
|     WeaponSkins: WeaponSkin[]; | ||||
|     PendingRecipes: PendingRecipe[]; | ||||
|     TrainingDate: BSONDate; | ||||
|     TrainingDate: IMongoDate; | ||||
|     PlayerLevel: number; | ||||
|     Upgrades: CrewShipSalvagedWeaponSkin[]; | ||||
|     EquippedGear: string[]; | ||||
| @ -136,7 +137,7 @@ export interface IInventoryResponse { | ||||
|     InvasionChainProgress: InvasionChainProgress[]; | ||||
|     DataKnives: DataKnife[]; | ||||
|     NemesisHistory: NemesisHistory[]; | ||||
|     LastNemesisAllySpawnTime: BSONDate; | ||||
|     LastNemesisAllySpawnTime: IMongoDate; | ||||
|     Settings: Settings; | ||||
|     PersonalTechProjects: PersonalTechProject[]; | ||||
|     CrewShips: CrewShip[]; | ||||
| @ -147,7 +148,7 @@ export interface IInventoryResponse { | ||||
|     CrewShipWeapons: CrewShipWeapon[]; | ||||
|     CrewShipSalvagedWeapons: CrewShipWeapon[]; | ||||
|     CrewShipWeaponSkins: CrewShipSalvagedWeaponSkin[]; | ||||
|     TradeBannedUntil: BSONDate; | ||||
|     TradeBannedUntil: IMongoDate; | ||||
|     PlayedParkourTutorial: boolean; | ||||
|     SubscribedToEmailsPersonalized: number; | ||||
|     MechBin: CrewMemberBinClass; | ||||
| @ -155,7 +156,7 @@ export interface IInventoryResponse { | ||||
|     DailyAffiliationNecraloid: number; | ||||
|     MechSuits: MechSuit[]; | ||||
|     InfestedFoundry: InfestedFoundry; | ||||
|     BlessingCooldown: BSONDate; | ||||
|     BlessingCooldown: IMongoDate; | ||||
|     CrewMemberBin: CrewMemberBinClass; | ||||
|     CrewShipHarnesses: CrewShipHarness[]; | ||||
|     CrewShipRawSalvage: Consumable[]; | ||||
| @ -167,7 +168,7 @@ export interface IInventoryResponse { | ||||
|     NemesisAbandonedRewards: string[]; | ||||
|     DailyAffiliationKahl: number; | ||||
|     LastInventorySync: Oid; | ||||
|     NextRefill: BSONDate; | ||||
|     NextRefill: IMongoDate; | ||||
|     ActiveLandscapeTraps: any[]; | ||||
|     EvolutionProgress: any[]; | ||||
|     RepVotes: any[]; | ||||
| @ -268,7 +269,7 @@ export interface CrewMember { | ||||
|     ItemType: string; | ||||
|     NemesisFingerprint: number; | ||||
|     Seed: number; | ||||
|     HireDate: BSONDate; | ||||
|     HireDate: IMongoDate; | ||||
|     AssignedRole: number; | ||||
|     SkillEfficiency: SkillEfficiency; | ||||
|     WeaponConfigIdx: number; | ||||
| @ -431,7 +432,7 @@ export interface Drone { | ||||
|     ItemType: string; | ||||
|     CurrentHP: number; | ||||
|     ItemId: Oid; | ||||
|     RepairStart?: BSONDate; | ||||
|     RepairStart?: IMongoDate; | ||||
| } | ||||
| 
 | ||||
| export interface EmailItem { | ||||
| @ -519,7 +520,7 @@ export interface InvasionChainProgress { | ||||
| 
 | ||||
| export interface KubrowPetEgg { | ||||
|     ItemType: KubrowPetEggItemType; | ||||
|     ExpirationDate: BSONDate; | ||||
|     ExpirationDate: IMongoDate; | ||||
|     ItemId: Oid; | ||||
| } | ||||
| 
 | ||||
| @ -572,7 +573,7 @@ export interface KubrowPet { | ||||
|     Polarized?: number; | ||||
|     Polarity?: Polarity[]; | ||||
|     Features?: number; | ||||
|     InfestationDate?: BSONDate; | ||||
|     InfestationDate?: IMongoDate; | ||||
|     InfestationDays?: number; | ||||
|     InfestationType?: string; | ||||
|     ItemId: Oid; | ||||
| @ -592,7 +593,7 @@ export interface Details { | ||||
|     HasCollar: boolean; | ||||
|     PrintsRemaining: number; | ||||
|     Status: Status; | ||||
|     HatchDate: BSONDate; | ||||
|     HatchDate: IMongoDate; | ||||
|     DominantTraits: Traits; | ||||
|     RecessiveTraits: Traits; | ||||
|     IsMale: boolean; | ||||
| @ -735,7 +736,7 @@ export interface Mission { | ||||
|     Completes: number; | ||||
|     Tier?: number; | ||||
|     Tag: string; | ||||
|     RewardsCooldownTime?: BSONDate; | ||||
|     RewardsCooldownTime?: IMongoDate; | ||||
| } | ||||
| 
 | ||||
| export interface MoaPet { | ||||
| @ -760,7 +761,7 @@ export interface NemesisHistory { | ||||
|     BirthNode: BirthNode; | ||||
|     Rank: number; | ||||
|     k: boolean; | ||||
|     d: BSONDate; | ||||
|     d: IMongoDate; | ||||
|     GuessHistory?: number[]; | ||||
|     currentGuess?: number; | ||||
|     Traded?: boolean; | ||||
| @ -809,13 +810,13 @@ export interface OperatorLoadOut { | ||||
| } | ||||
| 
 | ||||
| export interface PendingCoupon { | ||||
|     Expiry: BSONDate; | ||||
|     Expiry: IMongoDate; | ||||
|     Discount: number; | ||||
| } | ||||
| 
 | ||||
| export interface PendingRecipe { | ||||
|     ItemType: string; | ||||
|     CompletionDate: BSONDate; | ||||
|     CompletionDate: IMongoDate; | ||||
|     ItemId: Oid; | ||||
| } | ||||
| 
 | ||||
| @ -874,7 +875,7 @@ export enum GivingSlotOrderInfo { | ||||
| } | ||||
| 
 | ||||
| export interface PeriodicMissionCompletion { | ||||
|     date: BSONDate; | ||||
|     date: IMongoDate; | ||||
|     tag: string; | ||||
|     count?: number; | ||||
| } | ||||
| @ -893,7 +894,7 @@ export interface PersonalTechProject { | ||||
|     ReqCredits: number; | ||||
|     ItemType: string; | ||||
|     ReqItems: Consumable[]; | ||||
|     CompletionDate?: BSONDate; | ||||
|     CompletionDate?: IMongoDate; | ||||
|     ItemId: Oid; | ||||
|     ProductCategory?: string; | ||||
|     CategoryItemId?: Oid; | ||||
| @ -914,7 +915,7 @@ export interface QuestKey { | ||||
|     unlock?: boolean; | ||||
|     Completed?: boolean; | ||||
|     ItemType: string; | ||||
|     CompletionDate?: BSONDate; | ||||
|     CompletionDate?: IMongoDate; | ||||
| } | ||||
| 
 | ||||
| export interface Progress { | ||||
| @ -1091,15 +1092,15 @@ export interface WebFlags { | ||||
|     activeBuyPlat: number; | ||||
|     noShow2FA: boolean; | ||||
|     Tennocon2018Digital: boolean; | ||||
|     VisitPrimeAccess: BSONDate; | ||||
|     VisitTennocon2019: BSONDate; | ||||
|     enteredSC2019: BSONDate; | ||||
|     VisitPrimeVault: BSONDate; | ||||
|     VisitBuyPlatinum: BSONDate; | ||||
|     ClickedSku_640_Page__en_buyplatinum: BSONDate; | ||||
|     ClickedSku_640_Page__buyplatinum: BSONDate; | ||||
|     VisitStarterPack: BSONDate; | ||||
|     VisitPrimeAccess: IMongoDate; | ||||
|     VisitTennocon2019: IMongoDate; | ||||
|     enteredSC2019: IMongoDate; | ||||
|     VisitPrimeVault: IMongoDate; | ||||
|     VisitBuyPlatinum: IMongoDate; | ||||
|     ClickedSku_640_Page__en_buyplatinum: IMongoDate; | ||||
|     ClickedSku_640_Page__buyplatinum: IMongoDate; | ||||
|     VisitStarterPack: IMongoDate; | ||||
|     Tennocon2020Digital: boolean; | ||||
|     Anniversary2021: boolean; | ||||
|     HitDownloadBtn: BSONDate; | ||||
|     HitDownloadBtn: IMongoDate; | ||||
| } | ||||
|  | ||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user