This commit is contained in:
jeffwadsworth 2020-01-20 17:53:30 -06:00
parent eb730d4fc3
commit f2dab4415a

View file

@ -12,11 +12,11 @@ import mage.filter.FilterCard;
import mage.filter.StaticFilters;
import mage.game.Game;
import mage.players.Player;
import mage.target.TargetCard;
import mage.target.common.TargetCardInHand;
import mage.target.common.TargetOpponent;
import java.util.UUID;
import mage.filter.common.FilterNonlandCard;
import mage.target.TargetCard;
/**
* @author TheElk801
@ -26,7 +26,9 @@ public final class SpectersShriek extends CardImpl {
public SpectersShriek(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{B}");
// Target opponent reveals their hand. You may choose a nonland card from it. If you do, that player exiles that card. If a nonblack card is exiled this way, exile a card from your hand.
// Target opponent reveals their hand. You may choose a nonland card
// from it. If you do, that player exiles that card. If a nonblack
// card is exiled this way, exile a card from your hand.
this.getSpellAbility().addEffect(new SpectersShriekEffect());
this.getSpellAbility().addTarget(new TargetOpponent());
}
@ -47,8 +49,8 @@ class SpectersShriekEffect extends OneShotEffect {
SpectersShriekEffect() {
super(Outcome.Benefit);
staticText = "Target opponent reveals their hand. You may choose a nonland card from it. If you do, " +
"that player exiles that card. If a nonblack card is exiled this way, exile a card from your hand.";
staticText = "Target opponent reveals their hand. You may choose a nonland card from it. If you do, "
+ "that player exiles that card. If a nonblack card is exiled this way, exile a card from your hand.";
}
private SpectersShriekEffect(final SpectersShriekEffect effect) {
@ -64,17 +66,20 @@ class SpectersShriekEffect extends OneShotEffect {
public boolean apply(Game game, Ability source) {
Player controller = game.getPlayer(source.getControllerId());
Player player = game.getPlayer(source.getFirstTarget());
if (controller == null || player == null) {
if (controller == null
|| player == null) {
return false;
}
player.revealCards(source, player.getHand(), game);
if (player.getHand().count(StaticFilters.FILTER_CARD_NON_LAND, game) == 0
|| !controller.chooseUse(outcome, "Exile a card from " + player.getName() + "'s hand?", source, game)) {
return true;
|| !controller.chooseUse(Outcome.Benefit, "Exile a card from "
+ player.getName() + "'s hand?", source, game)) {
return false;
}
TargetCard target = new TargetCardInHand(StaticFilters.FILTER_CARD_NON_LAND);
TargetCard target = new TargetCard(Zone.HAND, new FilterNonlandCard());
target.setNotTarget(true);
if (!controller.choose(outcome, player.getHand(), target, game)) {
target.setRequired(false);
if (!controller.chooseTarget(Outcome.Benefit, player.getHand(), target, source, game)) {
return false;
}
Card card = game.getCard(target.getFirstTarget());
@ -83,12 +88,13 @@ class SpectersShriekEffect extends OneShotEffect {
}
boolean isBlack = card.getColor(game).isBlack();
player.moveCards(card, Zone.EXILED, source, game);
if (isBlack || controller.getHand().isEmpty()) {
if (isBlack
|| controller.getHand().isEmpty()) {
return true;
}
target = new TargetCardInHand(filter);
target.setNotTarget(true);
return controller.choose(outcome, controller.getHand(), target, game)
return controller.choose(Outcome.Detriment, controller.getHand(), target, game)
&& controller.moveCards(game.getCard(target.getFirstTarget()), Zone.EXILED, source, game);
}
}
}