public override bool Load(ConfigNode configNode)
        {
            // Load base class
            bool valid = base.Load(configNode);

            valid &= ConfigNodeUtil.ParseValue<ChangeVesselOwnership.State>(configNode, "onState", x => onState = x, this, ChangeVesselOwnership.State.ParameterCompleted);
            valid &= ConfigNodeUtil.ParseValue<bool?>(configNode, "owned", x => owned = x.Value, this, (bool?)true);
            valid &= ConfigNodeUtil.ParseValue<List<string>>(configNode, "vessel", x => vessels = x, this);
            valid &= ConfigNodeUtil.ParseValue<List<string>>(configNode, "parameter", x => parameter = x, this, new List<string>());

            return valid;
        }
        public override bool Load(ConfigNode configNode)
        {
            // Load base class
            bool valid = base.Load(configNode);

            if (configNode.HasValue("onState"))
            {
                try
                {
                    Enum.Parse(typeof(TriggeredBehaviour.LegacyState), configNode.GetValue("onState"));
                    LoggingUtil.LogWarning(this, "Warning, values for onState have changed - attempting to load using obsolete values.");
                    valid &= ConfigNodeUtil.ParseValue <TriggeredBehaviour.LegacyState>(configNode, "onState", x =>
                    {
                        switch (x)
                        {
                        case TriggeredBehaviour.LegacyState.ContractAccepted:
                            onState = TriggeredBehaviour.State.CONTRACT_ACCEPTED;
                            break;

                        case TriggeredBehaviour.LegacyState.ContractCompletedFailure:
                            onState = TriggeredBehaviour.State.CONTRACT_FAILED;
                            break;

                        case TriggeredBehaviour.LegacyState.ContractCompletedSuccess:
                            onState = TriggeredBehaviour.State.CONTRACT_SUCCESS;
                            break;

                        case TriggeredBehaviour.LegacyState.ParameterCompleted:
                            onState = TriggeredBehaviour.State.PARAMETER_COMPLETED;
                            break;
                        }
                    }, this);
                }
                catch
                {
                    valid &= ConfigNodeUtil.ParseValue <TriggeredBehaviour.State>(configNode, "onState", x => onState = x, this, TriggeredBehaviour.State.PARAMETER_COMPLETED);
                }
            }
            else
            {
                valid &= ConfigNodeUtil.ParseValue <TriggeredBehaviour.State>(configNode, "onState", x => onState = x, this, TriggeredBehaviour.State.PARAMETER_COMPLETED);
            }

            valid &= ConfigNodeUtil.ParseValue <bool?>(configNode, "owned", x => owned = x.Value, this, (bool?)true);
            valid &= ConfigNodeUtil.ParseValue <List <string> >(configNode, "vessel", x => vessels = x, this);

            if (onState == TriggeredBehaviour.State.PARAMETER_COMPLETED || onState == TriggeredBehaviour.State.PARAMETER_FAILED)
            {
                valid &= ConfigNodeUtil.ParseValue <List <string> >(configNode, "parameter", x => parameter = x, this, new List <string>());
            }

            return(valid);
        }
        public override bool Load(ConfigNode configNode)
        {
            // Load base class
            bool valid = base.Load(configNode);

            if (configNode.HasValue("onState"))
            {
                try
                {
                    Enum.Parse(typeof(TriggeredBehaviour.LegacyState), configNode.GetValue("onState"));
                    LoggingUtil.LogWarning(this, "Warning, values for onState have changed - attempting to load using obsolete values.");
                    valid &= ConfigNodeUtil.ParseValue<TriggeredBehaviour.LegacyState>(configNode, "onState", x =>
                    {
                        switch (x)
                        {
                            case TriggeredBehaviour.LegacyState.ContractAccepted:
                                onState = TriggeredBehaviour.State.CONTRACT_ACCEPTED;
                                break;
                            case TriggeredBehaviour.LegacyState.ContractCompletedFailure:
                                onState = TriggeredBehaviour.State.CONTRACT_FAILED;
                                break;
                            case TriggeredBehaviour.LegacyState.ContractCompletedSuccess:
                                onState = TriggeredBehaviour.State.CONTRACT_SUCCESS;
                                break;
                            case TriggeredBehaviour.LegacyState.ParameterCompleted:
                                onState = TriggeredBehaviour.State.PARAMETER_COMPLETED;
                                break;
                        }
                    }, this);
                }
                catch
                {
                    valid &= ConfigNodeUtil.ParseValue<TriggeredBehaviour.State>(configNode, "onState", x => onState = x, this, TriggeredBehaviour.State.PARAMETER_COMPLETED);
                }
            }
            else
            {
                valid &= ConfigNodeUtil.ParseValue<TriggeredBehaviour.State>(configNode, "onState", x => onState = x, this, TriggeredBehaviour.State.PARAMETER_COMPLETED);
            }

            valid &= ConfigNodeUtil.ParseValue<bool?>(configNode, "owned", x => owned = x.Value, this, (bool?)true);
            valid &= ConfigNodeUtil.ParseValue<List<string>>(configNode, "vessel", x => vessels = x, this);

            if (onState == TriggeredBehaviour.State.PARAMETER_COMPLETED || onState == TriggeredBehaviour.State.PARAMETER_FAILED)
            {
                valid &= ConfigNodeUtil.ParseValue<List<string>>(configNode, "parameter", x => parameter = x, this, new List<string>());
            }

            return valid;
        }