예제 #1
0
        private static void Combo()
        {
            var target = TargetSelector.GetTarget(R.Range, TargetSelector.DamageType.Physical);

            if (target.IsValidTarget(R.Range))
            {
                if (ComboOption.UseQ && Q.IsReady() && target.IsValidTarget(Q.Range))
                {
                    SpellManager.PredCast(Q, target);
                }

                if (ComboOption.UseE && E.IsReady() && target.IsValidTarget(800f))
                {
                    ELogic(target);
                }

                if (ComboOption.UseW && W.IsReady() && target.IsValidTarget(W.Range) &&
                    (target.DistanceToPlayer() <= target.AttackRange + 70 ||
                     (target.DistanceToPlayer() >= Me.AttackRange + Me.BoundingRadius - target.BoundingRadius + 15 + 80)))
                {
                    SpellManager.PredCast(W, target);
                }

                if (ComboOption.UseR && R.IsReady() && target.IsValidTarget(R.Range))
                {
                    R.CastIfWillHit(target, ComboOption.GetSlider("ComboRCount"));
                }
            }
        }
예제 #2
0
        private static void BeforeAttack(BeforeAttackEventArgs Args)
        {
            if (!Args.Unit.IsMe || Me.IsDead || Args.Target == null || Args.Target.ObjectType != GameObjectType.AIHeroClient)
            {
                return;
            }

            if (isComboMode)
            {
                if (ComboOption.UseQ && Q.IsReady() && AxeCount < ComboOption.GetSlider("MaxAxeCount"))
                {
                    var target = Args.Target as AIHeroClient;

                    if (target.IsValidTarget())
                    {
                        Q.Cast();
                    }
                }
            }
            else if (isHarassMode || isFarmMode && MyManaManager.SpellHarass)
            {
                if (HarassOption.HasEnouguMana)
                {
                    if (HarassOption.UseQ && Q.IsReady() && AxeCount < 2)
                    {
                        var target = Args.Target as AIHeroClient;

                        if (target.IsValidTarget())
                        {
                            Q.Cast();
                        }
                    }
                }
            }
        }
예제 #3
0
        private static void Combo()
        {
            var target = TargetSelector.GetTarget(R.Range, TargetSelector.DamageType.Physical);

            if (target.IsValidTarget(R.Range))
            {
                if (ComboOption.UseR && R.IsReady() &&
                    ComboOption.GetSlider("ComboRLimit") >= GetRCount &&
                    target.IsValidTarget(R.Range))
                {
                    SpellManager.PredCast(R, target, true);
                }

                if (ComboOption.UseQ && Q.IsReady() && target.IsValidTarget(Q.Range))
                {
                    SpellManager.PredCast(Q, target, true);
                }

                if (ComboOption.UseE && E.IsReady() && target.IsValidTarget(E.Range))
                {
                    SpellManager.PredCast(E, target);
                }

                if (ComboOption.UseW && W.IsReady() && target.IsValidTarget(W.Range) &&
                    target.DistanceToPlayer() > Orbwalker.GetRealAutoAttackRange(Me) && Orbwalker.CanAttack())
                {
                    W.Cast();
                }
            }
        }
예제 #4
0
        private static void Combo()
        {
            var target = TargetSelector.GetTarget(E.Range, TargetSelector.DamageType.Physical);

            if (target.IsValidTarget(E.Range))
            {
                if (ComboOption.GetBool("ComboRYouMuu") && myOrbwalker.GetTarget() != null && myOrbwalker.GetTarget() is AIHeroClient && Me.HasBuff("TwitchFullAutomatic"))
                {
                    if (Item.HasItem(3142))
                    {
                        Item.UseItem(3142);
                    }
                }

                if (ComboOption.UseR && R.IsReady())
                {
                    if (ComboOption.GetBool("ComboRKillSteal") &&
                        ObjectManager.Heroes.Enemies.Count(x => x.DistanceToPlayer() <= R.Range) <= 2 &&
                        target.Health <= Me.GetAutoAttackDamage(target, true) * 4 + GetRealEDamage(target) * 2)
                    {
                        R.Cast();
                    }

                    if (ObjectManager.Heroes.Enemies
                        .Count(x => x.DistanceToPlayer() <= R.Range) >= ComboOption.GetSlider("ComboRCount"))
                    {
                        R.Cast();
                    }
                }

                if (ComboOption.UseQ && Q.IsReady() &&
                    ObjectManager.Heroes.Enemies.Count(
                        x => x.DistanceToPlayer() <= ComboOption.GetSlider("ComboQRange")) >= ComboOption.GetSlider("ComboQCount"))
                {
                    Q.Cast();
                }

                if (ComboOption.UseW && W.IsReady() && target.IsValidTarget(W.Range) &&
                    target.Health > W.GetDamage(target) && GetEStackCount(target) < 6 &&
                    Me.Mana >= Q.ManaCost + W.ManaCost + E.ManaCost + R.ManaCost)
                {
                    SpellManager.PredCast(W, target, true);
                }

                if (ComboOption.UseE && E.IsReady() && target.IsValidTarget(E.Range) &&
                    target.HasBuff("TwitchDeadlyVenom"))
                {
                    if (ComboOption.GetBool("ComboEFull") && GetEStackCount(target) >= 6)
                    {
                        E.Cast();
                    }

                    if (ComboOption.GetBool("ComboEKill") && target.Health <= E.GetDamage(target) && target.IsValidTarget(E.Range))
                    {
                        E.Cast();
                    }
                }
            }
        }
예제 #5
0
        private static void Combo()
        {
            var target = MyTargetSelector.GetTarget(E.Range);

            if (target.IsValidTarget(E.Range))
            {
                if (ComboOption.UseR && R.IsReady())
                {
                    if (ComboOption.GetBool("ComboRKillSteal").Enabled&&
                        GameObjects.EnemyHeroes.Count(x => x.DistanceToPlayer() <= R.Range) <= 2 &&
                        target.Health <= Me.GetAutoAttackDamage(target) * 4 + GetRealEDamage(target) * 2)
                    {
                        R.Cast();
                    }

                    if (GameObjects.EnemyHeroes.Count(x => x.DistanceToPlayer() <= R.Range) >= ComboOption.GetSlider("ComboRCount").Value)
                    {
                        R.Cast();
                    }
                }

                if (ComboOption.UseQ && Q.IsReady() &&
                    GameObjects.EnemyHeroes.Count(x => x.DistanceToPlayer() <= ComboOption.GetSlider("ComboQRange").Value) >=
                    ComboOption.GetSlider("ComboQCount").Value)
                {
                    Q.Cast();
                }

                if (ComboOption.UseW && W.IsReady() && target.IsValidTarget(W.Range) &&
                    target.Health > GetRealEDamage(target) && GetEStackCount(target) < 6 &&
                    Me.Mana > Q.Mana + W.Mana + E.Mana + R.Mana)
                {
                    var wPred = W.GetPrediction(target);

                    if (wPred.Hitchance >= HitChance.High)
                    {
                        W.Cast(wPred.CastPosition);
                    }
                }

                if (ComboOption.UseE && E.IsReady() && target.IsValidTarget(E.Range) &&
                    target.Buffs.Any(b => b.Name.ToLower() == "twitchdeadlyvenom"))
                {
                    if (ComboOption.GetBool("ComboEFull").Enabled&& GetEStackCount(target) >= 6)
                    {
                        E.Cast();
                    }

                    if (ComboOption.GetBool("ComboEKill").Enabled&& target.Health <= GetRealEDamage(target) &&
                        target.IsValidTarget(E.Range))
                    {
                        E.Cast();
                    }
                }
            }
        }
