Esempio n. 1
0
        public static Obj_AI_Hero GetTarget(float range, 
            DamageType damageType,
            bool ignoreShield = true,
            IEnumerable<Obj_AI_Hero> ignoredChamps = null,
            Vector3? rangeCheckFrom = null)
        {
            if (_lastTarget == null || !_lastTarget.IsValidTarget() || _lastDamageType != damageType)
            {
                var newTarget = TargetSelector.GetTarget(range, damageType, ignoreShield, ignoredChamps, rangeCheckFrom);

                _lastTarget = newTarget;
                _lastDamageType = damageType;

                return newTarget;
            }

            if (_lastTarget.IsValidTarget(range) && damageType == _lastDamageType)
            {
                return _lastTarget;
            }

            var newTarget2 = TargetSelector.GetTarget(range, damageType, ignoreShield, ignoredChamps, rangeCheckFrom);

            _lastTarget = newTarget2;
            _lastDamageType = damageType;

            return newTarget2;
        }
Esempio n. 2
0
        public static Obj_AI_Hero GetTarget(float range,
                                            DamageType damageType,
                                            bool ignoreShield = true,
                                            IEnumerable <Obj_AI_Hero> ignoredChamps = null,
                                            Vector3?rangeCheckFrom = null)
        {
            if (_lastTarget == null || !_lastTarget.IsValidTarget() || _lastDamageType != damageType)
            {
                var newTarget = TargetSelector.GetTarget(range, damageType, ignoreShield, ignoredChamps, rangeCheckFrom);

                _lastTarget     = newTarget;
                _lastDamageType = damageType;

                return(newTarget);
            }

            if (_lastTarget.IsValidTarget(range) && damageType == _lastDamageType)
            {
                return(_lastTarget);
            }

            var newTarget2 = TargetSelector.GetTarget(range, damageType, ignoreShield, ignoredChamps, rangeCheckFrom);

            _lastTarget     = newTarget2;
            _lastDamageType = damageType;

            return(newTarget2);
        }
Esempio n. 3
0
 public static Obj_AI_Hero GetTarget(float range,
                                     LeagueSharp.Common.TargetSelector.DamageType damageType,
                                     bool ignoreShield,
                                     IEnumerable <Obj_AI_Hero> ignoredChamps = null,
                                     Vector3?rangeCheckFrom = null)
 {
     return(GetTarget(range, Utils.ConvertDamageType(damageType), ignoreShield, ignoredChamps, rangeCheckFrom));
 }
Esempio n. 4
0
 public static Obj_AI_Hero GetTarget(float range,
                                     DamageType damageType,
                                     bool ignoreShield = true,
                                     IEnumerable <Obj_AI_Hero> ignoredChamps = null,
                                     Vector3?rangeCheckFrom = null)
 {
     return(GetTarget(ObjectManager.Player, range, damageType, ignoreShield, ignoredChamps, rangeCheckFrom));
 }
Esempio n. 5
0
 internal static DamageType ConvertDamageType(LeagueSharp.Common.TargetSelector.DamageType damageType)
 {
     return(damageType == LeagueSharp.Common.TargetSelector.DamageType.True
         ? DamageType.True
         : (damageType == LeagueSharp.Common.TargetSelector.DamageType.Physical
             ? DamageType.Physical
             : (damageType == LeagueSharp.Common.TargetSelector.DamageType.Magical
                 ? DamageType.Magical
                 : DamageType.Mixed)));
 }
Esempio n. 6
0
 public static AIHeroClient GetTarget(Obj_AI_Base champion,
                                      float range,
                                      LeagueSharp.Common.TargetSelector.DamageType type,
                                      bool ignoreShieldSpells,
                                      IEnumerable <AIHeroClient> ignoredChamps = null,
                                      Vector3?rangeCheckFrom = null)
 {
     return(GetTarget(
                champion, range, Utils.ConvertDamageType(type), ignoreShieldSpells, ignoredChamps, rangeCheckFrom));
 }
Esempio n. 7
0
 private static bool IsValidTarget(Obj_AI_Base target,
                                   float range,
                                   DamageType damageType,
                                   bool ignoreShieldSpells = true,
                                   Vector3?rangeCheckFrom  = null)
 {
     return(target.IsValidTarget() &&
            target.Distance(rangeCheckFrom ?? ObjectManager.Player.ServerPosition, true) <
            Math.Pow(range <= 0 ? Orbwalking.GetRealAutoAttackRange(target) : range, 2) &&
            !IsInvulnerable(target, damageType, ignoreShieldSpells));
 }
