Jump to content

Tonas1997

Members
  • Posts

    276
  • Joined

  • Last visited

Posts posted by Tonas1997

  1. Okay, I'm pretty sure this is just me not understanding how the tool/orbital mechanics work, but let's say I want to compute a multi-flyby mission without knowing some ejection orbit parameters in advance (inclination, right ascension and RAAN). The optimal solution yields me these results for the initial hyperbolic departure orbit:

    Semi-major Axis =               -8471.8584 km
    Eccentricity =                  1.997895273
    Inclination =                   24.0891 deg
    Right Ascension of AN =         338.1836 deg
    Argument of Periapse =          348.4356 deg

    If I then tweak my initial orbital info to match these, I should be able to get an even better solution... right?

  2. I see, thanks! :D Just to be sure, are nodes like these

    @PART[kerbalism-ISRU]:AFTER[RationalResources]
    {
    	RRConverter = Set
    	RRPower = 1
    	RRSlots = 2
    	!MODULE[Configure] {}
    	!MODULE[ProcessController],* {}
    }

    enough to add the new processes to any ISRU part and clean up messy configs like the ones I came across in my previous post?

  3. I'm trying to use the latest version with a RSS/RO install and most of the converters have weird PAWs:

    q2b17F7.png

    Kerbalism's ISRU seems to have a proper configuration module, whereas the stock Convert-O-Tron 250 and the Chemical Plant have a gigantic PAW since all processes are listed and lack a configuration module

    I don't expect you to add custom compatibility to Kerbalism's RO profile, but  how could I solve this with a couple of :FINAL patches?

    Here's the cache of the Convert-O-Tron:

    Spoiler
    {
    	parentUrl = Squad/Parts/Resources/ISRU/ISRU.cfg
    	PART
    	{
    		name = ISRU
    		module = Part
    		author = RoverDude
    		mesh = ISRU.mu
    		scale = 1
    		rescaleFactor = 1
    		node_stack_top = 0.0, 1.5, 0.0, 0.0, 1.0, 0.0, 2
    		node_stack_bottom = 0.0, -1.5, 0.0, 0.0, -1.0, 0.0, 2
    		TechRequired = shortTermHabitation
    		entryCost = 24000
    		cost = 8000
    		category = Utility
    		subcategory = 0
    		title = Convert-O-Tron 250
    		manufacturer = Kerbodyne
    		description = <#acfffc><b>Buoyancy</b>: 0.3</color><br>This mobile processing plant can take raw materials containing even trace amounts of oxygen and hydrogen, and crack them into useful fuel products.  When operated by a skilled engineer, you will be able to operate with better efficiency.  These modules operate best at their ideal operating temperatures, and feature auto-shutdown in the event of excessive overheating.  Radiators can be used to help manage excessive heat.
    		attachRules = 1,1,1,0,0
    		mass = 3.36
    		dragModelType = default
    		maximum_drag = 0.2
    		minimum_drag = 0.2
    		angularDrag = 2
    		bulkheadProfiles = size2, srf
    		tags = conver isru mine )mining (ore process resource cck-rr _kerbalism
    		buoyancy = 0.3
    		rationalBuoyancy = Yes
    		RRConverter = isSet
    		RRPower = 1
    		RRSlots = 1
    		isStock = True
    		RRConverterRF = isSet
    		maxTemp = 1073.15
    		crashTolerance = 12
    		gTolerance = 100
    		maxPressure = 20000
    		breakingForce = 250
    		breakingTorque = 250
    		rationalPressure = No
    		MODULE
    		{
    			name = ModuleAnimationGroup
    			deployAnimationName = 
    			activeAnimationName = ProcessorLarge_running
    			deployActionName = Deploy <<1>>
    			retractActionName = Retract <<1>>
    			toggleActionName = Toggle <<1>>
    			moduleType = Converter
    			autoDeploy = true
    		}
    		MODULE
    		{
    			name = Driftless
    			active = True
    		}
    		MODULE
    		{
    			name = CollisionFX
    			scrapeSparks = true
    			collisionSound = CollisionFXReUpdated/Sounds/Bang1
    			scrapeSound = CollisionFXReUpdated/Sounds/GroundSkid
    			sparkSound = CollisionFXReUpdated/Sounds/SparkSqueal
    		}
    		MODULE
    		{
    			name = ProcessController
    			resource = _MRER
    			title = Molten Regolith Electrolysis (Rock)
    			Tag = Sabe
    			capacity = 1
    		}
    		MODULE
    		{
    			name = ProcessController
    			resource = _AmmoniaBrew
    			title = Ammonia Brewer
    			Tag = RR
    			capacity = 1
    		}
    		MODULE
    		{
    			name = ProcessController
    			resource = _AmmoniaToMono
    			title = Ammonia to MonoPropellant
    			Tag = RR
    			capacity = 1
    		}
    		MODULE
    		{
    			name = ProcessController
    			resource = _CarbonExtractor
    			title = Carbon Extractor
    			Tag = RR
    			capacity = 1
    		}
    		MODULE
    		{
    			name = ProcessController
    			resource = _CarbonFuser
    			title = Carbon Fuser
    			Tag = RR
    			capacity = 1
    		}
    		MODULE
    		{
    			name = ProcessController
    			resource = _SplitterAl2O3
    			title = Alumina Splitter
    			Tag = RR
    			capacity = 1
    		}
    		MODULE
    		{
    			name = ProcessController
    			resource = _SplitterCO2
    			title = Carbon Dioxide Splitter
    			Tag = RR
    			capacity = 1
    		}
    		MODULE
    		{
    			name = ProcessController
    			resource = _SplitterH2O
    			title = Water Splitter
    			Tag = RR
    			capacity = 1
    		}
    		MODULE
    		{
    			name = ProcessController
    			resource = _SplitterHydrates
    			title = Hydrates Splitter
    			Tag = RR
    			capacity = 1
    		}
    		MODULE
    		{
    			name = ProcessController
    			resource = _SplitterMona
    			title = Mopedantte Splitter
    			Tag = RR
    			capacity = 1
    		}
    		MODULE
    		{
    			name = ProcessController
    			resource = _SplitterSpod
    			title = Spodumene Splitter
    			Tag = RR
    			capacity = 1
    		}
    		MODULE
    		{
    			name = TweakScale
    			type = stack
    			defaultScale = 2.5
    		}
    		MODULE
    		{
    			name = GeometryPartModule
    		}
    		MODULE
    		{
    			name = FARAeroPartModule
    		}
    		MODULE
    		{
    			name = FARPartModule
    		}
    		MODULE
    		{
    			name = ProcessController
    			resource = _MRER
    			title = Molten Regolith Electrolysis (Rock)
    			Tag = Sabe
    			capacity = 90
    		}
    		MODULE
    		{
    			name = ProcessController
    			resource = _AmmoniaBrew
    			title = Ammonia Brewer
    			Tag = RR
    			capacity = 1
    		}
    		MODULE
    		{
    			name = ProcessController
    			resource = _AmmoniaToMono
    			title = Ammonia to MonoPropellant
    			Tag = RR
    			capacity = 1
    		}
    		MODULE
    		{
    			name = ProcessController
    			resource = _CarbonExtractor
    			title = Carbon Extractor
    			Tag = RR
    			capacity = 1
    		}
    		MODULE
    		{
    			name = ProcessController
    			resource = _CarbonFuser
    			title = Carbon Fuser
    			Tag = RR
    			capacity = 1
    		}
    		MODULE
    		{
    			name = ProcessController
    			resource = _CarbonMonoA
    			title = Carbon Monoxide A
    			Tag = RR
    			capacity = 1
    		}
    		MODULE
    		{
    			name = ProcessController
    			resource = _CarbonMonoB
    			title = Carbon Monoxide B
    			Tag = RR
    			capacity = 1
    		}
    		MODULE
    		{
    			name = ProcessController
    			resource = _GlykerolBrew
    			title = Glykerol Brewer
    			Tag = RR
    			capacity = 1
    		}
    		MODULE
    		{
    			name = ProcessController
    			resource = _SplitterAl2O3
    			title = Alumina Splitter
    			Tag = RR
    			capacity = 1
    		}
    		MODULE
    		{
    			name = ProcessController
    			resource = _SplitterCO2
    			title = Carbon Dioxide Splitter
    			Tag = RR
    			capacity = 1
    		}
    		MODULE
    		{
    			name = ProcessController
    			resource = _SplitterH2O
    			title = Water Splitter
    			Tag = RR
    			capacity = 1
    		}
    		MODULE
    		{
    			name = ProcessController
    			resource = _SplitterHydrates
    			title = Hydrates Splitter
    			Tag = RR
    			capacity = 1
    		}
    		MODULE
    		{
    			name = ProcessController
    			resource = _SplitterMona
    			title = Mopedantte Splitter
    			Tag = RR
    			capacity = 1
    		}
    		MODULE
    		{
    			name = ProcessController
    			resource = _SplitterSilica
    			title = Silicates Splitter
    			Tag = RR
    			capacity = 1
    		}
    		MODULE
    		{
    			name = ProcessController
    			resource = _SplitterSpod
    			title = Spodumene Splitter
    			Tag = RR
    			capacity = 1
    		}
    		MODULE
    		{
    			name = Reliability
    			type = ProcessController
    			title = #KERBALISM_ChemicalPlant_title
    			repair = Engineer
    			mtbf = 72576000
    			extra_cost = 1.0
    			extra_mass = 0.2
    		}
    		MODULE
    		{
    			name = ProcessController
    			resource = _HydroloxRF
    			title = Hydrolox
    			Tag = RRRF
    			capacity = 1
    		}
    		MODULE
    		{
    			name = ProcessController
    			resource = _MethaloxRF
    			title = Methalox
    			Tag = RRRF
    			capacity = 1
    		}
    		MODULE
    		{
    			name = ProcessController
    			resource = _Aerozine50
    			title = Aerozine50
    			Tag = RRRF
    			capacity = 1
    		}
    		MODULE
    		{
    			name = ProcessController
    			resource = _EthanolA
    			title = Ethanol A
    			Tag = RRRF
    			capacity = 1
    		}
    		MODULE
    		{
    			name = ProcessController
    			resource = _EthanolB
    			title = Ethanol B
    			Tag = RRRF
    			capacity = 1
    		}
    		MODULE
    		{
    			name = ProcessController
    			resource = _Ethanol75A
    			title = Ethanol75 A
    			Tag = RRRF
    			capacity = 1
    		}
    		MODULE
    		{
    			name = ProcessController
    			resource = _Ethanol75B
    			title = Ethanol75 B
    			Tag = RRRF
    			capacity = 1
    		}
    		MODULE
    		{
    			name = ProcessController
    			resource = _HTP
    			title = HTP
    			Tag = RRRF
    			capacity = 1
    		}
    		MODULE
    		{
    			name = ProcessController
    			resource = _HydrazineRF
    			title = Hydrazine
    			Tag = RRRF
    			capacity = 1
    		}
    		MODULE
    		{
    			name = ProcessController
    			resource = _Kerosene
    			title = Kerosene
    			Tag = RRRF
    			capacity = 1
    		}
    		MODULE
    		{
    			name = ProcessController
    			resource = _MMHA
    			title = MMH A
    			Tag = RRRF
    			capacity = 1
    		}
    		MODULE
    		{
    			name = ProcessController
    			resource = _MMHB
    			title = MMH B
    			Tag = RRRF
    			capacity = 1
    		}
    		MODULE
    		{
    			name = ProcessController
    			resource = _MMHC
    			title = MMH C
    			Tag = RRRF
    			capacity = 1
    		}
    		MODULE
    		{
    			name = ProcessController
    			resource = _NTO
    			title = NTO
    			Tag = RRRF
    			capacity = 1
    		}
    		MODULE
    		{
    			name = ProcessController
    			resource = _UDMH
    			title = UDMH
    			Tag = RRRF
    			capacity = 1
    		}
    		MODULE
    		{
    			name = ProcessController
    			resource = _UH25
    			title = UH25
    			Tag = RRRF
    			capacity = 1
    		}
    		MODULE
    		{
    			name = ProcessController
    			resource = _SplitterHTP
    			title = HTP Splitter
    			Tag = RRRF
    			capacity = 1
    		}
    		MODULE
    		{
    			name = ProcessController
    			resource = _SplitterHydrazine
    			title = Hydrazine Splitter
    			Tag = RRRF
    			capacity = 1
    		}
    		MODULE
    		{
    			name = ModuleResourceConverter
    			ConverterName = LOX
    			StartActionName = Start ISRU [LOX]
    			StopActionName = Stop ISRU [LOX]
    			AutoShutdown = false
    			GeneratesHeat = false
    			UseSpecialistBonus = true
    			SpecialistEfficiencyFactor = 0.2
    			SpecialistBonusBase = 0.05
    			Specialty = Engineer
    			EfficiencyBonus = 1
    			INPUT_RESOURCE
    			{
    				ResourceName = Ore
    				Ratio = 0.5
    			}
    			INPUT_RESOURCE
    			{
    				ResourceName = ElectricCharge
    				Ratio = 37.2
    			}
    			OUTPUT_RESOURCE
    			{
    				ResourceName = LqdOxygen
    				Ratio = 0.4578
    				DumpExcess = false
    			}
    		}
    		MODULE
    		{
    			name = ModuleResourceConverter
    			ConverterName = Oxygen
    			StartActionName = Start ISRU [Oxygen]
    			StopActionName = Stop ISRU [Oxygen]
    			AutoShutdown = false
    			GeneratesHeat = false
    			UseSpecialistBonus = true
    			SpecialistEfficiencyFactor = 0.2
    			SpecialistBonusBase = 0.05
    			Specialty = Engineer
    			EfficiencyBonus = 1
    			INPUT_RESOURCE
    			{
    				ResourceName = Ore
    				Ratio = 0.5
    			}
    			INPUT_RESOURCE
    			{
    				ResourceName = ElectricCharge
    				Ratio = 33.9
    			}
    			OUTPUT_RESOURCE
    			{
    				ResourceName = Oxygen
    				Ratio = 0.4578
    				DumpExcess = false
    			}
    		}
    		MODULE
    		{
    			name = ModuleResourceConverter
    			ConverterName = Water
    			StartActionName = Start ISRU [Water]
    			StopActionName = Stop ISRU [Water]
    			AutoShutdown = false
    			GeneratesHeat = false
    			UseSpecialistBonus = true
    			SpecialistEfficiencyFactor = 0.2
    			SpecialistBonusBase = 0.05
    			Specialty = Engineer
    			EfficiencyBonus = 1
    			INPUT_RESOURCE
    			{
    				ResourceName = Ore
    				Ratio = 0.5
    			}
    			INPUT_RESOURCE
    			{
    				ResourceName = ElectricCharge
    				Ratio = 24.0
    			}
    			OUTPUT_RESOURCE
    			{
    				ResourceName = Water
    				Ratio = 0.0761
    				DumpExcess = false
    			}
    		}
    		MODULE
    		{
    			name = ModuleResourceConverter
    			ConverterName = LqdHydrogen
    			StartActionName = Start ISRU [LqdHydrogen]
    			StopActionName = Stop ISRU [LqdHydrogen]
    			AutoShutdown = false
    			GeneratesHeat = false
    			UseSpecialistBonus = true
    			SpecialistEfficiencyFactor = 0.2
    			SpecialistBonusBase = 0.05
    			Specialty = Engineer
    			EfficiencyBonus = 1
    			INPUT_RESOURCE
    			{
    				ResourceName = Ore
    				Ratio = 0.5
    			}
    			INPUT_RESOURCE
    			{
    				ResourceName = ElectricCharge
    				Ratio = 36.3
    			}
    			OUTPUT_RESOURCE
    			{
    				ResourceName = LqdHydrogen
    				Ratio = 0.01135
    				DumpExcess = false
    			}
    		}
    		MODULE
    		{
    			name = ModuleResourceConverter
    			ConverterName = LqdMethane
    			StartActionName = Start ISRU [LqdMethane]
    			StopActionName = Stop ISRU [LqdMethane]
    			AutoShutdown = false
    			GeneratesHeat = false
    			UseSpecialistBonus = true
    			SpecialistEfficiencyFactor = 0.2
    			SpecialistBonusBase = 0.05
    			Specialty = Engineer
    			EfficiencyBonus = 1
    			INPUT_RESOURCE
    			{
    				ResourceName = Ore
    				Ratio = 0.5
    			}
    			INPUT_RESOURCE
    			{
    				ResourceName = ElectricCharge
    				Ratio = 37.0
    			}
    			OUTPUT_RESOURCE
    			{
    				ResourceName = LqdMethane
    				Ratio = 0.0454
    				DumpExcess = false
    			}
    		}
    		MODULE
    		{
    			name = PlannerController
    			title = converter
    			considered = true
    		}
    		MODULE
    		{
    			name = ModuleAeroReentry
    			skinHeatConductivity = 0.001
    			leaveTemp = True
    		}
    		MODULE
    		{
    			name = Reliability
    			type = ModuleResourceConverter
    			title = Converter
    			repair = Engineer
    			mtbf = 72576000
    			extra_cost = 1.0
    			extra_mass = 0.2
    		}
    	}
    }

     

    P.S.: I don't know how Kerbalism's processes work that well, but AFAIK my problem exists because ISRU parts are left with ProcessController modules vs. all processes being contained inside a Configure module. Am I correct?

  4. 12 hours ago, JadeOfMaar said:

    Generic, unhelpful ones. I need someone who knows the anatomy of a Kerbalism profile.

    Oh, that's unfortunate :(

    I saw your post on Kerbalism's Discord a few days ago, so I'd also recommend the KSP-RO server. People over there are extremely helpful and there's also a dedicated channel for Kerbalism-related questions. Besides, since you're working on ISRU for RealFuels you might get a lot of people interested!

  5. On 9/27/2021 at 2:43 AM, JadeOfMaar said:

    I'm finally nearly finished with everything. Aside from little things that I may come up with, now I'm just waiting on someone who knows Kerbalism to find what I can't see in the new mod folder RationalResourcesKerbalismRF that causes nulls, and fix it for me. Side note: I've already delayed quite a bit due to burnout/overload and hoping to deliver those intake parts. I ponder whether to delay further in order to deliver them.

    What sort of nulls do you get?

  6. 12 hours ago, severedsolo said:

    If you are planning to go interplanetary, in my experience this is a problem that solves itself later in the game - I turn on Rep Decay (at about 5/10%) - although I have plenty of money in the "Apollo era" - when I'm going interplanetary it's not unusual for a launch to cost me 400-500k funds which obviously takes a big chunk out of the budget. Without flying other missions, the rep is decaying between launches and you find yourself on a tight budget.

    Otherwise, you could turn down the multiplier, or the rep rewards as you said.  Or you could allocate less money to Funds and give your Construction and Research departments more budget.

    Thanks! By the way, what happens if I uncap the budgets? Does the remainder get redistributed according to the next budget allocation percentages, or does it stay in its respective department?

  7. I'm on vacation and just came across your mod(s), truly amazing stuff! I will add them ASAP to my modpack once I'm back on the big city :D

    One quick question: I play with RSS/RO, so I'm really excited for RealFuel support. I've been checking the work-in-progress and I'm not sure I understand the diagram you uploaded here. Correct me if I'm wrong, but I imagine the following process would be feasible on the Moon, as the Srf_Alumina template contains Hydrates:

    Hydrates -> split into Water and other products -> split into Hydrogen, Oxygen and Deuterium -> freeze into LqdHydrogen and LqdOxygen -> get fuel to power, say, an RL-10 engine -> profit!

  8. Hello!

    Sorry if the question has been answered before, but I play on RSS and I'm a bit wary of using PRE to recover stages. I did a trial run with a small Castor 120 rocket that successfully parachuted to the ocean while the second stage was about 5,000km away (range set to 10,000km).

    This is very promising for what I intend on doing with the mod, but what would happen if a space station with a lot of parts flies overhead and enters the physics bubble? I reckon it would be subjected to float-point errors/jitter/kraken, so is it possible to only apply extended physics range to one vessel (via their control point, for instance)?

    Thanks in advance :)

  9. As we all know, KSP2 strives to improve upon the first game not only in terms of graphics, progression, customization, etc., but also in how well the game should perform - vessel physics, for instance, are an outstanding problem.

    However, I haven't seen much discussiom around memory usage and loading times. As many others, I play(ed) KSP with RO/RSS, a couple of other realism mods and a metric ton of part and gameplay modifications that both filled the tech tree and added near-future stuff.

    As such, I stopped playing once loading times went past 20 minutes. It was an incredibly frustrating experience because, while I couldn't really complain about FPS or ships blowing apart, I just didn't have enough free time to spend in waiting half-hour for the game to load. Essencially, KSP is quite moddable in its own right... but it doesn't scale well for large modpacks.

    This has been blamed on both Unity limitations and some infamous bugs. ModManager managed (heh) to optimize loading times to a degree, but this issue runs deeper than that. Same thing happens with RAM usage.

    Will/could this be dramatically improve(d) in KSP2?

  10. I've just launched my RealAgencies mod and someone brought to my attention a possible problem with the agent parser in CC version 1.28.2 (1.28.1 seems to work fine):

    Here are two logs for the same contract but on different versions of Contract Configurator. I took the liberty of highlighting the relevant lines:

    1.28.1 (works fine)

    Spoiler

    Debug information for CONTRACT_TYPE 'roverDione':

    Configuration:
    CONTRACT_TYPE
    {
        name = roverDione
        title = Dione Rover
        group = Rovers
        agent = [NASA, ESA, JAXA, Roscosmos, ISRO].Random()
        description = Design and send a rover to the surface of Dione and visit the different areas marked by our scientists.&br;&br;We suggest landing your rover as close as possible to the first marker.
        synopsis = Send a rover to explore the surface of Dione
        completedMessage = Congratulations, our rover has returned important scientific data.
        sortKey = 1308
        cancellable = true
        declinable = true
        autoAccept = false
        minExpiry = 0
        maxExpiry = 0
        maxCompletions = 1
        maxSimultaneous = 1
        deadline = 5475
        targetBody = Dione
        prestige = Significant
        advanceFunds = 554600 / ContractMultiplier()
        rewardScience = 0.15
        rewardReputation = 50
        rewardFunds = @advanceFunds * 3.0
        failureReputation = 35
        failureFunds = @advanceFunds * 1.9
        PARAMETER
        {
            name = VesselGroup
            type = VesselParameterGroup
            title = Uncrewed Landing on Dione
            define = ProbeDione
            targetBody = @/targetBody
            PARAMETER
            {
                name = NewVessel
                type = NewVessel
                title = Launch a New Vessel
                hideChildren = true
                targetBody = @/targetBody
            }
            PARAMETER
            {
                name = Crewmembers
                type = HasCrew
                minCrew = 0
                maxCrew = 0
                title = Uncrewed
                hideChildren = true
                targetBody = @/targetBody
            }
            PARAMETER
            {
                name = WaypointAlpha
                type = VisitWaypoint
                index = 0
                distance = 100.0
                disableOnStateChange = true
                title = Safely Land near Rover Site Alpha on Dione
                hideChildren = true
                showMessages = true
                targetBody = @/targetBody
            }
            PARAMETER
            {
                name = WaypointBeta
                type = VisitWaypoint
                index = 0
                distance = 100.0
                disableOnStateChange = true
                title = Visit Rover Site Beta
                hideChildren = true
                showMessages = true
                targetBody = @/targetBody
            }
            PARAMETER
            {
                name = WaypointCharlie
                type = VisitWaypoint
                index = 0
                distance = 100.0
                disableOnStateChange = true
                title = Visit Rover Site Charlie
                hideChildren = true
                showMessages = true
                targetBody = @/targetBody
            }
            PARAMETER
            {
                name = SurfaceScience
                type = CollectScience
                situation = SrfLanded
                recoveryMethod = Transmit
                title = Transmit Science from the Surface
                hideChildren = true
                targetBody = @/targetBody
            }
        }
        BEHAVIOUR
        {
            name = WaypointGenerator
            type = WaypointGenerator
            RANDOM_WAYPOINT
            {
                name = Rover Site Alpha
                hidden = false
                count = 1
                icon = marker
                altitude = 0.0
                waterAllowed = false
                forceEquatorial = false
                targetBody = @/targetBody
            }
            RANDOM_WAYPOINT_NEAR
            {
                name = Rover Site Beta
                parameter = WaypointAlpha
                hidden = false
                count = 1
                icon = marker
                altitude = 0.0
                waterAllowed = false
                nearIndex = 0
                minDistance = 500.0
                maxDistance = 1000.0
                targetBody = @/targetBody
            }
            RANDOM_WAYPOINT_NEAR
            {
                name = Rover Site Charlie
                parameter = WaypointBeta
                hidden = false
                count = 1
                icon = marker
                altitude = 0.0
                waterAllowed = false
                nearIndex = 1
                minDistance = 500.0
                maxDistance = 2000.0
                targetBody = @/targetBody
            }
        }
    }

    Data Nodes:
    roverDione
        Rovers:name = Rovers, deterministic = True
        Rovers:displayName = Rover Contracts, deterministic = True
        Rovers:minVersion = 1.22.2, deterministic = True
        Rovers:maxCompletions = 0, deterministic = True
        Rovers:maxSimultaneous = 0, deterministic = True
        Rovers:disabledContractType = [ BaseContract, CollectScience, ExploreBody, ExplorationContract, GrandTour, ISRUContract, RecordTrackContract, PartTest, PlantFlag, RecoverAsset, SatelliteContract, StationContract, SurveyContract, TourismContract, WorldFirstContract, RemoteTech, WBIResearchContract, ScanSatOfficial, CrossBelt, CrossHeliopause, MannedOrbit, SpaceAnalysis, SpaceHarvest ], deterministic = True
        Rovers:agent = Exploration, deterministic = True
        Rovers:sortKey = 130, deterministic = True
        Rovers:tip = , deterministic = True
        name = roverDione, deterministic = True
        trace = False, deterministic = True
        title = Dione Rover, deterministic = True
        tag = , deterministic = True
        description = Design and send a rover to the surface of Dione and visit the different areas marked by our scientists.

    We suggest landing your rover as close as possible to the first marker., deterministic = True
        topic = , deterministic = True
        subject = , deterministic = True
        notes = null, deterministic = True
        synopsis = Send a rover to explore the surface of Dione, deterministic = True
        completedMessage = Congratulations, our rover has returned important scientific data., deterministic = True
        agent = JAXA, deterministic = False
        minExpiry = 0, deterministic = True
        maxExpiry = 0, deterministic = True
        deadline = 5475, deterministic = True
        cancellable = True, deterministic = True
        declinable = True, deterministic = True
        autoAccept = False, deterministic = True
        prestige = [ Significant ], deterministic = True
        targetBody = null, deterministic = True
        maxCompletions = 1, deterministic = True
        maxSimultaneous = 1, deterministic = True
        rewardFunds = 1663800, deterministic = False
        rewardReputation = 50, deterministic = True
        rewardScience = 0.15, deterministic = True
        failureFunds = 1053740, deterministic = False
        failureReputation = 35, deterministic = True
        advanceFunds = 554600, deterministic = False
        genericTitle = Dione Rover, deterministic = True
        genericDescription = Design and send a rover to the surface of Dione and visit the different areas marked by our scientists.

    We suggest landing your rover as close as possible to the first marker., deterministic = True
        sortKey = 1308, deterministic = True

        VesselGroup
            type = VesselParameterGroup, deterministic = True
            name = VesselGroup, deterministic = True
            targetBody = null, deterministic = True
            rewardFunds = 0, deterministic = True
            rewardReputation = 0, deterministic = True
            rewardScience = 0, deterministic = True
            failureFunds = 0, deterministic = True
            failureReputation = 0, deterministic = True
            optional = False, deterministic = True
            disableOnStateChange = null, deterministic = True
            completeInSequence = False, deterministic = True
            hidden = False, deterministic = True
            hideChildren = False, deterministic = True
            title = Uncrewed Landing on Dione, deterministic = True
            notes = null, deterministic = True
            completedMessage = null, deterministic = True
            duration = 00:00:00, deterministic = True
            define = ProbeDione, deterministic = True
            defineList = null, deterministic = True
            vessel = [], deterministic = True
            dissassociateVesselsOnContractFailure = True, deterministic = True
            dissassociateVesselsOnContractCompletion = False, deterministic = True
            hideVesselName = False, deterministic = True
        
            NewVessel
                type = NewVessel, deterministic = True
                name = NewVessel, deterministic = True
                targetBody = null, deterministic = True
                rewardFunds = 0, deterministic = True
                rewardReputation = 0, deterministic = True
                rewardScience = 0, deterministic = True
                failureFunds = 0, deterministic = True
                failureReputation = 0, deterministic = True
                optional = False, deterministic = True
                disableOnStateChange = null, deterministic = True
                completeInSequence = False, deterministic = True
                hidden = False, deterministic = True
                hideChildren = True, deterministic = True
                title = Launch a New Vessel, deterministic = True
                notes = null, deterministic = True
                completedMessage = null, deterministic = True
            
            Crewmembers
                type = HasCrew, deterministic = True
                name = Crewmembers, deterministic = True
                targetBody = null, deterministic = True
                rewardFunds = 0, deterministic = True
                rewardReputation = 0, deterministic = True
                rewardScience = 0, deterministic = True
                failureFunds = 0, deterministic = True
                failureReputation = 0, deterministic = True
                optional = False, deterministic = True
                disableOnStateChange = null, deterministic = True
                completeInSequence = False, deterministic = True
                hidden = False, deterministic = True
                hideChildren = True, deterministic = True
                title = Uncrewed, deterministic = True
                notes = null, deterministic = True
                completedMessage = null, deterministic = True
                trait = null, deterministic = True
                minExperience = 0, deterministic = True
                maxExperience = 5, deterministic = True
                minCrew = 0, deterministic = True
                maxCrew = 0, deterministic = True
                kerbal = [], deterministic = True
                excludeKerbal = [], deterministic = True
            
            WaypointAlpha
                type = VisitWaypoint, deterministic = True
                name = WaypointAlpha, deterministic = True
                targetBody = null, deterministic = True
                rewardFunds = 0, deterministic = True
                rewardReputation = 0, deterministic = True
                rewardScience = 0, deterministic = True
                failureFunds = 0, deterministic = True
                failureReputation = 0, deterministic = True
                optional = False, deterministic = True
                disableOnStateChange = True, deterministic = True
                completeInSequence = False, deterministic = True
                hidden = False, deterministic = True
                hideChildren = True, deterministic = True
                title = Safely Land near Rover Site Alpha on Dione, deterministic = True
                notes = null, deterministic = True
                completedMessage = null, deterministic = True
                index = 0, deterministic = True
                distance = 100, deterministic = True
                horizontalDistance = 0, deterministic = True
                hideOnCompletion = True, deterministic = True
                showMessages = True, deterministic = True
            
            WaypointBeta
                type = VisitWaypoint, deterministic = True
                name = WaypointBeta, deterministic = True
                targetBody = null, deterministic = True
                rewardFunds = 0, deterministic = True
                rewardReputation = 0, deterministic = True
                rewardScience = 0, deterministic = True
                failureFunds = 0, deterministic = True
                failureReputation = 0, deterministic = True
                optional = False, deterministic = True
                disableOnStateChange = True, deterministic = True
                completeInSequence = False, deterministic = True
                hidden = False, deterministic = True
                hideChildren = True, deterministic = True
                title = Visit Rover Site Beta, deterministic = True
                notes = null, deterministic = True
                completedMessage = null, deterministic = True
                index = 0, deterministic = True
                distance = 100, deterministic = True
                horizontalDistance = 0, deterministic = True
                hideOnCompletion = True, deterministic = True
                showMessages = True, deterministic = True
            
            WaypointCharlie
                type = VisitWaypoint, deterministic = True
                name = WaypointCharlie, deterministic = True
                targetBody = null, deterministic = True
                rewardFunds = 0, deterministic = True
                rewardReputation = 0, deterministic = True
                rewardScience = 0, deterministic = True
                failureFunds = 0, deterministic = True
                failureReputation = 0, deterministic = True
                optional = False, deterministic = True
                disableOnStateChange = True, deterministic = True
                completeInSequence = False, deterministic = True
                hidden = False, deterministic = True
                hideChildren = True, deterministic = True
                title = Visit Rover Site Charlie, deterministic = True
                notes = null, deterministic = True
                completedMessage = null, deterministic = True
                index = 0, deterministic = True
                distance = 100, deterministic = True
                horizontalDistance = 0, deterministic = True
                hideOnCompletion = True, deterministic = True
                showMessages = True, deterministic = True
            
            SurfaceScience
                type = CollectScience, deterministic = True
                name = SurfaceScience, deterministic = True
                targetBody = null, deterministic = True
                rewardFunds = 0, deterministic = True
                rewardReputation = 0, deterministic = True
                rewardScience = 0, deterministic = True
                failureFunds = 0, deterministic = True
                failureReputation = 0, deterministic = True
                optional = False, deterministic = True
                disableOnStateChange = null, deterministic = True
                completeInSequence = False, deterministic = True
                hidden = False, deterministic = True
                hideChildren = True, deterministic = True
                title = Transmit Science from the Surface, deterministic = True
                notes = null, deterministic = True
                completedMessage = null, deterministic = True
                biome = null, deterministic = True
                situation = SrfLanded, deterministic = True
                location = null, deterministic = True
                experiment = [], deterministic = True
                recoveryMethod = Transmit, deterministic = True
                subject = [], deterministic = True
            
        WaypointGenerator
            type = WaypointGenerator, deterministic = True
            name = WaypointGenerator, deterministic = True
            targetBody = null, deterministic = True
        
            WAYPOINT_0
                type = RANDOM_WAYPOINT, deterministic = True
                targetBody = null, deterministic = True
                name = [ Rover Site Alpha ], deterministic = True
                altitude = 0, deterministic = True
                parameter = [], deterministic = True
                hidden = False, deterministic = True
                icon = marker, deterministic = True
                underwater = False, deterministic = True
                clustered = False, deterministic = True
                waterAllowed = False, deterministic = True
                forceEquatorial = False, deterministic = True
                count = 1, deterministic = True
            
            WAYPOINT_1
                type = RANDOM_WAYPOINT_NEAR, deterministic = True
                targetBody = null, deterministic = True
                name = [ Rover Site Beta ], deterministic = True
                altitude = 0, deterministic = True
                parameter = [ WaypointAlpha ], deterministic = True
                hidden = False, deterministic = True
                icon = marker, deterministic = True
                underwater = False, deterministic = True
                clustered = False, deterministic = True
                waterAllowed = False, deterministic = True
                nearIndex = 0, deterministic = True
                chained = False, deterministic = True
                count = 1, deterministic = True
                minDistance = 500, deterministic = True
                maxDistance = 1000, deterministic = True
            
            WAYPOINT_2
                type = RANDOM_WAYPOINT_NEAR, deterministic = True
                targetBody = null, deterministic = True
                name = [ Rover Site Charlie ], deterministic = True
                altitude = 0, deterministic = True
                parameter = [ WaypointBeta ], deterministic = True
                hidden = False, deterministic = True
                icon = marker, deterministic = True
                underwater = False, deterministic = True
                clustered = False, deterministic = True
                waterAllowed = False, deterministic = True
                nearIndex = 1, deterministic = True
                chained = False, deterministic = True
                count = 1, deterministic = True
                minDistance = 500, deterministic = True
                maxDistance = 2000, deterministic = True
            

    Output log:
    [INFO] ContractConfigurator.ContractType: Loading CONTRACT_TYPE: 'roverDione'
    [INFO] ContractConfigurator.ContractType: Successfully loaded CONTRACT_TYPE 'roverDione'
     

    1.28.2 (not working):

    Spoiler

    Debug information for CONTRACT_TYPE 'roverDione':

    Configuration:
    CONTRACT_TYPE
    {
        name = roverDione
        title = Dione Rover
        group = Rovers
        agent = [NASA, ESA, JAXA, Roscosmos, ISRO].Random()
        description = Design and send a rover to the surface of Dione and visit the different areas marked by our scientists.&br;&br;We suggest landing your rover as close as possible to the first marker.
        synopsis = Send a rover to explore the surface of Dione
        completedMessage = Congratulations, our rover has returned important scientific data.
        sortKey = 1308
        cancellable = true
        declinable = true
        autoAccept = false
        minExpiry = 0
        maxExpiry = 0
        maxCompletions = 1
        maxSimultaneous = 1
        deadline = 5475
        targetBody = Dione
        prestige = Significant
        advanceFunds = 554600 / ContractMultiplier()
        rewardScience = 0.15
        rewardReputation = 50
        rewardFunds = @advanceFunds * 3.0
        failureReputation = 35
        failureFunds = @advanceFunds * 1.9
        PARAMETER
        {
            name = VesselGroup
            type = VesselParameterGroup
            title = Uncrewed Landing on Dione
            define = ProbeDione
            targetBody = @/targetBody
            PARAMETER
            {
                name = NewVessel
                type = NewVessel
                title = Launch a New Vessel
                hideChildren = true
                targetBody = @/targetBody
            }
            PARAMETER
            {
                name = Crewmembers
                type = HasCrew
                minCrew = 0
                maxCrew = 0
                title = Uncrewed
                hideChildren = true
                targetBody = @/targetBody
            }
            PARAMETER
            {
                name = WaypointAlpha
                type = VisitWaypoint
                index = 0
                distance = 100.0
                disableOnStateChange = true
                title = Safely Land near Rover Site Alpha on Dione
                hideChildren = true
                showMessages = true
                targetBody = @/targetBody
            }
            PARAMETER
            {
                name = WaypointBeta
                type = VisitWaypoint
                index = 0
                distance = 100.0
                disableOnStateChange = true
                title = Visit Rover Site Beta
                hideChildren = true
                showMessages = true
                targetBody = @/targetBody
            }
            PARAMETER
            {
                name = WaypointCharlie
                type = VisitWaypoint
                index = 0
                distance = 100.0
                disableOnStateChange = true
                title = Visit Rover Site Charlie
                hideChildren = true
                showMessages = true
                targetBody = @/targetBody
            }
            PARAMETER
            {
                name = SurfaceScience
                type = CollectScience
                situation = SrfLanded
                recoveryMethod = Transmit
                title = Transmit Science from the Surface
                hideChildren = true
                targetBody = @/targetBody
            }
        }
        BEHAVIOUR
        {
            name = WaypointGenerator
            type = WaypointGenerator
            RANDOM_WAYPOINT
            {
                name = Rover Site Alpha
                hidden = false
                count = 1
                icon = marker
                altitude = 0.0
                waterAllowed = false
                forceEquatorial = false
                targetBody = @/targetBody
            }
            RANDOM_WAYPOINT_NEAR
            {
                name = Rover Site Beta
                parameter = WaypointAlpha
                hidden = false
                count = 1
                icon = marker
                altitude = 0.0
                waterAllowed = false
                nearIndex = 0
                minDistance = 500.0
                maxDistance = 1000.0
                targetBody = @/targetBody
            }
            RANDOM_WAYPOINT_NEAR
            {
                name = Rover Site Charlie
                parameter = WaypointBeta
                hidden = false
                count = 1
                icon = marker
                altitude = 0.0
                waterAllowed = false
                nearIndex = 1
                minDistance = 500.0
                maxDistance = 2000.0
                targetBody = @/targetBody
            }
        }
    }

    Data Nodes:
    roverDione
        Rovers:name = Rovers, deterministic = True
        Rovers:displayName = Rover Contracts, deterministic = True
        Rovers:minVersion = 1.22.2, deterministic = True
        Rovers:maxCompletions = 0, deterministic = True
        Rovers:maxSimultaneous = 0, deterministic = True
        Rovers:disabledContractType = [ BaseContract, CollectScience, ExploreBody, ExplorationContract, GrandTour, ISRUContract, RecordTrackContract, PartTest, PlantFlag, RecoverAsset, SatelliteContract, StationContract, SurveyContract, TourismContract, WorldFirstContract, RemoteTech, WBIResearchContract, ScanSatOfficial, CrossBelt, CrossHeliopause, MannedOrbit, SpaceAnalysis, SpaceHarvest ], deterministic = True
        Rovers:agent = Exploration, deterministic = True
        Rovers:sortKey = 130, deterministic = True
        Rovers:tip = , deterministic = True
        name = roverDione, deterministic = True
        trace = False, deterministic = True
        title = Dione Rover, deterministic = True
        tag = , deterministic = True
        description = Design and send a rover to the surface of Dione and visit the different areas marked by our scientists.

    We suggest landing your rover as close as possible to the first marker., deterministic = True
        topic = , deterministic = True
        subject = , deterministic = True
        notes = null, deterministic = True
        synopsis = Send a rover to explore the surface of Dione, deterministic = True
        completedMessage = Congratulations, our rover has returned important scientific data., deterministic = True
        agent = null, deterministic = False
        minExpiry = 0, deterministic = True
        maxExpiry = 0, deterministic = True
        deadline = 5475, deterministic = True
        cancellable = True, deterministic = True
        declinable = True, deterministic = True
        autoAccept = False, deterministic = True
        prestige = [ Significant ], deterministic = True
        targetBody = null, deterministic = True
        maxCompletions = 1, deterministic = True
        maxSimultaneous = 1, deterministic = True
        rewardFunds = 1663800, deterministic = False
        rewardReputation = 50, deterministic = True
        rewardScience = 0.15, deterministic = True
        failureFunds = 1053740, deterministic = False
        failureReputation = 35, deterministic = True
        advanceFunds = 554600, deterministic = False
        genericTitle = Dione Rover, deterministic = True
        genericDescription = Design and send a rover to the surface of Dione and visit the different areas marked by our scientists.

    We suggest landing your rover as close as possible to the first marker., deterministic = True
        sortKey = 1308, deterministic = True

        VesselGroup
            type = VesselParameterGroup, deterministic = True
            name = VesselGroup, deterministic = True
            targetBody = null, deterministic = True
            rewardFunds = 0, deterministic = True
            rewardReputation = 0, deterministic = True
            rewardScience = 0, deterministic = True
            failureFunds = 0, deterministic = True
            failureReputation = 0, deterministic = True
            optional = False, deterministic = True
            disableOnStateChange = null, deterministic = True
            completeInSequence = False, deterministic = True
            hidden = False, deterministic = True
            hideChildren = False, deterministic = True
            title = Uncrewed Landing on Dione, deterministic = True
            notes = null, deterministic = True
            completedMessage = null, deterministic = True
            duration = 00:00:00, deterministic = True
            define = ProbeDione, deterministic = True
            defineList = null, deterministic = True
            vessel = [], deterministic = True
            dissassociateVesselsOnContractFailure = True, deterministic = True
            dissassociateVesselsOnContractCompletion = False, deterministic = True
            hideVesselName = False, deterministic = True
        
            NewVessel
                type = NewVessel, deterministic = True
                name = NewVessel, deterministic = True
                targetBody = null, deterministic = True
                rewardFunds = 0, deterministic = True
                rewardReputation = 0, deterministic = True
                rewardScience = 0, deterministic = True
                failureFunds = 0, deterministic = True
                failureReputation = 0, deterministic = True
                optional = False, deterministic = True
                disableOnStateChange = null, deterministic = True
                completeInSequence = False, deterministic = True
                hidden = False, deterministic = True
                hideChildren = True, deterministic = True
                title = Launch a New Vessel, deterministic = True
                notes = null, deterministic = True
                completedMessage = null, deterministic = True
            
            Crewmembers
                type = HasCrew, deterministic = True
                name = Crewmembers, deterministic = True
                targetBody = null, deterministic = True
                rewardFunds = 0, deterministic = True
                rewardReputation = 0, deterministic = True
                rewardScience = 0, deterministic = True
                failureFunds = 0, deterministic = True
                failureReputation = 0, deterministic = True
                optional = False, deterministic = True
                disableOnStateChange = null, deterministic = True
                completeInSequence = False, deterministic = True
                hidden = False, deterministic = True
                hideChildren = True, deterministic = True
                title = Uncrewed, deterministic = True
                notes = null, deterministic = True
                completedMessage = null, deterministic = True
                trait = null, deterministic = True
                minExperience = 0, deterministic = True
                maxExperience = 5, deterministic = True
                minCrew = 0, deterministic = True
                maxCrew = 0, deterministic = True
                kerbal = [], deterministic = True
                excludeKerbal = [], deterministic = True
            
            WaypointAlpha
                type = VisitWaypoint, deterministic = True
                name = WaypointAlpha, deterministic = True
                targetBody = null, deterministic = True
                rewardFunds = 0, deterministic = True
                rewardReputation = 0, deterministic = True
                rewardScience = 0, deterministic = True
                failureFunds = 0, deterministic = True
                failureReputation = 0, deterministic = True
                optional = False, deterministic = True
                disableOnStateChange = True, deterministic = True
                completeInSequence = False, deterministic = True
                hidden = False, deterministic = True
                hideChildren = True, deterministic = True
                title = Safely Land near Rover Site Alpha on Dione, deterministic = True
                notes = null, deterministic = True
                completedMessage = null, deterministic = True
                index = 0, deterministic = True
                distance = 100, deterministic = True
                horizontalDistance = 0, deterministic = True
                hideOnCompletion = True, deterministic = True
                showMessages = True, deterministic = True
            
            WaypointBeta
                type = VisitWaypoint, deterministic = True
                name = WaypointBeta, deterministic = True
                targetBody = null, deterministic = True
                rewardFunds = 0, deterministic = True
                rewardReputation = 0, deterministic = True
                rewardScience = 0, deterministic = True
                failureFunds = 0, deterministic = True
                failureReputation = 0, deterministic = True
                optional = False, deterministic = True
                disableOnStateChange = True, deterministic = True
                completeInSequence = False, deterministic = True
                hidden = False, deterministic = True
                hideChildren = True, deterministic = True
                title = Visit Rover Site Beta, deterministic = True
                notes = null, deterministic = True
                completedMessage = null, deterministic = True
                index = 0, deterministic = True
                distance = 100, deterministic = True
                horizontalDistance = 0, deterministic = True
                hideOnCompletion = True, deterministic = True
                showMessages = True, deterministic = True
            
            WaypointCharlie
                type = VisitWaypoint, deterministic = True
                name = WaypointCharlie, deterministic = True
                targetBody = null, deterministic = True
                rewardFunds = 0, deterministic = True
                rewardReputation = 0, deterministic = True
                rewardScience = 0, deterministic = True
                failureFunds = 0, deterministic = True
                failureReputation = 0, deterministic = True
                optional = False, deterministic = True
                disableOnStateChange = True, deterministic = True
                completeInSequence = False, deterministic = True
                hidden = False, deterministic = True
                hideChildren = True, deterministic = True
                title = Visit Rover Site Charlie, deterministic = True
                notes = null, deterministic = True
                completedMessage = null, deterministic = True
                index = 0, deterministic = True
                distance = 100, deterministic = True
                horizontalDistance = 0, deterministic = True
                hideOnCompletion = True, deterministic = True
                showMessages = True, deterministic = True
            
            SurfaceScience
                type = CollectScience, deterministic = True
                name = SurfaceScience, deterministic = True
                targetBody = null, deterministic = True
                rewardFunds = 0, deterministic = True
                rewardReputation = 0, deterministic = True
                rewardScience = 0, deterministic = True
                failureFunds = 0, deterministic = True
                failureReputation = 0, deterministic = True
                optional = False, deterministic = True
                disableOnStateChange = null, deterministic = True
                completeInSequence = False, deterministic = True
                hidden = False, deterministic = True
                hideChildren = True, deterministic = True
                title = Transmit Science from the Surface, deterministic = True
                notes = null, deterministic = True
                completedMessage = null, deterministic = True
                biome = null, deterministic = True
                situation = SrfLanded, deterministic = True
                location = null, deterministic = True
                experiment = [], deterministic = True
                recoveryMethod = Transmit, deterministic = True
                subject = [], deterministic = True
            
        WaypointGenerator
            type = WaypointGenerator, deterministic = True
            name = WaypointGenerator, deterministic = True
            targetBody = null, deterministic = True
        
            WAYPOINT_0
                type = RANDOM_WAYPOINT, deterministic = True
                targetBody = null, deterministic = True
                name = [ Rover Site Alpha ], deterministic = True
                altitude = 0, deterministic = True
                parameter = [], deterministic = True
                hidden = False, deterministic = True
                icon = marker, deterministic = True
                underwater = False, deterministic = True
                clustered = False, deterministic = True
                waterAllowed = False, deterministic = True
                forceEquatorial = False, deterministic = True
                count = 1, deterministic = True
            
            WAYPOINT_1
                type = RANDOM_WAYPOINT_NEAR, deterministic = True
                targetBody = null, deterministic = True
                name = [ Rover Site Beta ], deterministic = True
                altitude = 0, deterministic = True
                parameter = [ WaypointAlpha ], deterministic = True
                hidden = False, deterministic = True
                icon = marker, deterministic = True
                underwater = False, deterministic = True
                clustered = False, deterministic = True
                waterAllowed = False, deterministic = True
                nearIndex = 0, deterministic = True
                chained = False, deterministic = True
                count = 1, deterministic = True
                minDistance = 500, deterministic = True
                maxDistance = 1000, deterministic = True
            
            WAYPOINT_2
                type = RANDOM_WAYPOINT_NEAR, deterministic = True
                targetBody = null, deterministic = True
                name = [ Rover Site Charlie ], deterministic = True
                altitude = 0, deterministic = True
                parameter = [ WaypointBeta ], deterministic = True
                hidden = False, deterministic = True
                icon = marker, deterministic = True
                underwater = False, deterministic = True
                clustered = False, deterministic = True
                waterAllowed = False, deterministic = True
                nearIndex = 1, deterministic = True
                chained = False, deterministic = True
                count = 1, deterministic = True
                minDistance = 500, deterministic = True
                maxDistance = 2000, deterministic = True
            

    Output log:
    [INFO] ContractConfigurator.ContractType: Loading CONTRACT_TYPE: 'roverDione'
    [INFO] ContractConfigurator.ContractType: Successfully loaded CONTRACT_TYPE 'roverDione'
     

    As you can see, the "agent" line on the data nodes for the secong log file appears as null.

    P.S. the problem with the incoherent HasResource nodes I mentioned on the previous page keeps happening; the configs I posted there should help with diagnosing the bug. The contract itself has these two lines:

    minQuantity = Round((Pow(Random(0.5,1.5) * (0.3 + UnlockedTech().Count() / 100),2)*2500)/2,100) * 8
    title = Have a ComSatPayload of at least @minQuantity units on the craft

    In what situation could minQuantity present different values on these two lines? Now that I think of it, I only ever saw this happening on contracts with more than one simultaneous instance...

  11. Real Agencies

    Introduction

    This mod adds 100+ real-life agencies to the game, split between telecommunications satellite operators, space weather institutions, navigation satellite projects and actual space agencies. Simple as that. I decided to create this pack as a response to two personal issues - which you might have previously come across as well:

    1- Contracts of the "launch satellite X" type are boring and nigh indistiguishable from eachother. Having to fly payloads for real-life agencies brings the whole "space program" shtick closer to reality and allows you to (kinda) roleplay as your favourite launch service provider - be it Arianespace, SpaceX, RocketLab...

    2- Naming satellites and probes is hard. Instead of dabbling on the nickname of your 35th geostationary satellite for half an hour (which is the hardest part of the game :confused:) you can just name it after the agency that contracted you! With this pack, you can now litter your skies with Intelsats-4Bs, Al-Yah 3s, AMOS-6, Thaicom Demo and so on.

    Mod compatibility

    There isn't a set of hard requirements to use the pack, but it was made with two mods in mind:

    Contract ConfiguratorAs of version 1.28.1* for KSP 1.8.x, CC supports randomized agencies for contracts (thanks, @nightingale!). AFAIK, this feature will carry over to future versions as well, so Real Agencies should be forward-compatible with any future CC releases. As for the contracts themselves, RealAgencies includes a config file for RP-1 which, while not being that historically accurate (ViaSat might ask you to launch your first satellite during the 50's!...), it should still add more flavour to the career mode; nevertheless, I'm open to suggestions to add more agencies and more realism to those contracts, even though I might not have much time to work on this mod for the near future. Even if you don't play with RP-1, you can still read the config file to learn how to implement randomized agencies for your own contracts.

    Conformal DecalsWhat's the point of having a bunch of pretty logos if you can't slap them on your rocket?

    SFxLWaD.jpg

    Bad illumination aside, this launch included two GEO birds for RRSat and Iridium communications. ARE YOU FEELING THE IMMERSION???

    The pack also includes compatibility with ConformalDecals. Each agency logo has two versions: either with a white or a transparent background, depending on your preference. You just need to use the "CDL-F Flag Decal" part and search through the flag menu. I've also included a couple of extra decals for ULA, Arianespace, SpaceX, Northrop Grumman and RocketLab.

    Download

    Github

    Final notes

    • The telecommunications agencies were based off Wikipedia's list of communication satellite companies. Please keep in mind that some of these might not even exist anymore, in which case I either added their parent company as an agency or just didn't add them to the pack. Agencies for which I couldn't find a high-res logo weren't included as well.
    • As far as I know (and I searched this thoroughly) using corporation logos doesn't constitute trademark infringement, as I'm not profiting off this mod or adding any sort of agent mentalities that could imply anything about their operations or affect their public image. If anyone can provide me with more detailed information on this subject just leave a comment on this thread :)

    An image of my colourful and logo-ridden Mission Control screen:

    Spoiler

    UdIoDPC.jpg

    Agency list:

    Spoiler

    Telecommunications:
    Horizons
    RASCOM
    Nilesat
    NIGCOMSAT
    Chinasat
    ChinaStar
    APT Satellite Holdings Limited
    AsiaSat
    CMMB Vision
    Bangabandhu
    SPARRSO
    BCSC
    Agrani
    Antrix
    DECU
    PT Datakom
    PT Pasifik Satelit Nusantara
    PT Telkom
    Bank Rakyat Indonesia
    Iranian Space Agency
    RRsat
    Station711
    Spacecom
    Broadcasting Satellite System Corporation
    NTT DoCoMo
    SKY Perfect JSAT Corporation
    JSC KazSat
    KT
    MEASAT
    SUPARCO
    Pak Datacom Ltd
    EshailSat
    Arabsat
    Singapore Telecommunications
    NSSLGlobal Ltd
    SupremeSAT
    Chunghwa Telecom
    Mu Space
    Thaicom
    Thuraya
    Al Yah Satellite Communications
    VNPT
    Azercosmos
    Bulgaria Sat
    Eutelsat
    Orange Business Services
    Deutsche Telekom
    Hellas Sat
    Telespazio
    Intelsat
    SES S.A.
    Fibersat
    Astra
    Telenor
    Vizada
    Russia Space Telecommunications Company
    Gazprom Space Systems
    Gonets
    Hisdesat
    Hispasat
    Turksat
    Avanti Communications
    InmarSat
    Pendrell Corporation
    iSat LTD
    Kepler
    Ciel Space Group
    Telesat
    Mexsat
    DirecTV
    EchoStar
    Globalstar
    Iridium Communications
    Ligado Networks
    Orbcomm
    Sirius XM Holdings
    ViaSat
    XTAR
    MTN
    PanAmSat
    Verizon
    SingTel Optus
    Speedcast
    INVAP
    Satellogic
    ARSAT
    ABE
    Star One
    INPE

    Navigation satellites:
    Global Positioning System (GPS)
    GLONASS
    Galileo
    BeiDou
    Quasi-Zenith Satellite System (QZSS)

    Weather satellites:
    National Oceanic and Atmospheric Administration (NOAA)
    European Organisation for the Exploitation of Meteorological Satellites (EUMETSAT)
    Japan Meteorological Agency
    China Meteorological Administration

    Exploration (AKA space agencies):
    National Aeronautics and Space Agency (NASA)
    European Space Agency (ESA)
    Japan Aerospace Exploration Agency (JAXA)
    Roscosmos
    Indian Space Research Organization (ISRO)

    Have fun!

    * for now I suggest using 1.28.1, as I got a report that suggests 1.28.2 could have problems with the agent parser (confirmed via testing).

  12. On 7/2/2020 at 9:20 PM, nightingale said:

    @Tonas1997 - I wasn't able to reproduce the issue you posted about the maxSimultaneous/hasResource.  Could you post the contract config that causes the issue?

    That problem striked yet again. Here is an example of a contract with incoherent resource requirements. I took the liberty of highlighting the relevant sections.

    This is an instance of the problematic contract, as found on the persist.sfs file:

    Spoiler

    CONTRACT
                {
                    guid = 256d31fc-6866-4702-8651-4141b43f5054
                    type = ConfiguredContract
                    prestige = 0
                    seed = 487954272
                    state = Active
                    viewed = Read
                    agent = DirecTV
                    agentName = DirecTV
                    deadlineType = Floating
                    expiryType = Floating
                    ignoresWeight = True
                    values = 691500,31536000,66528,99792,133056,0,100,150,1055831874.58272,1055163101.40272,1086699101.40272,0
                    subtype = RepeatComSats
                    title = Commercial Communications Satellite
                    description = We have a customer requesting a new Communications Satellite. Design a satellite within their specs and launch into an orbit with the proper orbital parameters as outlined in the contract.&br;&br;This contract can be completed as many times as you would like. The orbits will be chosen randomly from Tundra, Geostationary, Molniya and Geosynchronous orbits.&br;&br;<b><color=red>NOTE: The satellite will be destroyed upon completion of the contract. This simulates transfer of the payload back to the customer.</color></b>&br;&br;<b>Number of Contracts Completed: 1</b>
                    synopsis = Launch a new Commercial Communications Satellite
                    completedMessage = Congratulations! The customer has reported the satellite is in the proper orbit.
                    hash = -479492652
                    targetBody = Earth
                    BEHAVIOUR
                    {
                        type = ContractConfigurator.Behaviour.OrbitGenerator
                        ORBIT_DETAIL
                        {
                            type = RANDOM_ORBIT
                            ORBIT
                            {
                                SMA = 26561764.157429829
                                ECC = 0.74261686989312115
                                INC = 116.59999999999999
                                LPE = 90
                                LAN = 89.462938313122436
                                MNA = 3.0021610046532716
                                EPH = 0
                                REF = 1
                            }
                        }
                        ORBIT_DETAIL
                        {
                            type = RANDOM_ORBIT
                            ORBIT
                            {
                                SMA = 42164172.365635365
                                ECC = 1.5141427275348879E-16
                                INC = 0
                                LPE = 210.36780231190465
                                LAN = 0
                                MNA = -0.39918917661015146
                                EPH = 0
                                REF = 1
                            }
                        }
                        ORBIT_DETAIL
                        {
                            type = RANDOM_ORBIT
                            ORBIT
                            {
                                SMA = 42164172.365635328
                                ECC = 0.83785878824525617
                                INC = 116.59999999999999
                                LPE = 270
                                LAN = 56.436214734071996
                                MNA = -0.23679029545501373
                                EPH = 0
                                REF = 1
                            }
                        }
                    }
                    BEHAVIOUR
                    {
                        type = ContractConfigurator.Behaviour.Expression
                        CONTRACT_OFFERED
                        {
                        }
                        CONTRACT_ACCEPTED
                        {
                        }
                        CONTRACT_COMPLETED_SUCCESS
                        {
                            type = Double
                            RepeatComSats_Count = $RepeatComSats_Count + 1
                        }
                        CONTRACT_COMPLETED_FAILURE
                        {
                        }
                    }
                    BEHAVIOUR
                    {
                        type = ContractConfigurator.Behaviour.DestroyVessel
                        onState = CONTRACT_SUCCESS
                        vessel = AdvComSatellite
                    }
                    BEHAVIOUR
                    {
                        type = ContractConfigurator.Behaviour.DialogBox
                        DIALOG_BOX
                        {
                            condition = CONTRACT_SUCCESS
                            position = CENTER
                            width = 0.5
                            height = 0
                            title = Vessel Ownership Transferred
                            titleColor = #FFFFFFFF
                            TextSection
                            {
                                text = The contract has been completed successfully and the satellite has been transferred back to the customer.
                                textColor = #FFCCCCCC
                                fontSize = 20
                            }
                        }
                    }
                    PARAM
                    {
                        name = AlwaysTrue
                        state = Complete
                        disableOnStateChange = False
                        values = 0,0,0,0,0
                    }
                    PARAM
                    {
                        name = VesselParameterGroup
                        id = AdvComSat
                        state = Incomplete
                        values = 0,0,0,0,0
                        ContractIdentifier = AdvSatellites.RepeatComSats
                        title = Commercial Communications Satellite
                        notes = 
                        completedMessage = 
                        define = AdvComSatellite
                        duration = 0
                        trackedVessel = 1d208353-80ae-4d5c-8f93-d9dbd639ffd3
                        dissassociateVesselsOnContractFailure = True
                        dissassociateVesselsOnContractCompletion = True
                        PARAM
                        {
                            name = NewVessel
                            id = NewVessel
                            state = Complete
                            disableOnStateChange = False
                            values = 0,0,0,0,0
                            ContractIdentifier = AdvSatellites.RepeatComSats
                            title = Launch a New Vessel
                            notes = 
                            completedMessage = 
                            hideChildren = True
                            allowStateReset = True
                            launchID = 122
                            VESSEL_STATS
                            {
                                vessel = 1d208353-80ae-4d5c-8f93-d9dbd639ffd3
                                state = Complete
                                strength = STRONG
                                completionTime = 1066975772.0216141
                            }
                            DOCKED_SUB_VESSEL
                            {
                                hash = 1299841286
                                strength = STRONG
                                completionTime = 1056888922.2648787
                            }
                            DOCKED_SUB_VESSEL
                            {
                                hash = 575656711
                                strength = STRONG
                                completionTime = 1056888922.2648787
                            }
                            DOCKED_SUB_VESSEL
                            {
                                hash = 4133345166
                                strength = STRONG
                                completionTime = 1056888922.2648787
                            }
                            DOCKED_SUB_VESSEL
                            {
                                hash = 407830691
                                strength = STRONG
                                completionTime = 1056888922.2648787
                            }
                            DOCKED_SUB_VESSEL
                            {
                                hash = 2952366262
                                strength = STRONG
                                completionTime = 1056888922.2648787
                            }
                        }
                        PARAM
                        {
                            name = HasCrew
                            id = Crewmembers
                            state = Complete
                            disableOnStateChange = False
                            values = 0,0,0,0,0
                            ContractIdentifier = AdvSatellites.RepeatComSats
                            title = Uncrewed
                            notes = 
                            completedMessage = 
                            hideChildren = True
                            allowStateReset = True
                            minCrew = 0
                            maxCrew = 0
                            minExperience = 0
                            maxExperience = 5
                            VESSEL_STATS
                            {
                                vessel = 1d208353-80ae-4d5c-8f93-d9dbd639ffd3
                                state = Complete
                                strength = STRONG
                                completionTime = 1066975772.0216141
                            }
                            DOCKED_SUB_VESSEL
                            {
                                hash = 1299841286
                                strength = STRONG
                                completionTime = 1056888922.2648787
                            }
                            DOCKED_SUB_VESSEL
                            {
                                hash = 575656711
                                strength = STRONG
                                completionTime = 1056888922.2648787
                            }
                            DOCKED_SUB_VESSEL
                            {
                                hash = 4133345166
                                strength = STRONG
                                completionTime = 1056888922.2648787
                            }
                            DOCKED_SUB_VESSEL
                            {
                                hash = 407830691
                                strength = STRONG
                                completionTime = 1056888922.2648787
                            }
                            DOCKED_SUB_VESSEL
                            {
                                hash = 2952366262
                                strength = STRONG
                                completionTime = 1056888922.2648787
                            }
                            PARAM
                            {
                                name = ParameterDelegate`1
                                id = Unmanned
                                state = Complete
                                disableOnStateChange = False
                                values = 0,0,0,0,0
                                ContractIdentifier = AdvSatellites.RepeatComSats
                                title = Unmanned
                                notes = 
                                completedMessage = 
                            }
                        }
                        PARAM
                        {
                            name = HasResource
                            id = HasComSatPayload
                            state = Incomplete
                            disableOnStateChange = False
                            values = 0,0,0,0,0
                            ContractIdentifier = AdvSatellites.RepeatComSats
                            title = Have a ComSatPayload of at least 600 units on the craft
                            notes = 
                            completedMessage = 
                            allowStateReset = True
                            capacity = False
                            RESOURCE
                            {
                                resource = ComSatPayload
                                minQuantity = 1100
                            }
                            PARAM
                            {
                                name = ParameterDelegate`1
                                id = Resource: ComSatPayload: At least 1100 units
                                state = Failed
                                disableOnStateChange = False
                                values = 0,0,0,0,0
                                ContractIdentifier = AdvSatellites.RepeatComSats
                                title = Resource: ComSatPayload: At least 1100 units
                                notes = 
                                completedMessage = 
                            }
                        }

                        PARAM
                        {
                            name = OrbitParameter
                            id = ReachSpecificOrbit
                            state = Incomplete
                            disableOnStateChange = False
                            values = 0,0,0,0,0
                            ContractIdentifier = AdvSatellites.RepeatComSats
                            title = 
                            notes = 
                            completedMessage = 
                            allowStateReset = True
                            situation = 0
                            targetBody = Earth
                            minAltitude = 0
                            minApoapsis = 0
                            minPeriapsis = 0
                            minEccentricity = 0
                            minInclination = 0
                            maxInclination = 180
                            minArgumentOfPeriapsis = 0
                            maxArgumentOfPeriapsis = 0
                            minPeriod = 0
                            displayNotes = True
                            deviationWindow = 4
                            ORBIT
                            {
                                SMA = 42164172.365635365
                                ECC = 1.5141427275348879E-16
                                INC = 0
                                LPE = 210.36780231190465
                                LAN = 0
                                MNA = -0.39918917661015146
                                EPH = 0
                                REF = 1
                            }
                            PARAM
                            {
                                name = ParameterDelegate`1
                                id = Destination: Earth
                                state = Complete
                                disableOnStateChange = False
                                values = 0,0,0,0,0
                                ContractIdentifier = AdvSatellites.RepeatComSats
                                title = Destination: Earth
                                notes = 
                                completedMessage = 
                            }
                            PARAM
                            {
                                name = ParameterDelegate`1
                                id = Reach the specified orbit
                                state = Incomplete
                                disableOnStateChange = False
                                values = 0,0,0,0,0
                                ContractIdentifier = AdvSatellites.RepeatComSats
                                title = Reach the specified orbit
                                notes = 
                                completedMessage = 
                            }
                            PARAM
                            {
                                name = Duration
                                id = Duration
                                state = Incomplete
                                disableOnStateChange = False
                                values = 0,0,0,0,0
                                ContractIdentifier = AdvSatellites.RepeatComSats
                                title = 
                                notes = 
                                completedMessage = 
                                duration = 120
                                preWaitText = Check for Stable Orbit
                                waitingText = Checking for Stable Orbit
                                completionText = Stable Orbit: Confirmed
                                endTime = 0
                                startCriteria = CONTRACT_ACCEPTANCE
                                triggered = True
                            }
                        }
                    }
                }

    And here's the contract root config:

    Spoiler

    CONTRACT_TYPE
    {
        name = RepeatComSats
        title = Commercial Communications Satellite
        group = AdvSatellites
        agent = Satellites

        description = We have a customer requesting a new Communications Satellite. Design a satellite within their specs and launch into an orbit with the proper orbital parameters as outlined in the contract.&br;&br;This contract can be completed as many times as you would like. The orbits will be chosen randomly from Tundra, Geostationary, Molniya and Geosynchronous orbits.&br;&br;<b><color=red>NOTE: The satellite will be destroyed upon completion of the contract. This simulates transfer of the payload back to the customer.</color></b>&br;&br;<b>Number of Contracts Completed: $RepeatComSats_Count</b>
        genericDescription = Put a satellite into the requested orbit.

        synopsis = Launch a new Commercial Communications Satellite

        completedMessage = Congratulations! The customer has reported the satellite is in the proper orbit.

        sortKey = 900

        cancellable = true
        declinable = true
        autoAccept = false
        minExpiry = 5
        maxExpiry = 10
        maxCompletions = 0
        maxSimultaneous = 11
        deadline = 365  // 1 year

        targetBody = HomeWorld()

        prestige = Trivial       // 1.0x
        advanceFunds =  ((12000 + ((@AdvComSat/HasComSatPayload/minQuantity)*2)) * (1 + Max(@AdvComSat/ReachSpecificOrbit/index, 1) * 0.4)) * 3.6
        rewardScience = 0
        rewardReputation = Round(1 + (@advanceFunds / 500),100)
        rewardFunds = (@advanceFunds * 1.5)
        failureReputation = @rewardReputation * 1.5
        failureFunds = @advanceFunds

        // ************ REQUIREMENTS ************

        REQUIREMENT
        {
            name = CompleteContract
            type = CompleteContract
            contractType = FirstMolniyaSat
            title = Complete @contractType Contract
        }
        REQUIREMENT
        {
            name = CompleteContract
            type = CompleteContract
            contractType = FirstTundraSat
            title = Complete @contractType Contract
        }
        REQUIREMENT
        {
            name = CompleteContract
            type = CompleteContract
            contractType = first_GEOUncrewed
            title = Complete @contractType Contract
        }
        REQUIREMENT
        {
            name = CompleteContract
            type = CompleteContract
            contractType = EarlyComSat
            minCount = 3
            title = Complete @contractType Contract at least 3 times
        }

        BEHAVIOUR
        {
            name = OrbitGenerator
            type = OrbitGenerator

            RANDOM_ORBIT
            {
                type = KOLNIYA  // index = 0
            }

            RANDOM_ORBIT
            {
                type = STATIONARY  // index = 1
            }

            RANDOM_ORBIT
            {
                type = TUNDRA  // index = 2
            }
        }
        
        BEHAVIOUR
        {
            name = IncrementTheCount
            type = Expression
            
            CONTRACT_COMPLETED_SUCCESS
            {
                RepeatComSats_Count = $RepeatComSats_Count + 1
            }
        }

        // ************ PARAMETERS ************

        PARAMETER
        {
            name = AdvComSat
            type = VesselParameterGroup
            define = AdvComSatellite
            dissassociateVesselsOnContractCompletion = true
            title = Commercial Communications Satellite

            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 = HasComSatPayload
                type = HasResource
                resource = ComSatPayload
                minQuantity = Round((Pow(Random(0.5,1.5) * (0.3 + UnlockedTech().Count() / 100),2)*2500)/2,100) // for 10 nodes, 78~703 kg
                title = Have a ComSatPayload of at least @minQuantity units on the craft

            }
            PARAMETER
            {
                name = ReachSpecificOrbit
                type = ReachSpecificOrbit
                displayNotes = true
                index = int(Min(2, Random(0, 3)))
                deviationWindow = 4
                
                PARAMETER
                {
                    name = Duration
                    type = Duration

                    duration = 2m

                    preWaitText = Check for Stable Orbit
                    waitingText = Checking for Stable Orbit
                    completionText = Stable Orbit: Confirmed
                }
            }
        }
      BEHAVIOUR
      {
        name = TransferVessel
        type = DestroyVessel
        onState = CONTRACT_SUCCESS
        vessel = AdvComSatellite
      }
      BEHAVIOUR
      {
        name = VesselDestroyed
        type = DialogBox
        DIALOG_BOX
        {
          title = Vessel Ownership Transferred
          condition = CONTRACT_SUCCESS
          position = CENTER
          width = 0.5
          TEXT
          {
            text = The contract has been completed successfully and the satellite has been transferred back to the customer.
          }
        }
      }
    }

    Perhaps this is caused by some race condition when CC parses the minQuantity expression...?

     

  13. Anyone else getting a "Cannot clone model 'ConformalDecals/Assets/decal-blank' as model does not exist" error? It's keeping any parts from being loaded into the game.

    EDIT: found the problem:

    [WRN 18:45:58.497] File 'C:\Jogos\KSP 1.8.1 [Sandbox]\GameData\ConformalDecals\Assets\decal-blank.mu' is an incorrect type.
    [WRN 18:45:58.497] Model load error in 'C:\Jogos\KSP 1.8.1 [Sandbox]\GameData\ConformalDecals\Assets\decal-blank.mu'

    This is version 0.1.3 for KSP 1.8.1.

×
×
  • Create New...