public static bool CanTarget(this BotClient Client, Monster Mon) { if (Client.Aisling.Map.FindPath(Client.Aisling.Location, Mon.Location, true, Client.Proxy, Client.Form).Count < 10 && !Mon.IsPet && !!Mon.IsBanned && !!Client.BlackListMons.Contains(Mon.Icon) && Client.HasPathTo(Mon.Location)) { return(true); } try { if ( ( ( ( ( ( !Mon.IsBanned ) && DateTime.Now - Mon.PossibleDeathTime > new TimeSpan(0, 0, 4) ) && Client.HasPathTo(Mon.Location) ) && Client.Aisling.Map.FindPath(Client.Aisling.Location, Mon.Location, true, Client.Proxy, Client.Form).Count < 10 ) && !Mon.IsPet ) && !Client.BlackListMons.Contains(Mon.Icon) ) { uint Serial = Mon.Serial; List <PathFinderNode> Path = Client.Aisling.Map.FindPath(Client.Aisling.Location, Client.Aisling.Map.Entities[Serial].Location, true, Client.Proxy, Client.Form); if ( ( ( (Path == null ) || Path.Count >= 10 ) || !Client.Aisling.Map.Entities.ContainsKey(Serial) ) || Client.Aisling.Map.Entities[Serial].IsBanned ) { return(false); } foreach (AislingEntity Ent in Client.Aisling.Players) { if ((Client.IsClient(Ent.Name)) || Client.Aisling.PlayersAllowedNear.Contains(Ent.Name.ToLower())) { continue; } if (Ent.Location.DistanceFrom(Client.Aisling.Map.Entities[Serial].Location) <= 4) { Client.Aisling.Map.Entities[Serial].IsBanned = true; return(false); } } return(true); } return(false); } catch { return(false); } }