Jump to content

[1.10.1+] Contract Configurator [v1.30.5] [2020-10-05]


nightingale

Recommended Posts

8 minutes ago, JedTech said:

I swear this mod used to have a UI to manually toggle certain contract types off or on.

It does: It's moved to the stock difficulty settings page, and there's also a debug interface at Mod+F10.

Link to comment
Share on other sites

On 1/1/2017 at 6:45 PM, WuphonsReach said:

1. Is it possible to require a stationary (is this KEO?) orbit to be over KSC?

2. What is the difference between STATIONARY and SYNCHRONOUS for orbit types?

3. For the new parameters of AntennaTransmitPower and AntennaRelayPower, how are they used?  I'm guessing PARAMETER { name = XYZ, type = AntennaRelayPower, minRelayPower = 0.0, maxRelayPower = 200.0 }

4. Without RemoteTech installed, is there any way to test KSC connectivity?

5. Can AllVessels().Where() retrieve only vessels with a specific parameter (e.g. has a specific part, or has AntennaRelayPower above some value)?

Thanks to all who helped answer so far!

5. Dug back through the archives and found this more specific answer for checking whether a vessel has a specific part.  Combined with the link to the Vessel methods from the wiki and I can figure out whether a particular world already has X number of vessels matching the contract requirements in orbit.

3. Is a bug in the wiki for HasAntenna.  As shown in this previous post that explains that you need to use minAntennaPower instead of minPower in the config file.  Working example here showing it in use.

I haven't figured out a method or answer yet for:

1. Is it possible to require a stationary orbit to be over KSC?

4. Without RemoteTech installed, is there any way to test KSC connectivity?

Link to comment
Share on other sites

13 hours ago, WuphonsReach said:

1. Is it possible to require a stationary orbit to be over KSC?

Off the top of my head - what if you created a waypoint at KSC - then used Orbit  (to get them to Stationary altitude) and VisitWaypoint (with distance set to that altitude +-5k or so) to ensure the player was at the right place.

