// ============================================================================ // Add Reliability module to supported parts // ============================================================================ @PART[kerbalism-lifesupportmodule]:NEEDS[ProfileDefault,FeatureReliability]:FOR[KerbalismDefault] { MODULE { name = Reliability type = ProcessController title = ECLSS redundancy = Life Support repair = true // anyone mtbf = 72576000 // in seconds extra_cost = 2.5 extra_mass = 0.1 } } @PART[kerbalism-activeshield]:NEEDS[ProfileDefault,FeatureReliability]:FOR[KerbalismDefault] { MODULE { name = Reliability type = Emitter title = Shield repair = Engineer mtbf = 72576000 extra_cost = 2.5 extra_mass = 0.1 } } @PART[*]:HAS[#CrewCapacity[>0],!MODULE[KerbalSeat]]:NEEDS[ProfileDefault,FeatureReliability]:FOR[KerbalismDefault] { MODULE { name = Reliability type = ProcessController title = ECLSS redundancy = Life Support repair = true // anyone mtbf = 72576000 extra_cost = 0.625 extra_mass = 0.025 } } @PART[*]:HAS[@MODULE[SolarPanelFixer],!MODULE[ModuleCommand]]:NEEDS[FeatureReliability]:AFTER[KerbalismDefault] { MODULE { name = Reliability type = SolarPanelFixer title = Solar Panel redundancy = Power Generation repair = true mtbf = 36288000 extra_cost = 2.5 extra_mass = 1.0 rated_radiation = 0.15 radiation_decay_rate = 1 } } @PART[*]:HAS[@MODULE[SolarPanelFixer],@MODULE[ModuleCommand],#CrewCapacity[<1]]:NEEDS[FeatureReliability]:AFTER[KerbalismDefault] { MODULE { name = Reliability type = SolarPanelFixer title = Solar Panel redundancy = Power Generation repair = true mtbf = 36288000 extra_cost = 0.25 extra_mass = 0.1 rated_radiation = 0.16 radiation_decay_rate = 1 } } @PART[*]:HAS[@MODULE[SolarPanelFixer],@MODULE[ModuleCommand],~CrewCapacity[]]:NEEDS[FeatureReliability]:AFTER[KerbalismDefault] { MODULE { name = Reliability type = SolarPanelFixer title = Solar Panel redundancy = Power Generation repair = true mtbf = 36288000 extra_cost = 0.25 extra_mass = 0.1 rated_radiation = 0.14 radiation_decay_rate = 1 } } @PART[*]:HAS[@MODULE[SolarPanelFixer],@MODULE[ModuleCommand],#CrewCapacity[>0]]:NEEDS[FeatureReliability]:AFTER[KerbalismDefault] { MODULE { name = Reliability type = SolarPanelFixer title = Solar Panel redundancy = Power Generation repair = true mtbf = 36288000 extra_cost = 0.125 extra_mass = 0.05 rated_radiation = 0.15 radiation_decay_rate = 1 } } @PART[*]:HAS[@MODULE[ModuleReactionWheel],!MODULE[ModuleCommand],#CrewCapacity[<1]]:NEEDS[FeatureReliability]:FOR[KerbalismDefault] { MODULE { name = Reliability type = ModuleReactionWheel title = Reaction Wheel redundancy = Attitude Control repair = true mtbf = 36288000 extra_cost = 2.5 extra_mass = 1.0 rated_radiation = 0.12 radiation_decay_rate = 1.3 } } @PART[*]:HAS[@MODULE[ModuleReactionWheel],!MODULE[ModuleCommand],~CrewCapacity[]]:NEEDS[FeatureReliability]:FOR[KerbalismDefault] { MODULE { name = Reliability type = ModuleReactionWheel title = Reaction Wheel redundancy = Attitude Control repair = true mtbf = 36288000 extra_cost = 2.5 extra_mass = 1.0 rated_radiation = 0.15 radiation_decay_rate = 2 } } @PART[*]:HAS[@MODULE[ModuleReactionWheel],@MODULE[ModuleCommand],#CrewCapacity[<1]]:NEEDS[FeatureReliability]:FOR[KerbalismDefault] { MODULE { name = Reliability type = ModuleReactionWheel title = Reaction Wheel redundancy = Attitude Control repair = true mtbf = 36288000 extra_cost = 0.25 extra_mass = 0.15 rated_radiation = 0.16 radiation_decay_rate = 1.7 } } @PART[*]:HAS[@MODULE[ModuleReactionWheel],@MODULE[ModuleCommand],~CrewCapacity[]]:NEEDS[FeatureReliability]:FOR[KerbalismDefault] { MODULE { name = Reliability type = ModuleReactionWheel title = Reaction Wheel redundancy = Attitude Control repair = true mtbf = 36288000 extra_cost = 0.25 extra_mass = 0.15 rated_radiation = 0.19 radiation_decay_rate = 1.6 } } @PART[*]:HAS[@MODULE[ModuleReactionWheel],@MODULE[ModuleCommand],#CrewCapacity[>0]]:NEEDS[FeatureReliability]:FOR[KerbalismDefault] { MODULE { name = Reliability type = ModuleReactionWheel title = Reaction Wheel redundancy = Attitude Control repair = true mtbf = 36288000 extra_cost = 0.2 extra_mass = 0.05 rated_radiation = 0.15 radiation_decay_rate = 3 } } @PART[*]:HAS[@MODULE[ModuleRCSFX],!MODULE[ModuleCommand],#CrewCapacity[<1]]:NEEDS[FeatureReliability]:FOR[KerbalismDefault] { MODULE { name = Reliability type = ModuleRCSFX title = RCS redundancy = Attitude Control repair = Engineer mtbf = 72576000 extra_cost = 2.0 extra_mass = 1.0 } } @PART[*]:HAS[@MODULE[ModuleRCSFX],!MODULE[ModuleCommand],~CrewCapacity[]]:NEEDS[FeatureReliability]:FOR[KerbalismDefault] { MODULE { name = Reliability type = ModuleRCSFX title = RCS redundancy = Attitude Control repair = Engineer mtbf = 72576000 extra_cost = 2.0 extra_mass = 1.0 } } @PART[*]:HAS[@MODULE[ModuleRCS],!MODULE[ModuleCommand],#CrewCapacity[<1]]:NEEDS[FeatureReliability]:FOR[KerbalismDefault] { MODULE { name = Reliability type = ModuleRCS title = RCS redundancy = Attitude Control repair = Engineer mtbf = 72576000 extra_cost = 2.0 extra_mass = 1.0 } } @PART[*]:HAS[@MODULE[ModuleRCS],!MODULE[ModuleCommand],~CrewCapacity[]]:NEEDS[FeatureReliability]:FOR[KerbalismDefault] { MODULE { name = Reliability type = ModuleRCS title = RCS redundancy = Attitude Control repair = Engineer mtbf = 72576000 extra_cost = 2.0 extra_mass = 1.0 } } @PART[*]:HAS[@MODULE[ModuleRCSFX],@MODULE[ModuleCommand],#CrewCapacity[<1]]:NEEDS[FeatureReliability]:FOR[KerbalismDefault] { MODULE { name = Reliability type = ModuleRCSFX title = RCS redundancy = Attitude Control repair = Engineer mtbf = 72576000 extra_cost = 0.2 extra_mass = 0.1 } } @PART[*]:HAS[@MODULE[ModuleRCSFX],@MODULE[ModuleCommand],~CrewCapacity[]]:NEEDS[FeatureReliability]:FOR[KerbalismDefault] { MODULE { name = Reliability type = ModuleRCSFX title = RCS redundancy = Attitude Control repair = Engineer mtbf = 72576000 extra_cost = 0.2 extra_mass = 0.1 } } @PART[*]:HAS[@MODULE[ModuleRCS],@MODULE[ModuleCommand],#CrewCapacity[<1]]:NEEDS[FeatureReliability]:FOR[KerbalismDefault] { MODULE { name = Reliability type = ModuleRCS title = RCS redundancy = Attitude Control repair = Engineer mtbf = 72576000 extra_cost = 0.2 extra_mass = 0.1 } } @PART[*]:HAS[@MODULE[ModuleRCS],@MODULE[ModuleCommand],~CrewCapacity[]]:NEEDS[FeatureReliability]:FOR[KerbalismDefault] { MODULE { name = Reliability type = ModuleRCS title = RCS redundancy = Attitude Control repair = Engineer mtbf = 72576000 extra_cost = 0.2 extra_mass = 0.1 } } @PART[*]:HAS[@MODULE[ModuleRCSFX],@MODULE[ModuleCommand],#CrewCapacity[>0]]:NEEDS[FeatureReliability]:FOR[KerbalismDefault] { MODULE { name = Reliability type = ModuleRCSFX title = RCS redundancy = Attitude Control repair = Engineer mtbf = 72576000 extra_cost = 0.1 extra_mass = 0.05 } } @PART[*]:HAS[@MODULE[ModuleRCS],@MODULE[ModuleCommand],#CrewCapacity[>0]]:NEEDS[FeatureReliability]:FOR[KerbalismDefault] { MODULE { name = Reliability type = ModuleRCS title = RCS redundancy = Attitude Control repair = Engineer mtbf = 72576000 extra_cost = 0.1 extra_mass = 0.05 } } @PART[*]:HAS[@MODULE[ModuleLight],!MODULE[ModuleCommand],#CrewCapacity[<1]]:NEEDS[FeatureReliability]:FOR[KerbalismDefault] { MODULE { name = Reliability type = ModuleLight title = Light repair = true // anyone mtbf = 36288000 extra_cost = 5.0 extra_mass = 1.0 } } @PART[*]:HAS[@MODULE[ModuleLight],!MODULE[ModuleCommand],~CrewCapacity[]]:NEEDS[FeatureReliability]:FOR[KerbalismDefault] { MODULE { name = Reliability type = ModuleLight title = Light repair = true // anyone mtbf = 36288000 extra_cost = 5.0 extra_mass = 1.0 } } @PART[*]:HAS[@MODULE[ModuleLight],@MODULE[ModuleCommand],#CrewCapacity[<1]]:NEEDS[FeatureReliability]:FOR[KerbalismDefault] { MODULE { name = Reliability type = ModuleLight title = Light repair = true // anyone mtbf = 36288000 extra_cost = 0.1 extra_mass = 0.05 } } @PART[*]:HAS[@MODULE[ModuleLight],@MODULE[ModuleCommand],~CrewCapacity[]]:NEEDS[FeatureReliability]:FOR[KerbalismDefault] { MODULE { name = Reliability type = ModuleLight title = Light repair = true // anyone mtbf = 36288000 extra_cost = 0.1 extra_mass = 0.05 } } @PART[*]:HAS[@MODULE[ModuleLight],@MODULE[ModuleCommand],#CrewCapacity[>0]]:NEEDS[FeatureReliability]:FOR[KerbalismDefault] { MODULE { name = Reliability type = ModuleLight title = Light repair = true // anyone mtbf = 36288000 extra_cost = 0.05 extra_mass = 0.01 } } @PART[*]:HAS[@MODULE[ModuleParachute]]:NEEDS[FeatureReliability]:FOR[KerbalismDefault] { MODULE { name = Reliability type = ModuleParachute title = Parachute redundancy = Landing repair = true // anyone mtbf = 72576000 extra_cost = 2.5 extra_mass = 0.5 } } @PART[*]:HAS[@MODULE[ModuleEngines*],!MODULE[Reliability]:HAS[#type[ModuleEngines]]]:NEEDS[FeatureReliability]:FOR[KerbalismDefault] { MODULE { name = Reliability type = ModuleEngines } } @PART[*]:HAS[@MODULE[ModuleEngines*]]:NEEDS[FeatureReliability]:FOR[KerbalismDefault] { @MODULE[Reliability]:HAS[#type[ModuleEngines*]] { title = Engine redundancy = Propulsion repair = Engineer mtbf = 0 extra_cost = 1.5 extra_mass = 0.05 turnon_failure_probability = 0.007 rated_operation_duration = 600 rated_ignitions = 1 } } // this calculates ignitions from thrust, and vac/atm ISP ratio: // - the lower the thrust, the higher the ignition count. // - the higher the difference between vacuum and atmosphere ISP, the higher the ignition count. // thrust 0-350 gives 64-1 ignitions (custom exponential-ish scale). // vac/atm ratio gives no bonus if below 150%, and then a linear bonus of +1 ignitions for every extra 20%. // some specific engine types will receive further bonus. @PART[*]:HAS[@MODULE[ModuleEngines*]:HAS[#maxThrust,@atmosphereCurve]]:NEEDS[FeatureReliability]:FOR[KerbalismDefault] { @MODULE[Reliability]:HAS[#type[ModuleEngines*]] { // Parse and store atmosphere ISP as a temporary value __tmp_isp_atm = #$../MODULE[ModuleEngines*]/atmosphereCurve/key,1$ @__tmp_isp_atm ^= :^[\d\.]* (\d+) *.*$:$1: // Parse and store vacuum ISP as a temporary value __tmp_isp_vac = #$../MODULE[ModuleEngines*]/atmosphereCurve/key,0$ @__tmp_isp_vac ^= :^[\d\.]* (\d+) *.*$:$1: // Give ignitions based on the ratio between vacum and atmosphere ISP // ---- // Example results for typical stock engines: // Spider => 1 // Ant => 13 // Twitch => 1 // Terrier => 13 // Thud => 1 // LV-T30 => 1 // Poodle => 12 // Mainsail => 1 @rated_ignitions = #$__tmp_isp_vac$ @rated_ignitions /= #$__tmp_isp_atm$ // Get the ratio between vacum and atmosphere ISP @rated_ignitions -= 1.5 // Zero the curve to a ratio of 1.5 @rated_ignitions ^= :^-.*$:0: // If negative, set to zero @rated_ignitions *= 5 // Give a power of 5 to the curve @rated_ignitions += 1 // Set a minimum value of 1 // Give extra ignitions the smaller the engine is // ---- // Example results for typical stock engines: // Spider => +64 // Ant => +64 // Twitch => +32 // Terrier => +10 // Thud => +8 // LV-T30 => +4 // Poodle => +2 // Mainsail => +0 __tmp_thrust_factor = #$../MODULE[ModuleEngines*]/maxThrust$ @__tmp_thrust_factor ^= :^[0-9]$:_64: // if thrust between 0 and 9, give +64 ignitions @__tmp_thrust_factor ^= :^1[0-9]$:_32: // if thrust between 10 and 19, give +32 ignitions @__tmp_thrust_factor ^= :^[2-4][0-9]$:_16: // if thrust between 20 and 49, give +16 ignitions @__tmp_thrust_factor ^= :^[5-9][0-9]$:_10: // if thrust between 50 and 99, give +10 ignitions @__tmp_thrust_factor ^= :^1[0-4][0-9]$:_8: // if thrust between 100 and 149, give +8 ignitions @__tmp_thrust_factor ^= :^1[5-9][0-9]$:_6: // if thrust between 150 and 199, give +6 ignitions @__tmp_thrust_factor ^= :^2[0-4][0-9]$:_4: // if thrust between 200 and 249, give +4 ignitions @__tmp_thrust_factor ^= :^2[5-9][0-9]$:_2: // if thrust between 250 and 299, give +2 ignitions @__tmp_thrust_factor ^= :^3[0-9][0-9]$:_1: // if thrust between 300 and 349, give +1 ignitions @__tmp_thrust_factor ^= :^[^_].*$:_0: // if thrust is 350 or more, give +0 ignitions @__tmp_thrust_factor ^= :_:: // remove the "_" prefix // Combine the two ignitions values // ---- // Final sum for the previous examples: // Spider => 65 // Ant => 77 // Twitch => 33 // Terrier => 23 // Thud => 9 // LV-T30 => 5 // Poodle => 14 // Mainsail => 1 @rated_ignitions += #$__tmp_thrust_factor$ @rated_ignitions ^= :\.\d+:: // Floor value to get an integer // Remove all temporary variables !__tmp_* = dummy } } // SRBs @PART[*]:HAS[@MODULE[ModuleEngines*]:HAS[@PROPELLANT[SolidFuel]]]:NEEDS[FeatureReliability]:FOR[KerbalismDefault] { @MODULE[Reliability]:HAS[#type[ModuleEngines*]] { @rated_ignitions = 0 @rated_operation_duration = 0 @turnon_failure_probability = 0.005 } } // NERV @PART[*]:HAS[@MODULE[ModuleEngines*]:HAS[@PROPELLANT[LiquidFuel]]]:NEEDS[FeatureReliability]:FOR[KerbalismDefault] { @MODULE[Reliability]:HAS[#type[ModuleEngines*]] { @rated_operation_duration = 800 @repair = Engineer@2 } } // your standard garden variety rocket engine @PART[*]:HAS[@MODULE[ModuleEngines*]:HAS[@PROPELLANT[Oxidizer]]]:NEEDS[FeatureReliability]:FOR[KerbalismDefault] { @MODULE[Reliability]:HAS[#type[ModuleEngines*]] { @rated_operation_duration = 350 @turnon_failure_probability = 0.007 @repair = true } } // ion engines @PART[*]:HAS[@MODULE[ModuleEngines*]:HAS[@PROPELLANT[XenonGas]]]:NEEDS[FeatureReliability]:FOR[KerbalismDefault] { @MODULE[Reliability]:HAS[#type[ModuleEngines*]] { @rated_operation_duration = 0 @turnon_failure_probability = 0.002 @repair = Engineer@2 } } // jet engines @PART[*]:HAS[@MODULE[ModuleEngines*]:HAS[@PROPELLANT[IntakeAir]]]:NEEDS[FeatureReliability]:FOR[KerbalismDefault] { @MODULE[Reliability]:HAS[#type[ModuleEngines*]] { @rated_operation_duration = 86400 @rated_ignitions = 0 @repair = true } } // hypergolic or monoprop engines @PART[*]:HAS[@MODULE[ModuleEngines*]:HAS[@PROPELLANT[MonoPropellant]]]:NEEDS[FeatureReliability]:FOR[KerbalismDefault] { @MODULE[Reliability]:HAS[#type[ModuleEngines*]] { @rated_operation_duration = 0 @rated_ignitions = 0 @repair = true @turnon_failure_probability = 0.001 } } @PART[*]:HAS[@MODULE[ModuleEnginesRF]]:NEEDS[FeatureReliability]:FOR[KerbalismDefault] { MODULE { name = Reliability type = ModuleEnginesRF title = Engine redundancy = Propulsion repair = Engineer mtbf = 0 extra_cost = 1.0 extra_mass = 0.1 rated_operation_duration = 12000 } } @PART[*]:HAS[@MODULE[ModuleDeployableRadiator],!MODULE[ModuleActiveRadiator],!MODULE[ModuleCommand],#CrewCapacity[<1]]:NEEDS[FeatureReliability]:FOR[KerbalismDefault] { MODULE { name = Reliability type = ModuleDeployableRadiator title = Radiator repair = Engineer mtbf = 72576000 extra_cost = 1.0 extra_mass = 0.25 } } @PART[*]:HAS[@MODULE[ModuleDeployableRadiator],!MODULE[ModuleActiveRadiator],!MODULE[ModuleCommand],~CrewCapacity[]]:NEEDS[FeatureReliability]:FOR[KerbalismDefault] { MODULE { name = Reliability type = ModuleDeployableRadiator title = Radiator repair = Engineer mtbf = 72576000 extra_cost = 1.0 extra_mass = 0.25 } } @PART[*]:HAS[@MODULE[ModuleDeployableRadiator],!MODULE[ModuleActiveRadiator],@MODULE[ModuleCommand],#CrewCapacity[<1]]:NEEDS[FeatureReliability]:FOR[KerbalismDefault] { MODULE { name = Reliability type = ModuleDeployableRadiator title = Radiator repair = Engineer mtbf = 72576000 extra_cost = 0.2 extra_mass = 0.1 } } @PART[*]:HAS[@MODULE[ModuleDeployableRadiator],!MODULE[ModuleActiveRadiator],@MODULE[ModuleCommand],~CrewCapacity[]]:NEEDS[FeatureReliability]:FOR[KerbalismDefault] { MODULE { name = Reliability type = ModuleDeployableRadiator title = Radiator repair = Engineer mtbf = 72576000 extra_cost = 0.2 extra_mass = 0.1 } } @PART[*]:HAS[@MODULE[ModuleDeployableRadiator],!MODULE[ModuleActiveRadiator],@MODULE[ModuleCommand],#CrewCapacity[>0]]:NEEDS[FeatureReliability]:FOR[KerbalismDefault] { MODULE { name = Reliability type = ModuleDeployableRadiator title = Radiator repair = Engineer mtbf = 72576000 extra_cost = 0.1 extra_mass = 0.05 } } @PART[*]:HAS[@MODULE[ModuleActiveRadiator],!MODULE[ModuleDeployableRadiator],!MODULE[ModuleCommand],#CrewCapacity[<1]]:NEEDS[FeatureReliability]:FOR[KerbalismDefault] { MODULE { name = Reliability type = ModuleActiveRadiator title = Radiator repair = Engineer mtbf = 72576000 extra_cost = 1.0 extra_mass = 0.25 } } @PART[*]:HAS[@MODULE[ModuleActiveRadiator],!MODULE[ModuleDeployableRadiator],!MODULE[ModuleCommand],~CrewCapacity[]]:NEEDS[FeatureReliability]:FOR[KerbalismDefault] { MODULE { name = Reliability type = ModuleActiveRadiator title = Radiator repair = Engineer mtbf = 72576000 extra_cost = 1.0 extra_mass = 0.25 } } @PART[*]:HAS[@MODULE[ModuleActiveRadiator],!MODULE[ModuleDeployableRadiator],@MODULE[ModuleCommand],#CrewCapacity[<1]]:NEEDS[FeatureReliability]:FOR[KerbalismDefault] { MODULE { name = Reliability type = ModuleActiveRadiator title = Radiator repair = Engineer mtbf = 72576000 extra_cost = 0.2 extra_mass = 0.1 } } @PART[*]:HAS[@MODULE[ModuleActiveRadiator],!MODULE[ModuleDeployableRadiator],@MODULE[ModuleCommand],~CrewCapacity[]]:NEEDS[FeatureReliability]:FOR[KerbalismDefault] { MODULE { name = Reliability type = ModuleActiveRadiator title = Radiator repair = Engineer mtbf = 72576000 extra_cost = 0.2 extra_mass = 0.1 } } @PART[*]:HAS[@MODULE[ModuleActiveRadiator],!MODULE[ModuleDeployableRadiator],@MODULE[ModuleCommand],#CrewCapacity[>0]]:NEEDS[FeatureReliability]:FOR[KerbalismDefault] { MODULE { name = Reliability type = ModuleActiveRadiator title = Radiator repair = Engineer mtbf = 72576000 extra_cost = 0.1 extra_mass = 0.05 } } @PART[*]:HAS[@MODULE[ModuleDeployableRadiator],@MODULE[ModuleActiveRadiator],!MODULE[ModuleCommand],#CrewCapacity[<1]]:NEEDS[FeatureReliability]:FOR[KerbalismDefault] { MODULE { name = Reliability type = ModuleDeployableRadiator title = Radiator motor repair = Engineer mtbf = 72576000 extra_cost = 1.0 extra_mass = 0.25 } MODULE { name = Reliability type = ModuleActiveRadiator title = Radiator panel repair = Engineer mtbf = 72576000 extra_cost = 1.0 extra_mass = 0.25 } } @PART[*]:HAS[@MODULE[ModuleDeployableRadiator],@MODULE[ModuleActiveRadiator],!MODULE[ModuleCommand],~CrewCapacity[]]:NEEDS[FeatureReliability]:FOR[KerbalismDefault] { MODULE { name = Reliability type = ModuleDeployableRadiator title = Radiator motor repair = Engineer mtbf = 72576000 extra_cost = 1.0 extra_mass = 0.25 } MODULE { name = Reliability type = ModuleActiveRadiator title = Radiator panel repair = Engineer mtbf = 72576000 extra_cost = 1.0 extra_mass = 0.25 } } @PART[*]:HAS[@MODULE[ModuleDeployableRadiator],@MODULE[ModuleActiveRadiator],@MODULE[ModuleCommand],#CrewCapacity[<1]]:NEEDS[FeatureReliability]:FOR[KerbalismDefault] { MODULE { name = Reliability type = ModuleDeployableRadiator title = Radiator motor repair = Engineer mtbf = 72576000 extra_cost = 0.2 extra_mass = 0.1 } MODULE { name = Reliability type = ModuleActiveRadiator title = Radiator panel repair = Engineer mtbf = 72576000 extra_cost = 0.2 extra_mass = 0.1 } } @PART[*]:HAS[@MODULE[ModuleDeployableRadiator],@MODULE[ModuleActiveRadiator],@MODULE[ModuleCommand],~CrewCapacity[]]:NEEDS[FeatureReliability]:FOR[KerbalismDefault] { MODULE { name = Reliability type = ModuleDeployableRadiator title = Radiator motor repair = Engineer mtbf = 72576000 extra_cost = 0.2 extra_mass = 0.1 } MODULE { name = Reliability type = ModuleActiveRadiator title = Radiator panel repair = Engineer mtbf = 72576000 extra_cost = 0.2 extra_mass = 0.1 } } @PART[*]:HAS[@MODULE[ModuleDeployableRadiator],@MODULE[ModuleActiveRadiator],@MODULE[ModuleCommand],#CrewCapacity[>0]]:NEEDS[FeatureReliability]:FOR[KerbalismDefault] { MODULE { name = Reliability type = ModuleDeployableRadiator title = Radiator motor repair = Engineer mtbf = 72576000 extra_cost = 0.1 extra_mass = 0.05 } MODULE { name = Reliability type = ModuleActiveRadiator title = Radiator panel repair = Engineer mtbf = 72576000 extra_cost = 0.1 extra_mass = 0.05 } } @PART[*]:HAS[@MODULE[ModuleResourceConverter]]:NEEDS[FeatureReliability]:FOR[KerbalismDefault] { MODULE { name = Reliability type = ModuleResourceConverter title = Converter repair = Engineer mtbf = 72576000 extra_cost = 1.0 extra_mass = 0.2 // @extra_mass *= 0.2 // is this intended? Does it make sense? } } @PART[*]:HAS[@MODULE[ModuleResourceHarvester]]:NEEDS[FeatureReliability]:FOR[KerbalismDefault] { MODULE { name = Reliability type = ModuleResourceHarvester title = Harvester repair = Engineer mtbf = 72576000 extra_cost = 1.0 extra_mass = 0.2 } } @PART[*]:HAS[@MODULE[ModuleScienceExperiment],!MODULE[ModuleCommand],#CrewCapacity[<1]]:NEEDS[FeatureReliability]:FOR[KerbalismDefault] { MODULE { name = Reliability type = ModuleScienceExperiment title = ScienceInstrument repair = Engineer mtbf = 72576000 extra_cost = 0.5 extra_mass = 0.1 } } @PART[*]:HAS[@MODULE[ModuleScienceExperiment],!MODULE[ModuleCommand],!MODULE[KerbalEVA],~CrewCapacity[]]:NEEDS[FeatureReliability]:FOR[KerbalismDefault] { MODULE { name = Reliability type = ModuleScienceExperiment title = ScienceInstrument repair = Engineer mtbf = 72576000 extra_cost = 0.5 extra_mass = 0.1 } } @PART[*]:HAS[@MODULE[ModuleScienceExperiment],@MODULE[ModuleCommand],#CrewCapacity[<1]]:NEEDS[FeatureReliability]:FOR[KerbalismDefault] { MODULE { name = Reliability type = ModuleScienceExperiment title = ScienceInstrument repair = Engineer mtbf = 72576000 extra_cost = 0.05 extra_mass = 0.01 } } @PART[*]:HAS[@MODULE[ModuleScienceExperiment],@MODULE[ModuleCommand],~CrewCapacity[]]:NEEDS[FeatureReliability]:FOR[KerbalismDefault] { MODULE { name = Reliability type = ModuleScienceExperiment title = ScienceInstrument repair = Engineer mtbf = 72576000 extra_cost = 0.05 extra_mass = 0.01 } } @PART[*]:HAS[@MODULE[ModuleScienceExperiment],@MODULE[ModuleCommand],#CrewCapacity[>0]]:NEEDS[FeatureReliability]:FOR[KerbalismDefault] { MODULE { name = Reliability type = ModuleScienceExperiment title = ScienceInstrument repair = Engineer mtbf = 72576000 extra_cost = 0.025 extra_mass = 0.005 } } // Since we might be messing with transmitters in zzzKerbalismDefault, this done after it @PART[*]:HAS[@MODULE[ModuleDataTransmitter]:HAS[~antennaType[INTERNAL]],!MODULE[ModuleCommand],#CrewCapacity[<1]]:NEEDS[FeatureReliability,!RemoteTech]:AFTER[zzzKerbalismDefault] { MODULE { name = Reliability type = ModuleDataTransmitter title = Data Transmitter redundancy = Communication repair = Engineer mtbf = 72576000 extra_cost = 1.0 extra_mass = 0.1 rated_radiation = 0.26 radiation_decay_rate = 2 } } @PART[*]:HAS[@MODULE[ModuleDataTransmitter]:HAS[~antennaType[INTERNAL]],!MODULE[ModuleCommand],~CrewCapacity[]]:NEEDS[FeatureReliability,!RemoteTech]:AFTER[zzzKerbalismDefault] { MODULE { name = Reliability type = ModuleDataTransmitter title = Data Transmitter redundancy = Communication repair = Engineer mtbf = 72576000 extra_cost = 1.0 extra_mass = 0.1 rated_radiation = 0.14 radiation_decay_rate = 1.4 } } @PART[*]:HAS[@MODULE[ModuleDataTransmitter]:HAS[~antennaType[INTERNAL]],@MODULE[ModuleCommand],#CrewCapacity[<1]]:NEEDS[FeatureReliability,!RemoteTech]:AFTER[zzzKerbalismDefault] { MODULE { name = Reliability type = ModuleDataTransmitter title = Data Transmitter redundancy = Communication repair = Engineer mtbf = 72576000 extra_cost = 0.5 extra_mass = 0.01 rated_radiation = 0.12 radiation_decay_rate = 1 } } @PART[*]:HAS[@MODULE[ModuleDataTransmitter]:HAS[~antennaType[INTERNAL]],@MODULE[ModuleCommand],~CrewCapacity[]]:NEEDS[FeatureReliability,!RemoteTech]:AFTER[zzzKerbalismDefault] { MODULE { name = Reliability type = ModuleDataTransmitter title = Data Transmitter redundancy = Communication repair = Engineer mtbf = 72576000 extra_cost = 0.5 extra_mass = 0.01 rated_radiation = 0.12 radiation_decay_rate = 2.1 } } @PART[*]:HAS[@MODULE[ModuleDataTransmitter]:HAS[~antennaType[INTERNAL]],@MODULE[ModuleCommand],#CrewCapacity[>0]]:NEEDS[FeatureReliability,!RemoteTech]:AFTER[zzzKerbalismDefault] { MODULE { name = Reliability type = ModuleDataTransmitter title = Data Transmitter redundancy = Communication repair = Engineer mtbf = 72576000 extra_cost = 0.05 extra_mass = 0.001 rated_radiation = 0.16 radiation_decay_rate = 1 } } // Low-Pass filter: stuff that will break within a year is not space-rated. @PART[*]:HAS[@MODULE[Reliability],!MODULE[KerbalEVA],!MODULE[ModuleEngines*]]:AFTER[zzzKerbalismDefault] { @MODULE[Reliability]:HAS[#mtbf[<9321480]],* { @mtbf = 9321480 // lowpass filter (420 kerbin days at normal reliablity) } } @PART[*]:HAS[@MODULE[Reliability],!MODULE[KerbalEVA]]:AFTER[KerbalismDefault] { @MODULE[Reliability]:HAS[#title[Treadmill]],* { @extra_cost = 0.1 } }