示例#1
0
        private void LogicQ()
        {
            var t  = TargetSelector.GetTarget(Q.Range, TargetSelector.DamageType.Magical);
            var t2 = TargetSelector.GetTarget(1500, TargetSelector.DamageType.Magical);

            if (t.IsValidTarget() && t2.IsValidTarget() && t == t2 && !(Config.Item("separate", true).GetValue <bool>() && Program.LaneClear))
            {
                if (Q.IsCharging)
                {
                    Program.CastSpell(Q, t);
                    if (OktwCommon.GetPassiveTime(Player, "XerathArcanopulseChargeUp") < 1 || (Player.CountEnemiesInRange(800) > 0) || Player.Distance(t) > 1450)
                    {
                        Q.Cast(Q.GetPrediction(t).CastPosition);
                    }
                    else if (OktwCommon.GetPassiveTime(Player, "XerathArcanopulseChargeUp") < 2 || (Player.CountEnemiesInRange(1000) > 0))
                    {
                        Q.CastIfHitchanceEquals(t, HitChance.VeryHigh);
                    }

                    return;
                }
                else if (t.IsValidTarget(Q.Range - 300))
                {
                    if (t.Health < OktwCommon.GetKsDamage(t, Q))
                    {
                        Q.StartCharging();
                    }
                    else if (Program.Combo && Player.Mana > EMANA + QMANA)
                    {
                        Q.StartCharging();
                    }
                    else if (t.IsValidTarget(1200) && Program.Farm && Player.Mana > RMANA + EMANA + QMANA + QMANA && Config.Item("harras" + t.ChampionName).GetValue <bool>() && !Player.UnderTurret(true) && OktwCommon.CanHarras())
                    {
                        Q.StartCharging();
                    }
                    else if ((Program.Combo || Program.Farm) && Player.Mana > RMANA + WMANA)
                    {
                        foreach (var enemy in HeroManager.Enemies.Where(enemy => enemy.IsValidTarget(Q.Range) && !OktwCommon.CanMove(enemy)))
                        {
                            Q.StartCharging();
                        }
                    }
                }
            }
            else if (Program.LaneClear && Q.Range > 1000 && Player.CountEnemiesInRange(1450) == 0 && (Q.IsCharging || (Player.ManaPercent > Config.Item("Mana", true).GetValue <Slider>().Value&& Config.Item("farmQ", true).GetValue <bool>() && Player.Mana > RMANA + QMANA + WMANA)))
            {
                var allMinionsQ = Cache.GetMinions(Player.ServerPosition, Q.Range);
                var Qfarm       = Q.GetLineFarmLocation(allMinionsQ, Q.Width);
                if (Qfarm.MinionsHit > Config.Item("LCminions", true).GetValue <Slider>().Value || (Q.IsCharging && Qfarm.MinionsHit > 0))
                {
                    Q.Cast(Qfarm.Position);
                }
            }
        }
示例#2
0
        private void castQ(AIHeroClient target)
        {
            if (target == null && Q.IsCharging)
            {
                ObjectManager.Player.Spellbook.CastSpell(SpellSlot.Q);
            }
            if (Q.IsCharging)
            {
                var qTarget = TargetSelector.GetTarget(!Q.IsCharging ? Q.ChargedMaxRange / 2 : Q.ChargedMaxRange, DamageType.Physical);
                if (qTarget == null)
                {
                    return;
                }
                if (qTarget == null && Q.IsCharging)
                {
                    ObjectManager.Player.Spellbook.CastSpell(SpellSlot.Q);
                }
                var start     = ObjectManager.Player.ServerPosition.LSTo2D();
                var end       = start.LSExtend(QCastPos, Q.Range);
                var direction = (end - start).Normalized();
                var normal    = direction.Perpendicular();

                var points = new List <Vector2>();
                var hitBox = qTarget.BoundingRadius;
                points.Add(start + normal * (Q.Width + hitBox));
                points.Add(start - normal * (Q.Width + hitBox));
                points.Add(end + Q.ChargedMaxRange * direction - normal * (Q.Width + hitBox));
                points.Add(end + Q.ChargedMaxRange * direction + normal * (Q.Width + hitBox));

                for (var i = 0; i <= points.Count - 1; i++)
                {
                    var A = points[i];
                    var B = points[i == points.Count - 1 ? 0 : i + 1];

                    if (qTarget.ServerPosition.LSTo2D().LSDistance(A, B, true, true) < 50 * 50)
                    {
                        Q.Cast(qTarget, true);
                    }
                }
                checkCastedQ(target);
            }
            else if (Q.CanCast(target) && !Orbwalker.IsAutoAttacking && target != null)
            {
                var qPred  = Prediction.GetPrediction(target, 0.3f);
                var qPred2 = Prediction.GetPrediction(target, 0.6f);
                var poly   = GetPoly(qPred.UnitPosition);
                if (qPred2.Hitchance >= HitChance.High && poly.IsInside(qPred2.UnitPosition.LSTo2D()) && poly.IsInside(target.ServerPosition))
                {
                    Q.StartCharging(qPred.CastPosition);
                }
            }
        }
