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; }
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); }
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)); }
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)); }
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))); }
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)); }
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)); }
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)); }
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()); } }
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); }
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); }
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); }
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); }
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); }
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; }
public static bool IsInvulnerable(Obj_AI_Base target, LeagueSharp.Common.TargetSelector.DamageType damageType, bool ignoreShields = true) { return(IsInvulnerable(target, Utils.ConvertDamageType(damageType), ignoreShields)); }
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; }
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); }
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); }