Wrap them in an "All" and use "disableOnStateChange" (I always forget whether it's true or false, but the one that flips the parameter to uncomplete if you move out of the requirements).

 

Edited by severedsolo
Link to comment
Share on other sites

17 minutes ago, rohanguard1 said:

I noticed that in the newer versions of contract configurer I can't block unwanted contracts. I remember it used to be possible in 1.1.2, so why not now.

If you mean what I think you mean it's in your game settings now- while in a career go to settings then click the top button that takes you to the settings you initially set up, a CC tab should be available.

Link to comment
Share on other sites

I was just playing and a window came up asking me to paste this here:

Exception occured while loading contract parameter 'PartValidation' in contract 'GAP.Wright-Glider':
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.ArgumentException: 'seatExternalCmd' is not a valid Part.
  at ContractConfigurator.ConfigNodeUtil.ParsePartValue (System.String partName) [0x00000] in <filename unknown>:0 
  at ContractConfigurator.ConfigNodeUtil.ParseSingleValue[AvailablePart] (System.String key, System.String stringValue, Boolean allowExpression) [0x00000] in <filename unknown>:0 
  at (wrapper managed-to-native) System.Reflection.MonoMethod:InternalInvoke (object,object[],System.Exception&)
  at System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00000] in <filename unknown>:0 
  --- End of inner exception stack trace ---
  at System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00000] in <filename unknown>:0 
  at System.Reflection.MethodBase.Invoke (System.Object obj, System.Object[] parameters) [0x00000] in <filename unknown>:0 
  at ContractConfigurator.ConfigNodeUtil.ParseValue[List`1] (.ConfigNode configNode, System.String key, Boolean allowExpression) [0x00000] in <filename unknown>:0 

I was in the VAB trying to use ubiozur welding, and it had appeared that the game froze. I was in the middle of making edits to an existing craft in KCT, so I clicked the cancel edits button on the KCT window and was brought back to the space center, with that window up. 

Link to comment
Share on other sites

@nightingale

I wanted to ask, if these CC exceptions are harmless. Do I get them cause I removed a part mod? (Complete log aviable).
I have top say this is a highly modded install but I keep a close eye on the errors and it runs crash free atm.
Cause they are from a stream I can in theory find and show the video on the time where the errors occur, if that helps debugging.

I had a NRE caused on "Tito Kerman" with Kerbalstats from the "Kick of Space Tourism (Tourism Plus)" mission, which I have reported here in detail. Maybe it is related?
 

Spoiler

[LOG 01:51:50.790] [Progress Tracking Parser] Progress Nodes Loaded...
[ERR 01:51:52.867] Input is null for field 'title' in config node 'PARAM'
   at System.Environment.get_StackTrace()
   at ConfigNode.AddValue(System.String name, System.String value)
   at ContractConfigurator.Parameters.Docking.OnParameterSave(.ConfigNode node)
   at ContractConfigurator.Parameters.ContractConfiguratorParameter.OnSave(.ConfigNode node)
   at Contracts.ContractParameter.Save(.ConfigNode node)
   at Contracts.ContractParameter.Save(.ConfigNode node)
   at Contracts.Contract.Save(.ConfigNode node)
   at SSTUTools.RescueContractPartSelector.OnContractOffered(Contracts.Contract contract)
   at EventData`1[[Contracts.Contract, Assembly-CSharp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]].Fire(Contracts.Contract data)
   at Contracts.Contract.SetState(State newState)
   at ContractConfigurator.ConfiguredContract.set_ContractState(State value)
   at ContractConfigurator.ContractPreLoader+<GenerateContract>d__33.MoveNext()
   at ContractConfigurator.ContractPreLoader+<ContractEnumerator>d__32.MoveNext()
   at ContractConfigurator.ContractPreLoader.Update()

[LOG 01:52:20.358] [1/9/2017 1:52:20 AM] [TimeControl(2.50): ]: <Info> (TCGUI.onShowUI) - Unhiding GUI for Settings Lock
[LOG 01:52:20.359] [UIMasterController]: ShowUI
[LOG 01:52:20.360] Game Paused!
[LOG 01:52:20.368] QuickGoTo(QStockToolbar)[1.31]: OnHide
[LOG 01:52:51.423] Awarding 45000 funds to player for contract advance
[LOG 01:53:09.805] [1/9/2017 1:53:09 AM] [TimeControl(2.50): ]: <Info> (TCGUI.onShowUI) - Unhiding GUI for Settings Lock
[LOG 01:53:09.807] [UIMasterController]: ShowUI
[LOG 01:53:09.809] Game Unpaused!
[LOG 01:53:09.810] Flight State Captured
[LOG 01:53:09.817] Saving Achievements Tree...
[LOG 01:53:09.819] Saving Achievements Tree...
[LOG 01:53:09.821] Saving Achievements Tree...
[LOG 01:53:09.823] Saving Achievements Tree...
[LOG 01:53:09.825] Saving Achievements Tree...
[ERR 01:53:09.832] Input is null for field 'title' in config node 'PARAM'
   at System.Environment.get_StackTrace()
   at ConfigNode.AddValue(System.String name, System.String value)
   at ContractConfigurator.Parameters.Docking.OnParameterSave(.ConfigNode node)
   at ContractConfigurator.Parameters.ContractConfiguratorParameter.OnSave(.ConfigNode node)
   at Contracts.ContractParameter.Save(.ConfigNode node)
   at Contracts.ContractParameter.Save(.ConfigNode node)
   at Contracts.Contract.Save(.ConfigNode node)
   at ContractConfigurator.ContractPreLoader.OnSave(.ConfigNode node)
   at ScenarioModule.Save(.ConfigNode node)
   at ProtoScenarioModule..ctor(.ScenarioModule module)
   at ScenarioRunner.UpdateModules()
   at ScenarioRunner.GetUpdatedProtoModules()
   at Game.Updated()
   at GamePersistence.SaveGame(System.String saveFileName, System.String saveFolder, SaveMode saveMode)
   at MCSceneSpawner.OnMCDespawn()
   at EventVoid.Fire()
   at MCDespawner.BtnExit()
   at UnityEngine.Events.InvokableCall.Invoke(System.Object[] args)
   at UnityEngine.Events.InvokableCallList.Invoke(System.Object[] parameters)
   at UnityEngine.Events.UnityEventBase.Invoke(System.Object[] parameters)
   at UnityEngine.Events.UnityEvent.Invoke()
   at UnityEngine.UI.Button.Press()
   at UnityEngine.UI.Button.OnPointerClick(UnityEngine.EventSystems.PointerEventData eventData)
   at UnityEngine.EventSystems.ExecuteEvents.Execute(IPointerClickHandler handler, UnityEngine.EventSystems.BaseEventData eventData)
   at UnityEngine.EventSystems.ExecuteEvents.Execute(UnityEngine.GameObject target, UnityEngine.EventSystems.BaseEventData eventData, UnityEngine.EventSystems.EventFunction`1 functor)
   at UnityEngine.EventSystems.StandaloneInputModule.ProcessMousePress(UnityEngine.EventSystems.MouseButtonEventData data)
   at UnityEngine.EventSystems.StandaloneInputModule.ProcessMouseEvent(Int32 id)
   at UnityEngine.EventSystems.StandaloneInputModule.ProcessMouseEvent()
   at UnityEngine.EventSystems.StandaloneInputModule.Process()
   at UnityEngine.EventSystems.EventSystem.Update()

[LOG 01:53:09.838] QuickStart(QPersistent)[2.11]: OnSave 0d8cd759-8e9e-4570-bdf8-f20257849118
[LOG 01:53:09.840] DeepFreeze Scenario OnSave completed.
[LOG 01:53:09.920] [MessageSystem] Save Messages
[LOG 01:53:09.932] [KerbalStats] saving ext for Jebediah Kerman
[LOG 01:53:09.934]     from kerbals
[LOG 01:53:09.935] [KerbalStats] saving ext for Bill Kerman
[LOG 01:53:09.937]     from kerbals
[LOG 01:53:09.939] [KerbalStats] saving ext for Bob Kerman
[LOG 01:53:09.941]     from kerbals
[LOG 01:53:09.943] [KerbalStats] saving ext for Valentina Kerman
[LOG 01:53:09.945]     from kerbals
[LOG 01:53:09.946] [KerbalStats] saving ext for Jerdock Kerman
[LOG 01:53:09.948]     from kerbals
[LOG 01:53:09.950] [KerbalStats] saving ext for Gertrix Kerman
[LOG 01:53:09.952]     from kerbals
[LOG 01:53:09.953] [KerbalStats] saving ext for Elicine Kerman
[LOG 01:53:09.955]     from kerbals
[LOG 01:53:09.957] [KerbalStats] saving ext for Edmy Kerman
[LOG 01:53:09.959]     from kerbals
[LOG 01:53:09.962] [KerbalStats] saving ext for Nedgard Kerman
[LOG 01:53:09.963]     from kerbals
[LOG 01:53:09.965] [KerbalStats] saving ext for Ladine Kerman
[LOG 01:53:09.967]     from kerbals
[LOG 01:53:09.969] [KerbalStats] saving ext for Rosy Kerman
[LOG 01:53:09.971]     from kerbals
[LOG 01:53:09.972] [KerbalStats] saving ext for Maltrey Kerman
[LOG 01:53:09.974]     from kerbals
[LOG 01:53:09.976] [KerbalStats] saving ext for Sutrix Kerman
[LOG 01:53:09.978]     from kerbals
[LOG 01:53:09.980] [KerbalStats] saving ext for Tomler Kerman
[LOG 01:53:09.982]     from kerbals
[LOG 01:53:09.983] [KerbalStats] saving ext for Billorf Kerman
[LOG 01:53:09.985]     from kerbals
[LOG 01:53:09.987] [KerbalStats] saving ext for Dilin Kerman
[LOG 01:53:09.989]     from kerbals
[LOG 01:53:10.004] Game State Saved to saves/122-Twitch/persistent
[LOG 01:53:10.008] [UIMasterController] RemoveCanvas:MissionControl
[LOG 01:53:20.700] [ContractSystem]: Contract Conduct observational surveys of the Mun. is no longer being offered by REPOSoftTech
[LOG 01:53:45.990] [1/9/2017 1:53:45 AM] [TimeControl(2.50): ]: <Info> (TCGUI.onShowUI) - Unhiding GUI for Settings Lock
[LOG 01:53:45.992] [UIMasterController]: ShowUI
[LOG 01:53:45.993] Game Paused!
[LOG 01:53:52.807] Flight State Captured
[LOG 01:53:52.814] Saving Achievements Tree...
[LOG 01:53:52.816] Saving Achievements Tree...
[LOG 01:53:52.818] Saving Achievements Tree...
[LOG 01:53:52.819] Saving Achievements Tree...
[LOG 01:53:52.822] Saving Achievements Tree...
[ERR 01:53:52.828] Input is null for field 'title' in config node 'PARAM'
   at System.Environment.get_StackTrace()
   at ConfigNode.AddValue(System.String name, System.String value)
   at ContractConfigurator.Parameters.Docking.OnParameterSave(.ConfigNode node)
   at ContractConfigurator.Parameters.ContractConfiguratorParameter.OnSave(.ConfigNode node)
   at Contracts.ContractParameter.Save(.ConfigNode node)
   at Contracts.ContractParameter.Save(.ConfigNode node)
   at Contracts.Contract.Save(.ConfigNode node)
   at ContractConfigurator.ContractPreLoader.OnSave(.ConfigNode node)
   at ScenarioModule.Save(.ConfigNode node)
   at ProtoScenarioModule..ctor(.ScenarioModule module)
   at ScenarioRunner.UpdateModules()
   at ScenarioRunner.GetUpdatedProtoModules()
   at Game.Updated()
   at KSCPauseMenu.doSave(System.String filename)
   at KSCPauseMenu.<ConfirmDialog>m__830()
   at DialogGUIButton.OptionSelected()
   at DialogGUIButton.<Create>m__6F1()
   at UnityEngine.Events.InvokableCall.Invoke(System.Object[] args)
   at UnityEngine.Events.InvokableCallList.Invoke(System.Object[] parameters)
   at UnityEngine.Events.UnityEventBase.Invoke(System.Object[] parameters)
   at UnityEngine.Events.UnityEvent.Invoke()
   at UnityEngine.UI.Button.Press()
   at UnityEngine.UI.Button.OnPointerClick(UnityEngine.EventSystems.PointerEventData eventData)
   at UnityEngine.EventSystems.ExecuteEvents.Execute(IPointerClickHandler handler, UnityEngine.EventSystems.BaseEventData eventData)
   at UnityEngine.EventSystems.ExecuteEvents.Execute(UnityEngine.GameObject target, UnityEngine.EventSystems.BaseEventData eventData, UnityEngine.EventSystems.EventFunction`1 functor)
   at UnityEngine.EventSystems.StandaloneInputModule.ProcessMousePress(UnityEngine.EventSystems.MouseButtonEventData data)
   at UnityEngine.EventSystems.StandaloneInputModule.ProcessMouseEvent(Int32 id)
   at UnityEngine.EventSystems.StandaloneInputModule.ProcessMouseEvent()
   at UnityEngine.EventSystems.StandaloneInputModule.Process()
   at UnityEngine.EventSystems.EventSystem.Update()

[LOG 01:53:52.834] QuickStart(QPersistent)[2.11]: OnSave 0d8cd759-8e9e-4570-bdf8-f20257849118
[LOG 01:53:52.836] DeepFreeze Scenario OnSave completed.
[LOG 01:53:52.911] [MessageSystem] Save Messages
[LOG 01:53:52.922] [KerbalStats] saving ext for Jebediah Kerman
[LOG 01:53:52.924]     from kerbals

There are some empty TITLE= *nothing* in my save game, but I assume this is normal?

Spoiler

                PARAM
                {
                    name = ReachDestination
                    state = Incomplete
                    disableOnStateChange = False
                    values = 0,0,0,0,0
                    dest = 1
                    title = 
                }

 

EDIT: Seems like replacing all "title = *newline*" by "title = temptitle*newline*" in the CC section of my save game fixed the NRE. However, I assume it will generate more contracts with empty params titles.

Is this by design? If yes, could these exceptions maybe be catched to not clutter the log? :)

