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

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

private static SmartAttack ( Unit me, List myCreeps, Unit nearestTower, System.Vector3 pos ) : void
me Unit
myCreeps List
nearestTower Unit
pos System.Vector3
Результат void
        private static void SmartAttack(Unit me, List<Unit> myCreeps, Unit nearestTower, Vector3 pos)
        {
            var name = me.StoredName();
            if (Menu.Item("AutoPush.UnAggro.Enable").GetValue<bool>() &&
                myCreeps.Any(x => x.Distance2D(nearestTower) <= 800) && me.Distance2D(nearestTower) <= 1000)
            {
                var hpwasChanged = CheckForChangedHealth(me);
                if (hpwasChanged)
                {
                    var allyCreep = myCreeps.OrderBy(x => x.Distance2D(me)).First();
                    if (allyCreep != null)
                    {
                        var towerPos = nearestTower.Position;
                        var ang = allyCreep.FindAngleBetween(towerPos, true);
                        var p = new Vector3((float) (allyCreep.Position.X - 250*Math.Cos(ang)),
                            (float) (allyCreep.Position.Y - 250*Math.Sin(ang)), 0);
                        me.Move(p);
                        me.Attack(allyCreep, true);
                        Utils.Sleep(1200, name + "attack");
                    }
                    else
                    {
                        var towerPos = nearestTower.Position;
                        var ang = me.FindAngleBetween(towerPos, true);
                        var p = new Vector3((float) (me.Position.X - 1000*Math.Cos(ang)),
                            (float) (me.Position.Y - 1000*Math.Sin(ang)), 0);
                        me.Move(p);
                        Utils.Sleep(500, name + "attack");
                    }
                }
                else
                {
                    me.Attack(pos);
                    Utils.Sleep(500, name + "attack");
                }
            }
            else
            {
                me.Attack(pos);
                Utils.Sleep(500, name + "attack");
            }
        }