Пример #1
0
        private static void Farm()
        {
            if (!Orbwalking.CanMove(40))
            {
                return;
            }
            var allMinions = MinionManager.GetMinions(ObjectManager.Player.ServerPosition, Q.Range);
            var useQ       = Config.Item("UseQFarm").GetValue <bool>();
            var useW       = Config.Item("UseWFarm").GetValue <bool>();

            if (useQ && Q.IsReady())
            {
                foreach (var minion in allMinions.Where(minion => minion.IsValidTarget() && HealthPrediction.GetHealthPrediction(minion, (int)(ObjectManager.Player.Distance(minion) * 1000 / 1400))
                                                        < 0.75 * DamageLib.getDmg(minion, DamageLib.SpellType.Q, DamageLib.StageType.FirstDamage)))
                {
                    if (Vector3.Distance(minion.ServerPosition, ObjectManager.Player.ServerPosition) > Orbwalking.GetRealAutoAttackRange(ObjectManager.Player))
                    {
                        Q.CastOnUnit(minion, Config.Item("QNFE").GetValue <bool>());
                        return;
                    }
                }
            }
            else if (useW && W.IsReady())
            {
                if (!allMinions.Any(minion => minion.IsValidTarget(W.Range) && minion.Health < 0.75 * DamageLib.getDmg(minion, DamageLib.SpellType.W)))
                {
                    return;
                }

                W.Cast();
                return;
            }
        }
Пример #2
0
        private static bool IsKillable(Obj_AI_Base target, IEnumerable <Tuple <DamageLib.SpellType, DamageLib.StageType> > spellCombo, bool calculatePassive = true)
        {
            bool   spellIncluded = false;
            double damage        = 0;

            foreach (var spell in spellCombo)
            {
                if (spell.Item1 == DamageLib.SpellType.Q || spell.Item1 == DamageLib.SpellType.W || spell.Item1 == DamageLib.SpellType.E || spell.Item1 == DamageLib.SpellType.R)
                {
                    var spellType = (SpellSlot)spell.Item1;
                    if (player.Spellbook.CanUseSpell(spellType) == SpellState.Ready)
                    {
                        damage       += DamageLib.getDmg(target, spell.Item1, spellType == SpellSlot.W ? (IsAblazed(target) ? DamageLib.StageType.FirstDamage : DamageLib.StageType.Default) : spell.Item2);
                        spellIncluded = true;
                    }
                }
                else if (spell.Item1 == DamageLib.SpellType.IGNITE)
                {
                    if (hasIgnite && player.Spellbook.GetSpell(player.GetSpellSlot("SummonerDot")).State == SpellState.Ready)
                    {
                        damage += DamageLib.getDmg(target, DamageLib.SpellType.IGNITE);
                    }
                }
            }
            return(damage + (spellIncluded && calculatePassive ? target.MaxHealth * 0.08 : 0) > target.Health);
        }
Пример #3
0
 private void R_Check()
 {
     if (!Program.Menu.Item("useR_KS").GetValue <KeyBind>().Active)
     {
         return;
     }
     if (!R.IsReady() && !IsShooting())
     {
         return;
     }
     if (Utility.CountEnemysInRange(Program.Menu.Item("useR_safe").GetValue <Slider>().Value) >= 1 && !IsShooting())
     {
         return;
     }
     R.Range = GetRRange();
     Obj_AI_Hero[] lowesttarget = { null };
     foreach (var enemy in ObjectManager.Get <Obj_AI_Hero>().Where(hero => hero.IsValidTarget(R.Range)).Where(enemy => lowesttarget[0] == null || lowesttarget[0].Health > enemy.Health))
     {
         lowesttarget[0] = enemy;
     }
     if (lowesttarget[0] != null && lowesttarget[0].Health < (DamageLib.getDmg(lowesttarget[0], DamageLib.SpellType.R) * 0.9) && Environment.TickCount - UltTick >= 700)
     {
         R.Cast(lowesttarget[0], Packets());
         UltTick = Environment.TickCount;
         return;
     }
     if (IsShooting())
     {
         var target = SimpleTs.GetTarget(R.Range, SimpleTs.DamageType.Magical);
         R.Cast(target, Packets());
     }
 }
