Beispiel #1
0
 void Swap(Obj_AI_Base target)
 {
     if (target != null && !target.IsDead && target.IsValidTarget() && Q.IsReady())
     {
         PredictionOutput value = Q.GetPrediction(target, true);
         if (isFishBones)
         {
             if (Menu.GetBool("Misc.SwapThree") && FishStacks == 3 && value.CastPosition.Distance(ObjectManager.Player.Position) < QRange)
             {
                 Q.Cast();
                 return;
             }
             if (Menu.GetBool("Misc.SwapDistance") && ObjectManager.Player.Position.Distance(target.Position) > 600 + target.BoundingRadius / 2 && ObjectManager.Player.Position.Distance(value.CastPosition) > 600 + target.BoundingRadius / 2 && ObjectManager.Player.Position.Distance(value.CastPosition) < QRange + target.BoundingRadius / 2)
             {
                 Q.Cast();
                 return;
             }
             if (Menu.GetBool("Misc.SwapAOE") && FishStacks > 2 && target.CountEnemiesInRange(150) > 1)
             {
                 Q.Cast();
                 return;
             }
         }
         else
         {
             if (Menu.GetBool("Misc.SwapAOE") && target.CountEnemiesInRange(150) > 1)
             {
                 return;
             }
             if (Menu.GetBool("Misc.SwapThree") && FishStacks < 3 && ObjectManager.Player.Position.Distance(value.CastPosition) < 575 + target.BoundingRadius / 2 && ObjectManager.Player.Position.Distance(value.CastPosition) < 600 + target.BoundingRadius / 2)
             {
                 Q.Cast();
                 return;
             }
             if (Menu.GetBool("Misc.SwapDistance") && ObjectManager.Player.Position.Distance(value.CastPosition) < 575 + target.BoundingRadius / 2 && ObjectManager.Player.Position.Distance(value.CastPosition) < 600 + target.BoundingRadius / 2)
             {
                 Q.Cast();
                 return;
             }
             if (ObjectManager.Player.IsManaLow(Menu.GetSlice("Combo.mper")) && ObjectManager.Player.Position.Distance(value.CastPosition) < 600 + target.BoundingRadius)
             {
                 Q.Cast();
                 return;
             }
             if (Program.MainOrbwalker.ActiveMode == Orbwalking.OrbwalkingMode.Mixed && ObjectManager.Player.Position.Distance(value.CastPosition) > 600 + target.BoundingRadius + 50)
             {
                 Q.Cast();
                 return;
             }
         }
     }
 }
Beispiel #2
0
        internal bool UseQ(AIHeroClient target, HitChance minhc = HitChance.Medium, bool UseQ1 = true, bool UseQ2 = true)
        {
            if (target == null)
            {
                return(false);
            }

            var tready = TornadoReady;

            if ((tready && !UseQ2) || !tready && !UseQ1)
            {
                return(false);
            }

            if (tready && Yasuo.IsDashing())
            {
                if (YasuoMenu.getCheckBoxItem(YasuoMenu.ComboA, "Combo.NoQ2Dash") || ETarget == null ||
                    !(ETarget is AIHeroClient) && ETarget.CountEnemiesInRange(120) < 1)
                {
                    return(false);
                }
            }

            var sp   = tready ? Spells[Q2] : Spells[Q];
            var pred = sp.GetPrediction(target);

            if (pred.Hitchance >= minhc)
            {
                return(sp.Cast(pred.CastPosition));
            }

            return(false);
        }
Beispiel #3
0
        public override void useW(Obj_AI_Base t)
        {
            if (!W.IsReady())
            {
                return;
            }
            var qDmg = GetQdmg(t);

            if (t.HasBuffOfType(BuffType.Slow) || t.CountEnemiesInRange(250) > 1)
            {
                W.Cast(t);
            }
            if (ObjectManager.Player.Mana > RMANA + WMANA + EMANA + QMANA)
            {
                W.Cast(t);
            }
            else if (!ObjectManager.Player.UnderTurret(true) && ObjectManager.Player.Mana > ObjectManager.Player.MaxMana * 0.8 && ObjectManager.Player.Mana > RMANA + WMANA + EMANA + QMANA + WMANA)
            {
                W.Cast(t);
            }
            else if (ObjectManager.Player.Mana > RMANA + WMANA + EMANA)
            {
                foreach (var enemy in DeathWalker.AllEnemys.Where(enemy => enemy.IsValidTarget(W.Range)))
                {
                    W.Cast(enemy, true);
                }
            }
        }
Beispiel #4
0
 public static void castSafeE(Obj_AI_Base target)
 {
     if (target.IsValidTarget(E.Range) && E.IsReady() && target.CountEnemiesInRange(800) <= 2)
     {
         E.Cast(target);
     }
 }
Beispiel #5
0
        public static void autoRunderTower()
        {
            if (!R.IsReady())
            {
                return;
            }
            Obj_AI_Base tower = ObjectManager.Get <Obj_AI_Turret>().Where(tur => tur.IsAlly && tur.Health > 0).OrderBy(tur => Player.Distance(tur)).First();

            if (tower != null)
            {
                var distTower = tower.Distance(Player);

                if (distTower < 1200 && distTower > 200 && tower.CountEnemiesInRange(tower.AttackRange) == 0)
                {
                    var pol = DeathMath.getPolygonOn(Player.Position.Extend(tower.Position, -155).To2D(),
                                                     tower.Position.To2D(), R.Width, 240);
                    if (
                        EloBuddy.SDK.EntityManager.Heroes.Enemies.Any(
                            ene => ene.IsValid && !ene.IsDead && pol.pointInside(ene.Position.To2D())))
                    {
                        R.Cast(tower.Position);
                    }
                }
                //if(pol.pointInside(target.Position.To2D()))
            }
        }
Beispiel #6
0
        private void steal(Obj_AI_Base monster)
        {
            if (monster == null || monster.CountEnemiesInRange(600) == 0 || monster.CountAlliesInRange(500) > 0)
            {
                return;
            }
            float distance   = Player.Instance.Position.Distance(monster.Position);
            int   travelTime = 0;

            if (distance > 1500)
            {
                travelTime = 1000;
                distance  -= 1500;
            }
            else
            {
                travelTime = (int)distance / 1500 * 1000;
                distance   = 0;
            }
            travelTime += (int)(distance / 2500) * 1000;
            float health = Prediction.Health.GetPrediction(monster, travelTime);

            if (health - 300 > 0 && health < SpellManager.getRDamage(monster) * 0.8)
            {
                R.Cast(monster);
            }
        }
Beispiel #7
0
        public static Vector3 BestTumblePost(Obj_AI_Base target)
        {
            if (MenuManager.Modes.Misc.AutomaticPositionTumble && target.CountEnemiesInRange(800) <= 1)
            {
                if (SpellManager.E.IsReady() && MenuManager.Modes.Condemn.TumbleIfCondemn)
                {
                    var direction = (target.ServerPosition - Player.Instance.ServerPosition).To2D().Normalized();

                    for (var i = 0; i < 180; i++)
                    {
                        var angle    = (float)(i * Math.PI / 180);
                        var position = Player.Instance.ServerPosition.To2D() + direction.Rotated(-angle) * 300;

                        if (collisionTypeCheckage(position.To3D()) && position.Distance(Player.Instance.ServerPosition) >= 300 && position.Distance(target) < Player.Instance.Distance(target))
                        {
                            return(position.To3D());
                        }
                    }
                }

                return(Game.CursorPos);
            }
            else
            {
                return(Game.CursorPos);
            }
        }
Beispiel #8
0
 public static void castSafeE(Obj_AI_Base target)
 {
     if (target.IsValidTarget(E.Range) && E.IsReady() && target.CountEnemiesInRange(800) <= 2)
     {
         E.Cast(target);
     }
 }
Beispiel #9
0
 private static void AutoUlt()
 {
     if (Player.HealthPercent < SliderCheck("alistar.min.ult", Config) &&
         Player.CountEnemiesInRange(1500f) >= SliderCheck("alistar.min.enemy", Config) && R.IsReady())
     {
         R.Cast();
     }
 }
Beispiel #10
0
        private static bool canCastQ(Obj_AI_Base target)
        {
            if (target == null || !target.IsValidTarget() || target.IsDead)
            {
                return(isFishBones());
            }

            if (isFishBones())
            {
                if (Misc.IsChecked(MiscMenu, "qOptionDistance"))
                {
                    if (target.Distance(Player.Instance.Position) > normalAttackRange)
                    {
                        return(false);
                    }
                }
                if (Misc.IsChecked(MiscMenu, "qOptionAOE"))
                {
                    if (target.CountEnemiesInRange(300f) >= Misc.GetSliderValue(MiscMenu, "qOptionAOEMin"))
                    {
                        return(false);
                    }
                }
            }
            else
            {
                if (Misc.IsChecked(MiscMenu, "qOptionDistance"))
                {
                    if (target.Distance(Player.Instance.Position) > normalAttackRange)
                    {
                        return(true);
                    }
                }
                if (Misc.IsChecked(MiscMenu, "qOptionAOE"))
                {
                    if (target.CountEnemiesInRange(300f) >= Misc.GetSliderValue(MiscMenu, "qOptionAOEMin"))
                    {
                        return(true);
                    }
                }
            }

            return(isFishBones());
        }