EDIT2: One thing that could mess with contracts maybe, that I have installed is the rescue pod fix.

EDIT3: Might this line (missing title?) be the cause?

Edited by Jebs_SY
Link to comment
Share on other sites

I'm hoping a CC guru can help out here. My apologies for being a n00b, but, well, I'm a n00b.

Here's what I'm trying to do. I want to build a simple contract to put a probe in orbit around Kerbin. The goal is, the lighter the probe, the higher the rewards. Here's what I have so far:

CONTRACT_TYPE
{
	name = TestMission
	title = Test Mission
	group = TestGroup
	description = Test Mission Description

	synopsis = Do it!
	completedMessage = Did it!

	targetBody = HomeWorld()

	maxSimultaneous = 1

	PARAMETER
	{
		name = Mission
		type = VesselParameterGroup
		define = MyVessel

		PARAMETER
		{
			name = ReachState
			type = ReachState
			situation = ORBITING
		}
		PARAMETER
		{
			name = VesselMass
			type = VesselMass
			maxMass = 1
		}
	}
}

The contract completes and gives the name of the craft in the contract window (in this case I've been using "Test Probe"). However, after many hours of combing through the wiki and forum posts, I'm at a loss as to how to access the mass of the vessel that was recorded by the VPG, much less how to incorporate that into a dynamic reward.

So... any thoughts on if what I'm describing is possible, and if so how one might go about doing it?

Many thanks.

Link to comment
Share on other sites

I'm pretty new to trying to work on mods, but I figured I'd try to be proactive about some of the mods I'd like to see updated rather than putting up "when will this be ready?" posts.  With that said, I'm trying to work on updating the RP-0 mod to use the latest Contract Configurator (see this issue: https://github.com/KSP-RO/RP-0/issues/571) When I start the game, I do a grep on the Player.log for "contract" to get any log messages that have to do with contract configurator.  I was seeing messages like this in the log:

ContractConfigurator.ContractGroup: CONTRACT_GROUP 'Milestones': No minVersion or older minVersion provided.  It is recommended that the minVersion is set to at least 1.15.0 to turn important warnings for deprecated functionality into errors.

I went through the CONTRACT_GROUP nodes, and added a minVersion of 1.22.2 (since that's what we're running on), however now I get the following message everywhere I changed that: 

ContractConfigurator.ContractConfigurator: Multiple assemblies with name 'ContractConfigurator' found!

You can take a look at my config file here: https://github.com/rsparkyc/RP-0/blob/1.2_CCupdate/GameData/RP-0/Contracts/Groups.cfg

2 main questions:

1) Since we have nested CONTRACT_GROUP nodes, would it make sense for the child nodes to inherit properties like minVersion from the parent node, and not give a warning that I didn't supply a value?
2) What's up with the Multiple assemblies message? I thought maybe somewhere I was referencing another version of ContractConfigurator, but doing a grep in my GameData directory for "minVersion" shows only 1.22.2

