Aka_s_Vayne.Logic.VHRevolution.GetTarget C# (CSharp) Method

GetTarget() public static method

public static GetTarget ( System.Vector3 fromPosition ) : Obj_AI_Base
fromPosition System.Vector3
return Obj_AI_Base
        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;
        }

Usage Example

示例#1
0
        public static Obj_AI_Base GetCondemnTarget(Vector3 fromPosition)
        {
            switch (Manager.MenuManager.CondemnMode)
            {
            case 0:
                //VH Revolution
                return(Shine.GetTarget(fromPosition));

            case 1:
                //VH Reborn
                return(VHReborn.GetTarget(fromPosition));

            case 2:
                //Marksman / Gosu
                return(Marksman.GetTarget(fromPosition));

            case 3:
                //Shine#
                return(VHRevolution.GetTarget(fromPosition));
            }
            return(null);
        }