private void ApplyHandlers(CustomQuest managedQuest, QuestData questData) { managedQuest.Accepted += (_sender, _info) => { if (_info.VanillaQuest.completed.Value) { return; } // Add/Remove conversation topic(s) when quest was ACCEPTED if (!string.IsNullOrEmpty(questData.ConversationTopic?.AddWhenQuestAccepted)) { ConversationTopicHelper.AddConversationTopic(questData.ConversationTopic.AddWhenQuestAccepted); } if (!string.IsNullOrEmpty(questData.ConversationTopic?.RemoveWhenQuestAccepted)) { ConversationTopicHelper.RemoveConversationTopic(questData.ConversationTopic.RemoveWhenQuestAccepted); } }; managedQuest.Completed += (_sender, _info) => { if (!_info.VanillaQuest.completed.Value) { return; } // Add/Remove conversation topic(s) when quest was COMPLETED if (!string.IsNullOrEmpty(questData.ConversationTopic?.AddWhenQuestCompleted)) { ConversationTopicHelper.AddConversationTopic(questData.ConversationTopic.AddWhenQuestCompleted); } if (!string.IsNullOrEmpty(questData.ConversationTopic?.RemoveWhenQuestCompleted)) { ConversationTopicHelper.RemoveConversationTopic(questData.ConversationTopic.RemoveWhenQuestCompleted); } if (!string.IsNullOrEmpty(questData.AddMailOnComplete)) { MailHelper.AddMail(questData.AddMailOnComplete); } if (!string.IsNullOrEmpty(questData.RemoveMailOnComplete)) { MailHelper.RemoveMail(questData.RemoveMailOnComplete); } }; managedQuest.Removed += (_sender, _info) => { if (_info.VanillaQuest.completed.Value) { return; } // Add/Remove conversation topic(s) when quest was REMOVED if (!string.IsNullOrEmpty(questData.ConversationTopic?.AddWhenQuestRemoved)) { ConversationTopicHelper.AddConversationTopic(questData.ConversationTopic.AddWhenQuestRemoved); } if (!string.IsNullOrEmpty(questData.ConversationTopic?.RemoveWhenQuestRemoved)) { ConversationTopicHelper.RemoveConversationTopic(questData.ConversationTopic.RemoveWhenQuestRemoved); } }; }