Beispiel #1
0
        private void Cast_R()
        {
            if (!R.IsReady() || Menu.Item("Combo_useR_onAmount").GetValue <Slider>().Value <= 0)
            {
                return;
            }
            var hits  = 0;
            var kills = 0;

            foreach (var enemy in from enemy in AllHerosEnemy.Where(x => x.IsValidTarget(R.Range))
                     let prediction = Prediction.GetPrediction(enemy, R.Delay)
                                      where prediction != null && prediction.UnitPosition.Distance(MyHero.ServerPosition) <= R.Range
                                      select enemy)
            {
                hits += 1;
                if (MyHero.GetSpellDamage(enemy, SpellSlot.R) >= enemy.Health)
                {
                    kills += 1;
                }
            }
            if (hits >= Menu.Item("Combo_useR_onAmount").GetValue <Slider>().Value || (kills >= 1 && GetHealthPercent() <= 15))
            {
                R.Cast();
            }
        }
 private void Cast_R()
 {
     if (!R.IsReady())
     {
         return;
     }
     if (Menu.Item("Combo_useR_onAmount").GetValue <Slider>().Value > 0)
     {
         if (Utility.CountEnemysInRange((int)R.Range) >= Menu.Item("Combo_useR_onAmount").GetValue <Slider>().Value)
         {
             R.Cast();
             return;
         }
     }
     if (Menu.Item("Combo_useR_onEnemyHealth").GetValue <Slider>().Value <= 0)
     {
         return;
     }
     if (!AllHerosEnemy.Any(hero => hero.IsValidTarget(R.Range) &&
                            hero.Health / hero.MaxHealth * 100 <
                            Menu.Item("Combo_useR_onEnemyHealth").GetValue <Slider>().Value))
     {
         return;
     }
     R.Cast();
 }
Beispiel #3
0
 private void Cast_W(bool mode)
 {
     if (!W.IsReady())
     {
         return;
     }
     if (mode)
     {
         foreach (var enemy in AllHerosEnemy.Where(enemy => enemy.IsValidTarget(W.Range)))
         {
             if (ObjectManager.Get <Obj_AI_Base>().Any(obj => obj.IsValidTarget() && obj.IsMinion &&
                                                       MyHero.ServerPosition.To2D()
                                                       .Distance(W.GetPrediction(enemy).CastPosition.To2D(),
                                                                 obj.Position.To2D(), true) <
                                                       25))
             {
                 return;
             }
             W.Cast(enemy, UsePackets());
         }
     }
     else
     {
         var allMinions   = MinionManager.GetMinions(MyHero.Position, W.Range, MinionTypes.All, MinionTeam.NotAlly);
         var farmlocation = W.GetCircularFarmLocation(allMinions, 300);
         if (farmlocation.Position.Distance(MyHero.Position) > 300 && farmlocation.Position.Distance(MyHero.Position) < W.Range && (farmlocation.MinionsHit >= 3 || allMinions.Any(x => x.Team == GameObjectTeam.Neutral)))
         {
             W.Cast(farmlocation.Position, UsePackets());
         }
     }
 }
Beispiel #4
0
 private void Cast_E()
 {
     if (!E.IsReady())
     {
         return;
     }
     foreach (var enemy in AllHerosEnemy.Where(hero => hero.IsValidTarget(E.Range)).Where(enemy => IsCollisionE(enemy)))
     {
         E.Cast(enemy, UsePackets());
         return;
     }
 }
Beispiel #5
0
        public override void ObjSpellMissileOnOnCreate(GameObject sender, EventArgs args)
        {
            if (Menu.Item("Q_AgainstWard").GetValue <bool>() && sender.Name.ToLower().Contains("ward") && MyHero.Distance(sender.Position) <= MyHero.AttackRange)
            {
                var query = AllHerosEnemy.Where(xSLxOrbwalker.InAutoAttackRange);                 // dont focus ward if enemy in range

                if (!query.Any())
                {
                    MyHero.IssueOrder(GameObjectOrder.AttackUnit, sender);
                }
            }
        }
