mirror of
https://github.com/magefree/mage.git
synced 2025-12-20 02:30:08 -08:00
Basic groundwork for extra decks (contraptions, attractions) (#10378)
* extra deck cards not counted in deck size * extra deck handling in deckbuilder * move responsibility for extraDeckCard boolean to CardImpl * remove redundant field copy
This commit is contained in:
parent
978ebfc873
commit
9ba0da00ff
29 changed files with 97 additions and 47 deletions
|
|
@ -186,11 +186,11 @@ public abstract class AbstractCommander extends Constructed {
|
|||
valid = false;
|
||||
}
|
||||
|
||||
if (companion != null && deck.getCards().size() + deck.getSideboard().size() != 101) {
|
||||
addError(DeckValidatorErrorType.DECK_SIZE, "Deck", "Must contain " + 101 + " cards (companion doesn't count for deck size): has " + (deck.getCards().size() + deck.getSideboard().size()) + " cards");
|
||||
if (companion != null && deck.getMaindeckCards().size() + deck.getSideboard().size() != 101) {
|
||||
addError(DeckValidatorErrorType.DECK_SIZE, "Deck", "Must contain " + 101 + " cards (companion doesn't count for deck size): has " + (deck.getMaindeckCards().size() + deck.getSideboard().size()) + " cards");
|
||||
valid = false;
|
||||
} else if (companion == null && deck.getCards().size() + deck.getSideboard().size() != 100) {
|
||||
addError(DeckValidatorErrorType.DECK_SIZE, "Deck", "Must contain " + 100 + " cards: has " + (deck.getCards().size() + deck.getSideboard().size()) + " cards");
|
||||
} else if (companion == null && deck.getMaindeckCards().size() + deck.getSideboard().size() != 100) {
|
||||
addError(DeckValidatorErrorType.DECK_SIZE, "Deck", "Must contain " + 100 + " cards: has " + (deck.getMaindeckCards().size() + deck.getSideboard().size()) + " cards");
|
||||
valid = false;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -103,8 +103,8 @@ public class AusHighlander extends Constructed {
|
|||
boolean valid = true;
|
||||
errorsList.clear();
|
||||
|
||||
if (deck.getCards().size() != getDeckMinSize()) {
|
||||
addError(DeckValidatorErrorType.DECK_SIZE, "Deck", "Must contain " + getDeckMinSize() + " singleton cards: has " + (deck.getCards().size()) + " cards");
|
||||
if (deck.getMaindeckCards().size() != getDeckMinSize()) {
|
||||
addError(DeckValidatorErrorType.DECK_SIZE, "Deck", "Must contain " + getDeckMinSize() + " singleton cards: has " + (deck.getMaindeckCards().size()) + " cards");
|
||||
valid = false;
|
||||
}
|
||||
if (deck.getSideboard().size() > 15) {
|
||||
|
|
|
|||
|
|
@ -89,11 +89,11 @@ public class Brawl extends Constructed {
|
|||
}
|
||||
}
|
||||
|
||||
if (companion != null && deck.getCards().size() + deck.getSideboard().size() != getDeckMinSize() + 1) {
|
||||
addError(DeckValidatorErrorType.DECK_SIZE, "Deck", "Must contain " + (getDeckMinSize() + 1) + " cards (companion doesn't count in deck size requirement): has " + (deck.getCards().size() + deck.getSideboard().size()) + " cards");
|
||||
if (companion != null && deck.getMaindeckCards().size() + deck.getSideboard().size() != getDeckMinSize() + 1) {
|
||||
addError(DeckValidatorErrorType.DECK_SIZE, "Deck", "Must contain " + (getDeckMinSize() + 1) + " cards (companion doesn't count in deck size requirement): has " + (deck.getMaindeckCards().size() + deck.getSideboard().size()) + " cards");
|
||||
valid = false;
|
||||
} else if (companion == null && deck.getCards().size() + deck.getSideboard().size() != getDeckMinSize()) {
|
||||
addError(DeckValidatorErrorType.DECK_SIZE, "Deck", "Must contain " + getDeckMinSize() + " cards: has " + (deck.getCards().size() + deck.getSideboard().size()) + " cards");
|
||||
} else if (companion == null && deck.getMaindeckCards().size() + deck.getSideboard().size() != getDeckMinSize()) {
|
||||
addError(DeckValidatorErrorType.DECK_SIZE, "Deck", "Must contain " + getDeckMinSize() + " cards: has " + (deck.getMaindeckCards().size() + deck.getSideboard().size()) + " cards");
|
||||
valid = false;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -73,8 +73,8 @@ public class CanadianHighlander extends Constructed {
|
|||
boolean valid = true;
|
||||
errorsList.clear();
|
||||
|
||||
if (deck.getCards().size() < 100) {
|
||||
addError(DeckValidatorErrorType.DECK_SIZE, "Deck", "Must contain 100 or more singleton cards: has " + (deck.getCards().size()) + " cards");
|
||||
if (deck.getMaindeckCards().size() < 100) {
|
||||
addError(DeckValidatorErrorType.DECK_SIZE, "Deck", "Must contain 100 or more singleton cards: has " + (deck.getMaindeckCards().size()) + " cards");
|
||||
valid = false;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -78,8 +78,8 @@ public class EuropeanHighlander extends Constructed {
|
|||
// Parent class checks the banned list
|
||||
boolean valid = super.validate(deck);
|
||||
|
||||
if (deck.getCards().size() < 100) {
|
||||
addError(DeckValidatorErrorType.DECK_SIZE, "Deck", "Must contain 100 or more singleton cards: has " + (deck.getCards().size()) + " cards");
|
||||
if (deck.getMaindeckCards().size() < 100) {
|
||||
addError(DeckValidatorErrorType.DECK_SIZE, "Deck", "Must contain 100 or more singleton cards: has " + (deck.getMaindeckCards().size()) + " cards");
|
||||
valid = false;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -32,8 +32,8 @@ public class Freeform extends DeckValidator {
|
|||
boolean valid = true;
|
||||
errorsList.clear();
|
||||
// http://magic.wizards.com/en/gameinfo/gameplay/formats/freeform
|
||||
if (deck.getCards().size() < getDeckMinSize()) {
|
||||
addError(DeckValidatorErrorType.DECK_SIZE, "Deck", "Must contain at least " + getDeckMinSize() + " cards: has only " + deck.getCards().size() + " cards");
|
||||
if (deck.getMaindeckCards().size() < getDeckMinSize()) {
|
||||
addError(DeckValidatorErrorType.DECK_SIZE, "Deck", "Must contain at least " + getDeckMinSize() + " cards: has only " + deck.getMaindeckCards().size() + " cards");
|
||||
valid = false;
|
||||
}
|
||||
return valid;
|
||||
|
|
|
|||
|
|
@ -33,8 +33,8 @@ public class Momir extends DeckValidator {
|
|||
boolean valid = true;
|
||||
errorsList.clear();
|
||||
|
||||
if (deck.getCards().size() != getDeckMinSize()) {
|
||||
addError(DeckValidatorErrorType.DECK_SIZE, "Deck", "Must contain " + getDeckMinSize() + " cards: has " + deck.getCards().size() + " cards");
|
||||
if (deck.getMaindeckCards().size() != getDeckMinSize()) {
|
||||
addError(DeckValidatorErrorType.DECK_SIZE, "Deck", "Must contain " + getDeckMinSize() + " cards: has " + deck.getMaindeckCards().size() + " cards");
|
||||
valid = false;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -84,8 +84,8 @@ public class Oathbreaker extends Constructed {
|
|||
boolean valid = true;
|
||||
errorsList.clear();
|
||||
|
||||
if (deck.getCards().size() + deck.getSideboard().size() != 60) {
|
||||
addError(DeckValidatorErrorType.DECK_SIZE, "Deck", "Must contain " + 60 + " cards: has " + (deck.getCards().size() + deck.getSideboard().size()) + " cards");
|
||||
if (deck.getMaindeckCards().size() + deck.getSideboard().size() != 60) {
|
||||
addError(DeckValidatorErrorType.DECK_SIZE, "Deck", "Must contain " + 60 + " cards: has " + (deck.getMaindeckCards().size() + deck.getSideboard().size()) + " cards");
|
||||
valid = false;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -105,8 +105,8 @@ public class TinyLeaders extends Constructed {
|
|||
boolean valid = true;
|
||||
errorsList.clear();
|
||||
|
||||
if (deck.getCards().size() != getDeckMinSize()) {
|
||||
addError(DeckValidatorErrorType.DECK_SIZE, "Deck", "Must contain " + getDeckMinSize() + " cards: has " + deck.getCards().size() + " cards");
|
||||
if (deck.getMaindeckCards().size() != getDeckMinSize()) {
|
||||
addError(DeckValidatorErrorType.DECK_SIZE, "Deck", "Must contain " + getDeckMinSize() + " cards: has " + deck.getMaindeckCards().size() + " cards");
|
||||
valid = false;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -31,8 +31,8 @@ public class Limited extends DeckValidator {
|
|||
boolean valid = true;
|
||||
errorsList.clear();
|
||||
//20091005 - 100.2b
|
||||
if (deck.getCards().size() < getDeckMinSize()) {
|
||||
addError(DeckValidatorErrorType.DECK_SIZE, "Deck", "Must contain at least " + getDeckMinSize() + " cards: has only " + deck.getCards().size() + " cards");
|
||||
if (deck.getMaindeckCards().size() < getDeckMinSize()) {
|
||||
addError(DeckValidatorErrorType.DECK_SIZE, "Deck", "Must contain at least " + getDeckMinSize() + " cards: has only " + deck.getMaindeckCards().size() + " cards");
|
||||
valid = false;
|
||||
}
|
||||
Map<String, Integer> counts = new HashMap<>();
|
||||
|
|
|
|||
|
|
@ -2257,7 +2257,7 @@ public class ComputerPlayer extends PlayerImpl implements Player {
|
|||
|
||||
List<Card> sortedCards = new ArrayList<>(cardPool);
|
||||
if (!sortedCards.isEmpty()) {
|
||||
while (deck.getCards().size() < DECK_SIZE) {
|
||||
while (deck.getMaindeckCards().size() < DECK_SIZE) {
|
||||
deck.getCards().add(sortedCards.get(RandomUtil.nextInt(sortedCards.size())));
|
||||
}
|
||||
return deck;
|
||||
|
|
@ -2287,7 +2287,7 @@ public class ComputerPlayer extends PlayerImpl implements Player {
|
|||
|
||||
// get top cards
|
||||
int cardNum = 0;
|
||||
while (deck.getCards().size() < DECK_CARDS_COUNT && sortedCards.size() > cardNum) {
|
||||
while (deck.getMaindeckCards().size() < DECK_CARDS_COUNT && sortedCards.size() > cardNum) {
|
||||
Card card = sortedCards.get(cardNum);
|
||||
if (!card.isBasic()) {
|
||||
deck.getCards().add(card);
|
||||
|
|
@ -2349,7 +2349,7 @@ public class ComputerPlayer extends PlayerImpl implements Player {
|
|||
}
|
||||
|
||||
// adds remaining lands (most popular name)
|
||||
addBasicLands(deck, mostLandName, DECK_SIZE - deck.getCards().size());
|
||||
addBasicLands(deck, mostLandName, DECK_SIZE - deck.getMaindeckCards().size());
|
||||
|
||||
return deck;
|
||||
}
|
||||
|
|
@ -2359,7 +2359,7 @@ public class ComputerPlayer extends PlayerImpl implements Player {
|
|||
DeckValidator deckValidator = DeckValidatorFactory.instance.createDeckValidator(tournament.getOptions().getMatchOptions().getDeckType());
|
||||
int deckMinSize = deckValidator != null ? deckValidator.getDeckMinSize() : 0;
|
||||
|
||||
if (deck != null && deck.getCards().size() < deckMinSize && !deck.getSideboard().isEmpty()) {
|
||||
if (deck != null && deck.getMaindeckCards().size() < deckMinSize && !deck.getSideboard().isEmpty()) {
|
||||
if (chosenColors == null) {
|
||||
for (Card card : deck.getSideboard()) {
|
||||
rememberPick(card, RateCard.rateCard(card, null));
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue