Skip to content

Data Node

Jeremie Rossignol edited this page Dec 2, 2015 · 19 revisions

Table of Contents

The DATA node

The DATA node is used to temporarily store the result of expressions for use in the rest of the contract definition. The syntax of the data node is as follows:

CONTRACT_TYPE
{
    ...

    DATA
    {
        type = Vessel
        requiredValue = true
        targetVessel = AllVessels().Where(v => v.IsOrbiting()).Random()
    }

    ...

    PARAMETER
    {
        type = VesselParameterGroup
        vessel = @/targetVessel
    }
}

Data nodes may existing within CONTRACT_TYPE and CONTRACT_GROUP nodes.

Within the DATA node, there are a number of fields that can be specified:

Field Description
type The data type for elements within the DATA node. Supports any data type listed on the [[Expressions
requiredValue (Optional, default = true) If true, the expression needs to return a valid (non-null) value for the contract to be offered. If false, the contract will be offered even if the expression returns null.
uniquenessCheck (Optional, default = NONE) Whether (and how to check uniqueness of this value). Use this to prevent duplicate contracts (eg. for the same Kerbal, Vessel, etc.). This can check against contracts of the same type, or contracts in the same parent group. It can also check only active contracts or all contracts (to make it so a contract can only ever be completed once for the given value). The valid values are NONE, CONTRACT_ACTIVE, CONTRACT_ALL, GROUP_ACTIVE and GROUP_ALL.
<identifier> An identifier that contains the expression. Can be any valid identifier (characters, numbers and underscores), except for names already used by the CONTRACT_TYPE node.

Identifiers created in a DATA node are accessed as if they were a part of the CONTRACT_TYPE node (by referencing them in as @/<identifier>.

Clone this wiki locally