Beispiel #6
0
        private void Cast_R(int mode)
        {
            if (!R.IsReady())
            {
                return;
            }
            if (
                AllHerosEnemy.Where(hero => hero.IsValidTarget(R.Range))
                .Select(enemy => R.CastIfWillHit(enemy, Menu.Item("Combo_useR_enemyCount").GetValue <Slider>().Value, UsePackets()))
                .Any(casted => casted))
            {
                return;
            }


            var targetMode1 = SimpleTs.GetTarget(W.Range, SimpleTs.DamageType.Physical);
            var targetMode2 = SimpleTs.GetTarget(R.Range, SimpleTs.DamageType.Physical);

            switch (mode)
            {
            case 1:
                if (targetMode1 == null)
                {
                    return;
                }
                if (targetMode1.Health < GetComboDamage(targetMode1))
                {
                    R.Cast(targetMode1, UsePackets());
                }
                break;

            case 2:
                if (targetMode2 == null)
                {
                    return;
                }
                if (targetMode2.Health < MyHero.GetSpellDamage(targetMode2, SpellSlot.R) * 0.9 && !targetMode2.IsValidTarget(W.Range))
                {
                    R.Cast(targetMode2, UsePackets());
                }
                break;
            }
        }
Beispiel #7
0
 private void QHandler()
 {
     if (Environment.TickCount - _qCheckTimer > 300)
     {
         _qCheckTimer = Environment.TickCount;
         _qActive     = MyHero.Spellbook.GetSpell(SpellSlot.Q).ToggleState == 2;
         if (AllHerosEnemy.Where(xSLxOrbwalker.InAutoAttackRange).Where(enemy => (xSLxOrbwalker.CurrentMode == xSLxOrbwalker.Mode.Combo || xSLxOrbwalker.CurrentMode == xSLxOrbwalker.Mode.Harass) && IsSpellActive("Q")).Any(enemy => !_qActive))
         {
             Q.Cast();
             return;
         }
         if ((!AllHerosEnemy.Any(xSLxOrbwalker.InAutoAttackRange) ||
              !(xSLxOrbwalker.CurrentMode == xSLxOrbwalker.Mode.Harass ||
                xSLxOrbwalker.CurrentMode == xSLxOrbwalker.Mode.Combo)) && _qActive)
         {
             Q.Cast();
         }
     }
 }
Beispiel #8
0
        private void Cast_Q_UnderTower()
        {
            if (!Menu.Item("Q_UnderTurret").GetValue <bool>())
            {
                return;
            }
            // need some improve to use E to gapcloser on enemy and stun under tower
            var query       = AllHerosEnemy.Where(x => xSLxOrbwalker.InAutoAttackRange(x) && Utility.UnderTurret(x));
            var objAiHeroes = query as Obj_AI_Hero[] ?? query.ToArray();

            if (!objAiHeroes.Any())
            {
                return;
            }
            var target = objAiHeroes.First();

            MyHero.IssueOrder(GameObjectOrder.AttackUnit, target);
            Cast_Q(target);
        }
Beispiel #9
0
        private void Cast_W(bool stun, bool slow)
        {
            if (!W.IsReady())
            {
                return;
            }

            foreach (var unit in AllHerosEnemy.Where(x => x.IsValidTarget(W.Range) && !x.IsDead && x.IsEnemy))
            {
                if (stun && W.GetPrediction(unit).Hitchance == HitChance.Immobile)
                {
                    W.Cast(unit.ServerPosition, UsePackets());
                    return;
                }

                if (slow && unit.HasBuffOfType(BuffType.Slow))
                {
                    W.Cast(unit, UsePackets());
                    return;
                }
            }
        }
Beispiel #10
0
        private void Cast_R_MinHit()
        {
            // What do you think about GetCircularFarmLocation, this will use MEC

            var minEnemyCount = 5;

            if (xSLxOrbwalker.CurrentMode == xSLxOrbwalker.Mode.Combo)
            {
                minEnemyCount = Menu.Item("Combo_useR_enemyCount").GetValue <Slider>().Value;
            }

            var query = AllHerosEnemy
                        .Where(x => x.IsValidTarget(R.Range))
                        .Select(x => x.ServerPosition.To2D());

            var rLocation = R.GetCircularFarmLocation(query.ToList());

            if (rLocation.MinionsHit >= minEnemyCount)
            {
                R.Cast(rLocation.Position);
            }
        }
