@Override public boolean canPay(Ability ability, UUID sourceId, UUID controllerId, Game game) { Player controller = game.getPlayer(controllerId); return (controller != null && !controller.getHand().isEmpty()); }
@Override public boolean apply(Game game, Ability source) { Player player = game.getPlayer(targetPointer.getFirst(game, source)); if (player != null) { int count = player.getHand().size(); player.putCardsOnBottomOfLibrary(player.getHand(), game, source, true); player.drawCards(count, game); } return true; }
@Override public boolean apply(Game game, Ability source) { Player player = game.getPlayer(game.getActivePlayerId()); return player != null && player.getHand().size() <= 2; } }
@Override public int calculate(Game game, Ability sourceAbility, Effect effect) { if (sourceAbility != null) { Player player = game.getPlayer(sourceAbility.getFirstTarget()); if (player != null) { return player.getHand().size(); } } return 0; }
@Override public boolean canPay(Ability ability, UUID sourceId, UUID controllerId, Game game) { Player player = game.getPlayer(controllerId); if (player != null && player.getHand().count(filter, game) > 0) { return true; } if (mana.canPay(ability, sourceId, controllerId, game)) { return true; } return false; }
@Override public int calculate(Game game, Ability sourceAbility, Effect effect) { if (sourceAbility != null) { Player controller = game.getPlayer(sourceAbility.getControllerId()); if (controller != null) { return controller.getHand().size(); } } return 0; }
@Override public int getMaxValue(Ability source, Game game) { Player controller = game.getPlayer(source.getControllerId()); if (controller != null) { return controller.getHand().count(filter, game); } return 0; }
@Override public boolean applies(Permanent permanent, Ability source, Game game) { if (permanent.getId().equals(source.getSourceId())) { Player controller = game.getPlayer(source.getControllerId()); if (controller != null) { return (controller.getHand().size() < 7); } return true; } // do not apply to other creatures. return false; } }
@Override public boolean apply(Game game, Ability source) { Player player = game.getPlayer(source.getControllerId()); if (player != null) { for (Card card : player.getHand().getCards(game)) { player.discard(card, source, game); } return true; } return false; } }
@Override public boolean apply(Game game, Ability source) { boolean result = false; Set<UUID> opponents = game.getOpponents(source.getControllerId()); for (UUID opponentId : opponents) { result |= game.getPlayer(opponentId).getHand().isEmpty(); } return result; } }
@Override public boolean apply(Game game, Ability source) { Player controller = game.getPlayer(source.getControllerId()); if (controller != null) { controller.drawCards(7 - controller.getHand().size(), game); return true; } return false; } }
@Override public boolean checkTrigger(GameEvent event, Game game) { if (game.getOpponents(controllerId).contains(event.getPlayerId())) { Player opponent = game.getPlayer(event.getPlayerId()); if (opponent != null && opponent.getHand().isEmpty()) { opponent.loseLife(2, game, false); return true; } } return false; }
@Override public boolean apply(Game game, Ability source) { Player controller = game.getPlayer(source.getControllerId()); Player player = game.getPlayer(targetPointer.getFirst(game, source)); if (player != null && controller != null) { controller.lookAtCards("Walker of Secret Ways", player.getHand(), game); } return true; }
@Override public int calculate(Game game, Ability sourceAbility, Effect effect) { int count = 0; for (UUID playerId : game.getState().getPlayersInRange(sourceAbility.getControllerId(), game)) { Player player = game.getPlayer(playerId); if (player != null) { count += player.getHand().size(); } } return count; }
@Override public boolean apply(Game game, Ability source) { Player targetPlayer = game.getPlayer(getTargetPointer().getFirst(game, source)); if (targetPlayer != null) { targetPlayer.damage(targetPlayer.getHand().size(), source.getSourceId(), game, false, true); return true; } return false; } }
@Override public boolean apply(Game game, Ability source) { Player player = game.getPlayer(source.getControllerId()); MageObject sourceObject = game.getObject(source.getSourceId()); if (player != null && sourceObject != null) { player.revealCards(sourceObject.getIdName(), player.getHand(), game); return true; } return false; }
@Override public boolean apply(Game game, Ability source) { JandorsRingWatcher watcher = game.getState().getWatcher(JandorsRingWatcher.class); return watcher != null && watcher.lastDrawnCards != null && game.getPlayer(source.getControllerId()).getHand().contains(watcher.getLastDrewCard(source.getControllerId())); }
@Override public void adjustCosts(Ability ability, Game game) { if (ability.getAbilityType() == AbilityType.SPELL) { Player controller = game.getPlayer(ability.getControllerId()); if (controller != null) { if (controller.getHand().count(filter, game) > 0) { ability.addCost(new RevealTargetFromHandCost(new TargetCardInHand(0, 1, filter))); } } } }
@Override public boolean apply(Game game, Ability source) { Player controller = game.getPlayer(source.getControllerId()); Permanent permanent = game.getPermanent(getTargetPointer().getFirst(game, source)); if (controller != null) { if (permanent.getConvertedManaCost() <= controller.getHand().size()) { return permanent.destroy(source.getSourceId(), game, false); } } return false; } }
@Override public boolean apply(Game game, Ability source) { Player controller = game.getPlayer(source.getControllerId()); if (controller != null) { TargetCard target = new TargetCardInHand(0, 2, new FilterLandCard("up to two land cards to put onto the battlefield tapped")); controller.chooseTarget(outcome, controller.getHand(), target, source, game); return controller.moveCards(new CardsImpl(target.getTargets()).getCards(game), Zone.BATTLEFIELD, source, game, true, false, false, null); } return false; }