public virtual bool Add(MeritBadge badge, bool forceElective = false) { int count = MeritBadges.Count; if (count < Total) { int req = MeritBadges.Count(mb => mb.EagleRequired); if (req > Required) { req = Required; } int ele = count - req; if ((badge.EagleRequired && (req < Required || forceElective)) || (!badge.EagleRequired && ele < Elective) ) { MeritBadges.Add(badge); return(true); } } return(false); }
public override bool Add(MeritBadge badge, bool forceElective = false) { if (badge.EagleRequired) { // (a) First Aid // (b) Citizenship in the Community // (c) Citizenship in the Nation // (d) Citizenship in the World // (e) Communication // (f) Cooking // (g) Personal Fitness // (h) Emergency Preparedness or Lifesaving if ((badge.Name == "Emergency Preparedness" && MeritBadges.Any(mb => mb.Name == "Lifesaving")) || (badge.Name == "Lifesaving" && MeritBadges.Any(mb => mb.Name == "Emergency Preparedness"))) { return(false); } // (i) Environmental Science or Sustainability if ((badge.Name == "Environmental Science" && MeritBadges.Any(mb => mb.Name == "Sustainability")) || (badge.Name == "Sustainability" && MeritBadges.Any(mb => mb.Name == "Environmental Science"))) { return(false); } // (j) Personal Management // (k) Swimming or Hiking or Cycling if ((badge.Name == "Swimming" && MeritBadges.Any(mb => mb.Name == "Hiking" || mb.Name == "Cycling")) || (badge.Name == "Hiking" && MeritBadges.Any(mb => mb.Name == "Swimming" || mb.Name == "Cycling")) || (badge.Name == "Cycling" && MeritBadges.Any(mb => mb.Name == "Swimming" || mb.Name == "Hiking"))) { return(false); } // (l) Camping // (m) Family Life } return(base.Add(badge, false)); }