Jump to content

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


nightingale

Recommended Posts

somewhat related, in Waypoint Manager, while the distance to the waypoint was correct, the heading to it was totally off.  I'm comparing it to the heading in the navball when I'm heading to a waypoint.

For example, while the navball said I was heading at 267 degrees, the Waypoint Manager said the heading to the waypoint was 12 degrees

 

Waypoint manager version 2.4.4
Contract Configurator 1.9.1

Edited by linuxgurugamer
Link to comment
Share on other sites

5 hours ago, linuxgurugamer said:

1.  In the mission control, where you select the missions, all parts of the mission are visible before

Can you post a screenshot with details?

5 hours ago, linuxgurugamer said:

2.  Waypoint manager did not pick up the second waypoint when it became visible in the contract window.  Also, didn't see the icon anywhere on screen.

Did saving and loading make it show up?  Or did it just never show up?  Please raise a GitHub issue with details.

5 hours ago, linuxgurugamer said:

3.  I just noticed that the Contracts + window is working properly, but the stock contract window is not.  See this screenshot:

Usually indicates an exception.  Check logs and let me know what you see.  This could likely be affecting #2 as well.

Link to comment
Share on other sites

Did you miss my follow-up message?  #3 was solved when I removed the "hidden = true" line.

re. Waypoint manager saving/loading, do you want me to totally exit the game and then reenter it?

Did you see this comment, after I removed the "hidden = true" line:

       The Waypoint Manager now showed 5 waypoints (the contract has 5 parts, but only uses a certain number of them).
 

Here is a picture inside the Mission Control:   https://www.dropbox.com/s/vweyu25adwh3jus/screenshot_2015-12-30--15-31-54.png?dl=0

I see the following exception in the log, after loading:

ArgumentException: Getting control 0's position in a group with only 0 controls when doing Repaint
Aborting
  at UnityEngine.GUILayoutGroup.GetNext () [0x00000] in <filename unknown>:0
  at UnityEngine.GUILayoutUtility.BeginLayoutGroup (UnityEngine.GUIStyle style, UnityEngine.GUILayoutOption[] options, System.Type LayoutType) [0x00000] in <filename unknown>:0
  at UnityEngine.GUILayout.BeginVertical (UnityEngine.GUIContent content, UnityEngine.GUIStyle style, UnityEngine.GUILayoutOption[] options) [0x00000] in <filename unknown>:0
  at UnityEngine.GUILayout.BeginVertical (UnityEngine.GUILayoutOption[] options) [0x00000] in <filename unknown>:0
  at ContractsWindow.contractsWindow.DrawWindow (Int32 id) [0x00000] in <filename unknown>:0
  at ContractsWindow.DMC_MBW.DrawWindowInternal (Int32 id) [0x00000] in <filename unknown>:0
  at UnityEngine.GUILayout+LayoutedWindow.DoWindow (Int32 windowID) [0x00000] in <filename unknown>:0
  at UnityEngine.GUI.CallWindowDelegate (UnityEngine.WindowFunction func, Int32 id, UnityEngine.GUISkin _skin, Int32 forceRect, Single width, Single height, UnityEngine.GUIStyle style) [0x00000] in <filename unknown>:0 


 

Edited by linuxgurugamer
Link to comment
Share on other sites