Пример #4
0
        public override void Execute()
        {
            var minions =
                EntityManager.MinionsAndMonsters.GetLaneMinions(EntityManager.UnitTeam.Enemy, _Player.Position, Q.Range).OrderBy(x => x.Health);


            if (W.IsReady() && MenuX.Modes.LaneClear.UseW &&
                _Player.ManaPercent >= MenuX.Modes.LaneClear.MinMana)
            {
                var wminions = Misc.GetBestCircularFarmLocation(minions.OrderByDescending(x => x.Health)
                                                                .Select(xm => xm.ServerPosition.To2D()).ToList(),
                                                                W.Width, W.Range);
                if (wminions.MinionsHit >= MenuX.Modes.LaneClear.MinMinion)
                {
                    W.Cast(wminions.Position.To3D());
                }
            }

            if (Q.IsReady() && MenuX.Modes.LaneClear.UseQ &&
                _Player.ManaPercent >= MenuX.Modes.LaneClear.MinMana)
            {
                var qminions = Misc.GetBestLineFarmLocation(minions
                                                            .Where(x => DamageLib.QDamage(x) >= x.Health)
                                                            .Select(xm => xm.ServerPosition.To2D()).ToList(),
                                                            Q.Width, Q.Range);
                if (qminions.MinionsHit >= 1)
                {
                    Q.Cast(qminions.Position.To3D());
                }
            }
        }
Пример #5
0
        void AutoUlt()
        {
            var comboR = _menu.Item("comboR" + ObjectManager.Player.ChampionName).GetValue <Slider>().Value;

            if (comboR > 0 && _spellR.IsReady())
            {
                int enemiesHit   = 0;
                int killableHits = 0;

                foreach (Obj_AI_Hero enemy in Program.Helper.EnemyTeam.Where(x => x.IsValidTarget(_spellR.Range)))
                {
                    var prediction = Prediction.GetPrediction(enemy, _spellR.Delay);

                    if (prediction != null && prediction.UnitPosition.Distance(ObjectManager.Player.ServerPosition) <= _spellR.Range)
                    {
                        enemiesHit++;

                        if (DamageLib.getDmg(enemy, DamageLib.SpellType.R) >= enemy.Health)
                        {
                            killableHits++;
                        }
                    }
                }

                if (enemiesHit >= comboR || (killableHits >= 1 && ObjectManager.Player.Health / ObjectManager.Player.MaxHealth <= 0.1))
                {
                    CastR();
                }
            }
        }
Пример #6
0
        public override void Game_OnGameUpdate(EventArgs args)
        {
            if ((!ComboActive && !HarassActive) || !Orbwalking.CanMove(100)) return;
            var useQ = GetValue<bool>("UseQ" + (ComboActive ? "C" : "H"));
            var useW = GetValue<bool>("UseW" + (ComboActive ? "C" : "H"));
            var useR = GetValue<bool>("UseR" + (ComboActive ? "C" : "H"));

            if (Q.IsReady() && useQ)
            {
                var t = SimpleTs.GetTarget(Q.Range, SimpleTs.DamageType.Physical);
                if (t != null)
                    Q.Cast(t, false, true);
            }

            if (W.IsReady() && useW)
            {
                var t = SimpleTs.GetTarget(W.Range, SimpleTs.DamageType.Physical);
                if (t != null)
                    W.Cast(t, false, true);
            }

            if (R.IsReady() && useR)
            {
                foreach (
                    var hero in
                        ObjectManager.Get<Obj_AI_Hero>()
                            .Where(
                                hero =>
                                    hero.IsValidTarget(R.Range) &&
                                    DamageLib.getDmg(hero, DamageLib.SpellType.R, DamageLib.StageType.FirstDamage) - 20 > hero.Health))
                    R.Cast(hero, false, true);
            }
        }
Пример #7
0
        private static float GetComboDamage(Obj_AI_Base enemy)
        {
            var damage = 0d;

            if (Q.IsReady())
            {
                damage += DamageLib.getDmg(enemy, DamageLib.SpellType.Q);
            }

            if (W.IsReady())
            {
                damage += DamageLib.getDmg(enemy, DamageLib.SpellType.W);
            }

            if (E.IsReady())
            {
                damage += DamageLib.getDmg(enemy, DamageLib.SpellType.E);
            }

            if (R.IsReady())
            {
                damage += DamageLib.getDmg(enemy, DamageLib.SpellType.R);
            }

            return((float)damage);
        }