Beispiel #11
0
        private static void FishBoneToMiniGun(Obj_AI_Base t)
        {
            var realDistance = GetRealDistance(t);

            if (realDistance < GetRealPowPowRange(t) && t.CountEnemiesInRange(250) < Config.Item("Qaoe").GetValue <Slider>().Value)
            {
                if (Player.ManaPercent < Config.Item("QmanaCombo").GetValue <Slider>().Value || Player.GetAutoAttackDamage(t) * Config.Item("QmanaIgnore").GetValue <Slider>().Value < t.Health)
                {
                    Q.Cast();
                }
            }
        }
        private void CastW()
        {
            if (justW)
            {
                return;
            }
            var allyW = ObjectManager.Get <Obj_AI_Base>().FirstOrDefault(o => o.HasBuff("mordekaisercreepingdeath"));

            if (allyW != null)
            {
                if (allyW.HealthPercent < 20 || player.HealthPercent < 20 ||
                    CombatHelper.GetBuffTime(allyW.GetBuff("mordekaisercreepingdeath")) < 0.5f)
                {
                    if ((allyW.CountEnemiesInRange(250) +
                         Environment.Minion.countMinionsInrange(allyW.Position, 250f) / 2f >= 1 ||
                         player.CountEnemiesInRange(250f) +
                         Environment.Minion.countMinionsInrange(player.Position, 250f) / 2f >= 1))
                    {
                        W.Cast(config.Item("packets").GetValue <bool>());
                    }
                }
            }
            else
            {
                Obj_AI_Base wTarget = Environment.Hero.mostEnemyAtFriend(player, W.Range, 250f);
                if (MordeGhost)
                {
                    var ghost =
                        ObjectManager.Get <Obj_AI_Minion>().FirstOrDefault(m => m.HasBuff("mordekaisercotgpetbuff2"));
                    if (wTarget == null || ghost.CountEnemiesInRange(250f) > wTarget.CountEnemiesInRange(250f))
                    {
                        wTarget = ghost;
                    }
                }
                if (wTarget != null && (wTarget.CountEnemiesInRange(250) > 0 || player.CountEnemiesInRange(250) > 0))
                {
                    W.Cast(wTarget, config.Item("packets").GetValue <bool>());
                }
            }
        }
Beispiel #13
0
        private bool CheckReq(Obj_AI_Base target)
        {
            if (GetComboDamage(target) > target.Health && !_rOn && target.CountEnemiesInRange(500) < 3)
            {
                if (E.IsReady())
                {
                    //Game.PrintChat("added delay: " + addedDelay);

                    return(true);
                }
            }

            return(false);
        }
Beispiel #14
0
        private static void SetectCard(Obj_AI_Base target)
        {
            var card = "Blue";

            if (user.CountEnemiesInRange(1000) > 1 && user.ManaPercent > 10)
            {
                card = "Gold";
            }
            if (target.CountEnemiesInRange(300) > 1 && user.ManaPercent > 10 && user.HealthPercent > 40)
            {
                card = "Red";
            }
            if (user.CountEnemiesInRange(1000) <= 1 && user.ManaPercent < 30 && user.HealthPercent > 50)
            {
                card = "Blue";
            }
            StartSelecting(card);
        }
Beispiel #15
0
        private void CastW(AIHeroClient target)
        {
            if (justW)
            {
                return;
            }
            var allyWs =
                ObjectManager.Get <Obj_AI_Base>()
                .Where(o => o.Distance(player) < 1500 && o.HasBuff("mordekaisercreepingdeath"));

            if (allyWs.Any())
            {
                foreach (var allyW in allyWs)
                {
                    if (allyW is AIHeroClient)
                    {
                        var data = Program.IncDamages.GetAllyData(allyW.NetworkId);
                        if (data != null)
                        {
                            if (data.IsAboutToDie)
                            {
                                W.Cast();
                            }
                        }
                    }
                }
            }
            else
            {
                Obj_AI_Base wTarget = Environment.Hero.mostEnemyAtFriend(player, W.Range, wWidth);
                if (MordeGhost && PetHandler.Pet != null)
                {
                    if (wTarget == null || PetHandler.Pet.CountEnemiesInRange(250f) > wTarget.CountEnemiesInRange(250f))
                    {
                        W.Cast(PetHandler.Pet);
                        return;
                    }
                }
                if (wTarget != null && (wTarget.CountEnemiesInRange(250) > 0 || player.CountEnemiesInRange(250) > 0))
                {
                    W.Cast(wTarget);
                }
            }
        }
Beispiel #16
0
        void CastR(Obj_AI_Base target)
        {
            if (target.IsDead)
            {
                return;
            }
            if (target.GetDistance() < Menu.GetSlice("Misc.RRange") && R.IsReady())
            {
                if (target.CountEnemiesInRange(250) > Menu.GetSlice("Misc.REnemies"))
                {
                    R.Cast(target, false, true);
                    return;
                }
            }
            if (target.GetDistance() < Menu.GetSlice("Misc.MinRRange") && Menu.GetBool("Misc.ROverkill") && target.GetDistance() < Menu.GetSlice("Misc.RRange"))
            {
                float RD = DLib.CalcSpellDamage(target, "R");
                float AD = (float)ObjectManager.Player.GetAutoAttackDamage(target);
                if (target.Health < AD * 3.5)
                {
                    return;
                }
                else if (target.Health < RD)
                {
                    R.Cast(target);
                }
            }

            if (target.GetDistance() < Menu.GetSlice("Misc.RRange"))
            {
                float RD = DLib.CalcSpellDamage(target, "R");

                if (target.Health < RD)
                {
                    R.Cast(target);
                }
            }
        }
