예제 #1
0
파일: Program.cs 프로젝트: ncmp/L-
        private static float TotalDmg(Obj_AI_Base enemy, bool useQ, bool useE, bool useR, bool qRange)
        {
            var  qaaDmg   = new Double[] { 20, 40, 60, 80, 100 };
            var  damage   = 0d;
            var  rTicks   = RMenu["rTicks"].GetValue <MenuSlider>();
            bool inQRange = ((qRange && AutoAttack.InAutoAttackRange(enemy)) || qRange == false);

            //Base Q damage
            if (useQ && Q.IsReady() && inQRange)
            {
                damage += player.GetSpellDamage(enemy, SpellSlot.Q);
                damage += Damage.CalculateDamage(player, enemy, DamageType.Magical, qaaDmg[Q.Level - 1] + 0.5 * player.TotalMagicalDamage + player.TotalAttackDamage);
            }

            // Q damage on AA
            if (useQ && !Q.IsReady() && player.HasBuff("viktorpowertransferreturn") && inQRange)
            {
                damage += Damage.CalculateDamage(player, enemy, DamageType.Magical, qaaDmg[Q.Level - 1] + 0.5 * player.TotalMagicalDamage + player.TotalAttackDamage);
            }

            //E damage
            if (useE && E.IsReady())
            {
                if (player.HasBuff("viktoreaug") || player.HasBuff("viktorqeaug") || player.HasBuff("viktorqweaug"))
                {
                    damage += player.GetSpellDamage(enemy, SpellSlot.E, LeagueSharp.Data.Enumerations.DamageStage.Detonation);
                }
                else
                {
                    damage += player.GetSpellDamage(enemy, SpellSlot.E);
                }
            }

            //R damage + 2 ticks
            if (useR && R.Level > 0 && R.IsReady() && R.Instance.Name == "ViktorChaosStorm")
            {
                damage += Damage.GetSpellDamage(player, enemy, SpellSlot.R, LeagueSharp.Data.Enumerations.DamageStage.DamagePerSecond) * rTicks;
                damage += Damage.GetSpellDamage(player, enemy, SpellSlot.R);
            }

            // Ludens Echo damage
            if (Items.HasItem(3285))
            {
                damage += Damage.CalculateDamage(player, enemy, DamageType.Magical, 100 + player.FlatMagicDamageMod * 0.1);
            }

            //sheen damage
            if (Items.HasItem(3057))
            {
                damage += Damage.CalculateDamage(player, enemy, DamageType.Physical, 0.5 * player.BaseAttackDamage);
            }

            //lich bane dmg
            if (Items.HasItem(3100))
            {
                damage += Damage.CalculateDamage(player, enemy, DamageType.Magical, 0.5 * player.FlatMagicDamageMod + 0.75 * player.BaseAttackDamage);
            }

            return((float)damage);
        }