Thanks!

Edited by rsparkyc
spelling helps
Link to comment
Share on other sites

On 16/01/2017 at 3:17 AM, akardam said:

So... any thoughts on if what I'm describing is possible, and if so how one might go about doing it?

Expressions are validated on contract generation, meaning you can't dynamically adjust them. (You need to know everything at the point the contract generates, not when it completes) What you may be able to do, though, is have an "Any" Parameter, and generate rewards based on a "Class" of probe (Not 100% sure this will work, but you can try).

Something like this:

PARAMETER
	{
		name = Mission
		type = VesselParameterGroup
		define = MyVessel

		PARAMETER
		{
			name = ReachState
			type = ReachState
			situation = ORBITING
		}
		PARAMETER
		{
			name = VesselClass
			type = Any
		
			PARAMETER
			{
				name = VesselMass
				type = VesselMass
				rewardFunds = 5000
				minMass = 0.51
				maxMass = 1.0
			}

						PARAMETER
			{
				name = VesselMass
				type = VesselMass
				rewardFunds = 10000
				maxMass = 0.5
			}
		}
	}

 

Edited by severedsolo
Link to comment
Share on other sites

8 hours ago, severedsolo said:

Expressions are validated on contract generation, meaning you can't dynamically adjust them. (You need to know everything at the point the contract generates, not when it completes) What you may be able to do, though, is have an "Any" Parameter, and generate rewards based on a "Class" of probe (Not 100% sure this will work, but you can try).

