* Crop Sigil - Fixed that it can't be activated without both a creature and land in the graveyard (fixes #2079 ).

This commit is contained in:
LevelX2 2016-07-15 14:25:25 +02:00
parent 97e44d1000
commit 88d66784df
4 changed files with 19 additions and 21 deletions

View file

@ -43,7 +43,7 @@ import mage.constants.Zone;
import mage.filter.FilterCard;
import mage.filter.predicate.mageobject.CardTypePredicate;
import mage.game.events.GameEvent;
import mage.target.common.TargetCardInGraveyard;
import mage.target.common.TargetCardInYourGraveyard;
/**
*
@ -71,10 +71,10 @@ public class CropSigil extends CardImpl {
Ability ability = new ConditionalActivatedAbility(Zone.BATTLEFIELD, new ReturnToHandTargetEffect(true, true), new ManaCostsImpl<>("{2}{G}"),
DeliriumCondition.getInstance(),
"<i>Delirium</i> &mdash; {2}{G}, Sacrifice {this}: Return up to one target creature card and up to one target land card from your graveyard to your hand. "
+ "Activate this ability only if there are four or more card types among cards in your graveyard");
+ "Activate this ability only if there are four or more card types among cards in your graveyard");
ability.addCost(new SacrificeSourceCost());
ability.addTarget(new TargetCardInGraveyard(0, 1, filterCreature));
ability.addTarget(new TargetCardInGraveyard(0, 1, filterLand));
ability.addTarget(new TargetCardInYourGraveyard(0, 1, filterCreature));
ability.addTarget(new TargetCardInYourGraveyard(0, 1, filterLand));
this.addAbility(ability);
}

View file

@ -24,21 +24,19 @@
* The views and conclusions contained in the software and documentation are those of the
* authors and should not be interpreted as representing official policies, either expressed
* or implied, of BetaSteward_at_googlemail.com.
*/
*/
package mage.target;
import mage.constants.Zone;
import mage.cards.Card;
import mage.cards.Cards;
import mage.filter.FilterCard;
import mage.game.Game;
import mage.players.Player;
import java.util.HashSet;
import java.util.Set;
import java.util.UUID;
import mage.cards.Card;
import mage.cards.Cards;
import mage.constants.Zone;
import mage.filter.FilterCard;
import mage.game.Game;
import mage.game.events.GameEvent;
import mage.players.Player;
/**
*
@ -87,9 +85,12 @@ public class TargetCard extends TargetObject {
@Override
public boolean canChoose(UUID sourceId, UUID sourceControllerId, Game game) {
int possibleTargets = 0;
for (UUID playerId: game.getState().getPlayersInRange(sourceControllerId, game)) {
for (UUID playerId : game.getState().getPlayersInRange(sourceControllerId, game)) {
Player player = game.getPlayer(playerId);
if (player != null) {
if (this.minNumberOfTargets == 0) {
return true;
}
switch (zone) {
case HAND:
for (Card card : player.getHand().getCards(filter, sourceId, sourceControllerId, game)) {
@ -200,7 +201,7 @@ public class TargetCard extends TargetObject {
public Set<UUID> possibleTargets(UUID sourceControllerId, Cards cards, Game game) {
Set<UUID> possibleTargets = new HashSet<>();
for (Card card: cards.getCards(filter, game)) {
for (Card card : cards.getCards(filter, game)) {
possibleTargets.add(card.getId());
}
return possibleTargets;

View file

@ -121,7 +121,7 @@ public class Targets extends ArrayList<Target> {
}
}
// it is legal when either there is no target or not all targets are illegal
return this.size() == 0 || this.size() != illegalCount;
return this.isEmpty() || this.size() != illegalCount;
}
/**

View file

@ -30,10 +30,10 @@ package mage.target.common;
import java.util.HashSet;
import java.util.Set;
import java.util.UUID;
import mage.constants.Zone;
import mage.abilities.Ability;
import mage.cards.Card;
import mage.cards.Cards;
import mage.constants.Zone;
import mage.filter.FilterCard;
import mage.game.Game;
import mage.game.events.GameEvent;
@ -122,10 +122,7 @@ public class TargetCardInYourGraveyard extends TargetCard {
*/
@Override
public boolean canChoose(UUID sourceControllerId, Game game) {
if (game.getPlayer(sourceControllerId).getGraveyard().count(filter, game) >= this.minNumberOfTargets) {
return true;
}
return false;
return game.getPlayer(sourceControllerId).getGraveyard().count(filter, game) >= this.minNumberOfTargets;
}
@Override