From c49bf52b8f3a1bf57d9058e2df55496156378edc Mon Sep 17 00:00:00 2001 From: Maxmtg Date: Fri, 22 Feb 2013 22:50:40 +0000 Subject: [PATCH] * restores token images Card: dropped imageName field (which was commonly mixed up with imageFileName) Starting cards for quest and challenges no longer use functions (CardToken helps a lot) Quest challenges code: Token parsing remake (to produce CardRules instance and wrap it into CardToken) some utility functions were moved closer to usage points --- src/main/java/forge/Card.java | 26 -------- src/main/java/forge/CardUtil.java | 2 +- src/main/java/forge/ImageCache.java | 2 +- .../java/forge/card/CardCharacteristics.java | 22 ------- .../java/forge/card/ability/AbilityUtils.java | 36 ++++++++++- .../java/forge/card/ability/ai/AttachAi.java | 32 ++++++++-- .../ability/effects/CopyPermanentEffect.java | 2 +- .../card/ability/effects/EffectEffect.java | 5 +- .../forge/card/cardfactory/CardFactory.java | 17 ++--- .../card/cardfactory/CardFactoryUtil.java | 64 +------------------ src/main/java/forge/game/GameNew.java | 6 +- .../forge/game/PlayerStartConditions.java | 24 ++++--- .../gui/home/quest/SSubmenuQuestUtil.java | 9 +-- src/main/java/forge/item/CardToken.java | 4 +- src/main/java/forge/quest/QuestUtil.java | 58 ++++++++--------- 15 files changed, 120 insertions(+), 189 deletions(-) diff --git a/src/main/java/forge/Card.java b/src/main/java/forge/Card.java index cf931b91f41..5c4faf47a73 100644 --- a/src/main/java/forge/Card.java +++ b/src/main/java/forge/Card.java @@ -3524,32 +3524,6 @@ public class Card extends GameEntity implements Comparable { return this.sickness && this.isCreature() && !this.hasKeyword("Haste"); } - /** - *

- * Setter for the field imageName. - *

- * - * @param s - * a {@link java.lang.String} object. - */ - public final void setImageName(final String s) { - this.getCharacteristics().setImageName(s); - } - - /** - *

- * Getter for the field imageName. - *

- * - * @return a {@link java.lang.String} object. - */ - public final String getImageName() { - if (!this.getCharacteristics().getImageName().equals("")) { - return this.getCharacteristics().getImageName(); - } - return this.getName(); - } - /** *

* Getter for the field owner. diff --git a/src/main/java/forge/CardUtil.java b/src/main/java/forge/CardUtil.java index 4d30ab8fd6f..b2a5d71db46 100644 --- a/src/main/java/forge/CardUtil.java +++ b/src/main/java/forge/CardUtil.java @@ -477,7 +477,7 @@ public final class CardUtil { ret.setName(""); ret.setType(types); - ret.setImageName(NewConstants.MORPH_IMAGE_FILE_NAME); + ret.setImageFilename(NewConstants.MORPH_IMAGE_FILE_NAME); return ret; } diff --git a/src/main/java/forge/ImageCache.java b/src/main/java/forge/ImageCache.java index a44dcd59b4e..91b8ed14510 100644 --- a/src/main/java/forge/ImageCache.java +++ b/src/main/java/forge/ImageCache.java @@ -144,7 +144,7 @@ public class ImageCache { private static String getKey(final Card card) { if ((card.isToken() && !card.isCopiedToken()) || card.isFaceDown()) { - return ImageCache.TOKEN + GuiDisplayUtil.cleanString(card.getImageName()); + return ImageCache.TOKEN + GuiDisplayUtil.cleanString(card.getImageFilename()); } return card.getImageFilename(); // key; diff --git a/src/main/java/forge/card/CardCharacteristics.java b/src/main/java/forge/card/CardCharacteristics.java index a2cf4e3491a..52c1bee575e 100644 --- a/src/main/java/forge/card/CardCharacteristics.java +++ b/src/main/java/forge/card/CardCharacteristics.java @@ -51,7 +51,6 @@ public class CardCharacteristics { private ArrayList staticAbilities = new ArrayList(); private ArrayList staticAbilityStrings = new ArrayList(); private String imageFilename = ""; - private String imageName = ""; private Map sVars = new TreeMap(); /** @@ -308,25 +307,6 @@ public class CardCharacteristics { this.staticAbilityStrings = staticAbilityStrings0; } - /** - * Gets the image name. - * - * @return the imageName - */ - public String getImageName() { - return this.imageName; - } - - /** - * Sets the image name. - * - * @param imageName0 - * the imageName to set - */ - public void setImageName(final String imageName0) { - this.imageName = imageName0; - } - /** * @return the replacementEffects */ @@ -426,8 +406,6 @@ public class CardCharacteristics { this.staticAbilityStrings = new ArrayList(source.getStaticAbilityStrings()); // String imageFilename = copy reference this.imageFilename = source.getImageFilename(); - // String imageName = ""; - this.imageName = source.getImageName(); // Map sVars this.sVars = new TreeMap(source.getSVars()); this.replacementEffects = new ArrayList(); diff --git a/src/main/java/forge/card/ability/AbilityUtils.java b/src/main/java/forge/card/ability/AbilityUtils.java index b4766a299a8..96af9fd970a 100644 --- a/src/main/java/forge/card/ability/AbilityUtils.java +++ b/src/main/java/forge/card/ability/AbilityUtils.java @@ -328,7 +328,7 @@ public class AbilityUtils { } if (calcX[0].startsWith("Count")) { - return CardFactoryUtil.xCount(card, calcX[1], ability) * multiplier; + return AbilityUtils.xCount(card, calcX[1], ability) * multiplier; } else if (calcX[0].startsWith("Number")) { return CardFactoryUtil.xCount(card, svarval) * multiplier; } else if (calcX[0].startsWith("SVar")) { @@ -1196,4 +1196,38 @@ public class AbilityUtils { resolveSubAbilities(sa, usedStack, game); } + /** + *

+ * Parse non-mana X variables. + *

+ * + * @param c + * a {@link forge.Card} object. + * @param s + * a {@link java.lang.String} object. + * @param sa + * a {@link forge.SpellAbility} object. + * @return a int. + */ + public static int xCount(final Card c, final String s, final SpellAbility sa) { + + final String[] l = s.split("/"); + final String[] m = CardFactoryUtil.parseMath(l); + + final String[] sq; + sq = l[0].split("\\."); + + if (sa != null) { + // Count$Kicked.. + if (sq[0].startsWith("Kicked")) { + if (sa.isKicked()) { + return CardFactoryUtil.doXMath(Integer.parseInt(sq[1]), m, c); // Kicked + } else { + return CardFactoryUtil.doXMath(Integer.parseInt(sq[2]), m, c); // not Kicked + } + } + } + return CardFactoryUtil.xCount(c, s); + } + } diff --git a/src/main/java/forge/card/ability/ai/AttachAi.java b/src/main/java/forge/card/ability/ai/AttachAi.java index 9110874cf43..09f40c72ddf 100644 --- a/src/main/java/forge/card/ability/ai/AttachAi.java +++ b/src/main/java/forge/card/ability/ai/AttachAi.java @@ -499,8 +499,8 @@ public class AttachAi extends SpellAbilityAi { continue; } if ((affected.contains(stCheck) || affected.contains("AttachedBy"))) { - totToughness += CardFactoryUtil.parseSVar(attachSource, stabMap.get("AddToughness")); - totPower += CardFactoryUtil.parseSVar(attachSource, stabMap.get("AddPower")); + totToughness += AttachAi.parseSVar(attachSource, stabMap.get("AddToughness")); + totPower += AttachAi.parseSVar(attachSource, stabMap.get("AddPower")); String kws = stabMap.get("AddKeyword"); if (kws != null) { @@ -611,6 +611,30 @@ public class AttachAi extends SpellAbilityAi { return true; } + /** + * parseSVar TODO - flesh out javadoc for this method. + * + * @param hostCard + * the Card with the SVar on it + * @param amount + * a String + * @return the calculated number + */ + public static int parseSVar(final Card hostCard, final String amount) { + int num = 0; + if (amount == null) { + return num; + } + + try { + num = Integer.valueOf(amount); + } catch (final NumberFormatException e) { + num = CardFactoryUtil.xCount(hostCard, hostCard.getSVar(amount).split("\\$")[1]); + } + + return num; + } + /** * Attach preference. * @@ -720,8 +744,8 @@ public class AttachAi extends SpellAbilityAi { continue; } if ((affected.contains(stCheck) || affected.contains("AttachedBy"))) { - totToughness += CardFactoryUtil.parseSVar(attachSource, stabMap.get("AddToughness")); - totPower += CardFactoryUtil.parseSVar(attachSource, stabMap.get("AddPower")); + totToughness += AttachAi.parseSVar(attachSource, stabMap.get("AddToughness")); + totPower += AttachAi.parseSVar(attachSource, stabMap.get("AddPower")); grantingAbilities |= stabMap.containsKey("AddAbility"); diff --git a/src/main/java/forge/card/ability/effects/CopyPermanentEffect.java b/src/main/java/forge/card/ability/effects/CopyPermanentEffect.java index c9b819bb263..521ee2cb8be 100644 --- a/src/main/java/forge/card/ability/effects/CopyPermanentEffect.java +++ b/src/main/java/forge/card/ability/effects/CopyPermanentEffect.java @@ -93,7 +93,7 @@ public class CopyPermanentEffect extends SpellAbilityEffect { copy = CardFactoryUtil.copyStats(c); copy.setName(c.getName()); - copy.setImageName(c.getImageName()); + copy.setImageFilename(c.getImageFilename()); copy.setOwner(controller); copy.addController(controller); diff --git a/src/main/java/forge/card/ability/effects/EffectEffect.java b/src/main/java/forge/card/ability/effects/EffectEffect.java index 4b00354e6f4..df9dd9867ae 100644 --- a/src/main/java/forge/card/ability/effects/EffectEffect.java +++ b/src/main/java/forge/card/ability/effects/EffectEffect.java @@ -104,13 +104,10 @@ public class EffectEffect extends SpellAbilityEffect { // nuked eff.addController(controller); eff.setOwner(controller); - eff.setImageName(hostCard.getImageName()); + eff.setImageFilename(hostCard.getImageFilename()); eff.setColor(hostCard.getColor()); eff.setImmutable(true); eff.setEffectSource(hostCard); - if (sa.hasParam("Image")) { - eff.setImageName(sa.getParam("Image")); - } // Effects should be Orange or something probably diff --git a/src/main/java/forge/card/cardfactory/CardFactory.java b/src/main/java/forge/card/cardfactory/CardFactory.java index 651e9f746d8..0ae370558d2 100644 --- a/src/main/java/forge/card/cardfactory/CardFactory.java +++ b/src/main/java/forge/card/cardfactory/CardFactory.java @@ -234,11 +234,16 @@ public class CardFactory { public final Card getCard(final IPaperCard cp, final Player owner) { //System.out.println(cardName); - Card c = this.getCard2(cp.getRules(), owner); + CardRules cardRules = cp.getRules(); + final Card c = readCard(cardRules); + c.setRules(cardRules); + c.setOwner(owner); + buildAbilities(c); c.setCurSetCode(cp.getEdition()); c.setRandomPicture(cp.getArtIndex() + 1); String originalPicture = cp.getImageFilename(); + //System.out.println(c.getName() + " -> " + originalPicture); c.setImageFilename(originalPicture); c.setToken(cp.isToken()); @@ -263,14 +268,6 @@ public class CardFactory { } - protected Card getCard2(final CardRules cardRules, final Player owner) { - final Card card = readCard(cardRules); - card.setRules(cardRules); - card.setOwner(owner); - buildAbilities(card); - return card; - } - private static void buildAbilities(final Card card) { final String cardName = card.getName(); @@ -319,7 +316,7 @@ public class CardFactory { - public static Card readCard(final CardRules rules) { + private static Card readCard(final CardRules rules) { final Card card = new Card(); diff --git a/src/main/java/forge/card/cardfactory/CardFactoryUtil.java b/src/main/java/forge/card/cardfactory/CardFactoryUtil.java index f34524f6fd5..1d04014358f 100644 --- a/src/main/java/forge/card/cardfactory/CardFactoryUtil.java +++ b/src/main/java/forge/card/cardfactory/CardFactoryUtil.java @@ -1947,64 +1947,6 @@ public class CardFactoryUtil { return CardFactoryUtil.doXMath(n, m, source); } - /** - * parseSVar TODO - flesh out javadoc for this method. - * - * @param hostCard - * the Card with the SVar on it - * @param amount - * a String - * @return the calculated number - */ - public static int parseSVar(final Card hostCard, final String amount) { - int num = 0; - if (amount == null) { - return num; - } - - try { - num = Integer.valueOf(amount); - } catch (final NumberFormatException e) { - num = CardFactoryUtil.xCount(hostCard, hostCard.getSVar(amount).split("\\$")[1]); - } - - return num; - } - - /** - *

- * Parse non-mana X variables. - *

- * - * @param c - * a {@link forge.Card} object. - * @param s - * a {@link java.lang.String} object. - * @param sa - * a {@link forge.SpellAbility} object. - * @return a int. - */ - public static int xCount(final Card c, final String s, final SpellAbility sa) { - - final String[] l = s.split("/"); - final String[] m = CardFactoryUtil.parseMath(l); - - final String[] sq; - sq = l[0].split("\\."); - - if (sa != null) { - // Count$Kicked.. - if (sq[0].startsWith("Kicked")) { - if (sa.isKicked()) { - return CardFactoryUtil.doXMath(Integer.parseInt(sq[1]), m, c); // Kicked - } else { - return CardFactoryUtil.doXMath(Integer.parseInt(sq[2]), m, c); // not Kicked - } - } - } - return xCount(c, s); - } - /** *

* Parse non-mana X variables. @@ -3295,7 +3237,7 @@ public class CardFactoryUtil { final List list = new ArrayList(); final Card c = new Card(); c.setName(name); - c.setImageName(imageName); + c.setImageFilename(imageName); // TODO - most tokens mana cost is 0, this needs to be fixed // c.setManaCost(manaCost); @@ -3356,7 +3298,7 @@ public class CardFactoryUtil { final List kal = thisToken.getIntrinsicKeyword(); final String[] tokenKeywords = new String[kal.size()]; kal.toArray(tokenKeywords); - final List tokens = CardFactoryUtil.makeToken(thisToken.getName(), thisToken.getImageName(), + final List tokens = CardFactoryUtil.makeToken(thisToken.getName(), thisToken.getImageFilename(), thisToken.getController(), thisToken.getManaCost().toString(), tokenTypes, thisToken.getBaseAttack(), thisToken.getBaseDefense(), tokenKeywords); @@ -3607,7 +3549,6 @@ public class CardFactoryUtil { to.setSVars(from.getSVars()); to.setIntrinsicAbilities(from.getIntrinsicAbilities()); - to.setImageName(from.getImageName()); to.setImageFilename(from.getImageFilename()); to.setTriggers(from.getTriggers()); to.setReplacementEffects(from.getReplacementEffects()); @@ -4222,7 +4163,6 @@ public class CardFactoryUtil { // play it gets nuked eff.addController(card.getController()); eff.setOwner(card.getController()); - eff.setImageName(card.getImageName()); eff.setColor(card.getColor()); eff.setImmutable(true); eff.setEffectSource(card); diff --git a/src/main/java/forge/game/GameNew.java b/src/main/java/forge/game/GameNew.java index ea2008a1d14..c22b0643d92 100644 --- a/src/main/java/forge/game/GameNew.java +++ b/src/main/java/forge/game/GameNew.java @@ -221,10 +221,12 @@ public class GameNew { return myRemovedAnteCards; } - private static void putCardsOnBattlefield(Player player, Iterable cards) { + private static void putCardsOnBattlefield(Player player, Iterable cards) { PlayerZone bf = player.getZone(ZoneType.Battlefield); if (cards != null) { - for (final Card c : cards) { + for (final IPaperCard cp : cards) { + Card c = cp.toForgeCard(player); + c.setOwner(player); c.addController(player); bf.add(c, false); c.setSickness(true); diff --git a/src/main/java/forge/game/PlayerStartConditions.java b/src/main/java/forge/game/PlayerStartConditions.java index aa39bb187d5..5b8685b1cb5 100644 --- a/src/main/java/forge/game/PlayerStartConditions.java +++ b/src/main/java/forge/game/PlayerStartConditions.java @@ -3,12 +3,10 @@ package forge.game; import java.util.ArrayList; import java.util.Collections; -import com.google.common.base.Function; - -import forge.Card; import forge.deck.Deck; import forge.game.player.Player; import forge.item.CardPrinted; +import forge.item.IPaperCard; public class PlayerStartConditions { @@ -18,9 +16,9 @@ public class PlayerStartConditions { private static final Iterable EmptyList = Collections.unmodifiableList(new ArrayList()); private int startingLife = 20; private int startingHand = 7; - private Function> cardsOnBattlefield = null; - private Iterable cardsInCommand = null; - private Iterable schemes = null; + private Iterable cardsOnBattlefield = null; + private Iterable cardsInCommand = null; + private Iterable schemes = null; private Iterable planes = null; public PlayerStartConditions(Deck deck0) { @@ -44,15 +42,15 @@ public class PlayerStartConditions { public final int getStartingLife() { return startingLife; } - public final Iterable getCardsOnBattlefield(Player p) { - return cardsOnBattlefield == null ? null : cardsOnBattlefield.apply(p); + public final Iterable getCardsOnBattlefield(Player p) { + return cardsOnBattlefield == null ? EmptyList : cardsOnBattlefield; } public final void setStartingLife(int startingLife) { this.startingLife = startingLife; } - public final void setCardsOnBattlefield(Function> cardsOnTable) { + public final void setCardsOnBattlefield(Iterable cardsOnTable) { this.cardsOnBattlefield = cardsOnTable; } @@ -73,28 +71,28 @@ public class PlayerStartConditions { /** * @return the cardsInCommand */ - public Iterable getCardsInCommand(Player p) { + public Iterable getCardsInCommand(Player p) { return cardsInCommand == null ? EmptyList : cardsInCommand; } /** * @param function the cardsInCommand to set */ - public void setCardsInCommand(Iterable function) { + public void setCardsInCommand(Iterable function) { this.cardsInCommand = function; } /** * @return the schemes */ - public Iterable getSchemes(Player p) { + public Iterable getSchemes(Player p) { return schemes == null ? EmptyList : schemes; } /** * @param schemes0 the schemes to set */ - public void setSchemes(Iterable s) { + public void setSchemes(Iterable s) { this.schemes = s; } diff --git a/src/main/java/forge/gui/home/quest/SSubmenuQuestUtil.java b/src/main/java/forge/gui/home/quest/SSubmenuQuestUtil.java index 8f60e1d9d1b..7299beac27e 100644 --- a/src/main/java/forge/gui/home/quest/SSubmenuQuestUtil.java +++ b/src/main/java/forge/gui/home/quest/SSubmenuQuestUtil.java @@ -11,8 +11,6 @@ import javax.swing.SwingWorker; import org.apache.commons.lang3.tuple.ImmutablePair; -import com.google.common.base.Function; -import forge.Card; import forge.Singletons; import forge.card.CardEdition; import forge.control.FControl; @@ -21,7 +19,6 @@ import forge.game.GameType; import forge.game.MatchStartHelper; import forge.game.PlayerStartConditions; import forge.game.player.LobbyPlayer; -import forge.game.player.Player; import forge.game.player.PlayerType; import forge.gui.GuiChoose; import forge.gui.SOverlayUtils; @@ -413,10 +410,8 @@ public class SSubmenuQuestUtil { humanStart.setStartingLife(qData.getAssets().getLife(qData.getMode()) + extraLifeHuman); aiStart.setStartingLife(lifeAI); - humanStart.setCardsOnBattlefield(new Function>() { - @Override public Iterable apply(Player p) { return QuestUtil.getHumanStartingCards(qData, event, p); } }); - aiStart.setCardsOnBattlefield(new Function>() { - @Override public Iterable apply(Player p) { return QuestUtil.getComputerStartingCards(event, p); } }); + humanStart.setCardsOnBattlefield(QuestUtil.getHumanStartingCards(qData, event)); + aiStart.setCardsOnBattlefield(QuestUtil.getComputerStartingCards(event)); } // End isFantasy MatchStartHelper msh = new MatchStartHelper(); diff --git a/src/main/java/forge/item/CardToken.java b/src/main/java/forge/item/CardToken.java index 3887806c9e0..4bdd47fe8ff 100644 --- a/src/main/java/forge/item/CardToken.java +++ b/src/main/java/forge/item/CardToken.java @@ -1,7 +1,6 @@ package forge.item; import forge.Card; -import forge.ImageCache; import forge.Singletons; import forge.card.CardRarity; import forge.card.CardRules; @@ -20,6 +19,7 @@ public class CardToken implements InventoryItemFromSet, IPaperCard { this.card = c; this.name = c.getName(); this.edition = edition0; + this.imageFileName = imageFileName; } @Override public String getName() { return name; } @@ -31,7 +31,7 @@ public class CardToken implements InventoryItemFromSet, IPaperCard { @Override public CardRarity getRarity() { return CardRarity.Common; } // They don't have rarity though! - @Override public String getImageFilename() { return ImageCache.TOKEN + imageFileName; } + @Override public String getImageFilename() { return imageFileName; } @Override public String getItemType() { return "Token"; } @Override public Card getMatchingForgeCard() { return toForgeCard(null); } // hope this won't be queried too frequently, so no cache diff --git a/src/main/java/forge/quest/QuestUtil.java b/src/main/java/forge/quest/QuestUtil.java index feb76b64434..c879ecad095 100644 --- a/src/main/java/forge/quest/QuestUtil.java +++ b/src/main/java/forge/quest/QuestUtil.java @@ -19,9 +19,11 @@ package forge.quest; import forge.Card; -import forge.game.player.Player; +import forge.card.CardEdition; +import forge.card.CardRulesReader; import forge.item.CardDb; import forge.item.CardToken; +import forge.item.IPaperCard; import forge.quest.bazaar.QuestPetController; import java.util.ArrayList; @@ -62,11 +64,11 @@ public class QuestUtil { * a {@link forge.quest.QuestEvent} object. * @return a {@link forge.CardList} object. */ - public static List getComputerStartingCards(final QuestEvent qe, Player ai) { - final List list = new ArrayList(); + public static List getComputerStartingCards(final QuestEvent qe) { + final List list = new ArrayList(); for (final String s : qe.getAiExtraCards()) { - list.add(QuestUtil.readExtraCard(s, ai)); + list.add(QuestUtil.readExtraCard(s)); } return list; @@ -83,18 +85,16 @@ public class QuestUtil { * a {@link forge.quest.data.QuestData} object. * @return a {@link forge.CardList} object. */ - public static List getHumanStartingCards(final QuestController qc, Player human) { - final List list = new ArrayList(); + public static List getHumanStartingCards(final QuestController qc) { + final List list = new ArrayList(); for (int iSlot = 0; iSlot < QuestController.MAX_PET_SLOTS; iSlot++) { String petName = qc.getSelectedPet(iSlot); QuestPetController pet = qc.getPetsStorage().getPet(petName); if (pet != null) { - CardToken c = pet.getPetCard(qc.getAssets()); + IPaperCard c = pet.getPetCard(qc.getAssets()); if (c != null) { - Card copy = c.toForgeCard(human); - copy.setSickness(true); - list.add(copy); + list.add(c); } } } @@ -115,10 +115,10 @@ public class QuestUtil { * a {@link forge.quest.QuestEvent} object. * @return a {@link forge.CardList} object. */ - public static List getHumanStartingCards(final QuestController qc, final QuestEvent qe, final Player human) { - final List list = QuestUtil.getHumanStartingCards(qc, human); + public static List getHumanStartingCards(final QuestController qc, final QuestEvent qe) { + final List list = QuestUtil.getHumanStartingCards(qc); for (final String s : qe.getHumanExtraCards()) { - list.add(QuestUtil.readExtraCard(s, human)); + list.add(QuestUtil.readExtraCard(s)); } return list; } @@ -134,24 +134,17 @@ public class QuestUtil { * (TOKEN;W;1;1;sheep;type;type;type...) * @return token Card */ - public static Card createToken(final String s) { - final String[] properties = s.split(";"); - final Card c = new Card(); - c.setToken(true); + public static CardToken createToken(final String s) { + final String[] properties = s.split(";", 5); + List script = new ArrayList(); + script.add("Name:" + properties[4]); + script.add("Colors:" + properties[1]); + script.add("PT:"+ properties[2] + "/" + properties[3]); + script.add("Types:" + properties[5].replace(';', ' ')); // c.setManaCost(properties[1]); - c.addColor(properties[1]); - c.setBaseAttack(Integer.parseInt(properties[2])); - c.setBaseDefense(Integer.parseInt(properties[3])); - c.setName(properties[4]); - - c.setImageName(properties[1] + " " + properties[2] + " " + properties[3] + " " + properties[4]); - - int x = 5; - while (x != properties.length) { - c.addType(properties[x++]); - } - + String fileName = properties[1] + " " + properties[2] + " " + properties[3] + " " + properties[4]; + final CardToken c = new CardToken(CardRulesReader.parseSingleCard(script), CardEdition.UNKNOWN.getCode(), fileName); return c; } @@ -167,16 +160,15 @@ public class QuestUtil { * the owner * @return the card */ - public static Card readExtraCard(final String name, Player owner) { + public static IPaperCard readExtraCard(final String name) { // Token card creation - Card tempcard; + IPaperCard tempcard; if (name.startsWith("TOKEN")) { tempcard = QuestUtil.createToken(name); - tempcard.setOwner(owner); return tempcard; } // Standard card creation - return CardDb.instance().getCard(name, true).toForgeCard(owner); + return CardDb.instance().getCard(name, true); } } // QuestUtil