Exemplo n.º 1
0
        public static bool SpellPrediction(Spell spell, Obj_AI_Hero target,bool collisionable)
        {
            //
            var dist = ObjectManager.Player.Distance(target.Position);
            var pos1 = LeagueSharp.Common.Prediction.GetPrediction(target, dist / spell.Speed).UnitPosition-40;
            var dister = target.Position.Extend(target.GetWaypoints()[1].To3D(), target.GetWaypoints()[1].To3D().Distance(target.Position) + 50);
              //  var pos1 = LeagueSharp.Common.Prediction.GetPrediction(target, dist / spell.Speed).UnitPosition - 40;
            var wts = Drawing.WorldToScreen(target.Position);
            var wtsx = target.GetWaypoints()[1];
            Drawing.DrawLine(wts[0], wts[1], wtsx[0], wtsx[1], 2f, System.Drawing.Color.Red);
            var e = pos1.Distance(target.GetWaypoints()[1].To3D());

            pos1.Extend(target.GetWaypoints()[1].To3D(), -e);
            Render.Circle.DrawCircle(dister, 10, System.Drawing.Color.GreenYellow, 2);
            Render.Circle.DrawCircle(pos1, 10, System.Drawing.Color.BlueViolet, 2);
            //
            var point = PointsAroundTheTarget(target.Position, target.BoundingRadius + 50).FirstOrDefault(t => t.IsWall());
            if (point.X != 0 && point.Y != 0 && point.Z != 0)
            {
                if (MinionCollideLine(ObjectManager.Player.Position, ExtendWallpos(target, point), spell,collisionable)) return false;

                Render.Circle.DrawCircle(ExtendWallpos(target, point), 10, System.Drawing.Color.Brown, 2);
                spell.Cast(ExtendWallpos(target, point));
                return true;
            }
            else
            {
                var range = spell.Range;
                if (target.Position.Distance(ObjectManager.Player.Position) < target.GetWaypoints()[1].Distance(ObjectManager.Player.Position))
                {
                    range -= 100;
                }

                if (!spell.IsInRange(target, range)) return false;

                /*if (target.IsFacing(ObjectManager.Player) && target.Position.Distance(ObjectManager.Player.Position) > target.GetWaypoints()[1].Distance(ObjectManager.Player.Position))
                {
                  if (MinionCollideLine(ObjectManager.Player.Position, target.Position, spell,collisionable)) return false;

                    {
                        Game.PrintChat("Casteando por inface");
                       spell.Cast(target.Position);

                        return true;
                    }

                }*/
                // code of dashes
                if (target.IsDashing())
                {
                    float timeforArrive=(target.Position.Distance(target.GetDashInfo().EndPos.To3D()))/target.GetDashInfo().Speed;
                    float grabtime =( ObjectManager.Player.Position.Distance(target.GetDashInfo().EndPos.To3D())
                                     / spell.Speed)+spell.Delay;
                    if (timeforArrive<grabtime)
                    {
                        spell.Cast(target.GetDashInfo().EndPos);
                        return true;
                    }
                }
               /* if (target.IsImmovable) // check for cc guys
                {
                    if (MinionCollideLine(ObjectManager.Player.Position, target.Position, spell,collisionable)) return false;
                    spell.Cast(target.Position);
                    return true;
                }*/

              //  if(target.IsChannelingImportantSpell())
                if (target.IsWindingUp && !target.IsMelee())
                {
                    if (MinionCollideLine(ObjectManager.Player.Position, target.Position, spell,collisionable)) return false;
                    spell.Cast(target.Position);
                    return true;
                }

                if (target.Position.Distance(ObjectManager.Player.Position) <= 300)
                {
                    CastToDirection( target, spell,collisionable);
                }
                else
                {
                    var oldPos = target.GetWaypoints()[0].To3D();
                   var h = false;
                    Utility.DelayAction.Add(Game.Ping + 1000, () => h = Next(target, oldPos, spell,collisionable));
                    return h;
                }
            }
            return false;
        }
Exemplo n.º 2
0
        public static bool IsCondemnable(this Obj_AI_Hero hero)
        {
            if (!hero.IsValidTarget(550f) || hero.HasBuffOfType(BuffType.SpellShield) ||
                hero.HasBuffOfType(BuffType.SpellImmunity) || hero.IsDashing())
            {
                return(false);
            }

            //values for pred calc pP = player position; p = enemy position; pD = push distance
            var pP   = Heroes.Player.ServerPosition;
            var p    = hero.ServerPosition;
            var pD   = Program.ComboMenu.Item("EPushDist").GetValue <Slider>().Value;
            var mode = Program.ComboMenu.Item("EMode").GetValue <StringList>().SelectedValue;


            if (mode == "PRADASMART" && (p.Extend(pP, -pD).IsCollisionable() || p.Extend(pP, -pD / 2f).IsCollisionable() ||
                                         p.Extend(pP, -pD / 3f).IsCollisionable()))
            {
                if (!hero.CanMove ||
                    (hero.IsWindingUp))
                {
                    return(true);
                }

                var enemiesCount = ObjectManager.Player.CountEnemiesInRange(1200);
                if (enemiesCount > 1 && enemiesCount <= 3)
                {
                    var prediction = Program.E.GetPrediction(hero);
                    for (var i = 15; i < pD; i += 75)
                    {
                        var posFlags = NavMesh.GetCollisionFlags(
                            prediction.UnitPosition.To2D()
                            .Extend(
                                pP.To2D(),
                                -i)
                            .To3D());
                        if (posFlags.HasFlag(CollisionFlags.Wall) || posFlags.HasFlag(CollisionFlags.Building))
                        {
                            return(true);
                        }
                    }
                    return(false);
                }
                else
                {
                    var         hitchance      = Program.ComboMenu.Item("EHitchance").GetValue <Slider>().Value;
                    var         angle          = 0.20 * hitchance;
                    const float travelDistance = 0.5f;
                    var         alpha          = new Vector2((float)(p.X + travelDistance * Math.Cos(Math.PI / 180 * angle)),
                                                             (float)(p.X + travelDistance * Math.Sin(Math.PI / 180 * angle)));
                    var beta = new Vector2((float)(p.X - travelDistance * Math.Cos(Math.PI / 180 * angle)),
                                           (float)(p.X - travelDistance * Math.Sin(Math.PI / 180 * angle)));

                    for (var i = 15; i < pD; i += 100)
                    {
                        if (pP.To2D().Extend(alpha,
                                             i)
                            .To3D().IsCollisionable() && pP.To2D().Extend(beta, i).To3D().IsCollisionable())
                        {
                            return(true);
                        }
                    }
                    return(false);
                }
            }

            if (mode == "PRADAPERFECT" &&
                (p.Extend(pP, -pD).IsCollisionable() || p.Extend(pP, -pD / 2f).IsCollisionable() ||
                 p.Extend(pP, -pD / 3f).IsCollisionable()))
            {
                if (!hero.CanMove ||
                    (hero.IsWindingUp))
                {
                    return(true);
                }

                var         hitchance      = Program.ComboMenu.Item("EHitchance").GetValue <Slider>().Value;
                var         angle          = 0.20 * hitchance;
                const float travelDistance = 0.5f;
                var         alpha          = new Vector2((float)(p.X + travelDistance * Math.Cos(Math.PI / 180 * angle)),
                                                         (float)(p.X + travelDistance * Math.Sin(Math.PI / 180 * angle)));
                var beta = new Vector2((float)(p.X - travelDistance * Math.Cos(Math.PI / 180 * angle)),
                                       (float)(p.X - travelDistance * Math.Sin(Math.PI / 180 * angle)));

                for (var i = 15; i < pD; i += 100)
                {
                    if (pP.To2D().Extend(alpha,
                                         i)
                        .To3D().IsCollisionable() && pP.To2D().Extend(beta, i).To3D().IsCollisionable())
                    {
                        return(true);
                    }
                }
                return(false);
            }

            if (mode == "OLDPRADA")
            {
                if (!hero.CanMove ||
                    (hero.IsWindingUp))
                {
                    return(true);
                }

                var         hitchance      = Program.ComboMenu.Item("EHitchance").GetValue <Slider>().Value;
                var         angle          = 0.20 * hitchance;
                const float travelDistance = 0.5f;
                var         alpha          = new Vector2((float)(p.X + travelDistance * Math.Cos(Math.PI / 180 * angle)),
                                                         (float)(p.X + travelDistance * Math.Sin(Math.PI / 180 * angle)));
                var beta = new Vector2((float)(p.X - travelDistance * Math.Cos(Math.PI / 180 * angle)),
                                       (float)(p.X - travelDistance * Math.Sin(Math.PI / 180 * angle)));

                for (var i = 15; i < pD; i += 100)
                {
                    if (pP.To2D().Extend(alpha,
                                         i)
                        .To3D().IsCollisionable() || pP.To2D().Extend(beta, i).To3D().IsCollisionable())
                    {
                        return(true);
                    }
                }
                return(false);
            }

            if (mode == "MARKSMAN")
            {
                var prediction = Program.E.GetPrediction(hero);
                return(NavMesh.GetCollisionFlags(
                           prediction.UnitPosition.To2D()
                           .Extend(
                               pP.To2D(),
                               -pD)
                           .To3D()).HasFlag(CollisionFlags.Wall) ||
                       NavMesh.GetCollisionFlags(
                           prediction.UnitPosition.To2D()
                           .Extend(
                               pP.To2D(),
                               -pD / 2f)
                           .To3D()).HasFlag(CollisionFlags.Wall));
            }

            if (mode == "SHARPSHOOTER")
            {
                var prediction = Program.E.GetPrediction(hero);
                for (var i = 15; i < pD; i += 100)
                {
                    var posCF = NavMesh.GetCollisionFlags(
                        prediction.UnitPosition.To2D()
                        .Extend(
                            pP.To2D(),
                            -i)
                        .To3D());
                    if (posCF.HasFlag(CollisionFlags.Wall) || posCF.HasFlag(CollisionFlags.Building))
                    {
                        return(true);
                    }
                }
                return(false);
            }

            if (mode == "GOSU")
            {
                var prediction = Program.E.GetPrediction(hero);
                for (var i = 15; i < pD; i += 75)
                {
                    var posCF = NavMesh.GetCollisionFlags(
                        prediction.UnitPosition.To2D()
                        .Extend(
                            pP.To2D(),
                            -i)
                        .To3D());
                    if (posCF.HasFlag(CollisionFlags.Wall) || posCF.HasFlag(CollisionFlags.Building))
                    {
                        return(true);
                    }
                }
                return(false);
            }

            if (mode == "VHR")
            {
                var prediction = Program.E.GetPrediction(hero);
                for (var i = 15; i < pD; i += (int)hero.BoundingRadius) //:frosty:
                {
                    var posCF = NavMesh.GetCollisionFlags(
                        prediction.UnitPosition.To2D()
                        .Extend(
                            pP.To2D(),
                            -i)
                        .To3D());
                    if (posCF.HasFlag(CollisionFlags.Wall) || posCF.HasFlag(CollisionFlags.Building))
                    {
                        return(true);
                    }
                }
                return(false);
            }

            if (mode == "PRADALEGACY")
            {
                var prediction = Program.E.GetPrediction(hero);
                for (var i = 15; i < pD; i += 75)
                {
                    var posCF = NavMesh.GetCollisionFlags(
                        prediction.UnitPosition.To2D()
                        .Extend(
                            pP.To2D(),
                            -i)
                        .To3D());
                    if (posCF.HasFlag(CollisionFlags.Wall) || posCF.HasFlag(CollisionFlags.Building))
                    {
                        return(true);
                    }
                }
                return(false);
            }

            if (mode == "FASTEST" && (p.Extend(pP, -pD).IsCollisionable() || p.Extend(pP, -pD / 2f).IsCollisionable() ||
                                      p.Extend(pP, -pD / 3f).IsCollisionable()))
            {
                return(true);
            }

            return(false);
        }
Exemplo n.º 3
0
        internal static void OnCombo()
        {
            bool useQ = boolLinks["comboUseQ"].Value;
            bool useE = boolLinks["comboUseE"].Value;

            Obj_AI_Hero target;

            if (useQ && Q.IsReady())
            {
                target = SimpleTs.GetTarget(Q.Range, SimpleTs.DamageType.Physical);
            }
            else
            {
                target = SimpleTs.GetTarget(E.Range * 1.2f, SimpleTs.DamageType.Physical);
            }

            if (target == null)
            {
                return;
            }

            // Item usage
            if (boolLinks["comboUseItems"].Value)
            {
                if (boolLinks["itemsBotrk"].Value)
                {
                    bool foundCutlass = Items.HasItem(3144);
                    bool foundBotrk   = Items.HasItem(3153);

                    if (foundCutlass || foundBotrk)
                    {
                        if (foundCutlass || player.Health + player.GetItemDamage(target, Damage.DamageItems.Botrk) < player.MaxHealth)
                        {
                            Items.UseItem(foundCutlass ? 3144 : 3153, target);
                        }
                    }
                }
            }

            // Spell usage
            if (useQ && Q.IsReady() && !player.IsDashing())
            {
                Q.Cast(target);
            }

            if (useE && (E.IsReady() || E.Instance.State == SpellState.Surpressed))
            {
                // Target is not in range but has E stacks on
                if (player.Distance(target, true) > Math.Pow(Orbwalking.GetRealAutoAttackRange(player), 2) && target.HasRendBuff())
                {
                    // Get minions around
                    var minions = ObjectManager.Get <Obj_AI_Minion>().Where(m => m.IsValidTarget(Orbwalking.GetRealAutoAttackRange(player)));

                    // Check if a minion can die with the current E stacks
                    if (minions.Any(m => m.IsRendKillable()))
                    {
                        E.Cast(true);
                    }
                    else
                    {
                        // Check if a minion can die with one AA and E. Also, the AA minion has be be behind the player direction for a further leap
                        var minion = GetDashObjects(minions).FirstOrDefault(m => m.Health > player.GetAutoAttackDamage(m) && m.Health < player.GetAutoAttackDamage(m) + GetRendDamage(m, 1));
                        if (minion != null)
                        {
                            menu.Orbwalker.ForceTarget(minion);
                        }
                    }
                }

                // Target is in range and has at least the set amount of E stacks on
                if (E.InRange(target.ServerPosition) && (target.IsRendKillable() || target.HasRendBuff() && target.GetRendBuff().Count >= sliderLinks["comboNumE"].Value.Value))
                {
                    var buff = target.GetRendBuff();

                    // Check if the target would die from E
                    if (target.IsRendKillable())
                    {
                        E.Cast(true);
                    }
                    // If the target is still in range or the buff is active for longer than 0.25 seconds, if not, cast it
                    else if (GetRendDamage(target, buff.Count + 2) < target.Health && target.ServerPosition.Distance(player.Position, true) > Math.Pow(E.Range * 0.8, 2) || buff.EndTime - Game.Time <= 0.25)
                    {
                        E.Cast(true);
                    }
                }
            }
        }
