Add MDFC support to CardCriteria and use it for ZNR

This commit is contained in:
Alex W. Jackson 2021-12-24 03:38:48 -05:00
parent a4ced51058
commit d357f4a0b0
2 changed files with 29 additions and 6 deletions

View file

@ -1,8 +1,9 @@
package mage.sets;
import mage.cards.Card;
import mage.cards.ExpansionSet;
import mage.cards.ModalDoubleFacesCard;
import mage.cards.repository.CardCriteria;
import mage.cards.repository.CardInfo;
import mage.cards.repository.CardRepository;
import mage.constants.Rarity;
import mage.constants.SetType;
@ -28,7 +29,9 @@ public final class ZendikarRising extends ExpansionSet {
this.numBoosterCommon = 10;
this.numBoosterUncommon = 3;
this.numBoosterRare = 1;
this.ratioBoosterMythic = 7.4;
this.ratioBoosterMythic = 8;
this.ratioBoosterSpecialRare = 5.5;
this.ratioBoosterSpecialMythic = 5.4; // 5 mythic MDFCs, 11 rare MDFCs
this.maxCardNumberInBooster = 280;
cards.add(new SetCardInfo("Acquisitions Expert", 89, Rarity.UNCOMMON, mage.cards.a.AcquisitionsExpert.class));
@ -425,8 +428,13 @@ public final class ZendikarRising extends ExpansionSet {
}
@Override
protected boolean boosterIsValid(List<Card> booster) {
return super.boosterIsValid(booster)
&& booster.stream().filter(ModalDoubleFacesCard.class::isInstance).count() == 1;
protected List<CardInfo> findSpecialCardsByRarity(Rarity rarity) {
List<CardInfo> cardInfos = super.findSpecialCardsByRarity(rarity);
cardInfos.addAll(CardRepository.instance.findCards(new CardCriteria()
.setCodes(this.code)
.rarities(rarity)
.modalDoubleFaced(true)
.maxCardNumber(maxCardNumberInBooster)));
return cardInfos;
}
}

View file

@ -30,6 +30,7 @@ public class CardCriteria {
private final List<SubType> subtypes;
private final List<Rarity> rarities;
private Boolean doubleFaced;
private Boolean modalDoubleFaced;
private boolean black;
private boolean blue;
private boolean green;
@ -100,6 +101,11 @@ public class CardCriteria {
return this;
}
public CardCriteria modalDoubleFaced(boolean modalDoubleFaced) {
this.modalDoubleFaced = modalDoubleFaced;
return this;
}
public CardCriteria name(String name) {
this.name = name;
return this;
@ -215,6 +221,11 @@ public class CardCriteria {
clausesCount++;
}
if (modalDoubleFaced != null) {
where.eq("modalDoubleFacesCard", modalDoubleFaced);
clausesCount++;
}
for (Rarity rarity : rarities) {
where.eq("rarity", rarity);
}
@ -412,6 +423,10 @@ public class CardCriteria {
return doubleFaced;
}
public Boolean getModalDoubleFaced() {
return modalDoubleFaced;
}
public boolean isBlack() {
return black;
}