ArcAnnihilation.Core.DoCombo C# (CSharp) Метод

DoCombo() приватный статический Метод

private static DoCombo ( Hero me, Hero target ) : void
me Hero
target Hero
Результат void
        private static void DoCombo(Hero me, Hero target)
        {
            var distance = me.Distance2D(target);
            IEnumerable<Item> inv;
            Item[] enumerable;
            bool dagger;
            double targetHull = target.HullRadius;
            if (Menu.Item("order").GetValue<StringList>().SelectedIndex == (int) Orders.Caster &&
                !Menu.Item("hotkeyClone").GetValue<KeyBind>().Active)
            {
                foreach (var hero in Objects.Tempest.GetCloneList(me))
                {
                    var d = hero.Distance2D(target) - _myHull - targetHull;
                    inv = hero.Inventory.Items;
                    enumerable = inv as Item[] ?? inv.ToArray();
                    dagger =
                        enumerable.Any(
                            x =>
                                x.Name == "item_blink" && x.Cooldown == 0 &&
                                SpellBaseList.Find(z => z.Name == x.StoredName()) == null);
                    // uses all items available
                    if (!hero.IsInvisible())
                        if (ItemUsage(hero, enumerable, target, d,
                            Menu.Item("BkbUsage").GetValue<StringList>().SelectedIndex == (int)BkbUsage.Clones ||
                            Menu.Item("BkbUsage").GetValue<StringList>().SelectedIndex == (int)BkbUsage.All, true))
                            SpellsUsage(hero, target, d, dagger, true);

                    /*SpellsUsage(hero, target, d, dagger, true);
                    ItemUsage(hero, enumerable, target, d,
                        Menu.Item("BkbUsage").GetValue<StringList>().SelectedIndex == (int) BkbUsage.Clones ||
                        Menu.Item("BkbUsage").GetValue<StringList>().SelectedIndex == (int) BkbUsage.All, true);*/
                    if (Menu.Item("OrbWalking.Enable").GetValue<bool>() && OrbMinDist < hero.Distance2D(target))
                    {
                        Orbwalk(hero, target);
                    }
                    else
                    {
                        if (!Utils.SleepCheck("clone_attacking" + hero.Handle)) continue;
                        hero.Attack(target);
                        Utils.Sleep(350, "clone_attacking" + hero.Handle);
                    }
                    /*
                    if (Menu.Item("OrbWalking.Enable").GetValue<bool>())
                    {
                        Orbwalk(hero, target);
                    }
                    else
                    {
                        if (!Utils.SleepCheck("clone_attacking" + hero.Handle)) continue;
                        hero.Attack(target);
                        Utils.Sleep(350, "clone_attacking" + hero.Handle);
                    }*/
                }
            }
            var illusions =
                ObjectManager.GetEntities<Hero>()
                    .Where(
                        x =>
                            x.IsAlive && x.IsControllable && x.Team == me.Team && x.IsIllusion &&
                            !x.HasModifier("modifier_kill"))
                    .ToList();
            foreach (var illusion in illusions.TakeWhile(illusion => Utils.SleepCheck("clone_attacking" + illusion.Handle)))
            {
                illusion.Attack(target);
                Utils.Sleep(350, "clone_attacking" + illusion.Handle);
            }
            var necr = Objects.Necronomicon.GetNecronomicons(me);
            foreach (
                var necronomicon in
                    necr.TakeWhile(
                        illusion =>
                            Utils.SleepCheck("clone_attacking" + illusion.Handle) && illusion.Distance2D(target) <= 1500 &&
                            !Equals(illusion, me)))
            {
                necronomicon.Attack(target);
                var spell = necronomicon.Spellbook.Spell1;

                if (spell != null && spell.CanBeCasted(target) &&
                    necronomicon.Distance2D(target) <= spell.CastRange + necronomicon.HullRadius + targetHull &&
                    Utils.SleepCheck(spell.Name + "clone_attacking" + necronomicon.Handle))
                {
                    spell.UseAbility(target);
                    Utils.Sleep(300, spell.Name + "clone_attacking" + necronomicon.Handle);
                }
                Utils.Sleep(600, "clone_attacking" + necronomicon.Handle);
            }
            if (!me.IsAlive) return;
            inv = me.Inventory.Items;
            enumerable = inv as Item[] ?? inv.ToArray();
            dagger = enumerable.Any(x=>x.Name=="item_blink" && x.Cooldown==0);
            SpellsUsage(me, target, distance, dagger,false);
            ItemUsage(me,enumerable, target, distance,
                Menu.Item("BkbUsage").GetValue<StringList>().SelectedIndex == (int) BkbUsage.Me ||
                Menu.Item("BkbUsage").GetValue<StringList>().SelectedIndex == (int) BkbUsage.All);
            //Orbwalk(me,target);
            if (Menu.Item("OrbWalking.Enable").GetValue<bool>() && OrbMinDist < me.Distance2D(target))
            {
                Orbwalk(me, target);
            }
            else
            {
                if (!Utils.SleepCheck("clone_attacking" + me.Handle)) return;
                me.Attack(target);
                Utils.Sleep(350, "clone_attacking" + me.Handle);
            }
        }