Exemplo n.º 4
0
        /// <summary>
        ///     Do the combo sequence
        /// </summary>
        private static void OnCombo()
        {
            Obj_AI_Hero target = GetEnemy(1500f);

            if (Menu.Item("useEGap").GetValue <bool>() && _spells[Spells.E].IsReady())
            {
                Obj_AI_Base dashObject     = GetBestDashObject(target);
                Vector3     positionAfterE = V3E(_player.ServerPosition, dashObject.ServerPosition, 475);
                if (_player.Distance(dashObject) <= _spells[Spells.E].Range &&
                    _player.Distance(target) > _spells[Spells.Q].Range)
                {
                    if (Menu.Item("safetyCheck").GetValue <bool>() && positionAfterE.UnderTurret(true))
                    {
                        return;
                    }

                    _spells[Spells.E].CastOnUnit(dashObject);
                }
            }

            if (Menu.Item("useQC").GetValue <bool>() && Menu.Item("useEC").GetValue <bool>() &&
                _spells[Spells.Q].IsReady() && _spells[Spells.E].IsReady() && _spells[Spells.E].IsInRange(target) &&
                V3E(_player.ServerPosition, target.ServerPosition, _spells[Spells.E].Range).To2D().Distance(target) <=
                315)
            {
                if (Menu.Item("safetyCheck").GetValue <bool>() &&
                    V3E(_player.ServerPosition, target.ServerPosition, _spells[Spells.E].Range).UnderTurret(true))
                {
                    return;
                }

                _spells[Spells.E].CastOnUnit(target);
                Utility.DelayAction.Add(target.GetDistanceCastTime(_spells[Spells.E]), () => _spells[Spells.Q].Cast());
            }

            //Q Casting
            if (Menu.Item("useQC").GetValue <bool>() && _spells[Spells.Q].IsReady() && target != null)
            {
                if (!_player.IsDashing())
                {
                    PredictionOutput prediction = _spells[Spells.Q].GetPrediction(target);
                    if (prediction.Hitchance >= HitChance.Medium)
                    {
                        _spells[Spells.Q].Cast(prediction.CastPosition);
                    }
                }
            }

            //Normal E cast
            if (Menu.Item("useEC").GetValue <bool>() && _spells[Spells.E].IsReady() &&
                _spells[Spells.E].IsInRange(target) && _player.CanDash(target))
            {
                if (target != null &&
                    V3E(_player.ServerPosition, target.ServerPosition, _spells[Spells.E].Range).UnderTurret(true))
                {
                    return;
                }
                _spells[Spells.E].CastOnUnit(target);
            }

            if (Menu.Item("useRC").GetValue <bool>() && _spells[Spells.R].IsReady() &&
                _spells[Spells.R].IsInRange(target))
            {
                var enemiesKnockedUp =
                    ObjectManager.Get <Obj_AI_Hero>()
                    .Where(x => x.IsValidTarget(_spells[Spells.R].Range) && x.HasBuffOfType(BuffType.Knockup));

                if (enemiesKnockedUp.Count() >= Menu.Item("rCount").GetValue <Slider>().Value)
                {
                    _spells[Spells.R].Cast();
                }
                else
                {
                    if (Menu.Item("delayUltimate").GetValue <bool>() && target.IsAirborne())
                    {
                        Utility.DelayAction.Add(
                            (int)(AirborneTimeLeft(target) * 1000 - 200), () => _spells[Spells.R].Cast());
                    }
                }
            }
        }
Exemplo n.º 5
0
        /// <summary>
        /// Gets Predicted position for arc
        /// </summary>
        /// <param name="target">Target for spell</param>
        /// <param name="s">Spell to cast</param>
        /// <param name="avgt">Average reaction time (in ms)</param>
        /// <param name="movt">Passed time from last movement change (in ms)</param>
        /// <param name="hc">Predicted HitChance</param>
        /// <param name="rangeCheckFrom">Position where spell will be casted from</param>
        /// <returns>Predicted position and HitChance out value</returns>
        public static Vector2 GetArcPrediction(Obj_AI_Hero target, Spell s, List <Vector2> path, float avgt, float movt, out HitChance hc, Vector3 rangeCheckFrom)
        {
            if (!blInitialized)
            {
                throw new InvalidOperationException("Prediction is not initalized");
            }

            if (target.MovImmobileTime() > 200 || target.AvgMovChangeTime() == 0 || Utility.IsImmobileTarget(target)) //if target is not moving, easy to hit
            {
                hc = HitChance.Immobile;
                return(target.ServerPosition.To2D());
            }

            if (target.IsDashing())
            {
                return(GetDashingPrediction(target, s, out hc, rangeCheckFrom));
            }

            float targetDistance = rangeCheckFrom.Distance(target.ServerPosition);
            float flyTime        = 0f;

            if (s.Speed != 0)
            {
                Vector2 Vt = (path[path.Count - 1] - path[0]).Normalized() * target.MoveSpeed;
                Vector2 Vs = (target.ServerPosition.To2D() - rangeCheckFrom.To2D()).Normalized() * s.Speed;
                Vector2 Vr = Vs - Vt;

                flyTime = targetDistance / Vr.Length();

                if (path.Count > 5)
                {
                    flyTime = targetDistance / s.Speed;
                }
            }

            float t        = flyTime + s.Delay + Game.Ping / 1000f;
            float distance = t * target.MoveSpeed;

            hc = GetHitChance(t * 1000f, avgt, movt);

            #region arc collision test
            for (int i = 1; i < path.Count; i++)
            {
                Vector2 senderPos = ObjectManager.Player.ServerPosition.To2D();
                Vector2 testPos   = path[i];

                float multp = (testPos.Distance(senderPos) / 875.0f);

                var dianaArc = new ShineCommon.Maths.Geometry.Polygon(
                    ClipperWrapper.DefineArc(senderPos - new Vector2(875 / 2f, 20), testPos, (float)Math.PI * multp, 410, 200 * multp),
                    ClipperWrapper.DefineArc(senderPos - new Vector2(875 / 2f, 20), testPos, (float)Math.PI * multp, 410, 320 * multp));

                if (!ClipperWrapper.IsOutside(dianaArc, target.ServerPosition.To2D()))
                {
                    hc = HitChance.VeryHigh;
                    return(testPos);
                }
            }
            #endregion

            for (int i = 0; i < path.Count - 1; i++)
            {
                float d = path[i + 1].Distance(path[i]);
                if (distance == d)
                {
                    return(path[i + 1]);
                }
                else if (distance < d)
                {
                    return(path[i] + distance * (path[i + 1] - path[i]).Normalized());
                }
                else
                {
                    distance -= d;
                }
            }

            hc = HitChance.Impossible;
            return(path[path.Count - 1]);
        }
Exemplo n.º 6
0
        private void Combo()
        {
            Obj_AI_Hero target = DrawHelper.GetBetterTarget(GetTargetRange(), TargetSelector.DamageType.Physical);

            if (target == null)
            {
                return;
            }
            var data = Program.IncDamages.GetAllyData(player.NetworkId);

            if (config.Item("usew", true).GetValue <bool>() && W.IsReady() && data.AnyCC)
            {
                W.Cast();
            }
            var eTarget = DrawHelper.GetBetterTarget(E.Range, TargetSelector.DamageType.Physical);
            var cmbdmg  = ComboDamage(target) + ItemHandler.GetItemsDamage(target);

            if (config.Item("useItems").GetValue <bool>())
            {
                ItemHandler.UseItems(target, config, cmbdmg);
            }
            var dist = player.Distance(target);

            if (lastR > 4000f)
            {
                lastR = 0f;
            }
            if (config.Item("useq", true).GetValue <bool>() && Q.CanCast(target) &&
                dist < config.Item("useqMaxRange", true).GetValue <Slider>().Value&& !player.IsDashing())
            {
                if (dist < 550)
                {
                    Q.CastIfHitchanceEquals(target, HitChance.Medium);
                }
                else
                {
                    Q.CastIfHitchanceEquals(target, HitChance.High);
                }
            }
            if (config.Item("usee", true).GetValue <bool>() && E.CanCast(eTarget) &&
                dist < config.Item("useeMaxRange", true).GetValue <Slider>().Value)
            {
                E.Cast(eTarget);
            }
            if (config.Item("user", true).GetValue <bool>() && R.IsReady())
            {
                R.Range = rRanges[R.Level - 1];
            }
            if (config.Item("user", true).GetValue <bool>() && lastR.Equals(0) && !target.UnderTurret(true) &&
                R.CanCast(target) &&
                ((qTrailOnMe && eBuff(target) && target.MoveSpeed > player.MoveSpeed && dist > 360 &&
                  target.HealthPercent < 60) ||
                 (dist < rRanges[R.Level - 1] && dist > 900 &&
                  target.CountAlliesInRange(2000) >= target.CountEnemiesInRange(2000) &&
                  cmbdmg + Environment.Hero.GetAdOverTime(player, target, 5) > target.Health &&
                  (target.Health > Q.GetDamage(target) || !Q.IsReady())) ||
                 (player.HealthPercent < 40 && target.HealthPercent < 40 && target.CountAlliesInRange(1000) == 1 &&
                  target.CountEnemiesInRange(1000) == 1)))
            {
                R.Cast(target);
                lastR = System.Environment.TickCount;
            }
            if (config.Item("user", true).GetValue <bool>() && !lastR.Equals(0) && R.CanCast(target) &&
                ((cmbdmg * 1.6 + Environment.Hero.GetAdOverTime(player, target, 5) > target.Health ||
                  R.GetDamage(target) > target.Health ||
                  (qTrailOnMe && eBuff(target) && target.MoveSpeed > player.MoveSpeed && dist > 360 &&
                   target.HealthPercent < 60))))
            {
                var time = System.Environment.TickCount - lastR;
                if (time > 3500f || player.Distance(target) > E.Range || cmbdmg > target.Health ||
                    (player.HealthPercent < 40 && target.HealthPercent < 40))
                {
                    R.Cast(target);
                    lastR = 0f;
                }
            }
            var  ignitedmg = (float)player.GetSummonerSpellDamage(target, Damage.SummonerSpell.Ignite);
            bool hasIgnite = player.Spellbook.CanUseSpell(player.GetSpellSlot("SummonerDot")) == SpellState.Ready;

            if (config.Item("useIgnite").GetValue <bool>() && ignitedmg > target.Health && hasIgnite &&
                !E.CanCast(target))
            {
                player.Spellbook.CastSpell(player.GetSpellSlot("SummonerDot"), target);
            }
        }
Exemplo n.º 7
0
        /// <summary>
        /// Gets Predicted position while target is dashing
        /// </summary>
        private static Vector2 GetDashingPrediction(Obj_AI_Hero target, Spell s, out HitChance hc, Vector3 rangeCheckFrom)
        {
            if (target.IsDashing())
            {
                var dashInfo = target.GetDashInfo();

                float dashPassedDistance = (Utils.TickCount - dashInfo.StartTick) / 1000f * dashInfo.Speed;
                Vector2 currentDashPos = dashInfo.StartPos + (dashInfo.EndPos - dashInfo.StartPos).Normalized() * dashPassedDistance;

                float targetDistance = rangeCheckFrom.To2D().Distance(currentDashPos);
                float flyTime = 0f;

                if (s.Speed != 0) //skillshot with a missile
                {
                    Vector2 Vt = (dashInfo.Path[dashInfo.Path.Count - 1] - dashInfo.Path[0]).Normalized() * dashInfo.Speed;
                    Vector2 Vs = (target.ServerPosition.To2D() - rangeCheckFrom.To2D()).Normalized() * s.Speed;
                    Vector2 Vr = Vs - Vt;

                    flyTime = targetDistance / Vr.Length();
                }
                int dashLeftTime = dashInfo.EndTick - Utils.TickCount;
                float t = flyTime + s.Delay + Game.Ping / 1000f;

                if (dashLeftTime >= t * 1000f)
                {
                    float distance = t * dashInfo.Speed;
                    hc = HitChance.Dashing;

                    for (int i = 0; i < dashInfo.Path.Count - 1; i++)
                    {
                        float d = dashInfo.Path[i + 1].Distance(dashInfo.Path[i]);
                        if (distance == d)
                            return dashInfo.Path[i + 1];
                        else if (distance < d)
                            return dashInfo.Path[i] + distance * (dashInfo.Path[i + 1] - dashInfo.Path[i]).Normalized();
                        else distance -= d;
                    }
                }
            }

            hc = HitChance.Impossible;
            return rangeCheckFrom.To2D();
        }
Exemplo n.º 8
0
        public static void OnCombo(bool afterAttack = false, Obj_AI_Base afterAttackTarget = null)
        {
            // Item usage
            if (afterAttack && afterAttackTarget is Obj_AI_Hero && Config.BoolLinks["comboUseItems"].Value)
            {
                ItemManager.UseBotrk(afterAttackTarget as Obj_AI_Hero);
                ItemManager.UseYoumuu(afterAttackTarget);
            }

            // Validate spell usage
            if (!Q.IsEnabled(Mode.COMBO) && !E.IsEnabled(Mode.COMBO))
            {
                return;
            }

            var target = TargetSelector.GetTarget(Q.IsEnabledAndReady(Mode.COMBO) ? Q.Range : (E.Range * 1.2f), TargetSelector.DamageType.Physical);

            if (target != null)
            {
                // Q usage
                if (Q.IsEnabledAndReady(Mode.COMBO) && !player.IsDashing())
                {
                    Q.Cast(target);
                }

                // E usage
                if (E.IsEnabled(Mode.COMBO) && (E.Instance.State == SpellState.Ready || E.Instance.State == SpellState.Surpressed) && target.HasRendBuff())
                {
                    // Target is not in range but has E stacks on
                    if (player.Distance(target, true) > Math.Pow(Orbwalking.GetRealAutoAttackRange(target), 2))
                    {
                        // Get minions around
                        var minions = ObjectManager.Get <Obj_AI_Minion>().FindAll(m => m.IsValidTarget(Orbwalking.GetRealAutoAttackRange(m)));

                        // Check if a minion can die with the current E stacks
                        if (minions.Any(m => m.IsRendKillable()))
                        {
                            E.Cast(true);
                        }
                        else
                        {
                            // Check if a minion can die with one AA and E. Also, the AA minion has be be behind the player direction for a further leap
                            var minion = VectorHelper.GetDashObjects(minions).Find(m => m.Health > player.GetAutoAttackDamage(m) && m.Health < player.GetAutoAttackDamage(m) + Damages.GetRendDamage(m, 1));
                            if (minion != null)
                            {
                                Config.Menu.Orbwalker.ForceTarget(minion);
                            }
                        }
                    }
                    // Target is in range and has at least the set amount of E stacks on
                    else if (E.IsInRange(target) &&
                             (target.IsRendKillable() || target.GetRendBuff().Count >= Config.SliderLinks["comboNumE"].Value.Value))
                    {
                        // Check if the target would die from E
                        if (target.IsRendKillable())
                        {
                            E.Cast(true);
                        }
                        else
                        {
                            // Check if target is about to leave our E range or the buff is about to run out
                            if (target.ServerPosition.Distance(player.ServerPosition, true) > Math.Pow(E.Range * 0.8, 2) ||
                                target.GetRendBuff().EndTime - Game.Time < 0.3)
                            {
                                E.Cast(true);
                            }
                        }
                    }
                }
            }
        }