Beispiel #17
0
        private float GetComboDamage(Obj_AI_Base target)
        {
            double comboDamage = 0;

            if (Q.IsReady())
            {
                comboDamage += Player.GetSpellDamage(target, SpellSlot.Q) * 2;
            }

            if (W.IsReady())
            {
                comboDamage += Player.GetSpellDamage(target, SpellSlot.W);
            }

            if (R.IsReady())
            {
                comboDamage += Player.GetSpellDamage(target, SpellSlot.R) / target.CountEnemiesInRange(R.Range);
            }

            comboDamage = ItemManager.CalcDamage(target, comboDamage);

            return((float)(comboDamage + Player.GetAutoAttackDamage(target) * 3));
        }
Beispiel #18
0
        private static void OnProcessSpellCast(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args)
        {
            if (Player.Instance.IsRecalling()) return;

            foreach (
                var enemy in
                    EntityManager.Heroes.Enemies.Where(
                        enemy => sender.IsAlly && Player.Instance.IsInRange(sender, E.Range) &&
                                 args.SData.Name == "EzrealMysticShotMissile" && sender.CountEnemiesInRange(1200) > 0 &&
                                 Prediction.Position.PredictUnitPosition(enemy, 250).IsInRange(args.End, 60)))
                CastShield(sender);

            if (!sender.IsEnemy) return;

            priorAllyOrder = new List<AIHeroClient>();

            hpAllyOrder = new List<AIHeroClient>();

            highestPriority = 0;

            lowestHP = int.MaxValue;

            if (Config.Settings.AutoShield.PriorMode == 1)
            {
                foreach (var slider in Config.Settings.AutoShield.Sliders)
                {
                    if (slider.CurrentValue >= highestPriority)
                    {
                        highestPriority = slider.CurrentValue;

                        foreach (
                            var ally in
                                Config.Settings.AutoShield.Heros.Where(
                                    ally => slider.VisibleName.Contains(ally.ChampionName)))
                            priorAllyOrder.Insert(0, ally);
                    }
                    else
                    {
                        foreach (
                            var ally in
                                Config.Settings.AutoShield.Heros.Where(
                                    ally => slider.VisibleName.Contains(ally.ChampionName)))
                            priorAllyOrder.Add(ally);
                    }
                }

                foreach (var ally in priorAllyOrder.Where(ally => Player.Instance.IsInRange(ally, E.Range)))
                {
                    foreach (
                        var shieldThisSpell in
                            from shieldThisAlly in
                                Config.Settings.AutoShield.ShieldAllyList.Where(
                                    x => x.DisplayName.Contains(ally.ChampionName) && x.CurrentValue)
                            from shieldThisSpell in Config.Settings.AutoShield.ShieldSpellList
                            where shieldThisSpell.DisplayName.Contains(args.SData.Name) && shieldThisSpell.CurrentValue
                            select shieldThisSpell)
                    {
                        if (args.Target == ally)
                            CastShield(ally);
                        else
                        {
                            if (Prediction.Position.PredictUnitPosition(ally, 250)
                                .IsInRange(args.End,
                                    MissileDatabase.rangeRadiusDatabase[shieldThisSpell.DisplayName.Last(), 1]))
                            {
                                CastShield(ally);
                            }
                            else if (sender.IsFacing(ally) &&
                                     Prediction.Position.PredictUnitPosition(ally, 250)
                                         .IsInRange(sender,
                                             MissileDatabase.rangeRadiusDatabase[shieldThisSpell.DisplayName.Last(), 0]))
                            {
                                CastShield(ally);
                            }
                        }
                    }
                }
            }
            else
            {
                foreach (var ally in EntityManager.Heroes.Allies)
                {
                    if (ally.Health <= lowestHP)
                    {
                        lowestHP = ally.Health;
                        hpAllyOrder.Insert(0, ally);
                    }
                    else
                        hpAllyOrder.Add(ally);
                }

                foreach (var ally in hpAllyOrder.Where(ally => Player.Instance.IsInRange(ally, E.Range)))
                {
                    foreach (
                        var shieldThisSpell in
                            Config.Settings.AutoShield.ShieldAllyList.Where(
                                x => x.DisplayName.Contains(ally.ChampionName) && x.CurrentValue)
                                .SelectMany(
                                    shieldThisAlly =>
                                        Config.Settings.AutoShield.ShieldSpellList.Where(
                                            s => s.DisplayName.Contains(args.SData.Name) && s.CurrentValue)))
                    {
                        if (args.Target == ally)
                            CastShield(ally);
                        else
                        {
                            if (Prediction.Position.PredictUnitPosition(ally, 250)
                                .IsInRange(args.End,
                                    MissileDatabase.rangeRadiusDatabase[shieldThisSpell.DisplayName.Last(), 1]))
                            {
                                CastShield(ally);
                            }
                            else if (sender.IsFacing(ally) &&
                                     Prediction.Position.PredictUnitPosition(ally, 250)
                                         .IsInRange(sender,
                                             MissileDatabase.rangeRadiusDatabase[shieldThisSpell.DisplayName.Last(), 0]))
                            {
                                CastShield(ally);
                            }
                        }
                    }
                }
            }
        }
