diff --git a/Mage.Client/src/main/java/org/mage/plugins/card/utils/CardImageUtils.java b/Mage.Client/src/main/java/org/mage/plugins/card/utils/CardImageUtils.java index e89c4158800..5850cbcc3c0 100644 --- a/Mage.Client/src/main/java/org/mage/plugins/card/utils/CardImageUtils.java +++ b/Mage.Client/src/main/java/org/mage/plugins/card/utils/CardImageUtils.java @@ -4,7 +4,6 @@ import java.io.File; import java.net.InetSocketAddress; import java.net.Proxy; import java.util.HashMap; -import java.util.Objects; import java.util.prefs.Preferences; import mage.client.MageFrame; import mage.client.constants.Constants; @@ -122,17 +121,17 @@ public final class CardImageUtils { return set; } - public static String prepareCardNameForFile(String cardName){ + public static String prepareCardNameForFile(String cardName) { return cardName.replace(":", "").replace("\"", "").replace("//", "-"); } - public static String getImagesDir(){ + public static String getImagesDir() { // return real images dir (path without separator) String path = null; // user path - if (!PreferencesDialog.getCachedValue(PreferencesDialog.KEY_CARD_IMAGES_USE_DEFAULT, "true").equals("true")){ + if (!PreferencesDialog.getCachedValue(PreferencesDialog.KEY_CARD_IMAGES_USE_DEFAULT, "true").equals("true")) { path = PreferencesDialog.getCachedValue(PreferencesDialog.KEY_CARD_IMAGES_PATH, null); } @@ -141,8 +140,7 @@ public final class CardImageUtils { path = Constants.IO.DEFAULT_IMAGES_DIR; } - while(path.endsWith(File.separator)) - { + while (path.endsWith(File.separator)) { path = path.substring(0, path.length() - 1); } @@ -152,7 +150,6 @@ public final class CardImageUtils { public static String buildImagePathToTokens() { String imagesPath = getImagesDir() + File.separator; - if (PreferencesDialog.isSaveImagesToZip()) { return imagesPath + "TOK.zip" + File.separator; } else { @@ -198,20 +195,25 @@ public final class CardImageUtils { String setPath = buildImagePathToSet(card); String prefixType = ""; - if(card.getType() != 0){ + if (card.getType() != 0) { prefixType = " " + Integer.toString(card.getType()); } String cardName = card.getFileName(); - if (cardName.isEmpty()){ + if (cardName.isEmpty()) { cardName = prepareCardNameForFile(card.getName()); } String finalFileName = ""; - if (card.getUsesVariousArt()){ + if (card.getUsesVariousArt()) { finalFileName = cardName + '.' + card.getCollectorId() + ".full.jpg"; - }else{ - finalFileName = cardName + prefixType + ".full.jpg"; + } else { + int len = card.getCollectorId().length(); + if (Character.isLetter(card.getCollectorId().charAt(len - 1))) { + finalFileName = cardName + card.getCollectorId().charAt(len - 1) + ".full.jpg"; + } else { + finalFileName = cardName + prefixType + ".full.jpg"; + } } // if image file exists, correct name (for case sensitive systems) @@ -219,17 +221,17 @@ public final class CardImageUtils { TFile dirFile = new TFile(setPath); TFile imageFile = new TFile(setPath + finalFileName); // warning, zip files can be broken - try{ + try { if (dirFile.exists() && !imageFile.exists()) { // search like names - for (String fileName: dirFile.list()) { + for (String fileName : dirFile.list()) { if (fileName.toLowerCase().equals(finalFileName.toLowerCase())) { finalFileName = fileName; break; } } } - }catch (Exception ex) { + } catch (Exception ex) { log.error("Can't read card name from file, may be it broken: " + setPath); } diff --git a/Mage.Sets/src/mage/cards/g/GarbageElemental.java b/Mage.Sets/src/mage/cards/g/GarbageElementalC.java similarity index 92% rename from Mage.Sets/src/mage/cards/g/GarbageElemental.java rename to Mage.Sets/src/mage/cards/g/GarbageElementalC.java index dcbe7c4a4c9..98787e370ee 100644 --- a/Mage.Sets/src/mage/cards/g/GarbageElemental.java +++ b/Mage.Sets/src/mage/cards/g/GarbageElementalC.java @@ -37,6 +37,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Outcome; +import mage.constants.SubType; import mage.filter.FilterPermanent; import mage.filter.predicate.permanent.CounterPredicate; import mage.game.Game; @@ -48,12 +49,12 @@ import mage.players.Player; * * @author spjspj */ -public class GarbageElemental extends CardImpl { +public class GarbageElementalC extends CardImpl { - public GarbageElemental(UUID ownerId, CardSetInfo setInfo) { + public GarbageElementalC(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{R}"); - this.subtype.add("Elemental"); + this.subtype.add(SubType.ELEMENTAL); this.power = new MageInt(3); this.toughness = new MageInt(2); @@ -68,13 +69,13 @@ public class GarbageElemental extends CardImpl { } - public GarbageElemental(final GarbageElemental card) { + public GarbageElementalC(final GarbageElementalC card) { super(card); } @Override - public GarbageElemental copy() { - return new GarbageElemental(this); + public GarbageElementalC copy() { + return new GarbageElementalC(this); } } @@ -106,7 +107,7 @@ class GarbageElementalEffect extends OneShotEffect { if (controller != null) { int thisRoll = controller.rollDice(game, 6); int thatRoll = controller.rollDice(game, 6); - + Token token = new GoblinToken(); return token.putOntoBattlefield(Math.abs(thatRoll - thisRoll), game, source.getSourceId(), source.getControllerId()); } diff --git a/Mage.Sets/src/mage/cards/v/VeryCrypticCommand.java b/Mage.Sets/src/mage/cards/v/VeryCrypticCommandD.java similarity index 95% rename from Mage.Sets/src/mage/cards/v/VeryCrypticCommand.java rename to Mage.Sets/src/mage/cards/v/VeryCrypticCommandD.java index d922d4f7a4d..68aabe40d1c 100644 --- a/Mage.Sets/src/mage/cards/v/VeryCrypticCommand.java +++ b/Mage.Sets/src/mage/cards/v/VeryCrypticCommandD.java @@ -59,7 +59,7 @@ import mage.target.common.TargetCreaturePermanent; * * @author spjspj */ -public class VeryCrypticCommand extends CardImpl { +public class VeryCrypticCommandD extends CardImpl { private static final FilterStackObject filter = new FilterStackObject("spell or ability with a single target"); private static final FilterCreaturePermanent filter2 = new FilterCreaturePermanent("nontoken creature"); @@ -69,7 +69,7 @@ public class VeryCrypticCommand extends CardImpl { filter2.add(Predicates.not(new TokenPredicate())); } - public VeryCrypticCommand(UUID ownerId, CardSetInfo setInfo) { + public VeryCrypticCommandD(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{U}{U}{U}"); // Choose two - @@ -101,13 +101,13 @@ public class VeryCrypticCommand extends CardImpl { this.getSpellAbility().getModes().addMode(mode); } - public VeryCrypticCommand(final VeryCrypticCommand card) { + public VeryCrypticCommandD(final VeryCrypticCommandD card) { super(card); } @Override - public VeryCrypticCommand copy() { - return new VeryCrypticCommand(this); + public VeryCrypticCommandD copy() { + return new VeryCrypticCommandD(this); } } diff --git a/Mage.Sets/src/mage/sets/Unstable.java b/Mage.Sets/src/mage/sets/Unstable.java index 4b7601ef9fb..e3400540bf2 100644 --- a/Mage.Sets/src/mage/sets/Unstable.java +++ b/Mage.Sets/src/mage/sets/Unstable.java @@ -60,7 +60,7 @@ public class Unstable extends ExpansionSet { cards.add(new SetCardInfo("Earl of Squirrel", 108, Rarity.RARE, mage.cards.e.EarlOfSquirrel.class)); cards.add(new SetCardInfo("Forest", 216, Rarity.LAND, mage.cards.basiclands.Forest.class, new CardGraphicInfo(FrameStyle.UNH_FULL_ART_BASIC, false))); cards.add(new SetCardInfo("GO TO JAIL", 8, Rarity.COMMON, mage.cards.g.GOTOJAIL.class)); - cards.add(new SetCardInfo("Garbage Elemental", 82, Rarity.UNCOMMON, mage.cards.g.GarbageElemental.class)); + cards.add(new SetCardInfo("Garbage Elemental", "82c", Rarity.UNCOMMON, mage.cards.g.GarbageElementalC.class)); cards.add(new SetCardInfo("Ground Pounder", 110, Rarity.COMMON, mage.cards.g.GroundPounder.class)); cards.add(new SetCardInfo("Hammer Helper", 85, Rarity.COMMON, mage.cards.h.HammerHelper.class)); cards.add(new SetCardInfo("Hydradoodle", 112, Rarity.RARE, mage.cards.h.Hydradoodle.class)); @@ -81,7 +81,7 @@ public class Unstable extends ExpansionSet { cards.add(new SetCardInfo("Sword of Dungeons & Dragons", 1, Rarity.MYTHIC, mage.cards.s.SwordOfDungeonsAndDragons.class)); cards.add(new SetCardInfo("Target Minotaur", 98, Rarity.COMMON, mage.cards.t.TargetMinotaur.class)); cards.add(new SetCardInfo("Time Out", 48, Rarity.COMMON, mage.cards.t.TimeOut.class)); - cards.add(new SetCardInfo("Very Cryptic Command", 49, Rarity.RARE, mage.cards.v.VeryCrypticCommand.class)); + cards.add(new SetCardInfo("Very Cryptic Command", "49d", Rarity.RARE, mage.cards.v.VeryCrypticCommandD.class)); cards.add(new SetCardInfo("Willing Test Subject", 126, Rarity.COMMON, mage.cards.w.WillingTestSubject.class)); cards.add(new SetCardInfo("capital offense", 52, Rarity.COMMON, mage.cards.c.CapitalOffense.class)); }