public static Vector3 GetMinionBlockedPoint(this AIHeroClient enemyHero, float extraDistance)
{
var minions = enemyHero.Team == Player.EnemyTeam ? Ally.AllMinions.Where(x => x.Position.InWhatRegion() == Player.RegionIn).ToList() : Enemy.GetNearbyMinions(); // Hero is enemy team, so return my minions, else return enemy minions.
Vector3 safePoint;
if (minions.Count > 0)
{
float totalX = minions.Select(x => x.Position.X).Sum();
float totalY = minions.Select(y => y.Position.Y).Sum();
float averageX = totalX/minions.Count;
float averageY = totalY/minions.Count;
var newPoint = new Vector2(averageX, averageY).To3D(); // Point within minions
var heroPos = enemyHero.Position;
safePoint = heroPos.Extend(newPoint, newPoint.Distance(heroPos) + extraDistance).To3D();
}
else
{
safePoint = Player.Posistion;
//TODO: safe distance from enemy, or put that in new function?
}
return safePoint;
}
}