Jump to content

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


nightingale

Recommended Posts

1 hour ago, nightingale said:

@MaverickNoob & @Tokamak - Something very odd going on.  If you look in the WEIGHTS section for the ContractSystem you can see the stock contracts are all there twice (the excerpt is from MaverickNoob's save, but Tokamak has the same thing):

  Reveal hidden contents

        WEIGHTS
        {
            ConfiguredContract8 = 30
            ConfiguredContract7 = 30
            ConfiguredContract6 = 30
            ConfiguredContract5 = 30
            ConfiguredContract4 = 30
            ConfiguredContract3 = 30
            ConfiguredContract2 = 30
            ConfiguredContract1 = 30
            StnSciContract = 30
            AsteroidSpectrumContract = 30
            SpectrumContract = 30
            SeismicContract = 30
            ImpactContract = 30
            DMAsteroidSurveyContract = 30
            DMSurveyContract = 30
            DMMagneticSurveyContract = 30
            DMReconContract = 30
            DMAnomalyContract = 30
            WorldFirstContract = 30
            TourismContract = 30
            SatelliteContract = 30
            ISRUContract = 30
            ARMContract = 30
            RecoverAsset = 30
            PlantFlag = 30
            PartTest = 70
            GrandTour = 30
            ExploreBody = 30
            CollectScience = 30
            ConfiguredContract = 30
            WorldFirstContract = 30
            TourismContract = 30
            SatelliteContract = 30
            ISRUContract = 30
            ARMContract = 30
            RecoverAsset = 30
            PlantFlag = 30
            PartTest = 70
            GrandTour = 30
            ExploreBody = 30
            CollectScience = 30

        }

Deleting the duplicated stuff should make it work.  Also, note that only the error in my previous post is relevant - the rest is side effects from the ContractSystem lying dead on the road after failing to load.

I still have no idea what caused it - you both have Contract Configurator & DMOS in common, so it could be either of those (or a stock problem).  I'll continue to investigate.

I did the experiment of deleting the duplicated bit you pointed out. After doing that contracts seem to work properly, until I exit and reload. On loading the game again, I am in the same weird state in which CapCom shows all of the contracts that I accepted before reloading the game... but the vanilla kerbal mission system does not show them as active anymore. 

On checking the save file, I find that the contracts are again stuck in the ContractPreLoader scenario instead of ContractSystem. They are all there, just not being recognized by the game.

Also, the repeated contract weights are back, even though I deleted them.

Link to comment
Share on other sites

Well that's not right:

[LOG 15:38:46.442] AssemblyLoader: Loading assembly at E:\Games\RemoteTech\Kerbal Space Program\GameData\CryoTanks\Plugins\Assembly-CSharp.dll

@Tokamak, that's from your log, @MaverickNoob, checking yours for a similar issue.

Basically, you have what looks like a full install of KSP's DLLs under CryoTanks - which is directly causing your problem.

EDIT - yup, same thing for @MaverickNoob, CryoTanks has stuff it shouldn't have.

Edited by nightingale
Link to comment
Share on other sites

1 hour ago, nightingale said:

If you can reproduce on a new save that's good (in terms of me being able to find the problem).  Can you open up the settings window for contract configurator (bottom right corner while in the space center scene) and tell me if you see any duplicates?  You'll have to expand the stock contracts section.

At least on mine, there are no duplicates in the settings window.

Link to comment
Share on other sites

11 minutes ago, nightingale said:

Well that's not right:


[LOG 15:38:46.442] AssemblyLoader: Loading assembly at E:\Games\RemoteTech\Kerbal Space Program\GameData\CryoTanks\Plugins\Assembly-CSharp.dll

@Tokamak, that's from your log, @MaverickNoob, checking yours for a similar issue.

Basically, you have what looks like a full install of KSP's DLLs under CryoTanks - which is directly causing your problem.

EDIT - yup, same thing for @MaverickNoob, CryoTanks has stuff it shouldn't have.

Oh wow. That's not right. I'll delete that and see if it helps. If that was it, I'll report it to them

Link to comment
Share on other sites

1 minute ago, nightingale said:

No need - between @antilochus and myself he's sufficiently aware of the issue now. :)

Okay. Thank you so much for the help. It really did look like your mod was the cause, and no disrespect was meant. For that matter, saying "please fix your mod" as opposed to just uninstalling it does show how much it adds to gameplay. :)

Link to comment
Share on other sites

1 minute ago, Tokamak said:

Okay. Thank you so much for the help. It really did look like your mod was the cause, and no disrespect was meant. For that matter, saying "please fix your mod" as opposed to just uninstalling it does show how much it adds to gameplay. :)

No worries, since it is an area that Contract Configurator touches you had me believing it too (or at least suspicious enough that I couldn't leave it alone until I found the root cause).

Link to comment
Share on other sites

22 minutes ago, nightingale said:

Actually it's Cryonic Engines and Kerbal Atomics.  I sent @Nertea a PM (although I saw you also posted on his thread).

Confirmed those are the only mods in that install causing the problem... Reinstalled all mods except those two mods and mods associated with them. Problem gone.

Link to comment
Share on other sites

Something at the back of my mind is telling me that I once saw contracts that had a small chance of a tourist joining your crew. Am I imagining things? A bit of googling has not let me find it.

Link to comment
Share on other sites

6 hours ago, Tokamak said:

Something at the back of my mind is telling me that I once saw contracts that had a small chance of a tourist joining your crew. Am I imagining things? A bit of googling has not let me find it.

Tourism Plus has a space camp contract.  You bring up a pilot, engineer, scientist and some tourists; after leaving them in orbit for a while, some of the tourists turn into crew.

Link to comment
Share on other sites

@nightingale sorry to bring this up again but i seem to be having the same problem @Tokamak had even though i dont have cryoengines or kerbal atomics installed. I dont know what files to post here for you to check what's wrong so just tell me what files or logs you need. Again, sorry to bother you. (Edit) I remember reading something about some mods having game files. I think that's the case because when I make a new save all the default flags (and even some custom flags i put in) have been duplicated so there is 3 versions of them.

Edited by rndomguy
Link to comment
Share on other sites

6 hours ago, rndomguy said:

@nightingale sorry to bring this up again but i seem to be having the same problem @Tokamak had even though i dont have cryoengines or kerbal atomics installed. I dont know what files to post here for you to check what's wrong so just tell me what files or logs you need. Again, sorry to bother you. (Edit) I remember reading something about some mods having game files. I think that's the case because when I make a new save all the default flags (and even some custom flags i put in) have been duplicated so there is 3 versions of them.

Let's start with your KSP.log file.

Link to comment
Share on other sites

7 hours ago, nightingale said:

Let's start with your KSP.log file.

I deleted the ksp.log then made a new one where I just made a new save and recreated the bug to (atleast i think) make the log smaller so it is easier to look through. https://1drv.ms/u/s!AoD2cIVdrkdBsELFlRkDohDrSklQ also here are the mods i have installed, atleast what avc says i have installed. 

Quote

KSP: 1.1.3 (Win64) - Unity: 5.2.4f1 - OS: Windows 10  (10.0.0) 64bit
MagiCore - 1.1.1
USI Tools - 0.7.4
B9 Animation Modules - 1.0.2
B9 Aerospace - 6.1.1
Chatterer - 0.9.90.1289
Community Resource Pack - 0.5.4
Contract Configurator - 1.13
Contract Pack: Anomaly Surveyor - 1.5
CC-CP-SCANSat - 0.6.0.1
Contract Pack: Clever Sats - 1.1.0.1
Contract Pack: Field Research - 1.1.7
Contract Pack: Giving Aircraft a Purpose - 1.2.6
Contract Pack: Bases and Stations - 3.2.2.1
Contract Pack: RemoteTech - 2.0.2
Contract Pack: Sounding Rockets - 1.0.3
Rover Missions - 0.1.4
Contract Pack: Unmanned Contracts - 0.3.20
Contract Pack: Tourism Plus - 1.4.2
Custom Asteroids - 1.3.1
CustomBarnKit - 1.1.9
Deadly Reentry - 7.4.5
DMagic Orbital Science - 1.3.0.2
CapCom Mission Control On The Go - 1.0.2.3
Contract Parser - 1.0.4
Contracts Window Plus - 1.0.6.4
Progress Parser - 1.0.5
Easy Vessel Switch - 1.0.2
Ferram Aerospace Research - 0.15.7
Firespitter - 7.3
HeatControl - 0.3.2
RasterPropMonitor - 0.27
Kerbal Attachment System - 0.5.9
Kerbal Construction Time - 1.3.4
Kerbal Engineer Redux - 1.1.1
Kerbal Inventory System - 1.2.12
KSP-AVC Plugin - 1.1.6.1
Modular Rocket Systems - 1.12.7
ModularFlightIntegrator - 1.1.6
Docking Port Alignment Indicator - 6.4
NearFutureConstruction - 0.6.4
NearFutureElectrical - 0.7.5
NearFuturePropulsion - 0.7.3
NearFutureSolar - 0.6.2
NearFutureSpacecraft - 0.5.1
Final Frontier - 1.0.10.2467
Outer Planets Mod - 2.0
Pilot Assistant - 1.12.5
PlanetShine - 0.2.5
RCS Build Aid - 0.8
RemoteTech - 1.7
ResearchBodies - 1.7.2
SCANsat - 1.1.6.3
SETI-Contracts - 0.9.7
SmartStage - 2.9.4
Spacetux - 0.3.10.1
StageRecovery - 1.6.4
Surface Mounted Stock-Alike Lights for Self-Illumination - 1.2.4
Trajectories - 1.6.2
Kerbal Alarm Clock - 3.7.1
USI Core - 0.2.4
USI Exploration Pack - 0.5.4
Freight Transport Tech - 0.5.4
Karbonite - 0.7.4
Karbonite Plus - 0.6.4
Karibou - 0.2.4
Kolonization Core - 0.2.4
Konstruction - 0.1
USI-LS - 0.4.4
USI Survivability Pack - 0.5.4
UKS - 0.40.4
Waypoint Manager - 2.5.3

 

Link to comment
Share on other sites

1 hour ago, rndomguy said:

I deleted the ksp.log then made a new one where I just made a new save and recreated the bug to (atleast i think) make the log smaller so it is easier to look through. https://1drv.ms/u/s!AoD2cIVdrkdBsELFlRkDohDrSklQ also here are the mods i have installed, atleast what avc says i have installed. 

 

Same thing, different directory:

[LOG 22:09:22.994] Load(Assembly): Sources/CollisionFX-master/CollisionFX/bin/Debug/Assembly-CSharp

So you'll have to remove the GameData/Sources/CollisionFX-master stuff that is including the extra DLL and then hack the save file to remove the duplicates.

Link to comment
Share on other sites

2 minutes ago, nightingale said:

Same thing, different directory:


[LOG 22:09:22.994] Load(Assembly): Sources/CollisionFX-master/CollisionFX/bin/Debug/Assembly-CSharp

So you'll have to remove the GameData/Sources/CollisionFX-master stuff that is including the extra DLL and then hack the save file to remove the duplicates.

Thanks alot, i have no need to hack the save since i noticed it early in the game and made havent made any progress, ill just make a new one. Thank you again.

Link to comment
Share on other sites

OK, here is a new one for me...

I have a ship that is manned and I want it to release 2 separate satellites. I want both satellites to be put into a specific orbit as an optional parameter for a bonus.

PARAMETER
	{
		name = VesselGroup
		type = VesselParameterGroup
		title = STS-5
		define = STS-5
	
		PARAMETER
		{
			name = NewVessel
			type = NewVessel
		}
		PARAMETER
		{
			name = HasCrew
			type = HasCrew
			minCrew = 4
			maxCrew = 4
			title = Have 4 crewmembers on board
			hideChildren = true
		}
		PARAMETER
		{
			name = STS5Orbit
			type = Orbit
			minAltitude = @targetBody.AtmosphereAltitude()
			title = Reach Orbit and Deploy your Satellites
			disableOnStateChange = true
			hideChildren = true
			
			PARAMETER
			{
				name = CommSats
				type = PartValidation
				hideChildren = true
				partModule = ModuleCommand
				minCount = 3
				title = Deploy Your 2 Satellites
				disableOnStateChange = true
			}
		}
		PARAMETER
		{
			name = LandOnRunway
			type = ReachState
			maxSpeed = 1
			targetBody = HomeWorld()
			biome = Runway
			situation = LANDED
			disableOnStateChange = true
			hideChildren = true
			optional = true
		}
		PARAMETER
		{
			name = ReturnHome
			type = ReturnHome
			title = Return Home Safely
			hideChildren = true
			completeInSequence = true
			PARAMETER
			{
				name = CommSatsDeployed
				type = PartValidation
				hideChildren = true
				partModule = ModuleCommand
				maxCount = 1
				title = Return without the Satellites
				disableOnStateChange = true
			}
		}
	}

Curious where and how the best way to add those parameters would be without one single sat successfully completing both missions.

Link to comment
Share on other sites

1 hour ago, pap1723 said:

OK, here is a new one for me...

I have a ship that is manned and I want it to release 2 separate satellites. I want both satellites to be put into a specific orbit as an optional parameter for a bonus.


PARAMETER
	{
		name = VesselGroup
		type = VesselParameterGroup
		title = STS-5
		define = STS-5
	
		PARAMETER
		{
			name = NewVessel
			type = NewVessel
		}
		PARAMETER
		{
			name = HasCrew
			type = HasCrew
			minCrew = 4
			maxCrew = 4
			title = Have 4 crewmembers on board
			hideChildren = true
		}
		PARAMETER
		{
			name = STS5Orbit
			type = Orbit
			minAltitude = @targetBody.AtmosphereAltitude()
			title = Reach Orbit and Deploy your Satellites
			disableOnStateChange = true
			hideChildren = true
			
			PARAMETER
			{
				name = CommSats
				type = PartValidation
				hideChildren = true
				partModule = ModuleCommand
				minCount = 3
				title = Deploy Your 2 Satellites
				disableOnStateChange = true
			}
		}
		PARAMETER
		{
			name = LandOnRunway
			type = ReachState
			maxSpeed = 1
			targetBody = HomeWorld()
			biome = Runway
			situation = LANDED
			disableOnStateChange = true
			hideChildren = true
			optional = true
		}
		PARAMETER
		{
			name = ReturnHome
			type = ReturnHome
			title = Return Home Safely
			hideChildren = true
			completeInSequence = true
			PARAMETER
			{
				name = CommSatsDeployed
				type = PartValidation
				hideChildren = true
				partModule = ModuleCommand
				maxCount = 1
				title = Return without the Satellites
				disableOnStateChange = true
			}
		}
	}

Curious where and how the best way to add those parameters would be without one single sat successfully completing both missions.

Check out the RemoteTech contract pack for an example.

Relevant bits:

    PARAMETER
    {
        name = CommSat1
        type = VesselParameterGroup
        define = CommSat I

        PARAMETER
        {
            name = IsNotVessel
            type = IsNotVessel
            vessel = CommSat II
        }

        # ... stuff
    }    
    PARAMETER
    {
        name = CommSat2
        type = VesselParameterGroup
        define = CommSat II
        disableOnStateChange = false

        PARAMETER
        {
            name = IsNotVessel
            type = IsNotVessel
            vessel = CommSat I
        }

        # ... stuff
    }

The other option, if it makes sense for your use case, is to just have the parameters naturally mutually exclusive for the two (eg. a polar and equatorial orbit).

Edited by nightingale
Link to comment
Share on other sites

New release!  Download here.

Contract Configurator 1.14.0

  • Added suppport for partModuleType in PartValidation.
  • Added AtMost and AtLeast set requirements.
  • Fixed issue where HasCrew was counting tourists.
  • Fixed issue where partModuleType = Wheel wasn't picking up the LY-01 fixed landing gear (or any wheel part without a motor).
  • Fixed issue with VisitWaypoing and WaypointGenerator not correctly update waypoint names when expressions are used.
  • Reduced LINQ and reflection calls in expression parser for performance/garbage collection improvements.
Link to comment
Share on other sites

I'm having some strange error popups that I can't explain. Any assistance as to what it could be?

 

Spoiler

245.3521: ArgumentException: No PartModule class for 'StationScienceModule'.
          at ContractConfigurator.Validation.ValidatePartModule (System.String name)
          at System.Linq.Enumerable.All[String] (IEnumerable`1 source, System.Func`2 predicate)
          at ContractConfigurator.PartValidationFactory+<>c.<Load>b__3_6 (System.Collections.Generic.List`1 x)
          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)
          at UnityEngine.Debug:LogException(Exception)
          at ContractConfigurator.LoggingUtil:LogException(Exception)
          at ContractConfigurator.ConfigNodeUtil:ParseValue(ConfigNode, String, Action`1, IContractConfiguratorFactory, List`1, Func`2)
          at ContractConfigurator.PartValidationFactory:Load(ConfigNode)
          at ContractConfigurator.ParameterFactory:GenerateParameterFactory(ConfigNode, ContractType, ParameterFactory&, ParameterFactory)
          at ContractConfigurator.ParameterFactory:GenerateParameterFactory(ConfigNode, ContractType, ParameterFactory&, ParameterFactory)
          at ContractConfigurator.ParameterFactory:GenerateParameterFactory(ConfigNode, ContractType, ParameterFactory&, ParameterFactory)
          at ContractConfigurator.ContractType:Load(ConfigNode)
          at ContractConfigurator.<LoadContractConfig>d__26:MoveNext()
          at ContractConfigurator.ContractConfigurator:Update()

245.3727: ArgumentException: No PartModule class for 'StationScienceModule'.
          at ContractConfigurator.Validation.ValidatePartModule (System.String name)
          at System.Linq.Enumerable.All[String] (IEnumerable`1 source, System.Func`2 predicate)
          at ContractConfigurator.PartModuleUnlockedRequirement+<>c.<LoadFromConfig>b__1_1 (System.Collections.Generic.List`1 x)
          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)
          at UnityEngine.Debug:LogException(Exception)
          at ContractConfigurator.LoggingUtil:LogException(Exception)
          at ContractConfigurator.ConfigNodeUtil:ParseValue(ConfigNode, String, Action`1, IContractConfiguratorFactory, List`1, Func`2)
          at ContractConfigurator.ConfigNodeUtil:ParseValue(ConfigNode, String, Action`1, IContractConfiguratorFactory, Func`2)
          at ContractConfigurator.PartModuleUnlockedRequirement:LoadFromConfig(ConfigNode)
          at ContractConfigurator.ContractRequirement:GenerateRequirement(ConfigNode, ContractType, ContractRequirement&, IContractConfiguratorFactory)
          at ContractConfigurator.ContractRequirement:GenerateRequirement(ConfigNode, ContractType, ContractRequirement&, IContractConfiguratorFactory)
          at ContractConfigurator.ContractType:Load(ConfigNode)
          at ContractConfigurator.<LoadContractConfig>d__26:MoveNext()
          at ContractConfigurator.ContractConfigurator:Update()

245.7598: ArgumentException: No PartModule class for 'SampleAnalyzer'.
          at ContractConfigurator.Validation.ValidatePartModule (System.String name)
          at System.Linq.Enumerable.All[String] (IEnumerable`1 source, System.Func`2 predicate)
          at ContractConfigurator.PartValidationFactory+<>c.<Load>b__3_6 (System.Collections.Generic.List`1 x)
          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)
          at UnityEngine.Debug:LogException(Exception)
          at ContractConfigurator.LoggingUtil:LogException(Exception)
          at ContractConfigurator.ConfigNodeUtil:ParseValue(ConfigNode, String, Action`1, IContractConfiguratorFactory, List`1, Func`2)
          at ContractConfigurator.PartValidationFactory:Load(ConfigNode)
          at ContractConfigurator.ParameterFactory:GenerateParameterFactory(ConfigNode, ContractType, ParameterFactory&, ParameterFactory)
          at ContractConfigurator.ParameterFactory:GenerateParameterFactory(ConfigNode, ContractType, ParameterFactory&, ParameterFactory)
          at ContractConfigurator.ParameterFactory:GenerateParameterFactory(ConfigNode, ContractType, ParameterFactory&, ParameterFactory)
          at ContractConfigurator.ContractType:Load(ConfigNode)
          at ContractConfigurator.<LoadContractConfig>d__26:MoveNext()
          at ContractConfigurator.ContractConfigurator:Update()

245.7719: ArgumentException: No PartModule class for 'SampleAnalyzer'.
          at ContractConfigurator.Validation.ValidatePartModule (System.String name)
          at System.Linq.Enumerable.All[String] (IEnumerable`1 source, System.Func`2 predicate)
          at ContractConfigurator.PartModuleUnlockedRequirement+<>c.<LoadFromConfig>b__1_1 (System.Collections.Generic.List`1 x)
          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)
          at UnityEngine.Debug:LogException(Exception)
          at ContractConfigurator.LoggingUtil:LogException(Exception)
          at ContractConfigurator.ConfigNodeUtil:ParseValue(ConfigNode, String, Action`1, IContractConfiguratorFactory, List`1, Func`2)
          at ContractConfigurator.ConfigNodeUtil:ParseValue(ConfigNode, String, Action`1, IContractConfiguratorFactory, Func`2)
          at ContractConfigurator.PartModuleUnlockedRequirement:LoadFromConfig(ConfigNode)
          at ContractConfigurator.ContractRequirement:GenerateRequirement(ConfigNode, ContractType, ContractRequirement&, IContractConfiguratorFactory)
          at ContractConfigurator.ContractType:Load(ConfigNode)
          at ContractConfigurator.<LoadContractConfig>d__26:MoveNext()
          at ContractConfigurator.ContractConfigurator:Update()

 

Link to comment
Share on other sites

@nightingale Thanks for the tip about the Remote Tech, it worked great.

Is there any way to force a player to have to make an EVA in space and travel a certain distance away from the ship? I tried looking into IsVesselType = EVA which will work for part of it. If I create a Rendezvous Parameter with an invertRequirement = true and a distance of say 200, would that require the EVA vessel to be 200 meters away from the ship to accomplish the contract?

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...