added protection against selection of sets not yielding boosters

This commit is contained in:
Maxmtg
2011-09-15 11:43:15 +00:00
parent 22d8d7ea3e
commit 88bea98801
2 changed files with 13 additions and 6 deletions

View File

@@ -1,5 +1,6 @@
package forge.card;
import forge.SetUtils;
import forge.game.GameFormat;
import net.slightlymagic.braids.util.lambda.Lambda1;
import net.slightlymagic.maxmtg.Predicate;
@@ -117,5 +118,11 @@ public final class CardSet implements Comparable<CardSet> { // immutable
return format.isSetLegal(subject.getCode());
}
}
public static abstract class Presets {
public final static Predicate<CardSet> setsInT2 = isLegalInFormat(SetUtils.getStandard());
public final static Predicate<CardSet> setsInExt = isLegalInFormat(SetUtils.getExtended());
public final static Predicate<CardSet> setsInModern = isLegalInFormat(SetUtils.getModern());
}
}
}

View File

@@ -159,11 +159,11 @@ public final class QuestUtilCards {
int winPacks = q.getWin() / 10;
int totalPacks = Math.min(levelPacks + winPacks, 6);
final Predicate<CardSet> filterExt = CardSet.Predicates.Presets.setsInExt;
final Predicate<CardSet> filterT2booster = Predicate.and(CardSet.Predicates.canMakeBooster, CardSet.Predicates.Presets.setsInT2);
final Predicate<CardSet> filterExtButT2 = Predicate.and(CardSet.Predicates.canMakeBooster, Predicate.and(filterExt, Predicate.not(CardSet.Predicates.Presets.setsInT2)));
final Predicate<CardSet> filterNotExt = Predicate.and(CardSet.Predicates.canMakeBooster, Predicate.not(filterExt));
Predicate<CardSet> filterT2 = CardSet.Predicates.isLegalInFormat(SetUtils.getStandard());
Predicate<CardSet> filterExt = CardSet.Predicates.isLegalInFormat(SetUtils.getExtended());
Predicate<CardSet> filterExtButT2 = Predicate.and(filterExt, Predicate.not(filterT2));
Predicate<CardSet> filterNotExt = Predicate.not(filterExt);
q.shopList.clear();
for (int i = 0; i < totalPacks; i++) {
@@ -171,7 +171,7 @@ public final class QuestUtilCards {
// add some boosters
int rollD100 = MyRandom.random.nextInt(100);
Predicate<CardSet> filter = rollD100 < 40 ? filterT2 : (rollD100 < 75 ? filterExtButT2 : filterNotExt);
Predicate<CardSet> filter = rollD100 < 40 ? filterT2booster : (rollD100 < 75 ? filterExtButT2 : filterNotExt);
q.shopList.addAllCards(filter.random(SetUtils.getAllSets(), 1, BoosterPack.fnFromSet));
}