示例#3
0
文件: Varus.cs 项目: volder1/PortAIO
        private static void CastSpellQ()
        {
            if (!Q.IsReady())
            {
                return;
            }

            var t = TargetSelector.GetTarget(Q.Range, DamageType.Physical);

            if (!t.LSIsValidTarget(Q.Range))
            {
                return;
            }

            var qMinCharge = Program.combo["QMinChargeC"].Cast <Slider>().CurrentValue;

            EloBuddy.Player.IssueOrder(GameObjectOrder.MoveTo, Game.CursorPos);

            if (Q.IsCharging)
            {
                if (Q.Range >= qMinCharge)
                {
                    Q.Cast(t, false, true);
                }
            }
            else
            {
                Q.StartCharging();
            }
        }
示例#4
0
 private void castQ(AIHeroClient target)
 {
     if (Q.IsCharging)
     {
         checkCastedQ(target);
     }
     else if (Q.CanCast(target) && !Orbwalker.IsAutoAttacking)
     {
         var qPred  = Prediction.GetPrediction(target, 0.3f);
         var qPred2 = Prediction.GetPrediction(target, 0.6f);
         var poly   = GetPoly(qPred.UnitPosition);
         if (qPred2.Hitchance >= HitChance.High && poly.IsInside(qPred2.UnitPosition.To2D()) &&
             poly.IsInside(target.ServerPosition))
         {
             Q.StartCharging(qPred.CastPosition);
         }
     }
 }
示例#5
0
文件: Sion.cs 项目: riwalry1/AIO
        private static void Game_OnGameUpdate(EventArgs args)
        {
            if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Combo))
            {
                var qTarget = TargetSelector.GetTarget(
                    !Q.IsCharging ? Q.ChargedMaxRange / 2 : Q.ChargedMaxRange, DamageType.Physical);

                var eTarget = TargetSelector.GetTarget(E.Range, DamageType.Physical);

                if (qTarget != null && getCheckBoxItem(comboMenu, "UseQCombo"))
                {
                    if (Q.IsCharging)
                    {
                        var start     = ObjectManager.Player.ServerPosition.LSTo2D();
                        var end       = start.LSExtend(QCastPos, Q.Range);
                        var direction = (end - start).Normalized();
                        var normal    = direction.Perpendicular();

                        var points = new List <Vector2>();
                        var hitBox = qTarget.BoundingRadius;
                        points.Add(start + normal * (Q.Width + hitBox));
                        points.Add(start - normal * (Q.Width + hitBox));
                        points.Add(end + Q.ChargedMaxRange * direction - normal * (Q.Width + hitBox));
                        points.Add(end + Q.ChargedMaxRange * direction + normal * (Q.Width + hitBox));

                        for (var i = 0; i <= points.Count - 1; i++)
                        {
                            var A = points[i];
                            var B = points[i == points.Count - 1 ? 0 : i + 1];

                            if (qTarget.ServerPosition.LSTo2D().LSDistance(A, B, true, true) < 50 * 50)
                            {
                                Q.Cast(qTarget, true);
                            }
                        }
                        return;
                    }

                    if (Q.IsReady())
                    {
                        Q.StartCharging(qTarget.ServerPosition);
                    }
                }

                if (qTarget != null && getCheckBoxItem(comboMenu, "UseWCombo"))
                {
                    ObjectManager.Player.Spellbook.CastSpell(SpellSlot.W, ObjectManager.Player);
                }

                if (eTarget != null && getCheckBoxItem(comboMenu, "UseECombo"))
                {
                    E.Cast(eTarget);
                }
            }
        }
