예제 #1
0
        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);
        }