Exemplo n.º 9
0
        /// <summary>
        /// Gets Predicted position for arc
        /// </summary>
        /// <param name="target">Target for spell</param>
        /// <param name="s">Spell to cast</param>
        /// <param name="avgt">Average reaction time (in ms)</param>
        /// <param name="movt">Passed time from last movement change (in ms)</param>
        /// <param name="hc">Predicted HitChance</param>
        /// <param name="rangeCheckFrom">Position where spell will be casted from</param>
        /// <returns>Predicted position and HitChance out value</returns>
        public static Vector2 GetArcPrediction(Obj_AI_Hero target, Spell s, List<Vector2> path, float avgt, float movt, out HitChance hc, Vector3 rangeCheckFrom)
        {
            if (!blInitialized)
                throw new InvalidOperationException("Prediction is not initalized");

            if (target.MovImmobileTime() > 200 || target.AvgMovChangeTime() == 0 || Utility.IsImmobileTarget(target)) //if target is not moving, easy to hit
            {
                hc = HitChance.Immobile;
                return target.ServerPosition.To2D();
            }

            if (target.IsDashing())
                return GetDashingPrediction(target, s, out hc, rangeCheckFrom);

            float targetDistance = rangeCheckFrom.Distance(target.ServerPosition);
            float flyTime = 0f;

            if (s.Speed != 0)
            {
                Vector2 Vt = (path[path.Count - 1] - path[0]).Normalized() * target.MoveSpeed;
                Vector2 Vs = (target.ServerPosition.To2D() - rangeCheckFrom.To2D()).Normalized() * s.Speed;
                Vector2 Vr = Vs - Vt;

                flyTime = targetDistance / Vr.Length();

                if (path.Count > 5)
                    flyTime = targetDistance / s.Speed;
            }

            float t = flyTime + s.Delay + Game.Ping / 1000f;
            float distance = t * target.MoveSpeed;

            hc = GetHitChance(t * 1000f, avgt, movt);

            #region arc collision test
            for (int i = 1; i < path.Count; i++)
            {
                Vector2 senderPos = ObjectManager.Player.ServerPosition.To2D();
                Vector2 testPos = path[i];

                float multp = (testPos.Distance(senderPos) / 875.0f);

                var dianaArc = new ShineCommon.Maths.Geometry.Polygon(
                                ClipperWrapper.DefineArc(senderPos - new Vector2(875 / 2f, 20), testPos, (float)Math.PI * multp, 410, 200 * multp),
                                ClipperWrapper.DefineArc(senderPos - new Vector2(875 / 2f, 20), testPos, (float)Math.PI * multp, 410, 320 * multp));

                if (!ClipperWrapper.IsOutside(dianaArc, target.ServerPosition.To2D()))
                {
                    hc = HitChance.VeryHigh;
                    return testPos;
                }
            }
            #endregion

            for (int i = 0; i < path.Count - 1; i++)
            {
                float d = path[i + 1].Distance(path[i]);
                if (distance == d)
                    return path[i + 1];
                else if (distance < d)
                    return path[i] + distance * (path[i + 1] - path[i]).Normalized();
                else distance -= d;
            }

            hc = HitChance.Impossible;
            return path[path.Count - 1];
        }
Exemplo n.º 10
0
        /// <summary>
        /// Gets Predicted position
        /// </summary>
        /// <param name="target">Target for spell</param>
        /// <param name="s">Spell to cast</param>
        /// <param name="path">Waypoint of target</param>
        /// <param name="avgt">Average reaction time (in ms)</param>
        /// <param name="movt">Passed time from last movement change (in ms)</param>
        /// <param name="hc">Predicted HitChance</param>
        /// <param name="rangeCheckFrom">Position where spell will be casted from</param>
        /// <returns>Predicted position and HitChance out value</returns>
        public static Vector2 GetPrediction(Obj_AI_Hero target, Spell s, List<Vector2> path, float avgt, float movt, out HitChance hc, Vector3 rangeCheckFrom)
        {
            if (!blInitialized)
                throw new InvalidOperationException("Prediction is not initalized");

            if (target.MovImmobileTime() > 200 || target.AvgMovChangeTime() == 0 || Utility.IsImmobileTarget(target)) //if target is not moving, easy to hit
            {
                hc = HitChance.Immobile;
                return target.ServerPosition.To2D() + target.Direction.To2D().Perpendicular() * s.Width / 2;
            }

            if (target.IsDashing())
                return GetDashingPrediction(target, s, out hc, rangeCheckFrom);

            float targetDistance = rangeCheckFrom.Distance(target.ServerPosition);
            float flyTime = 0f;

            if (s.Speed != 0) //skillshot with a missile
            {
                Vector2 Vt = (path[path.Count - 1] - path[0]).Normalized() * target.MoveSpeed;
                Vector2 Vs = (target.ServerPosition.To2D() - rangeCheckFrom.To2D()).Normalized() * s.Speed;
                Vector2 Vr = Vs - Vt;

                flyTime = targetDistance / Vr.Length();

                if (path.Count > 5) //complicated movement
                    flyTime = targetDistance / s.Speed;
            }

            float t = flyTime + s.Delay + Game.Ping / 1000f;
            float distance = t * target.MoveSpeed;

            //can be improved by checking area of circle
            if (s.Type == SkillshotType.SkillshotCircle) //haven't tested yet.
                distance -= s.Width / 2;

            hc = GetHitChance(t * 1000f, avgt, movt);

            for (int i = 0; i < path.Count - 1; i++)
            {
                float d = path[i + 1].Distance(path[i]);
                if (distance == d)
                    return path[i + 1];
                else if (distance < d)
                    return path[i] + distance * (path[i + 1] - path[i]).Normalized();
                else distance -= d;
            }

            hc = HitChance.Impossible;
            return path[path.Count - 1];
        }
Exemplo n.º 11
0
        private static void OrbwalkerBestPosition(Obj_AI_Hero target)
        {
            if (target == null || !target.IsValid || target.IsDead || target.IsZombie || target.IsDashing())
            {
                Orbwalker.SetOrbwalkingPoint(Vector3.Zero);
                return;
            }
            var BestPosition = Vector3.Zero;

            float Wrange = IsWActive ? W.Range - 20 : 350;

            var points = CirclePoints(target.Position, Wrange);

            foreach (var point in points.Where(p => !p.IsWall()))
            {
                if (BestPosition == Vector3.Zero || Game.CursorPos.Distance(point) < Game.CursorPos.Distance(BestPosition))
                {
                    BestPosition = point;
                }
            }

            if (BestPosition == Vector3.Zero)
            {
                Orbwalker.SetOrbwalkingPoint(Vector3.Zero);
            }
            else
            {
                Orbwalker.SetOrbwalkingPoint(BestPosition);
            }
        }
Exemplo n.º 12
0
        private void Combo()
        {
            Obj_AI_Hero target = TargetSelector.GetTarget(E.Range * 2, TargetSelector.DamageType.Physical);

            if (target == null)
            {
                return;
            }
            if (config.Item("selected").GetValue <bool>())
            {
                target = CombatHelper.SetTarget(target, TargetSelector.GetSelectedTarget());
                orbwalker.ForceTarget(target);
            }
            if (config.Item("useItems").GetValue <bool>())
            {
                ItemHandler.UseItems(target, config, ComboDamage(target));
            }
            bool hasIgnite   = player.Spellbook.CanUseSpell(player.GetSpellSlot("SummonerDot")) == SpellState.Ready;
            var  FuryQ       = Damage.GetSpellDamage(player, target, SpellSlot.Q) * 0.5;
            var  FuryW       = Damage.GetSpellDamage(player, target, SpellSlot.W) * 0.5;
            var  eDmg        = Damage.GetSpellDamage(player, target, SpellSlot.E);
            var  combodamage = ComboDamage(target);

            if (config.Item("useIgnite").GetValue <bool>() && hasIgnite &&
                player.GetSummonerSpellDamage(target, Damage.SummonerSpell.Ignite) > target.Health)
            {
                player.Spellbook.CastSpell(player.GetSpellSlot("SummonerDot"), target);
            }
            if (player.Distance(target) > E.Range && E.IsReady() && (W.IsReady() || Q.IsReady()) && lastE.Equals(0) &&
                config.Item("usee").GetValue <bool>())
            {
                var closeGapTarget =
                    ObjectManager.Get <Obj_AI_Base>()
                    .FirstOrDefault(
                        i =>
                        i.IsEnemy && player.Distance(i) < E.Range && !i.IsDead &&
                        i.Distance(target.ServerPosition) < E.Range);
                if (closeGapTarget != null)
                {
                    if ((canBeOpWIthQ(closeGapTarget.Position) || fury) && !rene)
                    {
                        if (E.CanCast(closeGapTarget))
                        {
                            E.Cast(closeGapTarget.Position, config.Item("packets").GetValue <bool>());
                            lastE = System.Environment.TickCount;
                            return;
                        }
                    }
                }
            }
            if (config.Item("useq").GetValue <bool>() && Q.CanCast(target) && !renw && !player.IsDashing() &&
                (!W.IsReady() ||
                 ((W.IsReady() && !fury) || (player.Health < target.Health) ||
                  Environment.Minion.countMinionsInrange(player.Position, Q.Range) + player.CountEnemiesInRange(Q.Range) >
                  3 && fury)))
            {
                Q.Cast(config.Item("packets").GetValue <bool>());
            }
            var distance = player.Distance(target.Position);

            if (config.Item("usee").GetValue <bool>() && lastE.Equals(0) && E.CanCast(target) &&
                (eDmg > target.Health ||
                 (((W.IsReady() && canBeOpWIthQ(target.Position) && !rene) ||
                   (distance > target.Distance(player.Position.Extend(target.Position, E.Range)) - distance)))))
            {
                E.Cast(target.Position, config.Item("packets").GetValue <bool>());
                lastE = System.Environment.TickCount;
                return;
            }
            if (config.Item("usee").GetValue <bool>() && !lastE.Equals(0) &&
                (eDmg + player.GetAutoAttackDamage(target) > target.Health ||
                 (((W.IsReady() && canBeOpWIthQ(target.Position) && !rene) ||
                   (distance < target.Distance(player.Position.Extend(target.Position, E.Range)) - distance) ||
                   player.Distance(target) > E.Range - 100))))
            {
                var time = System.Environment.TickCount - lastE;
                if (time > 3600f || combodamage > target.Health || (player.Distance(target) > E.Range - 100))
                {
                    E.Cast(target.Position, config.Item("packets").GetValue <bool>());
                    lastE = 0;
                }
            }
            if ((player.Health * 100 / player.MaxHealth) <= config.Item("user").GetValue <Slider>().Value ||
                config.Item("userindanger").GetValue <Slider>().Value < player.CountEnemiesInRange(R.Range))
            {
                R.Cast(config.Item("packets").GetValue <bool>());
            }
        }
Exemplo n.º 13
0
        /// <summary>
        /// Gets Predicted position
        /// </summary>
        /// <param name="target">Target for spell</param>
        /// <param name="s">Spell to cast</param>
        /// <param name="path">Waypoint of target</param>
        /// <param name="avgt">Average reaction time (in ms)</param>
        /// <param name="movt">Passed time from last movement change (in ms)</param>
        /// <param name="hc">Predicted HitChance</param>
        /// <param name="rangeCheckFrom">Position where spell will be casted from</param>
        /// <returns>Predicted position and HitChance out value</returns>
        public static Vector2 GetPrediction(Obj_AI_Hero target, Spell s, List <Vector2> path, float avgt, float movt, out HitChance hc, Vector3 rangeCheckFrom)
        {
            if (!blInitialized)
            {
                throw new InvalidOperationException("Prediction is not initalized");
            }

            if (target.MovImmobileTime() > 200 || target.AvgMovChangeTime() == 0 || Utility.IsImmobileTarget(target)) //if target is not moving, easy to hit
            {
                hc = HitChance.Immobile;
                return(target.ServerPosition.To2D() + target.Direction.To2D().Perpendicular() * s.Width / 2);
            }

            if (target.IsDashing())
            {
                return(GetDashingPrediction(target, s, out hc, rangeCheckFrom));
            }

            float targetDistance = rangeCheckFrom.Distance(target.ServerPosition);
            float flyTime        = 0f;

            if (s.Speed != 0) //skillshot with a missile
            {
                Vector2 Vt = (path[path.Count - 1] - path[0]).Normalized() * target.MoveSpeed;
                Vector2 Vs = (target.ServerPosition.To2D() - rangeCheckFrom.To2D()).Normalized() * s.Speed;
                Vector2 Vr = Vs - Vt;

                flyTime = targetDistance / Vr.Length();

                if (path.Count > 5) //complicated movement
                {
                    flyTime = targetDistance / s.Speed;
                }
            }

            float t        = flyTime + s.Delay + Game.Ping / 1000f;
            float distance = t * target.MoveSpeed;

            //can be improved by checking area of circle
            if (s.Type == SkillshotType.SkillshotCircle) //haven't tested yet.
            {
                distance -= s.Width / 2;
            }

            hc = GetHitChance(t * 1000f, avgt, movt);

            for (int i = 0; i < path.Count - 1; i++)
            {
                float d = path[i + 1].Distance(path[i]);
                if (distance == d)
                {
                    return(path[i + 1]);
                }
                else if (distance < d)
                {
                    return(path[i] + distance * (path[i + 1] - path[i]).Normalized());
                }
                else
                {
                    distance -= d;
                }
            }

            hc = HitChance.Impossible;
            return(path[path.Count - 1]);
        }
Exemplo n.º 14
0
        private void Game_OnGameUpdate(EventArgs args)
        {
            orbwalker.SetMovement(true);
            Obj_AI_Hero target = TargetSelector.GetTarget(Q.Range, TargetSelector.DamageType.Magical);

            switch (orbwalker.ActiveMode)
            {
            case Orbwalking.OrbwalkingMode.Combo:
                Combo();
                break;

            case Orbwalking.OrbwalkingMode.Mixed:
                Harass();
                break;

            case Orbwalking.OrbwalkingMode.LaneClear:
                Clear();
                break;

            case Orbwalking.OrbwalkingMode.LastHit:
                LastHit();
                break;

            default:
                break;
            }
            if (target == null)
            {
                return;
            }
            if (player.HasBuff("KennenShurikenStorm") &&
                config.Item("Minhelath", true).GetValue <Slider>().Value > player.Health / player.MaxHealth * 100)
            {
                if (Items.HasItem(ItemHandler.Wooglet.Id) && Items.CanUseItem(ItemHandler.Wooglet.Id))
                {
                    ItemHandler.Wooglet.Cast();
                }
                if (Items.HasItem(ItemHandler.Zhonya.Id) && Items.CanUseItem(ItemHandler.Zhonya.Id))
                {
                    ItemHandler.Zhonya.Cast();
                }
            }
            if (config.Item("autoq", true).GetValue <bool>())
            {
                if (Q.CanCast(target) && !target.IsDashing() &&
                    (MarkOfStorm(target) > 1 || (MarkOfStorm(target) > 0 && player.Distance(target) < W.Range)))
                {
                    Q.Cast(target, config.Item("packets").GetValue <bool>());
                }
            }
            if (config.Item("autow", true).GetValue <bool>() && W.IsReady() && MarkOfStorm(target) > 1)
            {
                if (player.Distance(target) < W.Range)
                {
                    W.Cast(config.Item("packets").GetValue <bool>());
                }
            }
            if (config.Item("KenAutoQ", true).GetValue <KeyBind>().Active&& Q.IsReady() &&
                config.Item("KenminmanaaQ", true).GetValue <Slider>().Value < player.ManaPercent &&
                orbwalker.ActiveMode != Orbwalking.OrbwalkingMode.Combo && Orbwalking.CanMove(100))
            {
                if (target != null && Q.CanCast(target) && target.IsValidTarget())
                {
                    Q.CastIfHitchanceEquals(
                        target, CombatHelper.GetHitChance(config.Item("qHit", true).GetValue <Slider>().Value),
                        config.Item("packets").GetValue <bool>());
                }
            }
        }
