public List<Card> create15CardBooster() { // Forces 15 card booster packs. // if the packs are too small, it adds commons to fill it out. // if the packs are too big, it removes the first cards. // since it adds lands then commons before uncommons // and rares this should be the least disruptive. List<Card> theBooster = this.createBooster(); if (15 > theBooster.size()) { List<CardInfo> commons = getCardsByRarity(Rarity.COMMON); while (15 > theBooster.size() && !commons.isEmpty()) { addToBooster(theBooster, commons); if (commons.isEmpty()) { commons = getCardsByRarity(Rarity.COMMON); } } } while (theBooster.size() > 15) { theBooster.remove(0); } return theBooster; }
@Override public List<CardInfo> 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<CardInfo> savedCardsInfos = savedCards.get(rarity); if (savedCardsInfos == null) { CardCriteria criteria = new CardCriteria(); criteria.rarities(Rarity.COMMON); criteria.setCodes(this.code).notTypes(CardType.LAND); savedCardsInfos = CardRepository.instance.findCards(criteria); if (maxCardNumberInBooster != Integer.MAX_VALUE) { savedCardsInfos.removeIf(next -> next.getCardNumberAsInt() > maxCardNumberInBooster && rarity != Rarity.LAND); } 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<CardInfo> getCardsByRarity(Rarity rarity) { // Common cards retrievement of Core Set 2019 boosters - prevent the retrievement of the common lands (e.g. Meandering River) if (rarity == Rarity.COMMON) { List<CardInfo> savedCardsInfos = savedCards.get(rarity); if (savedCardsInfos == null) { CardCriteria criteria = new CardCriteria(); criteria.rarities(Rarity.COMMON); criteria.setCodes(this.code).notTypes(CardType.LAND); savedCardsInfos = CardRepository.instance.findCards(criteria); if (maxCardNumberInBooster != Integer.MAX_VALUE) { savedCardsInfos.removeIf(next -> next.getCardNumberAsInt() > maxCardNumberInBooster && rarity != Rarity.LAND); } 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<CardInfo> getCardsByRarity(Rarity rarity) { if (rarity == Rarity.COMMON) { List<CardInfo> savedCardsInfos = savedCards.get(rarity); if (savedCardsInfos == null) { CardCriteria criteria = new CardCriteria(); criteria.setCodes(this.code).notTypes(CardType.LAND); criteria.rarities(rarity).doubleFaced(false); savedCardsInfos = CardRepository.instance.findCards(criteria); if (maxCardNumberInBooster != Integer.MAX_VALUE) { savedCardsInfos.removeIf(next -> next.getCardNumberAsInt() > maxCardNumberInBooster && rarity != Rarity.LAND); } savedCards.put(rarity, savedCardsInfos); } // Return a copy of the saved cards information, as not to modify the original. return new ArrayList<>(savedCardsInfos); } else { return super.getCardsByRarity(rarity); } }
List<CardInfo> basicLands = getCardsByRarity(Rarity.LAND); for (int i = 0; i < numBoosterLands; i++) { if (ratioBoosterSpecialLand > 0 && RandomUtil.nextInt(ratioBoosterSpecialLand) < ratioBoosterSpecialLandNumerator && specialLands != null) { int numCommonsToGenerate = numBoosterCommon - numSpecialCommons; List<CardInfo> commons = getCardsByRarity(Rarity.COMMON); for (int i = 0; i < numCommonsToGenerate; i++) { addToBooster(booster, commons); List<CardInfo> uncommons = getCardsByRarity(Rarity.UNCOMMON); for (int i = 0; i < numBoosterUncommon; i++) { addToBooster(booster, uncommons); List<CardInfo> rares = getCardsByRarity(Rarity.RARE); List<CardInfo> mythics = getCardsByRarity(Rarity.MYTHIC); for (int i = 0; i < numBoosterRare; i++) { if (ratioBoosterMythic > 0 && RandomUtil.nextInt(ratioBoosterMythic) == 0) {
List<CardInfo> uncommons = getCardsByRarity(Rarity.UNCOMMON); for (int i = 0; i < numBoosterUncommon; i++) { while (true) { int numCommonsToGenerate = numBoosterCommon - numSpecialCommons; List<CardInfo> commons = getCardsByRarity(Rarity.COMMON); for (int i = 0; i < numCommonsToGenerate; i++) { addToBooster(booster, commons); List<CardInfo> rares = getCardsByRarity(Rarity.RARE); List<CardInfo> mythics = getCardsByRarity(Rarity.MYTHIC); for (int i = 0; i < numBoosterRare; i++) { if (ratioBoosterMythic > 0 && RandomUtil.nextInt(ratioBoosterMythic) == 0) {
if ((set.getCardsByRarity(Rarity.COMMON).size() > 0) && !res.haveCommon) { if ((set.getCardsByRarity(Rarity.UNCOMMON).size() > 0) && !res.haveUncommon) { if ((set.getCardsByRarity(Rarity.RARE).size() > 0) && !res.haveRare) { if ((set.getCardsByRarity(Rarity.MYTHIC).size() > 0) && !res.haveMyth) {
@Override public List<CardInfo> getCardsByRarity(Rarity rarity) { if (rarity == Rarity.COMMON) { List<CardInfo> savedCardsInfos = savedCards.get(rarity); if (savedCardsInfos == null) { CardCriteria criteria = new CardCriteria(); criteria.setCodes(this.code).notTypes(CardType.LAND); criteria.rarities(rarity).doubleFaced(false); savedCardsInfos = CardRepository.instance.findCards(criteria); if (maxCardNumberInBooster != Integer.MAX_VALUE) { savedCardsInfos.removeIf(next -> next.getCardNumberAsInt() > maxCardNumberInBooster); } criteria = new CardCriteria(); // Gateway Plaza is a normal common: https://twitter.com/EliShffrn/status/1043156989218414593s criteria.setCodes(this.code).nameExact("Gateway Plaza"); savedCardsInfos.addAll(CardRepository.instance.findCards(criteria)); savedCards.put(rarity, savedCardsInfos); } // Return a copy of the saved cards information, as not to modify the original. return new ArrayList<>(savedCardsInfos); } else { return super.getCardsByRarity(rarity); } }
@Override public List<CardInfo> getCardsByRarity(Rarity rarity) { if (rarity == Rarity.COMMON) { List<CardInfo> savedCardsInfos = savedCards.get(rarity); if (savedCardsInfos == null) { CardCriteria criteria = new CardCriteria(); criteria.setCodes(this.code).notTypes(CardType.LAND); criteria.rarities(rarity).doubleFaced(false); savedCardsInfos = CardRepository.instance.findCards(criteria); if (maxCardNumberInBooster != Integer.MAX_VALUE) { savedCardsInfos.removeIf(next -> next.getCardNumberAsInt() > maxCardNumberInBooster); } criteria = new CardCriteria(); // Gateway Plaza is a normal common: https://twitter.com/EliShffrn/status/1043156989218414593s criteria.setCodes(this.code).nameExact("Gateway Plaza"); savedCardsInfos.addAll(CardRepository.instance.findCards(criteria)); savedCards.put(rarity, savedCardsInfos); } // Return a copy of the saved cards information, as not to modify the original. return new ArrayList<>(savedCardsInfos); } else { return super.getCardsByRarity(rarity); } }