Hello everyone ! Following yesterday's Live stream - the 6th episode of the journey - I'm opening this thread to discuss the Quest System. It's been implemented in the Quest System Branch, following the requirements below. I'd love to discuss with the community ways to improve this system Here are the diagrams that we used during the live stream And here's the Quest System card Quest System Create a script that tracks progress in the game and in individuals Quests. Quests Quests are ScriptableObjects that contain a list of sub-units called steps. When all steps in a Quest are completed, the Quest itself is complete. Quests are linear. It means that only one quest is active at one point in the game. And once it's completed, it starts the following Quest. This creates a logical connection, but the connection is not explicitly stated in the data (i.e. the ScriptableObjects are not linked to each other). We don't explicitly visualise Quests in an in-game UI. Steps Steps are also ScriptableObjects, that describe an atomic interaction like: Giving an item or dish to a character Check if the player has the item requested by a Character Talk to a character Obtain an item The step ScriptableObject contains the dialogues needed for the step : -Start Dialogue : A dialogue that will be played before doing an action like "checking for an item", "giving an item", "obtaining an item". This dialogue will keep replaying, each time the player interacts with a character, until the step is completed. The same dialogue will be played if the step type is just talking with a character. In that case once the dialogue ends, it ends the step -Win Dialogue : (the naming will be changed) is a dialogue that will be played when the action is done : "Checking for an item", giving an item", "obtaining an item" Once this dialogue ends, it completes the step. -Lose Dialogue: (the naming will be changed) is a dialogue that will be played when the action is not done: "Checking for an item", giving an item", "obtaining an item" The StepController is present on every NPC that will be involved in a step. When a step starts, It will raise an event that will inform all the characters about it. Each character will check if it's involved in the task. And will register to the task if it's. When a step is completed, the character will unregister from it.