Esempio n. 1
0
        public override void Start()
        {
            Poi.Current = null;
            //setup navigation manager
            Navigator.NavigationProvider = new DDNavigationProvider(new ServiceNavigationProvider());
            Navigator.PlayerMover        = new SlideMover();

            TreeHooks.Instance.ClearAll();

            _tasks = new TaskManagerProvider();

            DeepTracker.InitializeTracker(Core.Me.ClassLevel);

            _tasks.Add(new LoadingHandler());
            _tasks.Add(new DeathWindowHandler());
            _tasks.Add(new SideStepTask());
            //not sure if i want the trap handler to be above combat or not
            _tasks.Add(new TrapHandler());

            //pomanders for sure need to happen before combat so that we can correctly apply Lust for bosses
            _tasks.Add(new Pomanders());

            _tasks.Add(new CombatHandler());
            _tasks.Add(new LobbyHandler());

            _tasks.Add(new GetToCaptiain());
            _tasks.Add(new POTDEntrance());

            _tasks.Add(new CarnOfReturn());
            _tasks.Add(new FloorExit());
            _tasks.Add(new Loot());

            _tasks.Add(new StuckDetection());
            _tasks.Add(new POTDNavigation());

            _tasks.Add(new BaseLogicHandler());

            Settings.Instance.Stop = false;
            if (!Core.Me.IsDow())
            {
                Logger.Error("Please change to a DOW class");
                _root = new ActionAlwaysFail();
                return;
            }

            //setup combat manager
            CombatTargeting.Instance.Provider = new DDCombatTargetingProvider();

            GameSettingsManager.FaceTargetOnAction = true;

            if (Constants.Lang == Language.Chn)
            {
                //回避 - sidestep
                //Zekken
                if (PluginManager.Plugins.Any(i =>
                                              (i.Plugin.Name.Contains("Zekken") || i.Plugin.Name.Contains("技能躲避")) && i.Enabled))
                {
                    Logger.Error("禁用 AOE技能躲避插件 - Zekken");
                    _root = new ActionAlwaysFail();
                    return;
                }
            }

            if (PluginManager.Plugins.Any(i => i.Plugin.Name == "Zekken" && i.Enabled))
            {
                Logger.Error(
                    "Zekken is currently turned on, It will interfere with DeepDive & SideStep. Please Turn it off and restart the bot.");
                _root = new ActionAlwaysFail();
                return;
            }

            if (!ConditionParser.IsQuestCompleted(67092))
            {
                Logger.Error("You must complete \"The House That Death Built\" to run this base.");
                Logger.Error(
                    "Please switch to \"Order Bot\" and run the profile: \\BotBases\\DeepDive\\Profiles\\PotD_Unlock.xml");
                _root = new ActionAlwaysFail();
                return;
            }

            StopPlz = false;

            SetupSettings();

            if (ShowDebug)
            {
                if (_debug == null)
                {
                    // _debug = new Debug
                    // {
                    //Text = "DeepDive2 v" + v //title
                    // };
                    try
                    {
                        //_debug = new Form1();

                        Thread Messagethread = new Thread(new ThreadStart(delegate()
                        {
                            _debug = new Form1();

                            /* DispatcherOperation DispacherOP =
                             * _debug.Dispatcher.BeginInvoke(
                             *   DispatcherPriority.Normal,
                             *   new System.Action(delegate ()
                             *   {
                             *       _debug.Show();
                             *       _debug.Closed += (o, e) => { _debug = null; };
                             *   }));
                             *
                             * _debug.BeginInvoke(
                             * new System.Action(delegate ()
                             * {
                             * // _debug.Show();
                             * _debug.ShowDialog();
                             * _debug.Closed += (o, e) => { _debug = null; };
                             * }));
                             * // _debug.Show();
                             */
                            _debug.ShowDialog();

                            //_debug.listBox1.DataSource = DDTargetingProvider.Instance.LastEntities;
                        }));
                        Messagethread.SetApartmentState(ApartmentState.STA);
                        Messagethread.Start();

                        // _debug.Show(); _debug.listBox1.DataSource = DDTargetingProvider.Instance.LastEntities;
                        //_debug.ShowDialog();
                        DeepTracker._debug = _debug;
                    }
                    catch (Exception)
                    { }
                }
            }

            _root =
                new ActionRunCoroutine(async x =>
            {
                if (StopPlz)
                {
                    return(false);
                }
                if (!_init)
                {
                    Logging.Write("DeepDive is waiting on Initialization to finish");
                    return(true);
                }

                if (await _tasks.Run())
                {
                    await Coroutine.Yield();
                }
                else
                {
                    Logger.Warn("No tasks ran");
                    await Coroutine.Sleep(1000);
                }

                return(true);
            });
        }