예제 #6
0
        private static void Combo()
        {
            var target = MyTargetSelector.GetTarget(R.Range, ComboOption.GetBool("ComboForcus").Enabled);

            if (target.IsValidTarget(R.Range) && !target.IsUnKillable())
            {
                if (ComboOption.UseR && R.Ready && ComboOption.GetSlider("ComboRLimit").Value > GetRCount &&
                    target.IsValidTarget(R.Range) && target.HealthPercent() <= ComboOption.GetSlider("ComboRHP").Value&&
                    (!ComboOption.GetBool("ComboROnlyOutAARange").Enabled ||
                     ComboOption.GetBool("ComboROnlyOutAARange").Enabled&& !target.IsValidAutoRange()))
                {
                    var rPred = R.GetPrediction(target);

                    if (rPred.HitChance >= HitChance.High)
                    {
                        R.Cast(rPred.CastPosition);
                    }
                }

                if (ComboOption.UseQ && Q.Ready && target.IsValidTarget(Q.Range))
                {
                    var qPred = Q.GetPrediction(target);

                    if (qPred.HitChance >= HitChance.Medium)
                    {
                        Q.Cast(qPred.CastPosition);
                    }
                }

                if (ComboOption.UseE && E.Ready && target.IsValidTarget(E.Range))
                {
                    var ePred = E.GetPrediction(target);

                    if (ePred.HitChance >= HitChance.High)
                    {
                        E.Cast(ePred.CastPosition);
                    }
                }

                if (ComboOption.UseW && W.Ready && target.IsValidTarget(W.Range) &&
                    !target.IsValidAutoRange() && Orbwalker.CanAttack())
                {
                    W.Cast();
                }
            }
        }
예제 #7
0
        private static void Combo()
        {
            var target = TargetSelector.GetTarget(R.Range);

            if (target.IsValidTarget(R.Range) && !target.IsUnKillable())
            {
                if (ComboOption.UseR && R.Ready && ComboOption.GetSlider("ComboRLimit").Value >= GetRCount &&
                    target.IsValidTarget(R.Range) && target.HealthPercent() <= ComboOption.GetSlider("ComboRHP").Value)
                {
                    var rPred = R.GetPrediction(target);

                    if (rPred.HitChance >= HitChance.High)
                    {
                        R.Cast(rPred.CastPosition);
                    }
                }

                if (ComboOption.UseQ && Q.Ready && target.IsValidTarget(Q.Range))
                {
                    var qPred = Q.GetPrediction(target);

                    if (qPred.HitChance >= HitChance.Medium)
                    {
                        Q.Cast(qPred.CastPosition);
                    }
                }

                if (ComboOption.UseE && E.Ready && target.IsValidTarget(E.Range))
                {
                    var ePred = E.GetPrediction(target);

                    if (ePred.HitChance >= HitChance.High)
                    {
                        E.Cast(ePred.UnitPosition);
                    }
                }

                if (ComboOption.UseW && W.Ready && target.IsValidTarget(W.Range) &&
                    target.DistanceToPlayer() > 550 && Orbwalker.CanAttack())
                {
                    W.Cast();
                }
            }
        }
예제 #8
0
        private static void Combo()
        {
            var target = TargetSelector.GetTarget(R.Range);

            if (target.IsValidTarget(R.Range) && !target.IsUnKillable() && (!target.IsValidAutoRange() || !Orbwalker.CanAttack()))
            {
                if (ComboOption.UseR && R.Ready &&
                    R.GetBasicSpell().Ammo >= ComboOption.GetSlider("ComboRLimit").Value&&
                    target.IsValidTarget(R.Range) && target.HealthPercent() <= ComboOption.GetSlider("ComboRHP").Value)
                {
                    var rPred = R.GetPrediction(target);

                    if (rPred.HitChance >= HitChance.High)
                    {
                        R.Cast(rPred.UnitPosition);
                    }
                    else if (rPred.HitChance == HitChance.Collision)
                    {
                        foreach (var collsion in rPred.CollisionObjects.Where(x => x.IsValidTarget(R.Range)))
                        {
                            if (collsion.DistanceSqr(target) <= 85 * 85)
                            {
                                R.Cast(collsion.ServerPosition);
                            }
                        }
                    }
                }

                if (ComboOption.UseQ && Q.Ready && target.IsValidTarget(Q.Range))
                {
                    var qPred = Q.GetPrediction(target);

                    if (qPred.HitChance >= HitChance.High)
                    {
                        Q.Cast(qPred.CastPosition);
                    }
                }

                if (ComboOption.UseE && E.Ready && target.IsValidTarget(E.Range))
                {
                    E.Cast();
                }
            }
        }
예제 #9
0
        private static void Combo()
        {
            var target = MyTargetSelector.GetTarget(R.Range);

            if (target.IsValidTarget(R.Range) && !target.IsUnKillable() && (!target.InAutoAttackRange() || !Orbwalker.CanAttack()))
            {
                if (ComboOption.UseR && R.IsReady() &&
                    R.Ammo >= ComboOption.GetSlider("ComboRLimit").Value&&
                    target.IsValidTarget(R.Range) && target.HealthPercent <= ComboOption.GetSlider("ComboRHP").Value)
                {
                    var rPred = R.GetPrediction(target);

                    if (rPred.Hitchance >= HitChance.High)
                    {
                        R.Cast(rPred.UnitPosition);
                    }
                    else if (rPred.Hitchance == HitChance.Collision)
                    {
                        foreach (var collsion in rPred.CollisionObjects.Where(x => x.IsValidTarget(R.Range)))
                        {
                            if (collsion.DistanceSquared(target) <= Math.Pow(85, 2))
                            {
                                R.Cast(collsion.PreviousPosition);
                            }
                        }
                    }
                }

                if (ComboOption.UseQ && Q.IsReady() && target.IsValidTarget(Q.Range))
                {
                    var qPred = Q.GetPrediction(target);

                    if (qPred.Hitchance >= HitChance.High)
                    {
                        Q.Cast(qPred.CastPosition);
                    }
                }

                if (ComboOption.UseE && E.IsReady() && target.IsValidTarget(E.Range))
                {
                    E.Cast(Me.PreviousPosition);
                }
            }
        }
예제 #10
0
        private static void Combo()
        {
            var target = MyTargetSelector.GetTarget(E.Range);

            if (target.IsValidTarget(E.Range))
            {
                if (ComboOption.UseQ && Q.IsReady())
                {
                    if (!ComboOption.GetBool("ComboQAlways").Enabled)
                    {
                        if (!E.IsReady() && target.HasBuff("TristanaECharge"))
                        {
                            Q.Cast();
                        }
                        else if (!E.IsReady() && !target.HasBuff("TristanaECharge") && E.CooldownTime > 4)
                        {
                            Q.Cast();
                        }
                    }
                    else
                    {
                        Q.Cast();
                    }
                }

                if (ComboOption.UseE && E.IsReady() && !ComboOption.GetBool("ComboQAlways").Enabled&& target.IsValidTarget(E.Range))
                {
                    E.CastOnUnit(target);
                }

                if (ComboOption.UseR && R.IsReady() && Me.HealthPercent <= ComboOption.GetSlider("ComboRHp").Value)
                {
                    var dangerenemy =
                        GameObjects.EnemyHeroes.Where(x => x.IsValidTarget(R.Range))
                        .OrderBy(x => x.Distance(Me))
                        .FirstOrDefault();

                    if (dangerenemy != null)
                    {
                        R.CastOnUnit(dangerenemy);
                    }
                }
            }
        }
