Mythic rare card generator now returns null for sets without mythic rare cards. This is used to fix win streak rewards.

This commit is contained in:
Krazy
2014-05-15 00:48:48 +00:00
parent dd4e2e5e29
commit d7f1f6e6e0
2 changed files with 18 additions and 7 deletions

View File

@@ -512,6 +512,7 @@ public class QuestWinLose extends ControlWinLose {
int currentStreak = (qData.getAchievements().getWinStreakCurrent() + 1) % 50;
final List<PaperCard> cardsWon = new ArrayList<>();
List<PaperCard> cardsToAdd;
String typeWon = "";
switch (currentStreak) {
@@ -528,8 +529,9 @@ public class QuestWinLose extends ControlWinLose {
typeWon = "rare";
break;
case 10:
cardsWon.addAll(qData.getCards().addRandomMythicRare(1));
if (cardsWon.size() > 0) {
cardsToAdd = qData.getCards().addRandomMythicRare(1);
if (cardsToAdd != null) {
cardsWon.addAll(cardsToAdd);
typeWon = "mythic rare";
} else {
cardsWon.addAll(qData.getCards().addRandomRareNotMythic(5));
@@ -537,8 +539,9 @@ public class QuestWinLose extends ControlWinLose {
}
break;
case 25:
cardsWon.addAll(qData.getCards().addRandomMythicRare(5));
if (cardsWon.size() > 0) {
cardsToAdd = qData.getCards().addRandomMythicRare(5);
if (cardsToAdd != null) {
cardsWon.addAll(cardsToAdd);
typeWon = "mythic rare";
} else {
cardsWon.addAll(qData.getCards().addRandomRareNotMythic(15));
@@ -546,8 +549,9 @@ public class QuestWinLose extends ControlWinLose {
}
break;
case 0: //The 50th win in the streak is 0, since (50 % 50 == 0)
cardsWon.addAll(qData.getCards().addRandomMythicRare(10));
if (cardsWon.size() > 0) {
cardsToAdd = qData.getCards().addRandomMythicRare(10);
if (cardsToAdd != null) {
cardsWon.addAll(cardsToAdd);
typeWon = "mythic rare";
} else {
cardsWon.addAll(qData.getCards().addRandomRareNotMythic(25));

View File

@@ -278,9 +278,16 @@ public final class QuestUtilCards {
public List<PaperCard> addRandomMythicRare(final int n) {
final Predicate<PaperCard> myFilter = applyFormatFilter(QuestUtilCards.MYTHIC_PREDICATE);
final List<PaperCard> newCards = Aggregates.random(Iterables.filter(FModel.getMagicDb().getCommonCards().getAllCards(), myFilter), n);
final Iterable<PaperCard> cardPool = Iterables.filter(FModel.getMagicDb().getCommonCards().getAllCards(), myFilter);
if (!cardPool.iterator().hasNext()) {
return null;
}
final List<PaperCard> newCards = Aggregates.random(cardPool, n);
this.addAllCards(newCards);
return newCards;
}
/**