Esempio n. 2
0
        public override void Start()
        {
            Poi.Current = null;

            if (DutyManager.InInstance && !Constants.SelectedDungeon.DeepDungeonRawIds.Contains(WorldManager.ZoneId))
            {
                Constants.SelectedDungeon             = Constants.GetDeepDungeonByMapid(WorldManager.ZoneId);
                Settings.Instance.BetterSelectedLevel = Constants.SelectedDungeon.Floors.FirstOrDefault(i => i.MapId == WorldManager.ZoneId);
                Logger.Warn($"Started bot inside dungeon (Not currently selected): Using {Constants.SelectedDungeon.DisplayName}");
            }

            if (Constants.SelectedDungeon == null)
            {
                Logger.Error("No Selected Deep Dungeon: Something went really wrong");
                _root = new ActionAlwaysFail();
                return;
            }

            if (Settings.Instance.BetterSelectedLevel == null)
            {
                Settings.Instance.BetterSelectedLevel = Constants.SelectedDungeon.Floors[0];
                Logger.Error($"No floor selected, setting it to use [{Settings.Instance.BetterSelectedLevel.DisplayName}]");
            }

            Logger.Info(Constants.SelectedDungeon.ToString());
            //setup navigation manager
            Navigator.NavigationProvider = new DDNavigationProvider(new ServiceNavigationProvider());
            Navigator.PlayerMover        = new SlideMover();

            TreeHooks.Instance.ClearAll();

            DeepTracker.InitializeTracker(Core.Me.ClassLevel);

            _tasks = new TaskManagerProvider();


            _tasks.Add(new LoadingHandler());
            _tasks.Add(new DeathWindowHandler());
            _tasks.Add(new SideStepTask());
            //not sure if i want the trap handler to be above combat or not
            _tasks.Add(new TrapHandler());

            //pomanders for sure need to happen before combat so that we can correctly apply Lust for bosses
            _tasks.Add(new Pomanders());

            _tasks.Add(new CombatHandler());

            _tasks.Add(new LobbyHandler());
            _tasks.Add(new GetToCaptain());
            _tasks.Add(new POTDEntrance());


            _tasks.Add(new CairnOfReturn());
            _tasks.Add(new FloorExit());
            _tasks.Add(new Loot());


            _tasks.Add(new StuckDetection());
            _tasks.Add(new POTDNavigation());


            _tasks.Add(new BaseLogicHandler());

            Settings.Instance.Stop = false;
            if (!Core.Me.IsDow())
            {
                Logger.Error("Please change to a DOW class");
                _root = new ActionAlwaysFail();
                return;
            }

            Logger.Error($"DeepDungeon status agent id {DeepDungeonStatus.Agent}");


            //setup combat manager
            CombatTargeting.Instance.Provider = new DDCombatTargetingProvider();

            GameSettingsManager.FaceTargetOnAction = true;


            if (Constants.Lang == Language.Chn)
            {
                //回避 - sidestep
                //Zekken
                if (PluginManager.Plugins.Any(i => (i.Plugin.Name.Contains("Zekken") || i.Plugin.Name.Contains("技能躲避")) && i.Enabled))
                {
                    Logger.Error("禁用 AOE技能躲避插件 - Zekken");
                    _root = new ActionAlwaysFail();
                    return;
                }
            }

            if (PluginManager.Plugins.Any(i => i.Plugin.Name == "Zekken" && i.Enabled))
            {
                Logger.Error(
                    "Zekken is currently turned on, It will interfere with DeepDive & SideStep. Please Turn it off and restart the bot.");
                _root = new ActionAlwaysFail();
                return;
            }


            if (!ConditionParser.IsQuestCompleted(Constants.SelectedDungeon.UnlockQuest))
            {
                Logger.Error($"You must complete \"{DataManager.GetLocalizedQuestName(Constants.SelectedDungeon.UnlockQuest)}\" to run this base.");
                Logger.Error(
                    "Please switch to \"Order Bot\" and run the profile: \\BotBases\\DeepDive\\Profiles\\PotD_Unlock.xml");
                _root = new ActionAlwaysFail();
                return;
            }

            if (!ConditionParser.IsQuestCompleted(Settings.Instance.BetterSelectedLevel.QuestId))
            {
                Logger.Error($"You must complete \"{DataManager.GetLocalizedQuestName(Settings.Instance.BetterSelectedLevel.QuestId)}\" to run this floor.");
                Logger.Error("Complete the quest or change the floor selection");
                _root = new ActionAlwaysFail();
                return;
            }

            //Logger.Error($"Quest {Settings.Instance.BetterSelectedLevel.QuestId} - \"{DataManager.GetLocalizedQuestName(Settings.Instance.BetterSelectedLevel.QuestId)}\" to run this base.");

            StopPlz = false;

            SetupSettings();

            _root =
                new ActionRunCoroutine(async x =>
            {
                if (StopPlz)
                {
                    return(false);
                }
                if (!_init)
                {
                    Logging.Write("DeepDive is waiting on Initialization to finish");
                    return(true);
                }

                if (await _tasks.Run())
                {
                    await Coroutine.Yield();
                }
                else
                {
                    Logger.Warn("No tasks ran");
                    await Coroutine.Sleep(1000);
                }

                return(true);
            });
        }