Esempio n. 8
0
        public static AIHeroClient GetTarget(float range, LeagueSharp.Common.TargetSelector.DamageType dmgType = LeagueSharp.Common.TargetSelector.DamageType.Physical, Vector3?_from = null)
        {
            Vector3 from = _from.HasValue ? _from.Value : ObjectManager.Player.ServerPosition;

            //if (s_LastTarget == null || !s_LastTarget.IsValidTarget(range) || Utils.TickCount - s_LastTargetSent > 250)
            //{
            //    var t = GetNewTarget(range, dmgType, from);
            //    s_LastTarget = t;
            //    s_LastTargetSent = Utils.TickCount;
            //}
            return(GetNewTarget(range, dmgType, from));
        }
Esempio n. 9
0
        public static void CastBasicSkillShot(Spell spell, float range, LeagueSharp.Common.TargetSelector.DamageType type, HitChance hitChance)
        {
            var target = LeagueSharp.Common.TargetSelector.GetTarget(range, type);

            if (target == null || !spell.IsReady())
            {
                return;
            }
            spell.UpdateSourcePosition();
            if (spell.GetPrediction(target).Hitchance >= hitChance)
            {
                spell.Cast(target, packets());
            }
        }
Esempio n. 10
0
        public static bool IsInvulnerable(Obj_AI_Base target, DamageType damageType, bool ignoreShields = true)
        {
            // Tryndamere's Undying Rage (R)
            if (!damageType.Equals(DamageType.True) && target.HasBuff("Undying Rage") && target.Health <= 2f)
            {
                return(true);
            }

            // Kayle's Intervention (R)
            if (target.HasBuff("JudicatorIntervention"))
            {
                return(true);
            }

            if (ignoreShields)
            {
                return(false);
            }

            // Morgana's Black Shield (E)
            if (damageType.Equals(DamageType.Magical) && target.HasBuff("BlackShield"))
            {
                return(true);
            }

            // Banshee's Veil (PASSIVE)
            if (damageType.Equals(DamageType.Magical) && target.HasBuff("BansheesVeil"))
            {
                // TODO: Get exact Banshee's Veil buff name.
                return(true);
            }

            // Sivir's Spell Shield (E)
            if (damageType.Equals(DamageType.Magical) && target.HasBuff("SivirShield"))
            {
                // TODO: Get exact Sivir's Spell Shield buff name
                return(true);
            }

            // Nocturne's Shroud of Darkness (W)
            if (damageType.Equals(DamageType.Magical) && target.HasBuff("ShroudofDarkness"))
            {
                // TODO: Get exact Nocturne's Shourd of Darkness buff name
                return(true);
            }

            return(false);
        }
Esempio n. 11
0
        public static Obj_AI_Hero GetTarget(float range, LeagueSharp.Common.TargetSelector.DamageType dmgType = LeagueSharp.Common.TargetSelector.DamageType.Physical, Vector3?_from = null)
        {
            Vector3 from = _from.HasValue ? _from.Value : ObjectManager.Player.ServerPosition;

            if (s_LastTarget == null)
            {
                var t = GetNewTarget(range, dmgType, from);
                s_LastTarget = t;
            }
            else
            {
                if (s_LastTarget.IsValidTarget(range) && Utils.TickCount - s_LastTargetSent > 250)
                {
                    s_LastTarget = GetNewTarget(range, dmgType, from);
                }
                else if (!s_LastTarget.IsValidTarget(range))
                {
                    s_LastTarget = GetNewTarget(range, dmgType, from);
                }
            }
            s_LastTargetSent = Utils.TickCount;
            return(s_LastTarget);
        }
