public async Task <bool> Run() { // ReSharper disable once PossibleInvalidOperationException if (!MapData.Current.TrackMob.Value) { return(false); } if (!World.CurrentArea.IsMap) { return(false); } return(await TrackMobLogic.Execute(_range)); }
public static async Task <bool> KillDaresso() { if (Helpers.PlayerHasQuestItem(QuestItemMetadata.EyeOfDesire)) { return(false); } if (World.Act4.GrandArena.IsCurrentArea) { var daresso = Daresso; if (daresso != null && daresso.PathExists()) { if (await Helpers.StopBeforeBoss(Settings.BossNames.Daresso)) { return(true); } await Helpers.MoveAndWait(daresso); return(true); } // Gladiators var mob = AnyUniqueMob; if (mob != null && mob.PathExists()) { await Helpers.MoveAndWait(mob); return(true); } await Helpers.Explore(); return(true); } if (World.Act4.DaressoDream.IsCurrentArea) { if (await TrackMobLogic.Execute(100)) { return(true); } await Travel.To(World.Act4.GrandArena); return(true); } await Travel.To(World.Act4.GrandArena); return(true); }
public static async Task <bool> ClearStrand() { if (_finished) { return(false); } if (World.Act6.TwilightStrand.IsCurrentArea) { if (await TrackMobLogic.Execute()) { return(true); } if (!await CombatAreaCache.Current.Explorer.Execute()) { if (QuestManager.GetState(Quests.FallenFromGrace) <= FinishedStateMinimum) { return(false); } GlobalLog.Error("[ClearTwilightStrand] Twilight Strand is fully explored but not all monsters were killed. Now going to create a new Twilight Strand instance."); Travel.RequestNewInstance(World.Act6.TwilightStrand); if (!await PlayerAction.TpToTown()) { ErrorManager.ReportError(); } } return(true); } await Travel.To(World.Act6.TwilightStrand); return(true); }
public async Task <bool> Run() { if (!World.CurrentArea.IsTempleOfAtzoatl) { return(false); } var settings = Settings.Instance; if (settings.SkipTemple) { await Leave(); return(true); } if (settings.TrackMobInTemple && await TrackMobLogic.Execute()) { return(true); } var explorer = CombatAreaCache.Current.Explorer; var isExplored = explorer.BasicExplorer.PercentComplete >= settings.ExplorationPercent; if (settings.IgnoreBossroom) { if (isExplored) { GlobalLog.Warn($"[HandleTempleTask] Exploration limit has been reached ({settings.ExplorationPercent}%). Now leaving the temple."); await Leave(); return(true); } } else { if (isExplored && !explorer.Settings.FastTransition) { GlobalLog.Warn($"[HandleTempleTask] Exploration limit has been reached ({settings.ExplorationPercent}%). Now seeking the bossroom."); explorer.Settings.FastTransition = true; return(true); } var boss = Incursion.CachedOmnitect; if (boss != null && !boss.Ignored && !boss.Unwalkable) { var pos = boss.Position; if (pos.IsFar) { if (!pos.TryCome()) { GlobalLog.Error("[HandleTempleTask] Fail to move to Vaal Omnitect. Now marking it as unwalkable."); boss.Unwalkable = true; } return(true); } var attempts = ++boss.InteractionAttempts; if (attempts > MaxOmnitectAttempts) { GlobalLog.Error("[HandleTempleTask] Vaal Omnitect did not become active. Now ignoring it."); boss.Ignored = true; return(true); } await Coroutines.FinishCurrentAction(); GlobalLog.Debug($"[HandleTempleTask] Waiting for Vaal Omnitect to become active ({attempts}/{MaxOmnitectAttempts})"); await Wait.StuckDetectionSleep(200); return(true); } } if (await explorer.Execute()) { return(true); } GlobalLog.Warn("[HandleTempleTask] Temple is fully explored."); await Leave(); return(true); }
public async Task <bool> Run() { var area = World.CurrentArea; if (!area.IsMap && !area.IsOverworldArea) { return(false); } var cache = CombatAreaCache.Current; if (!CombatAreaCache.IsInIncursion) { return(false); } var settings = Incursion.CurrentRoomSettings; if (settings != null) { if (settings.PriorityAction == PriorityAction.Upgrading) { if (await KillArchitect(IconUpgrade)) { return(true); } } else if (settings.PriorityAction == PriorityAction.Changing) { if (await KillArchitect(IconChange)) { return(true); } } } if (await OpenIncursionDoor()) { return(true); } if (await TrackMobLogic.Execute()) { return(true); } if (await cache.Explorer.Execute()) { return(true); } if (await ExitIncursion()) { return(true); } GlobalLog.Debug("[HandleIncursionTask] Incursion is fully explored. Waiting for timer to run out..."); await Wait.StuckDetectionSleep(200); return(true); }