Exemplo n.º 15
0
        private static void Combo()
        {
            var useQ = _config.Item("UseQC").GetValue <bool>();
            var useW = _config.Item("UseWC").GetValue <bool>();

            if (useQ && !HavePassivee && !_player.IsDashing())
            {
                var t = TargetSelector.GetTarget(_q1.Range, TargetSelector.DamageType.Physical);
                if (t.IsValidTarget(_q1.Range) && _q.IsReady() && !t.HasBuffOfType(BuffType.Invulnerability))
                {
                    ExtendedQ();
                }
                else if (t.IsValidTarget(_q.Range) && _q.IsReady() && !t.HasBuffOfType(BuffType.Invulnerability))
                {
                    CastQ();
                }
            }
            if (useW && _w.IsReady() && !HavePassivee && !_player.IsDashing() && !_q.IsReady())
            {
                var t     = TargetSelector.GetTarget(_w.Range, TargetSelector.DamageType.Magical);
                var predW = _w.GetPrediction(t);
                if (t.IsValidTarget(_w.Range) && predW.Hitchance >= HitChance.Medium && predW.CollisionObjects.Count == 0)
                {
                    _w.Cast(t, false, true);
                }
                else if (t.IsValidTarget(_w2.Range) && predW.Hitchance >= HitChance.Medium)
                {
                    _w2.Cast(t, false, true);
                }
            }
            var useE = _config.Item("UseEC").GetValue <bool>();

            if (Orbwalker.ActiveMode != Orbwalking.OrbwalkingMode.Combo)
            {
                return;
            }
            if (useE && _e.IsReady() &&
                !_player.HasBuff("LucianR") && !HavePassivee)
            {
                var ta = TargetSelector.GetTarget(_q1.Range, TargetSelector.DamageType.Physical);
                if (ta == null)
                {
                    return;
                }
                if (ObjectManager.Player.Position.Extend(Game.CursorPos, 700).CountEnemiesInRange(700) <= 1)
                {
                    if (!ta.UnderTurret() && ta.IsValidTarget(_q.Range) && !Orbwalking.InAutoAttackRange(ta))
                    {
                        _e.Cast(ObjectManager.Player.Position.Extend(Game.CursorPos, 450));
                    }
                    else if (ta.UnderTurret() && _e.IsReady() && ta.IsValidTarget(_q.Range + _e.Range))
                    {
                        if (_q.ManaCost + _e.ManaCost < _player.Mana && ta.Health < _q.GetDamage(ta))
                        {
                            _e.Cast(ObjectManager.Player.Position.Extend(Game.CursorPos, 450));
                            CastQ();
                        }
                        else if (ta.Health < _player.GetAutoAttackDamage(ta, true) * 2 && ta.IsValidTarget())
                        {
                            _e.Cast(ObjectManager.Player.Position.Extend(Game.CursorPos, 450));
                        }
                    }
                }
            }
            UseItemes();
        }
Exemplo n.º 16
0
 private void OnGapcloser(Obj_AI_Hero target, GapcloserArgs Args)
 {
     if (target != null && Args.EndPosition.Distance(Player) < Q.Range && Q.Ready && !target.IsDashing() &&
         target.IsValidTarget(Q.Range))
     {
         Q.Cast(Args.EndPosition);
     }
 }
Exemplo n.º 17
0
        public static bool IsCondemnableVHRPlugin(this Obj_AI_Hero hero)
        {
            if (!hero.IsValidTarget(550f) || hero.HasBuffOfType(BuffType.SpellShield) ||
                hero.HasBuffOfType(BuffType.SpellImmunity) || hero.IsDashing())
            {
                return(false);
            }

            //values for pred calc pP = player position; p = enemy position; pD = push distance
            var pP = Heroes.Player.ServerPosition;
            var p  = hero.ServerPosition;
            var pD = PRADAHijacker.HijackedMenu.Item("EPushDist").GetValue <Slider>().Value;


            if ((p.Extend(pP, -pD).IsCollisionable() || p.Extend(pP, -pD / 2f).IsCollisionable() ||
                 p.Extend(pP, -pD / 3f).IsCollisionable()))
            {
                if (!hero.CanMove ||
                    (hero.IsWindingUp))
                {
                    return(true);
                }

                var enemiesCount = ObjectManager.Player.CountEnemiesInRange(1200);
                if (enemiesCount > 1 && enemiesCount <= 3)
                {
                    var prediction = Program.E.GetPrediction(hero);
                    for (var i = 15; i < pD; i += 75)
                    {
                        var posFlags = NavMesh.GetCollisionFlags(
                            prediction.UnitPosition.To2D()
                            .Extend(
                                pP.To2D(),
                                -i)
                            .To3D());
                        if (posFlags.HasFlag(CollisionFlags.Wall) || posFlags.HasFlag(CollisionFlags.Building))
                        {
                            return(true);
                        }
                    }
                    return(false);
                }
                else
                {
                    var         hitchance      = PRADAHijacker.HijackedMenu.Item("EHitchance").GetValue <Slider>().Value;
                    var         angle          = 0.20 * hitchance;
                    const float travelDistance = 0.5f;
                    var         alpha          = new Vector2((float)(p.X + travelDistance * Math.Cos(Math.PI / 180 * angle)),
                                                             (float)(p.X + travelDistance * Math.Sin(Math.PI / 180 * angle)));
                    var beta = new Vector2((float)(p.X - travelDistance * Math.Cos(Math.PI / 180 * angle)),
                                           (float)(p.X - travelDistance * Math.Sin(Math.PI / 180 * angle)));

                    for (var i = 15; i < pD; i += 100)
                    {
                        if (pP.To2D().Extend(alpha,
                                             i)
                            .To3D().IsCollisionable() && pP.To2D().Extend(beta, i).To3D().IsCollisionable())
                        {
                            return(true);
                        }
                    }
                    return(false);
                }
            }
            return(false);
        }
Exemplo n.º 18
0
        /// <summary>
        ///     Combo Function
        /// </summary>
        // ReSharper disable once FunctionComplexityOverflow
        private void Combo()
        {
            var packets = menu.GetValue <bool>(YasuoMenu.MiscPacketsName);                     // => Packets
            var target  = TargetSelector.GetTarget(1200f, TargetSelector.DamageType.Physical); // => Target

            var useE = menu.GetValue <bool>(YasuoMenu.ComboEName);                             // => Use E

            // => E Function
            if (useE && YasuoSpells.E.IsReady())
            {
                var eMode = menu.GetValue <StringList>(YasuoMenu.ComboGapcloserModeName).SelectedIndex;
                // => Gapcloser Mode
                var efMode = menu.GetValue <bool>(YasuoMenu.ComboGapcloserFModeName); // => Gapcloser Follow Mode

                // => Mouse mode
                if (eMode == 0)
                {
                    var dashData = player.GetDashData(Game.CursorPos);
                    if (dashData != null && dashData.Value.ObjAiBase.IsValidTarget())
                    {
                        if (Environment.TickCount - _sweepingBladeDelay > 300)
                        {
                            if (dashData.Value.Vector3.Distance(Game.CursorPos) <
                                Yasuo.Player.Distance(Game.CursorPos) - 100 &&
                                dashData.Value.Vector3.Distance(Game.CursorPos) <
                                Yasuo.Menu.GetValue <Slider>(YasuoMenu.ComboERangeName).Value)
                            {
                                YasuoSpells.E.Cast(dashData.Value.ObjAiBase, packets);
                                DashingEnd          = player.GetDashingEnd(dashData.Value.ObjAiBase);
                                _sweepingBladeDelay = LastSweepingBladeTick = Environment.TickCount;
                            }
                        }
                    }
                }
                else
                {
                    // => Target mode
                    if (!target.IsValidTarget())
                    {
                        return;
                    }


                    if (player.Distance(target.ServerPosition) < player.GetAutoAttackRange() && efMode ||
                        player.Distance(target.ServerPosition) > player.GetAutoAttackRange())
                    {
                        var dashData = player.GetDashData(target.ServerPosition, target);
                        if (dashData != null && dashData.Value.ObjAiBase.IsValidTarget())
                        {
                            if (Environment.TickCount - _sweepingBladeDelay > 300)
                            {
                                if (dashData.Value.Vector3.Distance(target.ServerPosition) <
                                    Yasuo.Player.Distance(target.ServerPosition) - 100 &&
                                    dashData.Value.Vector3.Distance(target.ServerPosition) <
                                    Yasuo.Menu.GetValue <Slider>(YasuoMenu.ComboERangeName).Value)
                                {
                                    YasuoSpells.E.Cast(dashData.Value.ObjAiBase, packets);
                                    DashingEnd          = player.GetDashingEnd(dashData.Value.ObjAiBase);
                                    _sweepingBladeDelay = LastSweepingBladeTick = Environment.TickCount;
                                }
                            }
                        }
                    }
                }
            }

            if (!target.IsValidTarget())
            {
                return;
            }

            var useQ  = menu.GetValue <bool>(YasuoMenu.ComboQName);  // => Use Q
            var use3Q = menu.GetValue <bool>(YasuoMenu.Combo3QName); // => Use 3rd Q
            var useR  = menu.GetValue <bool>(YasuoMenu.ComboRName);  // => Use R

            // => Q Function
            if (useQ && !player.HasWhirlwind() && YasuoSpells.Q.QStage0.IsReady())
            {
                // => Dashing
                if (player.IsDashing())
                {
                    // => Prediction Distance
                    if (player.Distance(target.ServerPosition) < YasuoSpells.Q.DashingRange - 50f &&
                        DashingEnd.Distance(target.ServerPosition) < YasuoSpells.Q.DashingRange - 50f)
                    {
                        YasuoSpells.Q.QStage0.Cast(packets);
                    }
                }
                else if (Environment.TickCount - LastSweepingBladeTick > 420)
                {
                    // => Not dashing
                    var targetPosition =
                        Prediction.GetPrediction(target, YasuoSpells.Q.QStage0.Delay, 0f, target.MoveSpeed).UnitPosition;
                    // => Prediction
                    var castPosition =
                        Prediction.GetPrediction(target, YasuoSpells.Q.QStage0.Delay, 0f, YasuoSpells.Q.QStage0.Speed)
                        .CastPosition;     // => Prediction

                    // => Prediction Distance
                    if (player.Distance(targetPosition) < YasuoSpells.Q.QStage0.Range)
                    {
                        YasuoSpells.Q.QStage0.Cast(castPosition, packets);
                    }
                }
            }

            // => 3Q Function
            if (use3Q && player.HasWhirlwind() && YasuoSpells.Q.QStage1.IsReady())
            {
                // => Dashing
                if (player.IsDashing())
                {
                    // => Prediction Distance
                    if (player.Distance(target.ServerPosition) < YasuoSpells.Q.DashingRange - 50f &&
                        DashingEnd.Distance(target.ServerPosition) < YasuoSpells.Q.DashingRange - 50f)
                    {
                        YasuoSpells.Q.QStage1.Cast(packets);
                    }
                }
                else if (Environment.TickCount - LastSweepingBladeTick > 420)
                {
                    // => Prediction
                    var castPosition =
                        Prediction.GetPrediction(target, YasuoSpells.Q.QStage1.Delay, 0f, YasuoSpells.Q.QStage1.Speed)
                        .CastPosition;     // => Prediction

                    // => Prediction Distance
                    if (player.Distance(target.ServerPosition) < YasuoSpells.Q.QStage1.Range)
                    {
                        YasuoSpells.Q.QStage1.Cast(castPosition, packets);
                    }
                }
            }

            // => R Function
            if (useR && YasuoSpells.R.IsReady())
            {
                var rMode        = menu.GetValue <StringList>(YasuoMenu.ComboRModeName).SelectedIndex; // => R Mode
                var rMPercent    = menu.GetValue <Slider>(YasuoMenu.ComboRPercentName).Value;          // => R Min Enemies Health %
                var rSPercent    = menu.GetValue <Slider>(YasuoMenu.ComboRPercent2Name).Value;         // => R Min Enemy Health %
                var rSelfKnockup = menu.GetValue <bool>(YasuoMenu.ComboRSelfName);                     // => R only self knockedup enemies
                var rMin         = menu.GetValue <Slider>(YasuoMenu.ComboRMinName).Value;              // => R Min Enemies to use
                var rKnockupTime = menu.GetValue <Slider>(YasuoMenu.ComboRAirTimeName).Value;          // => R Min. Airtime
                var usedR        = false;

                if (rMode == 0 || rMode == 2)
                {
                    var targets =
                        ObjectManager.Get <Obj_AI_Hero>().FindAll(t => t.IsValidTarget() && t.IsKnockedup(rSelfKnockup));
                    if (targets.Count() >= rMin)
                    {
                        var totalPercent = targets.Sum(t => t.Health / t.MaxHealth * 100) / targets.Count();
                        if (totalPercent <= rMPercent)
                        {
                            var lowestAirtime = targets.OrderBy(t => Game.Time - t.KnockupTimeLeft()).FirstOrDefault();
                            var formula       = (float)rKnockupTime / 100;
                            if (lowestAirtime != null && lowestAirtime.KnockupTimeLeft() <= formula)
                            {
                                YasuoSpells.R.Cast(packets);
                                usedR = true;
                            }
                        }
                    }
                }
                if ((rMode == 1 || rMode == 2) && !usedR)
                {
                    if (target.IsKnockedup(rSelfKnockup))
                    {
                        var totalPercent = target.Health / target.MaxHealth * 100;
                        if (totalPercent <= rSPercent)
                        {
                            var formula = (float)rKnockupTime / 1000;
                            if (target.KnockupTimeLeft() <= formula)
                            {
                                YasuoSpells.R.Cast(packets);
                            }
                        }
                    }
                }
            }

            // => Items
            if (YasuoSpells.Tiamat.GetItem().IsOwned() && menu.GetValue <bool>(YasuoMenu.ComboItemsTiamatName))
            {
                // => Tiamat
                var item  = YasuoSpells.Tiamat.GetItem();
                var range = YasuoSpells.Tiamat.Range;

                if (item.IsReady())
                {
                    if (player.Distance(target) < range)
                    {
                        item.Cast();
                    }
                }
            }
            else if (YasuoSpells.RavenousHydra.GetItem().IsOwned() && menu.GetValue <bool>(YasuoMenu.ComboItemsHydraName))
            {
                // => Hydra
                var item  = YasuoSpells.RavenousHydra.GetItem();
                var range = YasuoSpells.RavenousHydra.Range;

                if (item.IsReady())
                {
                    if (player.Distance(target) < range)
                    {
                        item.Cast();
                    }
                }
            }

            if (YasuoSpells.BilgewaterCutlass.GetItem().IsOwned() &&
                menu.GetValue <bool>(YasuoMenu.ComboItemsBilgewaterName))
            {
                // => Bilgewater
                var item  = YasuoSpells.BilgewaterCutlass.GetItem();
                var range = YasuoSpells.BilgewaterCutlass.Range;

                if (item.IsReady())
                {
                    if (player.Distance(target) < range)
                    {
                        item.Cast(target);
                    }
                }
            }
            else if (YasuoSpells.BladeoftheRuinedKing.GetItem().IsOwned() &&
                     menu.GetValue <bool>(YasuoMenu.ComboItemsBotRkName))
            {
                // => BotRK
                var item  = YasuoSpells.BladeoftheRuinedKing.GetItem();
                var range = YasuoSpells.BladeoftheRuinedKing.Range;

                if (item.IsReady())
                {
                    if (player.Distance(target) < range)
                    {
                        item.Cast(target);
                    }
                }
            }
        }
