From 00ad61b6bd4875bec6cacdae877b0686fe949f10 Mon Sep 17 00:00:00 2001 From: Oleg Agafonov Date: Sat, 9 Feb 2019 16:45:27 +0400 Subject: [PATCH] Added new Mythic Edition (MED) set (16 cards, scryfall download) --- .../card/dl/sources/ScryfallImageSource.java | 5 ++- .../dl/sources/ScryfallImageSupportCards.java | 2 + Mage.Sets/src/mage/sets/MythicEdition.java | 39 +++++++++++++++++++ Mage/src/main/java/mage/util/CardUtil.java | 26 +++++++------ 4 files changed, 59 insertions(+), 13 deletions(-) create mode 100644 Mage.Sets/src/mage/sets/MythicEdition.java diff --git a/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/ScryfallImageSource.java b/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/ScryfallImageSource.java index 6d1f873c1ba..133bebf5b0e 100644 --- a/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/ScryfallImageSource.java +++ b/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/ScryfallImageSource.java @@ -66,8 +66,9 @@ public enum ScryfallImageSource implements CardImageSource { if (baseUrl == null && card.isCollectorIdWithStr()) { // WARNING, after 2018 it's not compatible and some new sets have GUID files instead card numbers // TODO: replace card number links to API calls (need test with lands, alternative images and double faces), replace not working images by direct links - if (card.getCollectorId().startsWith("U")) { - // fix for Ultimate Box Topper (PUMA) -- need to use API + + if (card.getCollectorId().startsWith("U") || card.getCollectorIdAsInt() == -1) { + // fix for Ultimate Box Topper (PUMA) and Mythic Edition (MED) -- need to use API // ignored and go to API call at the end } else { baseUrl = "https://img.scryfall.com/cards/large/" + localizedCode + "/" + formatSetName(card.getSet(), isToken) + "/" diff --git a/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/ScryfallImageSupportCards.java b/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/ScryfallImageSupportCards.java index f365a441436..6c361a939d3 100644 --- a/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/ScryfallImageSupportCards.java +++ b/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/ScryfallImageSupportCards.java @@ -25,6 +25,7 @@ public class ScryfallImageSupportCards { put("EURO", "pelp"); put("GPX", "pgpx"); put("MED", "me1"); + put("MEDM", "med"); } }; @@ -236,6 +237,7 @@ public class ScryfallImageSupportCards { add("UMA"); add("PUMA"); add("RNA"); + add("MEDM"); // add("EURO"); add("GPX"); diff --git a/Mage.Sets/src/mage/sets/MythicEdition.java b/Mage.Sets/src/mage/sets/MythicEdition.java new file mode 100644 index 00000000000..57740797501 --- /dev/null +++ b/Mage.Sets/src/mage/sets/MythicEdition.java @@ -0,0 +1,39 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * @author JayDi85 + */ +public final class MythicEdition extends ExpansionSet { + + private static final MythicEdition instance = new MythicEdition(); + + public static MythicEdition getInstance() { + return instance; + } + + private MythicEdition() { + super("Mythic Edition", "MEDM", ExpansionSet.buildDate(2018, 10, 5), SetType.SUPPLEMENTAL); // MEDM cause MED uses for master edition + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Ajani, Mentor of Heroes", "RA5", Rarity.MYTHIC, mage.cards.a.AjaniMentorOfHeroes.class)); + cards.add(new SetCardInfo("Dack Fayden", "RA6", Rarity.MYTHIC, mage.cards.d.DackFayden.class)); + cards.add(new SetCardInfo("Daretti, Ingenious Iconoclast", "GR3", Rarity.MYTHIC, mage.cards.d.DarettiIngeniousIconoclast.class)); + cards.add(new SetCardInfo("Domri, Chaos Bringer", "RA7", Rarity.MYTHIC, mage.cards.d.DomriChaosBringer.class)); + cards.add(new SetCardInfo("Elspeth, Knight-Errant", "GR1", Rarity.MYTHIC, mage.cards.e.ElspethKnightErrant.class)); + cards.add(new SetCardInfo("Jaya Ballard", "RA4", Rarity.MYTHIC, mage.cards.j.JayaBallard.class)); + cards.add(new SetCardInfo("Karn, Scion of Urza", "RA1", Rarity.MYTHIC, mage.cards.k.KarnScionOfUrza.class)); + cards.add(new SetCardInfo("Kaya, Orzhov Usurper", "RA8", Rarity.MYTHIC, mage.cards.k.KayaOrzhovUsurper.class)); + cards.add(new SetCardInfo("Liliana, the Last Hope", "GR2", Rarity.MYTHIC, mage.cards.l.LilianaTheLastHope.class)); + cards.add(new SetCardInfo("Nicol Bolas, Planeswalker", "GR4", Rarity.MYTHIC, mage.cards.n.NicolBolasPlaneswalker.class)); + cards.add(new SetCardInfo("Ral, Izzet Viceroy", "GR5", Rarity.MYTHIC, mage.cards.r.RalIzzetViceroy.class)); + cards.add(new SetCardInfo("Sorin Markov", "RA3", Rarity.MYTHIC, mage.cards.s.SorinMarkov.class)); + cards.add(new SetCardInfo("Tamiyo, the Moon Sage", "RA2", Rarity.MYTHIC, mage.cards.t.TamiyoTheMoonSage.class)); + cards.add(new SetCardInfo("Teferi, Hero of Dominaria", "GR6", Rarity.MYTHIC, mage.cards.t.TeferiHeroOfDominaria.class)); + cards.add(new SetCardInfo("Tezzeret, Agent of Bolas", "GR7", Rarity.MYTHIC, mage.cards.t.TezzeretAgentOfBolas.class)); + cards.add(new SetCardInfo("Vraska, Golgari Queen", "GR8", Rarity.MYTHIC, mage.cards.v.VraskaGolgariQueen.class)); + } +} diff --git a/Mage/src/main/java/mage/util/CardUtil.java b/Mage/src/main/java/mage/util/CardUtil.java index c81981296e7..94d2da8d543 100644 --- a/Mage/src/main/java/mage/util/CardUtil.java +++ b/Mage/src/main/java/mage/util/CardUtil.java @@ -56,7 +56,7 @@ public final class CardUtil { * @param reduceCount */ public static void adjustCost(SpellAbility spellAbility, int reduceCount) { - CardUtil.adjustAbilityCost((Ability) spellAbility, reduceCount); + CardUtil.adjustAbilityCost(spellAbility, reduceCount); } public static ManaCosts increaseCost(ManaCosts manaCosts, int increaseCount) { @@ -379,15 +379,20 @@ public final class CardUtil { throw new IllegalArgumentException("Card number is empty."); } - if (!Character.isDigit(cardNumber.charAt(0))) { - // U123 - return Integer.parseInt(cardNumber.substring(1, cardNumber.length())); - } else if (!Character.isDigit(cardNumber.charAt(cardNumber.length() - 1))) { - // 123b - return Integer.parseInt(cardNumber.substring(0, cardNumber.length() - 1)); - } else { - // 123 - return Integer.parseInt(cardNumber); + try { + if (!Character.isDigit(cardNumber.charAt(0))) { + // U123 + return Integer.parseInt(cardNumber.substring(1)); + } else if (!Character.isDigit(cardNumber.charAt(cardNumber.length() - 1))) { + // 123b + return Integer.parseInt(cardNumber.substring(0, cardNumber.length() - 1)); + } else { + // 123 + return Integer.parseInt(cardNumber); + } + } catch (NumberFormatException e) { + // wrong numbers like RA5 and etc + return -1; } } @@ -532,7 +537,6 @@ public final class CardUtil { } } else { title = textSuffix == null ? "" : textSuffix; - ; } return title;