public override bool IsMissionFinished(bool forceStep)
    {
        if (this.attackKaijuMessageId != 0UL)
        {
            EvaluableMessage_AttackAndTameKaiju evaluableMessage_AttackAndTameKaiju = base.AIPlayer.Blackboard.GetMessage(this.attackKaijuMessageId) as EvaluableMessage_AttackAndTameKaiju;
            if (evaluableMessage_AttackAndTameKaiju != null && (evaluableMessage_AttackAndTameKaiju.State == BlackboardMessage.StateValue.Message_Canceled || evaluableMessage_AttackAndTameKaiju.State == BlackboardMessage.StateValue.Message_Failed || evaluableMessage_AttackAndTameKaiju.State == BlackboardMessage.StateValue.Message_Success))
            {
                return(true);
            }
        }
        GlobalObjectiveMessage globalObjectiveMessage;

        return(base.GlobalObjectiveID == 0UL || base.AIPlayer == null || !base.AIPlayer.Blackboard.TryGetMessage <GlobalObjectiveMessage>(base.GlobalObjectiveID, out globalObjectiveMessage) || (globalObjectiveMessage.State == BlackboardMessage.StateValue.Message_Canceled || globalObjectiveMessage.State == BlackboardMessage.StateValue.Message_Failed));
    }
    private void SendAttackKaijuAction()
    {
        EvaluableMessage_AttackAndTameKaiju evaluableMessage_AttackAndTameKaiju = base.AIPlayer.Blackboard.FindFirst <EvaluableMessage_AttackAndTameKaiju>(BlackboardLayerID.Empire, (EvaluableMessage_AttackAndTameKaiju match) => match.RegionIndex == base.RegionIndex && match.KaijuGUID == this.kaiju.GUID);

        if (evaluableMessage_AttackAndTameKaiju == null || evaluableMessage_AttackAndTameKaiju.EvaluationState == EvaluableMessage.EvaluableMessageState.Cancel)
        {
            evaluableMessage_AttackAndTameKaiju = new EvaluableMessage_AttackAndTameKaiju(base.RegionIndex, this.kaiju.GUID);
            this.attackKaijuMessageId           = base.AIPlayer.Blackboard.AddMessage(evaluableMessage_AttackAndTameKaiju);
        }
        else
        {
            this.attackKaijuMessageId = evaluableMessage_AttackAndTameKaiju.ID;
        }
        evaluableMessage_AttackAndTameKaiju.TimeOut = 1;
        evaluableMessage_AttackAndTameKaiju.SetInterest(base.GlobalPriority, base.LocalPriority);
    }
    public override void Release()
    {
        GlobalObjectiveMessage globalObjectiveMessage;

        if (this.IsMissionFinished(false) && base.AIPlayer.Blackboard.TryGetMessage <GlobalObjectiveMessage>(base.GlobalObjectiveID, out globalObjectiveMessage))
        {
            globalObjectiveMessage.State = BlackboardMessage.StateValue.Message_Canceled;
        }
        if (this.attackKaijuMessageId != 0UL)
        {
            EvaluableMessage_AttackAndTameKaiju evaluableMessage_AttackAndTameKaiju = base.AIPlayer.Blackboard.GetMessage(this.attackKaijuMessageId) as EvaluableMessage_AttackAndTameKaiju;
            if (evaluableMessage_AttackAndTameKaiju != null)
            {
                if (evaluableMessage_AttackAndTameKaiju.EvaluationState == EvaluableMessage.EvaluableMessageState.Validate || evaluableMessage_AttackAndTameKaiju.EvaluationState == EvaluableMessage.EvaluableMessageState.Obtaining || evaluableMessage_AttackAndTameKaiju.EvaluationState == EvaluableMessage.EvaluableMessageState.Pending)
                {
                    evaluableMessage_AttackAndTameKaiju.Cancel();
                }
                base.AIPlayer.Blackboard.CancelMessage(this.attackKaijuMessageId);
            }
        }
        this.kaiju = null;
        base.Release();
    }
    public string GetAttackKaijuActionState()
    {
        if (this.attackKaijuMessageId == 0UL)
        {
            return("No Kaiju Attack Action");
        }
        EvaluableMessage_AttackAndTameKaiju evaluableMessage_AttackAndTameKaiju = base.AIPlayer.Blackboard.FindFirst <EvaluableMessage_AttackAndTameKaiju>(BlackboardLayerID.Empire, (EvaluableMessage_AttackAndTameKaiju match) => match.RegionIndex == base.RegionIndex && match.KaijuGUID == base.SubObjectiveGuid && match.AccountTag == AILayer_AccountManager.MilitaryAccountName);

        if (evaluableMessage_AttackAndTameKaiju == null)
        {
            return("Strangely Attack Kaiju Action is no longer valid");
        }
        string text = "Attack Kaiju Action State = " + evaluableMessage_AttackAndTameKaiju.EvaluationState.ToString();

        if (evaluableMessage_AttackAndTameKaiju.ChosenBuyEvaluation != null)
        {
            text = text + " Purchased for " + evaluableMessage_AttackAndTameKaiju.ChosenBuyEvaluation.DustCost;
        }
        else
        {
            text += " Evaluating Purchase";
        }
        return(text);
    }