diff --git a/src/main/java/forge/deck/Deck.java b/src/main/java/forge/deck/Deck.java
index 375b0236e38..323aae97065 100644
--- a/src/main/java/forge/deck/Deck.java
+++ b/src/main/java/forge/deck/Deck.java
@@ -47,8 +47,10 @@ public final class Deck implements Comparable, Serializable {
* Constructor for Deck.
*/
public Deck() {
- main = new CardPool();
- sideboard = new CardPool();
+ main = new CardPool();
+ sideboard = new CardPool();
+ humanExtraCards = new CardPool();
+ aiExtraCards = new CardPool();
}
/**
@@ -237,7 +239,7 @@ public final class Deck implements Comparable, Serializable {
*
* @param cardName a {@link java.lang.String} object.
*/
- public void addAIExtraCards(final String cardName) { addHumanExtraCards(CardDb.instance().getCard(cardName)); }
+ public void addAIExtraCards(final String cardName) { addAIExtraCards(CardDb.instance().getCard(cardName)); }
public void addAIExtraCards(final CardPrinted card) { aiExtraCards.add(card); }
public void addAIExtraCards(final CardPoolView list) { aiExtraCards.addAll(list); }
public void removeAIExtraCards(final CardPrinted card) { aiExtraCards.remove(card); }
diff --git a/src/main/java/forge/deck/DeckManager.java b/src/main/java/forge/deck/DeckManager.java
index d66fe7a3863..2e88721a471 100644
--- a/src/main/java/forge/deck/DeckManager.java
+++ b/src/main/java/forge/deck/DeckManager.java
@@ -1,9 +1,11 @@
package forge.deck;
+import forge.Card;
import forge.Constant;
import forge.card.CardPrinted;
import forge.error.ErrorViewer;
+import forge.quest.data.QuestUtil;
import java.io.*;
import java.util.*;
@@ -359,19 +361,29 @@ public class DeckManager {
}
}
+ // readDeck human extras
while (lineIterator.hasNext() && !(line = lineIterator.next()).equals("[ai_extra_cards]")) {
Matcher m = p.matcher(line);
m.matches();
String s = m.group(2);
String cardName = m.group(3);
if (StringUtils.isBlank(cardName)) { continue; }
-
+
int count = s == null ? 1 : parseInt(s);
for (int i = 0; i < count; i++) {
- d.addHumanExtraCards(cardName);
+ if(cardName.substring(0,5).equals("TOKEN")) {
+ System.out.println("DeckManager: Token ignored ("+cardName+")");
+ // Build token below, but of type Card, not CardPrinted,
+ // so can't be added to deck.
+ //Card c = QuestUtil.extraCardBuilder(cardName);
+ }
+ else {
+ d.addHumanExtraCards(cardName);
+ }
}
}
+ // readDeck AI extras
while (lineIterator.hasNext()) {
line = lineIterator.next();
Matcher m = p.matcher(line);
@@ -382,7 +394,15 @@ public class DeckManager {
int count = s == null ? 1 : parseInt(s);
for (int i = 0; i < count; i++) {
- d.addAIExtraCards(cardName);
+ if(cardName.substring(0,5).equals("TOKEN")) {
+ System.out.println("DeckManager: Token ignored ("+cardName+")");
+ // Build token below, but of type Card, not CardPrinted,
+ // so can't be added to deck.
+ //Card c = QuestUtil.extraCardBuilder(cardName);
+ }
+ else {
+ d.addAIExtraCards(cardName);
+ }
}
}
}
diff --git a/src/main/java/forge/quest/data/QuestUtil.java b/src/main/java/forge/quest/data/QuestUtil.java
index 7a885a75ce7..528e2547b25 100644
--- a/src/main/java/forge/quest/data/QuestUtil.java
+++ b/src/main/java/forge/quest/data/QuestUtil.java
@@ -1,12 +1,15 @@
package forge.quest.data;
-import forge.*;
-import forge.card.CardRarity;
+import java.util.List;
+import java.util.Map.Entry;
-import java.util.ArrayList;
+import forge.*;
+import forge.card.CardPoolView;
+import forge.card.CardPrinted;
/**
* QuestUtil class.
+ * General utility class for quest tasks.
*
* @author Forge
* @version $Id$
@@ -19,41 +22,43 @@ public class QuestUtil {
* @param qd a {@link forge.quest.data.QuestData} object.
* @return a {@link forge.CardList} object.
*/
- public static CardList getComputerCreatures(final QuestData qd) {
+ public static CardList getAIExtraCards(QuestData qd) {
return new CardList();
}
-
+
/**
* getComputerCreatures.
+ * Assembles extra cards computer will have in play.
*
* @param qd a {@link forge.quest.data.QuestData} object.
* @param qa a {@link forge.Quest_Assignment} object.
* @return a {@link forge.CardList} object.
*/
- public static CardList getComputerCreatures(final QuestData qd, Quest_Assignment qa) {
+ public static CardList getAIExtraCards(QuestData qd, DeckSingleQuest sq) {
CardList list = new CardList();
- if (qa != null) {
- ArrayList compCards = qa.getCompy();
+ if (sq != null) {
+ CardPoolView compCards = sq.getDeck().getAIExtraCards();
- for (String s : compCards) {
- Card c = AllZone.getCardFactory().getCard(s, AllZone.getComputerPlayer());
-
- c.setCurSetCode(c.getMostRecentSet());
- c.setImageFilename(CardUtil.buildFilename(c));
-
- list.add(c);
- }
+ /*for (String s : compCards) {
+ Card c = extraCardBuilder(s);
+ if(c!=null) {
+ list.add(c);
+ }
+ }*/
}
return list;
}
-
+
/**
* getHumanPlantAndPet.
+ * Starts up empty list of extra cards for human.
+ * Adds plant and pet as appropriate.
*
* @param qd a {@link forge.quest.data.QuestData} object.
* @return a {@link forge.CardList} object.
*/
- public static CardList getHumanPlantAndPet(final QuestData qd) {
+ public static CardList getHumanExtraCards(QuestData qd) {
+ System.out.println("LOOKATME");
CardList list = new CardList();
if (qd.getPetManager().shouldPetBeUsed()) {
@@ -69,38 +74,115 @@ public class QuestUtil {
/**
* getHumanPlantAndPet.
+ * Checks for plant and pet, then adds extra cards for human from quest deck.
+ * Assembles extra cards human will have in play.
*
* @param qd a {@link forge.quest.data.QuestData} object.
- * @param qa a {@link forge.Quest_Assignment} object.
+ * @param qq a DeckSingleQuest object.
* @return a {@link forge.CardList} object.
*/
- public static CardList getHumanPlantAndPet(final QuestData qd, Quest_Assignment qa) {
- CardList list = getHumanPlantAndPet(qd);
+ public static CardList getHumanExtraCards(QuestData qd, DeckSingleQuest sq) {
+ CardList list = getHumanExtraCards(qd);
- if (qa != null) {
- list.addAll(qa.getHuman());
- }
+ /*if (sq != null) {
+ List> humanCards =
+ sq.getDeck().getHumanExtraCards().getOrderedList();
+ for (String s : humanCards) {
+ Card c = extraCardBuilder(s);
+ if(c!=null) {
+ list.add(c);
+ }
+ }
+ }*/
return list;
}
+
+ /**
+ * extraCardBuilder.
+ * Assembles card objects for extra cards and tokens for AI and human.
+ *
+ * @param String card name
+ * @return Card object.
+ */
+ public static Card extraCardBuilder(String s) {
+ Card c = null;
+ int i;
+
+ if(s.substring(0,5).equals("TOKEN")) {
+ String[] tokenProps = s.split("\\|");
+
+ if(tokenProps.length < 6) {
+ System.err.println("QuestUtil > extraCardBuilder() reports an " +
+ "incomplete token in the current deck.\n"+
+ "Token should follow the form:\n"+
+ "TOKEN|color|attack|defense|name|type|type...\n"+
+ "For example: TOKEN|G|0|1|sheep|Creature");
+ return c;
+ }
+ else {
+ c = new Card();
+
+ c.setManaCost("0");
+ c.addColor(tokenProps[1]);
+ c.setBaseAttack(Integer.parseInt(tokenProps[2]));
+ c.setBaseDefense(Integer.parseInt(tokenProps[3]));
+
+ // Uppercase each word in name
+ StringBuilder name = new StringBuilder(tokenProps[4]);
+ i = 0;
+ do {
+ name.replace(i, i + 1, name.substring(i,i + 1).toUpperCase());
+ i = name.indexOf(" ", i) + 1;
+ } while (i > 0 && i < name.length());
+ c.setName(name.toString());
+
+ i = 4;
+ while(isetupQuest.
*
* @param qa a {@link forge.Quest_Assignment} object.
*/
+
+ /*
public static void setupQuest(Quest_Assignment qa) {
QuestBoosterPack pack = new QuestBoosterPack();
qa.clearCompy();
int id = qa.getId();
+ Generator cards = YieldUtils.toGenerator(AllZone.getCardFactory());
+
if (id == 1) //White Dungeon
{
qa.addCompy("Divine Presence");
- qa.setCardRewardList(pack.generateCards(3, CardRarity.Rare, Constant.Color.White));
+ qa.setCardRewardList(pack.generateCards(cards, 3, Constant.Rarity.Rare, Constant.Color.White));
} else if (id == 2) //Blue Dungeon
{
CardList humanList = new CardList();
@@ -115,17 +197,17 @@ public class QuestUtil {
qa.addCompy("Forced Fruition");
- qa.setCardRewardList(pack.generateCards(3, CardRarity.Rare, Constant.Color.Blue));
+ qa.setCardRewardList(pack.generateCards(cards, 3, Constant.Rarity.Rare, Constant.Color.Blue));
} else if (id == 3) //Black Dungeon
{
qa.addCompy("Infernal Genesis");
- qa.setCardRewardList(pack.generateCards(3, CardRarity.Rare, Constant.Color.Black));
+ qa.setCardRewardList(pack.generateCards(cards, 3, Constant.Rarity.Rare, Constant.Color.Black));
} else if (id == 4) //Red Dungeon
{
qa.addCompy("Furnace of Rath");
- qa.setCardRewardList(pack.generateCards(3, CardRarity.Rare, Constant.Color.Red));
+ qa.setCardRewardList(pack.generateCards(cards, 3, Constant.Rarity.Rare, Constant.Color.Red));
} else if (id == 5) //Green Dungeon
{
CardList humanList = new CardList();
@@ -141,17 +223,17 @@ public class QuestUtil {
qa.addCompy("Eladamri's Vineyard");
qa.addCompy("Upwelling");
- qa.setCardRewardList(pack.generateCards(3, CardRarity.Rare, Constant.Color.Green));
+ qa.setCardRewardList(pack.generateCards(cards, 3, Constant.Rarity.Rare, Constant.Color.Green));
} else if (id == 6) //Colorless Dungeon
{
for (int i = 0; i < 3; i++)
qa.addCompy("Eon Hub");
- qa.setCardRewardList(pack.generateCards(3, CardRarity.Rare, Constant.Color.Colorless));
+ qa.setCardRewardList(pack.generateCards(cards, 3, Constant.Rarity.Rare, Constant.Color.Colorless));
} else if (id == 7) //Gold Dungeon
{
qa.addCompy("Darksteel Ingot");
- qa.setCardRewardList(pack.generateCards(3, CardRarity.Rare, "Multicolor"));
+ qa.setCardRewardList(pack.generateCards(cards, 3, Constant.Rarity.Rare, "Multicolor"));
} else if (id == 8) {
CardList humanList = new CardList();
for (int i = 0; i < 3; i++) {
@@ -176,7 +258,7 @@ public class QuestUtil {
humanList.add(c);
}
qa.setHuman(humanList);
- qa.setCardRewardList(pack.generateCards(3, CardRarity.Rare, null));
+ qa.setCardRewardList(pack.generateCards(cards, 3, Constant.Rarity.Rare, null));
} else if (id == 9) {
CardList humanList = new CardList();
Card c = AllZone.getCardFactory().getCard("Trusty Machete", AllZone.getHumanPlayer());
@@ -191,7 +273,7 @@ public class QuestUtil {
for (int i = 0; i < 3; i++)
qa.addCompy("Wall of Wood");
- qa.setCardRewardList(pack.generateCards(4, CardRarity.Rare, Constant.Color.Green));
+ qa.setCardRewardList(pack.generateCards(cards, 4, Constant.Rarity.Rare, Constant.Color.Green));
} else if (id == 10) {
CardList humanList = new CardList();
@@ -229,7 +311,7 @@ public class QuestUtil {
qa.addCompy("Scathe Zombies");
qa.addCompy("Mass of Ghouls");
- qa.setCardRewardList(pack.generateCards(4, CardRarity.Rare, Constant.Color.Black));
+ qa.setCardRewardList(pack.generateCards(cards, 4, Constant.Rarity.Rare, Constant.Color.Black));
} else if (id == 11) // The King's Contest
{
CardList humanList = new CardList();
@@ -244,7 +326,7 @@ public class QuestUtil {
qa.addCompy("Loyal Retainers");
- qa.setCardRewardList(pack.generateCards(3, CardRarity.Rare, null));
+ qa.setCardRewardList(pack.generateCards(cards, 3, Constant.Rarity.Rare, null));
} else if (id == 12) // Barroom Brawl
{
CardList humanList = new CardList();
@@ -275,7 +357,7 @@ public class QuestUtil {
qa.addCompy("Lowland Giant");
- qa.setCardRewardList(pack.generateCards(4, CardRarity.Rare, null));
+ qa.setCardRewardList(pack.generateCards(cards, 4, Constant.Rarity.Rare, null));
} else if (id == 13) // The Court Jester
{
CardList humanList = new CardList();
@@ -290,7 +372,7 @@ public class QuestUtil {
qa.addCompy("Teferi's Puzzle Box");
- qa.setCardRewardList(pack.generateCards(4, CardRarity.Rare, "Multicolor"));
+ qa.setCardRewardList(pack.generateCards(cards, 4, Constant.Rarity.Rare, "Multicolor"));
} else if (id == 14) // Ancient Battlefield
{
CardList humanList = new CardList();
@@ -312,7 +394,7 @@ public class QuestUtil {
qa.addCompy(compySetupCards[i]);
}
- qa.setCardRewardList(pack.generateCards(4, CardRarity.Rare, null));
+ qa.setCardRewardList(pack.generateCards(cards, 4, Constant.Rarity.Rare, null));
} else if (id == 15) // Don't Play With Matches
{
CardList humanList = new CardList();
@@ -334,11 +416,11 @@ public class QuestUtil {
qa.addCompy(compySetupCards[i]);
}
- qa.setCardRewardList(pack.generateCards(4, CardRarity.Rare, Constant.Color.Red));
+ qa.setCardRewardList(pack.generateCards(cards, 4, Constant.Rarity.Rare, Constant.Color.Red));
} else if (id == 16) // Mines of Kazum Durl
{
CardList humanList = new CardList();
- String[] humanSetupCards = {"Dwarven Demolition Team", "Dwarven Pony", "Dwarven Trader"};
+ String humanSetupCards[] = {"Dwarven Demolition Team", "Dwarven Pony", "Dwarven Trader"};
for (int i = 0; i < 3; i++) {
Card c = AllZone.getCardFactory().getCard(humanSetupCards[i], AllZone.getHumanPlayer());
@@ -350,18 +432,18 @@ public class QuestUtil {
}
qa.setHuman(humanList);
- String[] compySetupCards =
+ String compySetupCards[] =
{"Wall of Earth", "Wall of Air", "Wall of Ice", "Wall of Light", "Carrion Wall", "Steel Wall"};
for (int i = 0; i < 6; i++) {
qa.addCompy(compySetupCards[i]);
}
- qa.setCardRewardList(pack.generateCards(4, CardRarity.Rare, Constant.Color.Green));
+ qa.setCardRewardList(pack.generateCards(cards, 4, Constant.Rarity.Rare, Constant.Color.Green));
} else if (id == 17) // House Party
{
CardList humanList = new CardList();
- String[] humanSetupCards = {"Hopping Automaton", "Honden of Life's Web", "Forbidden Orchard"};
+ String humanSetupCards[] = {"Hopping Automaton", "Honden of Life's Web", "Forbidden Orchard"};
for (int i = 0; i < 3; i++) {
Card c = AllZone.getCardFactory().getCard(humanSetupCards[i], AllZone.getHumanPlayer());
@@ -373,17 +455,17 @@ public class QuestUtil {
}
qa.setHuman(humanList);
- String[] compySetupCards = {"Honden of Infinite Rage", "Mikokoro, Center of the Sea", "Tidehollow Strix"};
+ String compySetupCards[] = {"Honden of Infinite Rage", "Mikokoro, Center of the Sea", "Tidehollow Strix"};
for (int i = 0; i < 3; i++) {
qa.addCompy(compySetupCards[i]);
}
- qa.setCardRewardList(pack.generateCards(4, CardRarity.Rare, Constant.Color.Colorless));
+ qa.setCardRewardList(pack.generateCards(cards, 4, Constant.Rarity.Rare, Constant.Color.Colorless));
} else if (id == 18) // Crows in the Field
{
CardList humanList = new CardList();
- String[] humanSetupCards = {"Straw Soldiers", "Femeref Archers", "Moonglove Extract"};
+ String humanSetupCards[] = {"Straw Soldiers", "Femeref Archers", "Moonglove Extract"};
for (int i = 0; i < 3; i++) {
Card c = AllZone.getCardFactory().getCard(humanSetupCards[i], AllZone.getHumanPlayer());
@@ -395,17 +477,17 @@ public class QuestUtil {
}
qa.setHuman(humanList);
- String[] compySetupCards = {"Defiant Falcon", "Soulcatcher", "Storm Crow", "Hypnotic Specter"};
+ String compySetupCards[] = {"Defiant Falcon", "Soulcatcher", "Storm Crow", "Hypnotic Specter"};
for (int i = 0; i < 4; i++) {
qa.addCompy(compySetupCards[i]);
}
- qa.setCardRewardList(pack.generateCards(5, CardRarity.Rare, null));
+ qa.setCardRewardList(pack.generateCards(cards, 5, Constant.Rarity.Rare, null));
} else if (id == 19) // The Desert Caravan
{
CardList humanList = new CardList();
- String[] humanSetupCards = {"Spidersilk Net", "Dromad Purebred"};
+ String humanSetupCards[] = {"Spidersilk Net", "Dromad Purebred"};
for (int i = 0; i < 2; i++) {
Card c = AllZone.getCardFactory().getCard(humanSetupCards[i], AllZone.getHumanPlayer());
@@ -417,17 +499,17 @@ public class QuestUtil {
}
qa.setHuman(humanList);
- String[] compySetupCards = {"Ambush Party", "Ambush Party", "Gnat Alley Creeper", "Ambush Party", "Ambush Party"};
+ String compySetupCards[] = {"Ambush Party", "Ambush Party", "Gnat Alley Creeper", "Ambush Party", "Ambush Party"};
for (int i = 0; i < 5; i++) {
qa.addCompy(compySetupCards[i]);
}
- qa.setCardRewardList(pack.generateCards(5, CardRarity.Rare, null));
+ qa.setCardRewardList(pack.generateCards(cards, 5, Constant.Rarity.Rare, null));
} else if (id == 20) // Blood Oath
{
CardList humanList = new CardList();
- String[] humanSetupCards = {"Counterbalance", "Hatching Plans", "Ley Druid"};
+ String humanSetupCards[] = {"Counterbalance", "Hatching Plans", "Ley Druid"};
for (int i = 0; i < 3; i++) {
Card c = AllZone.getCardFactory().getCard(humanSetupCards[i], AllZone.getHumanPlayer());
@@ -439,13 +521,13 @@ public class QuestUtil {
}
qa.setHuman(humanList);
- String[] compySetupCards = {"Ior Ruin Expedition", "Oversold Cemetery", "Trapjaw Kelpie"};
+ String compySetupCards[] = {"Ior Ruin Expedition", "Oversold Cemetery", "Trapjaw Kelpie"};
for (int i = 0; i < 3; i++) {
qa.addCompy(compySetupCards[i]);
}
- qa.setCardRewardList(pack.generateCards(5, CardRarity.Rare, Constant.Color.Colorless));
+ qa.setCardRewardList(pack.generateCards(cards, 5, Constant.Rarity.Rare, Constant.Color.Colorless));
} else if (id == 21) // Private Domain
{
CardList humanList = new CardList();
@@ -459,17 +541,16 @@ public class QuestUtil {
qa.setHuman(humanList);
- String[] compySetupCards = {"Plains", "Island", "Swamp", "Mountain", "Forest"};
+ String compySetupCards[] = {"Plains", "Island", "Swamp", "Mountain", "Forest"};
- for (int i = 0; i < 5; i++) {
+ for (int i = 0; i < 5; i++)
qa.addCompy(compySetupCards[i]);
- }
- qa.setCardRewardList(pack.generateCards(6, CardRarity.Rare, null));
+ qa.setCardRewardList(pack.generateCards(cards, 6, Constant.Rarity.Rare, null));
} else if (id == 22) // Pied Piper
{
CardList humanList = new CardList();
- String[] humanSetupCards = {"Volunteer Militia", "Land Tax", "Elvish Farmer", "An-Havva Township"};
+ String humanSetupCards[] = {"Volunteer Militia", "Land Tax", "Elvish Farmer", "An-Havva Township"};
for (int i = 0; i < 4; i++) {
Card c = AllZone.getCardFactory().getCard(humanSetupCards[i], AllZone.getHumanPlayer());
@@ -481,15 +562,15 @@ public class QuestUtil {
}
qa.setHuman(humanList);
- String[] compySetupCards = {"Darksteel Citadel", "Relentless Rats"};
+ String compySetupCards[] = {"Darksteel Citadel", "Relentless Rats"};
- for (int i = 0; i < 2; i++) {
+ for (int i = 0; i < 2; i++)
qa.addCompy(compySetupCards[i]);
- }
- qa.setCardRewardList(pack.generateCards(3, CardRarity.Rare, null));
+ qa.setCardRewardList(pack.generateCards(cards, 3, Constant.Rarity.Rare, null));
}
}
+ */
-} //QuestUtil
+}//QuestUtil