Esempio n. 12
0
        public static AIHeroClient GetTarget(float vDefaultRange = 0,
                                             LeagueSharp.Common.TargetSelector.DamageType vDefaultDamageType = LeagueSharp.Common.TargetSelector.DamageType.Physical,
                                             IEnumerable <AIHeroClient> ignoredChamps = null)
        {
            //if (Selector != TargetSelect.Shen)
            //{
            //    return TargetSelector.GetTarget(vDefaultRange, vDefaultDamageType);
            //}

            vDefaultRange = Math.Abs(vDefaultRange) < 0.00001
                ? Shen.Champion.PlayerSpells.Q.Range
                : LocalMenu.Item("ModeSelector.Range").GetValue <Slider>().Value;

            if (ignoredChamps == null)
            {
                ignoredChamps = new List <AIHeroClient>();
            }

            var vEnemy =
                HeroManager.Enemies.FindAll(hero => ignoredChamps.All(ignored => ignored.NetworkId != hero.NetworkId))
                .Where(e => e.IsValidTarget(vDefaultRange))
                .Where(e => LocalMenu.Item("enemy_" + e.ChampionName) != null)
                .Where(e => LocalMenu.Item("enemy_" + e.ChampionName).GetValue <bool>())
                .Where(e => ObjectManager.Player.Distance(e) < vDefaultRange);

            if (LocalMenu.Item("Set").GetValue <StringList>().SelectedIndex == 1)
            {
                vEnemy = (from vEn in vEnemy select vEn).OrderByDescending(vEn => vEn.MaxHealth);
            }

            var objAiHeroes = vEnemy as AIHeroClient[] ?? vEnemy.ToArray();

            var t = !objAiHeroes.Any() ? LeagueSharp.Common.TargetSelector.GetTarget(vDefaultRange, vDefaultDamageType) : objAiHeroes[0];

            return(t);
        }
Esempio n. 13
0
 public static Obj_AI_Hero GetTarget(float range,
     DamageType damageType,
     bool ignoreShield = true,
     IEnumerable<Obj_AI_Hero> ignoredChamps = null,
     Vector3? rangeCheckFrom = null)
 {
     return GetTarget(ObjectManager.Player, range, damageType, ignoreShield, ignoredChamps, rangeCheckFrom);
 }