示例#6
0
 private void castQ(AIHeroClient target)
 {
     if (Q.IsCharging)
     {
         checkCastedQ(target);
         return;
     }
     else if (Q.CanCast(target) && !player.Spellbook.IsAutoAttacking)
     {
         var qPred  = LeagueSharp.Common.Prediction.GetPrediction(target, 0.3f);
         var qPred2 = LeagueSharp.Common.Prediction.GetPrediction(target, 0.6f);
         var poly   = GetPoly(qPred.UnitPosition);
         if (qPred2.Hitchance >= HitChance.High && poly.IsInside(qPred2.UnitPosition.To2D()) &&
             poly.IsInside(target.ServerPosition))
         {
             Q.StartCharging(qPred.CastPosition);
             return;
         }
     }
 }
示例#7
0
 private void CastQ(Obj_AI_Base target)
 {
     if (!Q.IsCharging)
     {
         if (target.IsValidTargetLS(Q.Range - 300))
         {
             Q.StartCharging();
         }
     }
     else
     {
         if (GetQEndTime() > 1)
         {
             Program.CastSpell(Q, target);
         }
         else
         {
             Q.Cast(Q.GetPrediction(target).CastPosition);
         }
         return;
     }
 }
示例#8
0
        private static void LogicQ()
        {
            var t  = TargetSelector.GetTarget(Q.Range, DamageType.Magical);
            var t2 = TargetSelector.GetTarget(1500, DamageType.Magical);

            if (t.IsValidTarget() && t2.IsValidTarget() && t == t2 &&
                !(getCheckBoxItem(farmMenu, "separate") && Program.LaneClear))
            {
                if (Q.IsCharging)
                {
                    Program.CastSpell(Q, t);
                    if (OktwCommon.GetPassiveTime(Player, "XerathArcanopulseChargeUp") < 1 || (Player.CountEnemiesInRange(800) > 0) || Player.Distance(t) > 1450)
                    {
                        Q.Cast(t);
                    }
                    else if (OktwCommon.GetPassiveTime(Player, "XerathArcanopulseChargeUp") < 2 || (Player.CountEnemiesInRange(1000) > 0))
                    {
                        Q.CastIfHitchanceEquals(t, HitChance.VeryHigh);
                    }
                }
                else if (t.IsValidTarget(Q.Range - 300))
                {
                    if (t.Health < OktwCommon.GetKsDamage(t, Q))
                    {
                        Q.StartCharging();
                    }
                    else if (Program.Combo && Player.Mana > EMANA + QMANA)
                    {
                        Q.StartCharging();
                    }
                    else if (t.IsValidTarget(1200) && Program.Farm && Player.Mana > RMANA + EMANA + QMANA + QMANA &&
                             getCheckBoxItem(harassMenu, "harras" + t.NetworkId) && !Player.UnderTurret(true) &&
                             OktwCommon.CanHarras())
                    {
                        Q.StartCharging();
                    }
                    else if ((Program.Combo || Program.Farm) && Player.Mana > RMANA + WMANA)
                    {
                        foreach (
                            var enemy in
                            Program.Enemies.Where(
                                enemy => enemy.IsValidTarget(Q.Range) && !OktwCommon.CanMove(enemy)))
                        {
                            Q.StartCharging();
                        }
                    }
                }
            }
            else if (Program.LaneClear && Q.Range > 1000 && Player.CountEnemiesInRange(1450) == 0 &&
                     (Q.IsCharging ||
                      (Player.ManaPercent > getSliderItem(farmMenu, "Mana") && getCheckBoxItem(farmMenu, "farmQ") &&
                       Player.Mana > RMANA + QMANA + WMANA)))
            {
                var allMinionsQ = Cache.GetMinions(Player.ServerPosition, Q.Range);
                var Qfarm       = Q.GetLineFarmLocation(allMinionsQ, Q.Width);
                if (Qfarm.MinionsHit > getSliderItem(farmMenu, "LCminions") ||
                    (Q.IsCharging && Qfarm.MinionsHit > 0))
                {
                    Q.Cast(Qfarm.Position);
                }
            }
        }