Пример #8
0
        void UltKs()
        {
            if (!_spellR.IsReady())
            {
                return;
            }
            var time = Environment.TickCount;

            foreach (var target in Program.Helper.EnemyInfo.Where(x => //need to check if recently recalled (for cases when no mana for baseult)
                                                                  x.Player.IsValid &&
                                                                  !x.Player.IsDead &&
                                                                  x.Player.IsEnemy &&
                                                                  !(x.RecallInfo.Recall.Status == Packet.S2C.Recall.RecallStatus.RecallStarted && x.RecallInfo.GetRecallCountdown() < 3100) && //let BaseUlt handle this one
                                                                  ((!x.Player.IsVisible && time - x.LastSeen < 10000) || (x.Player.IsVisible && x.Player.IsValidTarget())) &&
                                                                  DamageLib.getDmg(x.Player, DamageLib.SpellType.R) >= Program.Helper.GetTargetHealth(x, (int)(_spellR.Delay * 1000f))))
            {
                if (target.Player.IsVisible || (!target.Player.IsVisible && time - target.LastSeen < 2750)) //allies still attacking target? prevent overkill
                {
                    if (Program.Helper.OwnTeam.Any(x => !x.IsMe && x.Distance(target.Player) < 1600))
                    {
                        continue;
                    }
                }

                if (IsInPassiveForm() || !Program.Helper.EnemyTeam.Any(x => x.IsValid && !x.IsDead && (x.IsVisible || (!x.IsVisible && time - Program.Helper.GetPlayerInfo(x).LastSeen < 2750)) && ObjectManager.Player.Distance(x) < 1600)) //any other enemies around? dont ult unless in passive form
                {
                    _spellR.Cast(ObjectManager.Player.Position, Packets());
                }
            }
        }
Пример #9
0
        public static void Update()
        {
            if (!UtilsManager.IsSupported || !Player.Instance.Spellbook.GetSpell(SpellSlot.R).IsReady)
            {
                return;
            }

            var target = new Obj_AI_Base();

            foreach (var p in UtilsManager.MonsterPos)
            {
                target = EloBuddy.SDK.EntityManager.MinionsAndMonsters.GetJungleMonsters(p.To3D(), 800).FirstOrDefault();
            }

            if (target == null || target.IsDead)
            {
                return;
            }
            int     damage      = DamageLib.GetStealDamage(target);
            Vector3 position    = Utils.GetCastPosition(UtilsManager.StealerInfos[Player.Instance.Hero], target);
            int     travel_time = (int)Utils.GetTravelTime(UtilsManager.StealerInfos[Player.Instance.Hero], position);

            if (damage >= Prediction.Health.GetPrediction(target, travel_time))
            {
                Player.Instance.Spellbook.CastSpell(SpellSlot.R, position);
            }
        }
Пример #10
0
        private static void CastR(Obj_AI_Base target)
        {
            if (!target.IsValidTarget(_r.Range) || !_r.IsReady())
            {
                return;
            }

            if (!(DamageLib.getDmg(target, DamageLib.SpellType.R, DamageLib.StageType.FirstDamage) > target.Health))
            {
                foreach (var buff in target.Buffs)
                {
                    if (buff.Name == "dariushemo")
                    {
                        if (DamageLib.getDmg(target, DamageLib.SpellType.R, DamageLib.StageType.FirstDamage) *
                            (1 + buff.Count / 5) - 1 > target.Health)
                        {
                            _r.CastOnUnit(target, true);
                        }
                    }
                }
            }
            else if (DamageLib.getDmg(target, DamageLib.SpellType.R, DamageLib.StageType.FirstDamage) - 15 >
                     target.Health)
            {
                _r.CastOnUnit(target, true);
            }
        }
Пример #11
0
        static void Drawing_OnDraw(EventArgs args)
        {
            if (!ObjectManager.Player.IsDead)
            {
                var drawQ = _menu.Item("drawQ").GetValue <Circle>();

                if (drawQ.Active)
                {
                    Utility.DrawCircle(ObjectManager.Player.Position, _spellQ.Range, drawQ.Color);
                }
            }

            String victims = "";

            int time = Environment.TickCount;

            foreach (Obj_AI_Hero target in _playerInfo.Where(x =>
                                                             x.Player.IsValid &&
                                                             !x.Player.IsDead &&
                                                             x.Player.IsEnemy &&
                                                             ((!x.Player.IsVisible && time - x.LastSeen < 10000) || (x.Player.IsVisible && Utility.IsValidTarget(x.Player))) &&
                                                             DamageLib.getDmg(x.Player, DamageLib.SpellType.R) >= GetTargetHealth(x, (int)(_spellR.Delay * 1000f))).Select(x => x.Player))
            {
                victims += target.ChampionName + " ";
            }

            if (victims != "")
            {
                Drawing.DrawText(Drawing.Width * 0.44f, Drawing.Height * 0.7f, System.Drawing.Color.GreenYellow, "Ult can kill: " + victims);

                //use when pos works
                //new Render.Text((int)(Drawing.Width * 0.44f), (int)(Drawing.Height * 0.7f), "Ult can kill: " + victims, 30, SharpDX.Color.Red); //.Add()
            }
        }
