From 4c49db4c89eb94faab54dcb09daaa9b8521f9aea Mon Sep 17 00:00:00 2001 From: Sol Date: Tue, 2 Aug 2016 20:08:40 +0000 Subject: [PATCH] - Adding Advantageous Proclamation (CNS) --- .gitattributes | 1 + forge-core/src/main/java/forge/deck/CardPool.java | 10 +++++++++- forge-core/src/main/java/forge/deck/DeckFormat.java | 6 +++++- .../res/cardsfolder/a/advantageous_proclamation.txt | 6 ++++++ 4 files changed, 21 insertions(+), 2 deletions(-) create mode 100644 forge-gui/res/cardsfolder/a/advantageous_proclamation.txt diff --git a/.gitattributes b/.gitattributes index 7520a120810..495e9728ded 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1540,6 +1540,7 @@ forge-gui/res/cardsfolder/a/adun_oakenshield.txt svneol=native#text/plain forge-gui/res/cardsfolder/a/advance_scout.txt svneol=native#text/plain forge-gui/res/cardsfolder/a/advanced_hoverguard.txt svneol=native#text/plain forge-gui/res/cardsfolder/a/advanced_stitchwing.txt -text +forge-gui/res/cardsfolder/a/advantageous_proclamation.txt -text forge-gui/res/cardsfolder/a/advent_of_the_wurm.txt -text forge-gui/res/cardsfolder/a/adventurers_guildhouse.txt -text forge-gui/res/cardsfolder/a/adventuring_gear.txt svneol=native#text/plain diff --git a/forge-core/src/main/java/forge/deck/CardPool.java b/forge-core/src/main/java/forge/deck/CardPool.java index d53360c03a6..e0d9375325e 100644 --- a/forge-core/src/main/java/forge/deck/CardPool.java +++ b/forge-core/src/main/java/forge/deck/CardPool.java @@ -114,7 +114,7 @@ public class CardPool extends ItemPool { /** * returns n-th card from this DeckSection. LINEAR time. No fixed order between changes - * @param i + * @param n * @return */ public PaperCard get(int n) { @@ -125,6 +125,14 @@ public class CardPool extends ItemPool { return null; } + public int countByName(String cardName, boolean isCommonCard) { + PaperCard pc = isCommonCard + ? StaticData.instance().getCommonCards().getCard(cardName) + : StaticData.instance().getVariantCards().getCard(cardName); + + return this.count(pc); + } + @Override public String toString() { if (this.isEmpty()) { return "[]"; } diff --git a/forge-core/src/main/java/forge/deck/DeckFormat.java b/forge-core/src/main/java/forge/deck/DeckFormat.java index 1b0c896d8a7..51547a530fc 100644 --- a/forge-core/src/main/java/forge/deck/DeckFormat.java +++ b/forge-core/src/main/java/forge/deck/DeckFormat.java @@ -98,6 +98,7 @@ public enum DeckFormat { private final Range sideRange; // null => no check private final int maxCardCopies; private final Predicate cardPoolFilter; + private final static String ADVPROCLAMATION = "Advantageous Proclamation"; private DeckFormat(Range mainRange0, Range sideRange0, int maxCardCopies0) { this(mainRange0, sideRange0, maxCardCopies0, null); @@ -166,8 +167,11 @@ public enum DeckFormat { int min = getMainRange().getMinimum(); int max = getMainRange().getMaximum(); - // TODO "Your minimum deck size is reduced by five." // Adjust minimum base on number of Advantageous Proclamation or similar cards + CardPool conspiracies = deck.get(DeckSection.Conspiracy); + if (conspiracies != null) { + min -= (5 * conspiracies.countByName(ADVPROCLAMATION, true)); + } if (deckSize < min) { return String.format("should have at least %d cards", min); diff --git a/forge-gui/res/cardsfolder/a/advantageous_proclamation.txt b/forge-gui/res/cardsfolder/a/advantageous_proclamation.txt new file mode 100644 index 00000000000..c319bbb7374 --- /dev/null +++ b/forge-gui/res/cardsfolder/a/advantageous_proclamation.txt @@ -0,0 +1,6 @@ +Name:Advantageous Proclamation +ManaCost:no cost +Types:Conspiracy +K:Your minimum deck size is reduced by five. +SVar:Picture:http://www.wizards.com/global/images/magic/general/advantageous_proclamation.jpg +Oracle:(Start the game with this conspiracy face up in the command zone.)\nYour minimum deck size is reduced by five.