Esempio n. 1
0
    internal static void Under10Rotation()
    {
        if (lowlevel != true)
        {
            lowlevel = true;
        }

        if (MyTarget.GetDistance < 20)
        {
            TotemManager.CastTotems();
        }
        if (Me.Level < 4)
        {
            Extension.FightSpell(LightningBolt);
        }
        if (MyTarget.GetDistance > 7)
        {
            Extension.FightSpell(LightningBolt);
        }
        Extension.FightSpell(EarthShock);
        if (Me.ManaPercentage > 40)
        {
            Extension.BuffSpell(LightningShield);
        }
    }
    internal static void CombatRotation()
    {
        bool    _lowMana             = Me.ManaPercentage <= _lowManaThreshold;
        bool    _mediumMana          = Me.ManaPercentage >= _mediumManaThreshold;
        bool    _isPoisoned          = ToolBox.HasPoisonDebuff();
        bool    _hasDisease          = ToolBox.HasDiseaseDebuff();
        bool    _shouldBeInterrupted = false;
        WoWUnit Target = ObjectManager.Target;

        // Check Auto-Attacking
        ToolBox.CheckAutoAttack(Attack);

        // Check if we need to interrupt
        int channelTimeLeft = Lua.LuaDoString <int>(@"local spell, _, _, _, endTimeMS = UnitChannelInfo('target')
                                    if spell then
                                     local finish = endTimeMS / 1000 - GetTime()
                                     return finish
                                    end");

        if (channelTimeLeft < 0 || Target.CastingTimeLeft > Usefuls.Latency)
        {
            _shouldBeInterrupted = true;
        }

        // Melee ?
        if (_pullMeleeTimer.ElapsedMilliseconds > 0)
        {
            _pullMeleeTimer.Reset();
        }

        if (_meleeTimer.ElapsedMilliseconds <= 0 &&
            !_goInMelee)
        {
            _meleeTimer.Start();
        }

        if ((_shouldBeInterrupted || _meleeTimer.ElapsedMilliseconds > 8000) &&
            !_goInMelee)
        {
            Main.LogDebug("Going in melee range");
            if (!_casterEnemies.Contains(Target.Name))
            {
                _casterEnemies.Add(Target.Name);
            }
            _fightingACaster = true;
            _goInMelee       = true;
            _meleeTimer.Stop();
        }

        // Shamanistic Rage
        if (!_mediumMana &&
            ((Target.HealthPercent > 80 && !_settings.ShamanisticRageOnMultiOnly) || ObjectManager.GetNumberAttackPlayer() > 1))
        {
            if (Cast(ShamanisticRage))
            {
                return;
            }
        }

        // Gift of the Naaru
        if (ObjectManager.GetNumberAttackPlayer() > 1 &&
            Me.HealthPercent < 50)
        {
            if (Cast(GiftOfTheNaaru))
            {
                return;
            }
        }

        // Blood Fury
        if (Target.HealthPercent > 70)
        {
            if (Cast(BloodFury))
            {
                return;
            }
        }

        // Berserking
        if (Target.HealthPercent > 70)
        {
            if (Cast(Berserking))
            {
                return;
            }
        }

        // Warstomp
        if (ObjectManager.GetNumberAttackPlayer() > 1 &&
            Target.GetDistance < 8)
        {
            if (Cast(WarStomp))
            {
                return;
            }
        }

        // Lesser Healing Wave
        if (Me.HealthPercent < 50 &&
            LesserHealingWave.KnownSpell &&
            (Target.HealthPercent > 15 || Me.HealthPercent < 25))
        {
            if (Cast(LesserHealingWave))
            {
                return;
            }
        }

        // Healing Wave
        if (Me.HealthPercent < 50 &&
            !LesserHealingWave.KnownSpell &&
            (Target.HealthPercent > 15 || Me.HealthPercent < 25))
        {
            if (Cast(HealingWave))
            {
                return;
            }
        }

        // Cure Poison
        if (_isPoisoned && !_lowMana)
        {
            Thread.Sleep(Main._humanReflexTime);
            if (Cast(CurePoison))
            {
                return;
            }
        }

        // Cure Disease
        if (_hasDisease && !_lowMana)
        {
            Thread.Sleep(Main._humanReflexTime);
            if (Cast(CureDisease))
            {
                return;
            }
        }

        // Lightning Shield
        if (!_lowMana && !Me.HaveBuff("Lightning Shield") &&
            !Me.HaveBuff("Water Shield") &&
            _settings.UseLightningShield &&
            (!WaterShield.KnownSpell || !_settings.UseWaterShield))
        {
            if (Cast(LightningShield))
            {
                return;
            }
        }

        // Earth Shock Focused
        if (Me.HaveBuff("Focused") &&
            Target.GetDistance < 19f)
        {
            if (Cast(EarthShock))
            {
                return;
            }
        }

        // Frost Shock
        if ((Target.CreatureTypeTarget == "Humanoid" || Target.Name.Contains("Plainstrider")) &&
            _settings.FrostShockHumanoids &&
            Target.HealthPercent < 40 &&
            !Target.HaveBuff("Frost Shock"))
        {
            if (Cast(FrostShock))
            {
                return;
            }
        }

        // Earth Shock Interupt Rank 1
        if (_shouldBeInterrupted &&
            Target.GetDistance < 19f &&
            (_settings.InterruptWithRankOne || _lowMana))
        {
            _fightingACaster = true;
            if (!_casterEnemies.Contains(Target.Name))
            {
                _casterEnemies.Add(Target.Name);
            }
            Thread.Sleep(Main._humanReflexTime);
            Lua.RunMacroText("/cast Earth Shock(Rank 1)");
            return;
        }

        // Earth Shock Interupt
        if (_shouldBeInterrupted &&
            Target.GetDistance < 19f &&
            !_settings.InterruptWithRankOne)
        {
            if (!_casterEnemies.Contains(Target.Name))
            {
                _casterEnemies.Add(Target.Name);
            }
            _fightingACaster = true;
            Thread.Sleep(Main._humanReflexTime);
            if (Cast(EarthShock))
            {
                return;
            }
        }

        // Water Shield
        if (!Me.HaveBuff("Water Shield") &&
            !Me.HaveBuff("Lightning Shield") &&
            (_settings.UseWaterShield || !_settings.UseLightningShield || _lowMana))
        {
            if (Cast(WaterShield))
            {
                return;
            }
        }

        // Flame Shock DPS
        if (!_lowMana &&
            Target.GetDistance < 19f &&
            !Target.HaveBuff("Flame Shock") &&
            Target.HealthPercent > 20 &&
            !_fightingACaster &&
            _settings.UseFlameShock)
        {
            if (Cast(FlameShock))
            {
                return;
            }
        }

        // Totems
        if (!_lowMana &&
            Target.GetDistance < 20)
        {
            if (totemManager.CastTotems())
            {
                return;
            }
        }

        // Stormstrike
        if (!_lowMana &&
            Stormstrike.IsDistanceGood)
        {
            if (Cast(Stormstrike))
            {
                return;
            }
        }

        // Earth Shock DPS
        if (!_lowMana &&
            Target.GetDistance < 19f &&
            !FlameShock.KnownSpell &&
            Target.HealthPercent > 25 &&
            Me.ManaPercentage > 30)
        {
            if (Cast(EarthShock))
            {
                return;
            }
        }

        // Low level lightning bolt
        if (!EarthShock.KnownSpell &&
            Me.ManaPercentage > 30 &&
            !_lowMana &&
            Target.GetDistance < 29f &&
            Target.HealthPercent > 40)
        {
            if (Cast(LightningBolt))
            {
                return;
            }
        }
    }
Esempio n. 3
0
    internal static void EnhancementRotation()
    {
        bool Poison  = Extension.HasPoisonDebuff();
        bool Disease = Extension.HasDiseaseDebuff();

        if (Extension.InterruptableUnit(10f) != null && WindShear.KnownSpell && WindShear.IsSpellUsable)
        {
            Logging.Write("Interrupt Target found");
            ObjectManager.Me.FocusGuid = Extension.InterruptableUnit(10f).Guid;
            Logging.Write("Interrupt Target Set" + Extension.InterruptableUnit(10f).Guid);
            Extension.FightSpell(WindShear, true);
        }

        if (Me.HealthPercent < 30 && MyTarget.HealthPercent > ShamanLevelSettings.CurrentSetting.Enemylife)
        {
            Extension.HealSpell(HealingWave);
        }
        if (Poison)
        {
            Extension.BuffSpell(CurePoison);
        }
        if (Disease)
        {
            Extension.BuffSpell(CurePoison);
        }
        if (Extension.GetAttackingUnits(20).Count() > 1)
        {
            Extension.FightSpell(FeralSpirit);
        }

        if (Me.Level < 10)
        {
            if (lowlevel != true)
            {
                lowlevel = true;
            }

            if (MyTarget.GetDistance < 20)
            {
                TotemManager.CastTotems();
            }
            if (Me.Level < 4)
            {
                Extension.FightSpell(LightningBolt);
            }
            if (MyTarget.GetDistance > 7)
            {
                Extension.FightSpell(LightningBolt);
            }
            Extension.FightSpell(EarthShock);
            if (Me.ManaPercentage > 40)
            {
                Extension.BuffSpell(LightningShield);
            }
        }
        if (Me.Level > 9 && Me.Level < 20)
        {
            if (lowlevel != true)
            {
                lowlevel = true;
            }
            if (MyTarget.GetDistance < 20)
            {
                TotemManager.CastTotems();
            }
            //_lastTotemPosition.DistanceTo(ObjectManager.Me.Position)

            //if (_fireTotemPosition.DistanceTo(Me.Position) < 10 && Extension.GetAttackingUnits(5).Count() > 1 && ShamanLevelSettings.CurrentSetting.UseFireNova)
            //{
            //    Extension.FightSpell(FireNova);
            //}
            if (MyTarget.GetDistance > 7)
            {
                Extension.FightSpell(LightningBolt);
            }
            if (!FlameShock.KnownSpell)
            {
                Extension.FightSpell(EarthShock);
            }
            Extension.FightSpell(FlameShock);
            if (Me.ManaPercentage > 40)
            {
                Extension.BuffSpell(LightningShield);
            }
        }
        if (Me.Level > 19 && Me.Level < 40)
        {
            if (lowlevel == true)
            {
                lowlevel = false;
            }
            if (MyTarget.GetDistance < 20)
            {
                TotemManager.CotE();
                TotemManager.CastTotems();
            }
            if (MyTarget.GetDistance > 20)
            {
                Extension.FightSpell(LightningBolt);
            }
            Extension.FightSpell(EarthShock);
            if (Me.ManaPercentage < 20)
            {
                Extension.BuffSpell(WaterShield);
            }
            if (Me.ManaPercentage > 20 && !Me.HaveBuff(WaterShield.Id))
            {
                Extension.BuffSpell(LightningShield);
            }
        }
        if (Me.Level > 39 && Me.Level < 50)
        {
            if (MyTarget.GetDistance < 20)
            {
                TotemManager.CotE();
                TotemManager.CastTotems();
            }
            if (lowlevel == true)
            {
                lowlevel = false;
            }
            if (MyTarget.GetDistance > 20)
            {
                Extension.FightSpell(LightningBolt);
            }
            Extension.FightSpell(Stormstrike);
            Extension.FightSpell(EarthShock);
            Extension.FightSpell(LavaLash);
            if (Me.ManaPercentage < 20)
            {
                Extension.BuffSpell(WaterShield);
            }
            if (Me.ManaPercentage > 20 && !Me.HaveBuff(WaterShield.Id))

            {
                Extension.BuffSpell(LightningShield);
            }
        }
        if (Me.Level > 49 && Me.Level <= 80)
        {
            if (lowlevel == true)
            {
                lowlevel = false;
            }
            if (MyTarget.GetDistance < 20)
            {
                TotemManager.CotE();
                TotemManager.CastTotems();
            }
            if (MyTarget.GetDistance > 20 && ShamanLevelSettings.CurrentSetting.LNB)
            {
                Extension.FightSpell(LightningBolt);
            }
            if (Me.BuffStack(53817) >= 4)
            {
                if (Extension.GetAttackingUnits(5).Count() == 1)
                {
                    Extension.FightSpell(LightningBolt);
                }
                if (Extension.GetAttackingUnits(5).Count() > 1)
                {
                    Extension.FightSpell(ChainLightning);
                }
            }
            if (MyTarget.GetDistance < 7)
            {
                Extension.BuffSpell(ShamanisticRage);
            }
            Extension.FightSpell(Stormstrike);
            Extension.FightSpell(EarthShock);
            Extension.FightSpell(LavaLash);
            if (Me.ManaPercentage < 30)
            {
                Extension.BuffSpell(WaterShield);
            }
            if (Me.ManaPercentage > 30 && !Me.HaveBuff(WaterShield.Id))

            {
                Extension.BuffSpell(LightningShield);
            }
        }
    }