Пример #12
0
        private static void Game_OnGameUpdate(EventArgs args)
        {
            // Auto farm Q minions
            if (autoFarmMinions && spell.IsReady() && Orbwalking.CanMove(100))
            {
                var minions = MinionManager.GetMinions(ObjectManager.Player.Position, spell.Range, MinionTypes.All, MinionTeam.Enemy, MinionOrderTypes.MaxHealth);
                minions.AddRange(MinionManager.GetMinions(ObjectManager.Player.Position, spell.Range, MinionTypes.All, MinionTeam.Neutral, MinionOrderTypes.MaxHealth));
                foreach (var minion in minions)
                {
                    // Predicted health
                    float predictedHealth = HealthPrediction.GetHealthPrediction(minion, (int)((minion.Distance(ObjectManager.Player) / spell.Speed) * 1000 + spell.Delay * 1000), 100);

                    // Calculated damage on minion
                    double damage = DamageLib.CalcMagicMinionDmg((35 + (ObjectManager.Player.Spellbook.GetSpell(SpellSlot.Q).Level * 45)) + (0.60 * ObjectManager.Player.FlatMagicDamageMod), minion as Obj_AI_Minion, true);

                    // Valid minion
                    if (predictedHealth > 0 && damage > predictedHealth)
                    {
                        spell.CastOnUnit(minion);
                        lastNetworkId = minion.NetworkId;
                        break;
                    }
                }
            }
        }
Пример #13
0
        private void CastQMinion()
        {
            if (!Q.IsReady())
            {
                return;
            }
            var allMinions = MinionManager.GetMinions(ObjectManager.Player.ServerPosition, Q.Range, MinionTypes.All, MinionTeam.NotAlly);

            foreach (var minion in allMinions)
            {
                if (!minion.IsValidTarget())
                {
                    continue;
                }
                var minionInRangeAa     = Orbwalking.InAutoAttackRange(minion);
                var minionInRangeSpell  = minion.Distance(ObjectManager.Player) <= Q.Range;
                var minionKillableAa    = DamageLib.getDmg(minion, DamageLib.SpellType.AD) >= minion.Health;
                var minionKillableSpell = DamageLib.getDmg(minion, DamageLib.SpellType.Q) >= minion.Health;
                var lastHit             = Program.Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.LastHit;
                var laneClear           = Program.Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.LaneClear;

                if ((lastHit && minionInRangeSpell && minionKillableSpell) && ((minionInRangeAa && !minionKillableAa) || !minionInRangeAa))
                {
                    Q.CastOnUnit(minion, Packets());
                }

                else if ((laneClear && minionInRangeSpell && !minionKillableSpell) && ((minionInRangeAa && !minionKillableAa) || !minionInRangeAa))
                {
                    Q.CastOnUnit(minion, Packets());
                }
            }
        }
Пример #14
0
        private static void Farm(bool laneclear)
        {
            var minions       = MinionManager.GetMinions(ObjectManager.Player.ServerPosition, Q.Range);
            var jungleMinions = MinionManager.GetMinions(
                ObjectManager.Player.ServerPosition, Q.Range, MinionTypes.All, MinionTeam.Neutral);

            minions.AddRange(jungleMinions);

            if (laneclear && Config.Item("wFarm").GetValue <bool>() && W.IsReady())
            {
                if (minions.Count > 0)
                {
                    W.Cast(W.GetLineFarmLocation(minions).Position.To3D());
                }
            }

            if (!Config.Item("qFarm").GetValue <bool>() || (Config.Item("saveqStun").GetValue <bool>() && StunCount == 4) ||
                !Q.IsReady())
            {
                return;
            }

            foreach (var minion in
                     from minion in
                     minions.OrderByDescending(Minions => Minions.MaxHealth)
                     .Where(minion => minion.IsValidTarget(Q.Range))
                     let predictedHealth = Q.GetHealthPrediction(minion)
                                           where predictedHealth < DamageLib.getDmg(minion, DamageLib.SpellType.Q) * 0.9 && predictedHealth > 0
                                           select minion)
            {
                Q.CastOnUnit(minion, Config.Item("PCast").GetValue <bool>());
            }
        }
Пример #15
0
        private static void LaneClear()
        {
            G.Spell_Cast_LineSkillshot(t.Menu_Farm, "use_Q_LaneClear_Enemy", Q, SimpleTs.DamageType.Physical, "Enemy");
            G.Spell_Cast_LineSkillshot(t.Menu_Farm, "use_Q_LaneClear_Minion", Q, SimpleTs.DamageType.Physical, "Minion", true, true);
            G.Spell_Cast_LineSkillshot(t.Menu_Farm, "use_Q_LaneClear_Minion", Q, SimpleTs.DamageType.Physical, "Minion", true);

            if (G.Menu_IsMenuActive("use_E_LaneClear_Enemy") && E.IsReady())
            {
                Target = SimpleTs.GetTarget(E.Range, SimpleTs.DamageType.Physical);
                {
                    if (Target != null)
                    {
                        E.Cast();
                    }
                }
            }

            if (G.Menu_IsMenuActive("use_E_LaneClear_Minion") && E.IsReady())
            {
                var allMinions = MinionManager.GetMinions(ObjectManager.Player.ServerPosition, E.Range, MinionTypes.All, MinionTeam.NotAlly);
                foreach (var Minion in allMinions)
                {
                    if (Minion != null)
                    {
                        if (Minion.IsValidTarget(E.Range))
                        {
                            if ((DamageLib.getDmg(Minion, DamageLib.SpellType.E) > Minion.Health) || (DamageLib.getDmg(Minion, DamageLib.SpellType.E) + 100 < Minion.Health))
                            {
                                E.Cast();
                            }
                        }
                    }
                }
            }
        }
