示例#1
0
        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);
                }
            };
        }