diff --git a/src/controllers/custom/manageQuestsController.ts b/src/controllers/custom/manageQuestsController.ts index 25c80cd0..34629e3b 100644 --- a/src/controllers/custom/manageQuestsController.ts +++ b/src/controllers/custom/manageQuestsController.ts @@ -136,7 +136,7 @@ export const manageQuestsController: RequestHandler = async (req, res) => { if (currentStage + 1 == questManifest.chainStages?.length) { logger.debug(`Trying to complete last stage with nextStage, calling completeQuest instead`); - await completeQuest(inventory, questKey.ItemType); + await completeQuest(inventory, questKey.ItemType, true); } else { if (run > 0) { questKey.Progress[currentStage + 1].c = run; diff --git a/src/services/questService.ts b/src/services/questService.ts index 30866b6b..4ba2b15f 100644 --- a/src/services/questService.ts +++ b/src/services/questService.ts @@ -115,7 +115,11 @@ export const addQuestKey = ( return inventory.QuestKeys[index - 1].toJSON(); }; -export const completeQuest = async (inventory: TInventoryDatabaseDocument, questKey: string): Promise => { +export const completeQuest = async ( + inventory: TInventoryDatabaseDocument, + questKey: string, + sendMessages: boolean = false +): Promise => { // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition const chainStages = ExportKeys[questKey]?.chainStages; @@ -161,7 +165,7 @@ export const completeQuest = async (inventory: TInventoryDatabaseDocument, quest const stage = existingQuestKey.Progress[i]; if (stage.c <= run) { stage.c = run; - await giveKeyChainStageTriggered(inventory, { KeyChain: questKey, ChainStage: i }); + await giveKeyChainStageTriggered(inventory, { KeyChain: questKey, ChainStage: i }, sendMessages); await giveKeyChainMissionReward(inventory, { KeyChain: questKey, ChainStage: i }); } } @@ -327,7 +331,8 @@ export const giveKeyChainItem = async ( export const giveKeyChainMessage = async ( inventory: TInventoryDatabaseDocument, keyChainInfo: IKeyChainRequest, - questKey: IQuestKeyDatabase + questKey: IQuestKeyDatabase, + sendMessage: boolean = true ): Promise => { const keyChainMessage = getKeyChainMessage(keyChainInfo); @@ -336,7 +341,12 @@ export const giveKeyChainMessage = async ( keyChainMessage.countedAtt = []; } - await createMessage(inventory.accountOwnerId, [keyChainMessage]); + if (sendMessage) { + await createMessage(inventory.accountOwnerId, [keyChainMessage]); + } else { + if (keyChainMessage.countedAtt?.length) await addItems(inventory, keyChainMessage.countedAtt); + if (keyChainMessage.att?.length) await addItems(inventory, keyChainMessage.att); + } updateQuestStage(inventory, keyChainInfo, { m: true }); }; @@ -384,7 +394,8 @@ export const giveKeyChainMissionReward = async ( export const giveKeyChainStageTriggered = async ( inventory: TInventoryDatabaseDocument, - keyChainInfo: IKeyChainRequest + keyChainInfo: IKeyChainRequest, + sendMessage: boolean = true ): Promise => { // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition const chainStages = ExportKeys[keyChainInfo.KeyChain]?.chainStages; @@ -396,7 +407,7 @@ export const giveKeyChainStageTriggered = async ( } if (chainStages[keyChainInfo.ChainStage].messageToSendWhenTriggered) { - await giveKeyChainMessage(inventory, keyChainInfo, questKey); + await giveKeyChainMessage(inventory, keyChainInfo, questKey, sendMessage); } } };