@Override
public boolean apply(Game game, Ability source) {
Player opponent = game.getPlayer(source.getFirstTarget());
if (opponent != null) {
Cost cost = new SacrificeTargetCost(new TargetControlledCreaturePermanent());
if (cost.canPay(source, source.getSourceId(), opponent.getId(), game)
&& opponent.chooseUse(outcome, "Sacrifice a creature to prevent the card draw?", game)) {
if (cost.pay(source, game, source.getSourceId(), opponent.getId(), false)) {
return true;
}
}
cost = new PayLifeCost(3);
if (cost.canPay(source, source.getSourceId(), opponent.getId(), game)
&& opponent.chooseUse(outcome, "Pay 3 life to prevent the card draw?", game)) {
if (cost.pay(source, game, source.getSourceId(), opponent.getId(), false)) {
return true;
}
}
game.getPlayer(source.getControllerId()).drawCards(1, game);
return true;