Beispiel #19
0
        public static void UseItems(Obj_AI_Base target, float comboDmg = 0f, bool cleanseSpell = false)
        {
            hydraTarget = target;

            if (Item.HasItem(randuins.Id) && Item.CanUseItem(randuins.Id))
            {
                if (target != null && player.Distance(target) < randuins.Range &&
                    player.CountEnemiesInRange(randuins.Range) >= 2)
                {
                    Item.UseItem(randuins.Id);
                }
            }
            if (target != null && Item.HasItem(odins.Id) &&
                Item.CanUseItem(odins.Id))
            {
                var odinDmg = player.GetItemDamage(target, ItemId.Odyns_Veil);

                if (odinDmg > target.Health)
                    {
                        odins.Cast(target);
                    }

            }
            if (Item.HasItem(bilgewater.Id) &&
                Item.CanUseItem(bilgewater.Id))
            {
                var bilDmg = player.GetItemDamage(target, ItemId.Bilgewater_Cutlass);
                if (bilDmg > target.Health)
                    {
                        bilgewater.Cast(target);
                    }

            }
            if (target != null && Item.HasItem(botrk.Id) &&
                Item.CanUseItem(botrk.Id))
            {
                var botrDmg = player.GetItemDamage(target, ItemId.Blade_of_the_Ruined_King);

                    if (botrDmg > target.Health)
                    {
                        botrk.Cast(target);
                    }

            }
            if (target != null && Item.HasItem(hexgun.Id) &&
                Item.CanUseItem(hexgun.Id))
            {
                var hexDmg = player.GetItemDamage(target, ItemId.Hextech_Gunblade);

                if (hexDmg > target.Health)
                    {
                        hexgun.Cast(target);
                    }

            }
            if (
                ((!MuramanaEnabled && 40 < player.ManaPercent) ||
                 (MuramanaEnabled && 40 > player.ManaPercent)))
            {
                if (Muramana.IsOwned() && Muramana.IsReady())
                {
                    Muramana.Cast();
                }
                if (Muramana2.IsOwned() && Muramana2.IsReady())
                {
                    Muramana2.Cast();
                }
            }
            MuramanaTime = System.Environment.TickCount;
            if (Item.HasItem(youmuu.Id) && Item.CanUseItem(youmuu.Id) &&
                target != null && player.Distance(target) < player.AttackRange + 50 && target.HealthPercent < 65)
            {
                youmuu.Cast();
            }

            if (Item.HasItem(frost.Id) && Item.CanUseItem(frost.Id) && target != null)
            {
                if (player.Distance(target) < frost.Range &&
                    (2 <= target.CountEnemiesInRange(225f) &&
                     ((target.Health / target.MaxHealth * 100f) < 40 && true ||
                      !true)))
                {
                    frost.Cast(target);
                }
            }
            if (Item.HasItem(solari.Id) && Item.CanUseItem(solari.Id))
            {
                if ((2 <= player.CountAlliesInRange(solari.Range) &&
                     2 <= player.CountEnemiesInRange(solari.Range)) ||
                    ObjectManager.Get<Obj_AI_Base>()
                        .FirstOrDefault(
                            h => h.IsAlly && !h.IsDead && solari.IsInRange(h) && CombatHelper.CheckCriticalBuffs(h)) !=
                    null)
                {
                    solari.Cast();
                }
            }

                UseCleanse(cleanseSpell);
        }
Beispiel #20
0
        public static Vector3 BestTumblePost(Obj_AI_Base target)
        {
            if (MenuManager.Modes.Misc.AutomaticPositionTumble && target.CountEnemiesInRange(800) <= 1)
            {  
                if (SpellManager.E.IsReady() && MenuManager.Modes.Condemn.TumbleIfCondemn)
                {
                    var direction = (target.ServerPosition - Player.Instance.ServerPosition).To2D().Normalized();

                    for (var i = 0; i < 180; i++)
                    {
                        var angle = (float)(i * Math.PI / 180);
                        var position = Player.Instance.ServerPosition.To2D() + direction.Rotated(-angle) * 300;

                        if (collisionTypeCheckage(position.To3D()) && position.Distance(Player.Instance.ServerPosition) >= 300 && position.Distance(target) < Player.Instance.Distance(target))
                            return position.To3D();
                    }
                }

                return Game.CursorPos;
            }
            else
            {
                return Game.CursorPos;
            }
        }
Beispiel #21
0
        private static void FishBoneToMiniGun(Obj_AI_Base t)
        {
            var realDistance = GetRealDistance(t);

            if (realDistance < GetRealPowPowRange(t) && t.CountEnemiesInRange(250) < Config.Item("Qaoe").GetValue<Slider>().Value)
            {
                if (Player.ManaPercent < Config.Item("QmanaCombo").GetValue<Slider>().Value || Player.GetAutoAttackDamage(t) * Config.Item("QmanaIgnore").GetValue<Slider>().Value < t.Health)
                    Q.Cast();

            }
        }
Beispiel #22
0
 private static int GetEnemiesAround(Obj_AI_Base unit, float range)
 {
     return unit.CountEnemiesInRange(range);
 }
