Exemplo n.º 1
0
        private static float ComboDamage(AIHeroClient target)
        {
            if (target != null)
            {
                float TotalDamage = 0;

                if (DemSpells.Q.IsLearned && DemSpells.Q.IsReady())
                {
                    TotalDamage += QDamage(target);
                }

                if (DemSpells.W.IsLearned && DemSpells.W.IsReady())
                {
                    TotalDamage += WDamage(target);
                }

                if (DemSpells.E.IsLearned && DemSpells.E.IsReady())
                {
                    TotalDamage += (float)((myhero.GetAutoAttackDamage(target) * (int)slider(combo, "AAMIN")) + (new float[] { 0, 1.4f, 1.55f, 1.7f, 1.85f, 2 }[DemSpells.E.Level] *myhero.TotalAttackDamage));
                }

                if (DemSpells.R.IsLearned && DemSpells.R.IsReady())
                {
                    TotalDamage += (float)PassiveManager.GetPassiveDamage(target, 4);
                }
                else
                {
                    TotalDamage += (float)PassiveManager.GetPassiveDamage(target, PassiveManager.GetPassiveCount(target));
                }

                if (tiamat.IsOwned() && tiamat.IsReady() && tiamat.IsInRange(target.Position))
                {
                    TotalDamage += myhero.GetItemDamage(target, tiamat.Id);
                }

                if (rhydra.IsOwned() && rhydra.IsReady() && rhydra.IsInRange(target.Position))
                {
                    TotalDamage += myhero.GetItemDamage(target, rhydra.Id);
                }

                /*  if (thydra.IsOwned() && thydra.IsReady())
                 * { TotalDamage += myhero.GetItemDamage(target, thydra.Id); }*/

                if (cutl.IsOwned() && cutl.IsReady() && cutl.IsInRange(target.Position))
                {
                    TotalDamage += myhero.GetItemDamage(target, cutl.Id);
                }

                if (blade.IsOwned() && blade.IsReady() && blade.IsInRange(target.Position))
                {
                    TotalDamage += myhero.GetItemDamage(target, blade.Id);
                }

                return(TotalDamage);
            }
            return(0);
        }
Exemplo n.º 2
0
        private static void Harass()
        {
            var target = TargetSelector.GetTarget(1200, DamageType.Physical, Player.Instance.Position);

            if (target != null && target.IsValidTarget())
            {
                var qpred = DemSpells.Q.GetPrediction(target);
                var wpred = DemSpells.W.GetPrediction(target);

                if (check(harass, "HQ") && DemSpells.Q.IsReady() && DemSpells.Q.IsInRange(target.Position))
                {
                    if (Extensions.CountEnemiesInRange(target, 650) <= slider(harass, "HQMAX"))
                    {
                        switch (comb(pred, "QPREDMODE"))
                        {
                        case 0:
                            PassiveManager.castQhelper(target);
                            break;

                        case 1:
                            DemSpells.Q.Cast(target.Position);
                            break;
                        }
                    }
                }

                if (check(harass, "HW") && DemSpells.W.IsReady() && DemSpells.W.IsInRange(target.Position) &&
                    !target.IsZombie && !target.IsInvulnerable)
                {
                    switch (comb(pred, "WPREDMODE"))
                    {
                    case 0:
                        if (wpred.HitChancePercent >= slider(pred, "WPred"))
                        {
                            DemSpells.W.Cast(wpred.CastPosition);
                        }
                        break;

                    case 1:
                        DemSpells.W.Cast(target.Position);
                        break;
                    }
                }
            }
        }
