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