Пример #16
0
        private static void ExecuteCombo()
        {
            var target = SimpleTs.GetTarget(Q.Range, SimpleTs.DamageType.Magical);

            if (target == null)
            {
                return;
            }

            var useQ = Config.Item("UseQCombo").GetValue <bool>();
            var useW = Config.Item("UseWCombo").GetValue <bool>();
            var useR = Config.Item("UseRCombo").GetValue <bool>();

            if (W.IsReady() && useW && ObjectManager.Player.Distance(target) <= W.Range)
            {
                W.Cast(target, false, true);
            }

            if (Q.IsReady() && useQ && ObjectManager.Player.Distance(target) <= Q.Range)
            {
                Q.Cast(target, false, true);
            }

            if (R.IsReady() && useR && DamageLib.getDmg(target, DamageLib.SpellType.R) > target.Health)
            {
                R.CastOnUnit(target, true);
            }
        }
Пример #17
0
        public override void Game_OnGameUpdate(EventArgs args)
        {
            //Update E and R range depending on level; 550 + 9 × ( Tristana's level - 1)
            E.Range = 550 + 9 * (ObjectManager.Player.Level - 1);
            R.Range = 550 + 9 * (ObjectManager.Player.Level - 1);
            if (Orbwalking.CanMove(100) && (ComboActive || HarassActive))
            {
                var useE = GetValue <bool>("UseE" + (ComboActive ? "C" : "H"));
                if (useE)
                {
                    var eTarget = SimpleTs.GetTarget(E.Range, SimpleTs.DamageType.Physical);
                    if (E.IsReady() && eTarget.IsValidTarget())
                    {
                        E.CastOnUnit(eTarget);
                    }
                }
            }

            //Killsteal
            if (!ComboActive || !GetValue <bool>("UseRM") || !R.IsReady())
            {
                return;
            }
            foreach (
                var hero in
                ObjectManager.Get <Obj_AI_Hero>()
                .Where(
                    hero =>
                    hero.IsValidTarget(R.Range) &&
                    DamageLib.getDmg(hero, DamageLib.SpellType.R) - 20 > hero.Health))
            {
                R.CastOnUnit(hero);
            }
        }
Пример #18
0
        private static double GetDamage(Obj_AI_Base unit)
        {
            double damage = 0;

            if (Q.IsReady())
            {
                damage += DamageLib.getDmg(unit, DamageLib.SpellType.Q);
            }
            if (W.IsReady())
            {
                damage += DamageLib.getDmg(unit, DamageLib.SpellType.W);
            }
            if (E.IsReady())
            {
                damage += DamageLib.getDmg(unit, DamageLib.SpellType.E);
            }
            if (R.IsReady())
            {
                damage += DamageLib.getDmg(unit, DamageLib.SpellType.R, DamageLib.StageType.FirstDamage) * 7;
            }
            if (IgniteSlot != SpellSlot.Unknown && ObjectManager.Player.SummonerSpellbook.CanUseSpell(IgniteSlot) == SpellState.Ready)
            {
                damage += DamageLib.getDmg(unit, DamageLib.SpellType.IGNITE);
            }
            return(damage * (DFG.IsReady() ? 1.2f : 1));
        }
Пример #19
0
        private void QLasthitMinion()
        {
            if (!Q.IsReady())
            {
                return;
            }
            var allminions = MinionManager.GetMinions(ObjectManager.Player.Position, Q.Range, MinionTypes.All, MinionTeam.NotAlly);

            if (allminions.Count == 0)
            {
                return;
            }
            foreach (var minion in allminions.Where(minion => minion.Health <= DamageLib.getDmg(minion, DamageLib.SpellType.Q)))
            {
                Q.CastOnUnit(minion, Packets());
                return;
            }
            if (Orbwalking.OrbwalkingMode.LaneClear != Program.Orbwalker.ActiveMode)
            {
                return;
            }
            foreach (var minion in allminions)
            {
                Q.CastOnUnit(minion, Packets());
                return;
            }
        }