Exemplo n.º 3
0
        private static void OnProcessSpellCast(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args)
        {
            var unit = sender as AIHeroClient;


            /*
             *  Credits => JokerArt
             */


            if (unit == null || !unit.IsValid)
            {
                return;
            }


            if (unit.IsMe && args.Slot.Equals(SpellSlot.E))
            {
                Orbwalker.ResetAutoAttack();
                return;
            }

            if (!unit.IsEnemy || !check(blocking, "BLOCK") || !DemSpells.W.IsReady())
            {
                return;
            }

            if (Evade.SpellDatabase.GetByName(args.SData.Name) != null && !check(blocking, "evade"))
            {
                return;
            }

            if (!SpellBlock.Contains(unit, args))
            {
                return;
            }

            if (args.End.Distance(Player.Instance) == 0)
            {
                return;
            }

            if (check(blocking, "RANGE") && unit.Distance(myhero.Position) > DemSpells.W.Range)
            {
                return;
            }


            var castUnit = unit;
            var type     = args.SData.TargettingType;

            if (!unit.IsValidTarget())
            {
                var target = TargetSelector.GetTarget(DemSpells.W.Range, DamageType.Mixed);
                if (target == null || !target.IsValidTarget(DemSpells.W.Range))
                {
                    target = TargetSelector.SelectedTarget;
                }

                if (target != null && target.IsValidTarget(DemSpells.W.Range))
                {
                    castUnit = target;
                }
            }

            if (unit.ChampionName.Equals("Caitlyn") && args.Slot == SpellSlot.Q)
            {
                Core.DelayAction(() => CastW(castUnit),
                                 ((int)(args.Start.Distance(Player.Instance) / args.SData.MissileSpeed * 1000) -
                                  (int)(args.End.Distance(Player.Instance) / args.SData.MissileSpeed) - 500) + 250);
            }
            if (unit.ChampionName.Equals("Cassiopeia"))
            {
                switch (args.Slot)
                {
                case SpellSlot.Q:
                    if (Prediction.Position.PredictUnitPosition(myhero, 400).Distance(args.Target.Position) <= 75)
                    {
                        Core.DelayAction(() => CastW(castUnit), 300);
                    }
                    break;

                case SpellSlot.E:
                    if (args.Target.IsMe)
                    {
                        Core.DelayAction(() => CastW(castUnit),
                                         ((int)(args.Start.Distance(Player.Instance) / args.SData.MissileSpeed * 1000) -
                                          (int)(args.End.Distance(Player.Instance) / args.SData.MissileSpeed) - 500));
                    }
                    break;

                case SpellSlot.R:
                    if (Prediction.Position.PredictUnitPosition(myhero, 500).Distance(args.Target.Position) <= 875 && PassiveManager.AngleBetween(myhero.Position.To2D(), unit.Position.To2D(), unit.Direction.To2D()) <= 85)
                    {
                        Core.DelayAction(() => CastW(castUnit), 400);
                    }
                    break;
                }
            }
            if (unit.ChampionName.Equals("Blitzcrank") && args.Slot == SpellSlot.R && unit.Distance(myhero.Position) < 600)
            {
                CastW(castUnit);
            }
            if (unit.ChampionName.Equals("Pantheon") && args.Slot == SpellSlot.W && args.Target.IsMe)
            {
                Core.DelayAction(() => CastW(castUnit), 50);
            }
            if (unit.ChampionName.Equals("Darius") && args.Slot == SpellSlot.Q && unit.Distance(myhero.Position) < 420)
            {
                Core.DelayAction(() => CastW(castUnit), 700);
            }
            if (unit.ChampionName.Equals("Jax") && args.Slot == SpellSlot.E && unit.Distance(myhero.Position) < 187.5f &&
                Prediction.Position.PredictUnitPosition(myhero, 1000).Distance(unit.ServerPosition) < 187.5f)
            {
                Core.DelayAction(() => CastW(castUnit), 1100);
            }
            if (unit.ChampionName.Equals("Malphite") && args.Slot == SpellSlot.R && myhero.Position.Distance(args.End) < 300)
            {
                Core.DelayAction(() => CastW(castUnit),
                                 ((int)(args.Start.Distance(Player.Instance) / 700 * 1000) -
                                  (int)(args.End.Distance(Player.Instance) / 700) - 500) + 100);
            }
            if (unit.ChampionName.Equals("Morgana") && args.Slot == SpellSlot.R && unit.Distance(myhero.Position) < 1050 &&
                Prediction.Position.PredictUnitPosition(myhero, 1000).Distance(unit.ServerPosition) < 1050)
            {
                Core.DelayAction(() => CastW(castUnit), 3000);
            }
            if (unit.ChampionName.Equals("KogMaw") && args.Slot == SpellSlot.R && myhero.Position.Distance(args.End) < 240)
            {
                Core.DelayAction(() => CastW(castUnit), 1200);
            }
            if (unit.ChampionName.Equals("Taric") && args.Slot == SpellSlot.E && Prediction.Position.PredictUnitPosition(myhero, 1000).Distance(unit.ServerPosition) < 575)
            {
                var loc = new EloBuddy.SDK.Geometry.Polygon.Rectangle(args.Start, args.End, 140);

                if (loc.IsInside(Prediction.Position.PredictUnitPosition(myhero, 1000)) ||
                    loc.Points.Where(x => x.Distance(Prediction.Position.PredictUnitPosition(myhero, 1000)) < myhero.BoundingRadius).Any())
                {
                    Core.DelayAction(() => CastW(castUnit), 900);
                }
            }
            if (unit.ChampionName.Equals("Ziggs") && args.Slot == SpellSlot.R && myhero.Position.Distance(args.End) < 550)
            {
                Core.DelayAction(() => CastW(castUnit),
                                 ((int)(args.Start.Distance(Player.Instance) / 2800 * 1000) -
                                  (int)(args.End.Distance(Player.Instance) / 2800) - 500) + 900);
            }
            if (unit.ChampionName.Equals("Karthus") && (args.Slot == SpellSlot.R || args.Slot == SpellSlot.Q))
            {
                switch (args.Slot)
                {
                case SpellSlot.R:
                    Core.DelayAction(() => CastW(castUnit), 2900);
                    break;

                case SpellSlot.Q:
                    if (Prediction.Position.PredictUnitPosition(myhero, 450).Distance(args.Target.Position) < 100)
                    {
                        Core.DelayAction(() => CastW(castUnit), 450);
                    }
                    break;
                }
            }
            if (unit.ChampionName.Equals("Shen") && args.Slot == SpellSlot.E && args.End.Distance(myhero.Position) < 100)
            {
                Core.DelayAction(() => CastW(castUnit),
                                 ((int)(args.Start.Distance(Player.Instance) / 1600 * 1000) -
                                  (int)(args.End.Distance(Player.Instance) / 1600) - 500) + 250);
            }
            if (unit.ChampionName.Equals("Zyra"))
            {
                Core.DelayAction(() => CastW(castUnit),
                                 (int)(args.Start.Distance(Player.Instance) / args.SData.MissileSpeed * 1000) -
                                 (int)(args.End.Distance(Player.Instance) / args.SData.MissileSpeed) - 500);
            }
            if (unit.ChampionName.Equals("Amumu") && args.Slot == SpellSlot.R && unit.Distance(myhero.Position) <= 550)
            {
                CastW(castUnit);
            }
            if (args.End.Distance(Player.Instance) < 250)
            {
                if (unit.ChampionName.Equals("Bard") && args.End.Distance(Player.Instance) < 300)
                {
                    Core.DelayAction(() => CastW(castUnit), (int)(unit.Distance(Player.Instance) / 7f) + 400);
                }
                else if (unit.ChampionName.Equals("Ashe"))
                {
                    Core.DelayAction(() => CastW(castUnit),
                                     (int)(args.Start.Distance(Player.Instance) / args.SData.MissileSpeed * 1000) -
                                     (int)args.End.Distance(Player.Instance));
                    return;
                }
                else if (unit.ChampionName.Equals("Varus") || unit.ChampionName.Equals("TahmKench") ||
                         unit.ChampionName.Equals("Lux"))
                {
                    if (unit.ChampionName.Equals("Lux") && args.Slot == SpellSlot.R)
                    {
                        Core.DelayAction(() => CastW(castUnit), 400);
                    }
                    Core.DelayAction(() => CastW(castUnit),
                                     (int)(args.Start.Distance(Player.Instance) / args.SData.MissileSpeed * 1000) -
                                     (int)(args.End.Distance(Player.Instance) / args.SData.MissileSpeed) - 500);
                }
                else if (unit.ChampionName.Equals("Amumu"))
                {
                    if (sender.Distance(Player.Instance) < 1100)
                    {
                        Core.DelayAction(() => CastW(castUnit),
                                         (int)(args.Start.Distance(Player.Instance) / args.SData.MissileSpeed * 1000) -
                                         (int)(args.End.Distance(Player.Instance) / args.SData.MissileSpeed) - 500);
                    }
                }
            }

            if (args.Target != null && type.Equals(SpellDataTargetType.Unit))
            {
                if (!args.Target.IsMe ||
                    (args.Target.Name.Equals("Barrel") && args.Target.Distance(Player.Instance) > 200 &&
                     args.Target.Distance(Player.Instance) < 400))
                {
                    return;
                }

                if (unit.ChampionName.Equals("Nautilus") ||
                    (unit.ChampionName.Equals("Caitlyn") && args.Slot.Equals(SpellSlot.R)))
                {
                    var d          = unit.Distance(Player.Instance);
                    var travelTime = d / 3200;
                    var delay      = Math.Floor(travelTime * 1000) + 900;
                    Console.WriteLine("TT: " + travelTime + " Delay: " + delay);
                    Core.DelayAction(() => CastW(castUnit), (int)delay);
                    return;
                }
                CastW(castUnit);
            }

            if (type.Equals(SpellDataTargetType.Unit))
            {
                if (unit.ChampionName.Equals("Bard") && args.End.Distance(Player.Instance) < 300)
                {
                    Core.DelayAction(() => CastW(castUnit), 400 + (int)(unit.Distance(Player.Instance) / 7f));
                }
                else if (unit.ChampionName.Equals("Riven") && args.End.Distance(Player.Instance) < 260)
                {
                    CastW(castUnit);
                }
                else
                {
                    CastW(castUnit);
                }
            }
            else if (type.Equals(SpellDataTargetType.LocationAoe) &&
                     args.End.Distance(Player.Instance) < args.SData.CastRadius)
            {
                if (unit.ChampionName.Equals("Annie") && args.Slot.Equals(SpellSlot.R))
                {
                    return;
                }
                CastW(castUnit);
            }
            else if (type.Equals(SpellDataTargetType.Cone) &&
                     args.End.Distance(Player.Instance) < args.SData.CastRadius)
            {
                CastW(castUnit);
            }
            else if (type.Equals(SpellDataTargetType.SelfAoe) || type.Equals(SpellDataTargetType.Self))
            {
                var d = args.End.Distance(Player.Instance.ServerPosition);
                var p = args.SData.CastRadius > 5000 ? args.SData.CastRange : args.SData.CastRadius;
                if (d < p)
                {
                    CastW(castUnit);
                }
            }
        }