Beispiel #23
0
        private static void Game_OnUpdate(EventArgs args)
        {
            //if (Config.Item("SmitCast").GetValue<KeyBind>().Active)
            //{
            //	Console.WriteLine(Utill.GetInfo());
            //}


            if (Config.Item(Player.ChampionName + "DamageType").GetValue <StringList>().SelectedIndex == 0)
            {
                return;
            }

            #region 取雪球标记目标
            if (GetSnowBallState() == SnowBallState.Dash)
            {
                foreach (var enemy in ObjectManager.Get <Obj_AI_Base>().Where(o => o.IsEnemy && o.IsValid && !o.IsDead && o.Distance(Player) <= SnowBall.Range + 400 && (o.Type == GameObjectType.obj_AI_Minion || o.Type == GameObjectType.obj_AI_Hero)))
                {
                    if (enemy.HasBuff("snowballfollowupself") ||
                        enemy.HasBuff("porothrowfollowup"))
                    {
                        MarkTarget = enemy;
                        break;
                    }
                    else
                    {
                        MarkTarget = null;
                    }
                }
            }
            else
            {
                MarkTarget = null;
            }
            #endregion

            #region 连招时 标记目标 或 打伤害

            if (Config.Item("Combo").GetValue <KeyBind>().Active)
            {
                if (GetSnowBallState() == SnowBallState.Mark)
                {
                    var Target = TargetSelector.GetTarget(SnowBall.Range, DamageTypeList[Config.Item(Player.ChampionName + "DamageType").GetValue <StringList>().SelectedIndex], false, ignoreList);
                    //Game.PrintChat("Combo SnowBall");
                    CastMark(Target);
                }
            }
            #endregion

            #region 抢人头
            if (Config.Item("KS").GetValue <bool>())
            {
                if (GetSnowBallState() == SnowBallState.Mark)
                {
                    foreach (var enemy in HeroManager.Enemies.Where(o => o.IsValid && !o.IsDead && o.Distance(Player) <= SnowBall.Range - 10))
                    {
                        if (enemy.Health < GetSnowBallDmg())
                        {
                            //Game.PrintChat("enemy.Health:" + enemy.Health + "  SnowBallDmg:" + GetSnowBallDmg());
                            //Game.PrintChat("KS1 SnowBall");
                            CastMark(enemy);
                        }
                    }
                }
                if (GetSnowBallState() == SnowBallState.Dash &&
                    MarkTarget != null && MarkTarget.Type == GameObjectType.obj_AI_Hero &&
                    MarkTarget.CountEnemiesInRange(700) < Player.CountEnemiesInRange(700))
                {
                    var enemy = MarkTarget as Obj_AI_Hero;
                    if (enemy.Health <= GetSnowBallDmg())
                    {
                        //Game.PrintChat("KS2 SnowBall");
                        SnowBall.Cast();
                    }
                }
            }


            #endregion

            #region 半手动
            if ((Config.Item("SmitCast").GetValue <KeyBind>().Active ||
                 Config.Item("Toggle").GetValue <KeyBind>().Active) &&
                GetSnowBallState() == SnowBallState.Mark)
            {
                var Target = TargetSelector.GetTarget(SnowBall.Range, DamageTypeList[Config.Item(Player.ChampionName + "DamageType").GetValue <StringList>().SelectedIndex], false, ignoreList);
                //Game.PrintChat("SmitCast SnowBall");
                //CastMark(Target,HitChance.High);
                CastMark(Target);
            }

            #endregion
        }
Beispiel #24
0
 private static int GetEnemiesAround(Obj_AI_Base unit, float range)
 {
     return(unit.CountEnemiesInRange(range));
 }