Something like this:

OK, makes sense. I already had an idea along these lines for a backup, glad to get a second opinion/confirmation on it.

I'm still fuzzy on the Vessel and VesselItentifier expression types, the Vessel() method/function, and their relation to Vessel IDs defined by VesselParameterGroup(s). Can anyone explain how I might access or act upon the properties of a Vessel ID that is captured by a VPG? In other words, how would one potentially use them other than defining in one VPG and using the vessel = assignment to make sure other VPGs only track said vessel?

Link to comment
Share on other sites

@akardam it may be easier if you explain what it is you are trying to do.

If you are trying to access a VPG and then validate it against a set of expessions (the only thing I can think of where this would be useful off the top of my head), you'd do it like this (example taken from BaseRover in Bases and Stations):

	DATA
	{
		type = List<Vessel>
		requiredValue = false
		RoverCheck = [BaseRover].Where(r => r.CelestialBody() == @/targetBody1)
	}

 

Link to comment
Share on other sites

10 hours ago, severedsolo said:

@akardam it may be easier if you explain what it is you are trying to do.

If you are trying to access a VPG and then validate it against a set of expessions (the only thing I can think of where this would be useful off the top of my head), you'd do it like this (example taken from BaseRover in Bases and Stations):


	DATA
	{
		type = List<Vessel>
		requiredValue = false
		RoverCheck = [BaseRover].Where(r => r.CelestialBody() == @/targetBody1)
	}

 

