public static async Task <List <string> > GetShiroganePlots() { if (ConditionParser.IsQuestCompleted(68167)) { await GetToResidential(111); } else { await GetToShiroganeWindow(); } if (!SelectString.IsOpen) { return(new List <string>()); } await OpenHousingWards(); var list = await HousingWards(); if (ConditionParser.IsQuestCompleted(68167)) { await CloseHousingWardsNoLoad(); } else { await CloseHousingWards(); } return(list); }
public static short GetGpPerTick() { return((CharacterResource.Me.CurrentJob == ClassJobType.Miner && ConditionParser.IsQuestCompleted(68094)) || (CharacterResource.Me.CurrentJob == ClassJobType.Botanist && ConditionParser.IsQuestCompleted(68160)) || (CharacterResource.Me.CurrentJob == ClassJobType.Fisher && ConditionParser.IsQuestCompleted(68435)) ? (short)6 : (short)5); }
public static int GetGpPerTick() { return((Me.CurrentJob == ClassJobType.Miner && ConditionParser.IsQuestCompleted(68094)) || (Me.CurrentJob == ClassJobType.Botanist && ConditionParser.IsQuestCompleted(68160)) || (Me.CurrentJob == ClassJobType.Fisher && ConditionParser.IsQuestCompleted(68435)) ? 6 : 5); }
public static ushort GetGpPerTick() { ushort gpPerTick = 5; if ((CharacterResource.Me.CurrentJob == ClassJobType.Miner && ConditionParser.IsQuestCompleted(68094)) || (CharacterResource.Me.CurrentJob == ClassJobType.Botanist && ConditionParser.IsQuestCompleted(68160)) || (CharacterResource.Me.CurrentJob == ClassJobType.Fisher && ConditionParser.IsQuestCompleted(68435))) { gpPerTick++; } if (Core.Player.ClassLevel >= 80) { gpPerTick++; } return(gpPerTick); }
private async Task GoToWard(int Ward, string District) { Navigator.PlayerMover = new SlideMover(); Navigator.NavigationProvider = new ServiceNavigationProvider(); if (District.Equals("Lavendar Beds", StringComparison.InvariantCultureIgnoreCase)) { if (ConditionParser.IsQuestCompleted(66748)) { await LlamaLibrary.aHouseChecker.GetToResidential(2); await LlamaLibrary.aHouseChecker.OpenHousingWards(); Log($"Traveling to ward {District} Ward - {Ward}"); HousingSelectBlock.Instance.SelectWard(Ward - 1); LlamaLibrary.RemoteWindows.HousingSelectBlock.Instance.GoToWard(Ward - 1); await Coroutine.Wait(5000, () => SelectYesno.IsOpen); if (SelectYesno.IsOpen) { SelectYesno.Yes(); } await Coroutine.Sleep(5000); if (CommonBehaviors.IsLoading) { await Coroutine.Wait(-1, () => !CommonBehaviors.IsLoading); } } else { Logging.WriteDiagnostic("Please complete the quest 'Where the Heart Is (The Lavender Beds)'"); } } if (District.Equals("Mists", StringComparison.InvariantCultureIgnoreCase)) { if (ConditionParser.IsQuestCompleted(66750)) { await LlamaLibrary.aHouseChecker.GetToResidential(8); await LlamaLibrary.aHouseChecker.OpenHousingWards(); Log($"Traveling to ward {District} Ward - {Ward}"); HousingSelectBlock.Instance.SelectWard(Ward - 1); LlamaLibrary.RemoteWindows.HousingSelectBlock.Instance.GoToWard(Ward - 1); await Coroutine.Wait(5000, () => SelectYesno.IsOpen); if (SelectYesno.IsOpen) { SelectYesno.Yes(); } await Coroutine.Sleep(5000); if (CommonBehaviors.IsLoading) { await Coroutine.Wait(-1, () => !CommonBehaviors.IsLoading); } } else { Logging.WriteDiagnostic("Please complete the quest 'Where the Heart Is (The Mists)'"); } } if (District.Equals("Goblet", StringComparison.InvariantCultureIgnoreCase)) { if (ConditionParser.IsQuestCompleted(66749)) { await LlamaLibrary.aHouseChecker.GetToResidential(9); await LlamaLibrary.aHouseChecker.OpenHousingWards(); Log($"Traveling to ward {District} Ward - {Ward}"); HousingSelectBlock.Instance.SelectWard(Ward - 1); LlamaLibrary.RemoteWindows.HousingSelectBlock.Instance.GoToWard(Ward - 1); await Coroutine.Wait(5000, () => SelectYesno.IsOpen); if (SelectYesno.IsOpen) { SelectYesno.Yes(); } await Coroutine.Sleep(5000); if (CommonBehaviors.IsLoading) { await Coroutine.Wait(-1, () => !CommonBehaviors.IsLoading); } } else { Logging.WriteDiagnostic("Please complete the quest 'Where the Heart Is (The Goblet)'"); } } if (District.Equals("Shirogane", StringComparison.InvariantCultureIgnoreCase)) { if (ConditionParser.IsQuestCompleted(68167)) { await LlamaLibrary.aHouseChecker.GetToResidential(111); await LlamaLibrary.aHouseChecker.OpenHousingWards(); Log($"Traveling to ward {District} Ward - {Ward}"); HousingSelectBlock.Instance.SelectWard(Ward - 1); LlamaLibrary.RemoteWindows.HousingSelectBlock.Instance.GoToWard(Ward - 1); await Coroutine.Wait(5000, () => SelectYesno.IsOpen); if (SelectYesno.IsOpen) { SelectYesno.Yes(); } await Coroutine.Sleep(5000); if (CommonBehaviors.IsLoading) { await Coroutine.Wait(-1, () => !CommonBehaviors.IsLoading); } } else { Logging.WriteDiagnostic("Please complete the quest 'I Dream of Shirogane'"); } } _isDone = true; }
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); }); }
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(); _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(); _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); }); }
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); }); }