:-(  Sad face.  I just found another problem:

Each contract has 5 main PARAMETERS inside a Sequence PARAMETER.

Data node:

    DATA
    {
   hasTherm = @/targetVessel.Parts().Where(p => p == sensorThermometer).Count() > 0
    }

Each paramter has the following sub parameter:

    PARAMETER
            {
                name = Location1AllResearch
                type = All
                title = Conduct research at the @/a1
            
                PARAMETER
                {
                    name = Location1TemperatureScan
                    type = CollectScience
                    experiment = temperatureScan
                    recoveryMethod = None
                    rewardScience = 0.25
                    
                    REQUIREMENT
                    {
                        name = Location1TemperatureScanRequirement
                        type = Expression
                        expression = @/hasTherm
                    }
                }

Only difference is that the @/a1 is a2/a3/a4/a5 for each succeeding, the name is Location[12345]TemperatureScan

It only requires the temperature to be collected at the first waypoint

Here is a link to the complete contract:  https://www.dropbox.com/s/46osmqtic1gbo7i/RoverMissions.cfg?dl=0

 

 

Link to comment
Share on other sites

So, I'm trying to make this a little simpler (ha) by using Iterators instead of generating the entire thing in one large file.

I can't figure out the following:

    DATA
    {
        type = int
        numWaypoints = Random(1, 5)
    }
    DATA
    {
        type = List<int>
        nums = [ 1,2,3,4,5,6,7,8,9,10]
    }

The following is throwing an error.  I've tried the following lines:

id = nums.Where(b +> b <= @/numWaypoints) id = nums.Where(b +> b() <= @/numWaypoints) id = nums.Where(b +> b.int() <= @/numWaypoints)

            ITERATOR
            {
                type = int
                id = nums.Where (b => b <= @/numWaypoints)
            }

From the error log:

NotSupportedException: Can't parse identifier for type System.Int32 in class ContractConfigurator.ExpressionParser.NumericValueExpressionParser`1[System.Int32] - not supported!
  at ContractConfigurator.ExpressionParser.ExpressionParser`1[System.Int32].ParseIdentifier (ContractConfigurator.ExpressionParser.Token token) [0x00000] in <filename unknown>:0
  at ContractConfigurator.ExpressionParser.NumericValueExpressionParser`1[System.Int32].ParseIdentifier (ContractConfigurator.ExpressionParser.Token token) [0x00000] in <filename unknown>:0
  at ContractConfigurator.ExpressionParser.ExpressionParser`1[System.Int32].ParseVarOrIdentifier (ContractConfigurator.ExpressionParser.Token token) [0x00000] in <filename unknown>:0
  at ContractConfigurator.ExpressionParser.ExpressionParser`1[System.Int32].ParseSimpleStatement[Int32] () [0x00000] in <filename unknown>:0 
Rethrow as Exception: Error parsing statement.
Error occurred near '*':
nums.Where (i => i <= @/numWayPoints)
....* <-- HERE

 

Link to comment
Share on other sites

Is there any way an Iterator value can be used as a data value, like this:

 
PARAMETER
{
    type = ReachState

    ITERATOR
    {
        type = CelestialBody
        targetBody = AllBodies().Where(cb => cb.IsPlanet())
    }
}
PARAMETER
{
   name = Location  Arrival
   type = VisitWaypoint
   index = 1
   title = test title referencing @..targetBody
}

I'm actually trying to use it with a list of ints, but can't seem to reference the value defined inside the Iterator

Link to comment
Share on other sites

7 hours ago, linuxgurugamer said:

Did you miss my follow-up message?  #3 was solved when I removed the "hidden = true" line.

Yup, missed the stuff after the page break, as the last posted user on the thread matched the last post on the page,so didn't think to look for a second page.

7 hours ago, linuxgurugamer said:

 


ArgumentException: Getting control 0's position in a group with only 0 controls when doing Repaint
Aborting
  at UnityEngine.GUILayoutGroup.GetNext () [0x00000] in <filename unknown>:0
  at UnityEngine.GUILayoutUtility.BeginLayoutGroup (UnityEngine.GUIStyle style, UnityEngine.GUILayoutOption[] options, System.Type LayoutType) [0x00000] in <filename unknown>:0
  at UnityEngine.GUILayout.BeginVertical (UnityEngine.GUIContent content, UnityEngine.GUIStyle style, UnityEngine.GUILayoutOption[] options) [0x00000] in <filename unknown>:0
  at UnityEngine.GUILayout.BeginVertical (UnityEngine.GUILayoutOption[] options) [0x00000] in <filename unknown>:0
  at ContractsWindow.contractsWindow.DrawWindow (Int32 id) [0x00000] in <filename unknown>:0
  at ContractsWindow.DMC_MBW.DrawWindowInternal (Int32 id) [0x00000] in <filename unknown>:0
  at UnityEngine.GUILayout+LayoutedWindow.DoWindow (Int32 windowID) [0x00000] in <filename unknown>:0
  at UnityEngine.GUI.CallWindowDelegate (UnityEngine.WindowFunction func, Int32 id, UnityEngine.GUISkin _skin, Int32 forceRect, Single width, Single height, UnityEngine.GUIStyle style) [0x00000] in <filename unknown>:0 

 

This is an exception from Contracts Window+, and I'm going to assume it's the problem until I hear otherwise.

39 minutes ago, linuxgurugamer said:

Is there any way an Iterator value can be used as a data value, like this:


PARAMETER
{
    type = ReachState

    ITERATOR
    {
        type = CelestialBody
        targetBody = AllBodies().Where(cb => cb.IsPlanet())
    }
}
PARAMETER
{
   name = Location  Arrival
   type = VisitWaypoint
   index = 1
   title = test title referencing @..targetBody
}

I'm actually trying to use it with a list of ints, but can't seem to reference the value defined inside the Iterator

You're looking at it the wrong way.  You can't reference stuff that's happening in the iterator outside the iterator's parent node, because the iteration isn't happening there.  In that node, there is no @targetBody value.  If you change your ReachState to something like an All, and put the VisitWaypoint underneath it, then it will work better for you.

Link to comment
Share on other sites

This is what happens when I don't do a cutnpaste, because I actually did it that way, just screwed up in making the post.  To be clearer, here is a fragment of code:

	DATA
	{
		type = List<int>
		nums = [1,2,3,4,5]
	}

....

	PARAMETER
	{
		name = Sequence
		type = Sequence

		completeInSequence = true

		PARAMETER
		{
			name = ReachState
			type = ReachState
			failWhenUnmet = true
			maxTerrainAltitude = 1000
		}

        PARAMETER
        {
            name = PARAM1
            type = All

            ITERATOR
            {
                type = int
                id = @/nums
            }

            PARAMETER
            {
               name = Sequence
               type = Sequence
               disableOnStateChange = false
                title = Investigate @/currentLocs.ElementAt(@..id)
                hiddenParameter = Location @/currentLocs.ElementAt(@..id) AllResearch

 and this is from the error log:

ContractConfigurator.SequenceFactory: CONTRACT_TYPE 'RoverExplore', PARAMETER 'Sequence' of type 'Sequence': Error parsing title
(Filename: C:/buildslave/unity/build/artifacts/StandalonePlayerGenerated/UnityEngineDebug.cpp Line: 56)
Exception: Unknown identifier '@/Sequence/PARAM1/Sequence/'.

I did try the following alternative, with the same error:

title = @/currentLocs.ElementAt(@..id)

 

Link to comment
Share on other sites

2 hours ago, linuxgurugamer said:

This is what happens when I don't do a cutnpaste, because I actually did it that way, just screwed up in making the post.  To be clearer, here is a fragment of code:


	DATA
	{
		type = List<int>
		nums = [1,2,3,4,5]
	}

....

	PARAMETER
	{
		name = Sequence
		type = Sequence

		completeInSequence = true

		PARAMETER
		{
			name = ReachState
			type = ReachState
			failWhenUnmet = true
			maxTerrainAltitude = 1000
		}

        PARAMETER
        {
            name = PARAM1
            type = All

            ITERATOR
            {
                type = int
                id = @/nums
            }

            PARAMETER
            {
               name = Sequence
               type = Sequence
               disableOnStateChange = false
                title = Investigate @/currentLocs.ElementAt(@..id)
                hiddenParameter = Location @/currentLocs.ElementAt(@..id) AllResearch

 and this is from the error log:


ContractConfigurator.SequenceFactory: CONTRACT_TYPE 'RoverExplore', PARAMETER 'Sequence' of type 'Sequence': Error parsing title
(Filename: C:/buildslave/unity/build/artifacts/StandalonePlayerGenerated/UnityEngineDebug.cpp Line: 56)
Exception: Unknown identifier '@/Sequence/PARAM1/Sequence/'.

I did try the following alternative, with the same error:


title = @/currentLocs.ElementAt(@..id)

 

It's like a path - you need a slash:

@../id

Link to comment
Share on other sites

3 hours ago, nightingale said:

It's like a path - you need a slash:

@../id

I had tried that, but did again, here is the first error in the log file:

ContractConfigurator.VisitWaypointFactory: CONTRACT_TYPE 'RoverExplore', PARAMETER 'Location @/currentLocs.ElementAt(@../id) Arrival' of type 'VisitWaypoint': Error parsing name
 
(Filename: C:/buildslave/unity/build/artifacts/StandalonePlayerGenerated/UnityEngineDebug.cpp Line: 56)

Exception: Unknown identifier '@/Sequence/PARAM1/Sequence/id'.

UnityEngine.Debug:Internal_LogException(Exception, Object)
UnityEngine.Debug:LogException(Exception)
ContractConfigurator.LoggingUtil:LogException(Exception)
ContractConfigurator.ConfigNodeUtil:ParseValue(ConfigNode, String, Action`1, IContractConfiguratorFactory, String, Func`2)
ContractConfigurator.ConfigNodeUtil:ParseValue(ConfigNode, String, Action`1, IContractConfiguratorFactory, Func`2)
ContractConfigurator.DeferredLoadUtil:ExecuteLoad(DeferredLoadObject`1)
System.Reflection.MonoMethod:InternalInvoke(Object, Object[], Exception&)
System.Reflection.MonoMethod:Invoke(Object, BindingFlags, Binder, Object[], CultureInfo)
System.Reflection.MethodBase:Invoke(Object, Object[])
ContractConfigurator.ConfigNodeUtil:ExecuteDeferredLoads()
ContractConfigurator.ContractType:Load(ConfigNode)
ContractConfigurator.<LoadContractConfig>d__1e:MoveNext()
ContractConfigurator.ContractConfigurator:Update()


 

Link to comment
Share on other sites

1 hour ago, linuxgurugamer said:

I had tried that, but did again, here is the first error in the log file:


ContractConfigurator.VisitWaypointFactory: CONTRACT_TYPE 'RoverExplore', PARAMETER 'Location @/currentLocs.ElementAt(@../id) Arrival' of type 'VisitWaypoint': Error parsing name
 
(Filename: C:/buildslave/unity/build/artifacts/StandalonePlayerGenerated/UnityEngineDebug.cpp Line: 56)

Exception: Unknown identifier '@/Sequence/PARAM1/Sequence/id'.

UnityEngine.Debug:Internal_LogException(Exception, Object)
UnityEngine.Debug:LogException(Exception)
ContractConfigurator.LoggingUtil:LogException(Exception)
ContractConfigurator.ConfigNodeUtil:ParseValue(ConfigNode, String, Action`1, IContractConfiguratorFactory, String, Func`2)
ContractConfigurator.ConfigNodeUtil:ParseValue(ConfigNode, String, Action`1, IContractConfiguratorFactory, Func`2)
ContractConfigurator.DeferredLoadUtil:ExecuteLoad(DeferredLoadObject`1)
System.Reflection.MonoMethod:InternalInvoke(Object, Object[], Exception&)
System.Reflection.MonoMethod:Invoke(Object, BindingFlags, Binder, Object[], CultureInfo)
System.Reflection.MethodBase:Invoke(Object, Object[])
ContractConfigurator.ConfigNodeUtil:ExecuteDeferredLoads()
ContractConfigurator.ContractType:Load(ConfigNode)
ContractConfigurator.<LoadContractConfig>d__1e:MoveNext()
ContractConfigurator.ContractConfigurator:Update()


 

Looks to me you need another ../ for where you are in the tree. 

Link to comment
Share on other sites

I tried that:

 

	PARAMETER
	{
		name = Sequence
		type = Sequence

		completeInSequence = true

		PARAMETER
		{
			name = ReachState
			type = ReachState
			failWhenUnmet = true
			maxTerrainAltitude = 1000
		}

        PARAMETER
        {
            name = PARAM1 @id
            type = All

            ITERATOR
            {
                type = int
                id = @/nums
            }

            PARAMETER
            {
               name = Sequence
               type = Sequence
               disableOnStateChange = false
                title = Investigate @/currentLocs.ElementAt(@../../id)
                hiddenParameter = Location @/currentLocs.ElementAt(@../../id) AllResearch

and I got:

ContractConfigurator.SequenceFactory: CONTRACT_TYPE 'RoverExplore', PARAMETER 'Sequence' of type 'Sequence': Error parsing title
(Filename: C:/buildslave/unity/build/artifacts/StandalonePlayerGenerated/UnityEngineDebug.cpp Line: 56)
Exception: Unknown identifier '@/Sequence/id'

I'm curious about your suggesting the double .., since as I read this, with the ../ is the current paraneter, and one ../ is the immediate parent.  The id is defined in the immediate parent.  According to your docs:

     Identifiers created in a ITERATOR node are accessed as if they were a part of the parent node (by referencing them as @<identifier> within that node).

You can see that I added @id to the PARAM1 and that didn't generate an error, but inside any of the child parameters, it doesn't seem to be accessable

 

 

Link to comment
Share on other sites

I did post it earlier, but to make it easier to debug, I'm going to make a minimal contract to show the problem.

I'll have it up later.

If you don't want an expression for a name, then, inside an iterative parameter, there will be multiple names with the same value.  I suppose it's ok, but can get confusing when debugging

 

Link to comment
Share on other sites

I'm very embarrassed.

I've been programming for more than 40 years.  In that time, I've learned many lessons, one of which I totally forgot.

I made a minimal contract, and immediately the syntax error I was doing was obvious.

I'm sorry for the past several posts, all I can say is that I'm out of practice, having been in system administration for the past 10 years.

Let me say that I went down the ITERATOR path after the problems with the massive script-built set of contracts, in the hope it would solve some of the problems I was having.  Instead it caused a whole bunch of problem, mostly my fault.  

I would like to thank you for your patience and the answers, some of them were very useful.

 

I would like to request that you continue to allow an expression for a name, for the following reason:

If the names aren't unique, then there would be no way to reference it in the Random_waypoint_near section in the parameter = line

 

Now that it compiles, I can test.  The issues I raised on github were raised by a contract (which I can send you if you like) which did not do any iteration.  I'll update them with the results from my next set of tests.

 

 

LGG

Edited by linuxgurugamer
Link to comment
Share on other sites

I'm not sure if this is possible yet:

when generating a RANDOM_WAYPOINT, I'd like the name to be unique for each.  I have a number of strings in a list, which I'd like to use for this

Also. the "parameter =", would be useful if it could refer to a generated parameter name, so that a number of waypoints can be generated, each dependent on a different parameter.

Finally, the nearIndex, would be nice if, instead of all the waypoints being near a single one, if each could be near the previous one.

 

This isn't critical, for now I'm just putting in 5 RANDOM_WAYPOINT seconds, but would be nice if I could make that smaller.

 

Link to comment
Share on other sites

@linuxgurugamer - Your argument makes sense, and since it seems to work anyway, I'll keep the expressions in names stuff.

What you're looking for is very similar to #401 in spirit (adding support for lists in attributes of WaypointGenerator in this case, rather than SpawnKerbal).  Can you raise enhancements for the following:

  1. Support for list of names in RANDOM_WAYPOINT (and similar nodes) in WaypointGenerator
  2. Support for "chained" waypoints in RANDOM_WAYPOINT_NEAR (where they are near one after the other, rather than near a single one).

I can't do anything directly for referring to a generated name, but if you use a numeric identifier like you're currently doing it's probably going to be the best solution.

Link to comment
Share on other sites

I Noticed that in the Seti Probe first tech tree, there is a point where the Inline cockpit is unlocked and usable, but the command pod is not.

Would there possibly be a way in CC to set it up so that If they were to use the Inline cockpit as part of a rocket/spaceplane, and the command pod has not yet been unlocked, When the inline cockpit leaves the atmosphere, If it does not return to the atmosphere within 2 minutes, the kerbal onboard the Inline cockpit dies?

But If the command pod has already been unlocked, then there are no restrictions.

Link to comment
Share on other sites

7 hours ago, ToneStack said:

I Noticed that in the Seti Probe first tech tree, there is a point where the Inline cockpit is unlocked and usable, but the command pod is not.

Would there possibly be a way in CC to set it up so that If they were to use the Inline cockpit as part of a rocket/spaceplane, and the command pod has not yet been unlocked, When the inline cockpit leaves the atmosphere, If it does not return to the atmosphere within 2 minutes, the kerbal onboard the Inline cockpit dies?

But If the command pod has already been unlocked, then there are no restrictions.

This could be done by a mod, but it has nothing to do with Contract Configurator.

Link to comment
Share on other sites

11 hours ago, nightingale said:

@linuxgurugamer - Your argument makes sense, and since it seems to work anyway, I'll keep the expressions in names stuff.

What you're looking for is very similar to #401 in spirit (adding support for lists in attributes of WaypointGenerator in this case, rather than SpawnKerbal).  Can you raise enhancements for the following:

  1. Support for list of names in RANDOM_WAYPOINT (and similar nodes) in WaypointGenerator
  2. Support for "chained" waypoints in RANDOM_WAYPOINT_NEAR (where they are near one after the other, rather than near a single one).

I can't do anything directly for referring to a generated name, but if you use a numeric identifier like you're currently doing it's probably going to be the best solution.

Done, & Thanks

Link to comment
Share on other sites

Ok.  I've made a lot of good progress, but am stuck.

Here are the issues:

  1. in the RandomWaypointNear, the parameter doesn't seem to work, I've tried a number of permutations. 
  2. Probably as a result of the above, Waypoint Manager shows all waypoints, and on the map, will show them until they have been investigated
  3. Experiments seem to only be complete-able one time.  After completing an experiment at the first location, it appears to be fulfilled when going to the next location
  4. This isn't a problem, just wondering if there is a better way:  I'm using the following line to make sure that unused waypoints aren't shown at all:  hidden = @/numWaypoints >= 5? false:true

When in the middle of a contract, I see by using the alt-F10, that the parameter line looks correct, but it always says "deterministic = true".  See the screenshot in the zip file which also has the contract for an example. 

The RANDOM_WAYPOINT_NEAR nodes in the posted contract show three different attempts to get the parameter to work, none of them do.

Here is a link to the zip file which contains the rover contract and the 3 screenshots I took:

https://www.dropbox.com/s/xkcdpmdy1do2cdu/RoverContract.zip?dl=0

 

 

Link to comment
Share on other sites

How would I set a ReachState to fail a contract entirely if maximum G force of 4Gs were exceed by the player during a regular air flight?

 

maxAccelleration = 4.0

failWhenUnmet = false

?  im not able to test atm.

Edited by inigma
Link to comment
Share on other sites

Okay, finally got a chance to really dig in, and I can see why you were having issues, there were some nasty bugs that was really messing this up.  I recommend you grab the dev version, as it actually works for what you're doing (and is the reason why the answers to the questions below may be things you previously tried.

4 hours ago, linuxgurugamer said:
  1. in the RandomWaypointNear, the parameter doesn't seem to work, I've tried a number of permutations. 

Just the parameter name, so something like "parameter = PARAM1 0" in your case.  This was one of the very broken things though.

8 hours ago, linuxgurugamer said:

2. Probably as a result of the above, Waypoint Manager shows all waypoints, and on the map, will show them until they have been investigated

Also fixed.

8 hours ago, linuxgurugamer said:

3. Experiments seem to only be complete-able one time.  After completing an experiment at the first location, it appears to be fulfilled when going to the next location

Normally, this is where you'd want to use disableOnStateChange = false, but there's not state change back to incomplete for the experiment ones.  What you need to do is set it with VisitWaypointFirst, then CollectScience with completeInSequence = true.  This will prevent the CollectScience from being able to fire unless you're at the waypoint.

8 hours ago, linuxgurugamer said:

4. This isn't a problem, just wondering if there is a better way:  I'm using the following line to make sure that unused waypoints aren't shown at all:  hidden = @/numWaypoints >= 5? false:true

Since the ternary expression is using a boolean to get a boolean, you can just do:

hidden = @/numWaypoints < 5

5 hours ago, inigma said:

How would I set a ReachState to fail a contract entirely if maximum G force of 4Gs were exceed by the player during a regular air flight?

maxAccelleration = 4.0


failWhenUnmet = false

?  im not able to test atm.

Close, but it's the other way around - you want failWhenUnmet = true

Link to comment
Share on other sites

    BEHAVIOUR
    {
        name = SpawnVessel
        type = SpawnVessel
        deferVesselCreation = false

        VESSEL
        {
            name = KSS Rix
            craftURL = ContractPacks/GAP/Assets/Sea/Inigma Class Carrier.craft
            vesselType = Ship
            owned = false
            targetBody = Kerbin
            
            lat = @/carrierLat
            lon = @/carrierLon
            alt = -1
            heading = 90
            
            CREW
            {
                name = NewKerbal( Male , "Adm. Redbiertje Kerman" , "Pilot")
                addToRoster = false
                
            }

        }

}

 

this is not giving me a male Adm. Redbiertje Kerman consistently.

neither is 

            CREW
            {
                name =Adm. Redbiertje Kerman

                gender = Male
                addToRoster = false
                
            }

 

as the exception comes back saying that gender is not a recognized attribute for Crew.

Edited by inigma
Link to comment
Share on other sites

2 hours ago, nightingale said:

Close, but it's the other way around - you want failWhenUnmet = true

I have this parameter in a contract:

    PARAMETER
    {
        name = ReachState
        type = ReachState
        
        maxAcceleration = 2.0
        
        failWhenUnmet = true
        
    }

 

This parameter shows with green completed check mark as expected. But when you exceed 2 gees, the parameter loses its green completed check mark, and it doesn't fail the contract, but instead when the craft goes back under 2 gees, the parameter goes back to complete with a green check mark. Is this working as designed, or is this attribute supposed to fail the contract outright?

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