jrossignol / ContractConfigurator

A config file based solution for creating new contracts for Kerbal Space Program.
https://forum.kerbalspaceprogram.com/index.php?/topic/91625-1
Other
64 stars 67 forks source link

First flight contract generation throws exception. #689

Closed MatijaBrown closed 4 years ago

MatijaBrown commented 4 years ago

When I enter the mission control building the first time, I get a popup window displaying this message.

Exception occured while attempt to generate contract of type 'RP0.first_FirstFlight': System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary. at System.Collections.Generic.Dictionary2[TKey,TValue].get_Item (TKey key) [0x0001e] in <ad04dee02e7e4a85a1299c7ee81c79f6>:0 at KSP.Localization.Localizer.GetStringByTag (System.String tag) [0x00005] in <9d71e4043e394d78a6cf9193ad011698>:0 at ContractConfigurator.Parameters.ReachState.CreateDelegates () [0x00157] in <726d60ef951344e39d24ccae155f0319>:0 at ContractConfigurator.Parameters.ReachState..ctor (System.Collections.Generic.List1[T] targetBodies, System.String biome, System.Collections.Generic.List1[T] situation, System.Single minAltitude, System.Single maxAltitude, System.Single minTerrainAltitude, System.Single maxTerrainAltitude, System.Double minSpeed, System.Double maxSpeed, System.Double minRateOfClimb, System.Double maxRateOfClimb, System.Single minAcceleration, System.Single maxAcceleration, System.Double minDeltaVeeActual, System.Double maxDeltaVeeActual, System.Double minDeltaVeeVacuum, System.Double maxDeltaVeeVacuum, System.String title) [0x0008d] in <726d60ef951344e39d24ccae155f0319>:0 at ContractConfigurator.ReachStateFactory.Generate (Contracts.Contract contract) [0x00000] in <726d60ef951344e39d24ccae155f0319>:0 at ContractConfigurator.ParameterFactory.Generate (ContractConfigurator.ConfiguredContract contract, Contracts.IContractParameterHost contractParamHost) [0x00016] in <726d60ef951344e39d24ccae155f0319>:0 at ContractConfigurator.ParameterFactory.GenerateParameters (ContractConfigurator.ConfiguredContract contract, Contracts.IContractParameterHost contractParamHost, System.Collections.Generic.List1[T] paramFactories) [0x0007e] in <726d60ef951344e39d24ccae155f0319>:0 at ContractConfigurator.ContractType.GenerateParameters (ContractConfigurator.ConfiguredContract contract) [0x00000] in <726d60ef951344e39d24ccae155f0319>:0 at ContractConfigurator.ConfiguredContract.Initialize (ContractConfigurator.ContractType contractType) [0x00211] in <726d60ef951344e39d24ccae155f0319>:0

I am posting this, as it says I should on the error message.

TomTheHand commented 4 years ago

I've received similar errors since updating to 1.30.1. Like the above user, I'm running RP-0 (the Real Solar System / Realism Overhaul campaign mod). I am running KSP 1.8.1. I think I skipped from CC 1.29.0 to 1.30.1; 1.30.0 has the same issue, but reverting to 1.29.0 clears it up.

Upon loading an existing game, I get a series of errors like this one:

