예제 #1
0
파일: Combo.cs 프로젝트: waldow90/PortAIO
        internal static void Init()
        {
            var target = TargetSelector.GetTarget(1300, TargetSelector.DamageType.Magical);

            if (target.Check(1300))
            {
                if (Menu.GetBool("ComboIgnite") && Ignite != SpellSlot.Unknown && Ignite.IsReady() &&
                    target.IsValidTarget(600) &&
                    (target.Health < DamageCalculate.GetComboDamage(target) ||
                     target.Health < Me.GetSummonerSpellDamage(target, Damage.SummonerSpell.Ignite)))
                {
                    Me.Spellbook.CastSpell(Ignite, target);
                }

                if (Menu.GetBool("ComboE") && E.IsReady())
                {
                    SpellManager.CastE(target);
                }

                if (Menu.GetBool("ComboQ") && Q.IsReady() && target.IsValidTarget(Q.Range))
                {
                    Q.CastOnUnit(target, true);
                }

                if (Menu.GetBool("ComboQGap") && Q.IsReady() && Me.Level >= Menu.GetSlider("ComboQGapLevel") &&
                    Me.Buffs.Any(
                        x =>
                        x.Name == "viktorqaug" || x.Name == "viktorqwaug" || x.Name == "viktorqweaug" ||
                        x.Name == "viktorqeauh") &&
                    target.DistanceToPlayer() > Q.Range + 80 && target.DistanceToPlayer() <= Q.Range + 300)
                {
                    var qMinion =
                        MinionManager.GetMinions(Me.Position, Q.Range, MinionTypes.All, MinionTeam.NotAlly)
                        .FirstOrDefault(x => Q.CanCast(x));

                    if (qMinion != null && qMinion.IsValidTarget(Q.Range))
                    {
                        Q.CastOnUnit(qMinion, true);
                    }
                }

                if (Menu.GetBool("ComboW") && W.IsReady() && target.IsValidTarget(W.Range + W.Width))
                {
                    if (Menu.GetBool("ComboWLogic") && Me.CountEnemiesInRange(W.Range + W.Width) <= 2)
                    {
                        var wPred = W.GetPrediction(target);

                        if (wPred.CastPosition.Distance(target.Position) > 100 && wPred.Hitchance >= HitChance.VeryHigh)
                        {
                            if (Me.Position.Distance(target.ServerPosition) > Me.Position.Distance(target.Position))
                            {
                                if (target.Position.Distance(Me.ServerPosition) < target.Position.Distance(Me.Position))
                                {
                                    if (wPred.Hitchance >= HitChance.VeryHigh)
                                    {
                                        W.Cast(W.GetPrediction(target).CastPosition, true);
                                    }
                                }
                            }
                            else
                            {
                                if (target.Position.Distance(Me.ServerPosition) > target.Position.Distance(Me.Position))
                                {
                                    if (wPred.Hitchance >= HitChance.VeryHigh)
                                    {
                                        W.Cast(W.GetPrediction(target).CastPosition, true);
                                    }
                                }
                            }
                        }
                    }

                    if (Menu.GetBool("ComboWTeam") && Me.CountEnemiesInRange(W.Range + W.Width) >= Menu.GetSlider("ComboWTeamHit"))
                    {
                        W.CastIfWillHit(target, Menu.GetSlider("ComboWTeamHit"), true);
                    }
                }

                if (Menu.GetBool("ComboR") && R.IsReady() && target.IsValidTarget(R.Range))
                {
                    if (Menu.GetBool("ComboRalways"))
                    {
                        R.Cast(target.Position, true);
                    }

                    if (Menu.GetBool("ComboRKill") &&
                        ((target.Health < DamageCalculate.GetComboDamage(target) && target.IsValidTarget(R.Range - 200)) ||
                         target.Health < R.GetDamage(target)))
                    {
                        R.Cast(target.Position, true);
                    }

                    if (Menu.GetBool("ComboRTeam") && Me.CountEnemiesInRange(R.Range + R.Width) >= Menu.GetSlider("ComboRTeamHit"))
                    {
                        R.CastIfWillHit(target, Menu.GetSlider("ComboRTeamHit"), true);
                    }
                }
            }
        }
