public override void Run() { // Get or set selected quest if (QuestingTask.CurrentQuest != null) { int id = QuestingTask.CurrentQuest.Id; if (Quest.GetQuestCompleted(id) || id == 0) { QuestingTask.SelectQuest(); return; } if (QuestingTask.CurrentQuest.WorldQuestLocation != null && QuestingTask.CurrentQuest.WorldQuestLocation.IsValid && !Quest.GetLogQuestId().Contains(id)) { // World Quest that we don't have in our inventory if (!QuestingTask.IsWorldQuestAvailable(id)) { // The WorldQuest is no longer available, therefor, it's complete. QuestingTask.SelectQuest(); return; } } } else { QuestingTask.SelectQuest(); return; } // Need PickUp or TurnIn if (QuestingTask.CurrentQuest.Id != -1 && ((Quest.GetLogQuestIsComplete(QuestingTask.CurrentQuest.Id) && QuestingTask.AllForcedObjectiveComplete()) || QuestingTask.CurrentQuest.Objectives.Count <= 0) && Quest.GetLogQuestId().Contains(QuestingTask.CurrentQuest.Id) && QuestingTask.CurrentQuest.ScriptConditionIsFinish.Replace(" ", "").Length <= 0) // TurnIn { QuestingTask.TurnInQuest(); return; } if (QuestingTask.CurrentQuest.Id != -1) { // PickUp if (!Quest.GetLogQuestId().Contains(QuestingTask.CurrentQuest.Id) && !Quest.GetLogQuestIsComplete(QuestingTask.CurrentQuest.Id) && !Quest.IsQuestFlaggedCompletedLUA(QuestingTask.CurrentQuest.Id)) { QuestingTask.PickUpQuest(); if (!Quest.GetLogQuestId().Contains(QuestingTask.CurrentQuest.Id) && Quest.IsQuestFlaggedCompletedLUA(QuestingTask.CurrentQuest.Id)) { Quest.FinishedQuestSet.Add(QuestingTask.CurrentQuest.Id); } return; } } QuestingTask._travelDisabled = false; // reset travel after PickUp worked. (code exclusive for WQ) if (Script.Run(QuestingTask.CurrentQuest.ScriptConditionIsFinish) && QuestingTask.CurrentQuest.ScriptConditionIsFinish.Replace(" ", "").Length > 0) { QuestingTask.TurnInQuest(); return; } // Quest Objective if (QuestingTask.CurrentQuestObjectiveIsFinish() || QuestingTask.CurrentQuestObjective == null) { QuestingTask.SelectNextQuestObjective(); if (QuestingTask.CurrentQuestObjective == null && QuestingTask.CurrentQuest.Objectives.Count > 0) { QuestingTask.ResetQuestObjective(); } if (QuestingTask.CurrentQuestObjectiveIsFinish()) { return; } if (QuestingTask.CurrentQuestObjective == null) { QuestingTask.TurnInQuest(); } return; } // Execute Objective QuestingTask.CurrentQuestObjectiveExecute(); }