예제 #2
0
파일: Jinx.cs 프로젝트: q51251/Tc_SDKexAIO
        private static void HarassLogic()
        {
            var QTarget = GetTarget(bonusRange() + 60, DamageType.Physical);
            var WTarget = GetTarget(W.Range, W.DamageType);

            if (CheckTarget(QTarget) && Q.IsReady() && Menu["Q"]["HarassQ"].GetValue <MenuSliderButton>().BValue)
            {
                if (!JinxQ && (!AutoAttack.InAutoAttackRange(QTarget) || QTarget.CountEnemyHeroesInRange(250) > 2) && Variables.Orbwalker.GetTarget() == null)
                {
                    var Distance = GetRealDistance(QTarget);

                    if (Player.ManaPercent >= Menu["Q"]["HarassQ"].GetValue <MenuSliderButton>().SValue || Player.GetAutoAttackDamage(QTarget) * 3 > QTarget.Health)
                    {
                        Q.Cast();
                    }
                    else if (!Player.IsWindingUp && Variables.Orbwalker.CanAttack && !Player.IsUnderEnemyTurret() && Distance < bonusRange() + QTarget.BoundingRadius + Player.BoundingRadius)
                    {
                        Q.Cast();
                    }
                }
            }

            if (!JinxQ && !Player.IsWindingUp && Variables.Orbwalker.GetTarget() == null && Q.IsReady())
            {
                if (Variables.Orbwalker.CanAttack && Menu["Q"]["FarmQout"] && Player.Mana > R.Instance.ManaCost + W.Instance.ManaCost + E.Instance.ManaCost + 10)
                {
                    foreach (var minion in GetMinions(Player.Position, bonusRange() + 30).Where(minion => !AutoAttack.InAutoAttackRange(minion) && GetRealPowPowRange(minion) < GetRealDistance(minion) && bonusRange() < GetRealDistance(minion)))
                    {
                        var hpPred = GetHealthPrediction(minion, 400, 70);

                        if (hpPred < Player.GetAutoAttackDamage(minion) * 1.1 && hpPred > 4)
                        {
                            Variables.Orbwalker.ForceTarget.Distance(minion);
                            Q.Cast();
                            return;
                        }
                    }
                }
            }

            if (Player.CountEnemyHeroesInRange(bonusRange()) == 0)
            {
                if (Menu["W"]["HarassW"].GetValue <MenuSliderButton>().BValue&& !Player.IsWindingUp && CanHarras())
                {
                    if (CheckTarget(WTarget) && W.IsReady())
                    {
                        foreach (var enemy in GameObjects.EnemyHeroes.Where(enemy => enemy.IsValidTarget(W.Range) && Menu["W"]["WList"][enemy.ChampionName.ToLower()].GetValue <MenuBool>()))
                        {
                            if (Player.ManaPercent >= Menu["W"]["HarassW"].GetValue <MenuSliderButton>().SValue)
                            {
                                CastSpell(W, enemy);
                            }
                        }
                    }
                }
            }
        }
예제 #3
0
파일: Jinx.cs 프로젝트: q51251/Tc_SDKexAIO
        private static void LaneclearLogic()
        {
            var QTarget = GetTarget(bonusRange() + 60, DamageType.Physical);

            if (!JinxQ && !Player.IsWindingUp && Variables.Orbwalker.GetTarget() == null && Variables.Orbwalker.CanAttack)
            {
                if (Menu["Q"]["FarmQout"] && Player.Mana > R.Instance.ManaCost + W.Instance.ManaCost + E.Instance.ManaCost + 10)
                {
                    foreach (var minion in GetMinions(Player.Position, bonusRange() + 30).Where(minion => !AutoAttack.InAutoAttackRange(minion) && GetRealPowPowRange(minion) < GetRealDistance(minion) && bonusRange() < GetRealDistance(minion)))
                    {
                        var hpPred = GetHealthPrediction(minion, 400, 70);
                        if (hpPred < Player.GetAutoAttackDamage(minion) * 1.1 && hpPred > 4)
                        {
                            Q.Cast(minion);
                            return;
                        }
                    }
                }
            }

            if (QTarget.IsValidTarget())
            {
                if (!JinxQ && (!AutoAttack.InAutoAttackRange(QTarget) || QTarget.CountEnemyHeroesInRange(250) > 2) && Variables.Orbwalker.GetTarget() == null)
                {
                    var Distance = GetRealDistance(QTarget);

                    if (!Player.IsWindingUp && Variables.Orbwalker.CanAttack && Q.IsReady() && Menu["Q"]["LaneClearQ"].GetValue <MenuSliderButton>().BValue)
                    {
                        if (Player.ManaPercent >= Menu["Q"]["LaneClearQ"].GetValue <MenuSliderButton>().SValue&& !Player.IsUnderEnemyTurret() && Distance < bonusRange() + QTarget.BoundingRadius + Player.BoundingRadius)
                        {
                            Q.Cast();
                        }
                    }
                }
            }
        }