Exemplo n.º 4
0
        private static void Misc()
        {
            var target = TargetSelector.GetTarget(1000, DamageType.Magical, Player.Instance.Position);


            if (check(misc, "skinhax"))
            {
                myhero.SetSkinId((int)misc["skinID"].Cast <ComboBox>().CurrentValue);
            }

            if (check(misc, "AUTOPOT") && (!myhero.HasBuff("RegenerationPotion") || !myhero.HasBuff("ItemMiniRegenPotion")) &&
                myhero.HealthPercent <= slider(misc, "POTMIN"))
            {
                if (Item.HasItem(potion.Id) && Item.CanUseItem(potion.Id))
                {
                    potion.Cast();
                }

                else if (Item.HasItem(biscuit.Id) && Item.CanUseItem(biscuit.Id))
                {
                    biscuit.Cast();
                }
            }

            if (target != null)
            {
                var qpred = DemSpells.Q.GetPrediction(target);
                var wpred = DemSpells.W.GetPrediction(target);

                if (check(misc, "ksQ") && DemSpells.Q.IsLearned && DemSpells.Q.IsReady() && target.IsValidTarget(DemSpells.Q.Range) &&
                    !target.IsZombie && !target.IsInvulnerable && QDamage(target) > target.Health && slider(pred, "QPred") >= qpred.HitChancePercent)
                {
                    switch (comb(pred, "QPREDMODE"))
                    {
                    case 0:
                        PassiveManager.castQhelper(target);
                        break;

                    case 1:
                        DemSpells.Q.Cast(target.Position);
                        break;
                    }
                }

                if (check(misc, "ksW") && DemSpells.W.IsLearned && DemSpells.W.IsReady() && target.IsValidTarget(DemSpells.W.Range) &&
                    !target.IsZombie && !target.IsInvulnerable && WDamage(target) > target.Health)
                {
                    switch (comb(pred, "WPREDMODE"))
                    {
                    case 0:
                        if (wpred.HitChancePercent >= slider(pred, "WPred"))
                        {
                            DemSpells.W.Cast(wpred.CastPosition);
                        }
                        break;

                    case 1:
                        DemSpells.W.Cast(target.Position);
                        break;
                    }
                }

                if (check(misc, "autoign") && ignt.IsReady() &&
                    ignt.IsInRange(target) && myhero.GetSummonerSpellDamage(target, DamageLibrary.SummonerSpells.Ignite) > target.Health)
                {
                    ignt.Cast(target);
                }
            }
        }