I've been trolling through some of the other contract packs looking at how people did things, the one you mention above is a good example.

I have kind of a chicken and the egg thing right now, in that I don't have anything specifically in mind (other than the mass thing above, which with your assistance I think I've figured out a way to do). Generally, I'm just trying to learn the syntax and musing on cool things I could do.

Thanks for your help. I'll keep plugging away at it...

Edited by akardam
Must... close... parenthesis...
Link to comment
Share on other sites

@nightingale Hi dude, would you please hint me which line could be creating this kind of requirement:

nkCRSNA.jpg

The "Drive a Tour Bus for KSC!" blocks other contracts from the category.

EDIT: Ok, found, thanks me :D

    CONTRACT_GROUP
    {
        name = Kerbal Space Program
        displayName = Kerbal Space Program
        minVersion = 1.20.3
        agent = Kerbal Space Program
        maxSimultaneous = 1 0
        maxCompletions = 0
        sortKey = a4
        
    }

Edited by Enceos
Link to comment
Share on other sites

Another issue I've come across, which I'm not sure is by design, or I'm missing something, is that a CollectScience parameter inside a VesselParameterGroup doesn't seem to fire its defined completedMessage or any funds, science, or rep rewards. I have two test cases.

First test case, no VPG, simple contract to get into orbit and transmit back a temperature scan. When I finish transmitting, I get the completed message, and the funds and science rewards:

CONTRACT_TYPE
{
	name = TestMission
	title = Test Mission
	group = TestGroup
	description = Test Mission Description
	synopsis = Do it!
	completedMessage = Did it!
	targetBody = HomeWorld()
	maxSimultaneous = 1

	DATA
	{
		type = ScienceExperiment
		title = Desired Experiment
		desiredExperiment = temperatureScan
	}
	PARAMETER
	{
		name = ReachOrbit
		type = ReachState
		situation = ORBITING
	}
	PARAMETER
	{
		name = DesiredScience
		type = CollectScience
		title = Perform @/desiredExperiment.Name()
		situation = InSpaceLow
		experiment = @/desiredExperiment
		recoveryMethod = Transmit
		completedMessage = You did the science!
		rewardFunds = 1000
		rewardScience = 10
	}
}

 

The second test case wraps the ReachOrbit parameter in a VPG with a define line, and the DesiredScience parameter in a VPG with a vessel line. When I finish transmitting, I do not get the completed message defined inside the CollectScience block, and even watching the funds/rep/science window, I don't see funds or science increment by the given values (I've long since exhausted the actual transmit science for temp in LKO):

