返回提交历史
Modified
src/controllers/api/missionInventoryUpdateController.ts
+3
-1
Modified
src/services/missionInventoryUpdateService.ts
+5
-5
XFEstudio/SpaceNinjaServer
chore: always update rewardSeed in missionInventoryUpdate (#1833)
This should be slightly more faithful. Also logging a warning in case we have a mismatch as that shouldn't happen. Reviewed-on: https://onlyg.it/OpenWF/SpaceNinjaServer/pulls/1833 Co-authored-by: Sainan <63328889+Sainan@users.noreply.github.com> Co-committed-by: Sainan <63328889+Sainan@users.noreply.github.com>
143b358a
代码差异
2 个文件
+8
-6
@@ -3,7 +3,7 @@ import { getJSONfromString } from "@/src/helpers/stringHelpers";
3
3
import { getAccountIdForRequest } from "@/src/services/loginService";
4
4
import { IMissionInventoryUpdateRequest } from "@/src/types/requestTypes";
5
5
import { addMissionInventoryUpdates, addMissionRewards } from "@/src/services/missionInventoryUpdateService";
6
import { getInventory } from "@/src/services/inventoryService";
6
import { generateRewardSeed, getInventory } from "@/src/services/inventoryService";
7
7
import { getInventoryResponse } from "./inventoryController";
8
8
import { logger } from "@/src/utils/logger";
9
9
import { IMissionInventoryUpdateResponse } from "@/src/types/missionTypes";
@@ -63,6 +63,7 @@ export const missionInventoryUpdateController: RequestHandler = async (req, res)
63
63
missionReport.MissionStatus !== "GS_SUCCESS" &&
64
64
!(missionReport.RewardInfo?.jobId || missionReport.RewardInfo?.challengeMissionId)
65
65
) {
66
inventory.RewardSeed = generateRewardSeed();
66
67
await inventory.save();
67
68
const inventoryResponse = await getInventoryResponse(inventory, true);
68
69
res.json({
@@ -81,6 +82,7 @@ export const missionInventoryUpdateController: RequestHandler = async (req, res)
81
82
ConquestCompletedMissionsCount
82
83
} = await addMissionRewards(inventory, missionReport, firstCompletion);
83
84
85
inventory.RewardSeed = generateRewardSeed();
84
86
await inventory.save();
85
87
const inventoryResponse = await getInventoryResponse(inventory, true);
86
88
@@ -750,11 +750,6 @@ export const addMissionRewards = async (
750
750
return { MissionRewards: [] };
751
751
}
752
752
753
if (rewardInfo.rewardSeed) {
754
// We're using a reward seed, so give the client a new one in the response. On live, missionInventoryUpdate seems to always provide a fresh one in the response.
755
inventory.RewardSeed = generateRewardSeed();
756
}
757
758
753
//TODO: check double reward merging
759
754
const MissionRewards: IMissionReward[] = getRandomMissionDrops(inventory, rewardInfo, wagerTier, firstCompletion);
760
755
logger.debug("random mission drops:", MissionRewards);
@@ -1423,6 +1418,11 @@ function getRandomMissionDrops(
1423
1418
if (rewardManifests.length != 0) {
1424
1419
logger.debug(`generating random mission rewards`, { rewardManifests, rotations });
1425
1420
}
1421
if (RewardInfo.rewardSeed) {
1422
if (RewardInfo.rewardSeed != inventory.RewardSeed) {
1423
logger.warn(`RewardSeed mismatch:`, { client: RewardInfo.rewardSeed, database: inventory.RewardSeed });
1424
}
1425
}
1426
1426
const rng = new SRng(BigInt(RewardInfo.rewardSeed ?? generateRewardSeed()) ^ 0xffffffffffffffffn);
1427
1427
rewardManifests.forEach(name => {
1428
1428
const table = ExportRewards[name];