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()); }
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); }
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); }
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); }