Beispiel #11
0
        private void Cast_E(bool stun, bool slow, bool behind)
        {
            if (!E.IsReady())
            {
                return;
            }

            foreach (var unit in AllHerosEnemy.Where(x => x.IsValidTarget(E.Range) && !x.IsDead && x.IsEnemy))
            {
                if (stun && E.GetPrediction(unit).Hitchance == HitChance.Immobile)
                {
                    E.Cast(unit.ServerPosition, UsePackets());
                    return;
                }

                if (slow && unit.HasBuffOfType(BuffType.Slow))
                {
                    var ePredSlow      = E.GetPrediction(unit);
                    var eBehindVecSlow = ePredSlow.CastPosition +
                                         Vector3.Normalize(unit.ServerPosition - MyHero.ServerPosition) * 100;
                    if (MyHero.Distance(eBehindVecSlow) < E.Range)
                    {
                        E.Cast(eBehindVecSlow, UsePackets());
                        return;
                    }
                }

                var eBehindDistance = Menu.Item("E_Behind_Distance").GetValue <Slider>().Value;
                var ePred           = E.GetPrediction(unit);
                var eBehindVec      = ePred.CastPosition +
                                      Vector3.Normalize(ePred.CastPosition - MyHero.ServerPosition) * eBehindDistance;

                if (E.IsReady() && behind && MyHero.Distance(eBehindVec) < E.Range)
                {
                    E.Cast(eBehindVec);
                }
            }
        }
Beispiel #12
0
        private void Cast_R()
        {
            if (!R.IsReady())
            {
                return;
            }
            var killableEnemy = AllHerosEnemy.FirstOrDefault(enemy => enemy.IsValidTarget(R.Range) && MyHero.GetSpellDamage(enemy, SpellSlot.R) * 0.9 >= enemy.Health);

            if (killableEnemy != null)
            {
                R.Cast(killableEnemy, UsePackets());
            }
            var target = SimpleTs.GetTarget(R.Range, SimpleTs.DamageType.Magical);

            if (GetComboDamage(target) > target.Health && GetPassiveStacks() == 4)
            {
                R.Cast(target, UsePackets());
            }
            if (GetPassiveStacks() == 4)
            {
                R.CastIfWillHit(target, Menu.Item("R_StunCount").GetValue <Slider>().Value, UsePackets());
            }
        }
Beispiel #13
0
        private bool ShouldUlt()
        {
            if (EnemysinRange(500))
            {
                return(true);
            }
            var mousePos         = Game.CursorPos;
            var enemiesNearMouse = AllHerosEnemy.Where(x => x.Distance(MyHero) < R.Range && x.Distance(mousePos) < 650);
            var objAiHeroes      = enemiesNearMouse as Obj_AI_Hero[] ?? enemiesNearMouse.ToArray();

            if (!objAiHeroes.Any())
            {
                return(false);
            }
            if (IsRActive())
            {
                return(true);
            }
            var enoughMana = MyHero.Mana > MyHero.Spellbook.GetSpell(SpellSlot.Q).ManaCost + MyHero.Spellbook.GetSpell(SpellSlot.E).ManaCost + MyHero.Spellbook.GetSpell(SpellSlot.R).ManaCost;

            if (Menu.Item("Combo_useR_onUseActivate").GetValue <bool>() || !(Q.IsReady() && E.IsReady()) || !enoughMana)
            {
                return(false);
            }
            var friendsNearMouse = AllHerosFriend.Where(x => x.IsMe || x.Distance(mousePos) < 650);

            if (objAiHeroes.Count() == 1)
            {
                var enemy      = objAiHeroes.FirstOrDefault();
                var underTower = Utility.UnderTurret(enemy);
                return(enemy != null && GetComboDamage(enemy) / enemy.Health >= (underTower ? 1.25f : 1));
            }
            var lowHealthEnemies = objAiHeroes.Count(x => x.Health / x.MaxHealth <= 0.1);
            var totalEnemyHealth = objAiHeroes.Sum(x => x.Health);

            return(friendsNearMouse.Count() - (objAiHeroes.Count() - lowHealthEnemies) >= -1 || MyHero.Health / totalEnemyHealth >= 0.8);
        }
Beispiel #14
0
        private void Cast_R()
        {
            if (!R.IsReady())
            {
                return;
            }

            if (Menu.Item("Misc_useR_ifStun").GetValue <bool>())
            {
                foreach (var target in AllHerosEnemy.Where(hero => hero.IsValidTarget(R.Width)))
                {
                    CastRToCollision(GetCollision(target));
                }
            }

            if (Menu.Item("Misc_useR_ifcanKill").GetValue <bool>())
            {
                var target = SimpleTs.GetTarget(390, SimpleTs.DamageType.Physical);
                if (target.Health < GetComboDamage(target) && target.IsValidTarget(MyHero.Distance(R.GetPrediction(target).CastPosition)))
                {
                    R.Cast(V2E(MyHero.Position, R.GetPrediction(target).CastPosition, -50), UsePackets());
                }
            }
        }