Merge branch 'master' into 'master'

Skip promo sets when determining starter Planeswalker options in Planar Conquest.

See merge request core-developers/forge!4048
This commit is contained in:
Michael Kamensky
2021-02-28 18:29:04 +00:00

View File

@@ -21,9 +21,9 @@ import forge.planarconquest.ConquestPreferences.CQPref;
import forge.properties.ForgeConstants; import forge.properties.ForgeConstants;
import forge.quest.QuestUtil; import forge.quest.QuestUtil;
import forge.util.FileUtil; import forge.util.FileUtil;
import forge.util.Localizer;
import forge.util.MyRandom; import forge.util.MyRandom;
import forge.util.gui.SOptionPane; import forge.util.gui.SOptionPane;
import forge.util.Localizer;
import java.util.EnumSet; import java.util.EnumSet;
import java.util.List; import java.util.List;
@@ -175,13 +175,27 @@ public class ConquestUtil {
public static Iterable<PaperCard> getStartingPlaneswalkerOptions(final PaperCard startingCommander) { public static Iterable<PaperCard> getStartingPlaneswalkerOptions(final PaperCard startingCommander) {
final byte colorIdentity = startingCommander.getRules().getColorIdentity().getColor(); final byte colorIdentity = startingCommander.getRules().getColorIdentity().getColor();
return Iterables.filter(FModel.getMagicDb().getCommonCards().getUniqueCards(), new Predicate<PaperCard>() { final List<String> selected = Lists.newArrayList();
return Iterables.filter(FModel.getMagicDb().getCommonCards(), new Predicate<PaperCard>() {
@Override @Override
public boolean apply(PaperCard card) { public boolean apply(PaperCard card) {
if (FModel.getMagicDb().getEditions().get(card.getEdition()).getType() == CardEdition.Type.REPRINT) {
return false; // exclude promos from the starting planeswalker set
}
if (selected.contains(card.getName())) {
return false;
}
CardRules rules = card.getRules(); CardRules rules = card.getRules();
return rules.getType().isPlaneswalker() && boolean allowed = rules.getType().isPlaneswalker() &&
!card.getName().equals(startingCommander.getName()) && //don't allow picking a commander as a starting planeswalker !card.getName().equals(startingCommander.getName()) && //don't allow picking a commander as a starting planeswalker
rules.getColorIdentity().hasNoColorsExcept(colorIdentity); rules.getColorIdentity().hasNoColorsExcept(colorIdentity);
if (allowed) {
selected.add(card.getName());
return true;
}
return false;
} }
}); });
} }