Exemplo n.º 19
0
        private static void HandleQ(Obj_AI_Hero comboTarget)
        {
            var QPrediction = spells[SpellSlot.Q].GetPrediction(comboTarget);

            if (QPrediction.Hitchance >= HitChance.High)
            {
                if (spells[SpellSlot.Q].GetDamage(comboTarget) > comboTarget.Health + 15 && GetItemValue <bool>("dz191.bard.combo.qks"))
                {
                    spells[SpellSlot.Q].Cast(QPrediction.CastPosition);
                    return;
                }

                var QPushDistance  = GetItemValue <Slider>("dz191.bard.misc.distance").Value;
                var QAccuracy      = GetItemValue <Slider>("dz191.bard.misc.accuracy").Value;
                var PlayerPosition = ObjectManager.Player.ServerPosition;

                var BeamStartPositions = new List <Vector3>()
                {
                    QPrediction.CastPosition,
                    QPrediction.UnitPosition,
                    comboTarget.ServerPosition,
                    comboTarget.Position
                };

                if (comboTarget.IsDashing())
                {
                    BeamStartPositions.Add(comboTarget.GetDashInfo().EndPos.To3D());
                }

                var PositionsList      = new List <Vector3>();
                var CollisionPositions = new List <Vector3>();

                foreach (var position in BeamStartPositions)
                {
                    var collisionableObjects = spells[SpellSlot.Q].GetCollision(position.To2D(),
                                                                                new List <Vector2>()
                    {
                        position.Extend(PlayerPosition, -QPushDistance).To2D()
                    });

                    if (collisionableObjects.Any())
                    {
                        if (collisionableObjects.Any(h => h is Obj_AI_Hero) &&
                            (collisionableObjects.All(h => h.IsValidTarget())))
                        {
                            spells[SpellSlot.Q].Cast(QPrediction.CastPosition);
                            break;
                        }

                        for (var i = 0; i < QPushDistance; i += (int)comboTarget.BoundingRadius)
                        {
                            CollisionPositions.Add(position.Extend(PlayerPosition, -i));
                        }
                    }

                    for (var i = 0; i < QPushDistance; i += (int)comboTarget.BoundingRadius)
                    {
                        PositionsList.Add(position.Extend(PlayerPosition, -i));
                    }
                }

                if (PositionsList.Any())
                {
                    //We don't want to divide by 0 Kappa
                    var WallNumber             = PositionsList.Count(p => p.IsWall()) * 1.3f;
                    var CollisionPositionCount = CollisionPositions.Count;
                    var Percent    = (WallNumber + CollisionPositionCount) / PositionsList.Count;
                    var AccuracyEx = QAccuracy / 100f;
                    if (Percent >= AccuracyEx)
                    {
                        spells[SpellSlot.Q].Cast(QPrediction.CastPosition);
                    }
                }
            }
            else if (QPrediction.Hitchance == HitChance.Collision)
            {
                var QCollision = QPrediction.CollisionObjects;
                if (QCollision.Count == 1)
                {
                    spells[SpellSlot.Q].Cast(QPrediction.CastPosition);
                }
            }
        }
Exemplo n.º 20
0
        private bool IsCondemnable(Obj_AI_Hero hero)
        {
            if (!hero.IsValidTarget(550f) || hero.HasBuffOfType(BuffType.SpellShield) ||
                hero.HasBuffOfType(BuffType.SpellImmunity) || hero.IsDashing()) return false;

            //values for pred calc pP = player position; p = enemy position; pD = push distance
            var pP = ObjectManager.Player.ServerPosition;
            var p = hero.ServerPosition;
            var pD = EPushDistanceSlider.Value;
            var mode = EModeStringList.SelectedValue;

            if (mode == "PRADASMART" && (IsCollisionable(p.Extend(pP, -pD)) || IsCollisionable(p.Extend(pP, -pD / 2f)) ||
                                         IsCollisionable(p.Extend(pP, -pD / 3f))))
            {
                if (!hero.CanMove ||
                    (hero.IsWindingUp))
                    return true;

                var enemiesCount = ObjectManager.Player.CountEnemyHeroesInRange(1200);
                if (enemiesCount > 1 && enemiesCount <= 3)
                {
                    var prediction = E.GetPrediction(hero);
                    for (var i = 15; i < pD; i += 75)
                    {
                        if (i > pD)
                        {
                            var lastPosFlags = NavMesh.GetCollisionFlags(
                            prediction.UnitPosition.ToVector2()
                                .Extend(
                                    pP.ToVector2(),
                                    -pD)
                                .ToVector3());
                            if (lastPosFlags.HasFlag(CollisionFlags.Wall) || lastPosFlags.HasFlag(CollisionFlags.Building))
                            {
                                return true;
                            }
                            return false;
                        }
                        var posFlags = NavMesh.GetCollisionFlags(
                            prediction.UnitPosition.ToVector2()
                                .Extend(
                                    pP.ToVector2(),
                                    -i)
                                .ToVector3());
                        if (posFlags.HasFlag(CollisionFlags.Wall) || posFlags.HasFlag(CollisionFlags.Building))
                        {
                            return true;
                        }
                    }
                    return false;
                }
                else
                {
                    var hitchance = EHitchanceSlider.Value;
                    var angle = 0.20 * hitchance;
                    const float travelDistance = 0.5f;
                    var alpha = new Vector2((float)(p.X + travelDistance * Math.Cos(Math.PI / 180 * angle)),
                        (float)(p.X + travelDistance * Math.Sin(Math.PI / 180 * angle)));
                    var beta = new Vector2((float)(p.X - travelDistance * Math.Cos(Math.PI / 180 * angle)),
                        (float)(p.X - travelDistance * Math.Sin(Math.PI / 180 * angle)));

                    for (var i = 15; i < pD; i += 100)
                    {
                        if (i > pD) return false;
                        if (IsCollisionable(pP.ToVector2().Extend(alpha,
                            i)
                            .ToVector3()) && IsCollisionable(pP.ToVector2().Extend(beta, i).ToVector3())) return true;
                    }
                    return false;
                }
            }

            if (mode == "PRADAPERFECT" &&
                (IsCollisionable(p.Extend(pP, -pD)) || IsCollisionable(p.Extend(pP, -pD / 2f)) ||
                 IsCollisionable(p.Extend(pP, -pD / 3f))))
            {
                if (!hero.CanMove ||
                    (hero.IsWindingUp))
                    return true;

                var hitchance = EHitchanceSlider.Value;
                var angle = 0.20 * hitchance;
                const float travelDistance = 0.5f;
                var alpha = new Vector2((float)(p.X + travelDistance * Math.Cos(Math.PI / 180 * angle)),
                    (float)(p.X + travelDistance * Math.Sin(Math.PI / 180 * angle)));
                var beta = new Vector2((float)(p.X - travelDistance * Math.Cos(Math.PI / 180 * angle)),
                    (float)(p.X - travelDistance * Math.Sin(Math.PI / 180 * angle)));

                for (var i = 15; i < pD; i += 100)
                {
                    if (i > pD)
                    {
                        return IsCollisionable(alpha.Extend(pP.ToVector2(),
                            -pD)
                            .ToVector3()) && IsCollisionable(beta.Extend(pP.ToVector2(), -pD).ToVector3());
                    }
                    if (IsCollisionable(alpha.Extend(pP.ToVector2(),
                        -i)
                        .ToVector3()) && IsCollisionable(beta.Extend(pP.ToVector2(), -i).ToVector3())) return true;
                }
                return false;
            }

            if (mode == "OLDPRADA")
            {
                if (!hero.CanMove ||
                    (hero.IsWindingUp))
                    return true;

                var hitchance = EHitchanceSlider.Value;
                var angle = 0.20 * hitchance;
                const float travelDistance = 0.5f;
                var alpha = new Vector2((float)(p.X + travelDistance * Math.Cos(Math.PI / 180 * angle)),
                    (float)(p.X + travelDistance * Math.Sin(Math.PI / 180 * angle)));
                var beta = new Vector2((float)(p.X - travelDistance * Math.Cos(Math.PI / 180 * angle)),
                    (float)(p.X - travelDistance * Math.Sin(Math.PI / 180 * angle)));

                for (var i = 15; i < pD; i += 100)
                {
                    if (IsCollisionable(pP.ToVector2().Extend(alpha,
                        i)
                        .ToVector3()) || IsCollisionable(pP.ToVector2().Extend(beta, i).ToVector3())) return true;
                }
                return false;
            }

            if (mode == "MARKSMAN")
            {
                var prediction = E.GetPrediction(hero);
                return NavMesh.GetCollisionFlags(
                    prediction.UnitPosition.ToVector2()
                        .Extend(
                            pP.ToVector2(),
                            -pD)
                        .ToVector3()).HasFlag(CollisionFlags.Wall) ||
                       NavMesh.GetCollisionFlags(
                           prediction.UnitPosition.ToVector2()
                               .Extend(
                                   pP.ToVector2(),
                                   -pD / 2f)
                               .ToVector3()).HasFlag(CollisionFlags.Wall);
            }

            if (mode == "SHARPSHOOTER")
            {
                var prediction = E.GetPrediction(hero);
                for (var i = 15; i < pD; i += 100)
                {
                    if (i > pD) return false;
                    var posCF = NavMesh.GetCollisionFlags(
                        prediction.UnitPosition.ToVector2()
                            .Extend(
                                pP.ToVector2(),
                                -i)
                            .ToVector3());
                    if (posCF.HasFlag(CollisionFlags.Wall) || posCF.HasFlag(CollisionFlags.Building))
                    {
                        return true;
                    }
                }
                return false;
            }

            if (mode == "GOSU")
            {
                var prediction = E.GetPrediction(hero);
                for (var i = 15; i < pD; i += 75)
                {
                    var posCF = NavMesh.GetCollisionFlags(
                        prediction.UnitPosition.ToVector2()
                            .Extend(
                                pP.ToVector2(),
                                -i)
                            .ToVector3());
                    if (posCF.HasFlag(CollisionFlags.Wall) || posCF.HasFlag(CollisionFlags.Building))
                    {
                        return true;
                    }
                }
                return false;
            }

            if (mode == "VHR")
            {
                var prediction = E.GetPrediction(hero);
                for (var i = 15; i < pD; i += (int)hero.BoundingRadius) //:frosty:
                {
                    var posCF = NavMesh.GetCollisionFlags(
                        prediction.UnitPosition.ToVector2()
                            .Extend(
                                pP.ToVector2(),
                                -i)
                            .ToVector3());
                    if (posCF.HasFlag(CollisionFlags.Wall) || posCF.HasFlag(CollisionFlags.Building))
                    {
                        return true;
                    }
                }
                return false;
            }

            if (mode == "PRADALEGACY")
            {
                var prediction = E.GetPrediction(hero);
                for (var i = 15; i < pD; i += 75)
                {
                    var posCF = NavMesh.GetCollisionFlags(
                        prediction.UnitPosition.ToVector2()
                            .Extend(
                                pP.ToVector2(),
                                -i)
                            .ToVector3());
                    if (posCF.HasFlag(CollisionFlags.Wall) || posCF.HasFlag(CollisionFlags.Building))
                    {
                        return true;
                    }
                }
                return false;
            }

            if (mode == "FASTEST" &&
                (IsCollisionable(p.Extend(pP, -pD)) || IsCollisionable(p.Extend(pP, -pD / 2f)) ||
                 IsCollisionable(p.Extend(pP, -pD / 3f))))
            {
                return true;
            }

            return false;
        }
Exemplo n.º 21
0
        private void Combo()
        {
            Obj_AI_Hero target = getTarget();

            if (target == null)
            {
                return;
            }
            if (config.Item("useItems").GetValue <bool>())
            {
                ItemHandler.UseItems(target, config, ComboDamage(target));
            }
            if (config.Item("usee", true).GetValue <bool>() && player.HasBuff("KennenLightningRush") &&
                player.Health > target.Health && !target.UnderTurret(true) && target.Distance(Game.CursorPos) < 250f)
            {
                orbwalker.SetMovement(false);
                player.IssueOrder(GameObjectOrder.MoveTo, target);
            }
            bool hasIgnite   = player.Spellbook.CanUseSpell(player.GetSpellSlot("SummonerDot")) == SpellState.Ready;
            var  combodamage = ComboDamage(target);
            var  ignitedmg   = (float)player.GetSummonerSpellDamage(target, Damage.SummonerSpell.Ignite);

            if (config.Item("useIgnite").GetValue <bool>() && ignitedmg > target.Health && hasIgnite &&
                !Q.CanCast(target) && !W.IsReady())
            {
                player.Spellbook.CastSpell(player.GetSpellSlot("SummonerDot"), target);
            }

            if (config.Item("useq", true).GetValue <bool>() && Q.CanCast(target) && Orbwalking.CanMove(100) &&
                !target.IsDashing())
            {
                if (Program.IsSPrediction)
                {
                    Q.SPredictionCast(target, HitChance.High);
                }
                else
                {
                    Q.CastIfHitchanceEquals(target, HitChance.High);
                }
            }
            if (config.Item("usew", true).GetValue <bool>() && W.IsReady())
            {
                if (player.HasBuff("KennenShurikenStorm"))
                {
                    if (HeroManager.Enemies.Count(e => e.Distance(player) < R.Range && MarkOfStorm(e) > 0) ==
                        player.CountEnemiesInRange(R.Range))
                    {
                        W.Cast();
                    }
                }
                else if (W.Range > player.Distance(target) && MarkOfStorm(target) > 0)
                {
                    W.Cast();
                }
            }
            if (config.Item("usee", true).GetValue <bool>() && !target.UnderTurret(true) && E.IsReady() &&
                (player.Distance(target) < 80 ||
                 (!player.HasBuff("KennenLightningRush") && !Q.CanCast(target) &&
                  config.Item("useemin", true).GetValue <Slider>().Value < player.Health / player.MaxHealth * 100 &&
                  MarkOfStorm(target) > 0 &&
                  CombatHelper.IsPossibleToReachHim(target, 1f, new float[5] {
                2f, 2f, 2f, 2f, 2f
            }[Q.Level - 1]))))
            {
                E.Cast();
            }

            if (R.IsReady() && !player.HasBuffOfType(BuffType.Snare) &&
                (config.Item("user", true).GetValue <Slider>().Value <=
                 player.CountEnemiesInRange(config.Item("userrange", true).GetValue <Slider>().Value) ||
                 (config.Item("usertarget", true).GetValue <bool>() &&
                  player.CountEnemiesInRange(config.Item("userrange", true).GetValue <Slider>().Value) == 1 &&
                  combodamage + player.GetAutoAttackDamage(target) * 3 > target.Health && !Q.CanCast(target) &&
                  player.Distance(target) < config.Item("userrange", true).GetValue <Slider>().Value)) ||
                (config.Item("userLow", true).GetValue <Slider>().Value <=
                 HeroManager.Enemies.Count(
                     e =>
                     e.IsValidTarget(config.Item("userrange", true).GetValue <Slider>().Value) &&
                     e.HealthPercent < 75)))
            {
                R.Cast();
            }
        }
