From a8988a5381a8c4c655ba6a1725da710f440901b5 Mon Sep 17 00:00:00 2001 From: Capkirk123 Date: Tue, 22 Oct 2024 22:55:28 -0400 Subject: [PATCH] Set up "tutorial" contracts --- .../FirstComSat-SCA.cfg | 41 ++--- .../FirstGEOSat-SCA.cfg | 132 +++++++++++++++ .../FirstGeosync-SCA.cfg | 105 +++++------- .../FirstMolniyaSat-SCA.cfg | 65 ++++--- .../FirstTundraSat-SCA.cfg | 158 ++++++++++++++++++ GameData/RP-1/Programs/Programs.cfg | 4 +- 6 files changed, 405 insertions(+), 100 deletions(-) create mode 100644 GameData/RP-1/Contracts/Skopos Commercial Applications 0/FirstGEOSat-SCA.cfg create mode 100644 GameData/RP-1/Contracts/Skopos Commercial Applications 0/FirstTundraSat-SCA.cfg diff --git a/GameData/RP-1/Contracts/Skopos Commercial Applications 0/FirstComSat-SCA.cfg b/GameData/RP-1/Contracts/Skopos Commercial Applications 0/FirstComSat-SCA.cfg index 030100acab..72a9dfc169 100644 --- a/GameData/RP-1/Contracts/Skopos Commercial Applications 0/FirstComSat-SCA.cfg +++ b/GameData/RP-1/Contracts/Skopos Commercial Applications 0/FirstComSat-SCA.cfg @@ -3,13 +3,13 @@ CONTRACT_TYPE { name = FirstComSat-SCA - title = First Communications Satellite + title = First Low Orbit Communications Satellite group = CommApp agent = Federation Aeronautique Internationale - description = Program: Early Commercial Applications
Type: Required


Communications around the globe are limited to line of sight because of the curvature of Earth. If we can launch a communications satellite into orbit, we can use it to transmit information to the opposite side of the world.

Historical example: Telstar 1 (78kg, Thor-Delta). + description = Program: Early Commercial Applications
Type: Optional


Communications around the globe are limited to line of sight because of the curvature of Earth. If we can launch a communications satellite into orbit, we can use it to transmit information to the opposite side of the world. Launching a satellite into an eccentric low earth orbit is a good place to start. It should be relatively easy with existing launch vehicles, and the high apogee will provide good lines of sight for a few minutes every orbit. However, providing global communications coverage with such a low orbit would require very many satellites.

Historical example: Telstar 1 (78kg, Thor-Delta). - synopsis = Launch the first communication satellite + synopsis = Launch the first low orbit communication satellite completedMessage = Congratulations! Satellite communications will forever change communications around the globe. @@ -33,28 +33,29 @@ CONTRACT_TYPE rewardScience = 0 rewardFunds = 0 failureFunds = 0 - rewardReputation = 30 //not much, this is just guidance for the real (skopos) contracts + rewardReputation = 5 //not much, this is just guidance for the real (skopos) contracts failureReputation = 0 // was @rewardReputation // ************ REQUIREMENTS ************ //Don't let people start this unless they can actually do the Skopos half - REQUIREMENT { - name = All - type = All - REQUIREMENT { - name = ProgramActive - type = ProgramActive - program = SkoposCommercialApplications0 - } - REQUIREMENT { - name = Facility - type = Facility - facility = TrackingStation - minLevel = 4 - maxLevel = 10 - } - } +//Don't bother showing this after level 0, I'm sure players can figure this out on their own. + REQUIREMENT { + name = All + type = All + REQUIREMENT { + name = ProgramActive + type = ProgramActive + program = SkoposCommercialApplications0 + } + REQUIREMENT { + name = Facility + type = Facility + facility = TrackingStation + minLevel = 4 + maxLevel = 10 + } + } PARAMETER { diff --git a/GameData/RP-1/Contracts/Skopos Commercial Applications 0/FirstGEOSat-SCA.cfg b/GameData/RP-1/Contracts/Skopos Commercial Applications 0/FirstGEOSat-SCA.cfg new file mode 100644 index 0000000000..7406163a6c --- /dev/null +++ b/GameData/RP-1/Contracts/Skopos Commercial Applications 0/FirstGEOSat-SCA.cfg @@ -0,0 +1,132 @@ +CONTRACT_TYPE +{ + name = FirstGEOSat-SCA + title = Geostationary Test Satellite + group = CommApp + agent = Federation Aeronautique Internationale + + description = Program: Early Commercial Applications
Type: Optional


Having a communication satellite that remains stationary relative to a satellite earth station means that the antenna wouldn't need to track movements to stay connected, and a constant line of sight can be maintained 24 hours a day. This would greatly simplify communication relay and mass transmission systems.

See the RP-1 wiki for more information on how to get to a geostationary orbit.
Historical example: Syncom 3 (39 kg, Thor-Delta) launched in August of 1964. + synopsis = Launch a test satellite into a Geostationary Orbit + + completedMessage = Congratulations! The satellite is in orbit over a constant area. + + 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 = 5 //not much, this is just guidance for the real (skopos) contracts + failureReputation = 0 // was @rewardReputation + + // ************ REQUIREMENTS ************ + +//since these are "tutorial" contracts, keep them active until they are completed +//as long as there is a skopos program active and you have TL3, show these contracts + REQUIREMENT + { + name = Have TL3 comms unlocked and a Commercial Applications program active + type = All + REQUIREMENT + { + name = Commercial Applications program active + type = Any + + REQUIREMENT + { + name = ProgramActive + type = ProgramActive + program = SkoposCommercialApplications0 + } + REQUIREMENT + { + name = ProgramActive + type = ProgramActive + program = SkoposCommercialApplications1 + } + REQUIREMENT + { + name = ProgramActive + type = ProgramActive + program = SkoposCommercialApplications2 + } + REQUIREMENT + { + name = ProgramActive + type = ProgramActive + program = SkoposCommercialApplications3 + } + } + //Don't let people start this unless they can actually do the Skopos half + REQUIREMENT + { + name = Facility + type = Facility + facility = TrackingStation + minLevel = 4 + maxLevel = 10 + } + } + + PARAMETER + { + name = GeostationarySat + type = VesselParameterGroup + title = Geostationary satellite + define = Geostationary + + 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 = Reach Specifit Orbit + type = Orbit + maxInclination = 2 + maxEccentricity = 0.01 + minPeriod = 23h 54m + maxPeriod = 23h 58m + disableOnStateChange = false + title = Achieve a Geostationary orbit within the stated parameters + + PARAMETER + { + name = Duration + type = Duration + + duration = 2m + + preWaitText = Check for stable orbit + waitingText = Checking for stable orbit + completionText = Stable orbit: Confirmed + } + } + } +} diff --git a/GameData/RP-1/Contracts/Skopos Commercial Applications 0/FirstGeosync-SCA.cfg b/GameData/RP-1/Contracts/Skopos Commercial Applications 0/FirstGeosync-SCA.cfg index 3a5e1d5227..7e39f70c67 100644 --- a/GameData/RP-1/Contracts/Skopos Commercial Applications 0/FirstGeosync-SCA.cfg +++ b/GameData/RP-1/Contracts/Skopos Commercial Applications 0/FirstGeosync-SCA.cfg @@ -5,11 +5,11 @@ CONTRACT_TYPE group = CommApp agent = Federation Aeronautique Internationale - description = Program: Early Commercial Applications
Type: Optional


With an orbital period of an earth day, a satellite will remain above a constant longitude, appearing to drift north and south through the day. This will allow for constant connection to a ground station.
Historical example: Syncom 2 (36kg, Thor-Delta). + description = Program: Early Commercial Applications
Type: Optional


With an orbital period of an earth day, a satellite will remain above a constant longitude, appearing to drift north and south through the day. This orbit will be able to provide a constant line of sight for satellite earth stations at low latitudes, but at high latitudes it may still drift too far north or south to be used for portions of the day. However, forgoing an inclination change burn makes this orbit easier to get to than a proper geostationary orbit.

See the RP-1 wiki for more information on how to get to a geostationary orbit.
Historical example: Syncom 2 (36kg, Thor-Delta). synopsis = Launch a geosynchronous test satellite - completedMessage = Congratulations! The satellite is in orbit and connected to the groundstation. + completedMessage = Congratulations! The satellite is in orbit and connected to the satellite earth station. sortKey = 409 @@ -31,58 +31,56 @@ CONTRACT_TYPE rewardScience = 0 rewardFunds = 0 failureFunds = 0 - rewardReputation = 45 + rewardReputation = 5 //not much, this is just guidance for the real (skopos) contracts failureReputation = 0 // was @rewardReputation // ************ REQUIREMENTS ************ +//since these are "tutorial" contracts, keep them active until they are completed +//as long as there is a skopos program active and you have TL3, show these contracts REQUIREMENT { - name = ProgramActive - type = ProgramActive - program = SkoposCommercialApplications0 - } - REQUIREMENT - { - name = AcceptContract - type = AcceptContract - contractType = syncom_ship_to_shore - invertRequirement = true - } - REQUIREMENT - { - name = CompleteContract - type = CompleteContract - contractType = syncom_ship_to_shore - invertRequirement = true - } - REQUIREMENT - { - name = AcceptContract - type = AcceptContract - contractType = syncom_transatlantic_tv - invertRequirement = true - } - REQUIREMENT - { - name = CompleteContract - type = CompleteContract - contractType = syncom_transatlantic_tv - invertRequirement = true - } - REQUIREMENT - { - name = AcceptContract - type = AcceptContract - contractType = syncom_transpacific_tv - invertRequirement = true - } - REQUIREMENT - { - name = CompleteContract - type = CompleteContract - contractType = syncom_transpacific_tv - invertRequirement = true + name = Have TL3 comms unlocked and a Commercial Applications program active + type = All + REQUIREMENT + { + name = Commercial Applications program active + type = Any + + REQUIREMENT + { + name = ProgramActive + type = ProgramActive + program = SkoposCommercialApplications0 + } + REQUIREMENT + { + name = ProgramActive + type = ProgramActive + program = SkoposCommercialApplications1 + } + REQUIREMENT + { + name = ProgramActive + type = ProgramActive + program = SkoposCommercialApplications2 + } + REQUIREMENT + { + name = ProgramActive + type = ProgramActive + program = SkoposCommercialApplications3 + } + } + //Don't let people start this unless they can actually do the Skopos half + REQUIREMENT + { + name = Facility + type = Facility + facility = TrackingStation + minLevel = 4 + maxLevel = 10 + } } @@ -92,7 +90,6 @@ CONTRACT_TYPE type = VesselParameterGroup title = First Geosynchronous Satellite define = FirstGeosync - dissassociateVesselsOnContractCompletion = true PARAMETER { @@ -111,16 +108,6 @@ CONTRACT_TYPE hideChildren = true } PARAMETER - { - name = GenerateEC - title = Have positive energy balance - type = ResourceConsumption - resource = ElectricCharge - minRate = -1000000 - maxRate = 0.00001 - hideChildren = true - } - PARAMETER { name = Orbit type = Orbit diff --git a/GameData/RP-1/Contracts/Skopos Commercial Applications 0/FirstMolniyaSat-SCA.cfg b/GameData/RP-1/Contracts/Skopos Commercial Applications 0/FirstMolniyaSat-SCA.cfg index cfa3ab4b31..f800d41108 100644 --- a/GameData/RP-1/Contracts/Skopos Commercial Applications 0/FirstMolniyaSat-SCA.cfg +++ b/GameData/RP-1/Contracts/Skopos Commercial Applications 0/FirstMolniyaSat-SCA.cfg @@ -5,7 +5,7 @@ CONTRACT_TYPE group = CommApp agent = Federation Aeronautique Internationale - description = Program: Early Commercial Applications
Type: Required

A Molniya orbit is a type of highly elliptical orbit with an inclination of 63.4 degrees, an argument of perigee of -90 (270) degrees, and an orbital period of one half of a sidereal day. This keeps the satellite mostly to the northern hemisphere of the Earth. Place a satellite into a Molniya orbit.

There will be an orbit showing in the map view and tracking station. You do not have to place the satellite into this orbit, but it is instead meant to show you where your perigee and apogee should approximately be located, but more importantly, it shows the proper shape of the orbit.

Historical example: Molniya 1-1 (1,600kg, Molniya) + description = Program: Early Commercial Applications
Type: Required

A Molniya orbit is a type of highly elliptical orbit with an inclination of 63.4 degrees, an argument of perigee of -90 (270) degrees, and an orbital period of one half of a sidereal day. This orbit will cause the satellite to appear to remain nearly stationary in the sky for a short period at apogee. Combined with the high inclination, this orbit will allow a satellite to maintain a line of sight with satellite earth stations at a high latitude for about 6 hours a day.

See the RP-1 wiki for more information on how to get to a Molniya orbit.

Historical example: Molniya 1-1 (1,600kg, Molniya) synopsis = Launch a satellite into a Molniya orbit @@ -31,27 +31,61 @@ CONTRACT_TYPE rewardScience = 0 rewardFunds = 0 failureFunds = 0 - rewardReputation = 45 + rewardReputation = 5 //not much, this is just guidance for the real (skopos) contracts failureReputation = 0 // was @rewardReputation // ************ REQUIREMENTS ************ +//since these are "tutorial" contracts, keep them active until they are completed +//as long as there is a skopos program active and you have TL3, show these contracts REQUIREMENT { - name = ProgramActive - type = ProgramActive - program = SkoposCommercialApplications0 - } + name = Have TL3 comms unlocked and a Commercial Applications program active + type = All + REQUIREMENT + { + name = Commercial Applications program active + type = Any - REQUIREMENT - { - name = CompleteContract - type = CompleteContract - contractType = FirstComSat-SCA + REQUIREMENT + { + name = ProgramActive + type = ProgramActive + program = SkoposCommercialApplications0 + } + REQUIREMENT + { + name = ProgramActive + type = ProgramActive + program = SkoposCommercialApplications1 + } + REQUIREMENT + { + name = ProgramActive + type = ProgramActive + program = SkoposCommercialApplications2 + } + REQUIREMENT + { + name = ProgramActive + type = ProgramActive + program = SkoposCommercialApplications3 + } + } + //Don't let people start this unless they can actually do the Skopos half + REQUIREMENT + { + name = Facility + type = Facility + facility = TrackingStation + minLevel = 4 + maxLevel = 10 + } } +//generate an example orbit in the map screen BEHAVIOUR { name = MolniyaOrbit @@ -98,15 +132,6 @@ CONTRACT_TYPE hideChildren = true } PARAMETER - { - name = HasComSatPayload - type = HasResource - resource = ComSatPayload - minQuantity = @/payload-0.1 - title = Have a ComSatPayload of at least @/payload units on the craft - hideChildren = true - } - PARAMETER { name = ReachOrbit type = Orbit diff --git a/GameData/RP-1/Contracts/Skopos Commercial Applications 0/FirstTundraSat-SCA.cfg b/GameData/RP-1/Contracts/Skopos Commercial Applications 0/FirstTundraSat-SCA.cfg new file mode 100644 index 0000000000..8e573a858b --- /dev/null +++ b/GameData/RP-1/Contracts/Skopos Commercial Applications 0/FirstTundraSat-SCA.cfg @@ -0,0 +1,158 @@ +CONTRACT_TYPE +{ + name = FirstTundraSat-SCA + title = Tundra Orbit Test Satellite + group = CommApp + agent = Federation Aeronautique Internationale + + description = Program: Early Commercial Applications
Type: Optional


A Tundra orbit is a highly elliptical geosynchronous orbit (note: not geostationary orbit) similar to a Molniya orbit, with a high inclination (usually near 63.4) and an orbital period of one sidereal day. A satellite placed in this orbit spends most of its time over a chosen area of the Earth, a phenomenon known as apogee dwell, allowing it to maintain a line of sight with satellite earth stations at a high latitude for about 8 hours a day. The ground track of a satellite in a tundra orbit is a closed figure eight.

See the RP-1 wiki for more information on how to get to a Tundra orbit.

Historical example: Sirius FM-1 (3,800kg, Proton-K) + synopsis = Launch a test satellite into a Tundra Orbit + + completedMessage = Success! The Tundra orbit is highly eccentric and lets the satellite spend most of its time over a point in the high latitudes. + + 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 = 5 //not much, this is just guidance for the real (skopos) contracts + failureReputation = 0 // was @rewardReputation + + // ************ REQUIREMENTS ************ + +//since these are "tutorial" contracts, keep them active until they are completed +//as long as there is a skopos program active and you have TL3, show these contracts + REQUIREMENT + { + name = Have TL3 comms unlocked and a Commercial Applications program active + type = All + REQUIREMENT + { + name = Commercial Applications program active + type = Any + + REQUIREMENT + { + name = ProgramActive + type = ProgramActive + program = SkoposCommercialApplications0 + } + REQUIREMENT + { + name = ProgramActive + type = ProgramActive + program = SkoposCommercialApplications1 + } + REQUIREMENT + { + name = ProgramActive + type = ProgramActive + program = SkoposCommercialApplications2 + } + REQUIREMENT + { + name = ProgramActive + type = ProgramActive + program = SkoposCommercialApplications3 + } + } + //Don't let people start this unless they can actually do the Skopos half + REQUIREMENT + { + name = Facility + type = Facility + facility = TrackingStation + minLevel = 4 + maxLevel = 10 + } + } + +//generate an example orbit in the map screen +//FIXME: I just copied these from the parameters of FM1, someone should make sure this is correct + BEHAVIOUR + { + name = MolniyaOrbit + type = OrbitGenerator + + FIXED_ORBIT + { + ORBIT + { + SMA = 41857100 + ECC = 0.2748 + INC = 63.4 + LPE = -90 + LAN = 90 + MNA = 0 + EPH = 0 + REF = 1 + } + } + } + + PARAMETER + { + name = VesselGroup + type = VesselParameterGroup + title = Tundra satellite + define = TundraSatellite + + 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 = ReachOrbit + type = Orbit + title = Reach the correct orbit within the parameters. Note: The argument of periapsis values mean that the apogee needs to be high in the northern latitudes. This is like a Molniya orbit, but with an orbital period the same as an Earth sidereal day. + minInclination = 61.4 + maxInclination = 65.4 + minEccentricity = 0.25 + minArgumentOfPeriapsis = 220 + maxArgumentOfPeriapsis = 320 + minPeA = 17000000 + minPeriod = 23h 54m 4s + maxPeriod = 23h 58m 4s + + PARAMETER + { + name = Duration + type = Duration + + duration = 2m + + preWaitText = Check for stable orbit + waitingText = Checking for stable orbit + completionText = Stable orbit: Confirmed + } + } + } +} diff --git a/GameData/RP-1/Programs/Programs.cfg b/GameData/RP-1/Programs/Programs.cfg index a6fbee41d1..a336eef041 100644 --- a/GameData/RP-1/Programs/Programs.cfg +++ b/GameData/RP-1/Programs/Programs.cfg @@ -429,7 +429,6 @@ RP0_PROGRAM ALL { complete_contract = FirstNavSat-SCA - complete_contract = FirstComSat-SCA ATLEAST { //Two Soviet-ish programs, two western programs. Not exactly equally easy, Soviet ground stations are worse, but oh well? @@ -456,7 +455,10 @@ RP0_PROGRAM syncom_transpacific_tv = true syncom_ship_to_shore = true //CA contracts. First Molniya and First GEO to explain how they work to player + FirstComSat-SCA = true FirstMolniyaSat-SCA = true + FirstTundraSat-SCA = true + FirstGeosync-SCA = true FirstGEOSat-SCA = true }