Пример #1
0
        public static async Task <bool> Rotation()
        {
            if (Main.Debug)
            {
                Log.Diagnostics("In CombatRotationCall()");
            }
            if (Me.IsCasting || Me.IsChanneling || Me.IsFlying || Me.OnTaxi)
            {
                return(false);
            }
            if (BotManager.Current.IsRoutineBased() && Me.Mounted)
            {
                return(false);
            }
            //Attack after vanish  && !Me.AuraExists(SpellBook.AuraVanish))
            if (Main.Debug)
            {
                Log.Diagnostics("Before Combat Check");
            }
            if (BotManager.Current.IsRoutineBased() && (!Me.Combat && !Me.AuraExists(SpellBook.AuraVanish)))
            {
                return(false);
            }
            if (Main.Debug)
            {
                Log.Diagnostics("After Combat Check");
            }

            // Clear loss of control if we can //
            //     if (await ItemManager.ClearLossOfControlWithTrinkets()) return true;

            // Don't go any further if we have total loss of control //
            //    if (Me.HasTotalLossOfControl()) return false;

/*
 *          if (Me.AuraExists(SpellBook.AuraVanish) && !Main.BurstTimer.IsRunning && Main.BurstTimer.ElapsedMilliseconds > 10000) return false;
 *
 *          if (Main.BurstTimer.IsRunning && Main.BurstTimer.ElapsedMilliseconds < 10000)
 *              return await BurstRotation();
 *          if (!Main.BurstTimer.IsRunning || Main.BurstTimer.ElapsedMilliseconds > 10000)
 *              Main.BurstTimer.Reset(); */
            return(await CombatRotation());
        }
Пример #2
0
        private static async Task <bool> SubtletySingleRotation()
        {
            if ((Me.CurrentTarget != null && !Me.CurrentTarget.HasAura(SpellBook.AuraFindWeakness) && !Me.AuraExists(SpellBook.AuraSubterfuge) && !Me.AuraExists(SpellBook.AuraVanish) && !Me.AuraExists(SpellBook.AuraShadowDance))
                // && (WoWSpell.FromId(SpellBook.CastVanish).CooldownTimeLeft.TotalSeconds < 10
                //     || !WoWSpell.FromId(SpellBook.CastVanish).IsOnCooldown()
                //     || WoWSpell.FromId(SpellBook.AuraShadowDance).CooldownTimeLeft.TotalSeconds < 10)
                && StyxWoW.Me.AuraStacks(SpellBook.AuraAnticipation) < 3 &&
                Me.CurrentEnergy <= 90)
            {
                return(await PoolRotation());
            }

            /*
             * if ((Me.CurrentTarget != null && !Me.CurrentTarget.HasAura(SpellBook.AuraFindWeakness)) && Me.AuraStacks(SpellBook.AuraAnticipation) < 3 && Me.CurrentEnergy <= 90)
             * {
             *   return await PoolRotation();
             * }
             *
             */



            //Make sure to refresh Findweakness
            if (Me.AuraRemainingTime(SpellBook.AuraShadowDance).TotalSeconds < 1.2 || Me.AuraRemainingTime(SpellBook.AuraSubterfuge).TotalSeconds < 1.2)
            {
                if (await Abilities.Cast <Ambush>(MyCurrentTarget))
                {
                    return(true);
                }
            }

            //Cast another rupture regardless of it being already up when you use SReflection

            if (SRtimer.IsRunning && !ruptureRefreshed)
            {
                if (await Abilities.Cast <RefreshRupture>(MyCurrentTarget))
                {
                    ruptureRefreshed = true;
                    return(true);
                }
            }
            if (SRtimer.ElapsedMilliseconds > 16000)
            {
                SRtimer.Reset();
                ruptureRefreshed = false;
            }


            if (HotKeyManager.CooldownsOn)
            {
                if (await CombatBuff.UseTrinketsToBurst())
                {
                    return(true);
                }
                if (await Abilities.Cast <ShadowReflection>(MyCurrentTarget))
                {
                    SRtimer.Restart();
                    return(false);
                }
                if (await Abilities.Cast <ShadowDance>(Me))
                {
                    return(false);
                }
                if (await Abilities.Cast <VanishOffensive>(MyCurrentTarget))
                {
                    return(true);
                }
                if (await Abilities.Cast <Premed>(MyCurrentTarget))
                {
                    return(true);
                }
                if (await Abilities.Cast <Preperation>(Me))
                {
                    return(true);
                }
            }

            if (await Abilities.Cast <SliceNDiceAbility>(MyCurrentTarget))
            {
                return(true);
            }
            if (await Abilities.Cast <Rupture>(MyCurrentTarget))
            {
                return(true);
            }

            if (await Abilities.Cast <EviscerateAbility>(MyCurrentTarget))
            {
                return(true);
            }


            if (await Abilities.Cast <Ambush>(MyCurrentTarget))
            {
                return(true);
            }
            if (await Abilities.Cast <Backstab>(MyCurrentTarget))
            {
                return(true);
            }
            if (await Abilities.Cast <Hemorrhage>(MyCurrentTarget))
            {
                return(true);
            }
            return(false);
        }
