public override bool LoadFromConfig(ConfigNode configNode) { // Load base class bool valid = base.LoadFromConfig(configNode); // Check on active contracts too checkOnActiveContract = configNode.HasValue("checkOnActiveContract") ? checkOnActiveContract : true; valid &= ConfigNodeUtil.ParseValue <List <string> >(configNode, "tech", x => techs = x, this, new List <string>()); if (configNode.HasValue("part")) { List <AvailablePart> parts = new List <AvailablePart>(); valid &= ConfigNodeUtil.ParseValue <List <AvailablePart> >(configNode, "part", x => parts = x, this); foreach (AvailablePart part in parts) { techs.AddUnique(part.TechRequired); } } valid &= ConfigNodeUtil.ParseValue <List <string> >(configNode, "partModule", x => partModules = x, this, new List <string>(), x => x.All(Validation.ValidatePartModule)); valid &= ConfigNodeUtil.ParseValue <List <string> >(configNode, "partModuleType", x => partModuleTypes = x, this, new List <string>(), x => x.All(Validation.ValidatePartModuleType)); valid &= ConfigNodeUtil.OnlyOne(configNode, new string[] { "tech", "part", "partModule", "partModuleType" }, this); return(valid); }