diff --git a/forge-gui/src/main/java/forge/limited/BoosterDraftAI.java b/forge-gui/src/main/java/forge/limited/BoosterDraftAI.java index 3f7d4e068c7..2c1b3c8a429 100644 --- a/forge-gui/src/main/java/forge/limited/BoosterDraftAI.java +++ b/forge-gui/src/main/java/forge/limited/BoosterDraftAI.java @@ -18,6 +18,7 @@ package forge.limited; import forge.card.ColorSet; +import forge.card.MagicColor; import forge.deck.Deck; import forge.item.PaperCard; import forge.properties.ForgePreferences; @@ -54,6 +55,9 @@ public class BoosterDraftAI { // roughly equivalent to 25 ranks in a core set, or 15 ranks in a small set private static final double TAKE_BEST_THRESHOLD = 0.1; + // rank worse than any other card available to draft + private static final double RANK_UNPICKABLE = 999.0; + /** *

* Choose a CardPrinted from the list given. @@ -121,8 +125,8 @@ public class BoosterDraftAI { /** * Sort cards by rank. Note that if pack has cards from different editions, - * they could have the same rank. In that (hopefully rare) case, only one - * will end up in the Map. + * they could have the same rank. Basic lands and unrecognised cards are + * rated worse than all other possible picks. * * @param chooseFrom * List of cards @@ -131,13 +135,18 @@ public class BoosterDraftAI { private List> rankCards(final Iterable chooseFrom) { List> rankedCards = new ArrayList>(); for (PaperCard card : chooseFrom) { - Double rkg = DraftRankCache.getRanking(card.getName(), card.getEdition()); - if (rkg != null) { - rankedCards.add(MutablePair.of(card, rkg)); + Double rank; + if (MagicColor.Constant.BASIC_LANDS.contains(card.getName())) { + rank = RANK_UNPICKABLE; } else { - System.out.println("Draft Rankings - Card Not Found: " + card.getName()); - rankedCards.add(MutablePair.of(card, 999.0)); + rank = DraftRankCache.getRanking(card.getName(), card.getEdition()); + if (rank == null) { + System.out.println("Draft Rankings - Card Not Found: " + card.getName()); + rank = RANK_UNPICKABLE; + } } + + rankedCards.add(MutablePair.of(card, rank)); } return rankedCards; } diff --git a/forge-gui/src/main/java/forge/limited/ReadDraftRankings.java b/forge-gui/src/main/java/forge/limited/ReadDraftRankings.java index 1e57362b855..b53dcd47370 100644 --- a/forge-gui/src/main/java/forge/limited/ReadDraftRankings.java +++ b/forge-gui/src/main/java/forge/limited/ReadDraftRankings.java @@ -1,7 +1,6 @@ package forge.limited; import com.esotericsoftware.minlog.Log; -import forge.card.MagicColor; import forge.properties.ForgeConstants; import forge.util.FileUtil; @@ -89,10 +88,6 @@ public class ReadDraftRankings { public Double getRanking(String cardName, String edition) { Double rank = null; - // Basic lands should be excluded from the evaluation --BBU - if ( MagicColor.Constant.BASIC_LANDS.contains(cardName)) - return null; - if (draftRankings.containsKey(edition)) { String safeName = cardName.replaceAll("-", " ").replaceAll("[^A-Za-z ]", "");