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); }
public static int UpdateElConverter(UpgradeConstants u_constants, Part part, PartStats original_stats, PartUpgrades upgrades_to_apply) { var converter_list = PartStats.GetModuleElConverterList(part); if (converter_list == null) { return(0); } foreach (var converter in converter_list) { converter.Rate = u_constants.CalculateImprovementValue(original_stats.ELConverter, upgrades_to_apply.elConverter); } #if false var el_converter = PartStats.GetModuleElConverter(part); if (el_converter) { el_converter.Rate = u_constants.CalculateImprovementValue(original_stats.ELConverter, upgrades_to_apply.elConverter); } #endif return(0); }
public static int UpdateDryMass(UpgradeConstants u_constants, Part part, PartStats original_stats, PartUpgrades upgrades_to_apply) { part.prefabMass = part.mass = u_constants.CalculateImprovementValue(original_stats.dryMass, upgrades_to_apply.dryMass); // Dry Mass also improves fairing mass: var fairing_module = PartStats.GetModuleProceduralFairing(part); if (fairing_module) { fairing_module.UnitAreaMass = u_constants.CalculateImprovementValue(original_stats.fairingAreaMass, upgrades_to_apply.dryMass); } return(0); }
public static int UpdateConverterEfficiency(UpgradeConstants u_constants, Part part, PartStats original_stats, PartUpgrades upgrades_to_apply) { // Converter Efficiency: var converter_list = PartStats.GetModuleResourceConverterList(part); if (converter_list == null) { return(0); } foreach (var converter in converter_list) { if (!original_stats.converterEfficiency.TryGetValue(converter.ConverterName, out var original_output_resources)) { continue; } // Since KSP 1.2 this can't be done in a foreach anymore, we have to read and write back the entire ResourceRatio-Object: for (var i = 0; i < converter.outputList.Count; i++) { var resource_ratio = converter.outputList[i]; if (!original_output_resources.TryGetValue(resource_ratio.ResourceName, out var original_ratio)) { continue; } resource_ratio.Ratio = u_constants.CalculateImprovementValue(original_ratio, upgrades_to_apply.converterEfficiency); converter.outputList[i] = resource_ratio; } } return(0); }
public static int UpdateDataStorage(UpgradeConstants u_constants, Part part, PartStats original_stats, PartUpgrades upgrades_to_apply) { var science_lab = PartStats.GetModuleScienceLab(part); if (science_lab) { science_lab.dataStorage = u_constants.CalculateImprovementValue(original_stats.dataStorage, upgrades_to_apply.dataStorage); } var science_converter = PartStats.GetModuleScienceConverter(part); if (science_converter) { science_converter.scienceCap = u_constants.CalculateImprovementValue(original_stats.scienceCap, upgrades_to_apply.dataStorage); } return(0); }
public static int UpdateActiveRadiator(UpgradeConstants u_constants, Part part, PartStats original_stats, PartUpgrades upgrades_to_apply) { var radiator = PartStats.GetModuleActiveRadiator(part); if (radiator) { radiator.maxEnergyTransfer = u_constants.CalculateImprovementValue(original_stats.maxEnergyTransfer, upgrades_to_apply.maxEnergyTransfer); } return(0); }
public static int UpdatePacketSize(UpgradeConstants u_constants, Part part, PartStats original_stats, PartUpgrades upgrades_to_apply) { var antenna = PartStats.GetModuleDataTransmitter(part); if (antenna) { antenna.packetSize = u_constants.CalculateImprovementValue(original_stats.packetSize, upgrades_to_apply.packetSize); } return(0); }
public static int UpdateCrashTolerance(UpgradeConstants u_constants, Part part, PartStats original_stats, PartUpgrades upgrades_to_apply) { var landing_leg = PartStats.GetModuleWheelBase(part); if (landing_leg) { part.crashTolerance = u_constants.CalculateImprovementValue(original_stats.crashTolerance, upgrades_to_apply.crashTolerance); } return(0); }
public static int UpdateChargeRate(UpgradeConstants u_constants, Part part, PartStats original_stats, PartUpgrades upgrades_to_apply) { var solar_panel = PartStats.GetModuleDeployableSolarPanel(part); if (solar_panel) { solar_panel.efficiencyMult = u_constants.CalculateImprovementValue(original_stats.efficiencyMult, upgrades_to_apply.efficiencyMult); } return(0); }
public static int UpdateResourceHarvester(UpgradeConstants u_constants, Part part, PartStats original_stats, PartUpgrades upgrades_to_apply) { // Resource Harvester var harvester = PartStats.GetModuleResourceHarvester(part); if (harvester) { harvester.Efficiency = u_constants.CalculateImprovementValue(original_stats.resourceHarvester, upgrades_to_apply.resourceHarvester); } // TODO: Update surface harvester module too? return(0); }
public static int UpdateBatteryCharge(UpgradeConstants u_constants, Part part, PartStats original_stats, PartUpgrades upgrades_to_apply) { var electric_charge = PartStats.GetElectricCharge(part); if (electric_charge == null) { return(0); } var max_charge = Math.Round(u_constants.CalculateImprovementValue(original_stats.batteryCharge, upgrades_to_apply.batteryCharge)); var percentage_full = electric_charge.amount / electric_charge.maxAmount; electric_charge.maxAmount = max_charge; electric_charge.amount = max_charge * percentage_full; return(0); }
public static int UpdateTorque(UpgradeConstants u_constants, Part part, PartStats original_stats, PartUpgrades upgrades_to_apply) { var reaction_wheel = PartStats.GetModuleReactionWheel(part); if (!reaction_wheel) { return(0); } var torque = u_constants.CalculateImprovementValue(original_stats.torqueStrength, upgrades_to_apply.torqueStrength); reaction_wheel.PitchTorque = torque; reaction_wheel.YawTorque = torque; reaction_wheel.RollTorque = torque; return(0); }
public static int UpdateMaxTemperature(UpgradeConstants u_constants, Part part, PartStats original_stats, PartUpgrades upgrades_to_apply) { part.skinMaxTemp = u_constants.CalculateImprovementValue(original_stats.skinMaxTemp, upgrades_to_apply.maxTemperature); part.maxTemp = u_constants.CalculateImprovementValue(original_stats.intMaxTemp, upgrades_to_apply.maxTemperature); return(0); }