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

XFESpaceNinjaServer

A simple server for a small space ninja game

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

XFEstudio/XFESpaceNinjaServer

fix: correct checks for quest replay (#2798)

Closes #2797 Reviewed-on: https://onlyg.it/OpenWF/SpaceNinjaServer/pulls/2798 Reviewed-by: Sainan <63328889+sainan@users.noreply.github.com> Co-authored-by: AMelonInsideLemon <166175391+AMelonInsideLemon@users.noreply.github.com> Co-committed-by: AMelonInsideLemon <166175391+AMelonInsideLemon@users.noreply.github.com>

87da9465
AMelonInsideLemon <166175391+AMelonInsideLemon@users.noreply.github.com>
提交于

代码差异

3 个文件 +11 -11
Modified src/controllers/api/giveKeyChainTriggeredItemsController.ts +2 -1
@@ -10,7 +10,8 @@ export const giveKeyChainTriggeredItemsController: RequestHandler = async (req,
10 10 const keyChainInfo = getJSONfromString<IKeyChainRequest>((req.body as string).toString());
11 11
12 12 const inventory = await getInventory(accountId);
13 const inventoryChanges = await giveKeyChainItem(inventory, keyChainInfo);
13 const questKey = inventory.QuestKeys.find(qk => qk.ItemType === keyChainInfo.KeyChain)!;
14 const inventoryChanges = await giveKeyChainItem(inventory, keyChainInfo, questKey);
14 15 await inventory.save();
15 16
16 17 res.send(inventoryChanges);
Modified src/controllers/api/giveKeyChainTriggeredMessageController.ts +2 -1
@@ -9,7 +9,8 @@ export const giveKeyChainTriggeredMessageController: RequestHandler = async (req
9 9 const keyChainInfo = JSON.parse((req.body as Buffer).toString()) as IKeyChainRequest;
10 10
11 11 const inventory = await getInventory(accountId, "QuestKeys accountOwnerId");
12 await giveKeyChainMessage(inventory, keyChainInfo);
12 const questKey = inventory.QuestKeys.find(qk => qk.ItemType === keyChainInfo.KeyChain)!;
13 await giveKeyChainMessage(inventory, keyChainInfo, questKey);
13 14 await inventory.save();
14 15
15 16 res.send(1);
Modified src/services/questService.ts +7 -9
@@ -159,7 +159,7 @@ export const completeQuest = async (inventory: TInventoryDatabaseDocument, quest
159 159
160 160 for (let i = 0; i < chainStageTotal; i++) {
161 161 const stage = existingQuestKey.Progress[i];
162 if (stage.c < run) {
162 if (stage.c <= run) {
163 163 stage.c = run;
164 164 await giveKeyChainStageTriggered(inventory, { KeyChain: questKey, ChainStage: i });
165 165 await giveKeyChainMissionReward(inventory, { KeyChain: questKey, ChainStage: i });
@@ -298,11 +298,11 @@ const handleQuestCompletion = async (
298 298 export const giveKeyChainItem = async (
299 299 inventory: TInventoryDatabaseDocument,
300 300 keyChainInfo: IKeyChainRequest,
301 isRerun: boolean = false
301 questKey: IQuestKeyDatabase
302 302 ): Promise<IInventoryChanges> => {
303 303 let inventoryChanges: IInventoryChanges = {};
304 304
305 if (!isRerun) {
305 if (questKey.Progress![keyChainInfo.ChainStage].i) {
306 306 inventoryChanges = await addKeyChainItems(inventory, keyChainInfo);
307 307
308 308 if (isEmptyObject(inventoryChanges)) {
@@ -327,11 +327,11 @@ export const giveKeyChainItem = async (
327 327 export const giveKeyChainMessage = async (
328 328 inventory: TInventoryDatabaseDocument,
329 329 keyChainInfo: IKeyChainRequest,
330 isRerun: boolean = false
330 questKey: IQuestKeyDatabase
331 331 ): Promise<void> => {
332 332 const keyChainMessage = getKeyChainMessage(keyChainInfo);
333 333
334 if (!isRerun) {
334 if (questKey.Progress![0].c > 0) {
335 335 keyChainMessage.att = [];
336 336 keyChainMessage.countedAtt = [];
337 337 }
@@ -391,14 +391,12 @@ export const giveKeyChainStageTriggered = async (
391 391 const questKey = inventory.QuestKeys.find(qk => qk.ItemType === keyChainInfo.KeyChain);
392 392
393 393 if (chainStages && questKey) {
394 const run = questKey.Progress?.[0]?.c ?? 0;
395
396 394 if (chainStages[keyChainInfo.ChainStage].itemsToGiveWhenTriggered.length > 0) {
397 await giveKeyChainItem(inventory, keyChainInfo, run > 0);
395 await giveKeyChainItem(inventory, keyChainInfo, questKey);
398 396 }
399 397
400 398 if (chainStages[keyChainInfo.ChainStage].messageToSendWhenTriggered) {
401 await giveKeyChainMessage(inventory, keyChainInfo, run > 0);
399 await giveKeyChainMessage(inventory, keyChainInfo, questKey);
402 400 }
403 401 }
404 402 };