예제 #4
0
파일: Jinx.cs 프로젝트: q51251/Tc_SDKexAIO
        private static void ComboLogic()
        {
            var QTarget = GetTarget(bonusRange() + 60, DamageType.Physical);
            var WTarget = GetTarget(W.Range, W.DamageType);
            var ETarget = GetTarget(E.Range, E.DamageType);

            if (QTarget.IsValidTarget() && Menu["Q"]["ComboQ"] && Q.IsReady())
            {
                if (!JinxQ && (!AutoAttack.InAutoAttackRange(QTarget) || QTarget.CountEnemyHeroesInRange(250) > 2) && Variables.Orbwalker.GetTarget() == null)
                {
                    var distance = GetRealDistance(QTarget);

                    if (Player.Mana > R.Instance.ManaCost + W.Instance.ManaCost + 10 || Player.GetAutoAttackDamage(QTarget) * 3 > QTarget.Health)
                    {
                        Q.Cast();
                    }
                }
            }
            else if (!JinxQ && Player.Mana > R.Instance.ManaCost + W.Instance.ManaCost + 20 && Player.CountEnemyHeroesInRange(2000) > 0)
            {
                Q.Cast();
            }
            else if (JinxQ && Player.Mana < R.Instance.ManaCost + W.Instance.ManaCost + 20)
            {
                Q.Cast();
            }
            else if (JinxQ && Player.CountEnemyHeroesInRange(2000) == 0)
            {
                Q.Cast();
            }

            if (Player.CountEnemyHeroesInRange(bonusRange()) == 0)
            {
                if (Menu["W"]["ComboW"] && W.IsReady())
                {
                    if (Player.Mana > R.Instance.ManaCost + W.Instance.ManaCost + 10)
                    {
                        foreach (var enemy in GameObjects.EnemyHeroes.Where(enemy => enemy.IsValidTarget(W.Range) && GetRealDistance(enemy) > bonusRange()).OrderBy(enemy => enemy.Health))
                        {
                            CastSpell(W, enemy);
                        }
                    }
                }
            }

            if (Player.IsMoving && Menu["E"]["ComboE"] && Player.Mana > R.Instance.ManaCost + E.Instance.ManaCost + W.Instance.ManaCost)
            {
                if (CheckTarget(ETarget) && E.GetPrediction(ETarget).CastPosition.Distance(ETarget.Position) > 200)
                {
                    E.CastIfWillHit(ETarget, 2);

                    if (ETarget.HasBuffOfType(BuffType.Slow) && Menu["E"]["SlowE"])
                    {
                        CastSpell(E, ETarget);
                    }

                    if (IsMovingInSameDirection(Player, ETarget))
                    {
                        CastSpell(E, ETarget);
                    }
                }
            }
        }
예제 #5
0
파일: Jinx.cs 프로젝트: q51251/Tc_SDKexAIO
        private static void OnUpdate(EventArgs args)
        {
            if (Player.IsDead && !Player.IsWindingUp)
            {
                return;
            }

            Killsteal();
            JungleclearLogic();
            ELogic();

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

            case OrbwalkingMode.Hybrid:
                HarassLogic();
                break;

            case OrbwalkingMode.LaneClear:
                LaneclearLogic();
                break;

            case OrbwalkingMode.LastHit:
                if (Menu["Q"]["LastHit"].GetValue <MenuSliderButton>().BValue&& Q.IsReady())
                {
                    var QTarget = GetMinions(Player.Position, bonusRange() + 30).Where(minion => !AutoAttack.InAutoAttackRange(minion) && GetRealPowPowRange(minion) < GetRealDistance(minion) && bonusRange() < GetRealDistance(minion));

                    foreach (var minion in QTarget)
                    {
                        var hpPred = GetHealthPrediction(minion, 400, 70);

                        if (hpPred < Player.GetAutoAttackDamage(minion) * 1.1 && hpPred > 4 || Player.ManaPercent >= Menu["Q"]["LastHit"].GetValue <MenuSliderButton>().SValue)
                        {
                            Q.Cast(minion);
                        }
                    }
                }
                break;
            }
        }