예제 #2
0
        internal static void Init()
        {
            AIHeroClient target = null;

            target = TargetSelector.GetSelectedTarget() ??
                     TargetSelector.GetTarget(Q.Range, TargetSelector.DamageType.Magical);

            if (target.Check(Q.Range))
            {
                if (Menu.GetBool("ComboDot") && Ignite != SpellSlot.Unknown && Ignite.IsReady() &&
                    target.IsValidTarget(600) &&
                    (target.Health < DamageCalculate.GetComboDamage(target) ||
                     target.Health < Me.GetSummonerSpellDamage(target, Damage.SummonerSpell.Ignite)))
                {
                    Me.Spellbook.CastSpell(Ignite, target);
                }

                if (Me.Level < 6)
                {
                    if (Menu.GetBool("ComboQ") && Q.IsReady() && target.IsValidTarget(Q.Range))
                    {
                        var qPred = Q.GetPrediction(target, true, -1, new[] { CollisionableObjects.YasuoWall });

                        if (qPred.Hitchance >= HitChance.VeryHigh || qPred.Hitchance == HitChance.Immobile)
                        {
                            Q.Cast(qPred.CastPosition, true);
                        }
                    }

                    if (Menu.GetBool("ComboW") && W.IsReady() && target.IsValidTarget(W.Range))
                    {
                        W.Cast(true);
                    }

                    if (Menu.GetBool("ComboE") && E.IsReady() &&
                        target.DistanceToPlayer() > Orbwalking.GetRealAutoAttackRange(Me) + 50 &&
                        target.IsValidTarget(E.Range - 30) && !target.HasBuffOfType(BuffType.SpellShield))
                    {
                        E.Cast(true);
                    }
                }
                else
                {
                    switch (Menu.GetList("ComboMode"))
                    {
                    case 0:
                        if (Menu.GetBool("ComboR") && R.IsReady() &&
                            Menu.GetBool("ComboQ") && Q.IsReady() &&
                            target.IsValidTarget(R.Range) && target.DistanceToPlayer() >= 600)
                        {
                            Q.Cast(target, true);
                            R.Cast(target, true);
                        }

                        if (Menu.GetBool("ComboQ") && Q.IsReady() && target.IsValidTarget(Q.Range))
                        {
                            var qPred = Q.GetPrediction(target, true, -1, new[] { CollisionableObjects.YasuoWall });

                            if (qPred.Hitchance >= HitChance.VeryHigh || qPred.Hitchance == HitChance.Immobile)
                            {
                                Q.Cast(qPred.CastPosition, true);
                            }
                        }

                        if (Menu.GetBool("ComboR") && R.IsReady() && target.IsValidTarget(R.Range))
                        {
                            LogicCast(target);
                        }

                        if (Menu.GetBool("ComboW") && W.IsReady() && target.IsValidTarget(W.Range))
                        {
                            W.Cast(true);
                        }

                        if (Menu.GetBool("ComboE") && E.IsReady() &&
                            target.DistanceToPlayer() > Orbwalking.GetRealAutoAttackRange(Me) + 50 &&
                            target.IsValidTarget(E.Range - 30) && !target.HasBuffOfType(BuffType.SpellShield))
                        {
                            E.Cast(true);
                        }
                        break;

                    case 1:
                        if (target.IsValidTarget(R.Range))
                        {
                            if (Menu.GetBool("ComboR") && R.IsReady() &&
                                Menu.GetBool("ComboQ") && Q.IsReady() && target.IsValidTarget(R.Range) &&
                                target.DistanceToPlayer() >= Menu.GetSlider("MisayaRange"))
                            {
                                R.Cast(target, true);
                                Q.Cast(target, true);
                            }

                            if (Menu.GetBool("ComboQ") && Q.IsReady() && target.IsValidTarget(Q.Range))
                            {
                                var qPred = Q.GetPrediction(target, true, -1, new[] { CollisionableObjects.YasuoWall });

                                if (qPred.Hitchance >= HitChance.VeryHigh || qPred.Hitchance == HitChance.Immobile)
                                {
                                    Q.Cast(qPred.CastPosition, true);
                                }
                            }

                            if (Menu.GetBool("ComboR") && R.IsReady() && target.IsValidTarget(R.Range))
                            {
                                LogicCast(target);
                            }

                            if (Menu.GetBool("ComboW") && W.IsReady() && target.IsValidTarget(W.Range))
                            {
                                W.Cast(true);
                            }

                            if (Menu.GetBool("ComboE") && E.IsReady() &&
                                target.DistanceToPlayer() > Orbwalking.GetRealAutoAttackRange(Me) + 50 &&
                                target.IsValidTarget(E.Range - 30) && !target.HasBuffOfType(BuffType.SpellShield))
                            {
                                E.Cast(true);
                            }
                        }
                        break;
                    }
                }
            }
        }