示例#1
0
        public static void WardTrickLogic()
        {
            if (Q.IsReady() && Player.Mana >= Q.ManaCost)
            {
                SkyLv_Jax.WardPos = Game.CursorPos;
                Obj_AI_Minion WardObject;
                if (Game.CursorPos.Distance(Player.Position) <= 700)
                {
                    WardObject = ObjectManager.Get <Obj_AI_Minion>().Where(Ward => Ward.Distance(Game.CursorPos) < 200 && !Ward.IsDead && Ward.Name.ToLower().Contains("ward")).FirstOrDefault();
                }
                else
                {
                    Vector3 DWpos = Game.CursorPos - Player.ServerPosition;
                    DWpos.Normalize();
                    SkyLv_Jax.WardPos = Player.ServerPosition + DWpos * (600);
                    WardObject        = ObjectManager.Get <Obj_AI_Minion>().Where(Ward => Ward.Distance(SkyLv_Jax.WardPos) < 200 && !Ward.IsDead && Ward.Name.ToLower().Contains("ward")).FirstOrDefault();
                }

                if (WardObject == null)
                {
                    if (!SkyLv_Jax.WardPos.IsWall())
                    {
                        InventorySlot WardSlot = Items.GetWardSlot();
                        Items.UseItem((int)WardSlot.Id, SkyLv_Jax.WardPos);
                    }
                }

                else if (WardObject != null)
                {
                    Q.CastOnUnit(WardObject);
                }
            }
        }
示例#2
0
文件: Flee.cs 项目: wade1990/PortAIO
        public static void FleeMode(Vector2 Position, float MinimumRange, float MaximumRange, bool WardTrick = false, List <AIHeroClient> ignore = null)
        {
            if (!Q.IsReady() || Player.Mana < Q.ManaCost)
            {
                return;
            }

            Vector2     PlayerPosition    = Player.ServerPosition.To2D();
            Obj_AI_Base BestDashingTarget = null;

            Vector2 BestLocaltion = PlayerPosition + (Vector2.Normalize(Position - PlayerPosition) * (Player.MoveSpeed * 0.35f));
            float   BestDistance  = Position.Distance(PlayerPosition) - 50;

            foreach (Obj_AI_Base PotancialTarget in ObjectManager.Get <Obj_AI_Base>().Where(target => !target.IsDead && target.IsTargetable && target.IsValidTarget()))
            {
                float RealQRange      = MaximumRange + PotancialTarget.BoundingRadius;
                float DistanceToEnemy = Player.Distance(PotancialTarget);

                //Declaring Minimum And Maximum Range =>
                if (DistanceToEnemy > MinimumRange && DistanceToEnemy < RealQRange)
                {
                    Vector2 PositionAfterQ = PotancialTarget.ServerPosition.To2D();
                    float   DistanceQ      = Position.Distance(PositionAfterQ);

                    if (BestDistance > DistanceQ)
                    {
                        BestDashingTarget = PotancialTarget;
                        BestDistance      = DistanceQ;
                        BestLocaltion     = PositionAfterQ;
                    }
                }
            }

            if (BestDashingTarget != null)
            {
                Q.CastOnUnit(BestDashingTarget);
                return;
            }

            if (BestDashingTarget == null)
            {
                if (WardTrick)
                {
                    SkyLv_Jax.WardPos = Game.CursorPos;
                    Obj_AI_Minion WardObject;
                    if (Game.CursorPos.Distance(Player.Position) <= 700)
                    {
                        WardObject = ObjectManager.Get <Obj_AI_Minion>().Where(Ward => Ward.Distance(Game.CursorPos) < 200 && !Ward.IsDead).MinOrDefault(i => i.Distance(Game.CursorPos));
                    }
                    else
                    {
                        Vector3 DWpos = Game.CursorPos - Player.ServerPosition;
                        DWpos.Normalize();
                        SkyLv_Jax.WardPos = Player.ServerPosition + DWpos * (600);
                        WardObject        = ObjectManager.Get <Obj_AI_Minion>().Where(Ward => Ward.Distance(SkyLv_Jax.WardPos) < 200 && !Ward.IsDead).MinOrDefault(i => i.Distance(Game.CursorPos));
                    }

                    if (WardObject == null)
                    {
                        if (!SkyLv_Jax.WardPos.IsWall())
                        {
                            InventorySlot WardSlot = Items.GetWardSlot();
                            Items.UseItem((int)WardSlot.Id, SkyLv_Jax.WardPos);
                        }
                    }

                    else if (WardObject != null)
                    {
                        Q.CastOnUnit(WardObject);
                        return;
                    }
                }
            }
        }