public static int UpdateGeneratorEfficiency(UpgradeConstants u_constants, Part part, PartStats original_stats, PartUpgrades upgrades_to_apply) { var generator = PartStats.GetModuleGenerator(part); if (generator) { foreach (var output_resource in generator.resHandler.outputResources) { if (!original_stats.generatorEfficiency.TryGetValue(output_resource.name, out var original_rate)) { continue; } output_resource.rate = u_constants.CalculateImprovementValue(original_rate, upgrades_to_apply.generatorEfficiency); } } var fission_generator = PartStats.GetFissionGenerator(part); if (fission_generator) { var power_generation = u_constants.CalculateImprovementValue(original_stats.fissionPowerGeneration, upgrades_to_apply.generatorEfficiency); PartStats.SetGenericModuleValue(fission_generator, "PowerGeneration", power_generation); } return(0); }