Jump to content

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


nightingale

Recommended Posts

1 hour ago, StevieC said:

one thing I've noticed but I'm not sure whether it's a KSP bug or a bug with one of my addons, but maybe this addon can do something to fix the problem: I frequently am offered contracts to test one of the ground launch clamps, which are designed to STAY on the ground, but asking me to test them in-flight or even in orbit or on an escape trajectory. Is there any way to make the presence of a ground-clamp have the contract ONLY ask me to test such clamps at the launch site?

Screenshot please?  I've had people claim this, but I haven't seen it for myself since...  0.25 or so.  I think it might be possible in 1.0.5 if you have a messed up Contracts.cfg or possibly a messed up part file.  Reinstalling KSP (via whichever means you acquire it) would fix that.

Link to comment
Share on other sites

1 hour ago, smjjames said:

All of them? Though with the current narrowed down state of advanced progression, SCANsat official, strategia, DMsurveycontract, and worldfirstcontract (stock) , it seems to be mainly the Official SCANsat since they're kind of popping in and out of existence.

I'll have to look into that in a bit.  Raised #477.

Link to comment
Share on other sites

Hello. Quick question @nightingale

 

Currently this kerbal safety check is too broad, allowing dead kerbals anywhere in the universe to fail this contract, even if the player is not intending to work it actively:

//Recovery Parameter - Craft & Kerbal Safety Check
    PARAMETER
    {
        name = All
        type = All
        title = safely
        
        PARAMETER
        {
            name = VesselNotDestroyed
            type = VesselNotDestroyed
            title = without destroying your craft
            
            vessel = @/craft

        }
        
        PARAMETER
        {
            name = KerbalDeaths
            type = KerbalDeaths
            title = or killing anyone
            
            countMax = 1

        }
        
        completeInSequence = true
        disableOnStateChange = true
        
    }

 

 

Is there a way to limit KerbalDeaths to only a VPG vessel's Kerbals? 

Link to comment
Share on other sites

14 minutes ago, inigma said:

Is there a way to limit KerbalDeaths to only a VPG vessel's Kerbals? 

Not currently, but I'm open to suggestions. Not sure if limiting to a VPG is useful, since I can't think if a way to kill a Kerbal without also triggering the vessel destruction (life support mods notwithstanding).

Link to comment
Share on other sites

40 minutes ago, nightingale said:

Not currently, but I'm open to suggestions. Not sure if limiting to a VPG is useful, since I can't think if a way to kill a Kerbal without also triggering the vessel destruction (life support mods notwithstanding).

Vessel destruction is command pod destruction I think as I have a hard time triggering it otherwise. With multiple command pods, its possible to survive a crash, lose one pod, full of kerbals, and not another. So unless I'm checking for all kerbal deaths, it's currently not possible to limit it to the craft kerbals.

At VPG define, you could associate existing kerbals to that craft, so when called in a KerbalDeaths parameter, only those Kerbals would count. So essentially KerbalDeaths would allow an attribute for a vessel, but only validate against the kerbals that were in that vessel at craft definition.

It could also be useful as a work around to allow contract modders to include a player's own pilot for various other requirement checks. Since we can't know who a players pilot is on contract accept, it should be logically possible to create a list of Kerbals in a veseel at vessel define.

Link to comment
Share on other sites

Hello sir,
I've had an error ingame, and the error reported requested that I would post it here:
 

Quote

 


Exception occured while loading contract parameter 'CollectScience' in contract 'first_OrbitUncrewed':
System.ArgumentException: Missing required value 'recoveryMethod'.
  at ContractConfigurator.ConfigNodeUtil.ParseValue[ScienceRecoveryMethod] (.ConfigNode configNode, System.String key, Boolean allowExpression) [0x00000] in <filename unknown>:0
  at ContractConfigurator.Parameters.CollectScienceCustom.OnParameterLoad (.ConfigNode node) [0x00000] in <filename unknown>:0
  at ContractConfigurator.Parameters.ContractConfiguratorParameter.OnLoad (.ConfigNode node) [0x00000] in <filename unknown>:0


 

I'm having no ingame issues (that I noticed) for now.

 

thank you for your mod!

 

Link to comment
Share on other sites

Doing as told I paste that here:

Quote

Exception occured while loading contract parameter 'PartValidation' in contract 'MannedOrbit':
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.ArgumentException: 'RetroMk1inline' 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 

Appeared after the todays update via CKAN of SETI Tech Tree and..uhm...another thing? Could be Contract Confidurator itself but truly I don't remember for sure :huh:

Link to comment
Share on other sites

12 hours ago, inigma said:

