Tracking Quest Progress with Stages🔗
Stages are useful when a quest has one clear path and the player should always be in exactly one step of that path.
Instead of creating many tags like metJoe, metFren and returnedToBonny, you define one stage objective and move it
forward whenever the player progresses.
Use stages when:
- the quest has a clear order,
- only one state should be active at a time,
- you want to compare whether a player is before, at, or after a certain step,
- you want to display the current, next, previous, or index value with objective placeholders.
Use tags instead when several independent facts can be true at the same time. Use points when you need to count amounts.
Requirements
You should already understand the basics of actions, objectives, and conditions before using stages.
Related Docs
Download this part of the tutorial
Enter this command in the chat to download this part of the tutorial:
/bq download BetonQuest/Quest-Tutorials refs/tags/v3.1.0 QuestPackages /Features/Tracking-Quest-Progress/Stages/1-ExampleQuest /trackingStages overwrite
1. Create the stage objective🔗
In this example the player meets Bonny first, then Joe, then Fren, and finally returns to Bonny. That progress can be represented with one stage objective:
1 2 | |
- The stage names are ordered from first to last.
preventCompletionkeeps the stage objective active even if you accidentally increase past the final stage.
When the objective is added to a player, BetonQuest starts it at the first stage, talkToBonny.
The stage objective stores the current stage in the player's objective data.
2. Create stage actions🔗
You move the player through the stages with the stage action.
The action can set, increase, or decrease the current stage.
1 2 3 4 5 6 7 | |
- Adds the stage objective to the player. This starts them at
talkToBonny. - Sets the current stage to
meetJoe. - Sets the current stage to
meetFren. - Sets the current stage to
returnToBonny. - Sets the current stage to
finished. - Removes the objective if you want to reset this progress.
Tip
set is usually the clearest option for story quests because it names the exact stage you want.
increase and decrease are useful when the next or previous stage is always correct.
3. Create stage conditions🔗
Stage conditions compare the player's current stage with one of the defined stages. The comparison uses the order from the objective.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | |
- Checks whether the stage objective is currently active for the player.
- Checks whether the player is exactly at one stage.
- Checks whether the player is past
meetJoe. - Checks whether the player is at
meetFrenor any later stage. - Uses an
orcondition because the player can only be in one exact stage at a time.
Valid comparison operators are <, <=, =, !=, >=, and >.
4. Use stages in conversations🔗
Now the conversations can react to the player's current stage. The important part is that every NPC only advances the stage that belongs to them.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | |
- Starts the stage objective and immediately moves the player to the
meetJoestage. - This option is available while the player still needs to meet Joe or Fren.
- Moves the player to the final
finishedstage.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | |
- Joe advances the quest from
meetJoetomeetFren.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | |
- Fren advances the quest from
meetFrentoreturnToBonny.
5. Use stage placeholders🔗
Stage objectives provide useful placeholder properties. These can be used in notifications, menus, journals, or conversations.
1 2 3 4 | |
Useful properties are:
current- the current stage namenext- the next stage nameprevious- the previous stage nameindex- the current stage number, starting at0
6. When to use stages🔗
Stages are best for linear quest progress:
talkToBonny -> meetJoe -> meetFren -> returnToBonny -> finished
This keeps your quest state in one place. You do not need to remember which old tags to delete when the player moves forward.
If your quest can branch into several independent paths, combine stages with tags. Use the stage for the main chapter and tags for optional facts, side choices, or permanent unlocks.
Is the example not working?
Get the correct configs by running the following command.
This will overwrite any changes (including NPC ID's and locations) you have made to the example.
Linking NPCs to conversations is explained in the basics tutorial.
/bq download BetonQuest/Quest-Tutorials refs/tags/v3.1.0 QuestPackages /Features/Tracking-Quest-Progress/Stages/2-FullExample /trackingStages overwrite