From 6a0aadbea3f0e0de39932ad2a638513dfbeab0f5 Mon Sep 17 00:00:00 2001 From: Evan Kranzler Date: Tue, 17 Apr 2018 15:16:30 -0400 Subject: [PATCH] Dominaria packs will now be guaranteed to have at least one legendary creature --- Mage.Sets/src/mage/sets/Dominaria.java | 1 + .../main/java/mage/cards/ExpansionSet.java | 21 +++++++++++++++++-- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/Mage.Sets/src/mage/sets/Dominaria.java b/Mage.Sets/src/mage/sets/Dominaria.java index 5dae8dfa313..01c94731a94 100644 --- a/Mage.Sets/src/mage/sets/Dominaria.java +++ b/Mage.Sets/src/mage/sets/Dominaria.java @@ -52,6 +52,7 @@ public class Dominaria extends ExpansionSet { this.numBoosterUncommon = 3; this.numBoosterRare = 1; this.ratioBoosterMythic = 8; + this.needsLegends = true; cards.add(new SetCardInfo("Academy Drake", 40, Rarity.UNCOMMON, mage.cards.a.AcademyDrake.class)); cards.add(new SetCardInfo("Academy Journeymage", 41, Rarity.COMMON, mage.cards.a.AcademyJourneymage.class)); diff --git a/Mage/src/main/java/mage/cards/ExpansionSet.java b/Mage/src/main/java/mage/cards/ExpansionSet.java index c14340386ed..69ede8fab7d 100644 --- a/Mage/src/main/java/mage/cards/ExpansionSet.java +++ b/Mage/src/main/java/mage/cards/ExpansionSet.java @@ -83,7 +83,7 @@ public abstract class ExpansionSet implements Serializable { return this.cardNumber; } - public int getCardNumberAsInt(){ + public int getCardNumberAsInt() { return CardUtil.parseCardNumberAsInt(this.cardNumber); } @@ -121,6 +121,7 @@ public abstract class ExpansionSet implements Serializable { protected int numBoosterRare; protected int numBoosterDoubleFaced; // -1 = include normally 0 = exclude 1-n = include explicit protected int ratioBoosterMythic; + protected boolean needsLegends = false; protected int maxCardNumberInBooster; // used to omit cards with collector numbers beyond the regular cards in a set for boosters @@ -210,6 +211,20 @@ public abstract class ExpansionSet implements Serializable { } public List createBooster() { + if (needsLegends) { + for (int i = 0; i < 100000; i++) {//don't want to somehow loop forever + List booster = tryBooster(); + for (Card card : booster) { + if (card.isLegendary() && card.isCreature()) {// Dominaria packs must contain at least one legendary creature. + return booster; + } + } + } + } + return tryBooster(); + } + + public List tryBooster() { List booster = new ArrayList<>(); if (!hasBoosters) { return booster; @@ -436,6 +451,8 @@ public abstract class ExpansionSet implements Serializable { savedCards.clear(); } - public int getMaxCardNumberInBooster() { return maxCardNumberInBooster; } + public int getMaxCardNumberInBooster() { + return maxCardNumberInBooster; + } }