From 90da0e532606cd475b42ed18827dbb7b808dfba4 Mon Sep 17 00:00:00 2001 From: Sainan <63328889+Sainan@users.noreply.github.com> Date: Sun, 5 Oct 2025 17:50:35 +0200 Subject: [PATCH] fix: avoid pushing to quest progress in updateQuestStage --- src/services/questService.ts | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/src/services/questService.ts b/src/services/questService.ts index 02bf81b7..90b81ff7 100644 --- a/src/services/questService.ts +++ b/src/services/questService.ts @@ -68,22 +68,22 @@ export const updateQuestStage = ( throw new Error(`Progress should always exist when giving keychain triggered items or messages`); } - const questStage = quest.Progress[ChainStage]; + ChainStage -= 1; // They are 1-indexed in the client, but we need 0-indexing - // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition - if (!questStage) { - const questStageIndex = - quest.Progress.push({ - c: questStageUpdate.c ?? 0, - i: questStageUpdate.i ?? false, - m: questStageUpdate.m ?? false, - b: questStageUpdate.b ?? [] - }) - 1; - if (questStageIndex !== ChainStage) { - throw new Error(`Quest stage index mismatch: ${questStageIndex} !== ${ChainStage}`); - } - return; + if (ChainStage == quest.Progress.length) { + logger.debug(`pushing to quest progress in updateQuestStage`); + quest.Progress.push({ + c: 0, + i: false, + m: false, + b: [] + }); + } else if (ChainStage >= quest.Progress.length) { + throw new Error( + `Quest stage index mismatch: stage is ${ChainStage} but array size is ${quest.Progress.length}` + ); } + const questStage = quest.Progress[ChainStage]; // guaranteed in-bounds now for (const [key, value] of Object.entries(questStageUpdate) as [keyof IQuestStage, number | boolean | any[]][]) { (questStage[key] as any) = value;