@Override public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana, Cost costToPay) { Permanent permanent = game.getPermanent(sourceId); Player controller = game.getPlayer(controllerId); if (permanent == null || controller == null) { return false; } controller.moveCards(permanent, Zone.HAND, ability, game); paid = true; return paid; }
@Override public boolean canPay(Ability ability, UUID sourceId, UUID controllerId, Game game) { Player controller = game.getPlayer(controllerId); if(controller == null) { return false; } return controller.getGraveyard().size() >= amount; }
@Override public boolean apply(Game game, Ability source) { int damage = 0; for (UUID opponentId: game.getOpponents(source.getControllerId())) { damage += game.getPlayer(opponentId).damage(3, source.getSourceId(), game, false, true); } game.getPlayer(source.getControllerId()).gainLife(damage, game, source); return true; }
@Override public boolean apply(Game game, Ability source) { Player player = game.getPlayer(source.getControllerId()); if (player != null && player.getLife() <= 10) { player.gainLife(1, game, source); return true; } return false; }
private String getTargetName(UUID objectId, Game game) { MageObject object = game.getObject(objectId); if (object != null) { return object.getLogName(); } Player player = game.getPlayer(objectId); if (player != null) { return player.getLogName(); } return null; } }
@Override public boolean apply(Game game, Ability source) { Player player = game.getPlayer(source.getControllerId()); if (player != null) { player.gainLife(player.getLife(), game, source); return true; } return false; }
@Override public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana, Cost costToPay) { Player controller = game.getPlayer(controllerId); if (controller != null) { controller.moveCards(controller.getLibrary().getTopCards(game, amount), Zone.EXILED, ability, game); paid = true; } return paid; }
@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 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 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 sourcePlayer = game.getPlayer(source.getControllerId()); for (UUID playerId : game.getState().getPlayersInRange(sourcePlayer.getId(), game)) { Player player = game.getPlayer(playerId); if (player != null) { player.moveCards(player.getLibrary().getTopCards(game, 5), Zone.GRAVEYARD, source, game); } } return true; } }
@Override public boolean apply(Game game, Ability source) { Player player = game.getPlayer(source.getControllerId()); if (player != null) { player.getManaPool().addMana(getMana(game, source), game, source); } return true; }
@Override public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game) { Player player = game.getPlayer(blocker.getControllerId()); if (player != null) { if (game.getBattlefield().countAll(filter, player.getId(), game) > 0) { return false; } } return true; }
@Override public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana, Cost costToPay) { Player player = game.getPlayer(controllerId); if (player != null && player.getLibrary().size() >= numberOfCards) { paid = true; this.cardsMovedToGraveyard.addAll(player.getLibrary().getTopCards(game, numberOfCards)); player.moveCards(player.getLibrary().getTopCards(game, numberOfCards), Zone.GRAVEYARD, ability, game); } return paid; }
@Override public boolean apply(Game game, Ability source) { for (UUID opponentId : game.getOpponents(source.getControllerId())) { Player opponent = game.getPlayer(opponentId); if (opponent != null) { opponent.moveCards(opponent.getLibrary().getTopCards(game, 7), Zone.GRAVEYARD, source, game); } } return true; }
@Override public boolean apply(Game game, Ability source) { Player targetPlayer = game.getPlayer(source.getFirstTarget()); if (targetPlayer != null) { int amount = 2 * game.getBattlefield().countAll(filter, targetPlayer.getId(), game); targetPlayer.damage(amount, source.getSourceId(), game, false, true); return true; } return false; } }
@Override public boolean apply(Game game, Ability source) { Player controller = game.getPlayer(source.getControllerId()); if (controller != null) { CreateTokenEffect effect = new CreateTokenEffect(new ElementalToken("OGW", 1, true), 2); effect.apply(game, source); effect.exileTokensCreatedAtNextEndStep(game, source); return true; } return false; } }
@Override public boolean apply(Game game, Ability source) { Permanent target = game.getPermanent(targetPointer.getFirst(game, source)); if (target != null) { Player player = game.getPlayer(target.getControllerId()); if (player != null) { int power = target.getPower().getValue(); player.damage(power, source.getId(), game, false, true); } } return false; }
@Override public boolean apply(Game game, Ability source) { Permanent enchantment = game.getPermanentOrLKIBattlefield(source.getSourceId()); if (enchantment != null && enchantment.getAttachedTo() != null) { Player defender = game.getPlayer(game.getCombat().getDefendingPlayerId(enchantment.getAttachedTo(), game)); if (defender != null) { defender.loseLife(amount.calculate(game, source, this), game, false); } } return true; }
@Override public boolean apply(Game game, Ability source) { Player controller = game.getPlayer(source.getControllerId()); if (controller != null) { int result = controller.rollDice(game, 6); if (result == 6) { new SacrificeSourceEffect().apply(game, source); return (new CreateTokenEffect(new GiantChickenToken(), 1)).apply(game, source); } } return false; }