Пример #20
0
        private static float GetComboDamage(Obj_AI_Base enemy)
        {
            var damage = 0d;

            if (Q.IsReady() && Q.GetCollision(ObjectManager.Player.ServerPosition.To2D(), new List <Vector2> {
                enemy.ServerPosition.To2D()
            }).Count == 0)
            {
                damage += DamageLib.getDmg(enemy, DamageLib.SpellType.Q);
            }

            if (W.IsReady())
            {
                damage += W.Instance.Ammo *
                          DamageLib.getDmg(enemy, DamageLib.SpellType.W, DamageLib.StageType.FirstDamage);
            }

            if (E.IsReady())
            {
                damage += DamageLib.getDmg(enemy, DamageLib.SpellType.E);
            }

            if (IgniteSlot != SpellSlot.Unknown && Player.SummonerSpellbook.CanUseSpell(IgniteSlot) == SpellState.Ready)
            {
                damage += DamageLib.getDmg(enemy, DamageLib.SpellType.IGNITE);
            }

            if (R.IsReady())
            {
                damage += 7 * DamageLib.getDmg(enemy, DamageLib.SpellType.R);
            }

            return((float)damage);
        }
Пример #21
0
        private double SecondQDamage(Obj_AI_Base target, float extradamage = 0)
        {
            var damage     = Q1.Level * 30 + 20 + ObjectManager.Player.BaseAttackDamage * 0.9 + 0.08 * (target.MaxHealth - target.Health - extradamage);
            var realdamage = DamageLib.CalcPhysicalDmg(damage, target);

            return(realdamage);
        }
Пример #22
0
        private static void KillSteal(Obj_AI_Hero target)
        {
            var Qdmg      = Q.GetDamage(target, DamageLib.StageType.Default);
            var Edmg      = E.GetDamage(target, DamageLib.StageType.Default);
            var igniteDmg = DamageLib.getDmg(target, DamageLib.SpellType.IGNITE);

            if (target != null)
            {
                if (Config.Item("UseQKs").GetValue <bool>() && Q.IsReady())
                {
                    if (target.Health <= Qdmg)
                    {
                        Q.Cast(target);
                    }
                }

                if (Config.Item("UseEKs").GetValue <bool>() && E.IsReady())
                {
                    if (target.Health <= Edmg)
                    {
                        E.Cast(target);
                    }
                }
                if (Config.Item("UseIgnite").GetValue <bool>() && IgniteSlot != SpellSlot.Unknown && Player.SummonerSpellbook.CanUseSpell(IgniteSlot) == SpellState.Ready)
                {
                    if (target.Health < igniteDmg)
                    {
                        Player.SummonerSpellbook.CastSpell(IgniteSlot, target);
                    }
                }
            }
        }
Пример #23
0
        static void UltKS()
        {
            if (_spellR.IsReady())
            {
                int time = Environment.TickCount;

                foreach (PlayerInfo target in _playerInfo.Where(x =>
                                                                x.Player.IsValid &&
                                                                !x.Player.IsDead &&
                                                                x.Player.IsEnemy &&
                                                                ((!x.Player.IsVisible && time - x.LastSeen < 10000) || (x.Player.IsVisible && Utility.IsValidTarget(x.Player))) &&
                                                                DamageLib.getDmg(x.Player, DamageLib.SpellType.R) >= GetTargetHealth(x, (int)(_spellR.Delay * 1000f))))
                {
                    bool cast = true;

                    if (target.Player.IsVisible || (!target.Player.IsVisible && time - target.LastSeen < 2750)) //allies still attacking target? prevent overkill
                    {
                        if (_ownTeam.Any(x => !x.IsMe && x.Distance(target.Player) < 1800))
                        {
                            cast = false;
                        }
                    }

                    if (cast && !_enemyTeam.Any(x => x.IsValid && !x.IsDead && (x.IsVisible || (!x.IsVisible && time - GetPlayerInfo(x).LastSeen < 2750)) && ObjectManager.Player.Distance(x) < 1800)) //any other enemies around? dont ult
                    {
                        _spellR.Cast(ObjectManager.Player.Position, _menu.Item("packetCast").GetValue <bool>());
                    }
                }
            }
        }
        private static void AutoULt()
        {
            var ultTarget = SimpleTs.GetTarget(R.Range, SimpleTs.DamageType.Magical);

            if (DamageLib.getDmg(ultTarget, DamageLib.SpellType.R) > (ultTarget.Health * 1.05))
            {
                MyHero.Spellbook.CastSpell(SpellSlot.R);
            }
        }
