// Weather Contracts // ---------------------- // General idea: Have a relatively linear progresson at the beginning and fan out after the equivalent // of NIMBUS-1. After that split into different lines of research. // NIMBUS -> Sun Synchronous Orbit (although that'd probably be more interesting for spy satellites) // -> GEO Weather Network // -> // Contract to start weather contracts off - Vanguard 2 CONTRACT_TYPE { name = WeatherFirst group = WeatherContracts title = Atmospheric Analysis description = The properties of Earth's upper athmosphere haven't been precisely measured so far. We need you to insert a satellite in a suitable orbit. synopsis = Insert a measurement satellite completedMessage = We're getting great data! It seems like we underestimated the athmospheric pressure in Earth's upper atmopshere. cancellable = true declinable = true deadline = 365 // 1 year prestige = Trivial targetBody = HomeWorld() maxCompletions = 1 maxSimultaneous = 1 // reward block advanceFunds = 5000.0 rewardFunds = 5000.0 failureFunds = 5000.0 rewardReputation = 5.0 failureReputation = 30.0 REQUIREMENT { name = CompleteContract type = CompleteContract contractType = first_OrbitUncrewed } PARAMETER { name = vesselGroup type = VesselParameterGroup title = Athmospheric Measurements define = weatherSatellite PARAMETER { name = NewVessel type = NewVessel } PARAMETER { name = HasCrew type = HasCrew minCrew = 0 maxCrew = 0 } PARAMETER { name = Orbit type = Orbit targetBody = HomeWorld() situation = ORBITING minPeA = Round(Random(200000, 580000), 1000) // Can't have too much randomness here due to nature of contract maxPeA = Round(Random(590000, 600000), 1000) minApA = 2900000+Round(Random(-1000000,100000), 1000) } } } // Direct Continuation - another one before we get to a repeatable contract # TIROS 1 CONTRACT_TYPE { name = WeatherSecondA group = WeatherContracts title = Meteorological Satellite description = It's time to see whether those new things your company is launching into the sky are useful for something beyond getting rid of fuel. synopsis = Insert a satellite. completedMessage = Look at that, it seems like it's cloudly above you. cancellable = true declinable = true deadline = 365 // 1 year prestige = Trivial targetBody = HomeWorld() maxCompletions = 1 maxSimultaneous = 1 // reward block advanceFunds = 5000.0 rewardFunds = 5000.0 rewardScience = 5.0 failureFunds = 5000.0 rewardReputation = 5.0 failureReputation = 30.0 REQUIREMENT { name = CompleteContract type = CompleteContract contractType = WeatherFirst } PARAMETER { name = vesselGroup type = VesselParameterGroup title = Weather Satellite define = weatherSatellite PARAMETER { name = NewVessel type = NewVessel } PARAMETER { name = HasCrew type = HasCrew minCrew = 0 maxCrew = 0 } PARAMETER { name = Orbit type = Orbit targetBody = HomeWorld() situation = ORBITING minPeA = 630000+Round(Random(-5000.0, 5000.0), 1000) maxPeA = 640000+Round(Random(-5000.0, 5000.0), 1000) minApA = 660000+Round(Random(-5000.0, 5000.0), 1000) maxApA = 670000+Round(Random(-5000.0, 5000.0), 1000) minInclination=45+Round(Random(-5,5)) } } } // Direct Continuation - another one before we get to a repeatable contract # TIROS 1 CONTRACT_TYPE { name = WeatherSecondB group = WeatherContracts title = Micrometeorite Measurements description = We're trying to learn about micrometeorites. synopsis = Insert a satellite. completedMessage = Got one! cancellable = true declinable = true deadline = 365 // 1 year prestige = Trivial targetBody = HomeWorld() maxCompletions = 1 maxSimultaneous = 1 // reward block advanceFunds = 5000.0 rewardFunds = 5000.0 rewardScience = 3.0 failureFunds = 5000.0 rewardReputation = 5.0 failureReputation = 30.0 REQUIREMENT { name = CompleteContract type = CompleteContract contractType = WeatherFirst } PARAMETER { name = vesselGroup type = VesselParameterGroup title = Weather Satellite define = weatherSatellite PARAMETER { name = NewVessel type = NewVessel } PARAMETER { name = HasCrew type = HasCrew minCrew = 0 maxCrew = 0 } PARAMETER { name = PartValidation type = PartValidation part = RP0sensorMicrometeorite } PARAMETER { name = Orbit type = Orbit targetBody = HomeWorld() situation = ORBITING minPeA = 490000+Round(Random(-10000.0, 10000.0), 1000) maxPeA = 520000+Round(Random(-5000.0, 5000.0), 1000) minApA = 700000+Round(Random(-30000.0, 30000.0), 1000) maxApA = 750000+Round(Random(-10000.0, 10000.0), 1000) } } } // A couple of polar satellites similar to Nimbus-1 CONTRACT_TYPE { name = WeatherNimbusOne group = WeatherContracts title = Meteorogical Satellite Platform description = The results from our last project were very promising. It's time to go for something more ambitious. We're looking to deploy satellites into a more challenging orbit. synopsis = Insert a satellite. completedMessage = We're getting great images. cancellable = true declinable = true deadline = 365 // 1 year prestige = Significant targetBody = HomeWorld() maxCompletions = 3 maxSimultaneous = 1 // reward block advanceFunds = 7000.0 rewardFunds = 7000.0 rewardScience = 5.0 failureFunds = 7000.0 rewardReputation = 5.0 failureReputation = 30.0 REQUIREMENT { name = Any type = Any REQUIREMENT { name = CompleteContract type = CompleteContract contractType = WeatherSecondA } REQUIREMENT { name = CompleteContract type = CompleteContract contractType = WeatherSecondB } } BEHAVIOUR { name = OrbitGenerator type = OrbitGenerator RANDOM_ORBIT { type = POLAR altitudeFactor = 0.02 deviationWindow = 10.0 } } PARAMETER { name = vesselGroup type = VesselParameterGroup title = Weather Satellite define = weatherSatellite PARAMETER { name = NewVessel type = NewVessel } PARAMETER { name = HasCrew type = HasCrew minCrew = 0 maxCrew = 0 } PARAMETER { name = ReachSpecificOrbit type = ReachSpecificOrbit } } } // Once the Polar contracts have been completed at least once, it's time to fan out into something more challenging // Route 1#1 - Along the lines of GOES // Launch three satellites CONTRACT_TYPE { name = WeatherGOESSMS group = WeatherContracts title = Weather Network description = To improve the accuracy of our forecasts, we need you to set up a network of satellites in geosynchronous orbit. synopsis = Insert three satellites. completedMessage = All of them are returning data. cancellable = true declinable = true deadline = 730 // 2 years prestige = Significant targetBody = HomeWorld() maxCompletions = 1 maxSimultaneous = 1 // reward block advanceFunds = 40000.0 rewardFunds = 60000.0 failureFunds = 60000.0 rewardReputation = 15.0 failureReputation = 50.0 REQUIREMENT { name = CompleteContract type = CompleteContract contractType = WeatherNimbusOne } PARAMETER { name = vesselGroup type = VesselParameterGroup title = Satellite 1 define = weatherSatellite PARAMETER { name = NewVessel type = NewVessel } PARAMETER { name = IsNotVessel type = IsNotVessel vessel = weatherSatellite2 } PARAMETER { name = IsNotVessel type = IsNotVessel vessel = weatherSatellite3 } PARAMETER { name = HasCrew type = HasCrew minCrew = 0 maxCrew = 0 } PARAMETER { name = PartValidation type = PartValidation part = RP0sensorGeiger } PARAMETER { name = HasResource type = HasResource resource = ElectricCharge minQuantity = 30000.0+Round(Random(-10000,10000),500) } PARAMETER { name = Orbit type = Orbit targetBody = HomeWorld() situation = ORBITING minPeriod=23h 55m 0s maxPeriod=24h 5m 0s minInclination=13.5 maxInclination=13.7 } } PARAMETER { name = vesselGroup type = VesselParameterGroup title = Satellite 2 define = weatherSatellite2 PARAMETER { name = NewVessel type = NewVessel } PARAMETER { name = IsNotVessel type = IsNotVessel vessel = weatherSatellite } PARAMETER { name = IsNotVessel type = IsNotVessel vessel = weatherSatellite3 } PARAMETER { name = HasCrew type = HasCrew minCrew = 0 maxCrew = 0 } PARAMETER { name = PartValidation type = PartValidation part = RP0sensorGeiger } PARAMETER { name = HasResource type = HasResource resource = ElectricCharge minQuantity = 30000.0+Round(Random(-10000,10000),500) } PARAMETER { name = Orbit type = Orbit targetBody = HomeWorld() situation = ORBITING minPeriod=23h 55m 0s maxPeriod=24h 5m 0s minInclination=13.5 maxInclination=13.7 } } PARAMETER { name = vesselGroup type = VesselParameterGroup title = Satellite 3 define = weatherSatellite3 PARAMETER { name = NewVessel type = NewVessel } PARAMETER { name = IsNotVessel type = IsNotVessel vessel = weatherSatellite } PARAMETER { name = IsNotVessel type = IsNotVessel vessel = weatherSatellite2 } PARAMETER { name = HasCrew type = HasCrew minCrew = 0 maxCrew = 0 } PARAMETER { name = PartValidation type = PartValidation part = RP0sensorGeiger } PARAMETER { name = HasResource type = HasResource resource = ElectricCharge minQuantity = 30000.0+Round(Random(-10000,10000),500) } PARAMETER { name = Orbit type = Orbit targetBody = HomeWorld() situation = ORBITING minPeriod=23h 55m 0s maxPeriod=24h 5m 0s minInclination=13.5 maxInclination=13.7 } } } // Route 1#2 CONTRACT_TYPE { name = WeatherGOES group = WeatherContracts title = Geostationary Weather Network description = It's time to get a network of geostationary satellites up. synopsis = Insert two satellites into GEO. completedMessage = All of them are returning data. cancellable = true declinable = true deadline = 730 // 2 years prestige = Significant targetBody = HomeWorld() maxCompletions = 1 maxSimultaneous = 1 // reward block advanceFunds = 40000.0 rewardFunds = 60000.0 rewardScience = 10 failureFunds = 60000.0 rewardReputation = 20.0 failureReputation = 100.0 REQUIREMENT { name = CompleteContract type = CompleteContract contractType = WeatherGOESSMS } BEHAVIOUR { name = OrbitGenerator type = OrbitGenerator FIXED_ORBIT { ORBIT { SMA = 42164000.0 ECC = 0.0 INC = 0.0 LPE = 200.0 LAN = 10.0 MNA = 3.0 EPH = 6334.0 } } } PARAMETER { name = vesselGroup type = VesselParameterGroup title = Satellite 1 define = weatherSatellite PARAMETER { name = NewVessel type = NewVessel } PARAMETER { name = IsNotVessel type = IsNotVessel vessel = weatherSatellite2 } PARAMETER { name = HasCrew type = HasCrew minCrew = 0 maxCrew = 0 } PARAMETER { name = PartValidation type = PartValidation part = RP0sensorGeiger } PARAMETER { name = HasResource type = HasResource resource = ElectricCharge minQuantity = 30000.0 } PARAMETER { name = Any type = Any hideChildren = true title = Is equipped with deployable solar panels PARAMETER { name = Solar title = Solar type = PartValidation hideChildren = true partModule = ModuleDeployableSolarPanel minCount = 1 } } PARAMETER { name = ReachSpecificOrbit type = ReachSpecificOrbit displayNotes = true index = 0 deviationWindow = 3.0 } } PARAMETER { name = vesselGroup type = VesselParameterGroup title = Satellite 2 define = weatherSatellite2 PARAMETER { name = NewVessel type = NewVessel } PARAMETER { name = IsNotVessel type = IsNotVessel vessel = weatherSatellite } PARAMETER { name = HasCrew type = HasCrew minCrew = 0 maxCrew = 0 } PARAMETER { name = PartValidation type = PartValidation part = RP0sensorGeiger } PARAMETER { name = HasResource type = HasResource resource = ElectricCharge minQuantity = 30000.0 } PARAMETER { name = Any type = Any hideChildren = true title = Is equipped with deployable solar panels PARAMETER { name = Solar title = Solar type = PartValidation hideChildren = true partModule = ModuleDeployableSolarPanel minCount = 1 } } PARAMETER { name = ReachSpecificOrbit type = ReachSpecificOrbit displayNotes = true index = 0 deviationWindow = 3.0 } } } // Route 2 - Along the lines of DMSP?