diff --git a/GameData/RP-1/Contracts/Earth Observation 2/EOS2ATS1.cfg b/GameData/RP-1/Contracts/Earth Observation 2/EOS2ATS1.cfg
new file mode 100644
index 00000000000..b9062733792
--- /dev/null
+++ b/GameData/RP-1/Contracts/Earth Observation 2/EOS2ATS1.cfg
@@ -0,0 +1,172 @@
+CONTRACT_TYPE
+{
+ name = EOS2ATS1
+ title = Geostationary Weather Satellite
+ group = EOS2
+ agent = Federation Aeronautique Internationale
+
+ description = Program: Advanced Earth Observation Satellites
Type: Required
Your government wants satellites capable of monitoring the weather in a hempishere. Launch a satellite to fulfill their request.
Make sure your craft contains a Cosmic Ray experiment, a Helium Magnetometer, a Mass Spectrometer and a Basic TV Camera.
Historical example: ATS-1.
+
+ synopsis = Launch the first geostationary weather satellite.
+
+ completedMessage = Success! The data from this satellite allows monitoring the weather of an entire hemisphere!
+
+ sortKey = 501
+
+ cancellable = true
+ declinable = false
+ autoAccept = false
+ minExpiry = 0
+ maxExpiry = 0
+ maxCompletions = 1
+ maxSimultaneous = 1
+ deadline = 0
+
+ targetBody = HomeWorld()
+
+ // ************ REWARDS ************
+ prestige = Trivial // 1.0x
+ advanceFunds = 0
+ rewardScience = 0
+ rewardFunds = 0
+ failureFunds = 0
+ rewardReputation = 40
+ failureReputation = 0 // was @rewardReputation
+
+ // ************ REQUIREMENTS ************
+
+ REQUIREMENT
+ {
+ name = ProgramActive
+ type = ProgramActive
+ program = EarthObservationScience2
+ }
+
+ PARAMETER
+ {
+ name = ATS
+ type = VesselParameterGroup
+ title = Geostationary Weather Satellite
+ define = ATS
+
+ PARAMETER
+ {
+ name = NewVessel
+ type = NewVessel
+ title = Launch a new vessel
+ hideChildren = true
+ }
+ PARAMETER
+ {
+ name = Crewmembers
+ type = HasCrew
+ minCrew = 0
+ maxCrew = 0
+ title = Uncrewed
+ hideChildren = true
+ }
+
+ PARAMETER
+ {
+ name = OrbitSequence
+ type = Sequence
+ title = Survive in orbit for 180 days
+
+ PARAMETER
+ {
+ name = HasPower
+ type = HasResource
+ title = Craft must have Electric Charge for 180 days
+ resource = ElectricCharge
+ minQuantity = 1.0
+ hideChildren = true
+ }
+
+ PARAMETER
+ {
+ name = PartValidation
+ type = PartValidation
+ title = Carry an Basic TV camera
+ VALIDATE
+ {
+ MODULE
+ {
+ name = Experiment
+ experimentID = RP0visibleImaging2
+ }
+ }
+ }
+
+ PARAMETER
+ {
+ name = PartValidation
+ type = PartValidation
+ title = Carry a Scintillation Counter Cosmic Ray Telescope.
+ VALIDATE
+ {
+ MODULE
+ {
+ name = Experiment
+ experimentID = RP0cosmicRay2
+ }
+ }
+ }
+
+ PARAMETER
+ {
+ name = PartValidation
+ type = PartValidation
+ title = Carry a Helium Magnetometer.
+ VALIDATE
+ {
+ MODULE
+ {
+ name = Experiment
+ experimentID = RP0magScan2
+ }
+ }
+ }
+
+ PARAMETER
+ {
+ name = PartValidation
+ type = PartValidation
+ title = Carry a Magnetic Ion-Mass Spectrometer.
+ VALIDATE
+ {
+ MODULE
+ {
+ name = Experiment
+ experimentID = RP0massSpec2
+ }
+ }
+
+ }
+
+ PARAMETER
+ {
+ name = Orbit
+ type = Orbit
+ title = Reach a Geostationary Orbit
+ minPeriod = 23h 50m 0s
+ maxPeriod = 24h 00m 0s
+
+ maxEccentricity = 0.01 // Circular
+ maxInclination = 5.0 // Equatorial
+
+ disableOnStateChange = true
+
+ }
+
+ PARAMETER
+ {
+ name = Duration
+ type = Duration
+ duration = 180d
+ preWaitText = Check for stable orbit
+ waitingText = Checking for stable orbit
+ completionText = Stable orbit: Confirmed
+ }
+ }
+ }
+}
diff --git a/GameData/RP-1/Contracts/Earth Observation 2/EOS2Midas1.cfg b/GameData/RP-1/Contracts/Earth Observation 2/EOS2Midas1.cfg
new file mode 100644
index 00000000000..85c1613fc2d
--- /dev/null
+++ b/GameData/RP-1/Contracts/Earth Observation 2/EOS2Midas1.cfg
@@ -0,0 +1,152 @@
+CONTRACT_TYPE
+{
+ name = EOS2Midas1
+ title = Rocket Launch Monitoring Satellite
+ group = EOS2
+ agent = Federation Aeronautique Internationale
+
+ description = Program: Advanced Earth Observation Satellites
Type: Required
Your government wants satellites capable of detecting rocket launches by other nations. Launch a satellite to fulfill their request.
Make sure your craft contains a Cosmic Ray experiment, an Infrared Radiometer and a Micrometeorite Detector.
Historical example: Vela 1A.
+
+ synopsis = Launch the first rocket launch monitoring satellite.
+
+ completedMessage = Success! The data from this satellite will allow us to detect rocket launches from other nations!
+
+ sortKey = 501
+
+ cancellable = true
+ declinable = false
+ autoAccept = false
+ minExpiry = 0
+ maxExpiry = 0
+ maxCompletions = 1
+ maxSimultaneous = 1
+ deadline = 0
+
+ targetBody = HomeWorld()
+
+ // ************ REWARDS ************
+ prestige = Trivial // 1.0x
+ advanceFunds = 0
+ rewardScience = 0
+ rewardFunds = 0
+ failureFunds = 0
+ rewardReputation = 40
+ failureReputation = 0 // was @rewardReputation
+
+ // ************ REQUIREMENTS ************
+
+ REQUIREMENT
+ {
+ name = ProgramActive
+ type = ProgramActive
+ program = EarthObservationScience2
+ }
+
+ PARAMETER
+ {
+ name = MIDAS
+ type = VesselParameterGroup
+ title = Rocket Launch Detection Satellite
+ define = MIDAS
+
+ PARAMETER
+ {
+ name = NewVessel
+ type = NewVessel
+ title = Launch a new vessel
+ hideChildren = true
+ }
+ PARAMETER
+ {
+ name = Crewmembers
+ type = HasCrew
+ minCrew = 0
+ maxCrew = 0
+ title = Uncrewed
+ hideChildren = true
+ }
+
+ PARAMETER
+ {
+ name = OrbitSequence
+ type = Sequence
+ title = Survive in orbit for 180 days
+
+ PARAMETER
+ {
+ name = HasPower
+ type = HasResource
+ title = Craft must have Electric Charge for 180 days
+ resource = ElectricCharge
+ minQuantity = 1.0
+ hideChildren = true
+ }
+ PARAMETER
+ {
+ name = PartValidation
+ type = PartValidation
+ title = Carry a Micrometeorite Detector.
+ VALIDATE
+ {
+ MODULE
+ {
+ name = Experiment
+ experimentID = micrometeoriteDetect
+ }
+ }
+ }
+
+ PARAMETER
+ {
+ name = PartValidation
+ type = PartValidation
+ title = Carry a Cosmic Ray Science experiment.
+ VALIDATE
+ {
+ MODULE
+ {
+ name = Experiment
+ experimentID = RP0cosmicRay1
+ }
+ }
+ }
+
+ PARAMETER
+ {
+ name = PartValidation
+ type = PartValidation
+ title = Carry a High Resolution Radiometer.
+ VALIDATE
+ {
+ MODULE
+ {
+ name = Experiment
+ experimentID = RP0infraredRad2
+ }
+ }
+ }
+
+ PARAMETER
+ {
+ name = Orbit
+ type = Orbit
+ title = Orbit requirements
+ maxApA = 4000000 //4k km
+ minPeA = 2500000 //2.5k km
+ minInclination = 85 // Operational MIDAS
+ maxInclination = 95
+ disableOnStateChange = true
+ }
+
+ PARAMETER
+ {
+ name = Duration
+ type = Duration
+ duration = 180d
+ preWaitText = Check for stable orbit
+ waitingText = Checking for stable orbit
+ completionText = Stable orbit: Confirmed
+ }
+ }
+ }
+}
diff --git a/GameData/RP-1/Contracts/Earth Observation 2/EOS2MidasRep.cfg b/GameData/RP-1/Contracts/Earth Observation 2/EOS2MidasRep.cfg
new file mode 100644
index 00000000000..1352d2d1e37
--- /dev/null
+++ b/GameData/RP-1/Contracts/Earth Observation 2/EOS2MidasRep.cfg
@@ -0,0 +1,182 @@
+CONTRACT_TYPE
+{
+ name = EOS2MidasRep
+ title = Operational Early Warning Satellite (MIDAS)
+ group = EOS2
+ agent = Federation Aeronautique Internationale
+
+ description = Program: Advanced Earth Observation Satellites
Type: Optional
The initial tests were successful, but a single satellite cannot monitor the entire globe. We need to build a constellation.
Launch another operational rocket launch detection satellite to expand our early warning coverage.
Make sure your craft contains a Cosmic Ray experiment, an Infrared Radiometer and a Micrometeorite Detector. Place it in a polar orbit between 2,500 and 4,000 km.
Number of Contracts Completed: @index / @maxCompletions
Historical example: MIDAS 3-9.
+
+ synopsis = Launch an operational MIDAS Early Warning satellite.
+
+ completedMessage = Success! Another node in the missile defense network is active.
+
+ sortKey = 509
+
+ cancellable = true
+ declinable = false
+ autoAccept = false
+ minExpiry = 0
+ maxExpiry = 0
+ maxCompletions = 12 // Historical MIDAS program had about 12 launches
+ maxSimultaneous = 1
+ deadline = 0
+
+ targetBody = HomeWorld()
+
+ // ************ REWARDS ************
+ prestige = Trivial
+ advanceFunds = 0
+ rewardScience = 0
+ rewardFunds = 0
+ failureFunds = 0
+ rewardReputation = 40
+ failureReputation = 0
+
+ // ************ REQUIREMENTS ************
+
+ REQUIREMENT
+ {
+ name = ProgramActive
+ type = ProgramActive
+ program = EarthObservationScience2
+ }
+
+ REQUIREMENT
+ {
+ name = CompleteContract
+ type = CompleteContract
+ contractType = EOS2Midas1
+ title = Completed First MIDAS Satellite
+ }
+
+ DATA
+ {
+ type = int
+ index = $RepeatMidasSats_Count
+ }
+
+ BEHAVIOUR
+ {
+ name = IncrementTheCount
+ type = Expression
+
+ CONTRACT_COMPLETED_SUCCESS
+ {
+ RepeatMidasSats_Count = $RepeatMidasSats_Count + 1
+ }
+ }
+
+ //************* PARAMETERS ***************
+ PARAMETER
+ {
+ name = MIDAS
+ type = VesselParameterGroup
+ title = Early Warning Satellite
+ define = MIDAS
+
+ PARAMETER
+ {
+ name = NewVessel
+ type = NewVessel
+ title = Launch a new vessel
+ hideChildren = true
+ }
+ PARAMETER
+ {
+ name = Crewmembers
+ type = HasCrew
+ minCrew = 0
+ maxCrew = 0
+ title = Uncrewed
+ hideChildren = true
+ }
+
+ PARAMETER
+ {
+ name = OrbitSequence
+ type = Sequence
+ title = Survive in orbit for 180 days
+
+ PARAMETER
+ {
+ name = HasPower
+ type = HasResource
+ title = Craft must have Electric Charge
+ resource = ElectricCharge
+ minQuantity = 1.0
+ hideChildren = true
+ }
+
+ PARAMETER
+ {
+ name = PartValidation
+ type = PartValidation
+ title = Carry a Micrometeorite Detector
+ VALIDATE
+ {
+ MODULE
+ {
+ name = Experiment
+ experimentID = micrometeoriteDetect
+ }
+ }
+
+ }
+
+ PARAMETER
+ {
+ name = PartValidation
+ type = PartValidation
+ title = Carry a Cosmic Ray Detector
+ VALIDATE
+ {
+ MODULE
+ {
+ name = Experiment
+ experimentID = RP0cosmicRay1
+ }
+ }
+
+ }
+
+ PARAMETER
+ {
+ name = PartValidation
+ type = PartValidation
+ title = Carry a High Resolution Radiometer
+ VALIDATE
+ {
+ MODULE
+ {
+ name = Experiment
+ experimentID = RP0infraredRad2
+ }
+ }
+ }
+
+ PARAMETER
+ {
+ name = Orbit
+ type = Orbit
+ title = Orbit requirements
+ minPeA = 2500000 // 2,500 km
+ maxApA = 4000000 // 4,000 km
+ minInclination = 85
+ maxInclination = 95
+ disableOnStateChange = true
+ }
+
+ PARAMETER
+ {
+ name = Duration
+ type = Duration
+ duration = 180d
+ preWaitText = Check for stable orbit
+ waitingText = Checking for stable orbit
+ completionText = Stable orbit: Confirmed
+ }
+
+ }
+ }
+}
\ No newline at end of file
diff --git a/GameData/RP-1/Contracts/Earth Observation 2/EOS2Nimbus1.cfg b/GameData/RP-1/Contracts/Earth Observation 2/EOS2Nimbus1.cfg
new file mode 100644
index 00000000000..82f759e3459
--- /dev/null
+++ b/GameData/RP-1/Contracts/Earth Observation 2/EOS2Nimbus1.cfg
@@ -0,0 +1,137 @@
+CONTRACT_TYPE
+{
+ name = EOS2Nimbus1
+ title = Meteorological Satellite
+ group = EOS2
+ agent = Federation Aeronautique Internationale
+
+ description = Program: Advanced Earth Observation Satellites
Type: Required
Your government wants a satellite capable of more advanced meteorological research. Launch a satellite to fulfill their request.
Make sure your craft contains an Infrared Radiometer and a Basic TV Camera. Science requirements can be met over multiple launches.
Historical example: Nimbus 1.
+
+ synopsis = Launch a more advanced weather satellite.
+
+ completedMessage = Success! The data from this satellite allows for better weather prediction!
+
+ sortKey = 503
+
+ cancellable = true
+ declinable = false
+ autoAccept = false
+ minExpiry = 0
+ maxExpiry = 0
+ maxCompletions = 1
+ maxSimultaneous = 1
+ deadline = 0
+
+ targetBody = HomeWorld()
+
+ // ************ REWARDS ************
+ prestige = Trivial // 1.0x
+ advanceFunds = 0
+ rewardScience = 0
+ rewardFunds = 0
+ failureFunds = 0
+ rewardReputation = 40
+ failureReputation = 0 // was @rewardReputation
+
+ // ************ REQUIREMENTS ************
+
+ REQUIREMENT
+ {
+ name = ProgramActive
+ type = ProgramActive
+ program = EarthObservationScience2
+ }
+
+ PARAMETER
+ {
+ name = WeatherSat
+ type = VesselParameterGroup
+ title = Advanced Meteorological Satellite
+ define = WeatherSat
+
+ PARAMETER
+ {
+ name = NewVessel
+ type = NewVessel
+ title = Launch a new vessel
+ hideChildren = true
+ }
+ PARAMETER
+ {
+ name = Crewmembers
+ type = HasCrew
+ minCrew = 0
+ maxCrew = 0
+ title = Uncrewed
+ hideChildren = true
+ }
+
+ PARAMETER
+ {
+ name = OrbitSequence
+ type = Sequence
+ title = Survive in orbit for 180 days and transmit science
+
+ PARAMETER
+ {
+ name = HasPower
+ type = HasResource
+ title = Craft must have Electric Charge for 180 days
+ resource = ElectricCharge
+ minQuantity = 1.0
+ hideChildren = true
+ }
+
+ PARAMETER
+ {
+ name = PartValidation
+ type = PartValidation
+ title = Carry an Basic TV camera
+ VALIDATE
+ {
+ MODULE
+ {
+ name = Experiment
+ experimentID = RP0visibleImaging2
+ }
+ }
+ }
+
+ PARAMETER
+ {
+ name = CollectIR
+ type = RP1CollectScience
+ title = Transmit 90% of LEO infrared radiometry data from at least 8 biomes
+ targetBody = HomeWorld()
+ situation = InSpaceLow
+ experiment = RP0infraredRad2
+ fractionComplete = 0.9
+ fractionCompleteBiome = 0.95
+ minSubjectsToComplete = 8
+ }
+
+ PARAMETER
+ {
+ name = Orbit
+ type = Orbit
+ title = Orbit requirements
+ maxApA = 1000000 // 1k km
+ minApA = 800000 //800 km
+ minPeA = 400000 //400 km
+ minInclination = 90 // NIMBUS-1 was at 98.66°
+ maxInclination = 100
+ disableOnStateChange = true
+ }
+
+ PARAMETER
+ {
+ name = Duration
+ type = Duration
+ duration = 180d
+ preWaitText = Check for stable orbit
+ waitingText = Checking for stable orbit
+ completionText = Stable orbit: Confirmed
+ }
+ }
+ }
+}
diff --git a/GameData/RP-1/Contracts/Earth Observation 2/EOS2NimbusRep.cfg b/GameData/RP-1/Contracts/Earth Observation 2/EOS2NimbusRep.cfg
new file mode 100644
index 00000000000..1385b1c3cab
--- /dev/null
+++ b/GameData/RP-1/Contracts/Earth Observation 2/EOS2NimbusRep.cfg
@@ -0,0 +1,165 @@
+CONTRACT_TYPE
+{
+ name = EOS2NimbusRep
+ title = Operational Meteorological Satellite
+ group = EOS2
+ agent = Federation Aeronautique Internationale
+
+ description = Program: Advanced Earth Observation Satellites
Type: Optional
The prototype proved the concept, but reliable weather forecasting requires a stable platform. We need consistent, daily imagery from a circular polar orbit.
Launch an operational weather satellite to stabilize our weather network.
Make sure your craft contains an Infrared Radiometer and a Basic TV Camera. Place it in a circular polar orbit.
Number of Contracts Completed: @index / @maxCompletions
Historical example: Nimbus 2-6.
+
+ synopsis = Launch an operational Weather Satellite.
+
+ completedMessage = Success! We are receiving consistent global weather data.
+
+ sortKey = 512
+
+ cancellable = true
+ declinable = false
+ autoAccept = false
+ minExpiry = 0
+ maxExpiry = 0
+ maxCompletions = 6
+ maxSimultaneous = 1
+ deadline = 0
+
+ targetBody = HomeWorld()
+
+ // ************ REWARDS ************
+ prestige = Trivial
+ advanceFunds = 0
+ rewardScience = 0
+ rewardFunds = 0
+ failureFunds = 0
+ rewardReputation = 40
+ failureReputation = 0
+
+ // ************ REQUIREMENTS ************
+
+ REQUIREMENT
+ {
+ name = ProgramActive
+ type = ProgramActive
+ program = EarthObservationScience2
+ }
+
+ REQUIREMENT
+ {
+ name = CompleteContract
+ type = CompleteContract
+ contractType = EOS2Nimbus1
+ title = Completed First Nimbus Satellite
+ }
+
+ DATA
+ {
+ type = int
+ index = $RepeatNimbusSats_Count
+ }
+
+ BEHAVIOUR
+ {
+ name = IncrementTheCount
+ type = Expression
+
+ CONTRACT_COMPLETED_SUCCESS
+ {
+ RepeatNimbusSats_Count = $RepeatNimbusSats_Count + 1
+ }
+ }
+
+ //************* PARAMETERS ***************
+ PARAMETER
+ {
+ name = NimbusSat
+ type = VesselParameterGroup
+ title = Weather Satellite
+ define = NimbusSat
+
+ PARAMETER
+ {
+ name = NewVessel
+ type = NewVessel
+ title = Launch a new vessel
+ hideChildren = true
+ }
+ PARAMETER
+ {
+ name = Crewmembers
+ type = HasCrew
+ minCrew = 0
+ maxCrew = 0
+ title = Uncrewed
+ hideChildren = true
+ }
+
+ PARAMETER
+ {
+ name = OrbitSequence
+ type = Sequence
+ title = Survive in orbit for 180 days
+
+ PARAMETER
+ {
+ name = HasPower
+ type = HasResource
+ title = Craft must have Electric Charge
+ resource = ElectricCharge
+ minQuantity = 1.0
+ hideChildren = true
+ }
+
+ PARAMETER
+ {
+ name = PartValidation
+ type = PartValidation
+ title = Carry a Basic TV Camera
+ VALIDATE
+ {
+ MODULE
+ {
+ name = Experiment
+ experimentID = RP0visibleImaging2
+ }
+ }
+ }
+
+ PARAMETER
+ {
+ name = PartValidation
+ type = PartValidation
+ title = Carry a High Resolution Radiometer
+ VALIDATE
+ {
+ MODULE
+ {
+ name = Experiment
+ experimentID = RP0infraredRad2
+ }
+ }
+ }
+
+ PARAMETER
+ {
+ name = Orbit
+ type = Orbit
+ title = Reach Circular Polar Orbit (900-1,200 km)
+ minPeA = 900000 // 900 km
+ maxApA = 1200000 // 1,200 km
+ minInclination = 95
+ maxInclination = 105
+ maxEccentricity = 0.02
+ disableOnStateChange = true
+ }
+
+ PARAMETER
+ {
+ name = Duration
+ type = Duration
+ duration = 180d
+ preWaitText = Check for stable orbit
+ waitingText = Checking for stable orbit
+ completionText = Stable orbit: Confirmed
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/GameData/RP-1/Contracts/Earth Observation 2/EOS2OGO1.cfg b/GameData/RP-1/Contracts/Earth Observation 2/EOS2OGO1.cfg
new file mode 100644
index 00000000000..6112b1ab1ee
--- /dev/null
+++ b/GameData/RP-1/Contracts/Earth Observation 2/EOS2OGO1.cfg
@@ -0,0 +1,169 @@
+CONTRACT_TYPE
+{
+ name = EOS2OGO1
+ title = Orbiting Geophysical Observatory
+ group = EOS2
+ agent = Federation Aeronautique Internationale
+
+ description = Program: Advanced Earth Observation Satellites
Type: Required
Your government wants a satellite capable of more advanced geophysical research. Launch a satellite to fulfill their request.
Make sure your craft contains a Helium Magnetometer and a Mass Spectrometer. Science requirements can be met over multiple launches.
Historical example: OGO 1.
+
+ synopsis = Launch a geophysical research satellite.
+
+ completedMessage = Success! The data from this satellite allows for a better geodetic understanding of Earth!
+
+ sortKey = 502
+
+ cancellable = true
+ declinable = false
+ autoAccept = false
+ minExpiry = 0
+ maxExpiry = 0
+ maxCompletions = 1
+ maxSimultaneous = 1
+ deadline = 0
+
+ targetBody = HomeWorld()
+
+ // ************ REWARDS ************
+ prestige = Trivial // 1.0x
+ advanceFunds = 0
+ rewardScience = 0
+ rewardFunds = 0
+ failureFunds = 0
+ rewardReputation = 40
+ failureReputation = 0 // was @rewardReputation
+
+ // ************ REQUIREMENTS ************
+
+ REQUIREMENT
+ {
+ name = ProgramActive
+ type = ProgramActive
+ program = EarthObservationScience2
+ }
+
+ PARAMETER
+ {
+ name = OGO
+ type = VesselParameterGroup
+ title = Nuclear Test Monitoring Satellite
+ define = OGO
+
+ PARAMETER
+ {
+ name = NewVessel
+ type = NewVessel
+ title = Launch a new vessel
+ hideChildren = true
+ }
+ PARAMETER
+ {
+ name = Crewmembers
+ type = HasCrew
+ minCrew = 0
+ maxCrew = 0
+ title = Uncrewed
+ hideChildren = true
+ }
+
+ PARAMETER
+ {
+ name = OrbitSequence
+ type = Sequence
+ title = Survive in orbit for 180 days
+
+ PARAMETER
+ {
+ name = HasPower
+ type = HasResource
+ title = Craft must have Electric Charge for 180 days
+ resource = ElectricCharge
+ minQuantity = 1.0
+ hideChildren = true
+ }
+
+ PARAMETER
+ {
+ name = PartValidation
+ type = PartValidation
+ title = Carry a Helium magnetometer
+ VALIDATE
+ {
+ MODULE
+ {
+ name = Experiment
+ experimentID = RP0magScan2
+ }
+ }
+ }
+
+ PARAMETER
+ {
+ name = PartValidation
+ type = PartValidation
+ title = Carry a Radio and Plasma Wave Detector.
+ VALIDATE
+ {
+ MODULE
+ {
+ name = Experiment
+ experimentID = RP0RPWS1
+ }
+ }
+
+ } //VLF stand in
+
+ PARAMETER
+ {
+ name = PartValidation
+ type = PartValidation
+ title = Carry a Mass Spectrometer.
+ VALIDATE
+ {
+ MODULE
+ {
+ name = Experiment
+ experimentID = RP0massSpec1
+ }
+ }
+ }
+
+ PARAMETER
+ {
+ name = PartValidation
+ type = PartValidation
+ title = Carry a Cosmic Ray Science experiment.
+ VALIDATE
+ {
+ MODULE
+ {
+ name = Experiment
+ experimentID = RP0cosmicRay1
+ }
+ }
+ }
+
+ PARAMETER
+ {
+ name = Orbit
+ type = Orbit
+ title = Orbit requirements
+ minApA = 100000000 //100k km
+ minPeA = 250000 //250 km
+ minInclination = 30 // OGO-1 was 37.1°
+ maxInclination = 40
+ disableOnStateChange = true
+ }
+
+ PARAMETER
+ {
+ name = Duration
+ type = Duration
+ duration = 180d
+ preWaitText = Check for stable orbit
+ waitingText = Checking for stable orbit
+ completionText = Stable orbit: Confirmed
+ }
+ }
+ }
+}
diff --git a/GameData/RP-1/Contracts/Earth Observation 2/EOS2OGORep.cfg b/GameData/RP-1/Contracts/Earth Observation 2/EOS2OGORep.cfg
new file mode 100644
index 00000000000..7cec0307d23
--- /dev/null
+++ b/GameData/RP-1/Contracts/Earth Observation 2/EOS2OGORep.cfg
@@ -0,0 +1,194 @@
+CONTRACT_TYPE
+{
+ name = EOS2OGORep
+ title = Operational Geophysical Observatory
+ group = EOS2
+ agent = Federation Aeronautique Internationale
+
+ description = Program: Advanced Earth Observation Satellites
Type: Optional
The first Observatory has provided incredible data on the magnetosphere, but the space environment is dynamic and constantly changing. We need long-term monitoring.
Launch another OGO satellite into a highly elliptical orbit to continue the survey.
Make sure your craft contains a Magnetometer, RPWS, Mass Spectrometer, and Cosmic Ray detector. Place it in a highly eccentric orbit.
Number of Contracts Completed: @index / @maxCompletions
Historical example: OGO 3/5.
+
+ synopsis = Launch an operational OGO Geophysical satellite.
+
+ completedMessage = Success! The observatory is online and transmitting data.
+
+ sortKey = 510
+
+ cancellable = true
+ declinable = false
+ autoAccept = false
+ minExpiry = 0
+ maxExpiry = 0
+ maxCompletions = 6 // Historical OGO program had 6 satellites
+ maxSimultaneous = 1
+ deadline = 0
+
+ targetBody = HomeWorld()
+
+ // ************ REWARDS ************
+ prestige = Trivial
+ advanceFunds = 0
+ rewardScience = 0
+ rewardFunds = 0
+ failureFunds = 0
+ rewardReputation = 40
+ failureReputation = 0
+
+ // ************ REQUIREMENTS ************
+
+ REQUIREMENT
+ {
+ name = ProgramActive
+ type = ProgramActive
+ program = EarthObservationScience2
+ }
+
+ REQUIREMENT
+ {
+ name = CompleteContract
+ type = CompleteContract
+ contractType = EOS2OGO1
+ title = Completed First OGO Satellite
+ }
+
+ DATA
+ {
+ type = int
+ index = $RepeatOGOSats_Count
+ }
+
+ BEHAVIOUR
+ {
+ name = IncrementTheCount
+ type = Expression
+
+ CONTRACT_COMPLETED_SUCCESS
+ {
+ RepeatOGOSats_Count = $RepeatOGOSats_Count + 1
+ }
+ }
+
+ //************* PARAMETERS ***************
+ PARAMETER
+ {
+ name = OGO
+ type = VesselParameterGroup
+ title = Geophysical Observatory
+ define = OGO
+
+ PARAMETER
+ {
+ name = NewVessel
+ type = NewVessel
+ title = Launch a new vessel
+ hideChildren = true
+ }
+ PARAMETER
+ {
+ name = Crewmembers
+ type = HasCrew
+ minCrew = 0
+ maxCrew = 0
+ title = Uncrewed
+ hideChildren = true
+ }
+
+ PARAMETER
+ {
+ name = OrbitSequence
+ type = Sequence
+ title = Survive in orbit for 180 days
+
+ PARAMETER
+ {
+ name = HasPower
+ type = HasResource
+ resource = ElectricCharge
+ minQuantity = 1.0
+ title = Craft must have Electric Charge
+ hideChildren = true
+ }
+
+ PARAMETER
+ {
+ name = PartValidation
+ type = PartValidation
+ title = Carry a Helium Magnetometer
+ VALIDATE
+ {
+ MODULE
+ {
+ name = Experiment
+ experimentID = RP0magScan2
+ }
+ }
+ }
+
+ PARAMETER
+ {
+ name = PartValidation
+ type = PartValidation
+ title = Carry a Radio and Plasma Wave Detector
+ VALIDATE
+ {
+ MODULE
+ {
+ name = Experiment
+ experimentID = RP0RPWS1
+ }
+ }
+ }
+
+ PARAMETER
+ {
+ name = PartValidation
+ type = PartValidation
+ title = Carry a Mass Spectrometer
+ VALIDATE
+ {
+ MODULE
+ {
+ name = Experiment
+ experimentID = RP0massSpec1
+ }
+ }
+ }
+
+ PARAMETER
+ {
+ name = PartValidation
+ type = PartValidation
+ title = Carry a Cosmic Ray Detector
+ VALIDATE
+ {
+ MODULE
+ {
+ name = Experiment
+ experimentID = RP0cosmicRay1
+ }
+ }
+ }
+
+ PARAMETER
+ {
+ name = Orbit
+ type = Orbit
+ title = Orbit requirements (Eccentric, >100 Mm Apogee)
+ minApA = 100000000 // 100,000 km
+ minPeA = 250000 // 250 km
+ minInclination = 30
+ maxInclination = 40
+ disableOnStateChange = true
+ }
+
+ PARAMETER
+ {
+ name = Duration
+ type = Duration
+ duration = 180d
+ preWaitText = Check for stable orbit
+ waitingText = Checking for stable orbit
+ completionText = Stable orbit: Confirmed
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/GameData/RP-1/Contracts/Earth Observation 2/EOS2Vela1.cfg b/GameData/RP-1/Contracts/Earth Observation 2/EOS2Vela1.cfg
new file mode 100644
index 00000000000..16baa750383
--- /dev/null
+++ b/GameData/RP-1/Contracts/Earth Observation 2/EOS2Vela1.cfg
@@ -0,0 +1,137 @@
+CONTRACT_TYPE
+{
+ name = EOS2Vela1
+ title = Nuclear Test Monitoring Satellite
+ group = EOS2
+ agent = Federation Aeronautique Internationale
+
+ description = Program: Advanced Earth Observation Satellites
Type: Required
Your government wants satellites capable of monitoring the Earth for nuclear tests. Launch a satellite to fulfill their request.
Make sure your craft contains a Cosmic Ray experiment and an Infrared Radiometer.
Historical example: Vela 1A.
+
+ synopsis = Launch the first nuclear test monitoring satellite.
+
+ completedMessage = Success! The data from this satellite will allow us to detect any above surface nuclear test!
+
+ sortKey = 501
+
+ cancellable = true
+ declinable = false
+ autoAccept = false
+ minExpiry = 0
+ maxExpiry = 0
+ maxCompletions = 1
+ maxSimultaneous = 1
+ deadline = 0
+
+ targetBody = HomeWorld()
+
+ // ************ REWARDS ************
+ prestige = Trivial // 1.0x
+ advanceFunds = 0
+ rewardScience = 0
+ rewardFunds = 0
+ failureFunds = 0
+ rewardReputation = 40
+ failureReputation = 0 // was @rewardReputation
+
+ // ************ REQUIREMENTS ************
+
+ REQUIREMENT
+ {
+ name = ProgramActive
+ type = ProgramActive
+ program = EarthObservationScience2
+ }
+
+ PARAMETER
+ {
+ name = VelaSat
+ type = VesselParameterGroup
+ title = Nuclear Test Monitoring Satellite
+ define = VelaSat
+
+ PARAMETER
+ {
+ name = NewVessel
+ type = NewVessel
+ title = Launch a new vessel
+ hideChildren = true
+ }
+ PARAMETER
+ {
+ name = Crewmembers
+ type = HasCrew
+ minCrew = 0
+ maxCrew = 0
+ title = Uncrewed
+ hideChildren = true
+ }
+
+ PARAMETER
+ {
+ name = OrbitSequence
+ type = Sequence
+ title = Survive in orbit for 180 days
+
+ PARAMETER
+ {
+ name = HasPower
+ type = HasResource
+ title = Craft must have Electric Charge for 180 days
+ resource = ElectricCharge
+ minQuantity = 1.0
+ hideChildren = true
+ }
+ PARAMETER
+ {
+ name = PartValidation
+ type = PartValidation
+ title = Carry a Cosmic Ray Science experiment.
+ VALIDATE
+ {
+ MODULE
+ {
+ name = Experiment
+ experimentID = RP0cosmicRay1
+ }
+ }
+ }
+
+ PARAMETER
+ {
+ name = PartValidation
+ type = PartValidation
+ title = Carry a High Resolution Radiometer.
+ VALIDATE
+ {
+ MODULE
+ {
+ name = Experiment
+ experimentID = RP0infraredRad2
+ }
+ }
+ }
+
+ PARAMETER
+ {
+ name = Orbit
+ type = Orbit
+ title = Orbit requirements
+ maxApA = 300000000 //300k km
+ minPeA = 100000000 //100k km
+ minInclination = 35 // Vela 1A was at 39°-ish
+ maxInclination = 45
+ disableOnStateChange = true
+ }
+
+ PARAMETER
+ {
+ name = Duration
+ type = Duration
+ duration = 180d
+ preWaitText = Check for stable orbit
+ waitingText = Checking for stable orbit
+ completionText = Stable orbit: Confirmed
+ }
+ }
+ }
+}
diff --git a/GameData/RP-1/Contracts/Earth Observation 2/EOS2VelaRep.cfg b/GameData/RP-1/Contracts/Earth Observation 2/EOS2VelaRep.cfg
new file mode 100644
index 00000000000..b8b8d716bcd
--- /dev/null
+++ b/GameData/RP-1/Contracts/Earth Observation 2/EOS2VelaRep.cfg
@@ -0,0 +1,164 @@
+CONTRACT_TYPE
+{
+ name = EOS2VelaRep
+ title = Operational Nuclear Detection Satellite
+ group = EOS2
+ agent = Federation Aeronautique Internationale
+
+ description = Program: Advanced Earth Observation Satellites
Type: Optional
The initial nuclear detection satellites have proven effective, but global coverage requires a constellation. We need to ensure no nuclear test goes undetected, anywhere, anytime.
Launch another nuclear detection satellite to expand the network.
Make sure your craft contains a Cosmic Ray experiment and an Infrared Radiometer. Place it in a High Earth Orbit (>100,000 km).
Number of Contracts Completed: @index / @maxCompletions
Historical example: Vela 5/6.
+
+ synopsis = Launch an operational Nuclear Detection satellite.
+
+ completedMessage = Success! The satellite is active and monitoring for gamma ray bursts.
+
+ sortKey = 511
+
+ cancellable = true
+ declinable = false
+ autoAccept = false
+ minExpiry = 0
+ maxExpiry = 0
+ maxCompletions = 6 // Historical Vela program had 6 pairs (12 sats total, but I don't see the point in enforcing a pair esque contract)
+ maxSimultaneous = 1
+ deadline = 0
+
+ targetBody = HomeWorld()
+
+ // ************ REWARDS ************
+ prestige = Trivial
+ advanceFunds = 0
+ rewardScience = 0
+ rewardFunds = 0
+ failureFunds = 0
+ rewardReputation = 40
+ failureReputation = 0
+
+ // ************ REQUIREMENTS ************
+
+ REQUIREMENT
+ {
+ name = ProgramActive
+ type = ProgramActive
+ program = EarthObservationScience2
+ }
+
+ REQUIREMENT
+ {
+ name = CompleteContract
+ type = CompleteContract
+ contractType = EOS2Vela1
+ title = Completed First Vela Satellite
+ }
+
+ DATA
+ {
+ type = int
+ index = $RepeatVelaSats_Count
+ }
+
+ BEHAVIOUR
+ {
+ name = IncrementTheCount
+ type = Expression
+
+ CONTRACT_COMPLETED_SUCCESS
+ {
+ RepeatVelaSats_Count = $RepeatVelaSats_Count + 1
+ }
+ }
+
+ //************* PARAMETERS ***************
+ PARAMETER
+ {
+ name = VelaSat
+ type = VesselParameterGroup
+ title = Nuclear Detection Satellite
+ define = VelaSat
+
+ PARAMETER
+ {
+ name = NewVessel
+ type = NewVessel
+ title = Launch a new vessel
+ hideChildren = true
+ }
+ PARAMETER
+ {
+ name = Crewmembers
+ type = HasCrew
+ minCrew = 0
+ maxCrew = 0
+ title = Uncrewed
+ hideChildren = true
+ }
+
+ PARAMETER
+ {
+ name = OrbitSequence
+ type = Sequence
+ title = Survive in orbit for 180 days
+
+ PARAMETER
+ {
+ name = HasPower
+ type = HasResource
+ title = Craft must have Electric Charge
+ resource = ElectricCharge
+ minQuantity = 1.0
+ hideChildren = true
+ }
+
+ PARAMETER
+ {
+ name = PartValidation
+ type = PartValidation
+ title = Carry a Cosmic Ray Detector
+ VALIDATE
+ {
+ MODULE
+ {
+ name = Experiment
+ experimentID = RP0cosmicRay1
+ }
+ }
+ }
+
+ PARAMETER
+ {
+ name = PartValidation
+ type = PartValidation
+ title = Carry a High Resolution Radiometer
+ VALIDATE
+ {
+ MODULE
+ {
+ name = Experiment
+ experimentID = RP0infraredRad2
+ }
+ }
+ }
+
+ PARAMETER
+ {
+ name = Orbit
+ type = Orbit
+ title = Orbit requirements
+ minPeA = 100000000 // 100,000 km
+ maxApA = 300000000 // 300,000 km
+ minInclination = 30
+ maxInclination = 45
+ disableOnStateChange = true
+ }
+
+ PARAMETER
+ {
+ name = Duration
+ type = Duration
+ duration = 180d
+ preWaitText = Check for stable orbit
+ waitingText = Checking for stable orbit
+ completionText = Stable orbit: Confirmed
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/GameData/RP-1/Contracts/Earth Observation 3/EOS3ERTS.cfg b/GameData/RP-1/Contracts/Earth Observation 3/EOS3ERTS.cfg
new file mode 100644
index 00000000000..22138aca326
--- /dev/null
+++ b/GameData/RP-1/Contracts/Earth Observation 3/EOS3ERTS.cfg
@@ -0,0 +1,128 @@
+CONTRACT_TYPE
+{
+ name = EOS3ERTS
+ title = Earth Resources Technology Satellite (ERTS)
+ group = EOS3
+ agent = Federation Aeronautique Internationale
+
+ description = Program: Modern Earth Observation
Type: Required
Weather satellites look at the atmosphere, but we need to look at the ground. By analyzing different wavelengths of light, we can monitor crop health, water resources, and urban growth.
Launch the first dedicated Earth Resources satellite.
Make sure your craft contains an Improved TV Camera and reaches a Sun-Synchronous Orbit.
Historical example: ERTS-1 (Landsat 1).
+
+ synopsis = Launch the first Multi-Spectral Earth Resources satellite.
+
+ completedMessage = Success! The imagery is breathtaking. We can clearly distinguish between healthy and stressed vegetation from space.
+
+ sortKey = 505
+
+ cancellable = true
+ declinable = false
+ autoAccept = false
+ minExpiry = 0
+ maxExpiry = 0
+ maxCompletions = 1
+ maxSimultaneous = 1
+ deadline = 0
+
+ targetBody = HomeWorld()
+
+ // ************ REWARDS ************
+ prestige = Significant
+ advanceFunds = 0
+ rewardScience = 0
+ rewardFunds = 0
+ failureFunds = 0
+ rewardReputation = 60
+ failureReputation = 0
+
+ // ************ REQUIREMENTS ************
+
+ REQUIREMENT
+ {
+ name = ProgramActive
+ type = ProgramActive
+ program = EarthObservationScience3
+ }
+
+ PARAMETER
+ {
+ name = ERTS
+ type = VesselParameterGroup
+ title = Landsat Satellite
+ define = ERTS
+
+ PARAMETER
+ {
+ name = NewVessel
+ type = NewVessel
+ title = Launch a new vessel
+ hideChildren = true
+ }
+ PARAMETER
+ {
+ name = Crewmembers
+ type = HasCrew
+ minCrew = 0
+ maxCrew = 0
+ title = Uncrewed
+ hideChildren = true
+ }
+
+ PARAMETER
+ {
+ name = OrbitSequence
+ type = Sequence
+ title = Survive in orbit for 180 days
+
+ PARAMETER
+ {
+ name = HasPower
+ type = HasResource
+ title = Craft must have Electric Charge
+ resource = ElectricCharge
+ minQuantity = 1.0
+ hideChildren = true
+ }
+
+ PARAMETER
+ {
+ name = PartValidation
+ type = PartValidation
+ title = Carry an Improved TV Camera
+ VALIDATE
+ {
+ MODULE
+ {
+ name = Experiment
+ experimentID = RP0visibleImaging3
+ }
+ }
+ }
+
+ PARAMETER
+ {
+ name = Orbit
+ type = Orbit
+ title = Reach a Sun-Synchronous Orbit
+ minApA = 880000 // 880 km
+ maxApA = 940000 // 940 km
+ minPeA = 880000
+ maxPeA = 940000
+
+ minInclination = 98.0
+ maxInclination = 100.0
+
+ disableOnStateChange = true
+
+ }
+
+ PARAMETER
+ {
+ name = Duration
+ type = Duration
+ duration = 180d
+ preWaitText = Check for stable orbit
+ waitingText = Checking for stable orbit
+ completionText = Stable orbit: Confirmed
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/GameData/RP-1/Contracts/Earth Observation 3/EOS3GEOS.cfg b/GameData/RP-1/Contracts/Earth Observation 3/EOS3GEOS.cfg
new file mode 100644
index 00000000000..4c02785948e
--- /dev/null
+++ b/GameData/RP-1/Contracts/Earth Observation 3/EOS3GEOS.cfg
@@ -0,0 +1,111 @@
+CONTRACT_TYPE
+{
+ name = EOS3GEOS
+ title = Geodetic Earth Orbiting Satellite
+ group = EOS3
+ agent = Federation Aeronautique Internationale
+
+ description = Program: Modern Earth Observation
Type: Required
To navigate precisely in space and target ICBMs accurately, we need a perfect mathematical model of the Earth's shape and gravity field (the Geoid).
Launch a dedicated geodetic satellite to map gravitational anomalies.
Make sure your craft contains an Orbital Pertubation Experiment and is placed in a high-inclination eccentric orbit.
Historical example: GEOS-1 / GEOS-2.
+ synopsis = Launch a Geodetic research satellite.
+ completedMessage = Success! The tracking data and gravity scans have significantly improved our model of the Earth's Geoid.
+ sortKey = 503
+ cancellable = true
+ declinable = false
+ autoAccept = false
+ minExpiry = 0
+ maxExpiry = 0
+ maxCompletions = 1
+ maxSimultaneous = 1
+ deadline = 0
+ targetBody = HomeWorld()
+ // ************ REWARDS ************
+ prestige = Significant
+ advanceFunds = 0
+ rewardScience = 0
+ rewardFunds = 0
+ failureFunds = 0
+ rewardReputation = 50
+ failureReputation = 0
+ // ************ REQUIREMENTS ************
+ REQUIREMENT
+ {
+ name = ProgramActive
+ type = ProgramActive
+ program = EarthObservationScience3
+ }
+ PARAMETER
+ {
+ name = GEOS
+ type = VesselParameterGroup
+ title = Geodetic Satellite
+ define = GEOS
+ PARAMETER
+ {
+ name = NewVessel
+ type = NewVessel
+ title = Launch a new vessel
+ hideChildren = true
+ }
+ PARAMETER
+ {
+ name = Crewmembers
+ type = HasCrew
+ minCrew = 0
+ maxCrew = 0
+ title = Uncrewed
+ hideChildren = true
+ }
+ PARAMETER
+ {
+ name = OrbitSequence
+ type = Sequence
+ title = Survive in orbit for 180 days
+ PARAMETER
+ {
+ name = HasPower
+ type = HasResource
+ title = Craft must have Electric Charge
+ resource = ElectricCharge
+ minQuantity = 1.0
+ hideChildren = true
+ }
+
+ PARAMETER
+ {
+ name = PartValidation
+ type = PartValidation
+ title = Carry an Orbital Purturbation Experiment
+ VALIDATE
+ {
+ MODULE
+ {
+ name = Experiment
+ experimentID = RP0orbitalPurturbation1 // Would need some sort of gravimetric experiment
+ }
+ }
+ }
+
+ PARAMETER
+ {
+ name = Orbit
+ type = Orbit
+ title = Reach an eccentric orbit
+ minApA = 2000000 // 2,000 km
+ maxApA = 2500000 // 2,500 km
+ minPeA = 1000000 // 1,000 km
+ minInclination = 55
+ maxInclination = 110 // Allows for GEOS-1 (59deg) or GEOS-2 (105deg)
+ disableOnStateChange = true
+ }
+ PARAMETER
+ {
+ name = Duration
+ type = Duration
+ duration = 180d
+ preWaitText = Check for stable orbit
+ waitingText = Checking for stable orbit
+ completionText = Stable orbit: Confirmed
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/GameData/RP-1/Contracts/Earth Observation 3/EOS3GEOSRep.cfg b/GameData/RP-1/Contracts/Earth Observation 3/EOS3GEOSRep.cfg
new file mode 100644
index 00000000000..a767b8bd8bb
--- /dev/null
+++ b/GameData/RP-1/Contracts/Earth Observation 3/EOS3GEOSRep.cfg
@@ -0,0 +1,150 @@
+CONTRACT_TYPE
+{
+ name = EOS3GEOSRep
+ title = Operational Geodetic Satellite
+ group = EOS3
+ agent = Federation Aeronautique Internationale
+
+ description = Program: Modern Earth Observation
Type: Optional
The initial geodetic satellite has provided a baseline, but to achieve the precision required for ICBM targeting and orbital navigation, we need a denser dataset.
Launch an operational GEOS satellite to refine our map of the Earth's gravitational field.
Make sure your craft contains a Gravity Scan experiment (Gravioli Detector) and is placed in a high-inclination eccentric orbit.
Number of Contracts Completed: @index / @maxCompletions
Historical example: GEOS 2/3.
+
+ synopsis = Launch an operational Geodetic research satellite.
+
+ completedMessage = Success! The gravity model is becoming more precise with every pass.
+
+ sortKey = 514
+
+ cancellable = true
+ declinable = false
+ autoAccept = false
+ minExpiry = 0
+ maxExpiry = 0
+ maxCompletions = 3 // GEOS 1, 2, and 3
+ maxSimultaneous = 1
+ deadline = 0
+
+ targetBody = HomeWorld()
+
+ // ************ REWARDS ************
+ prestige = Trivial
+ advanceFunds = 0
+ rewardScience = 0
+ rewardFunds = 0
+ failureFunds = 0
+ rewardReputation = 40
+ failureReputation = 0
+
+ // ************ REQUIREMENTS ************
+
+ REQUIREMENT
+ {
+ name = ProgramActive
+ type = ProgramActive
+ program = EarthObservationScience3
+ }
+
+ REQUIREMENT
+ {
+ name = CompleteContract
+ type = CompleteContract
+ contractType = EOS3GEOS
+ title = Completed First GEOS Satellite
+ }
+
+ DATA
+ {
+ type = int
+ index = $RepeatGEOSSats_Count
+ }
+
+ BEHAVIOUR
+ {
+ name = IncrementTheCount
+ type = Expression
+
+ CONTRACT_COMPLETED_SUCCESS
+ {
+ RepeatGEOSSats_Count = $RepeatGEOSSats_Count + 1
+ }
+ }
+
+ //************* PARAMETERS ***************
+ PARAMETER
+ {
+ name = GEOS
+ type = VesselParameterGroup
+ title = Geodetic Satellite
+ define = GEOS
+
+ PARAMETER
+ {
+ name = NewVessel
+ type = NewVessel
+ title = Launch a new vessel
+ hideChildren = true
+ }
+ PARAMETER
+ {
+ name = Crewmembers
+ type = HasCrew
+ minCrew = 0
+ maxCrew = 0
+ title = Uncrewed
+ hideChildren = true
+ }
+
+ PARAMETER
+ {
+ name = OrbitSequence
+ type = Sequence
+ title = Survive in orbit for 180 days
+
+ PARAMETER
+ {
+ name = HasPower
+ type = HasResource
+ title = Craft must have Electric Charge
+ resource = ElectricCharge
+ minQuantity = 1.0
+ hideChildren = true
+ }
+
+ PARAMETER
+ {
+ name = PartValidation
+ type = PartValidation
+ title = Carry an Orbital Purturbation Experiment
+ VALIDATE
+ {
+ MODULE
+ {
+ name = Experiment
+ experimentID = RP0orbitalPurturbation1 // Would need some sort of gravimetric experiment
+ }
+ }
+ }
+
+ PARAMETER
+ {
+ name = Orbit
+ type = Orbit
+ title = Reach an eccentric orbit
+ minApA = 2000000 // 2,000 km
+ maxApA = 2500000 // 2,500 km
+ minPeA = 1000000 // 1,000 km
+ minInclination = 55
+ maxInclination = 110
+ disableOnStateChange = true
+ }
+
+ PARAMETER
+ {
+ name = Duration
+ type = Duration
+ duration = 180d
+ preWaitText = Check for stable orbit
+ waitingText = Checking for stable orbit
+ completionText = Stable orbit: Confirmed
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/GameData/RP-1/Contracts/Earth Observation 3/EOS3GOES.cfg b/GameData/RP-1/Contracts/Earth Observation 3/EOS3GOES.cfg
new file mode 100644
index 00000000000..38b4a270d87
--- /dev/null
+++ b/GameData/RP-1/Contracts/Earth Observation 3/EOS3GOES.cfg
@@ -0,0 +1,140 @@
+CONTRACT_TYPE
+{
+ name = EOS3GOES
+ title = Geostationary Operational Environmental Satellite
+ group = EOS3
+ agent = Federation Aeronautique Internationale
+
+ description = Program: Modern Earth Observation
Type: Required
Polar satellites only see a location twice a day. To predict severe storms and hurricanes effectively, we need continuous monitoring of the entire hemisphere.
Launch a satellite into a Geostationary Orbit to provide real-time weather tracking.
Make sure your craft contains a Two-Channel Infrared Radiometer and an Improved TV Camera.
Historical example: SMS-1 / GOES-1.
+
+ synopsis = Launch the first Geostationary Weather Satellite.
+
+ completedMessage = Success! We are receiving the first full-disk images of the Earth.
+
+ sortKey = 504
+
+ cancellable = true
+ declinable = false
+ autoAccept = false
+ minExpiry = 0
+ maxExpiry = 0
+ maxCompletions = 1
+ maxSimultaneous = 1
+ deadline = 0
+
+ targetBody = HomeWorld()
+
+ // ************ REWARDS ************
+ prestige = Exceptional
+ advanceFunds = 0
+ rewardScience = 0
+ rewardFunds = 0
+ failureFunds = 0
+ rewardReputation = 80
+ failureReputation = 0
+
+ // ************ REQUIREMENTS ************
+
+ REQUIREMENT
+ {
+ name = ProgramActive
+ type = ProgramActive
+ program = EarthObservationScience3
+ }
+
+ PARAMETER
+ {
+ name = GOES
+ type = VesselParameterGroup
+ title = GOES Satellite
+ define = GOES
+
+ PARAMETER
+ {
+ name = NewVessel
+ type = NewVessel
+ title = Launch a new vessel
+ hideChildren = true
+ }
+ PARAMETER
+ {
+ name = Crewmembers
+ type = HasCrew
+ minCrew = 0
+ maxCrew = 0
+ title = Uncrewed
+ hideChildren = true
+ }
+
+ PARAMETER
+ {
+ name = OrbitSequence
+ type = Sequence
+ title = Survive in orbit for 180 days
+
+ PARAMETER
+ {
+ name = HasPower
+ type = HasResource
+ resource = ElectricCharge
+ minQuantity = 1.0
+ title = Craft must have Electric Charge
+ hideChildren = true
+ }
+
+ PARAMETER
+ {
+ name = PartValidation
+ type = PartValidation
+ title = Carry a Two-Channel Infrared Radiometer
+ VALIDATE
+ {
+ MODULE
+ {
+ name = Experiment
+ experimentID = RP0infraredRad3
+ }
+ }
+ }
+
+ PARAMETER
+ {
+ name = PartValidation
+ type = PartValidation
+ title = Carry an Improved TV Camera
+ VALIDATE
+ {
+ MODULE
+ {
+ name = Experiment
+ experimentID = RP0visibleImaging3
+ }
+ }
+ }
+
+ PARAMETER
+ {
+ name = Orbit
+ type = Orbit
+ title = Reach a Geostationary Orbit
+ minPeriod = 23h 50m 0s
+ maxPeriod = 24h 00m 0s
+
+ maxEccentricity = 0.01 // Circular
+ maxInclination = 5.0 // Equatorial
+
+ disableOnStateChange = true
+ }
+
+ PARAMETER
+ {
+ name = Duration
+ type = Duration
+ duration = 180d
+ preWaitText = Check for stable orbit
+ waitingText = Checking for stable orbit
+ completionText = Stable orbit: Confirmed
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/GameData/RP-1/Contracts/Earth Observation 3/EOS3GOESRep.cfg b/GameData/RP-1/Contracts/Earth Observation 3/EOS3GOESRep.cfg
new file mode 100644
index 00000000000..3f6798f0500
--- /dev/null
+++ b/GameData/RP-1/Contracts/Earth Observation 3/EOS3GOESRep.cfg
@@ -0,0 +1,166 @@
+CONTRACT_TYPE
+{
+ name = EOS3GOESRep
+ title = Operational Geostationary Weather Satellite
+ group = EOS3
+ agent = Federation Aeronautique Internationale
+
+ description = Program: Modern Earth Observation
Type: Optional
The first synchronous weather satellite was a triumph. Now we must maintain a permanent watch over the hemisphere to track hurricane development and severe storms.
Launch an operational GOES satellite into geostationary orbit.
Make sure your craft contains a Two-Channel Infrared Radiometer and an Improved TV Camera. Place it in a Geostationary Orbit.
Number of Contracts Completed: @index / @maxCompletions
Historical example: GOES 2-7.
+
+ synopsis = Launch an operational Geostationary Weather Satellite.
+
+ completedMessage = Success! The satellite is on station and transmitting full-disk imagery.
+
+ sortKey = 513
+
+ cancellable = true
+ declinable = false
+ autoAccept = false
+ minExpiry = 0
+ maxExpiry = 0
+ maxCompletions = 6 // Historical GOES-1 through 7 series
+ maxSimultaneous = 1
+ deadline = 0
+
+ targetBody = HomeWorld()
+
+ // ************ REWARDS ************
+ prestige = Trivial
+ advanceFunds = 0
+ rewardScience = 0
+ rewardFunds = 0
+ failureFunds = 0
+ rewardReputation = 50
+ failureReputation = 0
+
+ // ************ REQUIREMENTS ************
+
+ REQUIREMENT
+ {
+ name = ProgramActive
+ type = ProgramActive
+ program = EarthObservationScience3
+ }
+
+ REQUIREMENT
+ {
+ name = CompleteContract
+ type = CompleteContract
+ contractType = EOS3GOES
+ title = Completed First GOES Satellite
+ }
+
+ DATA
+ {
+ type = int
+ index = $RepeatGOESSats_Count
+ }
+
+ BEHAVIOUR
+ {
+ name = IncrementTheCount
+ type = Expression
+
+ CONTRACT_COMPLETED_SUCCESS
+ {
+ RepeatGOESSats_Count = $RepeatGOESSats_Count + 1
+ }
+ }
+
+ //************* PARAMETERS ***************
+ PARAMETER
+ {
+ name = GOESSat
+ type = VesselParameterGroup
+ title = Operational GOES Satellite
+ define = GOESSat
+
+ PARAMETER
+ {
+ name = NewVessel
+ type = NewVessel
+ title = Launch a new vessel
+ hideChildren = true
+ }
+ PARAMETER
+ {
+ name = Crewmembers
+ type = HasCrew
+ minCrew = 0
+ maxCrew = 0
+ title = Uncrewed
+ hideChildren = true
+ }
+
+ PARAMETER
+ {
+ name = OrbitSequence
+ type = Sequence
+ title = Survive in orbit for 180 days
+
+ PARAMETER
+ {
+ name = HasPower
+ type = HasResource
+ title = Craft must have Electric Charge
+ resource = ElectricCharge
+ minQuantity = 1.0
+ hideChildren = true
+ }
+
+ PARAMETER
+ {
+ name = PartValidation
+ type = PartValidation
+ title = Carry a Two-Channel Infrared Radiometer
+ VALIDATE
+ {
+ MODULE
+ {
+ name = Experiment
+ experimentID = RP0infraredRad3
+ }
+ }
+ }
+
+ PARAMETER
+ {
+ name = PartValidation
+ type = PartValidation
+ title = Carry an Improved TV Camera
+ VALIDATE
+ {
+ MODULE
+ {
+ name = Experiment
+ experimentID = RP0visibleImaging3
+ }
+ }
+ }
+
+ PARAMETER
+ {
+ name = Orbit
+ type = Orbit
+ title = Reach Geostationary Orbit
+ minPeriod = 23h 50m 0s
+ maxPeriod = 24h 00m 0s
+
+ maxEccentricity = 0.01 // Circular
+ maxInclination = 5.0 // Equatorial
+
+ disableOnStateChange = true
+ }
+
+ PARAMETER
+ {
+ name = Duration
+ type = Duration
+ duration = 180d
+ preWaitText = Check for stable orbit
+ waitingText = Checking for stable orbit
+ completionText = Stable orbit: Confirmed
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/GameData/RP-1/Contracts/Earth Observation 3/EOS3Hexagon.cfg b/GameData/RP-1/Contracts/Earth Observation 3/EOS3Hexagon.cfg
new file mode 100644
index 00000000000..20ba75ef2dd
--- /dev/null
+++ b/GameData/RP-1/Contracts/Earth Observation 3/EOS3Hexagon.cfg
@@ -0,0 +1,114 @@
+CONTRACT_TYPE
+{
+ name = EOS3Hexagon
+ title = High Resolution Earth Imaging Satellite
+ group = EOS3
+ agent = Federation Aeronautique Internationale
+
+ description = Program: Modern Earth Observation
Type: Required
Your government wants high resolution imagery of Earth.
Launch an analog film camera and retrieve its film.
Make sure your craft contains an High Resolution Film Camera and a system to return the film canister for processing. Collection of all available science will require multiple launches due to film storage limitations onboard the vehicle.
Historical example: KH-9 (Hexagon).
+ synopsis = Launch a High Resolution Earth Imaging satellite.
+ completedMessage = Success! The film returned from this satellite allows for detailed analysis of Earth.
+ sortKey = 507
+ cancellable = true
+ declinable = false
+ autoAccept = false
+ maxCompletions = 1
+ maxSimultaneous = 1
+ deadline = 0
+ targetBody = HomeWorld()
+
+ // Rewards
+ prestige = Significant
+ rewardReputation = 50
+ REQUIREMENT
+ {
+ name = ProgramActive
+ type = ProgramActive
+ program = EarthObservationScience3
+ }
+ PARAMETER
+ {
+ name = Hexagon
+ type = VesselParameterGroup
+ title = Environmental Satellite
+ define = Hexagon
+ PARAMETER
+ {
+ name = NewVessel
+ type = NewVessel
+ hideChildren = true
+ }
+ PARAMETER
+ {
+ name = Crewmembers
+ type = HasCrew
+ minCrew = 0
+ maxCrew = 0
+ hideChildren = true
+ }
+ PARAMETER
+ {
+ name = OrbitSequence
+ type = Sequence
+ title = Collect imagery from orbit
+
+ PARAMETER
+ {
+ name = HasPower
+ type = HasResource
+ resource = ElectricCharge
+ minQuantity = 1.0
+ title = Craft must have Electric Charge after 8 hours
+ hideChildren = true
+ }
+
+ PARAMETER
+ {
+ name = PartValidation
+ type = PartValidation
+ title = Carry film from a High Resolution Film Camera
+ VALIDATE
+ {
+ MODULE
+ {
+ name = Experiment
+ experimentID = RP0photos3
+ }
+ }
+ }
+
+ PARAMETER
+ {
+ name = Orbit
+ type = Orbit
+ title = Orbit requirements
+ maxApA = 300000
+ minPeA = 160000
+ minInclination = 95.5
+ maxInclination = 98.5
+ disableOnStateChange = true
+ }
+
+ PARAMETER
+ {
+ name = Duration
+ type = Duration
+
+ duration = 7d // Reflects KH-7 mission length
+
+ preWaitText = Achieve desired orbit
+ waitingText = Collect imagery
+ completionText = Imagery collection complete
+ }
+
+ PARAMETER
+ {
+ name = ReturnHome
+ type = RP1ReturnHome
+ title = Return the film to the surface
+ hideChildren = true
+ completeInSequence = true
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/GameData/RP-1/Contracts/Earth Observation 3/EOS3HexagonRep.cfg b/GameData/RP-1/Contracts/Earth Observation 3/EOS3HexagonRep.cfg
new file mode 100644
index 00000000000..cffc7585208
--- /dev/null
+++ b/GameData/RP-1/Contracts/Earth Observation 3/EOS3HexagonRep.cfg
@@ -0,0 +1,156 @@
+CONTRACT_TYPE
+{
+ name = EOS3HexagonRep
+ title = High Resolution Earth Imaging Satellite
+ group = EOS3
+ agent = Federation Aeronautique Internationale
+
+ description = Program: Early Earth Observation Satellites
Type: Optional
With orbital imagery now a proven capability, send up a follow-on early-generation imagery satellite for a longer duration in orbit. This will allow the collection of far more data with repeat passes over the same points on the surface. Make sure your craft contains an High Resolution Film Camera and a system to return the film canister for processing. Collection of all available science will require multiple launches due to film storage limitations onboard the vehicle.
Number of Contracts Completed: @index / @maxCompletions
Historical example: HEXAGON/Keyhole-7
+
+ synopsis = Launch dedicated High Resolution Imagery satellites for longer missions.
+
+ completedMessage = Longterm high resolution imagery satellites are now a proven technology.
+
+ sortKey = 508
+
+ cancellable = true
+ declinable = false
+ autoAccept = false
+ minExpiry = 0
+ maxExpiry = 0
+ maxCompletions = 8
+ maxSimultaneous = 1
+ deadline = 0
+
+ targetBody = HomeWorld()
+
+ // ************ REWARDS ************
+ prestige = Trivial // 1.0x
+ advanceFunds = 0
+ rewardScience = 0
+ rewardFunds = 0
+ failureFunds = 0
+ rewardReputation = 80
+ failureReputation = 0 // was @rewardReputation
+
+ // ************ REQUIREMENTS ************
+
+ REQUIREMENT
+ {
+ name = ProgramActive
+ type = ProgramActive
+ program = EarthObservationScience3
+ }
+
+ REQUIREMENT
+ { name = CompleteContract
+ type = CompleteContract
+ contractType = EOS3Hexagon
+ title = Completed High Resolution Earth Imaging Satellite
+ }
+
+ DATA
+ {
+ type = int
+ index = $RepeatHexagonSats_Count
+ }
+
+ BEHAVIOUR
+ {
+ name = IncrementTheCount
+ type = Expression
+
+ CONTRACT_COMPLETED_SUCCESS
+ {
+ RepeatHexagonSats_Count = $RepeatHexagonSats_Count + 1
+ }
+ }
+
+ //************* PARAMETERS ***************
+ PARAMETER
+ {
+ name = Hexagon2
+ type = VesselParameterGroup
+ title = Higher resolution imagery satellite
+ define = Hexagon2
+
+ PARAMETER
+ {
+ name = NewVessel
+ type = NewVessel
+ title = Launch a new vessel
+ hideChildren = true
+ }
+ PARAMETER
+ {
+ name = Crewmembers
+ type = HasCrew
+ minCrew = 0
+ maxCrew = 0
+ title = Uncrewed
+ hideChildren = true
+ }
+
+ PARAMETER
+ {
+ name = OrbitSequence
+ type = Sequence
+ title = Remain in orbit to gather imagery
+
+ PARAMETER
+ {
+ name = HasPower
+ type = HasResource
+ title = Craft must have Electric Charge after 2 days
+ resource = ElectricCharge
+ minQuantity = 1.0
+ hideChildren = true
+ }
+
+ PARAMETER
+ {
+ name = PartValidation
+ type = PartValidation
+ title = Carry film from High Resolution Film Camera
+ VALIDATE
+ {
+ MODULE
+ {
+ name = Experiment
+ experimentID = RP0photos3
+ }
+ }
+ }
+ PARAMETER
+ {
+ name = Orbit
+ type = Orbit
+ title = Orbit requirements
+ maxApA = 300000
+ minPeA = 160000
+ minInclination = 95.5
+ maxInclination = 98.5
+ disableOnStateChange = true
+ }
+
+ PARAMETER
+ {
+ name = Duration
+ type = Duration
+
+ duration = 7d //reflects KH-7 mission length
+
+ preWaitText = Achieve desired orbit
+ waitingText = Commencing collection
+ completionText = Imagery collection complete
+ }
+
+ PARAMETER
+ {
+ name = ReturnHome
+ type = RP1ReturnHome
+ title = Return the film for processing
+ }
+ }
+ }
+}
diff --git a/GameData/RP-1/Contracts/Earth Observation 3/EOS3Magsat.cfg b/GameData/RP-1/Contracts/Earth Observation 3/EOS3Magsat.cfg
new file mode 100644
index 00000000000..ae31404ee29
--- /dev/null
+++ b/GameData/RP-1/Contracts/Earth Observation 3/EOS3Magsat.cfg
@@ -0,0 +1,108 @@
+CONTRACT_TYPE
+{
+ name = EOS3Magsat
+ title = Crustal Magnetic Mapping
+ group = EOS3
+ agent = Federation Aeronautique Internationale
+
+ description = Program: Modern Earth Observation
Type: Required
Previous magnetic satellites flew high to study the magnetosphere. We want to fly low to map the magnetic anomalies in the Earth's crust itself.
Make sure your craft contains a Helium Magnetometer and is placed in a high-inclination LEO orbit.
Historical example: Explorer-61A / Magsat
+ synopsis = Launch a Low-Orbit Magnetic Surveyor.
+ completedMessage = Success! We have a complete 3D vector map of the crustal field.
+
+ sortKey = 508
+ cancellable = true
+ declinable = false
+ autoAccept = false
+ maxCompletions = 1
+ maxSimultaneous = 1
+ deadline = 0
+
+ targetBody = HomeWorld()
+
+ prestige = Trivial
+ rewardReputation = 40
+
+ REQUIREMENT
+ {
+ name = ProgramActive
+ type = ProgramActive
+ program = EarthObservationScience3
+ }
+
+ PARAMETER
+ {
+ name = Magsat
+ type = VesselParameterGroup
+ title = Magsat
+ define = Magsat
+
+ PARAMETER
+ {
+ name = NewVessel
+ type = NewVessel
+ hideChildren = true
+ }
+ PARAMETER
+ {
+ name = Crewmembers
+ type = HasCrew
+ minCrew = 0
+ maxCrew = 0
+ hideChildren = true
+ }
+
+ PARAMETER
+ {
+ name = OrbitSequence
+ type = Sequence
+ title = Survive in Low Orbit for 90 days
+
+ PARAMETER
+ {
+ name = HasPower
+ type = HasResource
+ resource = ElectricCharge
+ minQuantity = 1.0
+ hideChildren = true
+ }
+
+ PARAMETER
+ {
+ name = PartValidation
+ type = PartValidation
+ title = Carry a Helium Magnetometer
+ VALIDATE
+ {
+ MODULE
+ {
+ name = Experiment
+ experimentID = RP0magScan2
+ }
+ }
+ }
+
+ PARAMETER
+ {
+ name = Orbit
+ type = Orbit
+ title = Reach a highly inclined orbit
+ minApA = 300000
+ maxApA = 600000
+ minPeA = 300000
+ maxPeA = 550000
+ minInclination = 96
+ maxInclination = 98
+ disableOnStateChange = true
+ }
+
+ PARAMETER
+ {
+ name = Duration
+ type = Duration
+ duration = 90d
+ preWaitText = Check for stable orbit
+ completionText = Mapping complete
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/GameData/RP-1/Contracts/Earth Observation 3/EOS3Nimbus7.cfg b/GameData/RP-1/Contracts/Earth Observation 3/EOS3Nimbus7.cfg
new file mode 100644
index 00000000000..1509da96f71
--- /dev/null
+++ b/GameData/RP-1/Contracts/Earth Observation 3/EOS3Nimbus7.cfg
@@ -0,0 +1,138 @@
+CONTRACT_TYPE
+{
+ name = EOS3Nimbus7
+ title = Environmental Monitoring Satellite
+ group = EOS3
+ agent = Federation Aeronautique Internationale
+
+ description = Program: Modern Earth Observation
Type: Optional
We have conquered weather and land mapping, but we are blind to the chemistry of our atmosphere. Scientists are concerned about ozone depletion and ocean health.
Launch a multi-instrument platform to monitor atmospheric gases and ocean pigments.
Make sure your craft contains a Gas Chromatograph-Mass Spectrometer and an Improved TV Camera and is placed in a high-inclination eccentric orbit.
Historical example: Nimbus-7.
+
+ synopsis = Launch an Environmental Monitoring satellite.
+ completedMessage = Success! The TOMS data is revealing worrying trends in the ozone layer over Antarctica.
+
+ sortKey = 507
+ cancellable = true
+ declinable = false
+ autoAccept = false
+ maxCompletions = 1
+ maxSimultaneous = 1
+ deadline = 0
+
+ targetBody = HomeWorld()
+
+ // Rewards
+ prestige = Significant
+ rewardReputation = 50
+
+ REQUIREMENT
+ {
+ name = ProgramActive
+ type = ProgramActive
+ program = EarthObservationScience3
+ }
+
+ PARAMETER
+ {
+ name = Nimbus7
+ type = VesselParameterGroup
+ title = Environmental Satellite
+ define = Nimbus7
+
+ PARAMETER
+ {
+ name = NewVessel
+ type = NewVessel
+ hideChildren = true
+ }
+ PARAMETER
+ {
+ name = Crewmembers
+ type = HasCrew
+ minCrew = 0
+ maxCrew = 0
+ hideChildren = true
+ }
+
+ PARAMETER
+ {
+ name = OrbitSequence
+ type = Sequence
+ title = Survive in orbit for 180 days
+
+ PARAMETER
+ {
+ name = HasPower
+ type = HasResource
+ resource = ElectricCharge
+ minQuantity = 1.0
+ hideChildren = true
+ }
+ PARAMETER
+ {
+ name = PartValidation
+ type = PartValidation
+ title = Carry a Gas Chromatograph-Mass Spectrometer
+ VALIDATE
+ {
+ MODULE
+ {
+ name = Experiment
+ experimentID = RP0massSpec4
+ }
+ }
+ }
+
+ PARAMETER
+ {
+ name = PartValidation
+ type = PartValidation
+ title = Carry an Improved TV Camera
+ VALIDATE
+ {
+ MODULE
+ {
+ name = Experiment
+ experimentID = RP0visibleImaging3
+ }
+ }
+ }
+
+ PARAMETER
+ {
+ name = PartValidation
+ type = PartValidation
+ title = Carry an Extreme UV Spectrometer
+ VALIDATE
+ {
+ MODULE
+ {
+ name = Experiment
+ experimentID = RP0imageSpec2
+ }
+ }
+ }
+
+ PARAMETER
+ {
+ name = Orbit
+ type = Orbit
+ title = Reach Sun-Synchronous Orbit (900-1000 km)
+ minApA = 900000
+ maxApA = 1000000
+ minPeA = 900000
+ minInclination = 98
+ maxInclination = 100
+ disableOnStateChange = true
+ }
+
+ PARAMETER
+ {
+ name = Duration
+ type = Duration
+ duration = 180d
+ preWaitText = Check for stable orbit
+ completionText = Stable orbit: Confirmed
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/GameData/RP-1/Contracts/Earth Observation 3/EOS3SAR.cfg b/GameData/RP-1/Contracts/Earth Observation 3/EOS3SAR.cfg
new file mode 100644
index 00000000000..42b7ed0f364
--- /dev/null
+++ b/GameData/RP-1/Contracts/Earth Observation 3/EOS3SAR.cfg
@@ -0,0 +1,131 @@
+CONTRACT_TYPE
+{
+ name = EOS3SAR
+ title = Synthetic Aperture Radar Satellite
+ group = EOS3
+ agent = Federation Aeronautique Internationale
+
+ description = Program: Modern Earth Observation
Type: Required
Optical photography is limited by cloud cover and lighting conditions. Your government requires an all-weather oceanographic monitoring solution.
Launch a satellite equipped with Synthetic Aperture Radar capability (simulated via Sounding Payload) to map ocean wave heights and surface features regardless of weather.
Make sure your craft is in a polar, sun-synchronous orbit.
Historical example: Seasat.
+
+ synopsis = Launch a SAR Oceanographic satellite.
+
+ completedMessage = Success! We have generated the first high-resolution radar images of the ocean surface!
+
+ sortKey = 503
+
+ cancellable = true
+ declinable = false
+ autoAccept = false
+ minExpiry = 0
+ maxExpiry = 0
+ maxCompletions = 1
+ maxSimultaneous = 1
+ deadline = 0
+
+ targetBody = HomeWorld()
+
+ // ************ REWARDS ************
+ prestige = Significant
+ advanceFunds = 0
+ rewardScience = 0
+ rewardFunds = 0
+ failureFunds = 0
+ rewardReputation = 60
+ failureReputation = 0
+
+ // ************ REQUIREMENTS ************
+
+ REQUIREMENT
+ {
+ name = ProgramActive
+ type = ProgramActive
+ program = EarthObservationScience3
+ }
+
+ PARAMETER
+ {
+ name = Seasat
+ type = VesselParameterGroup
+ title = SAR Satellite
+ define = Seasat
+
+ PARAMETER
+ {
+ name = NewVessel
+ type = NewVessel
+ title = Launch a new vessel
+ hideChildren = true
+ }
+ PARAMETER
+ {
+ name = Crewmembers
+ type = HasCrew
+ minCrew = 0
+ maxCrew = 0
+ title = Uncrewed
+ hideChildren = true
+ }
+
+ PARAMETER
+ {
+ name = OrbitSequence
+ type = Sequence
+ title = Survive in orbit for 180 days
+
+ PARAMETER
+ {
+ name = HasPower
+ type = HasResource
+ title = Craft must have Electric Charge
+ resource = ElectricCharge
+ minQuantity = 1.0
+ hideChildren = true
+ }
+
+ PARAMETER
+ {
+ name = HasSoundingPayload
+ type = HasResource
+ title = Have a SoundingPayload of at least 500 units on the craft
+ resource = SoundingPayload
+ minQuantity = 499.9
+ hideChildren = true
+ }
+
+ PARAMETER
+ {
+ name = Orbit
+ type = Orbit
+ title = Reach a highly inclined orbit
+ minApA = 750000 // 750 km
+ maxApA = 850000 // 850 km (Circular)
+ minPeA = 750000
+ minInclination = 95 // Polar / Sun Sync
+ maxInclination = 108
+ disableOnStateChange = true
+
+ }
+
+ PARAMETER
+ {
+ name = Duration
+ type = Duration
+ duration = 180d
+ preWaitText = Check for stable orbit
+ waitingText = Checking for stable orbit
+ completionText = Stable orbit: Confirmed
+ }
+
+ // SAR are very power hungry, so this reflects that
+ PARAMETER
+ {
+ name = EnergyGeneration
+ type = ResourceConsumption
+ title = Minimum Power Generation: 700W
+ resource = ElectricCharge
+ maxRate = -0.7
+ minRate = -100000
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/GameData/RP-1/Contracts/Groups.cfg b/GameData/RP-1/Contracts/Groups.cfg
index 594945cf8a9..0d00e51e89d 100644
--- a/GameData/RP-1/Contracts/Groups.cfg
+++ b/GameData/RP-1/Contracts/Groups.cfg
@@ -72,11 +72,27 @@ CONTRACT_GROUP
agent = Satellites
}
CONTRACT_GROUP
+ {
+ name = EOS2
+ displayName = Operational Earth Observation Satellites
+ minVersion = 1.12.2
+ sortKey = 18
+ agent = Satellites
+ }
+ CONTRACT_GROUP
+ {
+ name = EOS3
+ displayName = Advanced Earth Observation Satellites
+ minVersion = 1.12.2
+ sortKey = 19
+ agent = Satellites
+ }
+ CONTRACT_GROUP
{
name = CommNetwork
displayName = Communications Network
minVersion = 1.12.2
- sortKey = 18
+ sortKey = 20
agent = Satellites
}
CONTRACT_GROUP
@@ -84,7 +100,7 @@ CONTRACT_GROUP
name = CommApp
displayName = Commercial Application Satellites
minVersion = 1.12.2
- sortKey = 19
+ sortKey = 21
agent = Satellites
}
CONTRACT_GROUP
@@ -92,7 +108,7 @@ CONTRACT_GROUP
name = CommApp2
displayName = Advanced Commercial Application Satellites
minVersion = 1.12.2
- sortKey = 20
+ sortKey = 22
agent = Satellites
}
CONTRACT_GROUP
@@ -100,7 +116,7 @@ CONTRACT_GROUP
name = GEOCommNetwork
displayName = Geostationary Communications Network
minVersion = 1.12.2
- sortKey = 20
+ sortKey = 23
agent = Satellites
}
CONTRACT_GROUP
@@ -108,7 +124,7 @@ CONTRACT_GROUP
name = EarlyLunarProbes
displayName = Early Lunar Probes
minVersion = 1.12.2
- sortKey = 21
+ sortKey = 24
agent = Exploration
}
CONTRACT_GROUP
@@ -116,7 +132,7 @@ CONTRACT_GROUP
name = UncrewedLunarSurface
displayName = Uncrewed Lunar Surface Exploration
minVersion = 1.12.2
- sortKey = 22
+ sortKey = 25
agent = Exploration
}
CONTRACT_GROUP
@@ -124,7 +140,7 @@ CONTRACT_GROUP
name = EarlyInnerPlanetProbes
displayName = Early Inner Planet Probes
minVersion = 1.12.2
- sortKey = 23
+ sortKey = 26
agent = Exploration
}
CONTRACT_GROUP
@@ -132,7 +148,7 @@ CONTRACT_GROUP
name = CrewedOrbit
displayName = Crewed Orbit
minVersion = 1.12.2
- sortKey = 24
+ sortKey = 27
agent = Federation Aeronautique Internationale
}
CONTRACT_GROUP
@@ -140,7 +156,7 @@ CONTRACT_GROUP
name = CrewedOrbitAdv
displayName = Advanced Crewed Orbit
minVersion = 1.12.2
- sortKey = 25
+ sortKey = 28
agent = Federation Aeronautique Internationale
}
CONTRACT_GROUP
@@ -148,7 +164,7 @@ CONTRACT_GROUP
name = EarlySpacePlanes
displayName = Spaceplane Development
minVersion = 1.12.2
- sortKey = 26
+ sortKey = 29
agent = Exploration
}
CONTRACT_GROUP
@@ -156,7 +172,7 @@ CONTRACT_GROUP
name = CrewedLunar
displayName = Crewed Lunar Exploration
minVersion = 1.12.2
- sortKey = 27
+ sortKey = 30
agent = Federation Aeronautique Internationale
}
CONTRACT_GROUP
@@ -164,7 +180,7 @@ CONTRACT_GROUP
name = EarlyEarthSpaceStation
displayName = Early Earth Space Stations
minVersion = 1.12.2
- sortKey = 28
+ sortKey = 31
agent = Stations
}
CONTRACT_GROUP
@@ -172,7 +188,7 @@ CONTRACT_GROUP
name = MartianSurfaceExploration
displayName = Mars Surface Exploration
minVersion = 1.12.2
- sortKey = 29
+ sortKey = 32
agent = Exploration
}
CONTRACT_GROUP
@@ -180,7 +196,7 @@ CONTRACT_GROUP
name = VenusSurfaceExp
displayName = Venus Surface Exploration
minVersion = 1.12.2
- sortKey = 30
+ sortKey = 33
agent = Exploration
}
CONTRACT_GROUP
@@ -189,14 +205,14 @@ CONTRACT_GROUP
displayName = Small Bodies Flyby
agent = Exploration
minVersion = 1.12.2
- sortKey = 31
+ sortKey = 34
}
CONTRACT_GROUP
{
name = MercuryExploration
displayName = Mercury Exploration
minVersion = 1.12.2
- sortKey = 32
+ sortKey = 35
agent = Exploration
}
CONTRACT_GROUP
@@ -204,7 +220,7 @@ CONTRACT_GROUP
name = AsteroidExploration
displayName = Asteroid Exploration
minVersion = 1.12.2
- sortKey = 33
+ sortKey = 36
agent = Exploration
}
CONTRACT_GROUP
@@ -212,7 +228,7 @@ CONTRACT_GROUP
name = JupiterObservation
displayName = Jupiter Observation
minVersion = 1.12.2
- sortKey = 34
+ sortKey = 37
agent = Exploration
}
CONTRACT_GROUP
@@ -220,7 +236,7 @@ CONTRACT_GROUP
name = JupiterMoonLandings
displayName = Jovian Moon Landings
minVersion = 1.12.2
- sortKey = 35
+ sortKey = 38
agent = Surveys
}
CONTRACT_GROUP
@@ -228,7 +244,7 @@ CONTRACT_GROUP
name = SaturnObservation
displayName = Saturn Observation
minVersion = 1.12.2
- sortKey = 36
+ sortKey = 39
agent = Exploration
}
CONTRACT_GROUP
@@ -236,7 +252,7 @@ CONTRACT_GROUP
name = SaturnMoonLandings
displayName = Saturine Moon Landings
minVersion = 1.12.2
- sortKey = 37
+ sortKey = 40
agent = Surveys
}
CONTRACT_GROUP
@@ -244,7 +260,7 @@ CONTRACT_GROUP
name = OuterPlanetFlyby
displayName = Outer Planet Flybys
minVersion = 1.12.2
- sortKey = 38
+ sortKey = 41
agent = Exploration
}
CONTRACT_GROUP
@@ -252,7 +268,7 @@ CONTRACT_GROUP
name = OuterGasGiantSurvey
displayName = Outer Gas Giant Survey
minVersion = 1.12.2
- sortKey = 39
+ sortKey = 42
agent = Surveys
}
CONTRACT_GROUP
@@ -260,7 +276,7 @@ CONTRACT_GROUP
name = PlutoLandings
displayName = Plutonian Landings
minVersion = 1.12.2
- sortKey = 40
+ sortKey = 43
agent = Surveys
}
CONTRACT_GROUP
@@ -268,7 +284,7 @@ CONTRACT_GROUP
name = LunarHabitation
displayName = Lunar Habitation
minVersion = 1.12.2
- sortKey = 41
+ sortKey = 44
agent = Base Construction
}
CONTRACT_GROUP
@@ -276,7 +292,7 @@ CONTRACT_GROUP
name = CrewedMarsExp
displayName = Crewed Mars Exploration
minVersion = 1.12.2
- sortKey = 42
+ sortKey = 45
agent = Exploration
}
CONTRACT_GROUP
@@ -284,7 +300,7 @@ CONTRACT_GROUP
name = CrewedVenusExp
displayName = Crewed Venus Exploration
minVersion = 1.12.2
- sortKey = 43
+ sortKey = 46
agent = Exploration
}
CONTRACT_GROUP
@@ -292,7 +308,7 @@ CONTRACT_GROUP
name = CrewedExploration
displayName = Crewed Solar System Exploration
minVersion = 1.12.2
- sortKey = 44
+ sortKey = 47
agent = Exploration
}
CONTRACT_GROUP
@@ -300,7 +316,7 @@ CONTRACT_GROUP
name = Records
displayName = Records
minVersion = 1.12.2
- sortKey = 45
+ sortKey = 48
agent = Federation Aeronautique Internationale
}
CONTRACT_GROUP
@@ -308,7 +324,7 @@ CONTRACT_GROUP
name = HumanRecords
displayName = Human Records
minVersion = 1.12.2
- sortKey = 46
+ sortKey = 49
agent = Federation Aeronautique Internationale
}
diff --git a/GameData/RP-1/Programs/Programs.cfg b/GameData/RP-1/Programs/Programs.cfg
index 171eaae56f4..5288513d327 100644
--- a/GameData/RP-1/Programs/Programs.cfg
+++ b/GameData/RP-1/Programs/Programs.cfg
@@ -266,6 +266,99 @@ RP0_PROGRAM
}
}
+RP0_PROGRAM
+{
+ name = EarthObservationScience2
+ title = Operational Earth Observation
+ description = The experimental era is over. We have proven that satellites can see the Earth; now we must put them to work. This program shifts from simple prototypes to the establishment of dedicated operational networks. The goal is no longer to just survive in orbit, but to provide a constant stream of actionable data for national security and public safety.
Author's Note: This program requires Lunar Science (1967).
+ requirementsPrettyText = Complete the Early Earth Observation Program
+ objectivesPrettyText = Launch more capable Earth Observation satellites to further our understanding of Earth.
+ nominalDurationYears = 3.5
+ baseFunding = 1100000
+ fundingCurve = Flat
+ repDeltaOnCompletePerYearEarly = 225
+ repPenaltyPerYearLate = 225
+ slots = 1
+
+ REQUIREMENTS
+ {
+ ANY
+ {
+ complete_program = EarthObservationScience1
+ }
+ }
+
+ OBJECTIVES
+ {
+ complete_contract = EOS2Vela1
+ complete_contract = EOS2Nimbus1
+ complete_contract = EOS2Midas1
+ complete_contract = EOS2OGO1
+ complete_contract = EOS2ATS1
+ }
+
+ OPTIONALS
+ {
+ EOS2VelaRep = true
+ EOS2MidasRep = true
+ EOS2OGORep = true
+ EOS2NimbusRep = true
+ }
+
+ CONFIDENCECOSTS
+ {
+ Normal = 550
+ Fast = 1100
+ }
+}
+
+RP0_PROGRAM
+{
+ name = EarthObservationScience3
+ title = Advanced Earth Observation
+ description = We are expanding our vision beyond the visible spectrum and simple photography. The advanced platforms we will launch now require complex orbital insertions and long-duration stability to revolutionise our understanding of the planet's changing environment.
Author's Note: This program requires Deep Space Science (1972-1980).
+ requirementsPrettyText = Complete the Operational Earth Observation program.
+ objectivesPrettyText = Establish Geostationary monitoring and Multi-spectral Earth Resources networks.
+ nominalDurationYears = 4
+ baseFunding = 1500000
+ fundingCurve = Flat
+ repDeltaOnCompletePerYearEarly = 270
+ repPenaltyPerYearLate = 270
+ slots = 1
+
+ REQUIREMENTS
+ {
+ ANY
+ {
+ complete_program = EarthObservationScience2
+ }
+ }
+
+ OBJECTIVES
+ {
+ complete_contract = EOS3GEOS // Geodesy (GOES-3)
+ complete_contract = EOS3GOES // Weather (GOES-1)
+ complete_contract = EOS3ERTS // Resources (LS-1)
+ complete_contract = EOS3SAR // SAR
+ complete_contract = EOS3Nimbus7 // Nimbus-7
+ complete_contract = EOS3Magsat // Magsat
+ complete_contract = EOS3Hexagon // Hexagon (KH-9)
+ }
+
+ OPTIONALS
+ {
+ EOS3HexagonRep = true
+ EOS3GOESRep = true
+ EOS3GEOSRep = true
+ }
+
+ CONFIDENCECOSTS
+ {
+ Normal = 600
+ Fast = 1200
+ }
+}
+
RP0_PROGRAM
{
name = SkoposCommercialApplications0