Пример #25
0
        public static double CalculateDamage(Obj_AI_Base target)
        {
            double totaldamage = 0;
            bool   marked      = checkformark(target);

            tSpells.useignite = false;
            tSpells.usedfg    = false;
            if ((ObjectManager.Player.Distance(target) < Q.Range || ObjectManager.Player.Distance(target) < E.Range && E.IsReady()) && Q.IsReady() && (W.IsReady() || E.IsReady() || R.IsReady()))
            {
                totaldamage += DamageLib.getDmg(target, DamageLib.SpellType.Q);
            }
            if ((ObjectManager.Player.Distance(target) < W.Range || ObjectManager.Player.Distance(target) < E.Range && E.IsReady()) && W.IsReady())
            {
                totaldamage += DamageLib.getDmg(target, DamageLib.SpellType.W);
            }
            if (ObjectManager.Player.Distance(target) < E.Range && E.IsReady())
            {
                totaldamage += DamageLib.getDmg(target, DamageLib.SpellType.E);
            }
            if ((ObjectManager.Player.Distance(target) < R.Range || ObjectManager.Player.Distance(target) < E.Range && E.IsReady()) && R.IsReady())
            {
                totaldamage += DamageLib.getDmg(target, DamageLib.SpellType.R);
            }
            if (!Q.IsReady() && marked)
            {
                totaldamage += DamageLib.CalcMagicDmg(((ObjectManager.Player.Spellbook.GetSpell(SpellSlot.Q).Level * 15)) + (0.15 * ObjectManager.Player.FlatMagicDamageMod), target);
            }

            if (totaldamage > target.Health)
            {
                return(totaldamage);
            }

            if (Config.Item("dfg").GetValue <bool>() && Items.HasItem(3128) && Items.CanUseItem(3128))
            {
                totaldamage = (totaldamage * 1.2) + DamageLib.CalcMagicDmg(target.MaxHealth * 0.15, target);
            }

            if (totaldamage > target.Health)
            {
                tSpells.usedfg = true;
                return(totaldamage);
            }

            if (Config.Item("ignite").GetValue <bool>() && IgniteSlot != SpellSlot.Unknown && ObjectManager.Player.SummonerSpellbook.CanUseSpell(IgniteSlot) == SpellState.Ready && ObjectManager.Player.Distance(target) < 600)
            {
                if (totaldamage + DamageLib.getDmg(target, DamageLib.SpellType.IGNITE) > target.Health)
                {
                    tSpells.useignite = true;
                    totaldamage      += DamageLib.getDmg(target, DamageLib.SpellType.IGNITE);
                }
            }
            tSpells.usedfg = true;

            return(totaldamage);
        }
Пример #26
0
        private static void Combo()
        {
            Orbwalker.SetAttacks(true);
            var target = SimpleTs.GetTarget(E.Range, SimpleTs.DamageType.Magical);

            if (target == null)
            {
                return;
            }

            if (DamageLib.IsKillable(target, new[] { DamageLib.SpellType.Q, DamageLib.SpellType.W, DamageLib.SpellType.E, DamageLib.SpellType.R, DamageLib.SpellType.DFG }))
            {
                if (ObjectManager.Player.Distance(target) < E.Range && DFG.IsReady())
                {
                    DFG.Cast(target);
                }

                if (ObjectManager.Player.Distance(target) < Q.Range && Q.IsReady())
                {
                    Q.CastOnUnit(target, Config.Item("QNFE").GetValue <bool>());
                }

                if (ObjectManager.Player.Distance(target) < E.Range && E.IsReady() && !Q.IsReady())
                {
                    E.CastOnUnit(target);
                }

                if (ObjectManager.Player.Distance(target) < W.Range && W.IsReady() && !Q.IsReady())
                {
                    W.Cast();
                }

                if (ObjectManager.Player.Distance(target) < R.Range && R.IsReady() && !Q.IsReady())
                {
                    R.Cast();
                }
            }
            else
            {
                if (ObjectManager.Player.Distance(target) < Q.Range && Q.IsReady())
                {
                    Q.CastOnUnit(target, true);
                }

                if (Config.Item("ComboActive").GetValue <KeyBind>().Active&&
                    ObjectManager.Player.Distance(target) < E.Range && E.IsReady())
                {
                    E.CastOnUnit(target);
                }

                if (ObjectManager.Player.Distance(target) < W.Range && W.IsReady())
                {
                    W.Cast();
                }
            }
        }
Пример #27
0
 private static void Killsteal() // Creds to TC-Crew
 {
     foreach (var hero in ObjectManager.Get <Obj_AI_Hero>().Where(hero => hero.IsValidTarget(Q.Range)))
     {
         if (Q.IsReady() && hero.Distance(ObjectManager.Player) <= Q.Range && DamageLib.getDmg(hero, DamageLib.SpellType.Q) >= hero.Health)
         {
             Q.CastOnUnit(hero, Config.Item("QNFE").GetValue <bool>());
         }
     }
 }