Beispiel #25
0
        private static bool canCastQ(Obj_AI_Base target)
        {
            if (target == null || !target.IsValidTarget() || target.IsDead) return isFishBones();

            if (isFishBones())
            {
                if (Misc.IsChecked(MiscMenu, "qOptionDistance"))
                {
                    if (target.Distance(Player.Instance.Position) > normalAttackRange)
                    {
                        return false;
                    }
                }
                if (Misc.IsChecked(MiscMenu, "qOptionAOE"))
                {
                    if (target.CountEnemiesInRange(300f) >= Misc.GetSliderValue(MiscMenu, "qOptionAOEMin"))
                    {
                        return false;
                    }
                }
            }
            else
            {
                if (Misc.IsChecked(MiscMenu, "qOptionDistance"))
                {
                    if (target.Distance(Player.Instance.Position) > normalAttackRange)
                    {
                        return true;
                    }
                }
                if (Misc.IsChecked(MiscMenu, "qOptionAOE"))
                {
                    if (target.CountEnemiesInRange(300f) >= Misc.GetSliderValue(MiscMenu, "qOptionAOEMin"))
                    {
                        return true;
                    }
                }
            }

            return isFishBones();
        }
        /// <summary>
        ///     Casting Logic.
        /// </summary>
        public static void Casting(Spell.SpellBase spellBase, Obj_AI_Base target, bool enabled = true)
        {
            if (spellBase == null || target == null || !enabled)
            {
                return;
            }

            if (spellBase.DontWaste() && ModesManager.LaneClear)
            {
                return;
            }

            if (spellBase.IsDangerDash() && target.CountAlliesInRange(1000) >= target.CountEnemiesInRange(1000) &&
                (target.PredictPosition().UnderEnemyTurret() && Misc.SafeToDive || !target.PredictPosition().UnderEnemyTurret()))
            {
                spellBase.Cast(target);
                return;
            }

            if (spellBase.IsDangerDash())
            {
                return;
            }

            if (spellBase.IsDash())
            {
                spellBase.Cast(target.PredictPosition().Extend(Player.Instance, 300).To3D());
                return;
            }

            if (spellBase.IsToggle())
            {
                if (spellBase is Spell.Active)
                {
                    if (spellBase.Handle.ToggleState != 2 && target.IsValidTarget(spellBase.Range))
                    {
                        spellBase.Cast();
                        return;
                    }
                    if (spellBase.Handle.ToggleState == 2 && !target.IsValidTarget(spellBase.Range))
                    {
                        spellBase.Cast();
                        return;
                    }
                }
                else
                {
                    if (spellBase.Handle.ToggleState != 2 && target.IsValidTarget(spellBase.Range))
                    {
                        spellBase.Cast(target);
                        return;
                    }
                    if (spellBase.Handle.ToggleState == 2 && !target.IsValidTarget(spellBase.Range))
                    {
                        spellBase.Cast(Game.CursorPos);
                        return;
                    }
                }
            }

            if (spellBase is Spell.Active)
            {
                spellBase.Cast();
                return;
            }

            if ((spellBase is Spell.Skillshot || spellBase is Spell.Targeted || spellBase is Spell.Ranged) && !(spellBase is Spell.Chargeable))
            {
                spellBase.Cast(target);
                return;
            }

            if (spellBase is Spell.Chargeable)
            {
                var chargeable = spellBase as Spell.Chargeable;

                if (!chargeable.IsCharging)
                {
                    chargeable.StartCharging();
                    return;
                }
                if (chargeable.IsInRange(target))
                {
                    chargeable.Cast(target);
                }
            }
        }
Beispiel #27
0
 private void steal(Obj_AI_Base monster)
 {
     if (monster == null || monster.CountEnemiesInRange(600) == 0 || monster.CountAlliesInRange(500) > 0)
         return;
     float distance = Player.Instance.Position.Distance(monster.Position);
     int travelTime = 0;
     if (distance > 1500)
     {
         travelTime = 1000;
         distance -= 1500;
     }
     else
     {
         travelTime = (int)distance / 1500 * 1000;
         distance = 0;
     }
     travelTime += (int)(distance / 2500) * 1000;
     float health = Prediction.Health.GetPrediction(monster, travelTime);
     if (health - 300 > 0 && health < SpellManager.getRDamage(monster) * 0.8)
     {
         R.Cast(monster);
     }
 }
Beispiel #28
0
        private void CastW(AIHeroClient target)
        {
            if (justW)
            {
                return;
            }
            var allyWs =
                ObjectManager.Get <Obj_AI_Base>()
                .Where(o => o.Distance(player) < 1500 && o.HasBuff("mordekaisercreepingdeath"));

            if (allyWs.Any())
            {
                foreach (var allyW in allyWs)
                {
                    var targethero =
                        HeroManager.Enemies.Where(e => e.Distance(allyW.Position) < wWidth && e.IsValidTarget())
                        .OrderByDescending(e => e.Distance(allyW.Position))
                        .FirstOrDefault();
                    if (targethero != null)
                    {
                        var pred =
                            Prediction.GetPrediction(targethero, 0.1f)
                            .UnitPosition.Distance(Prediction.GetPrediction(allyW, 0.1f).UnitPosition);
                        if ((pred > wWidth &&
                             (allyW.CountEnemiesInRange(wWidth) == 1 || target.NetworkId == targethero.NetworkId)) &&
                            !allyWs.Any(
                                a =>
                                Prediction.GetPrediction(targethero, 0.1f)
                                .UnitPosition.Distance(Prediction.GetPrediction(a, 0.1f).UnitPosition) < wWidth))
                        {
                            W.Cast();
                        }
                    }
                    if (allyW is AIHeroClient)
                    {
                        var data = Program.IncDamages.GetAllyData(allyW.NetworkId);
                        if (data != null)
                        {
                            if (data.IsAboutToDie)
                            {
                                W.Cast();
                            }
                        }
                    }
                }
            }
            else
            {
                Obj_AI_Base wTarget = Environment.Hero.mostEnemyAtFriend(player, W.Range, wWidth);
                if (MordeGhost && PetHandler.Pet != null)
                {
                    if (wTarget == null || PetHandler.Pet.CountEnemiesInRange(250f) > wTarget.CountEnemiesInRange(250f))
                    {
                        W.Cast(PetHandler.Pet);
                        return;
                    }
                }
                if (wTarget != null && (wTarget.CountEnemiesInRange(250) > 0 || player.CountEnemiesInRange(250) > 0))
                {
                    W.Cast(wTarget);
                }
            }
        }
