@Override public List<Mana> getNetMana(Game game, Ability source) { Player controller = game.getPlayer(source.getControllerId()); if (controller != null) { if (controller.isTopCardRevealed()) { Card card = controller.getLibrary().getFromTop(game); if (card != null) { List<Mana> netMana = card.getManaCost().getManaOptions(); for (Mana mana : netMana) { mana.setColorless(0); mana.setGeneric(0); } return netMana; } } } return null; } }
@Override public boolean apply(Game game, Ability source) { Player controller = game.getPlayer(source.getControllerId()); if (controller == null) { return false; } // take cards from library and look at them boolean topCardRevealed = controller.isTopCardRevealed(); controller.setTopCardRevealed(false); Cards cards = new CardsImpl(controller.getLibrary().getTopCards(game, this.numberOfCards.calculate(game, source, this))); controller.lookAtCards(source, null, cards, game); this.actionWithSelectedCards(cards, game, source); this.putCardsBack(source, controller, cards, game); controller.setTopCardRevealed(topCardRevealed); this.mayShuffle(controller, source, game); return true; }
this.alternativeSourceCosts.addAll(player.getAlternativeSourceCosts()); this.topCardRevealed = player.isTopCardRevealed(); this.playersUnderYourControl.clear(); this.playersUnderYourControl.addAll(player.getPlayersUnderYourControl());
/** * Draw a card if possible (there is no replacement effect that prevent us * from drawing). Fire event about card drawn. * * @param game * @return */ protected int drawCard(Game game) { GameEvent event = GameEvent.getEvent(GameEvent.EventType.DRAW_CARD, player.getId(), player.getId()); event.addAppliedEffects(appliedEffects); if (!game.replaceEvent(event)) { Card card = player.getLibrary().removeFromTop(game); if (card != null) { drawnCards.add(card); card.moveToZone(Zone.HAND, null, game, false); if (player.isTopCardRevealed()) { game.fireInformEvent(player.getLogName() + " draws a revealed card (" + card.getLogName() + ')'); } game.fireEvent(GameEvent.getEvent(GameEvent.EventType.DREW_CARD, card.getId(), player.getId())); return ArtificialScoringSystem.inst.getCardScore(card); } } return NEGATIVE_VALUE; }
Card cardOnTop = (player.isTopCardRevealed() && player.getLibrary().hasCards()) ? player.getLibrary().getFromTop(game) : null; this.topCard = cardOnTop != null ? new CardView(cardOnTop) : null;
score += value; if (!player.isTopCardRevealed() && numDrawn > 0) { game.fireInformEvent(player.getLogName() + " draws " + CardUtil.numberToText(numDrawn, "a") + " card" + (numDrawn > 1 ? "s" : ""));
return false; boolean revealed = opponent.isTopCardRevealed(); // by looking at the cards with fateseal you have not to reveal the next card opponent.setTopCardRevealed(false); Cards cards = new CardsImpl();