private IEnumerator QuestReset() { progress = 0; if (Dialogue != null && subscribedToDialogueCallback) { Dialogue.OnPrimaryDialogueStarted -= DialogueStarted; Dialogue.OnPrimaryDialogueEnded -= DialogueEnded; subscribedToDialogueCallback = false; } ResetDialogue(); for (int i = 0; i < Objectives.Count; i++) { QuestObjective currentObjective = Objectives[i]; currentObjective.OnComplete -= UpdateQuestProgress; yield return(currentObjective.ResetObjective()); } if (OnQuestReset != null) { OnQuestReset(this); } }