internal AIHeroClient GetTarget(Vector3 position = default(Vector3)) { var HeroList = EntityManager.Heroes.Enemies.Where( h => h.IsValidTarget(Variables.E.Range) && !h.HasBuffOfType(BuffType.SpellShield) && !h.HasBuffOfType(BuffType.SpellImmunity)); var Accuracy = 38; var PushDistance = 425; if (ObjectManager.Player.ServerPosition.UnderTurret(true)) { return(null); } var currentTarget = Orbwalker.GetTarget(); if (EntityManager.Heroes.Allies.Count(ally => !ally.IsMe && ally.IsValidTarget(1500f, false)) == 0 && ObjectManager.Player.CountEnemiesInRange(1500f) == 1) { //It's a 1v1 situation. We push condemn to the limit and lower the accuracy by 5%. Accuracy = 33; PushDistance = 460; } var startPosition = position != default(Vector3) ? position : ObjectManager.Player.ServerPosition; foreach (var Hero in HeroList) { if (MenuGenerator.EMenu["TDVaynemisccondemncurrent"].Cast <CheckBox>().CurrentValue&& !(MenuGenerator.EMenu["TDVaynemisccondemnautoe"].Cast <CheckBox>().CurrentValue)) { if (Hero.NetworkId != currentTarget.NetworkId) { continue; } } if (Hero.Health + 10 <= ObjectManager.Player.GetAutoAttackDamage(Hero) * 2) { continue; } Spell.Skillshot E = new Spell.Skillshot(SpellSlot.E, 550, SkillShotType.Linear, (int)0.25f, (int?)2200f); var prediction = Prediction.Position.PredictLinearMissile(Hero, E.Range, E.Width, E.CastDelay, E.Speed, int.MaxValue); var targetPosition = prediction.UnitPosition; var finalPosition = targetPosition.Extend(startPosition, -PushDistance); var finalPosition_ex = Hero.ServerPosition.Extend(startPosition, -PushDistance); var finalPosition_3 = prediction.CastPosition.Extend(startPosition, -PushDistance); //Yasuo Wall Logic if (YasuoWall.CollidesWithWall(startPosition, Hero.ServerPosition.Extend(startPosition, -450f).To3D())) { continue; } //Condemn to turret logic if ( GameObjects.AllyTurrets.Any( m => m.IsValidTarget(float.MaxValue, false) && m.Distance(finalPosition) <= 450f)) { var turret = GameObjects.AllyTurrets.FirstOrDefault( m => m.IsValidTarget(float.MaxValue, false) && m.Distance(finalPosition) <= 450f); if (turret != null) { var enemies = GameObjects.Enemy.Where(m => m.Distance(turret) < 775f && m.IsValidTarget()); if (!enemies.Any()) { return(Hero); } } } //Condemn To Wall Logic var condemnRectangle = new SOLOPolygon(SOLOPolygon.Rectangle(targetPosition.To2D(), finalPosition, Hero.BoundingRadius)); var condemnRectangle_ex = new SOLOPolygon(SOLOPolygon.Rectangle(Hero.ServerPosition.To2D(), finalPosition_ex, Hero.BoundingRadius)); var condemnRectangle_3 = new SOLOPolygon(SOLOPolygon.Rectangle(prediction.CastPosition.To2D(), finalPosition_3, Hero.BoundingRadius)); if (IsBothNearWall(Hero)) { return(null); } if ( condemnRectangle.Points.Count( point => NavMesh.GetCollisionFlags(point.X, point.Y).HasFlag(CollisionFlags.Wall)) >= condemnRectangle.Points.Count() * (Accuracy / 100f) || condemnRectangle_ex.Points.Count( point => NavMesh.GetCollisionFlags(point.X, point.Y).HasFlag(CollisionFlags.Wall)) >= condemnRectangle_ex.Points.Count() * (Accuracy / 100f) || condemnRectangle_3.Points.Count( point => NavMesh.GetCollisionFlags(point.X, point.Y).HasFlag(CollisionFlags.Wall)) >= condemnRectangle_ex.Points.Count() * (Accuracy / 100f)) { return(Hero); } } return(null); }
/// <summary> /// Gets the target. /// </summary> /// <param name="position">The starting position.</param> /// <returns>The condemn target or null</returns> internal AIHeroClient GetTarget(Vector3 position = default(Vector3)) { var HeroList = HeroManager.Enemies.Where(h => h.LSIsValidTarget(Vayne.Program.E.Range) && !h.HasBuffOfType(BuffType.SpellShield) && !h.HasBuffOfType(BuffType.SpellImmunity)); var Accuracy = 38; var PushDistance = 425; if (ObjectManager.Player.ServerPosition.UnderTurret(true)) { return(null); } var currentTarget = EloBuddy.SDK.TargetSelector.SelectedTarget; if (HeroManager.Allies.Count(ally => !ally.IsMe && ally.LSIsValidTarget(1500f, false)) == 0 && ObjectManager.Player.LSCountEnemiesInRange(1500f) == 1) { Accuracy = 33; PushDistance = 460; } var startPosition = position != default(Vector3) ? position : ObjectManager.Player.ServerPosition; foreach (var Hero in HeroList) { if (Hero.Health + 10 <= ObjectManager.Player.GetAutoAttackDamage(Hero) * 2) { continue; } var prediction = Vayne.Program.E2.GetPrediction(Hero); var targetPosition = prediction.UnitPosition; var finalPosition = targetPosition.Extend(startPosition, -PushDistance); var finalPosition_ex = Hero.ServerPosition.Extend(startPosition, -PushDistance); var finalPosition_3 = prediction.CastPosition.Extend(startPosition, -PushDistance); //Yasuo Wall Logic if (YasuoWall.CollidesWithWall(startPosition, Hero.ServerPosition.Extend(startPosition, -450f).To3D())) { continue; } //Condemn to turret logic if (GameObjects.AllyTurrets.Any(m => m.IsValidTarget(float.MaxValue, false) && m.Distance(finalPosition) <= 450f)) { var turret = GameObjects.AllyTurrets.FirstOrDefault( m => m.IsValidTarget(float.MaxValue, false) && m.Distance(finalPosition) <= 450f); if (turret != null) { var enemies = GameObjects.Enemy.Where(m => m.Distance(turret) < 775f && m.IsValidTarget()); if (!enemies.Any()) { return(Hero); } } } //Condemn To Wall Logic var condemnRectangle = new SOLOPolygon(SOLOPolygon.Rectangle(targetPosition.To2D(), finalPosition, Hero.BoundingRadius)); var condemnRectangle_ex = new SOLOPolygon(SOLOPolygon.Rectangle(Hero.ServerPosition.To2D(), finalPosition_ex, Hero.BoundingRadius)); var condemnRectangle_3 = new SOLOPolygon(SOLOPolygon.Rectangle(prediction.CastPosition.To2D(), finalPosition_3, Hero.BoundingRadius)); if (IsBothNearWall(Hero)) { return(null); } if (condemnRectangle.Points.Count(point => NavMesh.GetCollisionFlags(point.X, point.Y).HasFlag(CollisionFlags.Wall)) >= condemnRectangle.Points.Count() * (Accuracy / 100f) || condemnRectangle_ex.Points.Count(point => NavMesh.GetCollisionFlags(point.X, point.Y).HasFlag(CollisionFlags.Wall)) >= condemnRectangle_ex.Points.Count() * (Accuracy / 100f) || condemnRectangle_3.Points.Count(point => NavMesh.GetCollisionFlags(point.X, point.Y).HasFlag(CollisionFlags.Wall)) >= condemnRectangle_ex.Points.Count() * (Accuracy / 100f)) { return(Hero); } } return(null); }
/// <summary> /// Gets the target. /// </summary> /// <param name="position">The starting position.</param> /// <returns>The condemn target or null</returns> internal Obj_AI_Hero GetTarget(Vector3 position = default(Vector3)) { var HeroList = HeroManager.Enemies.Where( h => h.IsValidTarget(Variables.spells[SpellSlot.E].Range) && !h.HasBuffOfType(BuffType.SpellShield) && !h.HasBuffOfType(BuffType.SpellImmunity)); var Accuracy = 38; var PushDistance = 425; if (ObjectManager.Player.ServerPosition.UnderTurret(true)) { return(null); } var currentTarget = Variables.Orbwalker.GetTarget(); if (HeroManager.Allies.Count(ally => !ally.IsMe && ally.IsValidTarget(1500f, false)) == 0 && ObjectManager.Player.CountEnemiesInRange(1500f) == 1) { //It's a 1v1 situation. We push condemn to the limit and lower the accuracy by 5%. Accuracy = 33; PushDistance = 460; } var startPosition = position != default(Vector3) ? position : ObjectManager.Player.ServerPosition; foreach (var Hero in HeroList) { if (MenuExtensions.GetItemValue <bool>("solo.vayne.misc.condemn.current") && !(MenuExtensions.GetItemValue <bool>("solo.vayne.misc.condemn.autoe"))) { if (Hero.NetworkId != currentTarget.NetworkId) { continue; } } if (Hero.Health + 10 <= ObjectManager.Player.GetAutoAttackDamage(Hero) * 2) { continue; } var prediction = Variables.spells[SpellSlot.E].GetPrediction(Hero); var targetPosition = prediction.UnitPosition; var finalPosition = targetPosition.Extend(startPosition, -PushDistance); var finalPosition_ex = Hero.ServerPosition.Extend(startPosition, -PushDistance); var finalPosition_3 = prediction.CastPosition.Extend(startPosition, -PushDistance); //Yasuo Wall Logic if (YasuoWall.CollidesWithWall(startPosition, Hero.ServerPosition.Extend(startPosition, -450f))) { continue; } //Condemn to turret logic if (GameObjects.AllyTurrets.Any(m => m.IsValidTarget(float.MaxValue, false) && m.Distance(finalPosition) <= 450f)) { var turret = GameObjects.AllyTurrets.FirstOrDefault( m => m.IsValidTarget(float.MaxValue, false) && m.Distance(finalPosition) <= 450f); if (turret != null) { var enemies = GameObjects.Enemy.Where(m => m.Distance(turret) < 775f && m.IsValidTarget()); if (!enemies.Any()) { return(Hero); } } } //Condemn To Wall Logic var condemnRectangle = new SOLOPolygon(SOLOPolygon.Rectangle(targetPosition.To2D(), finalPosition.To2D(), Hero.BoundingRadius)); var condemnRectangle_ex = new SOLOPolygon(SOLOPolygon.Rectangle(Hero.ServerPosition.To2D(), finalPosition_ex.To2D(), Hero.BoundingRadius)); var condemnRectangle_3 = new SOLOPolygon(SOLOPolygon.Rectangle(prediction.CastPosition.To2D(), finalPosition_3.To2D(), Hero.BoundingRadius)); if (IsBothNearWall(Hero)) { return(null); } if (condemnRectangle.Points.Count(point => NavMesh.GetCollisionFlags(point.X, point.Y).HasFlag(CollisionFlags.Wall)) >= condemnRectangle.Points.Count() * (Accuracy / 100f) || condemnRectangle_ex.Points.Count(point => NavMesh.GetCollisionFlags(point.X, point.Y).HasFlag(CollisionFlags.Wall)) >= condemnRectangle_ex.Points.Count() * (Accuracy / 100f) || condemnRectangle_3.Points.Count(point => NavMesh.GetCollisionFlags(point.X, point.Y).HasFlag(CollisionFlags.Wall)) >= condemnRectangle_ex.Points.Count() * (Accuracy / 100f)) { return(Hero); } } return(null); }