Exemplo n.º 5
0
        private static void Combo()
        {
            var target = TargetSelector.GetTarget(1200, DamageType.Physical, Player.Instance.Position);

            if (target != null && target.IsValidTarget() && !target.IsInvulnerable)
            {
                var WPred = DemSpells.W.GetPrediction(target);

                PassiveManager.castAutoAttack(target);

                ItemManager(target);

                if (check(combo, "CQ") && DemSpells.Q.IsReady() && DemSpells.Q.IsInRange(target.Position))
                {
                    if (target.IsUnderHisturret())
                    {
                        return;
                    }

                    switch (comb(pred, "QPREDMODE"))
                    {
                    case 0:
                        PassiveManager.castQhelper(target);
                        break;

                    case 1:
                        DemSpells.Q.Cast(target.Position);
                        break;
                    }
                }

                if (check(combo, "CW") && DemSpells.W.IsReady() && DemSpells.W.IsInRange(target.Position))
                {
                    switch (comb(pred, "WPREDMODE"))
                    {
                    case 0:
                        if (slider(pred, "WPred") <= WPred.HitChancePercent)
                        {
                            DemSpells.W.Cast(WPred.CastPosition);
                        }
                        break;

                    case 1:
                        DemSpells.W.Cast(target.Position);
                        break;
                    }
                }

                if (check(combo, "CE") && DemSpells.E.IsReady() && target.Distance(myhero.Position) < DemSpells.E.Range)
                {
                    DemSpells.E.Cast();
                }

                if (check(combo, "CR") && DemSpells.R.IsReady() && target.Distance(myhero.Position) < DemSpells.R.Range &&
                    myhero.HealthPercent >= slider(combo, "CRMIN") && ComboDamage(target) > target.Health)
                {
                    if ((ComboDamage(target) - PassiveManager.GetPassiveDamage(target, 4) > target.Health) ||
                        (ignt.IsReady() && myhero.GetSummonerSpellDamage(target, DamageLibrary.SummonerSpells.Ignite) > target.Health))
                    {
                        return;
                    }

                    if (check(combo, "CRTURRET"))
                    {
                        var ClosestTurret = EntityManager.Turrets.Enemies.Where(x => x.IsTargetable).OrderBy(x => x.Distance(myhero.Position)).FirstOrDefault();

                        if (ClosestTurret.Distance(target.Position) > 900)
                        {
                            DemSpells.R.Cast(target);
                        }
                    }
                    else
                    {
                        DemSpells.R.Cast(target);
                    }
                }

                if (check(combo, "Cignt") && ignt.IsReady() && ignt.IsInRange(target.Position))
                {
                    if (target.Health > ComboDamage(target) && myhero.GetSummonerSpellDamage(target, DamageLibrary.SummonerSpells.Ignite) > target.Health &&
                        !check(misc, "autoign"))
                    {
                        ignt.Cast(target);
                    }
                    else if (target.Health > ComboDamage(target))
                    {
                        if ((ComboDamage(target) + (myhero.GetSummonerSpellDamage(target, DamageLibrary.SummonerSpells.Ignite) - 5)) > target.Health)
                        {
                            ignt.Cast(target);
                        }
                    }
                }
            }
        }