From dd950f589a8d08fadadd0f8a8a7017ff3f7bff01 Mon Sep 17 00:00:00 2001 From: Agetian Date: Fri, 2 Dec 2016 10:18:08 +0000 Subject: [PATCH] - Fixed creating card pools with cards that have specific art indices specified. --- .../src/main/java/forge/deck/CardPool.java | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/forge-core/src/main/java/forge/deck/CardPool.java b/forge-core/src/main/java/forge/deck/CardPool.java index d257dbd513d..cb30cadcb4e 100644 --- a/forge-core/src/main/java/forge/deck/CardPool.java +++ b/forge-core/src/main/java/forge/deck/CardPool.java @@ -49,7 +49,19 @@ public class CardPool extends ItemPool { } public void add(final String cardName, final int amount) { - this.add(cardName, null, -1, amount); + if (cardName.contains("|")) { + // an encoded cardName with set and possibly art index was passed, split it and pass in full + String[] splitCardName = StringUtils.split(cardName, "|"); + if (splitCardName.length == 2) { + // set specified + this.add(splitCardName[0], splitCardName[1], amount); + } else if (splitCardName.length == 3) { + // set and art specified + this.add(splitCardName[0], splitCardName[1], Integer.parseInt(splitCardName[2]), amount); + } + } else { + this.add(cardName, null, -1, amount); + } } public void add(final String cardName, final String setCode) { @@ -82,7 +94,7 @@ public class CardPool extends ItemPool { cp = StaticData.instance().getCommonCards().createUnsuportedCard(cardName); } - boolean artIndexExplicitlySet = artIndex > 0 || Character.isDigit(cardName.charAt(cardName.length()-1)) && cardName.charAt(cardName.length()-2) == CardDb.NameSetSeparator; + boolean artIndexExplicitlySet = artIndex > 0 || (Character.isDigit(cardName.charAt(cardName.length()-1)) && cardName.charAt(cardName.length()-2) == CardDb.NameSetSeparator); if (artIndexExplicitlySet || artCount <= 1) { // either a specific art index is specified, or there is only one art, so just add the card this.add(cp, amount);