using System.Xml; using System.Xml.Linq; public class MinEventActionPumpQuestSDX : MinEventActionRemoveBuff { // This loops through all the targets, refreshing the quest. // public override void Execute(MinEventParams _params) { for (var j = 0; j < targets.Count; j++) { var entity = targets[j] as EntityAliveSDX; if (entity != null) { for (var k = 0; k < entity.questJournal.quests.Count; k++) for (var l = 0; l < entity.questJournal.quests[k].Objectives.Count; l++) entity.questJournal.quests[k].Objectives[l].Refresh(); continue; } var entityPlayer = targets[j] as EntityPlayerLocal; if (entityPlayer != null) for (var k = 0; k < entityPlayer.QuestJournal.quests.Count; k++) for (var l = 0; l < entityPlayer.QuestJournal.quests[k].Objectives.Count; l++) entityPlayer.QuestJournal.quests[k].Objectives[l].Refresh(); } } } public class MinEventActionTeleportToQuest : MinEventActionTargetedBase { // This loops through all the targets, refreshing the quest. // string questName; public override void Execute(MinEventParams _params) { var entityPlayer = _params.Self as EntityPlayer; foreach (var quest in entityPlayer.QuestJournal.quests) { Log.Out($"Quest: {quest.ID} POI: {quest.GetPOIName()} Position: {quest.Position}"); if (quest.ID == questName) { quest.GetPositionData(out var pos, Quest.PositionDataTypes.POIPosition); //quest.GetPositionData(out var pos, Quest.PositionDataTypes.POIPosition); //quest.GetPositionData(out var pos, Quest.PositionDataTypes.Activate); entityPlayer.Teleport(pos); break; } } } public override bool ParseXmlAttribute(XAttribute _attribute) { var flag = base.ParseXmlAttribute(_attribute); if (!flag) { var name = _attribute.Name.LocalName; if (name != null) if (name == "quest") { questName = _attribute.Value; return true; } } return flag; } }