public static Obj_AI_Base GetTarget(Vector3 fromPosition)
{
var HeroList = EntityManager.Heroes.Enemies.Where(
h =>
h.IsValidTarget(Manager.SpellManager.E.Range) &&
!h.HasBuffOfType(BuffType.SpellShield) &&
!h.HasBuffOfType(BuffType.SpellImmunity));
//dz191.vhr.misc.condemn.rev.accuracy
//dz191.vhr.misc.condemn.rev.nextprediction
var MinChecksPercent = Manager.MenuManager.CondemnHitchance;
var PushDistance = Manager.MenuManager.CondemnPushDistance;
if (PushDistance >= 410)
{
var PushEx = PushDistance;
PushDistance -= (10 + (PushEx - 410) / 2);
}
if (Variables.UnderEnemyTower((Vector2)Variables._Player.ServerPosition))
{
return null;
}
foreach (var Hero in HeroList)
{
if (Manager.MenuManager.OnlyStunCurrentTarget &&
Hero.NetworkId != TargetSelector.GetTarget((int)Variables._Player.GetAutoAttackRange(), DamageType.Physical).NetworkId)
{
continue;
}
if (Hero.Health + 10 <=
Variables._Player.GetAutoAttackDamage(Hero) *
Manager.MenuManager.CondemnBlock)
{
continue;
}
var targetPosition = Manager.SpellManager.E2.GetPrediction(Hero).UnitPosition;
var finalPosition = targetPosition.Extend(Variables._Player.ServerPosition, -PushDistance);
var finalPosition_ex = Hero.ServerPosition.Extend(Variables._Player.ServerPosition, -PushDistance);
var condemnRectangle = new AJSGeometry.AJSPolygon(AJSGeometry.AJSPolygon.Rectangle(targetPosition.To2D(), finalPosition, Hero.BoundingRadius));
var condemnRectangle_ex = new AJSGeometry.AJSPolygon(AJSGeometry.AJSPolygon.Rectangle(Hero.ServerPosition.To2D(), finalPosition_ex, Hero.BoundingRadius));
if (IsBothNearWall(Hero))
{
return null;
}
if (condemnRectangle.Points.Count(point => NavMesh.GetCollisionFlags(point.X, point.Y).HasFlag(CollisionFlags.Wall)) >= condemnRectangle.Points.Count() * (MinChecksPercent / 100f)
&& condemnRectangle_ex.Points.Count(point => NavMesh.GetCollisionFlags(point.X, point.Y).HasFlag(CollisionFlags.Wall)) >= condemnRectangle_ex.Points.Count() * (MinChecksPercent / 100f))
{
return Hero;
}
}
return null;
}