public static List <Mobile> ApplyFilter(Filter filter) { List <Mobile> result = new List <Mobile>(); List <Assistant.Mobile> assistantMobiles = new List <Assistant.Mobile>(World.Mobiles.Values.ToList()); if (filter.Enabled) { if (filter.Serials.Count > 0) { assistantMobiles = assistantMobiles.Where((m) => filter.Serials.Contains((int)m.Serial.Value)).ToList(); } else { if (filter.Name != String.Empty) { Regex rgx = new Regex(filter.Name, RegexOptions.IgnoreCase); List <Assistant.Mobile> list = assistantMobiles.Where(i => rgx.IsMatch(i.Name)).ToList(); assistantMobiles = list; } if (filter.Bodies.Count > 0) { assistantMobiles = assistantMobiles.Where((m) => filter.Bodies.Contains(m.Body)).ToList(); } if (filter.Hues.Count > 0) { assistantMobiles = assistantMobiles.Where((i) => filter.Hues.Contains(i.Hue)).ToList(); } if (filter.RangeMin != -1) { assistantMobiles = assistantMobiles.Where((m) => Utility.Distance(World.Player.Position.X, World.Player.Position.Y, m.Position.X, m.Position.Y) >= filter.RangeMin ).ToList(); } if (filter.RangeMax != -1) { assistantMobiles = assistantMobiles.Where((m) => Utility.Distance(World.Player.Position.X, World.Player.Position.Y, m.Position.X, m.Position.Y) <= filter.RangeMax ).ToList(); } if (filter.Warmode != -1) { assistantMobiles = assistantMobiles.Where((m) => m.Warmode == Convert.ToBoolean(filter.Warmode)).ToList(); } if (filter.Poisoned != -1) { assistantMobiles = assistantMobiles.Where((m) => m.Poisoned == Convert.ToBoolean(filter.Poisoned)).ToList(); } if (filter.Blessed != -1) { assistantMobiles = assistantMobiles.Where((m) => m.Blessed == Convert.ToBoolean(filter.Blessed)).ToList(); } if (filter.IsHuman != -1) { assistantMobiles = assistantMobiles.Where((m) => m.IsHuman == Convert.ToBoolean(filter.IsHuman)).ToList(); } if (filter.IsGhost != -1) { assistantMobiles = assistantMobiles.Where((m) => m.IsGhost == Convert.ToBoolean(filter.IsGhost)).ToList(); } if (filter.Female != -1) { assistantMobiles = assistantMobiles.Where((m) => m.Female == Convert.ToBoolean(filter.Female)).ToList(); } if (filter.Friend != -1) { assistantMobiles = assistantMobiles.Where((m) => RazorEnhanced.Friend.IsFriend(m.Serial) == Convert.ToBoolean(filter.Friend)).ToList(); } if (filter.Paralized != -1) { assistantMobiles = assistantMobiles.Where((m) => m.Paralized == Convert.ToBoolean(filter.Paralized)).ToList(); } if (filter.Notorieties.Count > 0) { assistantMobiles = assistantMobiles.Where((m) => filter.Notorieties.Contains(m.Notoriety)).ToList(); } if (filter.CheckIgnoreObject) { assistantMobiles = assistantMobiles.Where((m) => Misc.CheckIgnoreObject(m.Serial) != true).ToList(); } // Esclude Self dalla ricerca assistantMobiles = assistantMobiles.Where((m) => m.Serial != World.Player.Serial).ToList(); } } foreach (Assistant.Mobile assistantMobile in assistantMobiles) { RazorEnhanced.Mobile enhancedMobile = new RazorEnhanced.Mobile(assistantMobile); result.Add(enhancedMobile); } return(result); }
public static List <Item> ApplyFilter(Filter filter) { List <Item> result = new List <Item>(); List <Assistant.Item> assistantItems = new List <Assistant.Item>(World.Items.Values.ToList()); try { if (filter.Enabled) { if (filter.Serials.Count > 0) { assistantItems = assistantItems.Where((i) => filter.Serials.Contains((int)i.Serial.Value)).ToList(); } else { if (filter.Name != String.Empty) { Regex rgx = new Regex(filter.Name, RegexOptions.IgnoreCase); List <Assistant.Item> list = new List <Assistant.Item>(); foreach (Assistant.Item i in assistantItems) { if (rgx.IsMatch(i.Name)) { list.Add(i); } } assistantItems = list; } if (filter.Graphics.Count > 0) { assistantItems = assistantItems.Where((i) => filter.Graphics.Contains(i.ItemID.Value)).ToList(); } if (filter.Hues.Count > 0) { assistantItems = assistantItems.Where((i) => filter.Hues.Contains(i.Hue)).ToList(); } if (filter.RangeMin != -1) { assistantItems = assistantItems.Where((i) => Utility.Distance(World.Player.Position.X, World.Player.Position.Y, i.Position.X, i.Position.Y) >= filter.RangeMin ).ToList(); } if (filter.RangeMax != -1) { assistantItems = assistantItems.Where((i) => Utility.Distance(World.Player.Position.X, World.Player.Position.Y, i.Position.X, i.Position.Y) <= filter.RangeMax ).ToList(); } if (filter.Movable >= 0) { assistantItems = assistantItems.Where((i) => i.Movable == (filter.Movable > 0)).ToList(); } if (filter.Layers.Count > 0) { List <Assistant.Layer> list = new List <Assistant.Layer>(); foreach (string text in filter.Layers) { Enum.TryParse <Layer>(text, out Layer l); if (l != Assistant.Layer.Invalid) { list.Add(l); } } assistantItems = assistantItems.Where((i) => list.Contains(i.Layer)).ToList(); } if (filter.OnGround != -1) { assistantItems = assistantItems.Where((i) => i.OnGround == Convert.ToBoolean(filter.OnGround)).ToList(); } if (filter.IsContainer != -1) { assistantItems = assistantItems.Where((i) => i.IsContainer == Convert.ToBoolean(filter.IsContainer)).ToList(); } if (filter.IsCorpse != -1) { assistantItems = assistantItems.Where((i) => i.IsCorpse == Convert.ToBoolean(filter.IsCorpse)).ToList(); } if (filter.CheckIgnoreObject) { assistantItems = assistantItems.Where((i) => Misc.CheckIgnoreObject(i.Serial) != true).ToList(); } } } } catch { } foreach (Assistant.Item assistantItem in assistantItems) { RazorEnhanced.Item enhancedItem = new RazorEnhanced.Item(assistantItem); result.Add(enhancedItem); } return(result); }