Exemplo n.º 22
0
        public static bool SpellPrediction(Spell spell, Obj_AI_Hero target, bool collisionable)
        {
            //
            var dist   = ObjectManager.Player.Distance(target.Position);
            var pos1   = LeagueSharp.Common.Prediction.GetPrediction(target, dist / spell.Speed).UnitPosition - 40;
            var dister = target.Position.Extend(target.GetWaypoints()[1].To3D(), target.GetWaypoints()[1].To3D().Distance(target.Position) + 50);
            //  var pos1 = LeagueSharp.Common.Prediction.GetPrediction(target, dist / spell.Speed).UnitPosition - 40;
            var wts  = Drawing.WorldToScreen(target.Position);
            var wtsx = target.GetWaypoints()[1];

            Drawing.DrawLine(wts[0], wts[1], wtsx[0], wtsx[1], 2f, System.Drawing.Color.Red);
            var e = pos1.Distance(target.GetWaypoints()[1].To3D());

            pos1.Extend(target.GetWaypoints()[1].To3D(), -e);
            Render.Circle.DrawCircle(dister, 10, System.Drawing.Color.GreenYellow, 2);
            Render.Circle.DrawCircle(pos1, 10, System.Drawing.Color.BlueViolet, 2);
//
            var point = PointsAroundTheTarget(target.Position, target.BoundingRadius + 50).FirstOrDefault(t => t.IsWall());

            if (point.X != 0 && point.Y != 0 && point.Z != 0)
            {
                if (MinionCollideLine(ObjectManager.Player.Position, ExtendWallpos(target, point), spell, collisionable))
                {
                    return(false);
                }

                Render.Circle.DrawCircle(ExtendWallpos(target, point), 10, System.Drawing.Color.Brown, 2);
                spell.Cast(ExtendWallpos(target, point));
                return(true);
            }
            else
            {
                var range = spell.Range;
                if (target.Position.Distance(ObjectManager.Player.Position) < target.GetWaypoints()[1].Distance(ObjectManager.Player.Position))
                {
                    range -= 100;
                }

                if (!spell.IsInRange(target, range))
                {
                    return(false);
                }

                /*if (target.IsFacing(ObjectManager.Player) && target.Position.Distance(ObjectManager.Player.Position) > target.GetWaypoints()[1].Distance(ObjectManager.Player.Position))
                 * {
                 * if (MinionCollideLine(ObjectManager.Player.Position, target.Position, spell,collisionable)) return false;
                 *
                 *  {
                 *      Game.PrintChat("Casteando por inface");
                 *     spell.Cast(target.Position);
                 *
                 *      return true;
                 *  }
                 *
                 * }*/
                // code of dashes
                if (target.IsDashing())
                {
                    float timeforArrive = (target.Position.Distance(target.GetDashInfo().EndPos.To3D())) / target.GetDashInfo().Speed;
                    float grabtime      = (ObjectManager.Player.Position.Distance(target.GetDashInfo().EndPos.To3D())
                                           / spell.Speed) + spell.Delay;
                    if (timeforArrive < grabtime)
                    {
                        spell.Cast(target.GetDashInfo().EndPos);
                        return(true);
                    }
                }

                /* if (target.IsImmovable) // check for cc guys
                 * {
                 *   if (MinionCollideLine(ObjectManager.Player.Position, target.Position, spell,collisionable)) return false;
                 *   spell.Cast(target.Position);
                 *   return true;
                 * }*/

                //  if(target.IsChannelingImportantSpell())
                if (target.IsWindingUp && !target.IsMelee())
                {
                    if (MinionCollideLine(ObjectManager.Player.Position, target.Position, spell, collisionable))
                    {
                        return(false);
                    }
                    spell.Cast(target.Position);
                    return(true);
                }

                if (target.Position.Distance(ObjectManager.Player.Position) <= 300)
                {
                    CastToDirection(target, spell, collisionable);
                }
                else
                {
                    var oldPos = target.GetWaypoints()[0].To3D();
                    var h      = false;
                    Utility.DelayAction.Add(Game.Ping + 1000, () => h = Next(target, oldPos, spell, collisionable));
                    return(h);
                }
            }
            return(false);
        }
Exemplo n.º 23
0
        private void Game_OnGameUpdate(EventArgs args)
        {
            orbwalker.SetMovement(true);
            if (player.HasBuff("KennenLightningRush"))
            {
                orbwalker.SetAttack(false);
            }
            else
            {
                orbwalker.SetAttack(true);
            }
            if (FpsBalancer.CheckCounter())
            {
                return;
            }
            Obj_AI_Hero target = getTarget();

            switch (orbwalker.ActiveMode)
            {
            case Orbwalking.OrbwalkingMode.Combo:
                Combo();
                break;

            case Orbwalking.OrbwalkingMode.Mixed:
                Harass();
                break;

            case Orbwalking.OrbwalkingMode.LaneClear:
                Clear();
                break;

            case Orbwalking.OrbwalkingMode.LastHit:
                LastHit();
                break;

            default:
                break;
            }
            if (target == null)
            {
                return;
            }
            var data = Program.IncDamages.GetAllyData(player.NetworkId);

            if (data != null && player.HasBuff("KennenShurikenStorm") &&
                (config.Item("Minhelath", true).GetValue <Slider>().Value > player.Health / player.MaxHealth * 100 ||
                 (data.IsAboutToDie && config.Item("Minhelath", true).GetValue <Slider>().Value > 0)))
            {
                if (Items.HasItem(ItemHandler.Wooglet.Id) && Items.CanUseItem(ItemHandler.Wooglet.Id))
                {
                    ItemHandler.Wooglet.Cast();
                }
                if (Items.HasItem(ItemHandler.Zhonya.Id) && Items.CanUseItem(ItemHandler.Zhonya.Id))
                {
                    ItemHandler.Zhonya.Cast();
                }
            }
            if (config.Item("autoq", true).GetValue <bool>())
            {
                if (Q.CanCast(target) && !target.IsDashing() &&
                    (MarkOfStorm(target) > 1 || (MarkOfStorm(target) > 0 && player.Distance(target) < W.Range)))
                {
                    Q.Cast(target);
                }
            }
            if (config.Item("autow", true).GetValue <bool>() && W.IsReady() && MarkOfStorm(target) > 1 &&
                !player.HasBuff("KennenShurikenStorm"))
            {
                if (player.Distance(target) < W.Range)
                {
                    W.Cast();
                }
            }
            if (config.Item("KenAutoQ", true).GetValue <KeyBind>().Active&& Q.IsReady() &&
                config.Item("KenminmanaaQ", true).GetValue <Slider>().Value < player.ManaPercent &&
                orbwalker.ActiveMode != Orbwalking.OrbwalkingMode.Combo && Orbwalking.CanMove(100) &&
                !player.UnderTurret(true))
            {
                if (target != null && Q.CanCast(target) && target.IsValidTarget())
                {
                    Q.CastIfHitchanceEquals(
                        target, CombatHelper.GetHitChance(config.Item("qHit", true).GetValue <Slider>().Value));
                }
            }
        }
Exemplo n.º 24
0
        static void Drawing_OnDraw(EventArgs args)
        {
            if (!Menu.Item("switch").GetValue<Boolean>())
                return;

            Target = TargetSelector.GetSelectedTarget() != null ? TargetSelector.GetSelectedTarget() : Player;

            var buffs = string.Empty;

            foreach (var buff in Target.Buffs)
            {
                buffs += "\n" + buff.Name + "[Count: " + buff.Count + "/Duration: " + (buff.EndTime - Game.ClockTime).ToString("0.00") +"],";
            }

            var Mobs = MinionManager.GetMinions(1500, MinionTypes.All, MinionTeam.NotAlly, MinionOrderTypes.MaxHealth);
            var MobsList = string.Empty;

            foreach (var Mob in Mobs)
            {
                MobsList += "\n" + Mob.Name + "[Skinname: " + Mob.SkinName + "/HP: " + Mob.Health + " / " + Mob.MaxHealth + "(" + Mob.HealthPercent.ToString("0.0") + "%)],";
            }

            Render.Circle.DrawCircle(Player.Position, 1500, Color.Red, 10);

            Text.text =
                //"Name: " + Target.Name + NewLine +
                "ChampionName: " + Target.ChampionName + NewLine +
                "SkinName: " + Target.SkinName + NewLine +
                //"Gold: " + Target.Gold + NewLine +
                //"Level: " + Target.Level + NewLine +
                "TotalAttackDamage: " + Utility.TotalAttackDamage(Target) + NewLine +
                "TotalMagicalDamage: " + Utility.TotalMagicalDamage(Target) + NewLine +
                "Armor: " + Target.Armor + NewLine +
                "Health: " + Target.Health + " / " + Target.MaxHealth + " (" + Target.HealthPercent.ToString("0.0") + "%)" + NewLine +
                "Mana: " + Target.Mana + " / " + Target.MaxMana + " (" + Target.HealthPercent.ToString("0.0") + "%)" + NewLine +
                "HPRegenRate: " + Target.HPRegenRate + NewLine +
                "PARRegenRate: " + Target.PARRegenRate + NewLine +
                "Experience: " + Target.Experience + NewLine +
                "Position: " + Target.Position + NewLine +
                "ServerPosition: " + Target.ServerPosition + NewLine +
                "Team: " + Target.Team + NewLine +
                "NetworkId: " + Target.NetworkId + NewLine +
                "MoveSpeed: " + Target.MoveSpeed + NewLine +
                "AttackRange: " + Target.AttackRange + NewLine +
                "RealAutoAttackRange: " + Orbwalking.GetRealAutoAttackRange(Target) + NewLine +
                //"DeathDuration: " + Target.DeathDuration + NewLine +
                "BoundingRadius: " + Target.BoundingRadius + NewLine +
                NewLine +
                "Buffs: " + buffs + NewLine +
                NewLine +
                "IsDead: " + Target.IsDead + NewLine +
                "IsImmovable: " + Target.IsImmovable + NewLine +
                "IsInvulnerable: " + Target.IsInvulnerable + NewLine +
                "IsMoving: " + Target.IsMoving + NewLine +
                "IsPacified: " + Target.IsPacified + NewLine +
                "IsTargetable: " + Target.IsTargetable + NewLine +
                "IsWindingUp: " + Target.IsWindingUp + NewLine +
                "IsZombie: " + Target.IsZombie + NewLine +
                "IsRecalling: " + Target.IsRecalling() + NewLine +
                "IsStunned: " + Target.IsStunned + NewLine +
                "IsRooted: " + Target.IsRooted + NewLine +
                "IsMelee: " + Target.IsMelee() + NewLine +
                "IsDashing: " + Target.IsDashing() + NewLine +
                "IsAlly: " + Target.IsAlly + NewLine +
                "IsCanMove: " + Orbwalking.CanMove(1) + NewLine +
                "UnderTurret: " + Target.UnderTurret() + NewLine +
                NewLine +
                "Mobs: " + MobsList + NewLine +
                NewLine +
                "Game_CursorPos: " + Game.CursorPos + NewLine +
                "Game_ClockTime: " + Game.ClockTime + NewLine +
                "Game_Time: " + Game.Time + NewLine +
                "Game_Type: " + Game.Type + NewLine +
                "Game_Version: " + Game.Version + NewLine +
                "Game_Region: " + Game.Region + NewLine +
                "Game_IP: " + Game.IP + NewLine +
                "Game_Port: " + Game.Port + NewLine +
                "Game_Ping: " + Game.Ping + NewLine +
                "Game_Mode: " + Game.Mode + NewLine +
                "Game_MapId: " + Game.MapId + NewLine +
                "Game_MapName: " + Utility.Map.GetMap().Name
                ;

            Text.OnEndScene();
        }
Exemplo n.º 25
0
        private static void Combo()
        {
            if (Q.IsReady() && Config.Item("qCombo").GetValue <bool>())
            {
                foreach (var enemy in HeroManager.Enemies.Where(hero => hero.IsValidTarget(Q.Range)))
                {
                    float dZ = Player.Position.Distance(enemy.Position);
                    if (hCannon())
                    {
                        if (dZ <= 600)
                        {
                            Q.Cast();
                        }
                    }
                    else
                    {
                        if (dZ > 600)
                        {
                            Q.Cast();
                        }
                    }
                }
            }

            if (W.IsReady() && Config.Item("wCombo").GetValue <bool>())
            {
                foreach (var enemyW in HeroManager.Enemies.Where(hero => hero.IsValidTarget(W.Range)))
                {
                    if (W.GetPrediction(enemyW).Hitchance >= HitChance.Medium && !Player.IsWindingUp && !Player.IsDashing())
                    {
                        W.Cast(enemyW);
                    }
                }
            }
            if (E.IsReady() && Config.Item("eCombo").GetValue <bool>())
            {
                foreach (var enemyE in HeroManager.Enemies.Where(hero => hero.IsValidTarget(E.Range)))
                {
                    if (!CanMove(enemyE))
                    {
                        E.Cast(enemyE.Position, true);
                    }
                }
            }
            if (R.IsReady() && Config.Item("rCombo").GetValue <bool>())
            {
                var rDistance = Config.Item("maxR").GetValue <Slider>().Value;
                foreach (var enemyR in HeroManager.Enemies.Where(hero => CollisionCheckerino(Player, hero, R.Width) && hero.IsValidTarget(rDistance)))
                {
                    if (!enemyR.IsZombie && enemyR.Health < R.GetDamage(enemyR))
                    {
                        R.Cast(enemyR);
                    }
                }
            }
        }
