Done some rework to Wu Spy.

This commit is contained in:
LevelX2 2016-03-12 11:58:53 +01:00
parent 9e29fdafcd
commit bb229156f5

View file

@ -66,7 +66,7 @@ public class WuSpy extends CardImpl {
Ability ability = new EntersBattlefieldTriggeredAbility(new WuSpyEffect(), false); Ability ability = new EntersBattlefieldTriggeredAbility(new WuSpyEffect(), false);
ability.addTarget(new TargetPlayer()); ability.addTarget(new TargetPlayer());
this.addAbility(ability); this.addAbility(ability);
} }
public WuSpy(final WuSpy card) { public WuSpy(final WuSpy card) {
@ -80,40 +80,35 @@ public class WuSpy extends CardImpl {
} }
class WuSpyEffect extends OneShotEffect { class WuSpyEffect extends OneShotEffect {
WuSpyEffect() { WuSpyEffect() {
super(Outcome.Exile); super(Outcome.Exile);
this.staticText = "Look at the top two cards of target player's library. Put one of them into his or her graveyard"; this.staticText = "look at the top two cards of target player's library. Put one of them into his or her graveyard";
} }
WuSpyEffect(final WuSpyEffect effect) { WuSpyEffect(final WuSpyEffect effect) {
super(effect); super(effect);
} }
@Override @Override
public WuSpyEffect copy() { public WuSpyEffect copy() {
return new WuSpyEffect(this); return new WuSpyEffect(this);
} }
@Override @Override
public boolean apply(Game game, Ability source) { public boolean apply(Game game, Ability source) {
Player controller = game.getPlayer(source.getControllerId()); Player controller = game.getPlayer(source.getControllerId());
Player opponent = game.getPlayer(this.getTargetPointer().getFirst(game, source)); Player opponent = game.getPlayer(this.getTargetPointer().getFirst(game, source));
if (controller != null && opponent != null) { if (controller != null && opponent != null) {
Cards cards = new CardsImpl(); Cards cards = new CardsImpl();
int numLooked = Math.min(2, opponent.getLibrary().size()); cards.addAll(opponent.getLibrary().getTopCards(game, 2));
if (numLooked > 0) { if (!cards.isEmpty()) {
for (int i = 0; i < numLooked; i++) { TargetCard target = new TargetCardInLibrary(new FilterCard("card to put into graveyard"));
cards.add(opponent.getLibrary().removeFromTop(game)); controller.choose(Outcome.Benefit, cards, target, game);
}
TargetCard target = new TargetCardInLibrary(new FilterCard("card to discard"));
controller.choose(Outcome.Discard, cards, target, game);
Card card = cards.get(target.getFirstTarget(), game); Card card = cards.get(target.getFirstTarget(), game);
cards.remove(card); if (card != null) {
opponent.moveCardToGraveyardWithInfo(card, source.getSourceId(), game, Zone.LIBRARY); cards.remove(card);
if (cards.size() == 1) { controller.moveCards(card, Zone.GRAVEYARD, source, game);
card = cards.get(cards.iterator().next(), game);
opponent.moveCardToLibraryWithInfo(card, source.getSourceId(), game, Zone.LIBRARY, true, false);
} }
} }
return true; return true;