public static List <Ship> FindShips(List <long> ShipIds, long GroupId, List <long> Exceptions) { List <Ship> Ships = new List <Ship>(); if (ShipIds.Count != 0) { foreach (long id in ShipIds) { Ship ship = Program.AllShips.Find(e => e.ID == id); Ships.Add(ship); } } else if (GroupId != 0) { string groupSelection = Consumable.GetConsumableInfoByGroupId(GroupId); List <Ship> subsetShips = getShipsFromGroupSelection(groupSelection); if (subsetShips.Count > 0) { Ships.AddRange(subsetShips); } } if (Exceptions.Count > 0) { foreach (long shipId in Exceptions) { Ship ship = Ships.Find(e => e.ID == shipId); if (ship != null) { Ships.Remove(ship); } } } return(Ships); }