返回提交历史
Modified
src/controllers/api/giveKeyChainTriggeredItemsController.ts
+2
-1
Modified
src/controllers/api/giveKeyChainTriggeredMessageController.ts
+2
-1
Modified
src/services/questService.ts
+7
-9
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
代码差异
3 个文件
+11
-11
@@ -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);
@@ -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);
@@ -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
};