Exemplo n.º 26
0
        private void CastR()
        {
            if (!R.IsReady())
            {
                return;
            }

            var target = TargetSelector.GetTarget(R.Range, TargetSelector.DamageType.Magical);

            if (!target.IsValidTarget(R.Range))
            {
                return;
            }

            var minDelay  = MenuService.SliderLinks["Misc_r_min_delay"].Value.Value;
            var maxDelay  = MenuService.SliderLinks["Misc_r_max_delay"].Value.Value;
            var dashDelay = MenuService.SliderLinks["Misc_r_dash"].Value.Value;

            if (_rTarget == null)
            {
                _rTarget = target;
            }
            else if (_rTarget.NetworkId != target.NetworkId)
            {
                var time = _rTarget.Distance(target);
                if (time > 3000)
                {
                    time = 3000;
                }

                _rTargetChangedWaitTime = Utils.TickCount + (int)time;
                _rTarget = target;
            }

            if ((Player.LastCastedSpellName().ToLower() == "summonerflash" && Player.LastCastedSpellT() > Utils.TickCount - 100) || _rTarget.IsDashing())
            {
                _dashWaitTime = Utils.TickCount + dashDelay;
            }

            if (Utils.TickCount >= _rTargetChangedWaitTime &&
                Utils.TickCount >= _dashWaitTime &&
                Utils.TickCount >= Player.LastCastedSpellT() + minDelay)
            {
                if (R.GetPrediction(_rTarget).Hitchance >= HitChance.VeryHigh)
                {
                    R.Cast(_rTarget, IsPacketCastEnabled);
                }
                if (R.GetPrediction(_rTarget).Hitchance >= HitChance.High && Utils.TickCount >= Player.LastCastedSpellT() + maxDelay)
                {
                    R.Cast(_rTarget, IsPacketCastEnabled);
                }
            }
        }
Exemplo n.º 27
0
        public static bool IsCondemnable(this Obj_AI_Hero hero)
        {
            if (!hero.IsValidTarget(550f) || hero.HasBuffOfType(BuffType.SpellShield) ||
                hero.HasBuffOfType(BuffType.SpellImmunity) || hero.IsDashing())
            {
                return(false);
            }

            //values for pred calc pP = player position; p = enemy position; pD = push distance
            var pP   = Heroes.Player.ServerPosition;
            var p    = hero.ServerPosition;
            var pD   = Program.ComboMenu.Item("EPushDist").GetValue <Slider>().Value;
            var mode = Program.ComboMenu.Item("EMode").GetValue <StringList>().SelectedValue;

            if (mode == "PRADA" &&
                (p.Extend(pP, -pD).IsCollisionable() || p.Extend(pP, -pD / 2f).IsCollisionable() ||
                 p.Extend(pP, -pD / 3f).IsCollisionable()))
            {
                if (!hero.CanMove ||
                    (hero.IsWindingUp && Program.ComboMenu.Item("EHitchance").GetValue <Slider>().Value < 100))
                {
                    return(true);
                }

                if (Program.ComboMenu.Item("EHitchance").GetValue <Slider>().Value <= 85)
                {
                    var prediction = Program.E.GetPrediction(hero);
                    for (var i = 15; i < pD; i += 75)
                    {
                        var posCF = NavMesh.GetCollisionFlags(
                            prediction.UnitPosition.To2D()
                            .Extend(
                                pP.To2D(),
                                -i)
                            .To3D());
                        if (posCF.HasFlag(CollisionFlags.Wall) || posCF.HasFlag(CollisionFlags.Building))
                        {
                            return(true);
                        }
                    }
                    return(false);
                }

                var eT = 0.063 + Game.Ping / 2000f + 0.06;
                eT += (double)Program.ComboMenu.Item("EHitchance").GetValue <Slider>().Value *4 / 1000;
                var d = hero.MoveSpeed * eT;

                var pList = new List <Vector3>();
                pList.Add(hero.ServerPosition);


                for (var i = 0; i <= 360; i += 60)
                {
                    var v3 = new Vector2((int)(p.X + d * Math.Cos(i)), (int)(p.Y - d * Math.Sin(i))).To3D();
                    pList.Add(v3.Extend(pP, -pD));
                }

                return(pList.All(el => el.IsCollisionable()));
            }

            if (mode == "MARKSMAN")
            {
                var prediction = Program.E.GetPrediction(hero);
                return(NavMesh.GetCollisionFlags(
                           prediction.UnitPosition.To2D()
                           .Extend(
                               pP.To2D(),
                               -pD)
                           .To3D()).HasFlag(CollisionFlags.Wall) ||
                       NavMesh.GetCollisionFlags(
                           prediction.UnitPosition.To2D()
                           .Extend(
                               pP.To2D(),
                               -pD / 2f)
                           .To3D()).HasFlag(CollisionFlags.Wall));
            }

            if (mode == "GOSU")
            {
                var prediction = Program.E.GetPrediction(hero);
                for (var i = 15; i < pD; i += 100)
                {
                    var posCF = NavMesh.GetCollisionFlags(
                        prediction.UnitPosition.To2D()
                        .Extend(
                            pP.To2D(),
                            -i)
                        .To3D());
                    if (posCF.HasFlag(CollisionFlags.Wall) || posCF.HasFlag(CollisionFlags.Building))
                    {
                        return(true);
                    }
                }
                return(false);
            }

            if (mode == "SHARPSHOOTER")
            {
                var prediction = Program.E.GetPrediction(hero);
                for (var i = 15; i < pD; i += 75)
                {
                    var posCF = NavMesh.GetCollisionFlags(
                        prediction.UnitPosition.To2D()
                        .Extend(
                            pP.To2D(),
                            -i)
                        .To3D());
                    if (posCF.HasFlag(CollisionFlags.Wall) || posCF.HasFlag(CollisionFlags.Building))
                    {
                        return(true);
                    }
                }
                return(false);
            }

            if (mode == "VHREWORK")
            {
                var prediction = Program.E.GetPrediction(hero);
                for (var i = 15; i < pD; i += (int)hero.BoundingRadius)  //:frosty:
                {
                    var posCF = NavMesh.GetCollisionFlags(
                        prediction.UnitPosition.To2D()
                        .Extend(
                            pP.To2D(),
                            -i)
                        .To3D());
                    if (posCF.HasFlag(CollisionFlags.Wall) || posCF.HasFlag(CollisionFlags.Building))
                    {
                        return(true);
                    }
                }
                return(false);
            }
            return(false);
        }
Exemplo n.º 28
0
        private static void OrbwalkerBestPosition(Obj_AI_Hero target)
        {
            if (target == null || !target.IsValid || target.IsDead || target.IsZombie || target.IsDashing())
            {
                Orbwalker.SetOrbwalkingPoint(Vector3.Zero);
                return;
            }
            var BestPosition = Vector3.Zero;

            float Wrange = IsWActive ? W.Range - 20 : 350;

            var points = CirclePoints(target.Position, Wrange);

            foreach (var point in points.Where(p => !p.IsWall()))
            {
                if (BestPosition == Vector3.Zero || Game.CursorPos.Distance(point) < Game.CursorPos.Distance(BestPosition))
                {
                    BestPosition = point;
                }
            }

            if (BestPosition == Vector3.Zero)
            {
                Orbwalker.SetOrbwalkingPoint(Vector3.Zero);

            }
            else
            {
                Orbwalker.SetOrbwalkingPoint(BestPosition);
            }
        }
Exemplo n.º 29
0
        bool IsCondemnable(Obj_AI_Hero hero)
        {
            if (!hero.IsValidTarget(550f) || hero.HasBuffOfType(BuffType.SpellShield) ||
                hero.HasBuffOfType(BuffType.SpellImmunity) || hero.IsDashing()) return false;
            var pP = Heroes.Player.ServerPosition;
            var pD = 425;

            var prediction = E.GetPrediction(hero);
            for (var i = 15; i < pD; i += 100)
            {
                var posCF = NavMesh.GetCollisionFlags(
                    prediction.UnitPosition.To2D()
                        .Extend(
                            pP.To2D(),
                            -i)
                        .To3D());
                if (posCF.HasFlag(CollisionFlags.Wall) || posCF.HasFlag(CollisionFlags.Building))
                {
                    return true;
                }
            }
            return false;
        }
Exemplo n.º 30
0
        private void Combo()
        {
            Obj_AI_Hero target = TargetSelector.GetTarget(Q.Range, TargetSelector.DamageType.Magical);

            if (target == null)
            {
                return;
            }
            if (config.Item("selected", true).GetValue <bool>())
            {
                target = CombatHelper.SetTarget(target, TargetSelector.GetSelectedTarget());
                orbwalker.ForceTarget(target);
            }
            if (config.Item("useItems").GetValue <bool>())
            {
                ItemHandler.UseItems(target, config, ComboDamage(target));
            }
            if (player.HasBuff("KennenLightningRush") && player.Health > target.Health && target.UnderTurret(true))
            {
                orbwalker.SetMovement(false);
                player.IssueOrder(GameObjectOrder.MoveTo, target);
            }
            bool hasIgnite   = player.Spellbook.CanUseSpell(player.GetSpellSlot("SummonerDot")) == SpellState.Ready;
            var  combodamage = ComboDamage(target);
            var  ignitedmg   = (float)player.GetSummonerSpellDamage(target, Damage.SummonerSpell.Ignite);

            if (config.Item("useIgnite").GetValue <bool>() && ignitedmg > target.Health && hasIgnite &&
                !Q.CanCast(target) && !W.IsReady())
            {
                player.Spellbook.CastSpell(player.GetSpellSlot("SummonerDot"), target);
            }

            if (config.Item("useq", true).GetValue <bool>() && Q.CanCast(target) && Orbwalking.CanMove(100) &&
                !target.IsDashing())
            {
                Q.CastIfHitchanceEquals(target, HitChance.High, config.Item("packets").GetValue <bool>());
            }
            if (config.Item("usew", true).GetValue <bool>() && W.IsReady() && W.Range > player.Distance(target) &&
                MarkOfStorm(target) > 0)
            {
                W.Cast(config.Item("packets").GetValue <bool>());
            }
            if (config.Item("usee", true).GetValue <bool>() && !target.UnderTurret(true) && E.IsReady() &&
                (player.Distance(target) < 80 ||
                 (!player.HasBuff("KennenLightningRush") && !Q.CanCast(target) &&
                  config.Item("useemin", true).GetValue <Slider>().Value < player.Health / player.MaxHealth * 100 &&
                  MarkOfStorm(target) > 0 &&
                  CombatHelper.IsPossibleToReachHim(target, 1f, new float[5] {
                2f, 2f, 2f, 2f, 2f
            }[Q.Level - 1]))))
            {
                E.Cast(config.Item("packets").GetValue <bool>());
            }

            if (R.IsReady() && !player.HasBuffOfType(BuffType.Snare) &&
                (config.Item("user", true).GetValue <Slider>().Value <=
                 player.CountEnemiesInRange(config.Item("userrange", true).GetValue <Slider>().Value) ||
                 (config.Item("usertarget", true).GetValue <bool>() &&
                  combodamage + player.GetAutoAttackDamage(target) * 3 > target.Health && !Q.CanCast(target) &&
                  player.Distance(target) < config.Item("userrange", true).GetValue <Slider>().Value)))
            {
                R.Cast(config.Item("packets").GetValue <bool>());
            }
        }
Exemplo n.º 31
0
        static void Drawing_OnDraw(EventArgs args)
        {
            if (!Menu.Item("switch").GetValue <Boolean>())
            {
                return;
            }

            Target = Hud.SelectedUnit != null ? Hud.SelectedUnit as Obj_AI_Hero : Player;

            var buffs = string.Empty;

            foreach (var buff in Target.Buffs)
            {
                buffs += "\n" + buff.Name + "[Count: " + buff.Count + "/Duration: " + (buff.EndTime - Game.ClockTime).ToString("0.00") + "],";
            }

            var Mobs     = MinionManager.GetMinions(1500, MinionTypes.All, MinionTeam.NotAlly, MinionOrderTypes.MaxHealth);
            var MobsList = string.Empty;

            foreach (var Mob in Mobs)
            {
                MobsList += "\n" + Mob.Name + "[BaseSkin: " + Mob.CharData.BaseSkinName + "/HP: " + Mob.Health + " / " + Mob.MaxHealth + "(" + Mob.HealthPercent.ToString("0.0") + "%)],";
            }

            Render.Circle.DrawCircle(Player.Position, 1500, Color.Red, 10);

            Text.text =
                //"Name: " + Target.Name + NewLine +
                "ChampionName: " + Target.ChampionName + NewLine +
                "SkinName: " + Target.SkinName + NewLine +
                //"Gold: " + Target.Gold + NewLine +
                //"Level: " + Target.Level + NewLine +
                "TotalAttackDamage: " + Utility.TotalAttackDamage(Target) + NewLine +
                "TotalMagicalDamage: " + Utility.TotalMagicalDamage(Target) + NewLine +
                "Armor: " + Target.Armor + NewLine +
                "Health: " + Target.Health + " / " + Target.MaxHealth + " (" + Target.HealthPercent.ToString("0.0") + "%)" + NewLine +
                "Mana: " + Target.Mana + " / " + Target.MaxMana + " (" + Target.HealthPercent.ToString("0.0") + "%)" + NewLine +
                "HPRegenRate: " + Target.HPRegenRate + NewLine +
                "PARRegenRate: " + Target.PARRegenRate + NewLine +
                "Experience: " + Target.Experience + NewLine +
                "Position: " + Target.Position + NewLine +
                "ServerPosition: " + Target.ServerPosition + NewLine +
                "Team: " + Target.Team + NewLine +
                "NetworkId: " + Target.NetworkId + NewLine +
                "MoveSpeed: " + Target.MoveSpeed + NewLine +
                "AttackRange: " + Target.AttackRange + NewLine +
                "RealAutoAttackRange: " + Orbwalking.GetRealAutoAttackRange(Target) + NewLine +
                //"DeathDuration: " + Target.DeathDuration + NewLine +
                "BoundingRadius: " + Target.BoundingRadius + NewLine +
                NewLine +
                "Buffs: " + buffs + NewLine +
                NewLine +
                "IsDead: " + Target.IsDead + NewLine +
                "IsImmovable: " + Target.IsImmovable + NewLine +
                "IsInvulnerable: " + Target.IsInvulnerable + NewLine +
                "IsMoving: " + Target.IsMoving + NewLine +
                "IsPacified: " + Target.IsPacified + NewLine +
                "IsTargetable: " + Target.IsTargetable + NewLine +
                "IsWindingUp: " + Target.IsWindingUp + NewLine +
                "IsZombie: " + Target.IsZombie + NewLine +
                "IsRecalling: " + Target.IsRecalling() + NewLine +
                "IsStunned: " + Target.IsStunned + NewLine +
                "IsRooted: " + Target.IsRooted + NewLine +
                "IsMelee: " + Target.IsMelee() + NewLine +
                "IsDashing: " + Target.IsDashing() + NewLine +
                "IsAlly: " + Target.IsAlly + NewLine +
                "IsCanMove: " + Orbwalking.CanMove(1) + NewLine +
                "UnderTurret: " + Target.UnderTurret() + NewLine +
                NewLine +
                "Mobs: " + MobsList + NewLine +
                NewLine +
                "Game_CursorPos: " + Game.CursorPos + NewLine +
                "Game_ClockTime: " + Game.ClockTime + NewLine +
                "Game_Time: " + Game.Time + NewLine +
                "Game_Type: " + Game.Type + NewLine +
                "Game_Version: " + Game.Version + NewLine +
                "Game_Region: " + Game.Region + NewLine +
                "Game_IP: " + Game.IP + NewLine +
                "Game_Port: " + Game.Port + NewLine +
                "Game_Ping: " + Game.Ping + NewLine +
                "Game_Mode: " + Game.Mode + NewLine +
                "Game_MapId: " + Game.MapId + NewLine +
                "Game_MapName: " + Utility.Map.GetMap().Name
            ;


            Text.OnEndScene();
        }