예제 #11
0
        private static void Combo()
        {
            var target = TargetSelector.GetTarget(E.Range, TargetSelector.DamageType.Physical);

            if (target.IsValidTarget(E.Range))
            {
                if (ComboOption.UseQ && Q.IsReady())
                {
                    if (ComboOption.GetBool("ComboQOnlyPassive"))
                    {
                        if (!E.IsReady() && target.HasBuff("TristanaECharge"))
                        {
                            Q.Cast();
                        }
                        else if (!E.IsReady() && !target.HasBuff("TristanaECharge") && E.Cooldown > 4)
                        {
                            Q.Cast();
                        }
                    }
                    else
                    {
                        Q.Cast();
                    }
                }

                if (ComboOption.UseE && E.IsReady() && !ComboOption.GetBool("ComboEOnlyAfterAA") && target.IsValidTarget(E.Range))
                {
                    E.CastOnUnit(target, true);
                }

                if (ComboOption.UseR && R.IsReady() && Me.HealthPercent <= ComboOption.GetSlider("ComboRHp"))
                {
                    var dangerenemy = ObjectManager.Heroes.Enemies.Where(e => e.IsValidTarget(R.Range)).
                                      OrderBy(enemy => enemy.Distance(Me)).FirstOrDefault();

                    if (dangerenemy != null)
                    {
                        R.CastOnUnit(dangerenemy, true);
                    }
                }
            }
        }
예제 #12
0
        private static void Combo()
        {
            var target = TargetSelector.GetTarget(1500f, TargetSelector.DamageType.Physical);

            if (target.IsValidTarget(1500f))
            {
                if (ComboOption.UseQ && Q.IsReady() && target.IsValidTarget(Q.Range) &&
                    !Me.IsDashing())
                {
                    SpellManager.PredCast(Q, target, true);
                }

                if (ComboOption.UseR && Me.CountEnemiesInRange(850) >= ComboOption.GetSlider("ComboRCount") &&
                    ((target.Health <= Me.GetAutoAttackDamage(target) * 3 && !Q.IsReady()) ||
                     (target.Health <= Me.GetAutoAttackDamage(target) * 3 + Q.GetDamage(target))))
                {
                    R.Cast();
                }
            }
        }
예제 #13
0
        private static void Combo()
        {
            var target = TargetSelector.GetTarget(R.Range, TargetSelector.DamageType.Physical);

            if (target.IsValidTarget(R.Range) && (!Orbwalker.InAutoAttackRange(target) || !Me.CanAttack))
            {
                if (ComboOption.UseR && R.IsReady() && R.Instance.CurrentCharge >= ComboOption.GetSlider("ComboRLimit") &&
                    target.IsValidTarget(R.Range))
                {
                    SpellManager.PredCast(R, target, true);
                }

                if (ComboOption.UseQ && Q.IsReady() && target.IsValidTarget(Q.Range))
                {
                    SpellManager.PredCast(Q, target, true);
                }

                if (ComboOption.UseE && E.IsReady() && target.IsValidTarget(E.Range))
                {
                    E.Cast();
                }
            }
        }
예제 #14
0
        private static void Combo()
        {
            var target = MyTargetSelector.GetTarget(1500f);

            if (target.IsValidTarget(1500f))
            {
                if (ComboOption.UseQ && Q.IsReady() && target.IsValidTarget(Q.Range) && !Me.IsDashing())
                {
                    var qPred = Q.GetPrediction(target);

                    if (qPred.Hitchance >= HitChance.High)
                    {
                        Q.Cast(qPred.UnitPosition);
                    }
                }

                if (ComboOption.UseR && Me.CountEnemyHeroesInRange(850) >= ComboOption.GetSlider("ComboRCount").Value&&
                    (target.Health <= Me.GetAutoAttackDamage(target) * 3 && !Q.IsReady() ||
                     target.Health <= Me.GetAutoAttackDamage(target) * 3 + Me.GetSpellDamage(target, SpellSlot.Q)))
                {
                    R.Cast();
                }
            }
        }
예제 #15
0
        private static void Combo()
        {
            var target = TargetSelector.GetTarget(QExtend.Range, TargetSelector.DamageType.Physical);

            if (target.IsValidTarget(QExtend.Range))
            {
                if (ComboOption.UseR && R.IsReady() && target.IsValidTarget(R.Range))
                {
                    if (MiscOption.GetBool("RSafe") && !Me.UnderTurret(true))
                    {
                        foreach (
                            var rTarget in
                            ObjectManager.Heroes.Enemies.Where(
                                x =>
                                x.IsValidTarget(R.Range) &&
                                !MiscOption.GetBool("Dontr" + target.ChampionName.ToLower()))
                            .OrderByDescending(x => E.IsReady() ? E.GetDamage(x) : 0 + Q.GetDamage(x) * 2))
                        {
                            if (rTarget.CountEnemiesInRange(R.Range) <= MiscOption.GetSlider("RSwap"))
                            {
                                if (MiscOption.GetBool("RAlly") && Me.UnderAllyTurret() && rTarget.DistanceToPlayer() <= 350)
                                {
                                    R.CastOnUnit(rTarget);
                                }

                                if (MiscOption.GetBool("RKill") && target.Health < MyDamageCalculate.GetComboDamage(target))
                                {
                                    R.CastOnUnit(rTarget);
                                }
                            }
                        }
                    }
                }

                if (ComboOption.UseE && E.IsReady() && target.IsValidTarget(E.Range) &&
                    (Q.IsReady() || target.Health < E.GetDamage(target)))
                {
                    SpellManager.PredCast(E, target, true);
                }

                if (ComboOption.UseW && W.IsReady())
                {
                    if (target.DistanceToPlayer() <= Me.AttackRange + Me.BoundingRadius)
                    {
                        if (ComboOption.GetBool("ComboWAlways"))
                        {
                            W.Cast();
                        }

                        if (Me.HealthPercent <= ComboOption.GetSlider("ComboWLowHp"))
                        {
                            W.Cast();
                        }
                    }

                    if (ComboOption.GetBool("ComboWBuff") && HaveEBuff(target) && Q.IsReady())
                    {
                        W.Cast();
                    }
                }

                if (ComboOption.UseQ && Q.IsReady() && target.IsValidTarget(QExtend.Range))
                {
                    if (!HaveEBuff(target) && target.IsValidTarget(Q.Range))
                    {
                        if (ComboOption.GetBool("ComboFirstE") && E.IsReady() && ComboOption.UseE && target.IsValidTarget(E.Range))
                        {
                            SpellManager.PredCast(E, target, true);
                        }
                        else
                        {
                            SpellManager.PredCast(Q, target);
                        }
                    }
                    else if (target.IsValidTarget(QExtend.Range) && HaveEBuff(target))
                    {
                        QExtend.Cast(target);
                    }
                }
            }
        }
