public static async Task <bool> ExecuteBehavior() { bool inCombat = StyxWoW.Me.Combat; //Check for custom combat if (TargetManager.CombatType != TargetManager.CombatFlags.Normal) { if (ValidateCombatObject()) { if (TargetManager.CombatObject.Distance <= TargetManager.PullDistance && await ValidateCombatPoi()) { return(true); } if (await TrappingBehavior(inCombat)) { return(true); } if (TargetManager.CombatObject.Distance > TargetManager.PullDistance) { if (!await CombatBehaviorActuallyInCombat()) { if (TargetManager.LootableObject != null) { return(false); } if (await CombatMovement()) { return(true); } } } else { if (!await CombatBehaviorActuallyInCombat()) { await RoutineManager.Current.CombatBehavior.ExecuteCoroutine(); } return(true); } } } if (!inCombat) { #region Rest //Rest if (RoutineManager.Current.RestBehavior != null && await RoutineManager.Current.RestBehavior.ExecuteCoroutine()) { TreeRoot.StatusText = "Rest Behavior"; return(true); } if (RoutineManager.Current.NeedRest) { TreeRoot.StatusText = "Rest Behavior"; RoutineManager.Current.Rest(); return(true); } #endregion #region Precombat Buffs if (TargetManager.CheckCombatFlag(TargetManager.CombatFlags.PrecombatBuffs)) { //Precombat Buffs if (RoutineManager.Current.PreCombatBuffBehavior != null && await RoutineManager.Current.PreCombatBuffBehavior.ExecuteCoroutine()) { TreeRoot.StatusText = "PreCombat Behavior"; return(true); } if (RoutineManager.Current.NeedPreCombatBuffs) { TreeRoot.StatusText = "PreCombat Behavior"; RoutineManager.Current.PreCombatBuff(); return(true); } } #endregion #region Pull Behavior if (TargetManager.CheckCombatFlag(TargetManager.CombatFlags.Pull)) { if (BotPoi.Current.Type == PoiType.Kill) { if (Targeting.Instance.TargetList.Count != 0) { if (BotPoi.Current.AsObject != Targeting.Instance.FirstUnit && BotPoi.Current.Type == PoiType.Kill) { BotPoi.Current = new BotPoi(Targeting.Instance.FirstUnit, PoiType.Kill); BotPoi.Current.AsObject.ToUnit().Target(); ResetCombat(); if (NeedPull()) { if (RoutineManager.Current.PullBuffBehavior != null && await RoutineManager.Current.PullBuffBehavior.ExecuteCoroutine()) { TreeRoot.StatusText = "Pull Buff Behavior"; return(true); } if (RoutineManager.Current.PullBehavior != null && await RoutineManager.Current.PullBehavior.ExecuteCoroutine()) { TreeRoot.StatusText = "PullBehavior Behavior"; return(true); } if (await new ActionPull().ExecuteCoroutine()) { TreeRoot.StatusText = "Action Pull Behavior"; return(true); } } return(true); } } } } #endregion } else { #region Heal if (TargetManager.CheckCombatFlag(TargetManager.CombatFlags.Heal)) { if (RoutineManager.Current.HealBehavior != null && await RoutineManager.Current.HealBehavior.ExecuteCoroutine()) { TreeRoot.StatusText = "Heal Behavior"; return(true); } if (RoutineManager.Current.NeedHeal) { TreeRoot.StatusText = "Heal Behavior"; RoutineManager.Current.Heal(); return(true); } } #endregion #region Combat Buff if (TargetManager.CheckCombatFlag(TargetManager.CombatFlags.CombatBuffs)) { //Combat Buffs if (RoutineManager.Current.CombatBuffBehavior != null && await RoutineManager.Current.CombatBuffBehavior.ExecuteCoroutine()) { TreeRoot.StatusText = "Combat Buff Behavior"; return(true); } } #endregion #region Combat if (TargetManager.CheckCombatFlag(TargetManager.CombatFlags.Combat)) { if (StyxWoW.Me.IsActuallyInCombat && !StyxWoW.Me.Mounted) { //Combat if (RoutineManager.Current.CombatBehavior != null && await RoutineManager.Current.CombatBehavior.ExecuteCoroutine()) { TreeRoot.StatusText = "Combat Behavior"; } return(true); } } #endregion } return(false); }