CONTRACT_TYPE
{
	name = TestMission
	title = Test Mission
	group = TestGroup
	description = Test Mission Description
	synopsis = Do it!
	completedMessage = Did it!
	targetBody = HomeWorld()
	maxSimultaneous = 1

	DATA
	{
		type = ScienceExperiment
		title = Desired Experiment
		desiredExperiment = temperatureScan
	}
	PARAMETER
	{
		name = GoodOrbit
		type = VesselParameterGroup
		title = Good Orbit
		define = TestProbe

		PARAMETER
		{
			name = ReachOrbit
			type = ReachState
			situation = ORBITING
		}
	}
	PARAMETER
	{
		name = DoScience
		type = VesselParameterGroup
		title = Do Science
		vessel = TestProbe

		PARAMETER
		{
			name = DesiredScience
			type = CollectScience
			title = Perform @/desiredExperiment.Name()
			situation = InSpaceLow
			experiment = @/desiredExperiment
			recoveryMethod = Transmit
			completedMessage = You did the science!
			rewardFunds = 1000
			rewardScience = 10
		}
	}
}

 

I've tried other parameters (such as requiring the probe to have a solar panel) and they do complete within a VPG. So far CollectScience is the only parameter I've seen this issue with.

Any ideas?

Link to comment
Share on other sites

I had some (maybe three or four) contracts pop into the available contracts list for maybe half a second. I have nearly 90 mods installed so it could be a conflict with another mod.

 

Oh, and it would be nice if the "Listing of Contract Packs" from the beginning of this thread was updated. Quite a few of them are not updated to 1.2. And it would be even nicer, if the mod description would tell if it only supports the stock planets.

Edited by Luovahulluus
Link to comment
Share on other sites

I'm generally enjoying the Contracts mods, but I got this crash upon completion of "Boot Camp" (for engineers):

Quote

