Esempio n. 1
0
        private static BountyData GetDynamicBounty(QuestData quest)
        {
            var questId = quest.QuestId;
                    
            if (DynamicBountyDirectory.ContainsKey(questId))
            {
                var type = DynamicBountyDirectory[questId];
                var bountyData = new BountyData();

                switch (type)
                {
                    case DynamicBountyType.BoundShaman:
                    case DynamicBountyType.BlackKingsLegacy:
                    case DynamicBountyType.PlagueOfBurrowers:
                        bountyData = CreateChestAndClearBounty(quest);
                        break;

                    case DynamicBountyType.CursedShrines:
                        bountyData = CreateMultiShrineBounty(quest);
                        break;

                    default:
                        Logger.Error("Dynamic Bounty is not supported {0} ({1})", quest.Name, quest.QuestId, type, bountyData);
                        break;
                }

                Logger.Debug("Created Dynamic Bounty for {0} ({1}) Type={2} {3}", quest.Name, quest.QuestId, type, bountyData);

                return bountyData;
            }
            return null;
        }
Esempio n. 2
0
 public QuestStepData(QuestData questData, QuestStep questStep)
 {
     StepId = questStep.StepId;
     Name = questStep.Name;
     Objectives = new List<QuestStepObjectiveData>();
     foreach (var stepObjective in questStep.QuestStepObjectiveSet.QuestStepObjectives)
     {
         Objectives.Add(new QuestStepObjectiveData(questData, this, stepObjective));
     }
 }
Esempio n. 3
0
 private static BountyData CreateChestAndClearBounty(QuestData quest)
 {
     return new BountyData()
     {
         QuestId = quest.QuestId,
         Act = quest.Act,
         WorldId = quest.Waypoint.WorldSnoId,
         QuestType = BountyQuestType.SpecialEvent,
         //WaypointNumber = quest.Waypoint.Number,
         Coroutines = new List<ISubroutine>
         {
             new EnterLevelAreaCoroutine(quest.QuestId, quest.Waypoint.WorldSnoId, BountyHelpers.DynamicBountyPortals.Values.ToList()),
             new InteractWithGizmoCoroutine(quest.QuestId, -1, 365097, 2912417, 5),
             new ClearAreaForNSecondsCoroutine(quest.QuestId, 60, 0, 0, 45),
             new ClearLevelAreaCoroutine(quest.QuestId),
         }
     };
 }
Esempio n. 4
0
        public static QuestData GetQuestData(int questId)
        {
            var bountyInfo = GetBountyInfo(questId);
            var questData = new QuestData();

            questData.QuestId = questId; //(int)bountyInfo.Quest;

            questData.Steps = new List<QuestStepData>();

            if (bountyInfo == null)
                return questData;

            questData.Name = bountyInfo.Info.DisplayName.Replace("Bounty: ", string.Empty);
            questData.InternalName = bountyInfo.Quest.ToString();
            questData.Act = bountyInfo.Act;
            questData.ActName = bountyInfo.Act.ToString();
            
            questData.LevelAreaIds = new HashSet<int>(bountyInfo.LevelAreas.Select(la => (int)la));
            
            questData.Waypoint = WaypointFactory.GetWaypointByLevelAreaId((int)bountyInfo.StartingLevelArea);


            foreach (var step in bountyInfo.Info.QuestRecord.Steps)
            {
                var questStep = new QuestStepData(questData, step);
                questData.Steps.Add(questStep);
            }

            //if (questData.QuestType == BountyQuestType.Unknown)
            //{
            //    questData.QuestType = BountyQuestTypeFactory.GetQuestType(bountyInfo);
            //}

            //var bountyScripts = new BountyScripts();
            //if (bountyScripts.ContainsKey(questId))
            //{
            //    questData.BountyScript = bountyScripts[questId];
            //    questData.BountyScript.Reset();
            //}

            //Logger.Debug("[QuestData] Saving Quest {0} ({1})", questData.Name, questData.QuestId);
            //questData.Save();
            return questData;
        }    
Esempio n. 5
0
        public static QuestData GetQuestData(int questId)
        {
            var bountyInfo = GetBountyInfo(questId);
            var questData  = new QuestData();

            questData.QuestId      = (int)bountyInfo.Quest;
            questData.Name         = bountyInfo.Info.DisplayName.Replace("Bounty: ", string.Empty);
            questData.InternalName = bountyInfo.Quest.ToString();
            questData.Act          = bountyInfo.Act;
            questData.ActName      = bountyInfo.Act.ToString();
            questData.Steps        = new List <QuestStepData>();
            questData.LevelAreaIds = new HashSet <int>(bountyInfo.LevelAreas.Select(la => (int)la));



            foreach (var step in bountyInfo.Info.QuestRecord.Steps)
            {
                var questStep = new QuestStepData(questData, step);
                questData.Steps.Add(questStep);
            }

            //if (questData.QuestType == BountyQuestType.Unknown)
            //{
            //    questData.QuestType = BountyQuestTypeFactory.GetQuestType(bountyInfo);
            //}

            //var bountyScripts = new BountyScripts();
            //if (bountyScripts.ContainsKey(questId))
            //{
            //    questData.BountyScript = bountyScripts[questId];
            //    questData.BountyScript.Reset();
            //}

            //Logger.Debug("[QuestData] Saving Quest {0} ({1})", questData.Name, questData.QuestId);
            //questData.Save();
            return(questData);
        }
Esempio n. 6
0
 public QuestStepObjectiveData(QuestData questData, QuestStepData questStepData, QuestStepObjective objective)
 {
     _questData = questData;
     _questStepData = questStepData;
     ObjectiveType = objective.ObjectiveType;
     ObjectiveTypeName = objective.ObjectiveType.ToString();
     Name = objective.StepObjectiveName;
 }
Esempio n. 7
0
 private static BountyData CreateMultiShrineBounty(QuestData quest)
 {
     return new BountyData()
     {
         QuestId = quest.QuestId,
         Act = quest.Act,
         WorldId = quest.Waypoint.WorldSnoId,
         QuestType = BountyQuestType.SpecialEvent,
         //WaypointNumber = quest.Waypoint.Number,
         Coroutines = new List<ISubroutine>
         {
             new EnterLevelAreaCoroutine(quest.QuestId, quest.Waypoint.WorldSnoId, BountyHelpers.DynamicBountyPortals.Values.ToList()),
             new ClearLevelAreaCoroutine(quest.QuestId),
             new InteractWithGizmoCoroutine(448214, 443678, 445737, -1, 5, 1, 10, true),
             new ClearLevelAreaCoroutine(quest.QuestId)
         }
     };
 }