예제 #16
0
        private static void AfterAttack(AttackableUnit unit, AttackableUnit ArgsTarget)
        {
            if (!unit.IsMe)
            {
                return;
            }

            if (isComboMode)
            {
                var target = (AIHeroClient)ArgsTarget;

                if (target != null && !target.IsDead && !target.IsZombie)
                {
                    if (ComboOption.UseW && W.IsReady() && target.IsValidTarget(W.Range))
                    {
                        W.Cast();
                    }
                    else if (ComboOption.UseR && R.IsReady() && ComboOption.GetSlider("ComboRLimit") >= GetRCount &&
                             target.IsValidTarget(R.Range))
                    {
                        SpellManager.PredCast(R, target, true);
                    }
                    else if (ComboOption.UseQ && Q.IsReady() && target.IsValidTarget(Q.Range))
                    {
                        SpellManager.PredCast(Q, target);
                    }
                    else if (ComboOption.UseE && E.IsReady() && target.IsValidTarget(E.Range))
                    {
                        SpellManager.PredCast(E, target, true);
                    }
                }
            }
            else if (isJungleClearMode && JungleClearOption.HasEnouguMana)
            {
                var mobs = MinionManager.GetMinions(Me.Position, R.Range, MinionTypes.All, MinionTeam.Neutral,
                                                    MinionOrderTypes.MaxHealth);

                if (mobs.Any())
                {
                    var mob    = mobs.FirstOrDefault();
                    var bigmob = mobs.FirstOrDefault(x => !x.Name.ToLower().Contains("mini"));

                    if (JungleClearOption.UseW && W.IsReady() && bigmob != null && bigmob.IsValidTarget(W.Range))
                    {
                        W.Cast();
                    }
                    else if (JungleClearOption.UseR && R.IsReady() && JungleClearOption.GetSlider("JungleClearRLimit") >= GetRCount &&
                             bigmob != null)
                    {
                        R.Cast(bigmob);
                    }
                    else if (JungleClearOption.UseE && E.IsReady())
                    {
                        if (bigmob != null && bigmob.IsValidTarget(E.Range))
                        {
                            E.Cast(bigmob);
                        }
                        else
                        {
                            var eMobs = MinionManager.GetMinions(Me.Position, E.Range, MinionTypes.All, MinionTeam.Neutral,
                                                                 MinionOrderTypes.MaxHealth);
                            var eFarm = E.GetLineFarmLocation(eMobs, E.Width);

                            if (eFarm.MinionsHit >= 2)
                            {
                                E.Cast(eFarm.Position);
                            }
                        }
                    }
                    else if (JungleClearOption.UseQ && Q.IsReady() && mob != null && mob.IsValidTarget(Q.Range))
                    {
                        Q.Cast(mob);
                    }
                }
            }
        }
예제 #17
0
        private static void Combo()
        {
            var target = TargetSelector.GetSelectedTarget() ?? myOrbwalker.GetTarget() as AIHeroClient;

            if (ComboOption.UseE && E.IsReady() && !Q.IsCharging)
            {
                if (target == null || !target.IsValidTarget())
                {
                    target = TargetSelector.GetTarget(E.Range, TargetSelector.DamageType.Physical);
                }

                if (target.IsValidTarget(E.Range) && GetBuffCount(target) >= ComboOption.GetSlider("ComboPassive") || W.Level == 0 || target.Health < E.GetDamage(target) + GetWDmg(target) || !Orbwalker.InAutoAttackRange(target))
                {
                    SpellManager.PredCast(E, target, true);
                    return;
                }
            }

            if (ComboOption.UseQ && Q.IsReady())
            {
                if (target == null || !target.IsValidTarget())
                {
                    target = TargetSelector.GetTarget(1600f, TargetSelector.DamageType.Physical);
                }

                if (target.IsValidTarget(1600f))
                {
                    if (Q.IsCharging)
                    {
                        if (target.IsValidTarget(Q.ChargedMaxRange))
                        {
                            SpellManager.PredCast(Q, target);
                            return;
                        }
                    }
                    else
                    {
                        if (GetBuffCount(target) >= ComboOption.GetSlider("ComboPassive") || W.Level == 0 || target.Health < Q.GetDamage(target) + GetWDmg(target))
                        {
                            if (target.IsValidTarget(Q.Range))
                            {
                                SpellManager.PredCast(Q, target);
                            }
                            else
                            {
                                Q.StartCharging();
                            }
                            return;
                        }
                    }
                }
                else
                {
                    foreach (var t in ObjectManager.Heroes.Enemies.Where(x => !x.IsDead && !x.IsZombie && x.IsValidTarget(1600f)))
                    {
                        if (Q.IsCharging)
                        {
                            if (t.IsValidTarget(Q.ChargedMaxRange))
                            {
                                SpellManager.PredCast(Q, target);
                                return;
                            }
                        }
                        else
                        {
                            if (GetBuffCount(t) >= ComboOption.GetSlider("ComboPassive") || W.Level == 0 || t.Health < Q.GetDamage(t) + GetWDmg(t))
                            {
                                if (t.IsValidTarget(Q.Range))
                                {
                                    SpellManager.PredCast(Q, t);
                                }
                                else
                                {
                                    Q.StartCharging();
                                }
                                return;
                            }
                        }
                    }
                }
            }

            if (ComboOption.UseR && R.IsReady())
            {
                if (target == null || !target.IsValidTarget())
                {
                    target = TargetSelector.GetTarget(R.Range, TargetSelector.DamageType.Physical);
                }

                if (target.IsValidTarget(R.Range) && ComboOption.GetBool("ComboRSolo") && Me.CountEnemiesInRange(1000) <= 2)
                {
                    if (target.Health + target.HPRegenRate * 2 <
                        R.GetDamage(target) + W.GetDamage(target) + (E.IsReady() ? E.GetDamage(target) : 0) +
                        (Q.IsReady() ? Q.GetDamage(target) : 0) + Me.GetAutoAttackDamage(target) * 3)
                    {
                        SpellManager.PredCast(R, target);
                        return;
                    }
                }

                var rPred = R.GetPrediction(target, true);

                if (rPred.AoeTargetsHitCount >= ComboOption.GetSlider("ComboRCount") ||
                    Me.CountEnemiesInRange(R.Range) >= ComboOption.GetSlider("ComboRCount"))
                {
                    SpellManager.PredCast(R, target);
                }
            }
        }
예제 #18
0
        private static void OnAction(object sender, OrbwalkerActionArgs Args)
        {
            if (Args.Type != OrbwalkerType.AfterAttack)
            {
                return;
            }

            if (Args.Target == null || Args.Target.IsDead || !Args.Target.IsValidTarget() || Args.Target.Health <= 0)
            {
                return;
            }

            switch (Args.Target.Type)
            {
            case GameObjectType.AIHeroClient:
            {
                if (Orbwalker.ActiveMode == OrbwalkerMode.Combo)
                {
                    var target = (AIHeroClient)Args.Target;
                    if (target != null && target.IsValidTarget() && !target.IsUnKillable())
                    {
                        if (ComboOption.UseR && R.IsReady() &&
                            R.Ammo >= ComboOption.GetSlider("ComboRLimit").Value&&
                            target.IsValidTarget(R.Range) &&
                            target.HealthPercent <= ComboOption.GetSlider("ComboRHP").Value)
                        {
                            var rPred = R.GetPrediction(target);

                            if (rPred.Hitchance >= HitChance.High)
                            {
                                R.Cast(rPred.UnitPosition);
                            }
                        }
                        else if (ComboOption.UseQ && Q.IsReady() && target.IsValidTarget(Q.Range))
                        {
                            var qPred = Q.GetPrediction(target);

                            if (qPred.Hitchance >= HitChance.High)
                            {
                                Q.Cast(qPred.CastPosition);
                            }
                        }
                        else if (ComboOption.UseE && E.IsReady() && target.InAutoAttackRange())
                        {
                            E.Cast(Me.PreviousPosition);
                        }
                    }
                }
            }
            break;

            case GameObjectType.AIMinionClient:
            {
                if (Orbwalker.ActiveMode == OrbwalkerMode.LaneClear)
                {
                    if (Args.Target is AIMinionClient)
                    {
                        var mob = (AIMinionClient)Args.Target;
                        if (mob != null && mob.IsValidTarget() && mob.GetJungleType() != JungleType.Unknown)
                        {
                            if (JungleClearOption.HasEnouguMana())
                            {
                                if (JungleClearOption.UseR && R.IsReady() &&
                                    R.Ammo >=
                                    JungleClearOption.GetSlider("JungleClearRLimit").Value)
                                {
                                    R.CastIfHitchanceEquals(mob, HitChance.Medium);
                                }
                                else if (JungleClearOption.UseQ && Q.IsReady() && mob.IsValidTarget(Q.Range))
                                {
                                    Q.CastIfHitchanceEquals(mob, HitChance.Medium);
                                }
                                else if (JungleClearOption.UseE && E.IsReady() && mob.InAutoAttackRange())
                                {
                                    E.Cast(Me.PreviousPosition);
                                }
                            }
                        }
                    }
                }
            }
            break;
            }
        }