Exception occured while saving ScenarioModule 'ContractVesselTracker':
System.NullReferenceException: Object reference not set to an instance of an object
  at ContractConfigurator.Extensions+<>c__DisplayClass5_1.<GetHashes>b__1 (.ProtoPartSnapshot childPart) [0x00000] in <filename unknown>:0
  at System.Linq.Enumerable+<CreateWhereIterator>c__Iterator1D`1[ProtoPartSnapshot].MoveNext () [0x00000] in <filename unknown>:0
  at System.Linq.Enumerable.FirstOrDefault[ProtoPartSnapshot] (IEnumerable`1 source) [0x00000] in <filename unknown>:0
  at ContractConfigurator.Extensions+<GetHashes>d__5.MoveNext () [0x00000] in <filename unknown>:0
  at System.Linq.Enumerable.Contains[UInt32] (IEnumerable`1 source, UInt32 value, IEqualityComparer`1 comparer) [0x00000] in <filename unknown>:0
  at System.Linq.Enumerable.Contains[UInt32] (IEnumerable`1 source, UInt32 value) [0x00000] in <filename unknown>:0
  at ContractConfigurator.ContractVesselTracker+<>c__DisplayClass15_0.<OnSave>b__1 (.Vessel v) [0x00000] in <filename unknown>:0
  at System.Collections.Generic.List`1[Vessel].GetIndex (Int32 startIndex, Int32 count, System.Predicate`1 match) [0x00000] in <filename unknown>:0
  at System.Collections.Generic.List`1[Vessel].Find (System.Predicate`1 match) [0x00000] in <filename unknown>:0
  at ContractConfigurator.ContractVesselTracker.OnSave (.ConfigNode node) [0x00000] in <filename unknown>:0

There's a lot going on with this save w/r/t contracts that's bad, so...

  • If I have a contract, exit the game, and come back, the contract will be gone.  It seems to do with the game's auto-save feature.  If I QuickSave and reload, the contract is not destroyed.
  • I'm not being offered any Rescue contracts on this save.  Pity, I really enjoy them.
  • The Training vessel for Boot Camp sometimes appears below ground.

I have ContractConfigurator, ContractPacks(Field Research & Kerbal Academy) installed.  I also have USI Kolonization, IR, and some other unrelated mods.

Link to comment
Share on other sites

54 minutes ago, NermNermNerm said:

I'm generally enjoying the Contracts mods, but I got this crash upon completion of "Boot Camp" (for engineers):

There's a lot going on with this save w/r/t contracts that's bad, so...

  • If I have a contract, exit the game, and come back, the contract will be gone.  It seems to do with the game's auto-save feature.  If I QuickSave and reload, the contract is not destroyed.
  • I'm not being offered any Rescue contracts on this save.  Pity, I really enjoy them.
  • The Training vessel for Boot Camp sometimes appears below ground.

I have ContractConfigurator, ContractPacks(Field Research & Kerbal Academy) installed.  I also have USI Kolonization, IR, and some other unrelated mods.

If I recall correctly, Kerbal Academy disables (or used to disable) the stock rescue contracts. You should be able to see if they are enabled or not through the difficulty settings -> Contracts window. If they are disabled, a simple check in the box should re-enable them again.

Seems like most of your other issues are also related to Kerbal Academy, so it may be prudent to ask in that thread so the contract pack's author can be alerted.

Link to comment
Share on other sites

I got a popup on load with this exception:

Exception occured while loading contract 'BasesandStations.StationCore':
System.NullReferenceException: Object reference not set to an instance of an object
  at ContractConfigurator.ConfigNodeUtil+<>c.<ParseTypeValue>b__36_0 (System.Reflection.Assembly a) [0x00000] in <filename unknown>:0 
  at System.Linq.SortSequenceContext`2[System.Reflection.Assembly,System.Int32].Initialize (System.Reflection.Assembly[] elements) [0x00000] in <filename unknown>:0 
  at System.Linq.QuickSort`1[System.Reflection.Assembly].PerformSort () [0x00000] in <filename unknown>:0 
  at System.Linq.QuickSort`1+<Sort>c__Iterator21[System.Reflection.Assembly].MoveNext () [0x00000] in <filename unknown>:0 
  at ContractConfigurator.ConfigNodeUtil.ParseTypeValue (System.String name) [0x00000] in <filename unknown>:0 
  at ContractConfigurator.ConfiguredContract.OnLoad (.ConfigNode node) [0x00000] in <filename unknown>:0 

Anything else I can do to help with it?  I have been having problems with disappearing contracts on load, I think related to QuickStart, a mod that loads directly into the game.  I think it only happens when loading to a craft instead of the space center.

Link to comment
Share on other sites

Alright, I have the tourism and the field pack, got 4 contracts that I can't accept but maxed out mission control ergo I should be able to do so, right?
The slider at the setting doesn't raise any limits (it's at 2), it stays max trivial = 8, max significant = 6, max exceptional = 4.

What am I missing?

ty

Edited by LatiMacciato
Link to comment
Share on other sites

7 hours ago, LatiMacciato said:

Alright, I have the tourism and the field pack, got 4 contracts that I can't accept but maxed out mission control ergo I should be able to do so, right?
The slider at the setting doesn't raise any limits (it's at 2), it stays max trivial = 8, max significant = 6, max exceptional = 4.

What am I missing?

ty

I just woke up, so I apologise if I'm misunderstanding you, but are you saying that you max trivial, significant, and exceptional are not going up? If so, I believe those numbers are based on your Reputation level. The higher your rep, the more and better contracts you can take. 

Link to comment
Share on other sites

4 hours ago, Merkov said:

I just woke up, so I apologise if I'm misunderstanding you, but are you saying that you max trivial, significant, and exceptional are not going up? If so, I believe those numbers are based on your Reputation level. The higher your rep, the more and better contracts you can take. 

ty for reply, dug into my persistent.sav and assuming I'm currently at 35.7892952% reputation, so far I might just need more work to climb up:

Spoiler

SCENARIO
    {
        name = Reputation
        scene = 7, 8, 5, 6
        rep = 35.7892952
    }

Thing is, it feels like the "never expiring" contracts are sorta blocking a slot. Don't ge me wrong here .. I just might misunderstand the mod's mechanic .. and if the rep is required for a higher number of max accepted contracts that's totally ok with me. :)

The slider in the options that shall multiply max active contracts is not multiplying for me (possibly because I started over and have some contracts that are still mandatory for early career game explorations).

ty for your help :)

EDIT: just noticed I currently can accept 1 more trivial it climbed from 8 to 9! YAY!

Edited by LatiMacciato
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...