public static List<Obj_AI_Minion> GetMinions(Vector3 from, float range, MinionTypes type = MinionTypes.All, MinionTeam team = MinionTeam.Enemy, MinionOrderTypes order = MinionOrderTypes.Health) { var result = from minion in ObjectManager.Get<Obj_AI_Minion>() where minion.IsValidTarget(range, false, @from) let minionTeam = minion.Team where (team == MinionTeam.Neutral && minionTeam == GameObjectTeam.Neutral) || (team == MinionTeam.Ally && minionTeam == (myHero.Team == GameObjectTeam.Chaos ? GameObjectTeam.Chaos : GameObjectTeam.Order)) || (team == MinionTeam.Enemy && minionTeam == (myHero.Team == GameObjectTeam.Chaos ? GameObjectTeam.Order : GameObjectTeam.Chaos)) || (team == MinionTeam.NotAlly && minionTeam != myHero.Team) || (team == MinionTeam.NotAllyForEnemy && (minionTeam == myHero.Team || minionTeam == GameObjectTeam.Neutral)) || team == MinionTeam.All where (minion.IsMelee() && type == MinionTypes.Melee) || (!minion.IsMelee() && type == MinionTypes.Ranged) || type == MinionTypes.All where MinionManager.IsMinion(minion) || minionTeam == GameObjectTeam.Neutral || IsPet(minion) select minion; switch (order) { case MinionOrderTypes.Health: result = result.OrderBy(i => i.Health); break; case MinionOrderTypes.MaxHealth: result = result.OrderBy(i => i.MaxHealth).Reverse(); break; } return result.ToList(); }
public static Tuple<bool, Obj_AI_Base> IsCanLastHit(Vector3 from, float range, MinionTypes _MinionType, MinionTeam _MinionTeam, MinionOrderTypes _MinionOrderType, bool _IsRanged) { bool result = false; Obj_AI_Base target = null; if (HasTargonItem && !player.IsDead && player.Buffs.Any(x => x.Count > 0 && x.Name == "talentreaperdisplay") && IsAllyInRange(1500)) { var minions = MinionManager.GetMinions(from, range, _MinionType, _MinionTeam, _MinionOrderType); var itemNum = player.InventoryItems.Any(x => x.Id == ItemId.Face_of_the_Mountain || x.Id == ItemId.Relic_Shield || x.Id == ItemId.Targons_Brace); foreach(var minion in minions) { var a = player.Buffs.Any(x => x.DisplayName.Contains("ThreshPassiveSoulsGain")) ? player.Buffs.Find(x => x.DisplayName.Contains("ThreshPassiveSoulsGain")).Count : 0; var dmg = _IsRanged ? player.GetAutoAttackDamage(minion) + a : GetItemDmg(); if (minion.Health < dmg && player.CanAttack && Orbwalking.InAutoAttackRange(minion)) { result = true; target = minion; } } } return new Tuple<bool, Obj_AI_Base>(result, target); }
public static List<Obj_AI_Base> GetMinions(float range, MinionTypes type = MinionTypes.All, MinionTeam team = MinionTeam.Enemy, MinionOrderTypes order = MinionOrderTypes.Health) { return GetMinions(ObjectManager.Player.ServerPosition, range, type, team, order); }
/// <summary> /// Returns the minions in range from From. /// </summary> public static List<Obj_AI_Base> GetMinions(Vector3 from, float range, MinionTypes type = MinionTypes.All, MinionTeam team = MinionTeam.Enemy, MinionOrderTypes order = MinionOrderTypes.Health) { var result = new List<Obj_AI_Base>(); foreach (var minion in ObjectManager.Get<Obj_AI_Minion>()) { if (minion.IsValidTarget(range, false)) { if (team == MinionTeam.Neutral && minion.Team == GameObjectTeam.Neutral || team == MinionTeam.Ally && minion.Team == (ObjectManager.Player.Team == GameObjectTeam.Chaos ? GameObjectTeam.Chaos : GameObjectTeam.Order) || team == MinionTeam.Enemy && minion.Team == (ObjectManager.Player.Team == GameObjectTeam.Chaos ? GameObjectTeam.Order : GameObjectTeam.Chaos) || team == MinionTeam.NotAlly && minion.Team != ObjectManager.Player.Team || team == MinionTeam.NotAllyForEnemy && (minion.Team == ObjectManager.Player.Team || minion.Team == GameObjectTeam.Neutral) || team == MinionTeam.All) { if (minion.IsMelee() && type == MinionTypes.Melee || !minion.IsMelee() && type == MinionTypes.Ranged || type == MinionTypes.All) { result.Add(minion); } } } } if (order == MinionOrderTypes.Health) { result = result.OrderBy(o => o.Health).ToList(); } else if (order == MinionOrderTypes.MaxHealth) { result = result.OrderBy(o => o.MaxHealth).Reverse().ToList(); } return result; }
public static List<Obj_AI_Base> GetMinions(Vector3 from, float range = float.MaxValue, MinionTeam team = MinionTeam.Enemy) { if (team == MinionTeam.Enemy) { return MinionsListEnemy.FindAll(minion => CanReturn(minion, from, range)); } if (team == MinionTeam.Ally) { return MinionsListAlly.FindAll(minion => CanReturn(minion, @from, range)); } if (team == MinionTeam.Neutral) { return MinionsListNeutral.Where(minion => CanReturn(minion, @from, range)) .OrderByDescending(minion => minion.MaxHealth) .ToList(); } return AllMinionsObj.FindAll(minion => CanReturn(minion, @from, range)); }
/// <summary> /// Returns the minions in range from From. /// </summary> public static List<Obj_AI_Base> GetMinions(Vector3 from, float range, MinionTypes type = MinionTypes.All, MinionTeam team = MinionTeam.Enemy, MinionOrderTypes order = MinionOrderTypes.Health) { var result = (from minion in GameObjects.Minions.Concat(GameObjects.Jungle) where minion.IsValidTarget(range, false, @from) let minionTeam = minion.Team where team == MinionTeam.Neutral && minionTeam == GameObjectTeam.Neutral || team == MinionTeam.Ally && minionTeam == (ObjectManager.Player.Team == GameObjectTeam.Chaos ? GameObjectTeam.Chaos : GameObjectTeam.Order) || team == MinionTeam.Enemy && minionTeam == (ObjectManager.Player.Team == GameObjectTeam.Chaos ? GameObjectTeam.Order : GameObjectTeam.Chaos) || team == MinionTeam.NotAlly && minionTeam != ObjectManager.Player.Team || team == MinionTeam.NotAllyForEnemy && (minionTeam == ObjectManager.Player.Team || minionTeam == GameObjectTeam.Neutral) || team == MinionTeam.All where minion.IsMelee() && type == MinionTypes.Melee || !minion.IsMelee() && type == MinionTypes.Ranged || type == MinionTypes.All where IsMinion(minion) || minionTeam == GameObjectTeam.Neutral select minion).Select(m => m as Obj_AI_Base).ToList(); switch (order) { case MinionOrderTypes.Health: result = result.OrderBy(o => o.Health).ToList(); break; case MinionOrderTypes.MaxHealth: result = result.OrderBy(o => o.MaxHealth).Reverse().ToList(); break; } return result; }
public void Cast_onMinion_nearEnemy(Spell spell, float range, SimpleTs.DamageType damageType = SimpleTs.DamageType.Physical, MinionTypes minionTypes = MinionTypes.All, MinionTeam minionTeam = MinionTeam.All) { if(!spell.IsReady() || !ManaManagerAllowCast(spell)) return; var target = SimpleTs.GetTarget(spell.Range + range, damageType); Obj_AI_Base[] nearstMinion = { null }; var allminions = MinionManager.GetMinions(target.Position, range, minionTypes, minionTeam); foreach(var minion in allminions.Where(minion => minion.Distance(ObjectManager.Player) <= spell.Range && minion.Distance(target) <= range).Where(minion => nearstMinion[0] == null || nearstMinion[0].Distance(target) >= minion.Distance(target))) nearstMinion[0] = minion; if(nearstMinion[0] != null) spell.CastOnUnit(nearstMinion[0], Packets()); }
public static MinionManager.FarmLocation? GetFarmLocation(this Spell spell, MinionTeam team = MinionTeam.Enemy, List<Obj_AI_Base> targets = null) { // Get minions if not set if (targets == null) targets = MinionManager.GetMinions(spell.Range, MinionTypes.All, team, MinionOrderTypes.MaxHealth); // Validate if (!spell.IsSkillshot || targets.Count == 0) return null; // Predict minion positions var positions = MinionManager.GetMinionsPredictedPositions(targets, spell.Delay, spell.Width, spell.Speed, spell.From, spell.Range, spell.Collision, spell.Type); // Get best location to shoot for those positions var farmLocation = MinionManager.GetBestLineFarmLocation(positions, spell.Width, spell.Range); if (farmLocation.MinionsHit == 0) return null; return farmLocation; }
public static List<Obj_AI_Minion> GetMinions(float range, MinionTypes type = MinionTypes.All, MinionTeam team = MinionTeam.Enemy, MinionOrderTypes order = MinionOrderTypes.Health) { return GetMinions(myHero.ServerPosition, range, type, team, order); }
public static List<Obj_AI_Base> GetMinions(Vector3 from, float range, MinionTypes type = MinionTypes.All, MinionTeam team = MinionTeam.Enemy, MinionOrderTypes order = MinionOrderTypes.Health) { var result = (from minion in ObjectManager.Get<Obj_AI_Minion>() where minion.IsValidTarget(range, false, @from) let minionTeam = minion.Team where team == MinionTeam.Neutral && minionTeam == GameObjectTeam.Neutral || team == MinionTeam.Ally && minionTeam == (ObjectManager.Player.Team == GameObjectTeam.Chaos ? GameObjectTeam.Chaos : GameObjectTeam.Order) || team == MinionTeam.Enemy && minionTeam == (ObjectManager.Player.Team == GameObjectTeam.Chaos ? GameObjectTeam.Order : GameObjectTeam.Chaos) || team == MinionTeam.NotAlly && minionTeam != ObjectManager.Player.Team || team == MinionTeam.NotAllyForEnemy && (minionTeam == ObjectManager.Player.Team || minionTeam == GameObjectTeam.Neutral) || team == MinionTeam.All where !minion.IsRanged && type == MinionTypes.Melee || minion.IsRanged && type == MinionTypes.Ranged || type == MinionTypes.All where IsMinion(minion) || minionTeam == GameObjectTeam.Neutral && minion.MaxHealth > 5 && minion.IsHPBarRendered select minion).Cast<Obj_AI_Base>().ToList(); switch (order) { case MinionOrderTypes.Health: result = result.OrderBy(o => o.Health).ToList(); break; case MinionOrderTypes.MaxHealth: result = result.OrderByDescending(o => o.MaxHealth).ToList(); break; } return result; }