예제 #19
0
        private static void Combo()
        {
            var target = TargetSelector.GetTarget(R.Range);

            if (target.IsValidTarget(R.Range) && !target.IsUnKillable())
            {
                if (ComboOption.UseE && E.Ready && target.IsValidTarget(700))
                {
                    var ePred = E.GetPrediction(target);

                    if (!ePred.CollisionObjects.Any() || ePred.HitChance >= HitChance.High)
                    {
                        if (ComboOption.UseQ && Q.Ready)
                        {
                            if (E.Cast(ePred.CastPosition))
                            {
                                Q.Cast(target);
                            }
                        }
                        else
                        {
                            E.Cast(ePred.CastPosition);
                        }
                    }
                    else
                    {
                        if (ComboOption.UseQ && Q.Ready && target.IsValidTarget(Q.Range))
                        {
                            if (Me.CountEnemyHeroesInRange(ComboOption.GetSlider("ComboQRange").Value) < 0)
                            {
                                var qPred = Q.GetPrediction(target);

                                if (qPred.HitChance >= HitChance.High)
                                {
                                    Q.Cast(target);
                                }

                                if (ComboOption.GetSlider("ComboQCount").Value != 0 &&
                                    Me.CountEnemyHeroesInRange(Q.Range) >= ComboOption.GetSlider("ComboQCount").Value)
                                {
                                    Q.CastIfWillHit(target, ComboOption.GetSlider("ComboQCount").Value);
                                    //if (qPred.HitChance >= HitChance.Medium &&
                                    //    qPred.AoeTargetsHitCount >= ComboOption.GetSlider("ComboQCount").Value)
                                    //{
                                    //    Q.Cast(qPred.CastPosition);
                                    //}
                                }
                            }
                        }
                    }
                }

                if (ComboOption.UseQ && Q.Ready && !E.Ready && target.IsValidTarget(Q.Range))
                {
                    if (Me.CountEnemyHeroesInRange(ComboOption.GetSlider("ComboQRange").Value) < 0)
                    {
                        var qPred = Q.GetPrediction(target);

                        if (qPred.HitChance >= HitChance.High)
                        {
                            Q.Cast(target);
                        }

                        if (ComboOption.GetSlider("ComboQCount").Value != 0 &&
                            Me.CountEnemyHeroesInRange(Q.Range) >= ComboOption.GetSlider("ComboQCount").Value)
                        {
                            Q.CastIfWillHit(target, ComboOption.GetSlider("ComboQCount").Value);
                            //if (qPred.HitChance >= HitChance.Medium &&
                            //    qPred.AoeTargetsHitCount >= ComboOption.GetSlider("ComboQCount").Value)
                            //{
                            //    Q.Cast(qPred.CastPosition);
                            //}
                        }
                    }
                }

                if (ComboOption.UseW && W.Ready && target.IsValidTarget(W.Range) &&
                    W.GetBasicSpell().Ammo >= ComboOption.GetSlider("ComboWCount").Value)
                {
                    if (Game.TickCount - lastWTime > (1800 + Game.Ping * 2))
                    {
                        if (target.IsFacing(Me))
                        {
                            if (target.IsMelee && target.DistanceToPlayer() < target.AttackRange + 100)
                            {
                                W.Cast(Me.ServerPosition);
                            }
                            else
                            {
                                var wPred = W.GetPrediction(target);

                                if (wPred.HitChance >= HitChance.High && target.IsValidTarget(W.Range))
                                {
                                    W.Cast(wPred.CastPosition);
                                }
                            }
                        }
                        else
                        {
                            var wPred = W.GetPrediction(target);

                            if (wPred.HitChance >= HitChance.High && target.IsValidTarget(W.Range))
                            {
                                W.Cast(wPred.CastPosition + Vector3.Normalize(target.ServerPosition - Me.ServerPosition) * 100);
                            }
                        }
                    }
                }

                if (ComboOption.UseR && R.Ready && Game.TickCount - lastQTime > 2500)
                {
                    if (ComboOption.GetBool("ComboRSafe").Enabled&& (Me.IsUnderEnemyTurret() || Me.CountEnemyHeroesInRange(1000) > 2))
                    {
                        return;
                    }

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

                    if (target.DistanceToPlayer() < ComboOption.GetSlider("ComboRRange").Value)
                    {
                        return;
                    }

                    if (target.Health + target.HPRegenRate * 3 > Me.GetSpellDamage(target, SpellSlot.R))
                    {
                        return;
                    }

                    var RCollision =
                        Collision.GetCollision(new List <Vector3> {
                        target.ServerPosition
                    },
                                               new PredictionInput
                    {
                        Delay            = R.Delay,
                        Radius           = 500,
                        Speed            = 1500,
                        From             = ObjectManager.GetLocalPlayer().ServerPosition,
                        Unit             = target,
                        CollisionObjects = CollisionableObjects.YasuoWall | CollisionableObjects.Heroes
                    })
                        .Any(x => x.NetworkId != target.NetworkId);

                    if (RCollision)
                    {
                        return;
                    }

                    R.CastOnUnit(target);
                }
            }
        }
