feat: refresh duviri seed when mood changes #1895
@ -18,10 +18,12 @@ import {
 | 
			
		||||
    addMiscItems,
 | 
			
		||||
    allDailyAffiliationKeys,
 | 
			
		||||
    cleanupInventory,
 | 
			
		||||
    createLibraryDailyTask
 | 
			
		||||
    createLibraryDailyTask,
 | 
			
		||||
    generateRewardSeed
 | 
			
		||||
} from "@/src/services/inventoryService";
 | 
			
		||||
import { logger } from "@/src/utils/logger";
 | 
			
		||||
import { catBreadHash } from "@/src/helpers/stringHelpers";
 | 
			
		||||
import { Types } from "mongoose";
 | 
			
		||||
 | 
			
		||||
export const inventoryController: RequestHandler = async (request, response) => {
 | 
			
		||||
    const accountId = await getAccountIdForRequest(request);
 | 
			
		||||
@ -87,7 +89,7 @@ export const inventoryController: RequestHandler = async (request, response) =>
 | 
			
		||||
        cleanupInventory(inventory);
 | 
			
		||||
 | 
			
		||||
        inventory.NextRefill = new Date((Math.trunc(Date.now() / 86400000) + 1) * 86400000);
 | 
			
		||||
        await inventory.save();
 | 
			
		||||
        //await inventory.save();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (
 | 
			
		||||
@ -96,9 +98,20 @@ export const inventoryController: RequestHandler = async (request, response) =>
 | 
			
		||||
        new Date() >= inventory.InfestedFoundry.AbilityOverrideUnlockCooldown
 | 
			
		||||
    ) {
 | 
			
		||||
        handleSubsumeCompletion(inventory);
 | 
			
		||||
        await inventory.save();
 | 
			
		||||
        //await inventory.save();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (inventory.LastInventorySync) {
 | 
			
		||||
        const lastSyncDuviriMood = Math.trunc(inventory.LastInventorySync.getTimestamp().getTime() / 7200000);
 | 
			
		||||
        const currentDuviriMood = Math.trunc(Date.now() / 7200000);
 | 
			
		||||
        if (lastSyncDuviriMood != currentDuviriMood) {
 | 
			
		||||
            logger.debug(`refreshing duviri seed`);
 | 
			
		||||
            inventory.DuviriInfo.Seed = generateRewardSeed();
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    inventory.LastInventorySync = new Types.ObjectId();
 | 
			
		||||
    await inventory.save();
 | 
			
		||||
 | 
			
		||||
    response.json(await getInventoryResponse(inventory, "xpBasedLevelCapDisabled" in request.query));
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
@ -274,7 +287,7 @@ export const getInventoryResponse = async (
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Omitting this field so opening the navigation resyncs the inventory which is more desirable for typical usage.
 | 
			
		||||
    //inventoryResponse.LastInventorySync = toOid(new Types.ObjectId());
 | 
			
		||||
    inventoryResponse.LastInventorySync = undefined;
 | 
			
		||||
 | 
			
		||||
    // Set 2FA enabled so trading post can be used
 | 
			
		||||
    inventoryResponse.HWIDProtectEnabled = true;
 | 
			
		||||
 | 
			
		||||
@ -1662,6 +1662,7 @@ const inventorySchema = new Schema<IInventoryDatabase, InventoryDocumentProps>(
 | 
			
		||||
 | 
			
		||||
        //Unknown and system
 | 
			
		||||
        DuviriInfo: DuviriInfoSchema,
 | 
			
		||||
        LastInventorySync: Schema.Types.ObjectId,
 | 
			
		||||
        Mailbox: MailboxSchema,
 | 
			
		||||
        HandlerPoints: Number,
 | 
			
		||||
        ChallengesFixVersion: { type: Number, default: 6 },
 | 
			
		||||
@ -1759,6 +1760,9 @@ inventorySchema.set("toJSON", {
 | 
			
		||||
                sn: inventoryDatabase.LockedWeaponGroup.sn ? toOid(inventoryDatabase.LockedWeaponGroup.sn) : undefined
 | 
			
		||||
            };
 | 
			
		||||
        }
 | 
			
		||||
        if (inventoryDatabase.LastInventorySync) {
 | 
			
		||||
            inventoryResponse.LastInventorySync = toOid(inventoryDatabase.LastInventorySync);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -52,6 +52,7 @@ export interface IInventoryDatabase
 | 
			
		||||
            | "LastLiteSortieReward"
 | 
			
		||||
            | "CrewMembers"
 | 
			
		||||
            | "QualifyingInvasions"
 | 
			
		||||
            | "LastInventorySync"
 | 
			
		||||
            | TEquipmentKey
 | 
			
		||||
        >,
 | 
			
		||||
        InventoryDatabaseEquipment {
 | 
			
		||||
@ -89,6 +90,7 @@ export interface IInventoryDatabase
 | 
			
		||||
    LastLiteSortieReward?: ILastSortieRewardDatabase[];
 | 
			
		||||
    CrewMembers: ICrewMemberDatabase[];
 | 
			
		||||
    QualifyingInvasions: IInvasionProgressDatabase[];
 | 
			
		||||
    LastInventorySync?: Types.ObjectId;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export interface IQuestKeyDatabase {
 | 
			
		||||
@ -333,7 +335,7 @@ export interface IInventoryClient extends IDailyAffiliations, InventoryClientEqu
 | 
			
		||||
    LotusCustomization?: ILotusCustomization;
 | 
			
		||||
    UseAdultOperatorLoadout?: boolean;
 | 
			
		||||
    NemesisAbandonedRewards: string[];
 | 
			
		||||
    LastInventorySync: IOid;
 | 
			
		||||
    LastInventorySync?: IOid;
 | 
			
		||||
    NextRefill?: IMongoDate;
 | 
			
		||||
    FoundToday?: IMiscItem[]; // for Argon Crystals
 | 
			
		||||
    CustomMarkers?: ICustomMarkers[];
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user