示例#1
0
        public static void stackQ()
        {
            if (!Q.IsReady() || isQEmpovered() || !YasuoSharp.flee["fleeStack"].Cast <CheckBox>().CurrentValue)//fleeStack
            {
                return;
            }
            var minions = MinionManager.GetMinions(ObjectManager.Player.ServerPosition, Q.Range + 50);

            if (!isDashigPro)
            {
                List <Vector2> minionPs = YasMath.GetCastMinionsPredictedPositions(minions, getNewQSpeed() * 0.3f, 30f,
                                                                                   float.MaxValue, Player.ServerPosition, 465, false, SkillshotType.SkillshotLine);
                Vector2 clos = LeagueSharp.Common.Geometry.Closest(Player.ServerPosition.LSTo2D(), minionPs);
                if (Player.LSDistance(clos) < 475)
                {
                    Q.Cast(clos, false);
                    return;
                }
            }
            else
            {
                if (minions.Count(min => !min.IsDead && min.IsValid && min.LSDistance(getDashEndPos()) < QCir.Range) >
                    1)
                {
                    QCir.Cast(Player.Position, false);
                    return;
                }
            }
        }
示例#2
0
 public static bool missleWillHit(MissileClient missle)
 {
     if (missle.Target.IsMe || YasMath.interCir(missle.StartPosition.LSTo2D(), missle.EndPosition.LSTo2D(), Player.Position.LSTo2D(), missle.SData.LineWidth + Player.BoundingRadius))
     {
         if (missle.StartPosition.LSDistance(Player.Position) < (missle.StartPosition.LSDistance(missle.EndPosition)))
         {
             return(true);
         }
     }
     return(false);
 }
示例#3
0
        public static List <Obj_AI_Base> canGoThrough(YasDash dash)
        {
            List <Obj_AI_Base> jumps     = ObjectManager.Get <Obj_AI_Base>().Where(enemy => enemyIsJumpable(enemy) && enemy.LSIsValidTarget(550, true, dash.to)).ToList();
            List <Obj_AI_Base> canBejump = new List <Obj_AI_Base>();

            foreach (var jumpe in jumps)
            {
                if (YasMath.interCir(dash.from.LSTo2D(), dash.to.LSTo2D(), jumpe.Position.LSTo2D(), 35) /*&& jumpe.LSDistance(dash.to) < Player.LSDistance(dash.to)*/)
                {
                    canBejump.Add(jumpe);
                }
            }
            return(canBejump.OrderBy(jum => Player.LSDistance(jum)).ToList());
        }
示例#4
0
文件: Yasuo.cs 项目: 8123772/aiqiang
        public static bool wontHitOnDash(Skillshot ss, Obj_AI_Base jumpOn, Skillshot skillShot, Vector2 dashDir)
        {
            float currentDashSpeed = 700 + Player.MoveSpeed;//At least has to be like this
            //Get intersection point
            Vector2 intersectionPoint = YasMath.LineIntersectionPoint(Player.Position.To2D(), V2E(Player.Position, jumpOn.Position, 475), ss.Start, ss.End);
            //Time when yasuo will be in intersection point
            float arrivingTime = Vector2.Distance(Player.Position.To2D(), intersectionPoint) / currentDashSpeed;
            //Estimated skillshot position
            Vector2 skillshotPosition = ss.GetMissilePosition((int)(arrivingTime * 1000));

            if (Vector2.DistanceSquared(skillshotPosition, intersectionPoint) <
                (ss.SpellData.Radius + Player.BoundingRadius) && !YasMath.willColide(skillShot, Player.Position.To2D(), 700f + Player.MoveSpeed, dashDir, Player.BoundingRadius + skillShot.SpellData.Radius))
            {
                return(false);
            }
            return(true);
        }