예제 #20
0
        private static void Combo()
        {
            if (ComboOption.UseE && E.IsReady() && !Q.IsCharging && Variables.GameTimeTickCount - lastQTime > 750 + Game.Ping)
            {
                var target = MyTargetSelector.GetTarget(E.Range);

                if (target != null && target.IsValidTarget(E.Range) && (GetBuffCount(target) >= ComboOption.GetSlider("ComboEPassive").Value ||
                                                                        W.Level == 0 || target.Health < Me.GetSpellDamage(target, SpellSlot.E) + GetWDamage(target) ||
                                                                        !target.InAutoAttackRange() && !Q.IsReady()))
                {
                    var ePred = E.GetPrediction(target);

                    if (ePred.Hitchance >= HitChance.High)
                    {
                        E.Cast(ePred.UnitPosition);
                    }
                }
            }

            if (ComboOption.UseQ && Q.IsReady() && Variables.GameTimeTickCount - lastETime > 750 + Game.Ping)
            {
                var target = MyTargetSelector.GetTarget(1600f);

                if (target != null && target.IsValidTarget(1600f))
                {
                    if (Q.IsCharging)
                    {
                        if (ComboOption.GetBool("ComboQFast").Enabled&& target.IsValidTarget(800))
                        {
                            Q.ShootChargedSpell(target.Position);
                        }
                        else if (target.IsValidTarget(Q.ChargedMaxRange))
                        {
                            var qPred = Q.GetPrediction(target);

                            if (qPred.Hitchance >= HitChance.High)
                            {
                                Q.ShootChargedSpell(qPred.CastPosition);
                            }
                        }
                    }
                    else
                    {
                        if (GetBuffCount(target) >= ComboOption.GetSlider("ComboQPassive").Value || W.Level == 0 ||
                            target.Health < Me.GetSpellDamage(target, SpellSlot.Q) + GetWDamage(target))
                        {
                            Q.StartCharging();
                        }
                    }
                }
                else
                {
                    foreach (var t in GameObjects.EnemyHeroes.Where(x => !x.IsDead && x.IsValidTarget(1600)))
                    {
                        if (t.IsValidTarget(1600))
                        {
                            if (Q.IsCharging)
                            {
                                if (ComboOption.GetBool("ComboQFast").Enabled&& t.IsValidTarget(800))
                                {
                                    Q.ShootChargedSpell(t.Position);
                                }
                                else if (t.IsValidTarget(Q.ChargedMaxRange))
                                {
                                    var qPred = Q.GetPrediction(t);

                                    if (qPred.Hitchance >= HitChance.High)
                                    {
                                        Q.ShootChargedSpell(qPred.CastPosition);
                                    }
                                }
                            }
                            else
                            {
                                if (GetBuffCount(t) >= ComboOption.GetSlider("ComboQPassive").Value || W.Level == 0 ||
                                    t.Health < Me.GetSpellDamage(t, SpellSlot.Q) + GetWDamage(t))
                                {
                                    Q.StartCharging();
                                }
                            }
                        }
                    }
                }
            }

            if (ComboOption.UseR && R.IsReady())
            {
                var target = MyTargetSelector.GetTarget(R.Range);

                if (target.IsValidTarget(R.Range) && ComboOption.GetBool("ComboRSolo").Enabled&&
                    Me.CountEnemyHeroesInRange(1000) <= 2)
                {
                    if (target.Health + target.HPRegenRate * 2 <
                        Me.GetSpellDamage(target, SpellSlot.R) + GetWDamage(target) +
                        (E.IsReady() ? Me.GetSpellDamage(target, SpellSlot.E) : 0) +
                        (Q.IsReady() ? Me.GetSpellDamage(target, SpellSlot.Q) : 0) + Me.GetAutoAttackDamage(target) * 3)
                    {
                        var rPred = R.GetPrediction(target);

                        if (rPred.Hitchance >= HitChance.High)
                        {
                            R.Cast(rPred.UnitPosition);
                        }
                    }
                }

                foreach (var rTarget in GameObjects.EnemyHeroes.Where(x => x.IsValidTarget(R.Range) && !x.HaveShiledBuff()))
                {
                    var rPred = R.GetPrediction(rTarget);

                    if (rPred.AoeTargetsHitCount >= ComboOption.GetSlider("ComboRCount").Value&&
                        Me.CountEnemyHeroesInRange(R.Range) >= ComboOption.GetSlider("ComboRCount").Value)
                    {
                        R.Cast(rPred.CastPosition);
                    }
                }
            }
        }
예제 #21
0
        private static void Combo()
        {
            if (ComboOption.UseR && R.IsReady() &&
                GameObjects.EnemyHeroes.Count(x => x.IsValidTarget(650)) >= ComboOption.GetSlider("ComboRCount").Value&&
                Me.HealthPercent <= ComboOption.GetSlider("ComboRHp").Value)
            {
                R.Cast();
            }

            if (ComboOption.UseE && E.IsReady())
            {
                ELogic();
            }

            if (ComboOption.UseQ && Q.IsReady())
            {
                if (Me.HasBuff("VayneInquisition") && Me.CountEnemyHeroesInRange(1200) > 0 &&
                    Me.CountEnemyHeroesInRange(700) >= 2)
                {
                    var dashPos = GetDashQPos();

                    if (dashPos != Vector3.Zero)
                    {
                        if (Me.CanMoveMent())
                        {
                            Q.Cast(dashPos);
                        }
                    }
                }

                if (Me.CountEnemyHeroesInRange(Me.AttackRange) == 0 && Me.CountEnemyHeroesInRange(900) > 0)
                {
                    var target = MyTargetSelector.GetTarget(900);

                    if (target.IsValidTarget())
                    {
                        if (!target.InAutoAttackRange() &&
                            target.Position.DistanceToCursor() < target.Position.DistanceToPlayer())
                        {
                            var dashPos = GetDashQPos();

                            if (dashPos != Vector3.Zero)
                            {
                                if (Me.CanMoveMent())
                                {
                                    Q.Cast(dashPos);
                                }
                            }
                        }

                        if (ComboOption.UseE && E.IsReady())
                        {
                            var dashPos = GetDashQPos();

                            if (dashPos != Vector3.Zero && CondemnCheck(dashPos, target))
                            {
                                if (Me.CanMoveMent())
                                {
                                    Q.Cast(dashPos);
                                }
                            }
                        }
                    }
                }
            }
        }
예제 #22
0
        private static void Combo()
        {
            var _Target = TargetSelector.GetTarget(R.Range, TargetSelector.DamageType.Physical);

            if (_Target.IsValidTarget(R.Range))
            {
                if (ComboOption.UseE && E.IsReady() && _Target.IsValidTarget(700))
                {
                    var ePred = E.GetPrediction(_Target);

                    if (ePred.CollisionObjects.Count == 0 || ePred.Hitchance >= HitChance.VeryHigh)
                    {
                        if (ComboOption.UseQ && Q.IsReady())
                        {
                            if (E.Cast(_Target).IsCasted())
                            {
                                Q.Cast(_Target);
                            }
                        }
                        else
                        {
                            E.Cast(_Target);
                        }
                    }
                    else
                    {
                        if (ComboOption.UseQ && Q.IsReady() && _Target.IsValidTarget(Q.Range))
                        {
                            if (_Target.DistanceToPlayer() >= ComboOption.GetSlider("ComboQRange"))
                            {
                                SpellManager.PredCast(Q, _Target);
                                if (ComboOption.GetSlider("ComboQCount") != 0 && Me.CountEnemiesInRange(Q.Range) >= ComboOption.GetSlider("ComboQCount"))
                                {
                                    Q.CastIfWillHit(_Target, ComboOption.GetSlider("ComboQCount"), true);
                                }
                            }
                        }
                    }
                }

                if (ComboOption.UseQ && Q.IsReady() && !E.IsReady() && _Target.IsValidTarget(Q.Range) && _Target.DistanceToPlayer() >= ComboOption.GetSlider("ComboQRange"))
                {
                    if (_Target.DistanceToPlayer() >= ComboOption.GetSlider("ComboQRange"))
                    {
                        SpellManager.PredCast(Q, _Target);
                        if (ComboOption.GetSlider("ComboQCount") != 0 && Me.CountEnemiesInRange(Q.Range) >= ComboOption.GetSlider("ComboQCount"))
                        {
                            Q.CastIfWillHit(_Target, ComboOption.GetSlider("ComboQCount"), true);
                        }
                    }
                }

                if (ComboOption.UseW && W.IsReady() && _Target.IsValidTarget(W.Range) && W.Instance.SpellData.SpellDataInfos.AmmoUsed >= ComboOption.GetSlider("ComboWCount"))
                {
                    if (Utils.TickCount - LastCastTickW > 1500)
                    {
                        if (_Target.IsFacing(Me))
                        {
                            if (_Target.IsMelee() && _Target.DistanceToPlayer() < _Target.AttackRange + 100)
                            {
                                W.Cast(Me.Position, true);
                            }
                            else
                            {
                                var _PredictionW = W.GetPrediction(_Target);
                                if (_PredictionW.Hitchance >= HitChance.VeryHigh && _Target.IsValidTarget(W.Range))
                                {
                                    W.Cast(_PredictionW.CastPosition, true);
                                }
                            }
                        }
                        else
                        {
                            var _PredictionW = W.GetPrediction(_Target);
                            if (_PredictionW.Hitchance >= HitChance.VeryHigh && _Target.IsValidTarget(W.Range))
                            {
                                W.Cast(_PredictionW.CastPosition + Vector3.Normalize(_Target.ServerPosition - Me.ServerPosition) * 100, true);
                            }
                        }
                    }
                }

                if (ComboOption.UseR && R.IsReady() && Utils.TickCount - LastCastTickQ > 2500)
                {
                    if (ComboOption.GetBool("ComboRSafe"))
                    {
                        if (!Me.UnderTurret(true))
                        {
                            return;
                        }
                    }

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

                    if (_Target.DistanceToPlayer() < ComboOption.GetSlider("ComboRRange"))
                    {
                        return;
                    }

                    if (_Target.Health + _Target.HPRegenRate * 3 > R.GetDamage(_Target))
                    {
                        return;
                    }

                    if (HesaEngine.SDK.Collision.GetCollision
                        (
                            new List <Vector3>
                    {
                        _Target.ServerPosition
                    },
                            new PredictionInput
                    {
                        Delay = R.Delay,
                        Radius = R.Width,
                        Speed = R.Speed,
                        Unit = Me,
                        UseBoundingRadius = true,
                        Collision = true,
                        CollisionObjects = new[]
                        {
                            CollisionableObjects.Heroes,
                            CollisionableObjects.YasuoWall
                        }
                    }
                        ).Any(x => x.NetworkId != _Target.NetworkId))
                    {
                        R.CastOnUnit(_Target, true);
                    }
                }
            }
        }
