返回提交历史
Modified
src/controllers/api/inventoryController.ts
+17
-4
Modified
src/models/inventoryModels/inventoryModel.ts
+4
-0
Modified
src/types/inventoryTypes/inventoryTypes.ts
+3
-1
XFEstudio/SpaceNinjaServer
feat: refresh duviri seed when mood changes (#1895)
Closes #1887 Reviewed-on: https://onlyg.it/OpenWF/SpaceNinjaServer/pulls/1895 Co-authored-by: Sainan <63328889+Sainan@users.noreply.github.com> Co-committed-by: Sainan <63328889+Sainan@users.noreply.github.com>
66ee550c
代码差异
3 个文件
+24
-5
@@ -18,10 +18,12 @@ import {
18
18
addMiscItems,
19
19
allDailyAffiliationKeys,
20
20
cleanupInventory,
21
createLibraryDailyTask
21
createLibraryDailyTask,
22
generateRewardSeed
22
23
} from "@/src/services/inventoryService";
23
24
import { logger } from "@/src/utils/logger";
24
25
import { catBreadHash } from "@/src/helpers/stringHelpers";
26
import { Types } from "mongoose";
25
27
26
28
export const inventoryController: RequestHandler = async (request, response) => {
27
29
const accountId = await getAccountIdForRequest(request);
@@ -87,7 +89,7 @@ export const inventoryController: RequestHandler = async (request, response) =>
87
89
cleanupInventory(inventory);
88
90
89
91
inventory.NextRefill = new Date((Math.trunc(Date.now() / 86400000) + 1) * 86400000);
90
await inventory.save();
92
//await inventory.save();
91
93
}
92
94
93
95
if (
@@ -96,9 +98,20 @@ export const inventoryController: RequestHandler = async (request, response) =>
96
98
new Date() >= inventory.InfestedFoundry.AbilityOverrideUnlockCooldown
97
99
) {
98
100
handleSubsumeCompletion(inventory);
99
await inventory.save();
101
//await inventory.save();
100
102
}
101
103
104
if (inventory.LastInventorySync) {
105
const lastSyncDuviriMood = Math.trunc(inventory.LastInventorySync.getTimestamp().getTime() / 7200000);
106
const currentDuviriMood = Math.trunc(Date.now() / 7200000);
107
if (lastSyncDuviriMood != currentDuviriMood) {
108
logger.debug(`refreshing duviri seed`);
109
inventory.DuviriInfo.Seed = generateRewardSeed();
110
}
111
}
112
inventory.LastInventorySync = new Types.ObjectId();
113
await inventory.save();
114
102
115
response.json(await getInventoryResponse(inventory, "xpBasedLevelCapDisabled" in request.query));
103
116
};
104
117
@@ -274,7 +287,7 @@ export const getInventoryResponse = async (
274
287
}
275
288
276
289
// Omitting this field so opening the navigation resyncs the inventory which is more desirable for typical usage.
277
//inventoryResponse.LastInventorySync = toOid(new Types.ObjectId());
290
inventoryResponse.LastInventorySync = undefined;
278
291
279
292
// Set 2FA enabled so trading post can be used
280
293
inventoryResponse.HWIDProtectEnabled = true;
@@ -1662,6 +1662,7 @@ const inventorySchema = new Schema<IInventoryDatabase, InventoryDocumentProps>(
1662
1662
1663
1663
//Unknown and system
1664
1664
DuviriInfo: DuviriInfoSchema,
1665
LastInventorySync: Schema.Types.ObjectId,
1665
1666
Mailbox: MailboxSchema,
1666
1667
HandlerPoints: Number,
1667
1668
ChallengesFixVersion: { type: Number, default: 6 },
@@ -1759,6 +1760,9 @@ inventorySchema.set("toJSON", {
1759
1760
sn: inventoryDatabase.LockedWeaponGroup.sn ? toOid(inventoryDatabase.LockedWeaponGroup.sn) : undefined
1760
1761
};
1761
1762
}
1763
if (inventoryDatabase.LastInventorySync) {
1764
inventoryResponse.LastInventorySync = toOid(inventoryDatabase.LastInventorySync);
1765
}
1762
1766
}
1763
1767
});
1764
1768
@@ -52,6 +52,7 @@ export interface IInventoryDatabase
52
52
| "LastLiteSortieReward"
53
53
| "CrewMembers"
54
54
| "QualifyingInvasions"
55
| "LastInventorySync"
55
56
| TEquipmentKey
56
57
>,
57
58
InventoryDatabaseEquipment {
@@ -89,6 +90,7 @@ export interface IInventoryDatabase
89
90
LastLiteSortieReward?: ILastSortieRewardDatabase[];
90
91
CrewMembers: ICrewMemberDatabase[];
91
92
QualifyingInvasions: IInvasionProgressDatabase[];
93
LastInventorySync?: Types.ObjectId;
92
94
}
93
95
94
96
export interface IQuestKeyDatabase {
@@ -333,7 +335,7 @@ export interface IInventoryClient extends IDailyAffiliations, InventoryClientEqu
333
335
LotusCustomization?: ILotusCustomization;
334
336
UseAdultOperatorLoadout?: boolean;
335
337
NemesisAbandonedRewards: string[];
336
LastInventorySync: IOid;
338
LastInventorySync?: IOid;
337
339
NextRefill?: IMongoDate;
338
340
FoundToday?: IMiscItem[]; // for Argon Crystals
339
341
CustomMarkers?: ICustomMarkers[];