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))