Пример #3
0
        private static async Task <bool> SubtletyRotationTwoToFourTargets()
        {
            if (HotKeyManager.NoAoe)
            {
                return(await SubtletySingleRotation());
            }

            //Make sure to refresh Findweakness
            if (Me.AuraRemainingTime(SpellBook.AuraShadowDance).TotalSeconds < 1.2)
            {
                if (await Abilities.Cast <Ambush>(MyCurrentTarget))
                {
                    return(true);
                }
            }

            // if (await Abilities.Cast<VanishOffensive>(Me)) return true;
            //  if (await Abilities.Cast<Preperation>(Me)) return true;

            if (SRtimer.IsRunning && !ruptureRefreshed)
            {
                if (await Abilities.Cast <RefreshRupture>(MyCurrentTarget))
                {
                    ruptureRefreshed = true;
                    return(true);
                }
            }
            if (SRtimer.ElapsedMilliseconds > 16000)
            {
                SRtimer.Reset();
                ruptureRefreshed = false;
            }

            if (HotKeyManager.CooldownsOn)
            {
                if (await Abilities.Cast <ShadowReflection>(MyCurrentTarget))
                {
                    SRtimer.Restart();
                    return(true);
                }
                if (await Abilities.Cast <ShadowDance>(Me))
                {
                    return(true);
                }
                if (await Abilities.Cast <VanishOffensive>(MyCurrentTarget))
                {
                    return(true);
                }
                if (await Abilities.Cast <Preperation>(Me))
                {
                    return(true);
                }
            }

            //Finisher
            if (await Abilities.Cast <SliceNDiceAbility>(MyCurrentTarget))
            {
                return(true);
            }
            if (await Abilities.Cast <Rupture>(UnitManager.Instance.LastKnownNonBleedingEnemies.FirstOrDefault()))
            {
                return(true);
            }
            if (await Abilities.Cast <Rupture>(UnitManager.Instance.LastKnownBleedingEnemies.FirstOrDefault()))
            {
                return(true);
            }
            if (Me.CurrentTarget.AuraExists(SpellBook.AuraFindWeakness) && UnitManager.Instance.LastKnownSurroundingEnemies.Count < 3)
            {
                if (await Abilities.Cast <EviscerateAbility>(MyCurrentTarget))
                {
                    return(true);
                }
            }
            if (MyCurrentTarget.AuraRemainingTime(SpellBook.AuraCrimsonTempest).TotalSeconds < 2)
            {
                if (await Abilities.Cast <CrimsonTempest>(MyCurrentTarget))
                {
                    return(true);
                }
            }
            if (await Abilities.Cast <EviscerateAbility>(MyCurrentTarget))
            {
                return(true);
            }
            //Generator
            if (!Me.AuraExists(SpellBook.AuraShadowDance) || UnitManager.Instance.LastKnownSurroundingEnemies.Count >= 5)
            {
                if (await Abilities.Cast <FanOfKnives>(MyCurrentTarget))
                {
                    return(true);
                }
            }
            if (await Abilities.Cast <Ambush>(MyCurrentTarget))
            {
                return(true);
            }
            return(false);
        }
Пример #4
0
        public static async Task <bool> Rotation()
        {
            if (Main.DeathTimer.IsRunning)
            {
                Main.DeathTimer.Reset();
            }

            if (!_buffTimer.IsRunning)
            {
                _buffTimer.Start();
            }

            // Checking if auras are greater than 0 helps with the bot to stop rebuffing immediately after zoning in
            // because the bot has a very small window after loading the character when it's loaded but does not know about
            // the character auras yet (aura count is 0). // Even if we don't have any visible buffs up, the character likely has over 10 "invisible" auras
            if ((_buffTimer.ElapsedMilliseconds >= BuffTimerIntervalMs) && Me.Auras.Count > 0)
            {
                _buffTimer.Restart();

                if (Me.IsDead || Me.IsGhost || Me.IsCasting || Me.IsChanneling || Me.IsFlying || Me.OnTaxi || Me.Mounted)
                {
                    return(false);
                }

                if (Main.Debug)
                {
                    Log.Diagnostics("In PreCombatRotationCall()");
                }


                if (await Abilities.Cast <StealthAbility>(Me))
                {
                    return(true);
                }
                //if (await Abilities.Cast<SapAbility>(MyCurrentTarget)) return true;
                //if (await Abilities.Cast<SapAbility>(UnitManager.Instance.SapTarget)) return true;
                if ((Me.Specialization == WoWSpec.RogueCombat))
                {
                    if (await Abilities.Cast <InstantPoison>(Me))
                    {
                        return(true);
                    }
                }
                else
                {
                    if (await Abilities.Cast <DeadlyPoison>(Me))
                    {
                        return(true);
                    }
                }
                if (await Abilities.Cast <WoundPoison>(Me))
                {
                    return(true);
                }
                if (await Abilities.Cast <CripplingPoison>(Me))
                {
                    return(true);
                }
                if (Me.Specialization == WoWSpec.RogueSubtlety && (Me.Combat || HotKeyManager.Questing || Me.AuraExists(SpellBook.AuraVanish)))
                {
                    return(await Combat.Rotation());
                }
            }

            if (Me.IsDead || Me.IsGhost || Me.IsCasting || Me.IsChanneling || Me.IsFlying || Me.OnTaxi || Me.Mounted)
            {
                return(false);
            }



            // if (await Abilities.Cast<BurstOfSpeedAbility>(Me)) return true;
            return(false);
        }