public CardList getShopCards(int numberWins, int questLevel) {
        CardList list = new CardList();

        // Number of Packs granted
        int levelPacks = questLevel > 0 ? 8 / questLevel / 2 : 4;
        int winPacks = numberWins / 15;

        int totalPacks = Math.min(levelPacks + winPacks, 6);

        for (int i = 0; i < totalPacks; i++) {
            // TODO: Balance CardPool Availability
            // Each "Pack" yields 1 Rare, 3 Uncommon, 7 Commons
            list.add(getRandomCard(rareList));
            for (int j = 0; j < 7; j++) {
                if (j < 3)
                    list.add(getRandomCard(uncommonList));

                list.add(getRandomCard(commonList));
            }
        }

        for (int i = 0; i < 10; i++) {
            // Add basic land availability
            list.add(AllZone.getCardFactory().getCard("Forest", AllZone.getHumanPlayer()));
            list.add(AllZone.getCardFactory().getCard("Island", AllZone.getHumanPlayer()));
            list.add(AllZone.getCardFactory().getCard("Plains", AllZone.getHumanPlayer()));
            list.add(AllZone.getCardFactory().getCard("Mountain", AllZone.getHumanPlayer()));
            list.add(AllZone.getCardFactory().getCard("Swamp", AllZone.getHumanPlayer()));
            if (i < 5) {
                list.add(AllZone.getCardFactory().getCard("Snow-Covered Forest", AllZone.getHumanPlayer()));
                list.add(AllZone.getCardFactory().getCard("Snow-Covered Island", AllZone.getHumanPlayer()));
                list.add(AllZone.getCardFactory().getCard("Snow-Covered Plains", AllZone.getHumanPlayer()));
                list.add(AllZone.getCardFactory().getCard("Snow-Covered Mountain", AllZone.getHumanPlayer()));
                list.add(AllZone.getCardFactory().getCard("Snow-Covered Swamp", AllZone.getHumanPlayer()));
            }
        }

        return list;
    }