From c7d18ad95e9280c728a41060ccdc6ba331b34ae6 Mon Sep 17 00:00:00 2001 From: "Lin, Hung-Shin" Date: Sun, 26 Nov 2023 23:43:44 +0800 Subject: [PATCH] fix: stage re-execute --- server/src/game/commandHandler.js | 2 +- server/src/game/sessionHandler.js | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/server/src/game/commandHandler.js b/server/src/game/commandHandler.js index 4b271ff..e7c5b66 100644 --- a/server/src/game/commandHandler.js +++ b/server/src/game/commandHandler.js @@ -122,7 +122,7 @@ export default class CommandHandler extends SessionHandler { async run() { try { this.quest = await Quest.findById(this.session.quest) - const stages = this.getUnlockedComponents(this.quest.stages) + const stages = this.getStages() if (stages.length === 0) { logger.warn('stage not found', { session: this.session.id }) return {} diff --git a/server/src/game/sessionHandler.js b/server/src/game/sessionHandler.js index a9b89f0..e3e4af0 100644 --- a/server/src/game/sessionHandler.js +++ b/server/src/game/sessionHandler.js @@ -25,8 +25,13 @@ export default class SessionHandler { ) } + getStages() { + const unlockedStages = this.getUnlockedComponents(this.quest.stages) + return unlockedStages.filter((s) => !this.isCompleted(s)) + } + getNewTasks() { - const stages = this.getUnlockedComponents(this.quest.stages) + const stages = this.getStages() return stages .filter((s) => s.task) .filter((s) => !this.session.tasks.some((t) => t.id === s.id))