From 75e5c8d0ca06f0b1e23e30aa38e44c9aefa73eb0 Mon Sep 17 00:00:00 2001 From: Maxmtg Date: Tue, 28 Jan 2014 07:32:10 +0000 Subject: [PATCH] fix precon loading issues --- forge-core/src/main/java/forge/card/CardDb.java | 7 +++++-- forge-core/src/main/java/forge/deck/CardPool.java | 3 ++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/forge-core/src/main/java/forge/card/CardDb.java b/forge-core/src/main/java/forge/card/CardDb.java index 63fc5566505..ad47151b508 100644 --- a/forge-core/src/main/java/forge/card/CardDb.java +++ b/forge-core/src/main/java/forge/card/CardDb.java @@ -88,8 +88,11 @@ public final class CardDb implements ICardDatabase { String[] nameParts = TextUtil.split(name, NameSetSeparator); - int setPos = nameParts.length >= 2 && !StringUtils.isNumeric(nameParts[1]) ? 1 : -1; - int artPos = nameParts.length >= 2 && StringUtils.isNumeric(nameParts[1]) ? 1 : nameParts.length >= 3 && StringUtils.isNumeric(nameParts[2]) ? 2 : -1; + boolean hasSet = nameParts.length > 1 && nameParts[1].length() >= 2; + int setPos = hasSet ? 1 : -1; + int artPos = hasSet ? 2 : 1; + if( nameParts.length <= artPos || StringUtils.isNumeric(nameParts[artPos])) + artPos = -1; String cardName = nameParts[0]; if( cardName.endsWith(foilSuffix)) { diff --git a/forge-core/src/main/java/forge/deck/CardPool.java b/forge-core/src/main/java/forge/deck/CardPool.java index debd3c8f4c1..7679e4d5eb1 100644 --- a/forge-core/src/main/java/forge/deck/CardPool.java +++ b/forge-core/src/main/java/forge/deck/CardPool.java @@ -24,6 +24,7 @@ import java.util.regex.Pattern; import org.apache.commons.lang3.StringUtils; import forge.StaticData; +import forge.card.CardDb; import forge.item.PaperCard; import forge.util.ItemPool; import forge.util.MyRandom; @@ -66,7 +67,7 @@ public class CardPool extends ItemPool { if (cp == null ) throw new RuntimeException(String.format("Card %s from %s is not supported by Forge, as it's neither a known common card nor one of casual variants' card.", cardName, setCode )); - boolean artIndexExplicitlySet = artIndex > 0 || Character.isDigit(cardName.charAt(cardName.length()-1)); + boolean artIndexExplicitlySet = artIndex > 0 || Character.isDigit(cardName.charAt(cardName.length()-1)) && cardName.charAt(cardName.length()-2) == CardDb.NameSetSeparator; setCode = cp.getEdition(); cardName = cp.getName();