private static ConfigNode upgradeConfig(ConfigNode oldConfig) { var config = oldConfig.CreateCopy(); var depositSeed = int.Parse(config.GetValue("Seed")); config.RemoveValue("Seed"); foreach (var resourceNode in config.GetNodes("Resource")) { var resourceName = resourceNode.GetValue("Resource"); foreach (var bodyNode in resourceNode.GetNodes("Body")) { var bodySeed = 0; if (resourceName == "Kethane") { if (int.TryParse(bodyNode.GetValue("SeedModifier"), out bodySeed)) { bodyNode.RemoveValue("SeedModifier"); } else { bodySeed = bodyNode.GetValue("Name").GetHashCode(); } } var dataNode = bodyNode.AddNode("GeneratorData"); dataNode.AddValue("Seed", depositSeed ^ bodySeed ^ (resourceName == "Kethane" ? 0 : resourceName.GetHashCode())); foreach (var depositNode in bodyNode.GetNodes("Deposit")) { dataNode.AddValue("Deposit", depositNode.GetValue("Quantity")); } bodyNode.RemoveNodes("Deposit"); } } return config; }