Пример #28
0
        private static float GetComboDamage(Obj_AI_Base enemy)
        {
            var damage = 0d;

            //damage += DamageLib.getDmg(enemy, DamageLib.SpellType.Q);
            damage += DamageLib.getDmg(enemy, DamageLib.SpellType.W);
            damage += DamageLib.getDmg(enemy, DamageLib.SpellType.E);
            damage += DamageLib.getDmg(enemy, DamageLib.SpellType.R);

            return((float)damage);
        }
Пример #29
0
 private static void KillstealR()
 {
     foreach (var hero in ObjectManager.Get <Obj_AI_Hero>().Where(hero => hero.IsValidTarget(E.Range)))
     {
         if (R.IsReady() && hero.Distance(ObjectManager.Player) <= R.Range &&
             DamageLib.getDmg(hero, DamageLib.SpellType.R) >= hero.Health + 20)
         {
             R.Cast();
         }
     }
 }
Пример #30
0
 private static void KillstealE()
 {
     foreach (var hero in ObjectManager.Get <Obj_AI_Hero>().Where(hero => hero.IsValidTarget(E.Range)))
     {
         if (E.IsReady() && hero.Distance(ObjectManager.Player) <= E.Range &&
             DamageLib.getDmg(hero, DamageLib.SpellType.E) >= hero.Health + 20)
         {
             E.CastIfHitchanceEquals(hero, HitChance.High, true);
         }
     }
 }
Пример #31
0
 /// <summary>
 /// Gets the damage that the skillshot will deal to the target using the damage lib.
 /// </summary>
 public float GetDamage(Obj_AI_Base target, DamageLib.StageType stagetype = DamageLib.StageType.Default)
 {
     var type = DamageLib.SpellType.Q;
     switch (Slot)
     {
         case SpellSlot.Q:
             type = DamageLib.SpellType.Q;
             break;
         case SpellSlot.W:
             type = DamageLib.SpellType.W;
             break;
         case SpellSlot.E:
             type = DamageLib.SpellType.E;
             break;
         case SpellSlot.R:
             type = DamageLib.SpellType.R;
             break;
     }
     return (float) DamageLib.getDmg(target, type, stagetype);
 }
Пример #32
0
 public static bool GetRangedHealthCheck(Obj_AI_Base target, DamageLib.SpellType spellType, DamageLib.StageType stage, float precision, float speed)
 {
     return HealthPrediction.GetHealthPrediction(target,
         (int) ((ObjectManager.Player.Distance(target, false)*precision)/speed)) <
     (0.75*DamageLib.getDmg(target, spellType, stage));
 }
Пример #33
0
        //Credits to Lexxes gave me this function to use
        public static bool Spell_Cast_LineSkillshot(string MainMenu, string Menu, Spell Spell, SimpleTs.DamageType DmgType, string Objekt = "Enemy", bool Condition = true, bool Lasthit = false, DamageLib.StageType Stage = DamageLib.StageType.Default)
        {
            
                if (Objekt == "Enemy")
                {
                    var Target = SimpleTs.GetTarget(Spell.Range, DmgType);
                    if (Target != null)
                    {
                        if (Target.IsValidTarget(Spell.Range) && Spell.IsReady())
                        {
                            if (Spell.GetPrediction(Target).HitChance >= Prediction.HitChance.HighHitchance)
                            {
                                Spell.Cast(Target, true);
                                
                                return true;
                            }
                        }
                    }
                }
                if (Objekt == "Minion")
                {
                    var allMinions = MinionManager.GetMinions(ObjectManager.Player.ServerPosition, Spell.Range, MinionTypes.All, MinionTeam.NotAlly);
                    foreach (var Target in allMinions)
                    {
                        if (Target != null)
                        {
                            var spelltype = DamageLib.SpellType.AD;

                            if (Spell.Slot.ToString() == "Q")
                                spelltype = DamageLib.SpellType.Q;
                            if (Spell.Slot.ToString() == "W")
                                spelltype = DamageLib.SpellType.W;
                            if (Spell.Slot.ToString() == "E")
                                spelltype = DamageLib.SpellType.E;
                            if (Spell.Slot.ToString() == "R")
                                spelltype = DamageLib.SpellType.R;

                            if (Target.IsValidTarget(Spell.Range) && Spell.IsReady())
                            {
                                if ((Lasthit && (DamageLib.getDmg(Target, spelltype, Stage) > Target.Health) || (DamageLib.getDmg(Target, spelltype, Stage) + 100 < Target.Health) && !Lasthit))
                                {
                                    Spell.Cast(Target.Position, true);
                                    return true;
                                }
                            }
                        }
                    }
                }
                if (Objekt == "KS")
                {

                }

            
            return true;
        }