Beispiel #29
0
        private static void OnProcessSpellCast(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args)
        {
            if (Player.Instance.IsRecalling())
            {
                return;
            }

            foreach (
                var enemy in
                EntityManager.Heroes.Enemies.Where(
                    enemy => sender.IsAlly && Player.Instance.IsInRange(sender, E.Range) &&
                    args.SData.Name == "EzrealMysticShotMissile" && sender.CountEnemiesInRange(1200) > 0 &&
                    Prediction.Position.PredictUnitPosition(enemy, 250).IsInRange(args.End, 60)))
            {
                CastShield(sender);
            }

            if (!sender.IsEnemy)
            {
                return;
            }

            priorAllyOrder = new List <AIHeroClient>();

            hpAllyOrder = new List <AIHeroClient>();

            highestPriority = 0;

            lowestHP = int.MaxValue;

            if (Config.Settings.AutoShield.PriorMode == 1)
            {
                foreach (var slider in Config.Settings.AutoShield.Sliders)
                {
                    if (slider.CurrentValue >= highestPriority)
                    {
                        highestPriority = slider.CurrentValue;

                        foreach (
                            var ally in
                            Config.Settings.AutoShield.Heros.Where(
                                ally => slider.VisibleName.Contains(ally.ChampionName)))
                        {
                            priorAllyOrder.Insert(0, ally);
                        }
                    }
                    else
                    {
                        foreach (
                            var ally in
                            Config.Settings.AutoShield.Heros.Where(
                                ally => slider.VisibleName.Contains(ally.ChampionName)))
                        {
                            priorAllyOrder.Add(ally);
                        }
                    }
                }

                foreach (var ally in priorAllyOrder.Where(ally => Player.Instance.IsInRange(ally, E.Range)))
                {
                    foreach (
                        var shieldThisSpell in
                        from shieldThisAlly in
                        Config.Settings.AutoShield.ShieldAllyList.Where(
                            x => x.DisplayName.Contains(ally.ChampionName) && x.CurrentValue)
                        from shieldThisSpell in Config.Settings.AutoShield.ShieldSpellList
                        where shieldThisSpell.DisplayName.Contains(args.SData.Name) && shieldThisSpell.CurrentValue
                        select shieldThisSpell)
                    {
                        if (args.Target == ally)
                        {
                            CastShield(ally);
                        }
                        else
                        {
                            if (Prediction.Position.PredictUnitPosition(ally, 250)
                                .IsInRange(args.End,
                                           MissileDatabase.rangeRadiusDatabase[shieldThisSpell.DisplayName.Last(), 1]))
                            {
                                CastShield(ally);
                            }
                            else if (sender.IsFacing(ally) &&
                                     Prediction.Position.PredictUnitPosition(ally, 250)
                                     .IsInRange(sender,
                                                MissileDatabase.rangeRadiusDatabase[shieldThisSpell.DisplayName.Last(), 0]))
                            {
                                CastShield(ally);
                            }
                        }
                    }
                }
            }
            else
            {
                foreach (var ally in EntityManager.Heroes.Allies)
                {
                    if (ally.Health <= lowestHP)
                    {
                        lowestHP = ally.Health;
                        hpAllyOrder.Insert(0, ally);
                    }
                    else
                    {
                        hpAllyOrder.Add(ally);
                    }
                }

                foreach (var ally in hpAllyOrder.Where(ally => Player.Instance.IsInRange(ally, E.Range)))
                {
                    foreach (
                        var shieldThisSpell in
                        Config.Settings.AutoShield.ShieldAllyList.Where(
                            x => x.DisplayName.Contains(ally.ChampionName) && x.CurrentValue)
                        .SelectMany(
                            shieldThisAlly =>
                            Config.Settings.AutoShield.ShieldSpellList.Where(
                                s => s.DisplayName.Contains(args.SData.Name) && s.CurrentValue)))
                    {
                        if (args.Target == ally)
                        {
                            CastShield(ally);
                        }
                        else
                        {
                            if (Prediction.Position.PredictUnitPosition(ally, 250)
                                .IsInRange(args.End,
                                           MissileDatabase.rangeRadiusDatabase[shieldThisSpell.DisplayName.Last(), 1]))
                            {
                                CastShield(ally);
                            }
                            else if (sender.IsFacing(ally) &&
                                     Prediction.Position.PredictUnitPosition(ally, 250)
                                     .IsInRange(sender,
                                                MissileDatabase.rangeRadiusDatabase[shieldThisSpell.DisplayName.Last(), 0]))
                            {
                                CastShield(ally);
                            }
                        }
                    }
                }
            }
        }
Beispiel #30
0
 public bool GoodBounceTarget(Obj_AI_Base target)
 {
     return(target.CountEnemiesInRange(380) > 1);
 }
Beispiel #31
0
        private float GetComboDamage(Obj_AI_Base target)
        {
            double comboDamage = 0;

            if (Q.IsReady())
                comboDamage += Player.GetSpellDamage(target, SpellSlot.Q) * 2;

            if (W.IsReady())
                comboDamage += Player.GetSpellDamage(target, SpellSlot.W);

            if (R.IsReady())
                comboDamage += Player.GetSpellDamage(target, SpellSlot.R) / target.CountEnemiesInRange(R.Range);

            comboDamage = ItemManager.CalcDamage(target, comboDamage);

            return (float)(comboDamage + Player.GetAutoAttackDamage(target) * 3);
        }