Exemplo n.º 32
0
    private void Game_OnGameUpdate(EventArgs args)
    {
        if (Environment.TickCount < lastTick + tick)
        {
            return;
        }
        lastTick = Environment.TickCount;

        SkinManager.Update();

        Update();

        if ((Menu.Item("Recall_block").GetValue <bool>() && Player.HasBuff("Recall")) || Player.IsWindingUp || Player.IsDashing())
        {
            return;
        }

        BushManager.Update(Orbwalker);

        bool minionBlock = false;

        foreach (Obj_AI_Minion minion in MinionManager.GetMinions(Player.Position, Player.AttackRange, MinionTypes.All, MinionTeam.Enemy, MinionOrderTypes.None))
        {
            if (HealthPrediction.GetHealthPrediction(minion, 3000) <= Damage.GetAutoAttackDamage(Player, minion, false))
            {
                minionBlock = true;
            }
        }

        switch (Orbwalker.ActiveMode)
        {
        case Orbwalking.OrbwalkingMode.Combo:
            Combo();
            break;

        case Orbwalking.OrbwalkingMode.Mixed:
            if (!minionBlock)
            {
                Harass();
            }
            break;

        default:
            if (!minionBlock)
            {
                Auto();
            }
            break;
        }
    }
Exemplo n.º 33
0
 private void OnGapcloser(Obj_AI_Hero target, Cassiopeia_By_Kornis.RGap.GapcloserArgs Args)
 {
     if (target != null && Args.EndPosition.Distance(Player) < R.Range - 100 && R.Ready && !target.IsDashing() && target.IsValidTarget(R.Range))
     {
         R.Cast(Args.EndPosition);
     }
 }
Exemplo n.º 34
0
        public void HandleQ(Obj_AI_Hero comboTarget)
        {
            var QPrediction = Variables.Spells[SpellSlot.Q].GetPrediction(comboTarget);

            if (QPrediction.Hitchance >= HitChance.High)
            {
                var QPushDistance = 250;
                var QAccuracy = 20;
                var PlayerPosition = ObjectManager.Player.ServerPosition;

                var BeamStartPositions = new List<Vector3>()
                    {
                        QPrediction.CastPosition,
                        QPrediction.UnitPosition,
                        comboTarget.ServerPosition,
                        comboTarget.Position
                    };

                if (comboTarget.IsDashing())
                {
                    BeamStartPositions.Add(comboTarget.GetDashInfo().EndPos.To3D());
                }

                var PositionsList = new List<Vector3>();
                var CollisionPositions = new List<Vector3>();

                foreach (var position in BeamStartPositions)
                {
                    var collisionableObjects = Variables.Spells[SpellSlot.Q].GetCollision(position.To2D(),
                        new List<Vector2>() { position.Extend(PlayerPosition, -QPushDistance).To2D() });

                    if (collisionableObjects.Any())
                    {
                        if (collisionableObjects.Any(h => h is Obj_AI_Hero) &&
                            (collisionableObjects.All(h => h.IsValidTarget())))
                        {
                            Variables.Spells[SpellSlot.Q].Cast(QPrediction.CastPosition);
                            break;
                        }

                        for (var i = 0; i < QPushDistance; i += (int)comboTarget.BoundingRadius)
                        {
                            CollisionPositions.Add(position.Extend(PlayerPosition, -i));
                        }
                    }

                    for (var i = 0; i < QPushDistance; i += (int)comboTarget.BoundingRadius)
                    {
                        PositionsList.Add(position.Extend(PlayerPosition, -i));
                    }
                }

                if (PositionsList.Any())
                {
                    //We don't want to divide by 0 Kappa
                    var WallNumber = PositionsList.Count(p => p.IsWall()) * 1.3f;
                    var CollisionPositionCount = CollisionPositions.Count;
                    var Percent = (WallNumber + CollisionPositionCount) / PositionsList.Count;
                    var AccuracyEx = QAccuracy / 100f;
                    if (Percent >= AccuracyEx)
                    {
                        Variables.Spells[SpellSlot.Q].Cast(QPrediction.CastPosition);
                    }

                }
            }
            else if (QPrediction.Hitchance == HitChance.Collision)
            {
                var QCollision = QPrediction.CollisionObjects;
                if (QCollision.Count == 1)
                {
                    Variables.Spells[SpellSlot.Q].Cast(QPrediction.CastPosition);
                }
            }
        }
Exemplo n.º 35
0
    private void CastR()
    {
        Obj_AI_Hero target = TargetSelector.GetTarget(R.Range, TargetSelector.DamageType.Magical);

        if (target == null || !target.IsValidTarget(R.Range))
        {
            return;
        }

        if (RTarget == null)
        {
            RTarget = target;
        }
        else if (RTarget.NetworkId != target.NetworkId)
        {
            if (RTime == 0)
            {
                RTime = Environment.TickCount;
            }

            int   time     = Environment.TickCount - RTime;
            float distance = RTarget.Distance(target);

            if (time > distance / 2.5)
            {
                time    = 0;
                RTarget = target;
            }
        }

        if (Environment.TickCount >= RWaitTime)
        {
            if ((Player.LastCastedSpellName() == "summonerflash" && Player.LastCastedSpellT() > Environment.TickCount - 100) || RTarget.IsDashing())
            {
                RWaitTime = Environment.TickCount + SliderLinks["misc_r_dash"].Value.Value;
            }

            if (Player.LastCastedSpellT() < Environment.TickCount - SliderLinks["misc_r_min_delay"].Value.Value)
            {
                if (Player.LastCastedSpellT() < Environment.TickCount - SliderLinks["misc_r_max_delay"].Value.Value)
                {
                    Spells.CastSkillshot(R, RTarget, HitChance.High);
                }
                else
                {
                    Spells.CastSkillshot(R, RTarget);
                }
            }
        }
    }
Exemplo n.º 36
0
        public static void doFlyToMouse(Vector3 pos)
        {
            /* E use if soli dist targ < 250
             * or soli dist targ < play dist targ and soli dist play > 650
             *
             * if palyer time to soli < soli tiem to targ
             */

            var closest = getClosestSolider(pos);
            var dist    = Player.Distance(pos, true);

            if ((closest == null || (closest.Distance(pos, true) > dist)) && W.IsReady() &&
                Qdata.CooldownExpires < Game.Time && E.IsReady(200))
            {
                summonSolider(pos);
                Player.IssueOrder(GameObjectOrder.MoveTo, Game.CursorPos);
                return;
            }

            if (closest == null)
            {
                return;
            }

            var timeToSoli     = Player.Distance(closest) / E.Speed + E.Delay;
            var soliTimeToTarg = closest.Distance(pos) / Q.Speed + Q.Delay;

            // if (soliTimeToTarg < timeToSoli && E.IsReady())
            //    E.CastOnUnit(closest);

            // if (Q.IsReady() && soliTimeToTarg > timeToSoli)
            //    Q.Cast(pos);
            //return;

            var soliToTarg = closest.Distance(pos);
            var playToTarg = Player.Distance(pos);
            var playToSoli = Player.Distance(closest);

            if (soliToTarg + 250 < playToTarg)
            {
                if (E.IsReady())
                {
                    E.CastOnUnit(closest);
                }
            }
            else
            {
                if (Q.IsReady())
                {
                    Q.Cast(pos);
                }
            }

            if (Player.IsDashing() && playToSoli < 400)
            {
                if (Q.IsReady())
                {
                    Q.Cast(pos);
                }
            }
            else if (soliToTarg >= playToTarg)
            {
                if (Q.IsReady())
                {
                    Q.Cast(pos);
                }
            }
            return;

            if ((closest.Distance(pos, true) > dist - 150 * 150))
            {
                if (E.IsReady())
                {
                    E.CastOnUnit(closest);
                }
            }
            else
            {
                if (E.IsReady() && Q.IsReady(150))
                {
                    E.CastOnUnit(closest);
                }
                if (Player.IsDashing() && Q.IsReady())
                {
                    Q.Cast(pos);
                }
            }
        }
Exemplo n.º 37
0
 private void OnGapcloser(Obj_AI_Hero target, EGap.GapcloserArgs Args)
 {
     if (target != null && Args.EndPosition.Distance(Player) <= 800 && E.Ready && target.IsDashing() && target.IsValidTarget(E.Range))
     {
         E.Cast();
     }
 }
Exemplo n.º 38
0
        private void Combo()
        {
            Obj_AI_Hero target = TargetSelector.GetTarget(E.Range * 2, TargetSelector.DamageType.Physical);

            if (target == null)
            {
                return;
            }
            if (config.Item("useItems").GetValue <bool>())
            {
                ItemHandler.UseItems(target, config, ComboDamage(target));
            }
            bool hasIgnite   = player.Spellbook.CanUseSpell(player.GetSpellSlot("SummonerDot")) == SpellState.Ready;
            var  FuryQ       = Damage.GetSpellDamage(player, target, SpellSlot.Q) * 0.5;
            var  FuryW       = Damage.GetSpellDamage(player, target, SpellSlot.W) * 0.5;
            var  eDmg        = Damage.GetSpellDamage(player, target, SpellSlot.E);
            var  combodamage = ComboDamage(target);

            if (config.Item("useIgnite").GetValue <bool>() && hasIgnite &&
                player.GetSummonerSpellDamage(target, Damage.SummonerSpell.Ignite) > target.Health)
            {
                player.Spellbook.CastSpell(player.GetSpellSlot("SummonerDot"), target);
            }
            if (player.Distance(target) > E.Range && E.IsReady() && (W.IsReady() || Q.IsReady()) && lastE.Equals(0) &&
                config.Item("usee", true).GetValue <bool>())
            {
                var closeGapTarget =
                    MinionManager.GetMinions(E.Range, MinionTypes.All, MinionTeam.NotAlly)
                    .Where(i => i.Distance(target.ServerPosition) < Q.Range - 40)
                    .OrderByDescending(i => Environment.Minion.countMinionsInrange(i.Position, Q.Range))
                    .FirstOrDefault();
                if (closeGapTarget != null)
                {
                    if ((canBeOpWIthQ(closeGapTarget.Position) || fury) && !rene)
                    {
                        if (E.CanCast(closeGapTarget))
                        {
                            E.Cast(closeGapTarget.Position, config.Item("packets").GetValue <bool>());
                            lastE = System.Environment.TickCount;
                            return;
                        }
                    }
                }
            }
            if (config.Item("useq", true).GetValue <bool>() && Q.CanCast(target) && !renw && !player.IsDashing() &&
                checkFuryMode(SpellSlot.Q, target) &&
                (!W.IsReady() ||
                 ((W.IsReady() && !fury) || (player.Health < target.Health) ||
                  (Environment.Minion.countMinionsInrange(player.Position, Q.Range) +
                   player.CountEnemiesInRange(Q.Range) > 3 && fury))))
            {
                Q.Cast(config.Item("packets").GetValue <bool>());
            }
            var distance = player.Distance(target.Position);

            if (config.Item("usee", true).GetValue <bool>() && lastE.Equals(0) && E.CanCast(target) &&
                (eDmg > target.Health ||
                 (((W.IsReady() && canBeOpWIthQ(target.Position) && !rene) ||
                   (distance > target.Distance(player.Position.Extend(target.Position, E.Range)) - distance)))))
            {
                E.Cast(target.Position, config.Item("packets").GetValue <bool>());
                lastE = System.Environment.TickCount;
                return;
            }
            if (config.Item("usee", true).GetValue <bool>() && checkFuryMode(SpellSlot.E, target) && !lastE.Equals(0) &&
                (eDmg + player.GetAutoAttackDamage(target) > target.Health ||
                 (((W.IsReady() && canBeOpWIthQ(target.Position) && !rene) ||
                   (distance < target.Distance(player.Position.Extend(target.Position, E.Range)) - distance) ||
                   player.Distance(target) > E.Range - 100))))
            {
                var time = System.Environment.TickCount - lastE;
                if (time > 3600f || combodamage > target.Health || (player.Distance(target) > E.Range - 100))
                {
                    E.Cast(target.Position, config.Item("packets").GetValue <bool>());
                    lastE = 0;
                }
            }
            var data = Program.IncDamages.GetAllyData(player.NetworkId);

            if (((player.Health * 100 / player.MaxHealth) <= config.Item("user", true).GetValue <Slider>().Value&&
                 data.DamageTaken > 30) ||
                config.Item("userindanger", true).GetValue <Slider>().Value < player.CountEnemiesInRange(R.Range))
            {
                R.Cast(config.Item("packets").GetValue <bool>());
            }
        }
Exemplo n.º 39
0
        private static void FlashR()
        {
            var target = TargetSelector.GetTarget(R.Range, TargetSelector.DamageType.Physical);

            if (_cfg.Item("moveRFQQ").IsActive() && _cfg.Item("ActiveFR").GetValue <KeyBind>().Active)
            {
                _player.IssueOrder(GameObjectOrder.MoveTo, Game.CursorPos);
            }

            if (target.Distance(_player) <= R.Range && R.IsReady() && ObjectManager.Player.GetSpellSlot("SummonerFlash").IsReady() && !_player.IsDashing())
            {
                var targetQ = TargetSelector.GetTarget(R.Range, TargetSelector.DamageType.Physical);

                if (target.IsValidTarget())
                {
                    R.CastOnUnit(target);
                    Utility.DelayAction.Add(100, () => ObjectManager.Player.Spellbook.CastSpell(ObjectManager.Player.GetSpellSlot("SummonerFlash"), Game.CursorPos));
                }

                if (_cfg.Item("UseQ1RFQQ").IsActive())
                {
                    Utility.DelayAction.Add(500, () => Q.Cast(targetQ.ServerPosition));
                }

                if (_cfg.Item("UseQ2RFQQ").IsActive())
                {
                    Utility.DelayAction.Add(500, () => Q.Cast());
                }
            }
        }