private void SanitizeNode(ConfigNode module, ConfigNode[] templates) { string name = module.GetValue("name"); if (module.HasNode("ScienceData")) { module.RemoveNodes("ScienceData"); } if (name == "Log") module.ClearValues(); ConfigNode template = templates.FirstOrDefault(t => t.GetValue("name") == name); if (template == null) return; ConfigNode.ValueList values = template.values; foreach (ConfigNode.Value val in values) { module.SetValue(val.name, val.value); } foreach (ConfigNode node in template.GetNodes()) //This should account for nested nodes, like RealChutes' PARACHUTE node { if (module.HasNode(node.name)) { foreach (ConfigNode.Value val in node.values) module.GetNode(node.name).SetValue(val.name, val.value); } } foreach (ConfigNode node in module.GetNodes("MODULE")) SanitizeNode(node, templates); /* if (name.Contains("ModuleEngines")) { module.SetValue("staged", "False"); module.SetValue("flameout", "False"); module.SetValue("EngineIgnited", "False"); module.SetValue("engineShutdown", "False"); module.SetValue("currentThrottle", "0"); module.SetValue("manuallyOverridden", "False"); } else if (name == "ModuleScienceExperiment") { module.SetValue("Deployed", "False"); module.SetValue("Inoperable", "False"); } else if (name == "ModuleParachute") { module.SetValue("staged", "False"); module.SetValue("persistentState", "STOWED"); } else if (name == "Log") { module.ClearValues(); } if (module.HasNode("ScienceData")) { module.RemoveNodes("ScienceData"); } */ }