示例#5
0
        public static bool goesThroughWall(Vector3 vec1, Vector3 vec2)
        {
            if (wall.endtime < Game.Time || wall.pointL == null || wall.pointL == null)
            {
                return(false);
            }
            Vector2 inter = YasMath.LineIntersectionPoint(vec1.LSTo2D(), vec2.LSTo2D(), wall.pointL.Position.LSTo2D(), wall.pointR.Position.LSTo2D());
            float   wallW = (300 + 50 * W.Level);

            if (wall.pointL.Position.LSTo2D().LSDistance(inter) > wallW ||
                wall.pointR.Position.LSTo2D().LSDistance(inter) > wallW)
            {
                return(false);
            }
            var dist = vec1.LSDistance(vec2);

            if (vec1.LSTo2D().LSDistance(inter) + vec2.LSTo2D().LSDistance(inter) - 30 > dist)
            {
                return(false);
            }

            return(true);
        }
示例#6
0
        public static void doLaneClear(AIHeroClient target)
        {
            List <Obj_AI_Base> minions = MinionManager.GetMinions(ObjectManager.Player.ServerPosition, 1000, MinionTypes.All, MinionTeam.NotAlly);

            if (YasuoSharp.laneclear["useElc"].Cast <CheckBox>().CurrentValue&& E.IsReady())
            {
                foreach (var minion in minions.Where(minion => minion.LSIsValidTarget(E.Range) && enemyIsJumpable(minion)))
                {
                    if (minion.Health < Player.LSGetSpellDamage(minion, E.Slot) ||
                        Q.IsReady() && minion.Health < (Player.LSGetSpellDamage(minion, E.Slot) + Player.LSGetSpellDamage(minion, Q.Slot)))
                    {
                        if (useENormal(minion))
                        {
                            return;
                        }
                    }
                }
            }

            if (Q.IsReady() && YasuoSharp.laneclear["useQlc"].Cast <CheckBox>().CurrentValue)
            {
                if (isQEmpovered() && !(target != null && Player.LSDistance(target) < 1050))
                {
                    if (canCastFarQ())
                    {
                        List <Vector2>             minionPs = YasMath.GetCastMinionsPredictedPositions(minions, getNewQSpeed(), 50f, 1200f, Player.ServerPosition, 900f, false, SkillshotType.SkillshotLine);
                        MinionManager.FarmLocation farm     = QEmp.GetLineFarmLocation(minionPs); //MinionManager.GetBestLineFarmLocation(minionPs, 50f, 900f);
                        if (farm.MinionsHit >= YasuoSharp.laneclear["useEmpQHit"].Cast <Slider>().CurrentValue)
                        {
                            //Console.WriteLine("Cast q simp Emp");
                            QEmp.Cast(farm.Position, false);
                            return;
                        }
                    }
                    else
                    {
                        if (minions.Count(min => min.IsValid && !min.IsDead && min.LSDistance(getDashEndPos()) < QCir.Range) >= YasuoSharp.laneclear["useEmpQHit"].Cast <Slider>().CurrentValue)
                        {
                            QCir.Cast(Player.Position, false);
                            Console.WriteLine("Cast q circ simp");
                        }
                    }
                }
                else
                {
                    if (!isDashigPro)
                    {
                        List <Vector2> minionPs = YasMath.GetCastMinionsPredictedPositions(minions, getNewQSpeed() * 0.3f, 30f, float.MaxValue, Player.ServerPosition, 465, false, SkillshotType.SkillshotLine);
                        Vector2        clos     = LeagueSharp.Common.Geometry.Closest(Player.ServerPosition.LSTo2D(), minionPs);
                        if (Player.LSDistance(clos) < 475)
                        {
                            Console.WriteLine("Cast q simp");
                            Q.Cast(clos, false);
                            return;
                        }
                    }
                    else
                    {
                        if (minions.Count(min => !min.IsDead && min.IsValid && min.LSDistance(getDashEndPos()) < QCir.Range) > 1)
                        {
                            QCir.Cast(Player.Position, false);
                            Console.WriteLine("Cast q circ simp");
                            return;
                        }
                    }
                }
            }
        }