diff --git a/Mage.Sets/src/mage/sets/CoreSet2019.java b/Mage.Sets/src/mage/sets/CoreSet2019.java index 34b7cb26f60..275e7eef3cc 100644 --- a/Mage.Sets/src/mage/sets/CoreSet2019.java +++ b/Mage.Sets/src/mage/sets/CoreSet2019.java @@ -1,6 +1,12 @@ package mage.sets; +import java.util.ArrayList; +import java.util.List; import mage.cards.ExpansionSet; +import mage.cards.repository.CardCriteria; +import mage.cards.repository.CardInfo; +import mage.cards.repository.CardRepository; +import mage.constants.CardType; import mage.constants.Rarity; import mage.constants.SetType; @@ -15,12 +21,14 @@ public final class CoreSet2019 extends ExpansionSet { public static CoreSet2019 getInstance() { return instance; } + List savedSpecialCommon = new ArrayList<>(); private CoreSet2019() { super("Core Set 2019", "M19", ExpansionSet.buildDate(2018, 7, 13), SetType.CORE); this.hasBoosters = true; this.hasBasicLands = true; - this.numBoosterLands = 1; + this.numBoosterSpecial = 1; + this.numBoosterLands = 0; this.numBoosterCommon = 10; this.numBoosterUncommon = 3; this.numBoosterRare = 1; @@ -343,4 +351,40 @@ public final class CoreSet2019 extends ExpansionSet { cards.add(new SetCardInfo("Windreader Sphinx", 84, Rarity.RARE, mage.cards.w.WindreaderSphinx.class)); cards.add(new SetCardInfo("Woodland Stream", 260, Rarity.COMMON, mage.cards.w.WoodlandStream.class)); } + + @Override + public List getCardsByRarity(Rarity rarity) { + // Common cards retrievement of Fate Reforged boosters - prevent the retrievement of the common lands (e.g. Blossoming Sands) + if (rarity == Rarity.COMMON) { + List savedCardsInfos = savedCards.get(rarity); + if (savedCardsInfos == null) { + CardCriteria criteria = new CardCriteria(); + criteria.rarities(Rarity.COMMON); + criteria.setCodes(this.code).notTypes(CardType.LAND); + if (maxCardNumberInBooster != Integer.MAX_VALUE) { + criteria.maxCardNumber(maxCardNumberInBooster); + } + savedCardsInfos = CardRepository.instance.findCards(criteria); + savedCards.put(rarity, savedCardsInfos); + } + // Return a copy of the saved cards information, as not to let modify the original. + return new ArrayList<>(savedCardsInfos); + } else { + return super.getCardsByRarity(rarity); + } + } + + @Override + public List getSpecialCommon() { + List specialCommons = new ArrayList<>(); + if (savedSpecialCommon.isEmpty()) { + CardCriteria criteria = new CardCriteria(); + criteria.rarities(Rarity.COMMON).setCodes(this.code).types(CardType.LAND); + savedSpecialCommon = CardRepository.instance.findCards(criteria); + criteria.rarities(Rarity.LAND).setCodes(this.code); + savedSpecialCommon.addAll(CardRepository.instance.findCards(criteria)); + } + specialCommons.addAll(savedSpecialCommon); + return specialCommons; + } }