From 184407d6f0a18108fabd104f6414e8171a038f9c Mon Sep 17 00:00:00 2001 From: Sainan <63328889+Sainan@users.noreply.github.com> Date: Sun, 13 Apr 2025 02:18:11 +0200 Subject: [PATCH] fix: use 1-indexing for ChainStage The railjack quest sends an inbox messages at stage 4, which means index 3 in the chainStages. --- src/controllers/custom/manageQuestsController.ts | 2 +- src/services/itemDataService.ts | 2 +- src/services/questService.ts | 10 +++++----- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/controllers/custom/manageQuestsController.ts b/src/controllers/custom/manageQuestsController.ts index 49ae004c..e2b7047b 100644 --- a/src/controllers/custom/manageQuestsController.ts +++ b/src/controllers/custom/manageQuestsController.ts @@ -107,7 +107,7 @@ export const manageQuestsController: RequestHandler = async (req, res) => { questKey.CompletionDate = undefined; } questKey.Progress.pop(); - const stage = questKey.Progress.length - 1; + const stage = questKey.Progress.length; if (stage > 0) { await giveKeyChainStageTriggered(inventory, { KeyChain: questKey.ItemType, diff --git a/src/services/itemDataService.ts b/src/services/itemDataService.ts index e071111f..256cea12 100644 --- a/src/services/itemDataService.ts +++ b/src/services/itemDataService.ts @@ -185,7 +185,7 @@ export const getKeyChainMessage = ({ KeyChain, ChainStage }: IKeyChainRequest): throw new Error(`KeyChain ${KeyChain} does not contain chain stages`); } - const keyChainStage = chainStages[ChainStage]; + const keyChainStage = chainStages[ChainStage - 1]; // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition if (!keyChainStage) { throw new Error(`KeyChainStage ${ChainStage} not found`); diff --git a/src/services/questService.ts b/src/services/questService.ts index 85cefa4b..709e643d 100644 --- a/src/services/questService.ts +++ b/src/services/questService.ts @@ -63,13 +63,13 @@ export const updateQuestStage = ( throw new Error(`Progress should always exist when giving keychain triggered items or messages`); } - const questStage = quest.Progress[ChainStage]; + const questStage = quest.Progress[ChainStage - 1]; // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition if (!questStage) { const questStageIndex = quest.Progress.push(questStageUpdate) - 1; - if (questStageIndex !== ChainStage) { - throw new Error(`Quest stage index mismatch: ${questStageIndex} !== ${ChainStage}`); + if (questStageIndex !== ChainStage - 1) { + throw new Error(`Quest stage index mismatch: ${questStageIndex} !== ${ChainStage - 1}`); } return; } @@ -308,11 +308,11 @@ export const giveKeyChainStageTriggered = async ( const chainStages = ExportKeys[keyChainInfo.KeyChain]?.chainStages; if (chainStages) { - if (chainStages[keyChainInfo.ChainStage].itemsToGiveWhenTriggered.length > 0) { + if (chainStages[keyChainInfo.ChainStage - 1].itemsToGiveWhenTriggered.length > 0) { await giveKeyChainItem(inventory, keyChainInfo); } - if (chainStages[keyChainInfo.ChainStage].messageToSendWhenTriggered) { + if (chainStages[keyChainInfo.ChainStage - 1].messageToSendWhenTriggered) { await giveKeyChainMessage(inventory, inventory.accountOwnerId, keyChainInfo); } }