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