Teykn Posted April 7, 2021 Share Posted April 7, 2021 After doing some more editing, I think I've figured most of the things out, however there's something that I find odd and I don't know why CC is working this way: I have an int DATA node in the Groups.cfg for a funds multiplier like this: DATA { type = int title = Fund Modifier fundModifier = 1 } and in a CONTRACT_TYPE, I have this: advanceFunds = 10000 * @localMod rewardFunds = 5000 * @localMod DATA { type = int localMod = $fundModifier } BEHAVIOUR { name = NoFailureProfit type = Expression CONTRACT_COMPLETED_SUCCESS { $fundModifier = 0 } } Now, my intention with this is for Contract 1 to be completed once with a >0 advance and reward fund. And imo this should, in theory work. However, CC seems to register localMod as 0, even though $fundModifier hasn't been, or shouldn't've been affected by the BEHAVIOUR node. Is there any way to fix this problem? Any alternate solution I should use? Quote Link to comment Share on other sites More sharing options...
Caerfinon Posted April 7, 2021 Share Posted April 7, 2021 54 minutes ago, Teykn said: however there's something that I find odd and I don't know why CC is working this way: Data from a group config is accessed by @[groupname]:[variable] in an expression. In your example if your group name was "MyGroup" your variable in a contract would be @MyGroup:fundModifier. Group data is good for static values that do not change that can be shared with all contracts offered by the group. The $fundModifier is a variable in the persistent data store that you are referencing in your contract. If not previously set, the default value of 0 is set for numbers and whatever the default value is for other data types like strings etc. Your initial contract should set values in the data store to what you want. In the example below I set the value I want in my first contract in a series when the contract is offered. Subsequent contracts can then read this value and then update it on success of failure. It is a good idea to prepend some kind of mod identifier on your persistent data store variables (I use "ksrgap") because it is accessible by all contracts from any pack. If some other mod uses "fundModifier" it will interfere with yours. // Persistent Storage routines BEHAVIOUR { name = Expression type = Expression CONTRACT_OFFERED { type = int ksrgapFlightProgress = -2 } // On success set the progress counter CONTRACT_COMPLETED_SUCCESS { type = int ksrgapFlightProgress = $ksrgapFlightProgress + 1 } } You can see the contents of the persistent data store in your games save persistent.sfs file. Open it with a text editor and search for Persistent Data Store and you can see all the values that are set there. Quote Link to comment Share on other sites More sharing options...
UltraJohn Posted April 18, 2021 Share Posted April 18, 2021 Hi, I got this error: [EXC 21:28:12.726] NullReferenceException: Object reference not set to an instance of an object ContractConfigurator.ExpressionParser.ExperienceTraitParser.EQ (Experience.ExperienceTrait a, Experience.ExperienceTrait b) (at <ef0243a06f2841fe9bf57034a334902e>:0) ContractConfigurator.ExpressionParser.ExpressionParser`1[T].ApplyBooleanOperator (T lval, System.String op, T rval) (at <ef0243a06f2841fe9bf57034a334902e>:0) ContractConfigurator.ExpressionParser.ExpressionParser`1[T].ApplyOperator[TResult] (T lval, System.String op, T rval) (at <ef0243a06f2841fe9bf57034a334902e>:0) ContractConfigurator.ExpressionParser.ExpressionParser`1[T].ParseOperation[TResult] (T lval, System.String op) (at <ef0243a06f2841fe9bf57034a334902e>:0) ContractConfigurator.ExpressionParser.ExpressionParser`1[T].ParseStatement[TResult] (T lval) (at <ef0243a06f2841fe9bf57034a334902e>:0) ContractConfigurator.ExpressionParser.ExpressionParser`1[T].ParseStatementInner[TResult] () (at <ef0243a06f2841fe9bf57034a334902e>:0) System.Reflection.MonoMethod.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) (at <ad04dee02e7e4a85a1299c7ee81c79f6>:0) Rethrow as TargetInvocationException: Exception has been thrown by the target of an invocation. System.Reflection.MonoMethod.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) (at <ad04dee02e7e4a85a1299c7ee81c79f6>:0) System.Reflection.MethodBase.Invoke (System.Object obj, System.Object[] parameters) (at <ad04dee02e7e4a85a1299c7ee81c79f6>:0) ContractConfigurator.ExpressionParser.ExpressionParser`1[T].ParseStatement[TResult] () (at <ef0243a06f2841fe9bf57034a334902e>:0) ContractConfigurator.ExpressionParser.ListExpressionParser`1[T].ParseWhereMethod[TResult] (System.Collections.Generic.List`1[T] obj) (at <ef0243a06f2841fe9bf57034a334902e>:0) ContractConfigurator.ExpressionParser.ListExpressionParser`1[T].ParseMethod[TResult] (ContractConfigurator.ExpressionParser.BaseParser+Token token, System.Collections.Generic.List`1[T] obj, System.Boolean isFunction) (at <ef0243a06f2841fe9bf57034a334902e>:0) System.Reflection.MonoMethod.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) (at <ad04dee02e7e4a85a1299c7ee81c79f6>:0) Rethrow as TargetInvocationException: Exception has been thrown by the target of an invocation. System.Reflection.MonoMethod.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) (at <ad04dee02e7e4a85a1299c7ee81c79f6>:0) System.Reflection.MethodBase.Invoke (System.Object obj, System.Object[] parameters) (at <ad04dee02e7e4a85a1299c7ee81c79f6>:0) ContractConfigurator.ExpressionParser.ExpressionParser`1[T].ParseMethod[TResult] (ContractConfigurator.ExpressionParser.BaseParser+Token token, T obj, System.Boolean isFunction) (at <ef0243a06f2841fe9bf57034a334902e>:0) ContractConfigurator.ExpressionParser.ExpressionParser`1[T].CompleteIdentifierParsing[U] (U value) (at <ef0243a06f2841fe9bf57034a334902e>:0) System.Reflection.MonoMethod.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) (at <ad04dee02e7e4a85a1299c7ee81c79f6>:0) Rethrow as TargetInvocationException: Exception has been thrown by the target of an invocation. System.Reflection.MonoMethod.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) (at <ad04dee02e7e4a85a1299c7ee81c79f6>:0) System.Reflection.MethodBase.Invoke (System.Object obj, System.Object[] parameters) (at <ad04dee02e7e4a85a1299c7ee81c79f6>:0) ContractConfigurator.ExpressionParser.ExpressionParser`1[T].ParseSpecialIdentifier (ContractConfigurator.ExpressionParser.BaseParser+Token token) (at <ef0243a06f2841fe9bf57034a334902e>:0) ContractConfigurator.ExpressionParser.ExpressionParser`1[T].ParseSimpleStatement[TResult] () (at <ef0243a06f2841fe9bf57034a334902e>:0) ContractConfigurator.ExpressionParser.ExpressionParser`1[T].ParseStatementInner[TResult] () (at <ef0243a06f2841fe9bf57034a334902e>:0) ContractConfigurator.ExpressionParser.ExpressionParser`1[T].ParseStatement[TResult] () (at <ef0243a06f2841fe9bf57034a334902e>:0) ContractConfigurator.ExpressionParser.ExpressionParser`1[T].ParseExpression (System.String key, System.String expression, ContractConfigurator.ExpressionParser.DataNode dataNode) (at <ef0243a06f2841fe9bf57034a334902e>:0) Rethrow as Exception: Error parsing statement. Error occurred near '*': @/targetVessel.Crew().Where(k => k.ExperienceTrait() == "Scientist").Count() > 0 ...................................................................* <-- HERE ContractConfigurator.ExpressionParser.ExpressionParser`1[T].ParseExpression (System.String key, System.String expression, ContractConfigurator.ExpressionParser.DataNode dataNode) (at <ef0243a06f2841fe9bf57034a334902e>:0) ContractConfigurator.ExpressionParser.ExpressionParser`1[T].ExecuteExpression (System.String key, System.String expression, ContractConfigurator.ExpressionParser.DataNode dataNode) (at <ef0243a06f2841fe9bf57034a334902e>:0) ContractConfigurator.ConfigNodeUtil.ParseSingleValue[T] (System.String key, System.String stringValue, System.Boolean allowExpression) (at <ef0243a06f2841fe9bf57034a334902e>:0) ContractConfigurator.ConfigNodeUtil.ParseValue[T] (ConfigNode configNode, System.String key, System.Boolean allowExpression) (at <ef0243a06f2841fe9bf57034a334902e>:0) ContractConfigurator.ConfigNodeUtil.ParseValue[T] (ConfigNode configNode, System.String key, System.Action`1[T] setter, ContractConfigurator.IContractConfiguratorFactory obj, T defaultValue, System.Func`2[T,TResult] validation) (at <ef0243a06f2841fe9bf57034a334902e>:0) UnityEngine.DebugLogHandler:LogException(Exception, Object) ModuleManager.UnityLogHandle.InterceptLogHandler:LogException(Exception, Object) UnityEngine.Debug:LogException(Exception) ContractConfigurator.LoggingUtil:LogException(Exception) ContractConfigurator.ConfigNodeUtil:ParseValue(ConfigNode, String, Action`1, IContractConfiguratorFactory, Boolean, Func`2) ContractConfigurator.ConfigNodeUtil:ParseValue(ConfigNode, String, Action`1, IContractConfiguratorFactory, Func`2) ContractConfigurator.DeferredLoadUtil:ExecuteLoad(DeferredLoadObject`1) System.Reflection.MethodBase:Invoke(Object, Object[]) ContractConfigurator.<UpdateNonDeterministicValuesIterator>d__31:MoveNext() System.Linq.ConcatIterator`1:MoveNext() ContractConfigurator.<GenerateContract>d__33:MoveNext() ContractConfigurator.<ContractEnumerator>d__32:MoveNext() ContractConfigurator.ContractPreLoader:Update() KSP.log: https://www.dropbox.com/s/t0kmcb5gqugxlqp/KSP.log?dl=0 Quote Link to comment Share on other sites More sharing options...
Caerfinon Posted April 18, 2021 Share Posted April 18, 2021 1 hour ago, John007qwe said: Hi, I got this error: See the attached post. The exception occurs when no rover is deployed, or when a rover without a scientist is deployed. Once there is a rover with a scientist the parse will work correctly and allow the contract to work. Quote Link to comment Share on other sites More sharing options...
UltraJohn Posted April 18, 2021 Share Posted April 18, 2021 1 minute ago, Caerfinon said: See the attached post. The exception occurs when no rover is deployed, or when a rover without a scientist is deployed. Once there is a rover with a scientist the parse will work correctly and allow the contract to work. Right, so I just ignore it then. Thanks! Quote Link to comment Share on other sites More sharing options...
Darks :v Posted May 4, 2021 Share Posted May 4, 2021 How do you change the max of accepted contracts in a given level? I mean, I want to accept a lot, or even infinite, contracts in all levels, current level is 2, how do I modify the mod files to allow that? Quote Link to comment Share on other sites More sharing options...
Caerfinon Posted May 4, 2021 Share Posted May 4, 2021 58 minutes ago, Darks :v said: How do you change the max of accepted contracts in a given level? The max number of contracts per level is controlled by upgrades to mission control this can be changed with a Custom Barn Kit config. The maximum number of contracts that can be accepted of each prestige level can be set in Contract Configurator by the game difficulty settings. Change the Active Contract Multiplier slider to a value you would like. The default value is 1.0 At slider 8 (maximum value) it allows 42 trivial, 33 significant, and 24 exceptional contracts at the same time. If you want to change the values per Mission Control level use this; Quote Link to comment Share on other sites More sharing options...
Darks :v Posted May 10, 2021 Share Posted May 10, 2021 (edited) Quote On 5/4/2021 at 6:34 PM, Caerfinon said: Change the Active Contract Multiplier slider to a value you would like. The default value is 1.0 I have installed Custom Barn Kit but that boat sailed, the game is on going On 5/4/2021 at 6:34 PM, Caerfinon said: At slider 8 (maximum value) it allows 42 trivial, 33 significant, and 24 exceptional contracts at the same time. I know that persistent files in save folder are the current status of the game, so i search that value in persistent.sfs, and use notepad to change that value, specifically in ContractConfiguratorParameters, from 1 to 8 ActiveContractMultiplier = 1 >> ActiveContractMultiplier = 8 But nothing changed, values still the default, i enter control station, and only shows max active contracts, in actives label. When i change to All lable, it shows the default values, then i close the game, and reopened persistent.sfs, but value was still 8 persistenct,loadmeta contains only values about the game, like science and money Edited May 10, 2021 by Darks :v Quote Link to comment Share on other sites More sharing options...
Caerfinon Posted May 10, 2021 Share Posted May 10, 2021 21 minutes ago, Darks :v said: so i search that value in persistent.sfs Why not just change it in the in-game settings? Press ESC, go into settings, choose difficulty, find the Contract Configurator tab and set the setting there? Quote Link to comment Share on other sites More sharing options...
fragtzack Posted May 23, 2021 Share Posted May 23, 2021 Is it possible that this mod might be causing the new stock missions with 1.11 "add a part to satellite/rover" to fail? Numerous posts about this bug occurring with 1.1.1 missions, but wondering if all these people have Contract Configurator installed. I know I do. The bug goes like this: Mission = add missing part XYZ to satellite. After adding part XYZ, the contract mission does not update with success/completion status. Quote Link to comment Share on other sites More sharing options...
Caerfinon Posted May 23, 2021 Share Posted May 23, 2021 (edited) 2 hours ago, fragtzack said: Is it possible that this mod might be causing the new stock missions with 1.11 "add a part to satellite/rover" to fail? I haven't seen any evidence that this is the case. It seems more likely that stock contract has an issue where it forgets the vesselPersistentId of the ship the repairs are destined for, making the contract to be impossible to complete except from the debug console or editing the persistent.sfs file of the game were it occurs. The issue as pertaining to satellites is discussed here; Edited May 23, 2021 by Caerfinon Quote Link to comment Share on other sites More sharing options...
Teykn Posted May 26, 2021 Share Posted May 26, 2021 Heyo, Just wondering if there were/are plans on changing how vessels are tracked, if possible, or if it's possible to change how it's tracked via extending nodes like parameters? I discovered recently that, with a vesselParameterGroup with a specific vessel and a time requirement (e.g. stay in orbit for 30d) that CC only tracks it while in flight or in the Tracking Station (i think). I'd like CC to track the vessel (and the contract parameters pertaining to said vessel) across different scenes, but I'm presuming that this functionality hasn't been added due to KSP limitations or something? Quote Link to comment Share on other sites More sharing options...
Caerfinon Posted May 26, 2021 Share Posted May 26, 2021 (edited) 1 hour ago, Teykn said: I'd like CC to track the vessel (and the contract parameters pertaining to said vessel) across different scenes This is possible, but the duration parameter needs to be nested in the VesselParameterGroup. The following example from one of my contracts has a 3 day timer that persists through Scene changes and stays associated with the defined Vessel. Spoiler // The unique vesselID DATA { type = string craft = "KSRGAPKGOCampsite" hidden = true } // The VesselParameterGroup with the duration timer PARAMETER { name = CampSite type = VesselParameterGroup title = Create a Camp within 500 meters of the marker define = @/craft PARAMETER { Title = in your Rover Camper name = VesselIsType type = VesselIsType vesselType = Rover } PARAMETER { name = HasCrewCapacity type = HasCrewCapacity title = have total crew capacity for 4 kerbals minCapacity = 4 completeInSequence = true disableOnStateChange = false } PARAMETER { name = HasCrew type = HasCrew title = have a pilot trait = Pilot minCrew = 1 hideChildren = true disableOnStateChange = false } PARAMETER { title = Have @/scientistKerbalName on board name = HasPassengers type = HasPassengers kerbal = @/kerbalScientist.ElementAt(0) } PARAMETER { name = VisitWaypoint type = VisitWaypoint index = 0 distance = 500 showMessages = true hideOnCompletion = true targetBody = @/targetBody } PARAMETER { name = ReachState type = ReachState title = Stop and set up camp targetBody = Kerbin situation = LANDED maxSpeed = 0.0 hideChildren = true } PARAMETER { name = CampSite type = Duration duration = 3d preWaitText = Waiting to establish camp waitingText = Camping at site for: completionText = Camping Completed! disableOnStateChange = true } } Edited May 26, 2021 by Caerfinon Quote Link to comment Share on other sites More sharing options...
siimav Posted May 27, 2021 Share Posted May 27, 2021 On 5/26/2021 at 1:10 PM, Caerfinon said: This is possible, but the duration parameter needs to be nested in the VesselParameterGroup. The following example from one of my contracts has a 3 day timer that persists through Scene changes and stays associated with the defined Vessel. Is using define a critical part of the solution? I know for a fact that the counter will randomly get reset for that contract. Quote Link to comment Share on other sites More sharing options...
Caerfinon Posted May 27, 2021 Share Posted May 27, 2021 4 minutes ago, siimav said: Is using define a critical part of the solution? Yes the vessel must be defined by a unique name. If you have other Vessel Parameter Groups in you contract you can refer to a "defined" vessel using the the vessel = [defined name or variable] See - > https://github.com/jrossignol/ContractConfigurator/wiki/VesselParameterGroup-Parameter Quote Link to comment Share on other sites More sharing options...
Teykn Posted May 27, 2021 Share Posted May 27, 2021 On 5/26/2021 at 3:10 AM, Caerfinon said: This is possible, but the duration parameter needs to be nested in the VesselParameterGroup. The following example from one of my contracts has a 3 day timer that persists through Scene changes and stays associated with the defined Vessel. Reveal hidden contents // The unique vesselID DATA { type = string craft = "KSRGAPKGOCampsite" hidden = true } // The VesselParameterGroup with the duration timer PARAMETER { name = CampSite type = VesselParameterGroup title = Create a Camp within 500 meters of the marker define = @/craft PARAMETER { Title = in your Rover Camper name = VesselIsType type = VesselIsType vesselType = Rover } PARAMETER { name = HasCrewCapacity type = HasCrewCapacity title = have total crew capacity for 4 kerbals minCapacity = 4 completeInSequence = true disableOnStateChange = false } PARAMETER { name = HasCrew type = HasCrew title = have a pilot trait = Pilot minCrew = 1 hideChildren = true disableOnStateChange = false } PARAMETER { title = Have @/scientistKerbalName on board name = HasPassengers type = HasPassengers kerbal = @/kerbalScientist.ElementAt(0) } PARAMETER { name = VisitWaypoint type = VisitWaypoint index = 0 distance = 500 showMessages = true hideOnCompletion = true targetBody = @/targetBody } PARAMETER { name = ReachState type = ReachState title = Stop and set up camp targetBody = Kerbin situation = LANDED maxSpeed = 0.0 hideChildren = true } PARAMETER { name = CampSite type = Duration duration = 3d preWaitText = Waiting to establish camp waitingText = Camping at site for: completionText = Camping Completed! disableOnStateChange = true } } Hmm, I'm guessing that having the Vessel stored in a DATA node allows it to be tracked across all flight scenes? I've tried it with just a regular "define = targetVessel" in one VesselParameterGroup and have it be "vessel = targetVessel" in another VPG, which is the one where i'm wanting to track the vessel duration. Quote Link to comment Share on other sites More sharing options...
Caerfinon Posted May 27, 2021 Share Posted May 27, 2021 35 minutes ago, Teykn said: Vessel stored in a DATA node allows it to be tracked across all flight scenes? The data node is convenient for only having to define the key once in a contract and then just use the variable in all other VPG in the contract. I find that having the duration in the VPG where the vessel is defined seems to work better. But I don't really know why it does. Quote Link to comment Share on other sites More sharing options...
Teykn Posted May 28, 2021 Share Posted May 28, 2021 2 hours ago, Caerfinon said: The data node is convenient for only having to define the key once in a contract and then just use the variable in all other VPG in the contract. I find that having the duration in the VPG where the vessel is defined seems to work better. But I don't really know why it does. Hmm, there's not a lot of cases where I would have a duration in the same VPG where vessel is also defined. Afaik defined vessels can be used across different CONTRACT_TYPEs in the same .cfg file, which is what I am currently doing. However, this does not allow for tracking in different scenes besides flying the vessel directly. Would having a vessel DATA node be set to the vessel defined in the VPG in the first CONTRACT_TYPE allow for better tracking to occur with VPGs in the second CONTRACT_TYPE? Quote Link to comment Share on other sites More sharing options...
Caerfinon Posted May 28, 2021 Share Posted May 28, 2021 40 minutes ago, Teykn said: Would having a vessel DATA node be set to the vessel defined in the VPG in the first CONTRACT_TYPE allow for better tracking to occur with VPGs in the second CONTRACT_TYPE No. the data node in a contract is usable only within the same contract_type By defining the vessel key it becomes persistent as long as the vessel exists and can be refereed to in other contracts according to the wiki Separate contract_types can share data (even if in the same file) in two ways; Data nodes defined as part of the Contract Group definition can be accessed by any contract offered by the same Contract Group. This data is typically static. It is accessed by a variable in the form @[group name]:[variable] Data can be added the the persistent data store using an Expression Behaviour and can be accessed by any contract (even other people's contracts) by a variable in the form $[variablename] . This data can be modified by other Expression Behaviours in the same or other contracts. I generally have duration timers within one contract_type and associated with the VPG that defines the vessel that needs to complete the duration. I can switch scenes, ships etc and the timer persists until it reaches 0 with the original ship (when I switch back to it). I make it so that the VPG with the timer is only satisfied when the ship meeting the design and crew parameters is in the correct position/orbit/location any only then is the duration timer triggered. If the timer is long, several days to a year, I set a Kerbal Alarm Clock alert for when it should complete and switch flight to the vessel to see the completion of the duration and continue with any unfinished parameters. Quote Link to comment Share on other sites More sharing options...
Kerolyov Posted June 10, 2021 Share Posted June 10, 2021 I'm new to fiddling with Contract Configurator, and trying to find a way to use the NextUnreachedBodies() function to always generate two identical contracts but different bodies on the progression list from NextUnreachedBodies(). So if for example I was generating two flyby contracts I'd like to get one foe Eve and one for Duna but never get two for the same body. I'm assuming that if I did something like :- CONTRACT_TYPE { .... targetBody = @/targetBody maxSimultaneous = 2 ... DATA { type = CelestialBody targetBody = NextUnreachedBodies(2).Random() } ... } then I might get two contracts with the same target body? If NextUnreachedBodies() generates [Eve, Duna] then I want to guarantee I get 1 contract for Duna and another for Eve, and aprt from the target bosy the two contracts are otherwise identical. Quote Link to comment Share on other sites More sharing options...
Caerfinon Posted June 10, 2021 Share Posted June 10, 2021 6 minutes ago, Kerolyov said: to always generate two identical contracts but different bodies You need to add a "uniquenessCheck" to the Data Node. DATA { type = CelestialBody targetBody = NextUnreachedBodies(2).Random() uniquenessCheck = CONTRACT_ACTIVE } See the Wiki for full details -> https://github.com/jrossignol/ContractConfigurator/wiki/Data-Node Quote Link to comment Share on other sites More sharing options...
Kerolyov Posted June 10, 2021 Share Posted June 10, 2021 19 minutes ago, Caerfinon said: You need to add a "uniquenessCheck" to the Data Node. Thanks! Is it better to use SelectUnique() rather than Random() and have DATA { type = CelestialBody targetBody = NextUnreachedBodies(2).SelectUnique() uniquenessCheck = CONTRACT_ACTIVE } Also the reload contracts in the debug menu seems to hang with message "Reloading ModuleManager..." displayed in the game screen (not the CC debug window). Any ideas why that happens to me? Quote Link to comment Share on other sites More sharing options...
Caerfinon Posted June 10, 2021 Share Posted June 10, 2021 43 minutes ago, Kerolyov said: Is it better to use SelectUnique() rather than Random() Not sure it mattered in the context of choosing between two choices. SelectUnique() would return the first one. Random() would return either the first or the second. The Uniqueness check would prevent duplication on the second round. 46 minutes ago, Kerolyov said: Also the reload contracts in the debug menu seems to hang I never use the reload contracts in the debug menu I just reload the game so I get a clean load of any contract changes I make. You would need to post your ksp.log and your player.log to check what;s happening. Quote Link to comment Share on other sites More sharing options...
Kerolyov Posted June 10, 2021 Share Posted June 10, 2021 (edited) 24 minutes ago, Caerfinon said: I never use the reload contracts in the debug menu I just reload the game so I get a clean load of any contract changes I make. You would need to post your ksp.log and your player.log to check what;s happening. Found this open bug/issue on the CC github, although it seems very old ( 5 years ago), maybe it was never fixed? I'll avoid that button for now https://github.com/jrossignol/ContractConfigurator/issues/592 @Caerfinon As for the contacts I'm fiddling with everything works well until I accept one of the two choices. Once I do the other contract can then be identical to the acepted one and it seems random even using SelectUnique() An example would be 1 Duna and 1 Eve contract. Now I accept just one of those choices say Duna. If I decline the Eve one (or wait for it to expire) it regenerates BUT 50% of the time its another Duna one, whereas with both SelectUnique() and uniquenessCheck = CONTRACT_ACTIVE, I would expect to only get an Eve contract. I've tried uniquenessCheck = CONTRACT_ALL and same issue. Edited June 10, 2021 by Kerolyov Quote Link to comment Share on other sites More sharing options...
Mr Shifty Posted June 11, 2021 Share Posted June 11, 2021 I seem to recall when I used this mod back in the day that there was a way to use it to turn off certain types of stock contracts, i.e. tourism, survey, etc. I can't for the life of me figure it out now. Anyone know? Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.