-
Posts
276 -
Joined
-
Last visited
Content Type
Profiles
Forums
Developer Articles
KSP2 Release Notes
Bug Reports
Posts posted by Tonas1997
-
-
I see, thanks! 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?
-
I'm trying to use the latest version with a RSS/RO install and most of the converters have weird PAWs:
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?
-
Is the new version only compatible with KSP 1.12.2?
-
Quick question: wouldn't the "Srf_Silica" template fit the Moon better?
-
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!
-
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?
-
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?
-
Hey, just wanted to say I've been having a blast with this mod! Who knew budgeting a space program could be fun?
Quick question: if I want for funds to be more meaningful (e.g. I have some incentive to build cheaper/reusable rockets), what should I do? Disable budget caps and decrease rep rewards to compensate?
-
I'm playing with this mod in 1.10 and I can't change the grass color of the launchpads. I mean, I can edit it and save my changes in game - and they are persisted on the instance node - but they always revert back to the default, bright green color
-
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
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!
-
Dunno why, but I can't launch from the alternate 39A... while 39B and the rest of the pads work just fine
-
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
-
On 6/13/2021 at 4:45 AM, Uace24 said:
Ok, so this may have been awnsered, but is this RO Compatable?
This mod has been integrated with ROCapsules... but it suffers from that old "service module instantly decouples" issue. @VoidCosmos how did you originally fixed this?
-
That will definitely be possible, since we'll have multiple star systems. The crucial part is making it meaningful - KSP1's Sun has an infinite SOI, so there's no "advantage" or sense of progress in going interstellar from a gameplay perspective.
-
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?
-
The SRBs on the current version seem to have invariable costs, regardless of diameter or length. Also (and sorry for repeating this question), do the different heatshield weights affect max peak heating, or do they only change the shield's ablator resource amount?
-
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)
SpoilerDebug 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 = TrueVesselGroup
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):
SpoilerDebug 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 = TrueVesselGroup
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...
-
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 ) 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 Configurator - As 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 Decals - What's the point of having a bunch of pretty logos if you can't slap them on your rocket?
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
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:
SpoilerAgency list:
SpoilerTelecommunications:
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
INPENavigation 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 AdministrationExploration (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).
-
Disregard my previous post. I had a duplicate ContractConfigurator folder in my GameData
-
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:
SpoilerCONTRACT
{
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:
SpoilerCONTRACT_TYPE
{
name = RepeatComSats
title = Commercial Communications Satellite
group = AdvSatellites
agent = Satellitesdescription = 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 yeartargetBody = 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 = OrbitGeneratorRANDOM_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 SatellitePARAMETER
{
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 = Durationduration = 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...?
-
Just now, DMagic said:
@Tonas1997 Because dds textures are flipped vertically. Usually any program that can open dds files also had an option to unflip them.
Gotcha! So if I make my own decal files on, say, GIMP and save the file, it will appear flipped?
-
@cineboxandrew, why are the .dds files flipped vertically? Is that a requirement?
-
41 minutes ago, 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?
Weirdly enough, neither could I. It seems like a quite random glitch, appearing and disappearing regardless of contract. Don't worry about that
-
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.
[WIN/MAC/LINUX] KSP Trajectory Optimization Tool v1.6.9 [New MATLAB Version!]
in KSP1 Tools and Applications
Posted · Edited by Tonas1997
Typo
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?