public void resolve() {
                            CardList topOfLibrary = AllZoneUtil.getPlayerCardsInLibrary(controller);
                            CardList revealed = new CardList();
                            int RippleNumber = RippleCount;
                            if (topOfLibrary.size() == 0) return;
                            int RippleMax = 10; // Shouldn't Have more than Ripple 10, seeing as no cards exist with a ripple greater than 4
                            Card[] RippledCards = new Card[RippleMax];
                            Card crd;
                            if (topOfLibrary.size() < RippleNumber) RippleNumber = topOfLibrary.size();

                            for (int i = 0; i < RippleNumber; i++) {
                                crd = topOfLibrary.get(i);
                                revealed.add(crd);
                                if (crd.getName().equals(RippleCard.getName())) RippledCards[i] = crd;
                            }//For
                            GuiUtils.getChoiceOptional("Revealed cards:", revealed.toArray());
                            for (int i = 0; i < RippleMax; i++) {
                                if (RippledCards[i] != null
                                        && !RippledCards[i].isUnCastable()) {

                                    if (RippledCards[i].getController().isHuman()) {
                                        Object[] possibleValues = {"Yes", "No"};
                                        Object q = JOptionPane.showOptionDialog(null, "Cast " + RippledCards[i].getName() + "?", "Ripple",
                                                JOptionPane.DEFAULT_OPTION, JOptionPane.INFORMATION_MESSAGE,
                                                null, possibleValues, possibleValues[0]);
                                        if (q.equals(0)) {
                                            AllZone.getGameAction().playCardNoCost(RippledCards[i]);
                                            revealed.remove(RippledCards[i]);
                                        }
                                    } else //computer
                                    {
                                        ArrayList<SpellAbility> choices = RippledCards[i].getBasicSpells();

                                        for (SpellAbility sa : choices) {
                                            if (sa.canPlayAI()
                                                    && !sa.getSourceCard().isType("Legendary")) {
                                                ComputerUtil.playStackFree(sa);
                                                revealed.remove(RippledCards[i]);
                                                break;
                                            }
                                        }
                                    }
                                }
                            }
                            revealed.shuffle();
                            for (Card bottom : revealed) {
                                AllZone.getGameAction().moveToBottomOfLibrary(bottom);
                            }
                        }