예제 #23
0
        private static void PostAttack(object sender, PostAttackEventArgs Args)
        {
            if (Args.Target == null || Args.Target.IsDead || !Args.Target.IsValidTarget() || Args.Target.Health <= 0)
            {
                return;
            }

            switch (Orbwalker.Mode)
            {
            case OrbwalkingMode.Combo:
            {
                if (Args.Target.Type == GameObjectType.obj_AI_Hero)
                {
                    var target = Args.Target as Obj_AI_Hero;

                    if (target != null && target.IsValidTarget() && !target.IsUnKillable())
                    {
                        if (ComboOption.UseR && R.Ready &&
                            R.GetBasicSpell().Ammo >= ComboOption.GetSlider("ComboRLimit").Value&&
                            target.IsValidTarget(R.Range) &&
                            target.HealthPercent() <= ComboOption.GetSlider("ComboRHP").Value)
                        {
                            var rPred = R.GetPrediction(target);

                            if (rPred.HitChance >= HitChance.High)
                            {
                                R.Cast(rPred.UnitPosition);
                            }
                        }
                        else if (ComboOption.UseQ && Q.Ready && target.IsValidTarget(Q.Range))
                        {
                            var qPred = Q.GetPrediction(target);

                            if (qPred.HitChance >= HitChance.High)
                            {
                                Q.Cast(qPred.CastPosition);
                            }
                        }
                        else if (ComboOption.UseE && E.Ready && target.IsValidAutoRange())
                        {
                            E.Cast();
                        }
                    }
                }
            }
            break;

            case OrbwalkingMode.Laneclear:
            {
                if (Args.Target.IsMob())
                {
                    if (JungleClearOption.HasEnouguMana())
                    {
                        var mob = Args.Target as Obj_AI_Minion;
                        if (mob != null && mob.IsValidTarget())
                        {
                            if (JungleClearOption.UseR && R.Ready &&
                                R.GetBasicSpell().Ammo >=
                                JungleClearOption.GetSlider("JungleClearRLimit").Value)
                            {
                                R.Cast(mob);
                            }
                            else if (JungleClearOption.UseQ && Q.Ready && mob.IsValidTarget(Q.Range))
                            {
                                Q.Cast(mob);
                            }
                            else if (JungleClearOption.UseE && E.Ready && mob.IsValidAutoRange())
                            {
                                E.Cast();
                            }
                        }
                    }
                }
            }
            break;
            }
        }
예제 #24
0
        private static void Combo()
        {
            if (ComboOption.UseR && R.IsReady() && ObjectManager.Heroes.Enemies.Count(x => x.IsValidTarget(650)) >= ComboOption.GetSlider("ComboRCount") && Me.HealthPercent <= ComboOption.GetSlider("ComboRHp"))
            {
                R.Cast();
            }

            if (ComboOption.UseE && E.IsReady())
            {
                ELogic();
            }

            if (ComboOption.UseQ && Q.IsReady() && !Me.IsWindingUp)
            {
                if (Me.HasBuff("vayneinquisition") && Me.CountEnemiesInRange(1200) > 0 && Me.CountEnemiesInRange(700) >= 2)
                {
                    var dashPos = GetDashQPos();

                    if (dashPos != Vector3.Zero)
                    {
                        if (Me.CanMoveMent())
                        {
                            Q.Cast(dashPos, true);
                        }
                    }
                }

                /*
                 * if (!ObjectManager.Heroes.Enemies.Exists(x => !x.IsDead && !x.IsZombie && x.IsValidTarget(Me.AttackRange)))
                 * {
                 *  var target = TargetSelector.GetTarget(900, TargetSelector.DamageType.Physical);
                 *  if (target.IsValidTarget())
                 *  {
                 *      if (!Orbwalker.InAutoAttackRange(target) && target.Position.DistanceToMouse() < target.Position.DistanceToPlayer())
                 *      {
                 *          var dashPos = GetDashQPos();
                 *          if (dashPos != Vector3.Zero)
                 *              if (Me.CanMoveMent())
                 *                  Q.Cast(dashPos, true);
                 *      }
                 *
                 *      if (E.IsReady())
                 *      {
                 *          var dashPos = GetDashQPos();
                 *          if (dashPos != Vector3.Zero && CondemnCheck(dashPos, target))
                 *              if (Me.CanMoveMent())
                 *                  Q.Cast(dashPos, true);
                 *      }
                 *  }
                 * }*/
            }
        }
