ArcAnnihilation.Core.SpellsUsage C# (CSharp) Method

SpellsUsage() private static method

private static SpellsUsage ( Hero me, Hero target, double distance, bool daggerIsReady, bool tempest ) : void
me Hero
target Hero
distance double
daggerIsReady bool
tempest bool
return void
        private static void SpellsUsage(Hero me, Hero target, double distance, bool daggerIsReady, bool tempest)
        {
            var spellbook = me.Spellbook;
            var q = spellbook.SpellQ;
            var w = spellbook.SpellW;
            var e = spellbook.SpellE;

            if (q != null && IsAbilityEnable(q.StoredName(), tempest) && q.CanBeCasted() && q.CanHit(target) &&
                Utils.SleepCheck(me.Handle + q.Name))
            {
                q.UseAbility(target);
                Utils.Sleep(500, me.Handle + q.Name);
            }
            if (w != null && IsAbilityEnable(w.StoredName(), tempest) && w.CanBeCasted() && Utils.SleepCheck(w.Name) &&
                !me.HasModifier("modifier_arc_warden_magnetic_field") && distance <= 600 && !daggerIsReady)
            {
                if (!Menu.Item("MagneticField").GetValue<bool>() && target.IsMelee)
                {
                    Utils.Sleep(500, "magField");
                    w.UseAbility(Prediction.InFront(me, -250));
                }
                else
                    w.UseAbility(Prediction.InFront(me, 250));
                Utils.Sleep(500, w.Name);
            }
            if (e != null && IsAbilityEnable(e.StoredName(), tempest) && e.CanBeCasted() &&
                Utils.SleepCheck(me.Handle + e.Name) && !daggerIsReady && !Prediction.IsTurning(target) && (!SparkUsage || me.IsVisibleToEnemies))
            {
                var predVector3 = target.NetworkActivity == NetworkActivity.Move &&
                                  Menu.Item("usePrediction").GetValue<bool>()
                    ? Prediction.InFront(target, target.MovementSpeed*3 + Game.Ping/1000)
                    : target.Position;
                e.UseAbility(predVector3);
                Utils.Sleep(1000, me.Handle + e.Name);
            }

            var r = me.Spellbook.SpellR;
            if (!IsAbilityEnable(r.StoredName(), tempest))
                return;
            if (r == null || !IsAbilityEnable(r.StoredName(), tempest) || !r.CanBeCasted() ||
                !Utils.SleepCheck(me.Handle + r.Name) || distance > 900 || Objects.Tempest.GetCloneList(me).Any())
                return;
            r.UseAbility();
            Utils.Sleep(500, me.Handle + r.Name);
        }