@Override
    protected void doAction() {
        //won't play multiples
        if (this.getTurnPlays() >= 1) {
            this.endPlay();
            return;
        }

        //tries to play eight matching suite
        ArrayList<Card> cards = this.getCardsOfValue(Card.EIGHT);
        if (!cards.isEmpty()) {
            this.playEight(cards.get((int)(Math.random()*cards.size())), Game.linkedGet().getTopCard().suite);
            return;
        }

        //tries to match suite
        cards = this.getCardsOfSuite(Game.linkedGet().getTopCard().suite);
        if (!cards.isEmpty()) {
            this.playCard(cards.get((int)(Math.random()*cards.size())));
            return;
        }

        //tries to match value
        cards = this.getCardsOfValue(Game.linkedGet().getTopCard().value);
        if (!cards.isEmpty()) {
            this.playCard(cards.get((int)(Math.random()*cards.size())));
            return;
        }

        if (this.canEndTurn()) {
            this.endPlay();
            return;
        }

        if (this.canDraw()) {
            this.drawCard();
            return;
        }

        //Should be unreachable
        System.out.println("Game.Players.Player stuck: " + this.name);
    }