fixed Niv-Mizzet Reborn allowing players to select cards that aren't exactly two colors

This commit is contained in:
Evan Kranzler 2019-04-24 12:54:40 -04:00
parent 79f8391fef
commit 9ad7c4c83d

View file

@ -75,11 +75,18 @@ class NivMizzetRebornEffect extends OneShotEffect {
this.color2 = color2; this.color2 = color2;
} }
private TargetCard getTarget() { private FilterCard makeFilter() {
FilterCard filter = new FilterCard(getDescription()); FilterCard filter = new FilterCard(getDescription());
filter.add(new ColorPredicate(new ObjectColor(color1 + color2))); filter.add(new ColorPredicate(new ObjectColor(color1)));
filter.add(Predicates.not(new ColorPredicate(new ObjectColor(getOtherColors())))); filter.add(new ColorPredicate(new ObjectColor(color2)));
return new TargetCardInLibrary(filter); for (char c : getOtherColors().toCharArray()) {
filter.add(Predicates.not(new ColorPredicate(new ObjectColor("" + c))));
}
return filter;
}
private TargetCard getTarget() {
return new TargetCardInLibrary(makeFilter());
} }
private String getDescription() { private String getDescription() {
@ -99,9 +106,7 @@ class NivMizzetRebornEffect extends OneShotEffect {
} }
private boolean isInCards(Cards cards, Game game) { private boolean isInCards(Cards cards, Game game) {
FilterCard filter = new FilterCard(getDescription()); FilterCard filter = makeFilter();
filter.add(new ColorPredicate(new ObjectColor(color1 + color2)));
filter.add(Predicates.not(new ColorPredicate(new ObjectColor(getOtherColors()))));
return cards.getCards(game).stream().anyMatch(card -> filter.match(card, game)); return cards.getCards(game).stream().anyMatch(card -> filter.match(card, game));
} }
} }