Exception occured while attempt to generate contract of type 'RP0.probeVenus':
System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary.
  at System.Collections.Generic.Dictionary`2[TKey,TValue].get_Item (TKey key) [0x0001e] in <ad04dee02e7e4a85a1299c7ee81c79f6>:0 
  at KSP.Localization.Localizer.GetStringByTag (System.String tag) [0x00005] in <9d71e4043e394d78a6cf9193ad011698>:0 
  at ContractConfigurator.Parameters.ReachState.CreateDelegates () [0x00111] in <726d60ef951344e39d24ccae155f0319>:0 
  at ContractConfigurator.Parameters.ReachState..ctor (System.Collections.Generic.List`1[T] targetBodies, System.String biome, System.Collections.Generic.List`1[T] situation, System.Single minAltitude, System.Single maxAltitude, System.Single minTerrainAltitude, System.Single maxTerrainAltitude, System.Double minSpeed, System.Double maxSpeed, System.Double minRateOfClimb, System.Double maxRateOfClimb, System.Single minAcceleration, System.Single maxAcceleration, System.Double minDeltaVeeActual, System.Double maxDeltaVeeActual, System.Double minDeltaVeeVacuum, System.Double maxDeltaVeeVacuum, System.String title) [0x0008d] in <726d60ef951344e39d24ccae155f0319>:0 
  at ContractConfigurator.ReachStateFactory.Generate (Contracts.Contract contract) [0x00000] in <726d60ef951344e39d24ccae155f0319>:0 
  at ContractConfigurator.ParameterFactory.Generate (ContractConfigurator.ConfiguredContract contract, Contracts.IContractParameterHost contractParamHost) [0x00016] in <726d60ef951344e39d24ccae155f0319>:0 
  at ContractConfigurator.ParameterFactory.GenerateParameters (ContractConfigurator.ConfiguredContract contract, Contracts.IContractParameterHost contractParamHost, System.Collections.Generic.List`1[T] paramFactories) [0x0007e] in <726d60ef951344e39d24ccae155f0319>:0 
  at ContractConfigurator.ParameterFactory.GenerateParameters (ContractConfigurator.ConfiguredContract contract, Contracts.IContractParameterHost contractParamHost, System.Collections.Generic.List`1[T] paramFactories) [0x0008c] in <726d60ef951344e39d24ccae155f0319>:0 
  at ContractConfigurator.ContractType.GenerateParameters (ContractConfigurator.ConfiguredContract contract) [0x00000] in <726d60ef951344e39d24ccae155f0319>:0 
  at ContractConfigurator.ConfiguredContract.Initialize (ContractConfigurator.ContractType contractType) [0x00211] in <726d60ef951344e39d24ccae155f0319>:0 

Additionally, upon opening the VAB or going to an in-flight ship, I get this similar-but-not-identical error:

Exception occured while loading contract parameter 'Orbit' in contract 'RP0.HSFOrbitalLEO3Repeatable':
System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary.
  at System.Collections.Generic.Dictionary`2[TKey,TValue].get_Item (TKey key) [0x0001e] in <ad04dee02e7e4a85a1299c7ee81c79f6>:0 
  at KSP.Localization.Localizer.GetStringByTag (System.String tag) [0x00005] in <9d71e4043e394d78a6cf9193ad011698>:0 
  at ContractConfigurator.Parameters.OrbitParameter.CreateDelegates () [0x001da] in <726d60ef951344e39d24ccae155f0319>:0 
  at ContractConfigurator.Parameters.OrbitParameter.OnParameterLoad (ConfigNode node) [0x001c1] in <726d60ef951344e39d24ccae155f0319>:0 
  at ContractConfigurator.Parameters.ContractConfiguratorParameter.OnLoad (ConfigNode node) [0x000be] in <726d60ef951344e39d24ccae155f0319>:0
jrossignol commented 4 years ago

1.30.1 was a big localization change, and I was worried that I'd missed a few keys like this. So I did a ton of testing, and left it in pre-release for a couple weeks. Sadly, looks like I still missed some. If you have any more unique errors, please post them here, but I'll do some additional testing with RP-0 to see if I can pick up anything more.

I'll try to get a release out to fix these ASAP.

MatijaBrown commented 4 years ago

Just wanted to add, I'm using RP-1. Also, I installed it via CKAN using the installation guide here: https://github.com/KSP-RO/RP-0/wiki/RO-&-RP-1-Installation-for-1.8.1. (Just saying this, as your both talking about RP-0 and there may be a difference).

IonTracks commented 4 years ago

I also have the exact same issue. After freshly installing RP-1/RO and CC 1.30.1 via CKAN using the same guide as MatijaBrown. When I open control mission for the first time I get that exception and 4 contracts are automatically accepted, I then also cannot accept the "First Launch" contract.

jrossignol commented 4 years ago

Something's off, I installed RP-1 from scratch with CKAN and didn't have any issues. It could be that it's a packaging issue with the release versus my dev copy, or maybe something else save specific.

Can one of you provide a KSP.log and save file for me to take a look at?

jrossignol commented 4 years ago

Reproduced.  I did a full clean install, and this time I deleted the expansions (because I wanted it to load up faster).  Turns out I re-used some of the stock strings from the expansion (which is a no-no for anyone who doesn't have the expansion).  Should be an easy enough fix.

jrossignol commented 4 years ago

Fixed for next release. Turns out it wasn't the expansion, but tags from KSP 1.9 and KSP 1.10. I don't know why I couldn't reproduce it the first time, but either way, fixed now.