public override bool InActionUpdate(Action_GS.ACTION_RESULT current_action_result, Action_GS.ACTION_STATE current_action_state)
    {
        if (global_blackboard.GetValue <int>("current_rock") >= global_blackboard.GetValue <int>("rock_goal"))
        {
            if (blackboard.GetValue <int>("rock") > 0 || going_for_rock)
            {
                blackboard.SetVariable <int>("rock", 0);
                blackboard.SetVariable <Vector3>("target_position", new Vector3(0.0f, 0.0f, 0.0f));
                blackboard.SetVariable <bool>("in_pos", false);
                going_for_rock = false;
                targeted_slot.slot_available = true;
                targeted_slot = null;

                return(false);
            }
        }

        if (global_blackboard.GetValue <int>("current_diamond") >= global_blackboard.GetValue <int>("diamond_goal"))
        {
            if (blackboard.GetValue <int>("diamond") > 0 || going_for_diamond)
            {
                blackboard.SetVariable <int>("diamond", 0);
                blackboard.SetVariable <Vector3>("target_position", new Vector3(0.0f, 0.0f, 0.0f));
                blackboard.SetVariable <bool>("in_pos", false);
                going_for_diamond = false;

                if (targeted_slot != null)
                {
                    targeted_slot.slot_available = true;
                    targeted_slot = null;
                }

                return(false);
            }
        }
        return(true);
    }
 public virtual bool InActionUpdate(Action_GS.ACTION_RESULT current_action_result, Action_GS.ACTION_STATE current_action_state)
 {
     //InAction
     //Here we code the actions that the agent should do depending of the results/state generated from the previous actions
     return(true);
 }