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

SpaceNinjaServer

A simple server for a small space ninja game

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

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
Sainan <63328889+Sainan@users.noreply.github.com>
提交于

代码差异

2 个文件 +8 -6
Modified src/controllers/api/missionInventoryUpdateController.ts +3 -1
@@ -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
Modified src/services/missionInventoryUpdateService.ts +5 -5
@@ -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];