diff --git a/src/controllers/api/giveKeyChainTriggeredItemsController.ts b/src/controllers/api/giveKeyChainTriggeredItemsController.ts index 22d2fccc..1f875cd5 100644 --- a/src/controllers/api/giveKeyChainTriggeredItemsController.ts +++ b/src/controllers/api/giveKeyChainTriggeredItemsController.ts @@ -10,7 +10,8 @@ export const giveKeyChainTriggeredItemsController: RequestHandler = async (req, const keyChainInfo = getJSONfromString((req.body as string).toString()); const inventory = await getInventory(accountId); - const inventoryChanges = await giveKeyChainItem(inventory, keyChainInfo); + const questKey = inventory.QuestKeys.find(qk => qk.ItemType === keyChainInfo.KeyChain)!; + const inventoryChanges = await giveKeyChainItem(inventory, keyChainInfo, questKey); await inventory.save(); res.send(inventoryChanges); diff --git a/src/controllers/api/giveKeyChainTriggeredMessageController.ts b/src/controllers/api/giveKeyChainTriggeredMessageController.ts index 6df1d8aa..39b18641 100644 --- a/src/controllers/api/giveKeyChainTriggeredMessageController.ts +++ b/src/controllers/api/giveKeyChainTriggeredMessageController.ts @@ -9,7 +9,8 @@ export const giveKeyChainTriggeredMessageController: RequestHandler = async (req const keyChainInfo = JSON.parse((req.body as Buffer).toString()) as IKeyChainRequest; const inventory = await getInventory(accountId, "QuestKeys accountOwnerId"); - await giveKeyChainMessage(inventory, keyChainInfo); + const questKey = inventory.QuestKeys.find(qk => qk.ItemType === keyChainInfo.KeyChain)!; + await giveKeyChainMessage(inventory, keyChainInfo, questKey); await inventory.save(); res.send(1); diff --git a/src/services/questService.ts b/src/services/questService.ts index e01db084..6e8c70cb 100644 --- a/src/services/questService.ts +++ b/src/services/questService.ts @@ -298,11 +298,11 @@ const handleQuestCompletion = async ( export const giveKeyChainItem = async ( inventory: TInventoryDatabaseDocument, keyChainInfo: IKeyChainRequest, - isRerun: boolean = false + questKey: IQuestKeyDatabase ): Promise => { let inventoryChanges: IInventoryChanges = {}; - if (isRerun) { + if (questKey.Progress![keyChainInfo.ChainStage].i) { inventoryChanges = await addKeyChainItems(inventory, keyChainInfo); if (isEmptyObject(inventoryChanges)) { @@ -327,11 +327,11 @@ export const giveKeyChainItem = async ( export const giveKeyChainMessage = async ( inventory: TInventoryDatabaseDocument, keyChainInfo: IKeyChainRequest, - isRerun: boolean = false + questKey: IQuestKeyDatabase ): Promise => { const keyChainMessage = getKeyChainMessage(keyChainInfo); - if (isRerun) { + if ((questKey.Progress![0].c ?? 0) > 0) { keyChainMessage.att = []; keyChainMessage.countedAtt = []; } @@ -391,14 +391,12 @@ export const giveKeyChainStageTriggered = async ( const questKey = inventory.QuestKeys.find(qk => qk.ItemType === keyChainInfo.KeyChain); if (chainStages && questKey) { - const run = questKey.Progress?.[0]?.c ?? 0; - if (chainStages[keyChainInfo.ChainStage].itemsToGiveWhenTriggered.length > 0) { - await giveKeyChainItem(inventory, keyChainInfo, run > 0); + await giveKeyChainItem(inventory, keyChainInfo, questKey); } if (chainStages[keyChainInfo.ChainStage].messageToSendWhenTriggered) { - await giveKeyChainMessage(inventory, keyChainInfo, run > 0); + await giveKeyChainMessage(inventory, keyChainInfo, questKey); } } };