Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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;
        }