Tools:Questedit:Engine
Before you start using questedit you should make yourself familar with the ideas behind the quest system, so that you can make good use of the functionaly provided.
Understanding the Quest Engine
The primary goal of the quest system is to allow to define all quests and related bits and pieces, such as journal entries, in a structured way in a central place. This way, creating, maintaining and debugging quests should become easy and convenient.
To achieve this goal, quests are treated as a series of atomic steps. Each step starts out as not completed and needs to be set to completed when that particular part of the quest is accomplished. It is important to understand that setting a step to completed is not part of the quest system but needs to be done wherever appropriate:
- when recieving quest-related information in a dialogue with NPCs
- when discovering quest-related items or locations
- when killing quest-related NPCs or creatures
- etc.
That means all these actions that trigger quest progress will still be spread throughout various scripts, but they can only affect well defined quest steps.
Since atomic steps with only two possible states might be too limited to represent more complex plot-lines, it is possible to group multiple steps into tasks. These tasks can be grouped as well, eventually resulting in a tree-like structure, with one task at the root representing the quest as a whole. In contrast to single steps, these tasks have three possible states that can be queried by scripts to get information about the players progress in the game:
- started true as soon as a step contained in this task or sub-task has been completed.
- in progress true while a task is started and not completed.
- completed true once all (or a specific combination of) steps or sub-tasks contained in this task are completed.
Depending on the detail required, queries can be made at different levels in the quesst tree:
- If an NPC should provide quest-related information in a dialogue, then the root task of the quest being in progess could trigger that.
- If it is of interest whether the player has visited a certain place in the course of a quest, that specific quest step should be queried for completed instead (being atomic, quest steps are either started/completed or not started/not completed, but never in progress).
In addition to querying quest states at need (which is mostly useful for dialogue scripts), each change of a quest state triggers a quest event. Scripts listening for such event can make sure that the game world reflects the progress of the player through main plot or side quests. Possible actions might be:
- making more parts of the gameworld accessible by removing obstacles or unlocking doors
- changing NPCs schedule or dialogue scripts
- triggering cut-scenes or scripted sequences
- etc.
Finally, each step or task can have journal entries associated that can be added to the quest log once the step is started and/or completed.