Vessel destruction is command pod destruction I think as I have a hard time triggering it otherwise. With multiple command pods, its possible to survive a crash, lose one pod, full of kerbals, and not another. So unless I'm checking for all kerbal deaths, it's currently not possible to limit it to the craft kerbals.

At VPG define, you could associate existing kerbals to that craft, so when called in a KerbalDeaths parameter, only those Kerbals would count. So essentially KerbalDeaths would allow an attribute for a vessel, but only validate against the kerbals that were in that vessel at craft definition.

It could also be useful as a work around to allow contract modders to include a player's own pilot for various other requirement checks. Since we can't know who a players pilot is on contract accept, it should be logically possible to create a list of Kerbals in a veseel at vessel define.

Makes sense, should be workable.  Raised #478.

6 hours ago, CitizenVeen said:

I've had an error ingame, and the error reported requested that I would post it here:
I'm having no ingame issues (that I noticed) for now.

thank you for your mod!

This one is weird since it's dealing with stuff that hasn't changed in quite a while.  Did you perhaps upgrade from a very old Contract Configurator version?  Or do anything that might be considered out of the ordinary?

21 minutes ago, Darkstar One said:

Doing as told I paste that here:

Appeared after the todays update via CKAN of SETI Tech Tree and..uhm...another thing? Could be Contract Confidurator itself but truly I don't remember for sure :huh:

Right now Contract Configurator doesn't handle removal of parts very well - that's on my to do list of things to deal with.  Presumably SETI Tech Tree (or something else) removed that part.  In the meantime I think you can just ignore the error, and the bad contract should go away.  Unless you're continuously getting it?

Link to comment
Share on other sites

2 hours ago, nightingale said:

This one is weird since it's dealing with stuff that hasn't changed in quite a while.  Did you perhaps upgrade from a very old Contract Configurator version?  Or do anything that might be considered out of the ordinary?

I installed several mods at once (not throug ckan, but by hand, because of kerbalstuff being closed), and got a continues crash when the loading completed.

I deinstalled all the mods, afterwards i got this error

Link to comment
Share on other sites

12 minutes ago, CitizenVeen said:

I installed several mods at once (not throug ckan, but by hand, because of kerbalstuff being closed), and got a continues crash when the loading completed.

I deinstalled all the mods, afterwards i got this error

Can you post up a your save file and a KSP.log?  It sounds like something got pretty messed up.

Link to comment
Share on other sites

3 hours ago, nightingale said:

Right now Contract Configurator doesn't handle removal of parts very well - that's on my to do list of things to deal with.  Presumably SETI Tech Tree (or something else) removed that part.  In the meantime I think you can just ignore the error, and the bad contract should go away.  Unless you're continuously getting it?

Nope, vanished after two reloads. Maybe a contract is missing but i can't tell because I tought there was not a active one at this moment.

Nontheless: Great mod for sure!

Link to comment
Share on other sites

14 hours ago, nightingale said:

Can you post up a your save file and a KSP.log?  It sounds like something got pretty messed up.

AH wait. I also pruned alot of parts (changing their extension To .pruned, so the game doesnt load then anymore), because i was having a gazillion fairings/fuel tanks and i only used the procedural parts anyways. Looking at the kind of error, i think that is what caused it. Sorry, forgot that i did that before :).

Edited by CitizenVeen
Link to comment
Share on other sites

Congratulations to @severedsolo, who has released his latest contract pack: Clever Sats.  Clever Sats is a replacement for the stock satellite contracts that has more logic than stock when deciding what satellite missions should be offered for which vessels, as well as additional contracts.

Link to comment
Share on other sites

