public static List <CoverageFlags> ReductionOptions(this CoverageFlags value) { List <CoverageFlags> options = new List <CoverageFlags>(); if (value.GetTotalBitsSet() <= 1 || !value.IsBodyArmor() || value.IsRobe()) { options.Add(value); } else { if (value == (CoverageFlags.UpperArms | CoverageFlags.LowerArms)) { options.Add(CoverageFlags.UpperArms); options.Add(CoverageFlags.LowerArms); } else if (value == (CoverageFlags.UpperLegs | CoverageFlags.LowerLegs)) { options.Add(CoverageFlags.UpperLegs); options.Add(CoverageFlags.LowerLegs); } else if (value == (CoverageFlags.LowerLegs | CoverageFlags.Feet)) { options.Add(CoverageFlags.Feet); } else if (value == (CoverageFlags.Chest | CoverageFlags.Abdomen)) { options.Add(CoverageFlags.Chest); } else if (value == (CoverageFlags.Chest | CoverageFlags.Abdomen | CoverageFlags.UpperArms)) { options.Add(CoverageFlags.Chest); } else if (value == (CoverageFlags.Chest | CoverageFlags.UpperArms | CoverageFlags.LowerArms)) { options.Add(CoverageFlags.Chest); } else if (value == (CoverageFlags.Chest | CoverageFlags.UpperArms)) { options.Add(CoverageFlags.Chest); } else if (value == (CoverageFlags.Abdomen | CoverageFlags.UpperLegs | CoverageFlags.LowerLegs)) { options.Add(CoverageFlags.Abdomen); options.Add(CoverageFlags.UpperLegs); options.Add(CoverageFlags.LowerLegs); } else if (value == (CoverageFlags.Chest | CoverageFlags.Abdomen | CoverageFlags.UpperArms | CoverageFlags.LowerArms)) { options.Add(CoverageFlags.Chest); } else { throw new Exception("Unable to determine reduction paths for CoverageFlags of " + value); } } return(options); }
public static List <CoverageFlags> ReductionOptions(this CoverageFlags value) { List <CoverageFlags> options = new List <CoverageFlags>(); if (value.GetTotalBitsSet() <= 1 || !value.IsBodyArmor() || value.IsRobe()) { options.Add(value); } else { if (value == (CoverageFlags.UpperArms | CoverageFlags.LowerArms)) { options.Add(CoverageFlags.UpperArms); options.Add(CoverageFlags.LowerArms); } else if (value == (CoverageFlags.UpperLegs | CoverageFlags.LowerLegs)) { options.Add(CoverageFlags.UpperLegs); options.Add(CoverageFlags.LowerLegs); } else if (value == (CoverageFlags.LowerLegs | CoverageFlags.Feet)) { options.Add(CoverageFlags.Feet); } else if (value == (CoverageFlags.Chest | CoverageFlags.Abdomen)) { options.Add(CoverageFlags.Chest); } else if (value == (CoverageFlags.Chest | CoverageFlags.Abdomen | CoverageFlags.UpperArms)) { options.Add(CoverageFlags.Chest); } else if (value == (CoverageFlags.Chest | CoverageFlags.UpperArms | CoverageFlags.LowerArms)) { options.Add(CoverageFlags.Chest); } else if (value == (CoverageFlags.Chest | CoverageFlags.UpperArms)) { options.Add(CoverageFlags.Chest); } else if (value == (CoverageFlags.Abdomen | CoverageFlags.UpperLegs | CoverageFlags.LowerLegs)) { options.Add(CoverageFlags.Abdomen); options.Add(CoverageFlags.UpperLegs); options.Add(CoverageFlags.LowerLegs); } else if (value == (CoverageFlags.Chest | CoverageFlags.Abdomen | CoverageFlags.UpperArms | CoverageFlags.LowerArms)) { options.Add(CoverageFlags.Chest); } else if (value == (CoverageFlags.Abdomen | CoverageFlags.UpperLegs)) { // This is a emu piece that follows the pre-2010 retail guidelines // https://asheron.fandom.com/wiki/Announcements_-_2010/04_-_Shedding_Skin // For now, we assume only abdomen reduction options.Add(CoverageFlags.Abdomen); } else { throw new Exception("Unable to determine reduction paths for CoverageFlags of " + value); } } return(options); }