public void GoToNextBase(BaseEnum currentBase, bool isAutomaticCommand = false)
    {
        Debug.Log(this.name + " go to next base");
        this.IsStaying = false;

        PlayersTurnManager playersTurnManager = GameUtils.FetchPlayersTurnManager();

        playersTurnManager.UpdatePlayerTurnAvailability(this.gameObject.name, TurnAvailabilityEnum.WAITING);

        Vector3 nextPosition = this.GetNextBasePosition(currentBase);

        this.Target         = nextPosition;
        this.EnableMovement = true;

        GameManager gameManager = GameUtils.FetchGameManager();

        if (!isAutomaticCommand)
        {
            Debug.Log(this.name + " proceed manually");
            this.CalculateNextAction();
        }
        else if (isAutomaticCommand && gameManager.AttackTeamRunnerList.Count > 1)
        {
            if (this.gameObject.Equals(playersTurnManager.GetNextRunnerTakingAction()))
            {
                playersTurnManager.IsSkipNextRunnerTurnEnabled = true;
            }

            Debug.Log(this.name + " proceed automaticaly");

            playersTurnManager.TurnState      = TurnStateEnum.RUNNER_TURN;
            PlayersTurnManager.IsCommandPhase = true;
        }
    }