I noticed that I got two of these errors earlier at some point during startup (I didn't notice them then, I saw it in exception detector later), no idea what triggered them.


ArgumentException: Cannot be null!
  at ContractConfigurator.Validation.NotNull[ScienceExperiment] (.ScienceExperiment val) [0x00000] in <filename unknown>:0 

  at System.Linq.Enumerable.All[ScienceExperiment] (IEnumerable`1 source, System.Func`2 predicate) [0x00000] in <filename unknown>:0 

  at ContractConfigurator.CollectScienceFactory.<Load>b__4 (System.Collections.Generic.List`1 x) [0x00000] in <filename unknown>:0 

  at ContractConfigurator.ConfigNodeUtil.ParseValue[List`1] (.ConfigNode configNode, System.String key, System.Action`1 setter, IContractConfiguratorFactory obj, System.Collections.Generic.List`1 defaultValue, System.Func`2 validation) [0x00000] in <filename unknown>:0 
UnityEngine.Debug:Internal_LogException(Exception, Object)
UnityEngine.Debug:LogException(Exception)
ContractConfigurator.LoggingUtil:LogException(Exception)
ContractConfigurator.ConfigNodeUtil:ParseValue(ConfigNode, String, Action`1, IContractConfiguratorFactory, List`1, Func`2)
ContractConfigurator.CollectScienceFactory:Load(ConfigNode)
ContractConfigurator.ParameterFactory:GenerateParameterFactory(ConfigNode, ContractType, ParameterFactory&, ParameterFactory)
ContractConfigurator.ContractType:Load(ConfigNode)
ContractConfigurator.<LoadContractConfig>d__1e:MoveNext()
ContractConfigurator.ContractConfigurator:Update()

output log: http://sta.sh/0rmr20o3lpd

What the? I just found out that the science stuff no longer functions, all stock science options disappeared and when I tried to do the DMagic stuff, it gave an error. I'll have to investigate further, in the morning most likely.

Edited by smjjames
Link to comment
Share on other sites

5 hours ago, smjjames said:

I noticed that I got two of these errors earlier at some point during startup (I didn't notice them then, I saw it in exception detector later), no idea what triggered them.

<snip>

output log: http://sta.sh/0rmr20o3lpd

The key additional lines are:

[INFO] ContractConfigurator.ContractType: Loading CONTRACT_TYPE: 'FirstEVA'
[R&D]: No Experiment definition found with id evaReport
ContractConfigurator.CollectScienceFactory: CONTRACT_TYPE 'FirstEVA', PARAMETER 'CollectScience30001' of type 'CollectScience': The value supplied for experiment (System.Collections.Generic.List`1[ScienceExperiment]) is invalid.

I want to say that contract comes from @tjsnh's Advanced Progression contracts.  Unfortunately, I don't currently have them installed and the only link is to KerbalStuff (and therefore broken).  I'm inclined to say that there's something funny going on here though, as evaReport should be a valid experiment.  Can you try without Crowed Sourced Science?  I have heard of it breaking things before, although I'm kind of doubtful that's the case here.  Unless you're running some other mod that drastically messes with science?

Link to comment
Share on other sites

Well, this is after I returned from the Jool system with a massive haul of science and things were working fine before, but I've done big hauls of science without issues either (biome hopping on the Mun for example), so, I don't think it's neccesarily that. I'm actually not sure when it started, somewhere between the last time I gathered science from Jool and when I noticed the exception.

I do have No More Science Grind, but I've been using that for a long time without problems, theres nothing else that affects science.

I'll look into the Crowd Sourced Science in the morning.

Edited by smjjames
Link to comment
Share on other sites

1 hour ago, smjjames said:

Well, this is after I returned from the Jool system with a massive haul of science and things were working fine before, but I've done big hauls of science without issues either (biome hopping on the Mun for example), so, I don't think it's neccesarily that. I'm actually not sure when it started, somewhere between the last time I gathered science from Jool and when I noticed the exception.

I do have No More Science Grind, but I've been using that for a long time without problems, theres nothing else that affects science.

I'll look into the Crowd Sourced Science in the morning.

Took look at a Science - Full Reward (the new name of No More Science Grind), and it's also just MM patches like CSS.  So seems unlikely to be the problem too.  If removing either of those doesn't work, send me the contract file (if you can find it) and I'll take a look.

Edited by nightingale
spelling
Link to comment
Share on other sites

Is there any chance of moving this logging line that tells you why a contract didn't generate (for example): "[LOG 09:09:15.939] [VERBOSE] ContractConfigurator.ContractType: Didn't generate contract type SCAN_LoRes: 'ScanSatOfficial:p3Bodies' had zero count."

To DEBUG rather than VERBOSE? It is REALLY useful, but VERBOSE takes so long to load, because of all the logging (duh)

Edited by severedsolo
Link to comment
Share on other sites

Update on that problem: The exception happens when I get to the main menu screen, before I even load a game. Also, it's still happening with CSS and NMSG removed.

Also, Advanced Progression only has three MM files, one for routine stuff, one for main stuff, and one that acts as a version checker. I'll probably just send you the zip file that I still have.

Edited by smjjames
Link to comment
Share on other sites

5 hours ago, severedsolo said:

Is there any chance of moving this logging line that tells you why a contract didn't generate (for example): "[LOG 09:09:15.939] [VERBOSE] ContractConfigurator.ContractType: Didn't generate contract type SCAN_LoRes: 'ScanSatOfficial:p3Bodies' had zero count."

To DEBUG rather than VERBOSE? It is REALLY useful, but VERBOSE takes so long to load, because of all the logging (duh)

Changed it for the next version.  I think I had it to VERBOSE since the contract generator can be quite spammy.

29 minutes ago, smjjames said:

Update on that problem: The exception happens when I get to the main menu screen, before I even load a game. Also, it's still happening with CSS and NMSG removed.

Not too surprised, it was a long shot.

30 minutes ago, smjjames said:

Also, Advanced Progression only has three MM files, one for routine stuff, one for main stuff, and one that acts as a version checker. I'll probably just send you the zip file that I still have.

That will work.  I just need to see/test the contract.

Link to comment
Share on other sites

24 minutes ago, nightingale said:

That will work.  I just need to see/test the contract.

It's the file called Progression: http://sta.sh/01bd60iyfx2d

edit: Nope, still broken, I think maybe it's a symptom of something rather than a cause. Still looking. I suspect DMagic orbital science, but I can't remove that without killing the ships. edit: OR, I can just make a copy of the save.

Edited by smjjames
Link to comment
Share on other sites

@nightingale After I removed DMOS to see if that fixes it (it didn't), I got two huge (identical, I think) exceptions from this when I got to main menu screen, something about Field Science, I think.

 

ContractConfigurator.ConfigNodeUtil: Got an unexpected exception trying to load 'experiments' as a list:
 
(Filename: C:/buildslave/unity/build/artifacts/StandalonePlayerGenerated/UnityEngineDebug.cpp Line: 56)

ArgumentException: An element with the same key already exists in the dictionary.
  at System.Collections.Generic.Dictionary`2[System.String,ScienceExperiment].Add (System.String key, .ScienceExperiment value) [0x00000] in <filename unknown>:0 

  at ResearchAndDevelopment.loadExperiments () [0x00000] in <filename unknown>:0 

  at ResearchAndDevelopment.GetExperiment (System.String experimentID) [0x00000] in <filename unknown>:0 

  at ContractConfigurator.ExpressionParser.ExperimentParser.ParseIdentifier (ContractConfigurator.ExpressionParser.Token token) [0x00000] in <filename unknown>:0 

  at ContractConfigurator.ExpressionParser.ExpressionParser`1[T].ParseVarOrIdentifier (ContractConfigurator.ExpressionParser.Token token) [0x00000] in <filename unknown>:0 

  at ContractConfigurator.ExpressionParser.ExpressionParser`1[ScienceExperiment].ParseSimpleStatement[ScienceExperiment] () [0x00000] in <filename unknown>:0 
Rethrow as Exception: Error parsing statement.
Error occurred near '*':
[surfaceSample, temperatureScan, barometerScan, atmosphereAnalysis]
..............* <-- HERE
  at ContractConfigurator.ExpressionParser.ExpressionParser`1[System.Collections.Generic.List`1[ScienceExperiment]].ParseExpression (System.String key, System.String expression, ContractConfigurator.ExpressionParser.DataNode dataNode) [0x00000] in <filename unknown>:0 

  at ContractConfigurator.ConfigNodeUtil.ParseSingleValue[List`1] (System.String key, System.String stringValue, Boolean allowExpression) [0x00000] in <filename unknown>:0 

  at ContractConfigurator.ConfigNodeUtil.ParseValue[List`1] (.ConfigNode configNode, System.String key, Boolean allowExpression) [0x00000] in <filename unknown>:0 
UnityEngine.Debug:Internal_LogException(Exception, Object)
UnityEngine.Debug:LogException(Exception)
ContractConfigurator.LoggingUtil:LogException(Exception)
ContractConfigurator.ConfigNodeUtil:ParseValue(ConfigNode, String, Boolean)
ContractConfigurator.ConfigNodeUtil:ParseValue(ConfigNode, String, Action`1, IContractConfiguratorFactory, List`1, Func`2)
ContractConfigurator.ConfigNodeUtil:ParseValue(ConfigNode, String, Action`1, IContractConfiguratorFactory)
System.Reflection.MonoMethod:InternalInvoke(Object, Object[], Exception&)
System.Reflection.MonoMethod:Invoke(Object, BindingFlags, Binder, Object[], CultureInfo)
System.Reflection.MethodBase:Invoke(Object, Object[])
ContractConfigurator.ExpressionParser.DataNode:ParseDataNodes(ConfigNode, IContractConfiguratorFactory, Dictionary`2, Dictionary`2)
ContractConfigurator.ContractType:Load(ConfigNode)
ContractConfigurator.<LoadContractConfig>d__1e:MoveNext()
ContractConfigurator.ContractConfigurator:Update()
http://sta.sh/0brt071i1iw
Edited by smjjames
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...