@Override public boolean apply(Game game, Ability source) { if (source instanceof ActivatedAbilityImpl) { Player activator = game.getPlayer(((ActivatedAbilityImpl) source).getActivatorId()); if (activator != null) { activator.drawCards(1, game); return true; } } return false; } }
@Override public boolean apply(Game game, Ability source) { Player player = game.getPlayer(source.getControllerId()); if (player != null) { player.drawCards(2, game); putOnLibrary(player, source, game); return true; } return false; }
@Override public boolean replaceEvent(GameEvent event, Ability source, Game game) { Player controller = game.getPlayer(source.getControllerId()); Player opponent = game.getPlayer(event.getPlayerId()); if (controller != null && opponent != null) { controller.drawCards(1, game, event.getAppliedEffects()); opponent.drawCards(1, game, event.getAppliedEffects()); return true; } return false; }
@Override public boolean apply(Game game, Ability source) { Player player = game.getPlayer(source.getControllerId()); if (player != null) { player.drawCards(3, game); putOnLibrary(player, source, game); return true; } return false; }
@Override public boolean apply(Game game, Ability source) { Player targetPlayer = game.getPlayer(targetPointer.getFirst(game, source)); if (targetPlayer != null) { targetPlayer.drawCards(1, game); targetPlayer.discard(1, false, source, game); return true; } return false; }
@Override public boolean apply(Game game, Ability source) { Player player = game.getPlayer(source.getControllerId()); if (player != null) { player.drawCards(1, game); putOnLibrary(player, source, game); return true; } return false; }
@Override public boolean apply(Game game, Ability source) { Player player = game.getPlayer(source.getControllerId()); if (player != null && player.chooseUse(Outcome.DrawCard, "Do you wish to draw a card? If you do, discard a card.", source, game)) { if (player.drawCards(1, game) > 0) { player.discard(1, source, game); } return true; } return false; } }
@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 apply(Game game, Ability source) { Player targetPlayer = game.getPlayer(source.getFirstTarget()); if (targetPlayer != null) { targetPlayer.drawCards(targetPlayer.discard(2, false, source, game).size(), game); return true; } return false; } }
@Override public boolean replaceEvent(GameEvent event, Ability source, Game game) { Player player = game.getPlayer(event.getPlayerId()); if (player != null) { player.drawCards(2, game, event.getAppliedEffects()); player.loseLife(1, game, false); } return true; }
@Override public boolean apply(Game game, Ability source) { UUID defenderId = game.getCombat().getDefenderId(source.getSourceId()); Player defender = game.getPlayer(defenderId); if (defender != null) { if (defender.chooseUse(outcome, "Draw a card?", source, game)) { defender.drawCards(1, game); } } return false; } }
@Override public boolean apply(Game game, Ability source) { Player you = game.getPlayer(source.getControllerId()); Player damagedPlayer = game.getPlayer(targetPointer.getFirst(game, source)); if (damagedPlayer != null) { damagedPlayer.discard(1, source, game); } if (you != null) { you.drawCards(1, game); } return true; }
@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) { Permanent p = (Permanent) game.getLastKnownInformation(source.getSourceId(), Zone.BATTLEFIELD); Player player = game.getPlayer(source.getControllerId()); if (p != null && player != null) { int count = p.getCounters(game).getCount(CounterType.CHARGE); player.drawCards(count, game); return true; } return false; }
@Override public boolean apply(Game game, Ability source) { Player controller = game.getPlayer(source.getControllerId()); if (controller != null) { int creaturesControlled = game.getBattlefield().countAll(StaticFilters.FILTER_PERMANENT_CREATURE, controller.getId(), game); controller.drawCards(creaturesControlled, game); controller.loseLife(creaturesControlled, game, false); return true; } return false; } }
@Override public boolean apply(Game game, Ability source) { Player you = game.getPlayer(source.getControllerId()); if (you != null) { int count = you.getHand().size(); you.putCardsOnBottomOfLibrary(you.getHand(), game, source, true); you.drawCards(count, game); } return true; }
@Override public boolean apply(Game game, Ability source) { Player targetPlayer = game.getPlayer(targetPointer.getFirst(game, source)); if (targetPlayer != null) { targetPlayer.drawCards(source.getManaCostsToPay().getX(), game); targetPlayer.loseLife(source.getManaCostsToPay().getX(), game, false); return true; } return false; }
@Override public boolean apply(Game game, Ability source) { Player sourcePlayer = game.getPlayer(source.getControllerId()); game.getState().handleSimultaneousEvent(game); // needed here so state based triggered effects for (UUID playerId : game.getState().getPlayersInRange(sourcePlayer.getId(), game)) { Player player = game.getPlayer(playerId); if (player != null) { player.drawCards(7, game); } } return true; }
@Override public boolean apply(Game game, Ability source) { Player controller = game.getPlayer(source.getControllerId()); Spell spell = game.getStack().getSpell(getTargetPointer().getFirst(game, source)); if (controller != null && spell != null) { game.getStack().counter(source.getFirstTarget(), source.getSourceId(), game); controller.drawCards(spell.getConvertedManaCost(), game); return true; } return false; } }
@Override public boolean apply(Game game, Ability source) { Player player = game.getPlayer(source.getControllerId()); Player opponent = game.getPlayer(source.getFirstTarget()); if (opponent != null && player != null && opponent.getHand().size() > player.getHand().size()) { player.drawCards(opponent.getHand().size() - player.getHand().size(), game); return true; } return false; } }