예제 #25
0
        private static void Combo()
        {
            var target = MyTargetSelector.GetTarget(R.Range);

            if (target.IsValidTarget(R.Range) && !target.IsUnKillable())
            {
                if (ComboOption.UseE && E.IsReady() && target.IsValidTarget(700))
                {
                    var ePred = E.GetPrediction(target);

                    if (!ePred.CollisionObjects.Any() || ePred.Hitchance >= HitChance.High)
                    {
                        if (ComboOption.UseQ && Q.IsReady())
                        {
                            if (E.Cast(ePred.CastPosition))
                            {
                            }
                        }
                        else
                        {
                            E.Cast(ePred.CastPosition);
                        }
                    }
                    else
                    {
                        if (ComboOption.UseQ && Q.IsReady() && target.IsValidTarget(Q.Range) && !Me.IsDashing())
                        {
                            if (Me.CountEnemyHeroesInRange(ComboOption.GetSlider("ComboQRange").Value) < 0)
                            {
                                var qPred = Q.GetPrediction(target);

                                if (qPred.Hitchance >= HitChance.High)
                                {
                                    Q.Cast(qPred.CastPosition);
                                }

                                if (ComboOption.GetSlider("ComboQCount").Value != 0 &&
                                    Me.CountEnemyHeroesInRange(Q.Range) >= ComboOption.GetSlider("ComboQCount").Value)
                                {
                                    Q.CastIfWillHit(target, ComboOption.GetSlider("ComboQCount").Value);
                                }
                            }
                        }
                    }
                }

                if (ComboOption.UseQ && Q.IsReady() && !E.IsReady() && target.IsValidTarget(Q.Range) && !Me.IsDashing())
                {
                    if (Me.CountEnemyHeroesInRange(ComboOption.GetSlider("ComboQRange").Value) < 0)
                    {
                        var qPred = Q.GetPrediction(target);

                        if (qPred.Hitchance >= HitChance.High)
                        {
                            Q.Cast(qPred.CastPosition);
                        }

                        if (ComboOption.GetSlider("ComboQCount").Value != 0 &&
                            Me.CountEnemyHeroesInRange(Q.Range) >= ComboOption.GetSlider("ComboQCount").Value)
                        {
                            Q.CastIfWillHit(target, ComboOption.GetSlider("ComboQCount").Value);
                        }
                    }
                }

                if (ComboOption.UseW && W.IsReady() && target.IsValidTarget(W.Range) &&
                    W.Ammo >= ComboOption.GetSlider("ComboWCount").Value)
                {
                    if (Variables.GameTimeTickCount - lastWTime > 1800 + Game.Ping * 2)
                    {
                        if (target.CanMoveMent())
                        {
                            if (target.IsFacing(Me))
                            {
                                if (target.IsMelee && target.DistanceToPlayer() < target.AttackRange + 100)
                                {
                                    CastW(Me.PreviousPosition);
                                }
                                else
                                {
                                    var wPred = W.GetPrediction(target);

                                    if (wPred.Hitchance >= HitChance.High && target.IsValidTarget(W.Range))
                                    {
                                        CastW(wPred.CastPosition);
                                    }
                                }
                            }
                            else
                            {
                                var wPred = W.GetPrediction(target);

                                if (wPred.Hitchance >= HitChance.High && target.IsValidTarget(W.Range))
                                {
                                    CastW(wPred.CastPosition +
                                          Vector3.Normalize(target.PreviousPosition - Me.PreviousPosition) * 100);
                                }
                            }
                        }
                        else
                        {
                            if (target.IsValidTarget(W.Range))
                            {
                                CastW(target.PreviousPosition);
                            }
                        }
                    }
                }

                if (ComboOption.UseR && R.IsReady() && Variables.GameTimeTickCount - lastQTime > 2500)
                {
                    if (ComboOption.GetBool("ComboRSafe").Enabled&&
                        (Me.IsUnderEnemyTurret() || Me.CountEnemyHeroesInRange(1000) > 2))
                    {
                        return;
                    }

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

                    if (target.DistanceToPlayer() < ComboOption.GetSlider("ComboRRange").Value)
                    {
                        return;
                    }

                    if (target.Health + target.HPRegenRate * 3 > Me.GetSpellDamage(target, SpellSlot.R))
                    {
                        return;
                    }

                    var RCollision =
                        SpellPrediction.GetCollsionsObjects(new List <Vector3> {
                        target.PreviousPosition
                    },
                                                            new SpellPrediction.PredictionInput
                    {
                        Delay            = R.Delay,
                        Radius           = 500,
                        Speed            = 1500,
                        From             = ObjectManager.Player.PreviousPosition,
                        Unit             = target,
                        CollisionObjects = CollisionObjects.YasuoWall | CollisionObjects.Heroes
                    })
                        .Any(x => x.NetworkId != target.NetworkId);

                    if (RCollision)
                    {
                        return;
                    }

                    R.CastOnUnit(target);
                }
            }
        }
예제 #26
0
        private static void AfterAttack(AttackableUnit unit, AttackableUnit ArgsTarget)
        {
            if (!unit.IsMe || Me.IsDead || ArgsTarget == null || ArgsTarget.IsDead || !ArgsTarget.IsValidTarget())
            {
                return;
            }

            if (isComboMode && ArgsTarget.ObjectType == GameObjectType.AIHeroClient)
            {
                var target = ArgsTarget as AIHeroClient;

                if (target != null)
                {
                    if (ComboOption.UseR && R.IsReady() && R.Instance.CurrentCharge >= ComboOption.GetSlider("ComboRLimit"))
                    {
                        SpellManager.PredCast(R, target, true);
                    }
                    else if (ComboOption.UseQ && Q.IsReady())
                    {
                        SpellManager.PredCast(Q, target, true);
                    }
                    else if (ComboOption.UseE && E.IsReady())
                    {
                        E.Cast();
                    }
                }
            }
            else if (isJungleClearMode && ArgsTarget.ObjectType == GameObjectType.obj_AI_Minion)
            {
                if (JungleClearOption.HasEnouguMana)
                {
                    var mobs = MinionManager.GetMinions(R.Range, MinionTypes.All, MinionTeam.Neutral, MinionOrderTypes.MaxHealth);

                    if (mobs.Any())
                    {
                        var mob = mobs.FirstOrDefault();

                        if (JungleClearOption.UseR && R.IsReady() && R.Instance.CurrentCharge >= JungleClearOption.GetSlider("JungleClearRLimit"))
                        {
                            R.Cast(mob, true);
                        }
                        else if (JungleClearOption.UseQ && Q.IsReady())
                        {
                            Q.Cast(mob, true);
                        }
                        else if (JungleClearOption.UseE && E.IsReady())
                        {
                            E.Cast();
                        }
                    }
                }
            }
        }
예제 #27
0
        private static void AfterAttack(AttackableUnit unit, AttackableUnit ArgsTarget)
        {
            if (!unit.IsMe)
            {
                return;
            }

            if (isComboMode)
            {
                var target = (AIHeroClient)ArgsTarget;

                if (target != null && !target.IsDead && !target.IsZombie)
                {
                    if (ComboOption.UseE && E.IsReady() && (Q.IsReady() || target.Health < E.GetDamage(target)))
                    {
                        SpellManager.PredCast(E, target, true);
                    }

                    if (ComboOption.UseW && W.IsReady())
                    {
                        if (target.DistanceToPlayer() <= Me.AttackRange + Me.BoundingRadius)
                        {
                            if (ComboOption.GetBool("ComboWAlways"))
                            {
                                W.Cast();
                            }

                            if (Me.HealthPercent <= ComboOption.GetSlider("ComboWLowHp"))
                            {
                                W.Cast();
                            }
                        }

                        if (ComboOption.GetBool("ComboWBuff") && HaveEBuff(target) && Q.IsReady())
                        {
                            W.Cast();
                        }
                    }
                    else if (ComboOption.UseQ && Q.IsReady() && target.IsValidTarget(QExtend.Range))
                    {
                        if (!HaveEBuff(target) && target.IsValidTarget(Q.Range))
                        {
                            if (ComboOption.GetBool("ComboFirstE") && E.IsReady() && ComboOption.UseE && target.IsValidTarget(E.Range))
                            {
                                SpellManager.PredCast(E, target, true);
                            }
                            else
                            {
                                SpellManager.PredCast(Q, target);
                            }
                        }
                        else if (target.IsValidTarget(QExtend.Range) && HaveEBuff(target))
                        {
                            QExtend.Cast(target);
                        }
                    }
                }
            }

            if (isJungleClearMode && JungleClearOption.HasEnouguMana)
            {
                var mobs = MinionManager.GetMinions(Me.Position, E.Range, MinionTypes.All, MinionTeam.Neutral, MinionOrderTypes.MaxHealth);

                if (mobs.Any())
                {
                    var mob = mobs.FirstOrDefault();

                    if (mob != null)
                    {
                        if (JungleClearOption.UseW && W.IsReady())
                        {
                            W.Cast();
                        }

                        if (JungleClearOption.UseQ && Q.IsReady() && mob.IsValidTarget(Q.Range))
                        {
                            Q.Cast(mob);
                        }
                    }
                }
            }
        }