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);
        }