Esempio n. 14
0
        public static Obj_AI_Hero GetTarget(Obj_AI_Base champion,
                                            float range,
                                            DamageType type,
                                            bool ignoreShieldSpells = true,
                                            IEnumerable <Obj_AI_Hero> ignoredChamps = null,
                                            Vector3?rangeCheckFrom = null)
        {
            try
            {
                if (ignoredChamps == null)
                {
                    ignoredChamps = new List <Obj_AI_Hero>();
                }

                var damageType = (Damage.DamageType)Enum.Parse(typeof(Damage.DamageType), type.ToString());

                if (_configMenu != null && IsValidTarget(
                        SelectedTarget, _configMenu.Item("ForceFocusSelected").GetValue <bool>() ? float.MaxValue : range,
                        type, ignoreShieldSpells, rangeCheckFrom))
                {
                    return(SelectedTarget);
                }

                if (_configMenu != null && _configMenu.Item("TargetingMode") != null &&
                    Mode == TargetingMode.AutoPriority)
                {
                    var menuItem = _configMenu.Item("TargetingMode").GetValue <StringList>();
                    Enum.TryParse(menuItem.SList[menuItem.SelectedIndex], out Mode);
                }

                var targets =
                    HeroManager.Enemies
                    .FindAll(
                        hero => !IsInvulnerable(hero, type) &&
                        ignoredChamps.All(ignored => ignored.NetworkId != hero.NetworkId) &&
                        IsValidTarget(hero, range, type, ignoreShieldSpells, rangeCheckFrom));

                switch (Mode)
                {
                case TargetingMode.LowHP:
                    return(targets.MinOrDefault(hero => hero.Health));

                case TargetingMode.MostAD:
                    return(targets.MaxOrDefault(hero => hero.BaseAttackDamage + hero.FlatPhysicalDamageMod));

                case TargetingMode.MostAP:
                    return(targets.MaxOrDefault(hero => hero.BaseAbilityDamage + hero.FlatMagicDamageMod));

                case TargetingMode.Closest:
                    return
                        (targets.MinOrDefault(
                             hero =>
                             (rangeCheckFrom.HasValue ? rangeCheckFrom.Value : champion.ServerPosition).Distance(
                                 hero.ServerPosition, true)));

                case TargetingMode.NearMouse:
                    return(targets.Find(hero => hero.Distance(Game.CursorPos, true) < 22500));    // 150 * 150

                case TargetingMode.AutoPriority:
                    return(ObjectManager.Player.BaseSkinName == "Vayne"
                            ? (targets.FirstOrDefault(h => h.Health <
                                                      ObjectManager.Player.GetAutoAttackDamage(h) * 3 +
                                                      ObjectManager.Player.GetSpellDamage(h, LeagueSharp.SpellSlot.W)) ??
                               (ChallengerPlugin.ComboMenu.Item("FocusTwoW").GetValue <bool>()
                                   ? targets.FirstOrDefault(h => h.VayneWStacks() == 2)
                                   : null) ?? targets.MaxOrDefault(
                                   hero =>
                                   (champion.CalcDamage(hero, damageType, 100) / (1 + hero.Health)) *
                                   GetPriority(hero)))
                            : targets.MaxOrDefault(hero =>
                                                   (champion.CalcDamage(hero, damageType, 100) / (1 + hero.Health)) *
                                                   GetPriority(hero)));

                case TargetingMode.LessAttack:
                    return
                        (targets.MaxOrDefault(
                             hero =>
                             champion.CalcDamage(hero, Damage.DamageType.Physical, 100) / (1 + hero.Health) *
                             GetPriority(hero)));

                case TargetingMode.LessCast:
                    return
                        (targets.MaxOrDefault(
                             hero =>
                             champion.CalcDamage(hero, Damage.DamageType.Magical, 100) / (1 + hero.Health) *
                             GetPriority(hero)));
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }

            return(null);
        }
Esempio n. 15
0
        public static Obj_AI_Hero GetTarget(Obj_AI_Base champion,
            float range,
            DamageType type,
            bool ignoreShieldSpells = true,
            IEnumerable<Obj_AI_Hero> ignoredChamps = null,
            Vector3? rangeCheckFrom = null)
        {
            try
            {
                if (ignoredChamps == null)
                {
                    ignoredChamps = new List<Obj_AI_Hero>();
                }

                var damageType = (Damage.DamageType)Enum.Parse(typeof(Damage.DamageType), type.ToString());

                if (_configMenu != null && IsValidTarget(
                    SelectedTarget, _configMenu.Item("ForceFocusSelected").GetValue<bool>() ? float.MaxValue : range,
                    type, ignoreShieldSpells, rangeCheckFrom))
                {
                    return SelectedTarget;
                }

                if (_configMenu != null && _configMenu.Item("TargetingMode") != null &&
                    Mode == TargetingMode.AutoPriority)
                {
                    var menuItem = _configMenu.Item("TargetingMode").GetValue<StringList>();
                    Enum.TryParse(menuItem.SList[menuItem.SelectedIndex], out Mode);
                }

                var targets =
                    HeroManager.Enemies
                        .FindAll(
                            hero => !IsInvulnerable(hero, type) &&
                                ignoredChamps.All(ignored => ignored.NetworkId != hero.NetworkId) &&
                                IsValidTarget(hero, range, type, ignoreShieldSpells, rangeCheckFrom));

                switch (Mode)
                {
                    case TargetingMode.LowHP:
                        return targets.MinOrDefault(hero => hero.Health);

                    case TargetingMode.MostAD:
                        return targets.MaxOrDefault(hero => hero.BaseAttackDamage + hero.FlatPhysicalDamageMod);

                    case TargetingMode.MostAP:
                        return targets.MaxOrDefault(hero => hero.BaseAbilityDamage + hero.FlatMagicDamageMod);

                    case TargetingMode.Closest:
                        return
                            targets.MinOrDefault(
                                hero =>
                                    (rangeCheckFrom.HasValue ? rangeCheckFrom.Value : champion.ServerPosition).Distance(
                                        hero.ServerPosition, true));

                    case TargetingMode.NearMouse:
                        return targets.Find(hero => hero.Distance(Game.CursorPos, true) < 22500); // 150 * 150

                    case TargetingMode.AutoPriority:
                        return ObjectManager.Player.BaseSkinName == "Vayne"
                            ? (targets.FirstOrDefault(h =>h.Health <
                                    ObjectManager.Player.GetAutoAttackDamage(h)*3 +
                                    ObjectManager.Player.GetSpellDamage(h, LeagueSharp.SpellSlot.W)) ??
                               (ChallengerPlugin.ComboMenu.Item("FocusTwoW").GetValue<bool>()
                                   ? targets.FirstOrDefault(h => h.VayneWStacks() == 2)
                                   : null) ?? targets.MaxOrDefault(
                                       hero =>
                                           (champion.CalcDamage(hero, damageType, 100)/(1 + hero.Health))*
                                           GetPriority(hero)))
                            : targets.MaxOrDefault(hero =>
                                    (champion.CalcDamage(hero, damageType, 100)/(1 + hero.Health))*
                                    GetPriority(hero));

                    case TargetingMode.LessAttack:
                        return
                            targets.MaxOrDefault(
                                hero =>
                                    champion.CalcDamage(hero, Damage.DamageType.Physical, 100) / (1 + hero.Health) *
                                    GetPriority(hero));

                    case TargetingMode.LessCast:
                        return
                            targets.MaxOrDefault(
                                hero =>
                                    champion.CalcDamage(hero, Damage.DamageType.Magical, 100) / (1 + hero.Health) *
                                    GetPriority(hero));
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }

            return null;
        }
Esempio n. 16
0
 public static bool IsInvulnerable(Obj_AI_Base target,
                                   LeagueSharp.Common.TargetSelector.DamageType damageType,
                                   bool ignoreShields = true)
 {
     return(IsInvulnerable(target, Utils.ConvertDamageType(damageType), ignoreShields));
 }
Esempio n. 17
0
        public static bool IsInvulnerable(Obj_AI_Base target, DamageType damageType, bool ignoreShields = true)
        {
            // Tryndamere's Undying Rage (R)
            if (!damageType.Equals(DamageType.True) && target.HasBuff("Undying Rage") && target.Health <= 2f)
            {
                return true;
            }

            // Kayle's Intervention (R)
            if (target.HasBuff("JudicatorIntervention"))
            {
                return true;
            }

            if (ignoreShields)
            {
                return false;
            }

            // Morgana's Black Shield (E)
            if (damageType.Equals(DamageType.Magical) && target.HasBuff("BlackShield"))
            {
                return true;
            }

            // Banshee's Veil (PASSIVE)
            if (damageType.Equals(DamageType.Magical) && target.HasBuff("BansheesVeil"))
            {
                // TODO: Get exact Banshee's Veil buff name.
                return true;
            }

            // Sivir's Spell Shield (E)
            if (damageType.Equals(DamageType.Magical) && target.HasBuff("SivirShield"))
            {
                // TODO: Get exact Sivir's Spell Shield buff name
                return true;
            }

            // Nocturne's Shroud of Darkness (W)
            if (damageType.Equals(DamageType.Magical) && target.HasBuff("ShroudofDarkness"))
            {
                // TODO: Get exact Nocturne's Shourd of Darkness buff name
                return true;
            }

            return false;
        }
Esempio n. 18
0
        private static AIHeroClient GetNewTarget(float range, LeagueSharp.Common.TargetSelector.DamageType dmgType = LeagueSharp.Common.TargetSelector.DamageType.Physical, Vector3?_from = null)
        {
            if (range == -1)
            {
                range = Orbwalking.Utility.GetAARange();
            }

            if (ConfigMenu.OnlyAttackSelected)
            {
                if (s_SelectedTarget != null)
                {
                    if (s_SelectedTarget.IsValidTarget(range))
                    {
                        return(s_SelectedTarget);
                    }
                    else if (s_SelectedTarget.IsValidTarget())
                    {
                        return(null);
                    }
                }
            }

            if (ConfigMenu.FocusSelected)
            {
                if (s_SelectedTarget != null)
                {
                    if (s_SelectedTarget.IsValidTarget(range))
                    {
                        return(s_SelectedTarget);
                    }
                    else if (ConfigMenu.FocusExtraRange > 0 && s_SelectedTarget.IsValidTarget(range + ConfigMenu.FocusExtraRange))
                    {
                        return(null);
                    }
                }
            }
            Vector3 from = _from.HasValue ? _from.Value : ObjectManager.Player.ServerPosition;

            var enemies = HeroManager.Enemies.Where(p => p.IsValidTarget(range + p.BoundingRadius, true, from) && !LeagueSharp.Common.TargetSelector.IsInvulnerable(p, dmgType));

            if (enemies.Count() == 0)
            {
                return(null);
            }

            switch ((Mode)ConfigMenu.TargettingMode)
            {
            case Mode.LowHP:
                return(enemies.MinOrDefault(hero => hero.Health));

            case Mode.MostAD:
                return(enemies.MaxOrDefault(hero => hero.BaseAttackDamage + hero.FlatPhysicalDamageMod));

            case Mode.MostAP:
                return(enemies.MaxOrDefault(hero => hero.BaseAbilityDamage + hero.FlatMagicDamageMod));

            case Mode.Closest:
                return
                    (enemies.MinOrDefault(
                         hero =>
                         (_from.HasValue ? _from.Value : ObjectManager.Player.ServerPosition).Distance(
                             hero.ServerPosition, true)));

            case Mode.NearMouse:
                return(enemies.Find(hero => hero.Distance(Game.CursorPos, true) < 22500));    // 150 * 150

            case Mode.LessAttack:
                return
                    (enemies.MaxOrDefault(
                         hero =>
                         ObjectManager.Player.CalcDamage(hero, LeagueSharp.Common.Damage.DamageType.Physical, 100) / (1 + hero.Health) *
                         GetPriority(hero)));

            case Mode.LessCast:
                return
                    (enemies.MaxOrDefault(
                         hero =>
                         ObjectManager.Player.CalcDamage(hero, LeagueSharp.Common.Damage.DamageType.Magical, 100) / (1 + hero.Health) *
                         GetPriority(hero)));

            case Mode.Auto:
            {
                var killableWithAA = enemies.Where(p => p.Health <= Damage.AutoAttack.GetDamage(p, true)).FirstOrDefault();
                if (killableWithAA != null)
                {
                    return(killableWithAA);
                }

                var possibleTargets = enemies.OrderByDescending(q => GetPriority(q));
                if (possibleTargets.Count() == 1)
                {
                    return(possibleTargets.First());
                }
                else if (possibleTargets.Count() > 1)
                {
                    var killableTarget = possibleTargets.OrderByDescending(p => GetTotalADAPMultipler(p)).FirstOrDefault(q => GetHealthMultipler(q) >= 10);
                    if (killableTarget != null)
                    {
                        return(killableTarget);
                    }

                    var          targets              = possibleTargets.OrderBy(p => ObjectManager.Player.Distance(p.ServerPosition));
                    AIHeroClient mostImportant        = null;
                    double       mostImportantsDamage = 0;
                    foreach (var target in targets)
                    {
                        double dmg = target.CalcDamage(ObjectManager.Player, LeagueSharp.Common.Damage.DamageType.Physical, 100) + target.CalcDamage(ObjectManager.Player, LeagueSharp.Common.Damage.DamageType.Magical, 100);
                        if (mostImportant == null)
                        {
                            mostImportant        = target;
                            mostImportantsDamage = dmg;
                        }
                        else
                        {
                            if (Orbwalking.Utility.InAARange(ObjectManager.Player, target) && !Orbwalking.Utility.InAARange(ObjectManager.Player, mostImportant))
                            {
                                mostImportant        = target;
                                mostImportantsDamage = dmg;
                                continue;
                            }
                            else if ((Orbwalking.Utility.InAARange(ObjectManager.Player, target) && Orbwalking.Utility.InAARange(ObjectManager.Player, mostImportant)) || (!Orbwalking.Utility.InAARange(ObjectManager.Player, target) && !Orbwalking.Utility.InAARange(ObjectManager.Player, mostImportant)))
                            {
                                if (mostImportantsDamage < dmg / 2f)
                                {
                                    mostImportant        = target;
                                    mostImportantsDamage = dmg;
                                    continue;
                                }

                                if ((mostImportant.IsMelee && !target.IsMelee) || (!mostImportant.IsMelee && target.IsMelee))
                                {
                                    float targetMultp         = GetHealthMultipler(target);
                                    float mostImportantsMultp = GetHealthMultipler(mostImportant);
                                    if (mostImportantsMultp < targetMultp)
                                    {
                                        mostImportant        = target;
                                        mostImportantsDamage = dmg;
                                        continue;
                                    }
                                }
                            }
                        }
                    }
                    return(mostImportant);
                }
                return(null);
            }

            case Mode.MostStack:
                return(enemies.OrderByDescending(hero =>
                                                 hero.Buffs.Where(x => StackNames.Contains(x.Name.ToLower()))
                                                 .Sum(buff => buff.Count)).ThenByDescending(hero2 => ObjectManager.Player.CalcDamage(hero2, LeagueSharp.Common.Damage.DamageType.Physical, 100) / (1 + hero2.Health) * GetPriority(hero2)).FirstOrDefault());
            }

            return(null);
        }
Esempio n. 19
0
 private static bool IsValidTarget(Obj_AI_Base target,
     float range,
     DamageType damageType,
     bool ignoreShieldSpells = true,
     Vector3? rangeCheckFrom = null)
 {
     return target.IsValidTarget() &&
            target.Distance(rangeCheckFrom ?? ObjectManager.Player.ServerPosition, true) <
            Math.Pow(range <= 0 ? Orbwalking.GetRealAutoAttackRange(target) : range, 2) &&
            !IsInvulnerable(target, damageType, ignoreShieldSpells);
 }