Esempio n. 3
0
        public override void Start()
        {
            Poi.Current = null;
            //setup navigation manager
            Navigator.NavigationProvider = new DDNavigationProvider(new ServiceNavigationProvider());
            Navigator.PlayerMover        = new SlideMover();

            TreeHooks.Instance.ClearAll();

            _tasks = new TaskManagerProvider();

            DeepTracker.InitializeTracker(Core.Me.ClassLevel);

            _tasks.Add(new LoadingHandler());
            _tasks.Add(new DeathWindowHandler());
            _tasks.Add(new SideStepTask());
            //not sure if i want the trap handler to be above combat or not
            _tasks.Add(new TrapHandler());

            //pomanders for sure need to happen before combat so that we can correctly apply Lust for bosses
            _tasks.Add(new Pomanders());

            _tasks.Add(new CombatHandler());

            _tasks.Add(new LobbyHandler());
            _tasks.Add(new GetToKyusei());
            _tasks.Add(new POTDEntrance());

            _tasks.Add(new BeaconOfReturn());
            _tasks.Add(new FloorExit());
            _tasks.Add(new Loot());

            _tasks.Add(new StuckDetection());
            _tasks.Add(new POTDNavigation());

            _tasks.Add(new BaseLogicHandler());

            Settings.Instance.Stop = false;
            if (!Core.Me.IsDow())
            {
                Logger.Error("Please change to a DOW class");
                _root = new ActionAlwaysFail();
                return;
            }

            //setup combat manager
            CombatTargeting.Instance.Provider = new DDCombatTargetingProvider();

            GameSettingsManager.FaceTargetOnAction = true;

            if (Constants.Lang == Language.Chn)
            {
                if (PluginManager.Plugins.Any(i =>
                                              (i.Plugin.Name.Contains("Zekken") || i.Plugin.Name.Contains("技能躲避")) && i.Enabled))
                {
                    Logger.Error("禁用 AOE技能躲避插件 - Zekken");
                    _root = new ActionAlwaysFail();
                    return;
                }
            }

            if (PluginManager.Plugins.Any(i => i.Plugin.Name == "Zekken" && i.Enabled))
            {
                Logger.Error(
                    "Zekken is currently turned on, It will interfere with DeepDive & SideStep. Please Turn it off and restart the bot.");
                _root = new ActionAlwaysFail();
                return;
            }

            if (!ConditionParser.IsQuestCompleted(67092))
            {
                Logger.Error("You must complete \"The House That Death Built\" to run this base.");
                Logger.Error(
                    "Please switch to \"Order Bot\" and run the profile: \\BotBases\\DeepDive\\Profiles\\PotD_Unlock.xml");
                _root = new ActionAlwaysFail();
                return;
            }

            StopPlz = false;

            SetupSettings();

            _root =
                new ActionRunCoroutine(async x =>
            {
                if (StopPlz)
                {
                    return(false);
                }

                if (!_init)
                {
                    ff14bot.Helpers.Logging.Write("DeepDive is waiting on Initialization to finish");
                    return(true);
                }

                if (await _tasks.Run())
                {
                    await Coroutine.Yield();
                }
                else
                {
                    Logger.Warn("No tasks ran");
                    await Coroutine.Sleep(1000);
                }

                return(true);
            });
        }