From 6297650c3b5e14bdd8aca2075b168a5c4968c002 Mon Sep 17 00:00:00 2001 From: Thomas Hess Date: Mon, 3 Feb 2020 13:14:18 +0100 Subject: [PATCH] Split the Judge Gift Cards set (JP) into the individual sets as listed on Scryfall. - Removed the JP set. - Added G02-G11, J12-J20 - Fixed all usages in the test code - Updated the sample decks that used these cards. The deck lists now contain the updated references. - Added all Judge Gift sets to the "bling" sets list --- ...Abzan Midrange TDtB ST Nov 2014.mwDeck.dck | 2 +- ...lins Deck Wins TDtB ST Apr 2011.mwDeck.dck | 2 +- .../Mardu Control TDtB ST Dec 2014.mwDeck.dck | 2 +- .../BGW Angels 58 PT San Diego ST 2-21-10.dck | 2 +- .../Boss Naya 34 PT San Diego ST 2-21-10.dck | 2 +- .../Dark Exalted 34 PT Kyoto ST 3-1-09.dck | 2 +- ...hampionship 2005 (Yokohama) ST 12-4-05.dck | 2 +- ...d Championship 2009 (Rome) ST 11-19-09.dck | 2 +- ...Championship 2000 (Brussels) ST 8-6-00.dck | 2 +- .../java/mage/client/cards/DragCardGrid.java | 28 +++- .../card/dl/sources/MagidexImageSource.java | 5 +- .../dl/sources/WizardCardsImageSource.java | 2 +- .../src/mage/sets/JudgeGiftCards2002.java | 26 ++++ .../src/mage/sets/JudgeGiftCards2003.java | 27 ++++ .../src/mage/sets/JudgeGiftCards2004.java | 30 ++++ .../src/mage/sets/JudgeGiftCards2005.java | 28 ++++ .../src/mage/sets/JudgeGiftCards2006.java | 28 ++++ .../src/mage/sets/JudgeGiftCards2007.java | 29 ++++ .../src/mage/sets/JudgeGiftCards2008.java | 29 ++++ .../src/mage/sets/JudgeGiftCards2009.java | 34 +++++ .../src/mage/sets/JudgeGiftCards2010.java | 32 +++++ .../src/mage/sets/JudgeGiftCards2011.java | 32 +++++ .../src/mage/sets/JudgeGiftCards2012.java | 32 +++++ .../src/mage/sets/JudgeGiftCards2013.java | 32 +++++ .../src/mage/sets/JudgeGiftCards2014.java | 39 +++++ .../src/mage/sets/JudgeGiftCards2015.java | 32 +++++ .../src/mage/sets/JudgeGiftCards2016.java | 31 ++++ .../src/mage/sets/JudgeGiftCards2017.java | 34 +++++ .../src/mage/sets/JudgeGiftCards2018.java | 32 +++++ .../src/mage/sets/JudgeGiftCards2019.java | 32 +++++ .../src/mage/sets/JudgeGiftCards2020.java | 30 ++++ Mage.Sets/src/mage/sets/JudgePromo.java | 136 ------------------ .../serverside/deck/DeckValidatorTest.java | 2 +- 33 files changed, 630 insertions(+), 150 deletions(-) create mode 100644 Mage.Sets/src/mage/sets/JudgeGiftCards2002.java create mode 100644 Mage.Sets/src/mage/sets/JudgeGiftCards2003.java create mode 100644 Mage.Sets/src/mage/sets/JudgeGiftCards2004.java create mode 100644 Mage.Sets/src/mage/sets/JudgeGiftCards2005.java create mode 100644 Mage.Sets/src/mage/sets/JudgeGiftCards2006.java create mode 100644 Mage.Sets/src/mage/sets/JudgeGiftCards2007.java create mode 100644 Mage.Sets/src/mage/sets/JudgeGiftCards2008.java create mode 100644 Mage.Sets/src/mage/sets/JudgeGiftCards2009.java create mode 100644 Mage.Sets/src/mage/sets/JudgeGiftCards2010.java create mode 100644 Mage.Sets/src/mage/sets/JudgeGiftCards2011.java create mode 100644 Mage.Sets/src/mage/sets/JudgeGiftCards2012.java create mode 100644 Mage.Sets/src/mage/sets/JudgeGiftCards2013.java create mode 100644 Mage.Sets/src/mage/sets/JudgeGiftCards2014.java create mode 100644 Mage.Sets/src/mage/sets/JudgeGiftCards2015.java create mode 100644 Mage.Sets/src/mage/sets/JudgeGiftCards2016.java create mode 100644 Mage.Sets/src/mage/sets/JudgeGiftCards2017.java create mode 100644 Mage.Sets/src/mage/sets/JudgeGiftCards2018.java create mode 100644 Mage.Sets/src/mage/sets/JudgeGiftCards2019.java create mode 100644 Mage.Sets/src/mage/sets/JudgeGiftCards2020.java delete mode 100644 Mage.Sets/src/mage/sets/JudgePromo.java diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Abzan Midrange TDtB ST Nov 2014.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Abzan Midrange TDtB ST Nov 2014.mwDeck.dck index e27566c7b9..552b2020db 100644 --- a/Mage.Client/release/sample-decks/Decks to Beat/Abzan Midrange TDtB ST Nov 2014.mwDeck.dck +++ b/Mage.Client/release/sample-decks/Decks to Beat/Abzan Midrange TDtB ST Nov 2014.mwDeck.dck @@ -19,7 +19,7 @@ 3 [THS:227] Temple of Silence 1 [APC:141] Llanowar Wastes 2 [KTK:31] Wingmate Roc -1 [JR:46] Windswept Heath +1 [G09:9] Windswept Heath 1 [JOU:163] Mana Confluence 1 [BNG:165] Temple of Plenty 2 [LRW:145] Thoughtseize diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Goblins Deck Wins TDtB ST Apr 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Goblins Deck Wins TDtB ST Apr 2011.mwDeck.dck index b69354f85a..42f0356714 100644 --- a/Mage.Client/release/sample-decks/Decks to Beat/Goblins Deck Wins TDtB ST Apr 2011.mwDeck.dck +++ b/Mage.Client/release/sample-decks/Decks to Beat/Goblins Deck Wins TDtB ST Apr 2011.mwDeck.dck @@ -20,7 +20,7 @@ 1 [RAV:300] Mountain 2 [GPX:6] Goblin Guide 4 [M11:135] Ember Hauler -2 [JR:1] Lightning Bolt +2 [JGP:1] Lightning Bolt 1 [M10:146] Lightning Bolt 1 [M10:243] Mountain 1 [M12:242] Mountain diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Mardu Control TDtB ST Dec 2014.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Mardu Control TDtB ST Dec 2014.mwDeck.dck index 77253da083..9e2509af1e 100644 --- a/Mage.Client/release/sample-decks/Decks to Beat/Mardu Control TDtB ST Dec 2014.mwDeck.dck +++ b/Mage.Client/release/sample-decks/Decks to Beat/Mardu Control TDtB ST Dec 2014.mwDeck.dck @@ -18,7 +18,7 @@ 1 [PO2:157] Mountain 1 [SOM:238] Swamp 1 [DDO:1] Elspeth, Sun's Champion -1 [JR:43] Bloodstained Mire +1 [G09:6] Bloodstained Mire 2 [MBP:98] Goblin Rabblemaster 1 [KTK:31] Wingmate Roc 2 [KTK:97] Arc Lightning diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/BGW Angels 58 PT San Diego ST 2-21-10.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/BGW Angels 58 PT San Diego ST 2-21-10.dck index 6ffd8e665a..5ea6c44efe 100644 --- a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/BGW Angels 58 PT San Diego ST 2-21-10.dck +++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/BGW Angels 58 PT San Diego ST 2-21-10.dck @@ -15,7 +15,7 @@ 2 [ALA:9] Elspeth, Knight-Errant 2 [UNH:138] Swamp 1 [CON:113] Knight of the Reliquary -1 [JR:66] Noble Hierarch +1 [J12:3] Noble Hierarch 1 [CON:95] Thornling 1 [C14:313] Tectonic Edge 4 [ARB:92] Maelstrom Pulse diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Boss Naya 34 PT San Diego ST 2-21-10.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Boss Naya 34 PT San Diego ST 2-21-10.dck index 6005b7cf26..a925e4035e 100644 --- a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Boss Naya 34 PT San Diego ST 2-21-10.dck +++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Boss Naya 34 PT San Diego ST 2-21-10.dck @@ -19,7 +19,7 @@ 4 [ALA:152] Wild Nacatl 2 [ALA:154] Ajani Vengeant 3 [CON:113] Knight of the Reliquary -2 [JR:66] Noble Hierarch +2 [J12:3] Noble Hierarch 4 [ZEN:211] Arid Mesa 2 [M12:165] Birds of Paradise 2 [C14:315] Terramorphic Expanse diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Dark Exalted 34 PT Kyoto ST 3-1-09.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Dark Exalted 34 PT Kyoto ST 3-1-09.dck index 8c4d686140..6f605976c3 100644 --- a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Dark Exalted 34 PT Kyoto ST 3-1-09.dck +++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Dark Exalted 34 PT Kyoto ST 3-1-09.dck @@ -19,7 +19,7 @@ 1 [UNH:138] Swamp 4 [MOR:147] Murmuring Bosk 4 [SHM:245] Wilt-Leaf Liege -1 [JR:66] Noble Hierarch +1 [J12:3] Noble Hierarch 4 [M12:165] Birds of Paradise 1 [M15:241] Caves of Koilos 2 [CON:87] Noble Hierarch diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Greater Gift 2 World Championship 2005 (Yokohama) ST 12-4-05.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Greater Gift 2 World Championship 2005 (Yokohama) ST 12-4-05.dck index 7662969881..e12be5b608 100644 --- a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Greater Gift 2 World Championship 2005 (Yokohama) ST 12-4-05.dck +++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Greater Gift 2 World Championship 2005 (Yokohama) ST 12-4-05.dck @@ -18,7 +18,7 @@ 3 [UNH:136] Plains 1 [UNH:137] Island 3 [UNH:138] Swamp -1 [JR:81] Greater Good +1 [J14:2] Greater Good 4 [CMD:163] Kodama's Reach 1 [GTC:249] Watery Grave 4 [C13:27] Wrath of God diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Naya 34 World Championship 2009 (Rome) ST 11-19-09.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Naya 34 World Championship 2009 (Rome) ST 11-19-09.dck index 0e71665365..0bc7606aba 100644 --- a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Naya 34 World Championship 2009 (Rome) ST 11-19-09.dck +++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Naya 34 World Championship 2009 (Rome) ST 11-19-09.dck @@ -17,7 +17,7 @@ 2 [M13:228] Rootbound Crag 4 [CMD:25] Path to Exile 4 [UNH:140] Forest -2 [JR:66] Noble Hierarch +2 [J12:3] Noble Hierarch 4 [C13:299] Jungle Shrine SB: 2 [M13:22] Oblivion Ring SB: 1 [ALA:154] Ajani Vengeant diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Trinity 34 World Championship 2000 (Brussels) ST 8-6-00.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Trinity 34 World Championship 2000 (Brussels) ST 8-6-00.dck index 82458d9d4d..2dee183825 100644 --- a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Trinity 34 World Championship 2000 (Brussels) ST 8-6-00.dck +++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Trinity 34 World Championship 2000 (Brussels) ST 8-6-00.dck @@ -6,7 +6,7 @@ 2 [UDS:117] Plow Under 4 [NMS:139] Tangle Wire 1 [UDS:134] Masticore -2 [JR:18] Deranged Hermit +2 [G04:5] Deranged Hermit 4 [C14:210] Priest of Titania 1 [USG:306] Phyrexian Processor 4 [C14:204] Llanowar Elves diff --git a/Mage.Client/src/main/java/mage/client/cards/DragCardGrid.java b/Mage.Client/src/main/java/mage/client/cards/DragCardGrid.java index 6f3954fb72..def5233a4f 100644 --- a/Mage.Client/src/main/java/mage/client/cards/DragCardGrid.java +++ b/Mage.Client/src/main/java/mage/client/cards/DragCardGrid.java @@ -1502,9 +1502,34 @@ public class DragCardGrid extends JPanel implements DragCardSource, DragCardTarg Map pimpedSets = new HashMap<>(); Map pimpedCards = new HashMap<>(); pimpedSets.put("CP", 1); - pimpedSets.put("JR", 1); pimpedSets.put("MPS", 1); pimpedSets.put("CLASH", 1); + + // Judge Reward Gifts + pimpedSets.put("JGP", 1); + pimpedSets.put("G99", 1); + pimpedSets.put("G00", 1); + pimpedSets.put("G01", 1); + pimpedSets.put("G02", 1); + pimpedSets.put("G03", 1); + pimpedSets.put("G04", 1); + pimpedSets.put("G05", 1); + pimpedSets.put("G06", 1); + pimpedSets.put("G07", 1); + pimpedSets.put("G08", 1); + pimpedSets.put("G09", 1); + pimpedSets.put("G10", 1); + pimpedSets.put("G11", 1); + pimpedSets.put("J12", 1); + pimpedSets.put("J13", 1); + pimpedSets.put("J14", 1); + pimpedSets.put("J15", 1); + pimpedSets.put("J16", 1); + pimpedSets.put("J17", 1); + pimpedSets.put("J18", 1); + pimpedSets.put("J19", 1); + pimpedSets.put("J20", 1); + // Arena League pimpedSets.put("PARL", 1); pimpedSets.put("PAL99", 1); @@ -1515,6 +1540,7 @@ public class DragCardGrid extends JPanel implements DragCardSource, DragCardTarg pimpedSets.put("PAL04", 1); pimpedSets.put("PAL05", 1); pimpedSets.put("PAL06", 1); + pimpedSets.put("UGIN", 1); pimpedSets.put("WMCQ", 1); pimpedSets.put("PALP", 1); diff --git a/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/MagidexImageSource.java b/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/MagidexImageSource.java index c4d80a4f75..375194f18a 100644 --- a/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/MagidexImageSource.java +++ b/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/MagidexImageSource.java @@ -17,7 +17,7 @@ public enum MagidexImageSource implements CardImageSource { MagidexImageSource() { supportedSets = new LinkedHashSet<>(); // supportedSets.add("PPRE"); // Prerelease Events - supportedSets.add("JR"); + // supportedSets.add("JR"); // TODO: Set was split into the individual sets as listed on Scryfall supportedSets.add("LEA"); supportedSets.add("LEB"); supportedSets.add("2ED"); @@ -257,9 +257,10 @@ public enum MagidexImageSource implements CardImageSource { return setName; } + private static final Map setNameReplacement = new HashMap() { { - put("JR", "pJGP"); + // put("JR", "pJGP"); // TODO: Set was split into the individual sets as listed on Scryfall } }; diff --git a/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/WizardCardsImageSource.java b/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/WizardCardsImageSource.java index 56a94ab307..51586e8ca8 100644 --- a/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/WizardCardsImageSource.java +++ b/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/WizardCardsImageSource.java @@ -350,7 +350,7 @@ public enum WizardCardsImageSource implements CardImageSource { setsAliases.put("INV", "Invasion"); setsAliases.put("ISD", "Innistrad"); setsAliases.put("JOU", "Journey into Nyx"); - setsAliases.put("JR", "Judge Promo"); + // setsAliases.put("JR", "Judge Promo"); // TODO: Set was split into the individual sets as listed on Scryfall setsAliases.put("JUD", "Judgment"); setsAliases.put("KLD", "Kaladesh"); setsAliases.put("KTK", "Khans of Tarkir"); diff --git a/Mage.Sets/src/mage/sets/JudgeGiftCards2002.java b/Mage.Sets/src/mage/sets/JudgeGiftCards2002.java new file mode 100644 index 0000000000..7cf3512622 --- /dev/null +++ b/Mage.Sets/src/mage/sets/JudgeGiftCards2002.java @@ -0,0 +1,26 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/g02 + */ +public class JudgeGiftCards2002 extends ExpansionSet { + + private static final JudgeGiftCards2002 instance = new JudgeGiftCards2002(); + + public static JudgeGiftCards2002 getInstance() { + return instance; + } + + private JudgeGiftCards2002() { + super("Judge Gift Cards 2002", "G02", ExpansionSet.buildDate(2002, 1, 1), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Hammer of Bogardan", 1, Rarity.RARE, mage.cards.h.HammerOfBogardan.class)); + cards.add(new SetCardInfo("Tradewind Rider", 2, Rarity.RARE, mage.cards.t.TradewindRider.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/JudgeGiftCards2003.java b/Mage.Sets/src/mage/sets/JudgeGiftCards2003.java new file mode 100644 index 0000000000..8f5cb239a8 --- /dev/null +++ b/Mage.Sets/src/mage/sets/JudgeGiftCards2003.java @@ -0,0 +1,27 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/g03 + */ +public class JudgeGiftCards2003 extends ExpansionSet { + + private static final JudgeGiftCards2003 instance = new JudgeGiftCards2003(); + + public static JudgeGiftCards2003 getInstance() { + return instance; + } + + private JudgeGiftCards2003() { + super("Judge Gift Cards 2003", "G03", ExpansionSet.buildDate(2003, 1, 1), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Argothian Enchantress", 2, Rarity.RARE, mage.cards.a.ArgothianEnchantress.class)); + cards.add(new SetCardInfo("Intuition", 1, Rarity.RARE, mage.cards.i.Intuition.class)); + cards.add(new SetCardInfo("Living Death", 3, Rarity.RARE, mage.cards.l.LivingDeath.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/JudgeGiftCards2004.java b/Mage.Sets/src/mage/sets/JudgeGiftCards2004.java new file mode 100644 index 0000000000..5884984cbf --- /dev/null +++ b/Mage.Sets/src/mage/sets/JudgeGiftCards2004.java @@ -0,0 +1,30 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/g04 + */ +public class JudgeGiftCards2004 extends ExpansionSet { + + private static final JudgeGiftCards2004 instance = new JudgeGiftCards2004(); + + public static JudgeGiftCards2004 getInstance() { + return instance; + } + + private JudgeGiftCards2004() { + super("Judge Gift Cards 2004", "G04", ExpansionSet.buildDate(2004, 1, 1), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Armageddon", 1, Rarity.RARE, mage.cards.a.Armageddon.class)); + cards.add(new SetCardInfo("Balance", 2, Rarity.RARE, mage.cards.b.Balance.class)); + cards.add(new SetCardInfo("Deranged Hermit", 5, Rarity.RARE, mage.cards.d.DerangedHermit.class)); + cards.add(new SetCardInfo("Hermit Druid", 6, Rarity.RARE, mage.cards.h.HermitDruid.class)); + cards.add(new SetCardInfo("Phyrexian Negator", 4, Rarity.RARE, mage.cards.p.PhyrexianNegator.class)); + cards.add(new SetCardInfo("Time Warp", 3, Rarity.RARE, mage.cards.t.TimeWarp.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/JudgeGiftCards2005.java b/Mage.Sets/src/mage/sets/JudgeGiftCards2005.java new file mode 100644 index 0000000000..f3e64c2598 --- /dev/null +++ b/Mage.Sets/src/mage/sets/JudgeGiftCards2005.java @@ -0,0 +1,28 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/g05 + */ +public class JudgeGiftCards2005 extends ExpansionSet { + + private static final JudgeGiftCards2005 instance = new JudgeGiftCards2005(); + + public static JudgeGiftCards2005 getInstance() { + return instance; + } + + private JudgeGiftCards2005() { + super("Judge Gift Cards 2005", "G05", ExpansionSet.buildDate(2005, 1, 1), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Gemstone Mine", 1, Rarity.RARE, mage.cards.g.GemstoneMine.class)); + cards.add(new SetCardInfo("Mishra's Factory", 4, Rarity.RARE, mage.cards.m.MishrasFactory.class)); + cards.add(new SetCardInfo("Regrowth", 2, Rarity.RARE, mage.cards.r.Regrowth.class)); + cards.add(new SetCardInfo("Sol Ring", 3, Rarity.RARE, mage.cards.s.SolRing.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/JudgeGiftCards2006.java b/Mage.Sets/src/mage/sets/JudgeGiftCards2006.java new file mode 100644 index 0000000000..b02372f4d4 --- /dev/null +++ b/Mage.Sets/src/mage/sets/JudgeGiftCards2006.java @@ -0,0 +1,28 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/g06 + */ +public class JudgeGiftCards2006 extends ExpansionSet { + + private static final JudgeGiftCards2006 instance = new JudgeGiftCards2006(); + + public static JudgeGiftCards2006 getInstance() { + return instance; + } + + private JudgeGiftCards2006() { + super("Judge Gift Cards 2006", "G06", ExpansionSet.buildDate(2006, 1, 1), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Exalted Angel", 1, Rarity.RARE, mage.cards.e.ExaltedAngel.class)); + cards.add(new SetCardInfo("Grim Lavamancer", 2, Rarity.RARE, mage.cards.g.GrimLavamancer.class)); + cards.add(new SetCardInfo("Meddling Mage", 3, Rarity.RARE, mage.cards.m.MeddlingMage.class)); + cards.add(new SetCardInfo("Pernicious Deed", 4, Rarity.RARE, mage.cards.p.PerniciousDeed.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/JudgeGiftCards2007.java b/Mage.Sets/src/mage/sets/JudgeGiftCards2007.java new file mode 100644 index 0000000000..c5fcfcb481 --- /dev/null +++ b/Mage.Sets/src/mage/sets/JudgeGiftCards2007.java @@ -0,0 +1,29 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/g07 + */ +public class JudgeGiftCards2007 extends ExpansionSet { + + private static final JudgeGiftCards2007 instance = new JudgeGiftCards2007(); + + public static JudgeGiftCards2007 getInstance() { + return instance; + } + + private JudgeGiftCards2007() { + super("Judge Gift Cards 2007", "G07", ExpansionSet.buildDate(2007, 1, 1), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Cunning Wish", 2, Rarity.RARE, mage.cards.c.CunningWish.class)); + cards.add(new SetCardInfo("Decree of Justice", 5, Rarity.RARE, mage.cards.d.DecreeOfJustice.class)); + cards.add(new SetCardInfo("Ravenous Baloth", 1, Rarity.RARE, mage.cards.r.RavenousBaloth.class)); + cards.add(new SetCardInfo("Vindicate", 4, Rarity.RARE, mage.cards.v.Vindicate.class)); + cards.add(new SetCardInfo("Yawgmoth's Will", 3, Rarity.RARE, mage.cards.y.YawgmothsWill.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/JudgeGiftCards2008.java b/Mage.Sets/src/mage/sets/JudgeGiftCards2008.java new file mode 100644 index 0000000000..b38ec15053 --- /dev/null +++ b/Mage.Sets/src/mage/sets/JudgeGiftCards2008.java @@ -0,0 +1,29 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/g08 + */ +public class JudgeGiftCards2008 extends ExpansionSet { + + private static final JudgeGiftCards2008 instance = new JudgeGiftCards2008(); + + public static JudgeGiftCards2008 getInstance() { + return instance; + } + + private JudgeGiftCards2008() { + super("Judge Gift Cards 2008", "G08", ExpansionSet.buildDate(2008, 1, 1), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Demonic Tutor", 3, Rarity.RARE, mage.cards.d.DemonicTutor.class)); + cards.add(new SetCardInfo("Goblin Piledriver", 4, Rarity.RARE, mage.cards.g.GoblinPiledriver.class)); + cards.add(new SetCardInfo("Living Wish", 5, Rarity.RARE, mage.cards.l.LivingWish.class)); + cards.add(new SetCardInfo("Mind's Desire", 2, Rarity.RARE, mage.cards.m.MindsDesire.class)); + cards.add(new SetCardInfo("Orim's Chant", 1, Rarity.RARE, mage.cards.o.OrimsChant.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/JudgeGiftCards2009.java b/Mage.Sets/src/mage/sets/JudgeGiftCards2009.java new file mode 100644 index 0000000000..d9bd1a25a0 --- /dev/null +++ b/Mage.Sets/src/mage/sets/JudgeGiftCards2009.java @@ -0,0 +1,34 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/g09 + */ +public class JudgeGiftCards2009 extends ExpansionSet { + + private static final JudgeGiftCards2009 instance = new JudgeGiftCards2009(); + + public static JudgeGiftCards2009 getInstance() { + return instance; + } + + private JudgeGiftCards2009() { + super("Judge Gift Cards 2009", "G09", ExpansionSet.buildDate(2009, 1, 1), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Bloodstained Mire", 6, Rarity.RARE, mage.cards.b.BloodstainedMire.class)); + cards.add(new SetCardInfo("Burning Wish", 5, Rarity.RARE, mage.cards.b.BurningWish.class)); + cards.add(new SetCardInfo("Dark Ritual", 1, Rarity.RARE, mage.cards.d.DarkRitual.class)); + cards.add(new SetCardInfo("Flooded Strand", 7, Rarity.RARE, mage.cards.f.FloodedStrand.class)); + cards.add(new SetCardInfo("Maze of Ith", 2, Rarity.RARE, mage.cards.m.MazeOfIth.class)); + cards.add(new SetCardInfo("Polluted Delta", 8, Rarity.RARE, mage.cards.p.PollutedDelta.class)); + cards.add(new SetCardInfo("Stifle", 3, Rarity.RARE, mage.cards.s.Stifle.class)); + cards.add(new SetCardInfo("Survival of the Fittest", 4, Rarity.RARE, mage.cards.s.SurvivalOfTheFittest.class)); + cards.add(new SetCardInfo("Windswept Heath", 9, Rarity.RARE, mage.cards.w.WindsweptHeath.class)); + cards.add(new SetCardInfo("Wooded Foothills", 10, Rarity.RARE, mage.cards.w.WoodedFoothills.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/JudgeGiftCards2010.java b/Mage.Sets/src/mage/sets/JudgeGiftCards2010.java new file mode 100644 index 0000000000..cc4a430be9 --- /dev/null +++ b/Mage.Sets/src/mage/sets/JudgeGiftCards2010.java @@ -0,0 +1,32 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/g10 + */ +public class JudgeGiftCards2010 extends ExpansionSet { + + private static final JudgeGiftCards2010 instance = new JudgeGiftCards2010(); + + public static JudgeGiftCards2010 getInstance() { + return instance; + } + + private JudgeGiftCards2010() { + super("Judge Gift Cards 2010", "G10", ExpansionSet.buildDate(2010, 1, 1), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Land Tax", 5, Rarity.RARE, mage.cards.l.LandTax.class)); + cards.add(new SetCardInfo("Morphling", 6, Rarity.RARE, mage.cards.m.Morphling.class)); + cards.add(new SetCardInfo("Natural Order", 2, Rarity.RARE, mage.cards.n.NaturalOrder.class)); + cards.add(new SetCardInfo("Phyrexian Dreadnought", 3, Rarity.RARE, mage.cards.p.PhyrexianDreadnought.class)); + cards.add(new SetCardInfo("Sinkhole", 1, Rarity.RARE, mage.cards.s.Sinkhole.class)); + cards.add(new SetCardInfo("Thawing Glaciers", 4, Rarity.RARE, mage.cards.t.ThawingGlaciers.class)); + cards.add(new SetCardInfo("Wasteland", 8, Rarity.RARE, mage.cards.w.Wasteland.class)); + cards.add(new SetCardInfo("Wheel of Fortune", 7, Rarity.RARE, mage.cards.w.WheelOfFortune.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/JudgeGiftCards2011.java b/Mage.Sets/src/mage/sets/JudgeGiftCards2011.java new file mode 100644 index 0000000000..e20390875a --- /dev/null +++ b/Mage.Sets/src/mage/sets/JudgeGiftCards2011.java @@ -0,0 +1,32 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/g11 + */ +public class JudgeGiftCards2011 extends ExpansionSet { + + private static final JudgeGiftCards2011 instance = new JudgeGiftCards2011(); + + public static JudgeGiftCards2011 getInstance() { + return instance; + } + + private JudgeGiftCards2011() { + super("Judge Gift Cards 2011", "G11", ExpansionSet.buildDate(2011, 1, 1), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Bitterblossom", 1, Rarity.RARE, mage.cards.b.Bitterblossom.class)); + cards.add(new SetCardInfo("Dark Confidant", 6, Rarity.RARE, mage.cards.d.DarkConfidant.class)); + cards.add(new SetCardInfo("Doubling Season", 7, Rarity.RARE, mage.cards.d.DoublingSeason.class)); + cards.add(new SetCardInfo("Entomb", 4, Rarity.RARE, mage.cards.e.Entomb.class)); + cards.add(new SetCardInfo("Goblin Welder", 8, Rarity.RARE, mage.cards.g.GoblinWelder.class)); + cards.add(new SetCardInfo("Mana Crypt", 5, Rarity.RARE, mage.cards.m.ManaCrypt.class)); + cards.add(new SetCardInfo("Sword of Fire and Ice", 2, Rarity.RARE, mage.cards.s.SwordOfFireAndIce.class)); + cards.add(new SetCardInfo("Vendilion Clique", 3, Rarity.RARE, mage.cards.v.VendilionClique.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/JudgeGiftCards2012.java b/Mage.Sets/src/mage/sets/JudgeGiftCards2012.java new file mode 100644 index 0000000000..fa3cf3cc00 --- /dev/null +++ b/Mage.Sets/src/mage/sets/JudgeGiftCards2012.java @@ -0,0 +1,32 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/j12 + */ +public class JudgeGiftCards2012 extends ExpansionSet { + + private static final JudgeGiftCards2012 instance = new JudgeGiftCards2012(); + + public static JudgeGiftCards2012 getInstance() { + return instance; + } + + private JudgeGiftCards2012() { + super("Judge Gift Cards 2012", "J12", ExpansionSet.buildDate(2012, 1, 1), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Command Tower", 8, Rarity.RARE, mage.cards.c.CommandTower.class)); + cards.add(new SetCardInfo("Flusterstorm", 2, Rarity.RARE, mage.cards.f.Flusterstorm.class)); + cards.add(new SetCardInfo("Karakas", 6, Rarity.RARE, mage.cards.k.Karakas.class)); + cards.add(new SetCardInfo("Karmic Guide", 4, Rarity.RARE, mage.cards.k.KarmicGuide.class)); + cards.add(new SetCardInfo("Noble Hierarch", 3, Rarity.RARE, mage.cards.n.NobleHierarch.class)); + cards.add(new SetCardInfo("Sneak Attack", 5, Rarity.RARE, mage.cards.s.SneakAttack.class)); + cards.add(new SetCardInfo("Sword of Light and Shadow", 7, Rarity.RARE, mage.cards.s.SwordOfLightAndShadow.class)); + cards.add(new SetCardInfo("Xiahou Dun, the One-Eyed", 1, Rarity.RARE, mage.cards.x.XiahouDunTheOneEyed.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/JudgeGiftCards2013.java b/Mage.Sets/src/mage/sets/JudgeGiftCards2013.java new file mode 100644 index 0000000000..59257aa8f9 --- /dev/null +++ b/Mage.Sets/src/mage/sets/JudgeGiftCards2013.java @@ -0,0 +1,32 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/j13 + */ +public class JudgeGiftCards2013 extends ExpansionSet { + + private static final JudgeGiftCards2013 instance = new JudgeGiftCards2013(); + + public static JudgeGiftCards2013 getInstance() { + return instance; + } + + private JudgeGiftCards2013() { + super("Judge Gift Cards 2013", "J13", ExpansionSet.buildDate(2013, 1, 1), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Bribery", 2, Rarity.RARE, mage.cards.b.Bribery.class)); + cards.add(new SetCardInfo("Crucible of Worlds", 4, Rarity.RARE, mage.cards.c.CrucibleOfWorlds.class)); + cards.add(new SetCardInfo("Genesis", 5, Rarity.RARE, mage.cards.g.Genesis.class)); + cards.add(new SetCardInfo("Imperial Recruiter", 3, Rarity.RARE, mage.cards.i.ImperialRecruiter.class)); + cards.add(new SetCardInfo("Overwhelming Forces", 6, Rarity.RARE, mage.cards.o.OverwhelmingForces.class)); + cards.add(new SetCardInfo("Show and Tell", 8, Rarity.RARE, mage.cards.s.ShowAndTell.class)); + cards.add(new SetCardInfo("Swords to Plowshares", 1, Rarity.RARE, mage.cards.s.SwordsToPlowshares.class)); + cards.add(new SetCardInfo("Vindicate", 7, Rarity.RARE, mage.cards.v.Vindicate.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/JudgeGiftCards2014.java b/Mage.Sets/src/mage/sets/JudgeGiftCards2014.java new file mode 100644 index 0000000000..9650ba4db3 --- /dev/null +++ b/Mage.Sets/src/mage/sets/JudgeGiftCards2014.java @@ -0,0 +1,39 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/j14 + */ +public class JudgeGiftCards2014 extends ExpansionSet { + + private static final JudgeGiftCards2014 instance = new JudgeGiftCards2014(); + + public static JudgeGiftCards2014 getInstance() { + return instance; + } + + private JudgeGiftCards2014() { + super("Judge Gift Cards 2014", "J14", ExpansionSet.buildDate(2014, 1, 1), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = true; + + // Phyrexian-only printing. Non-English, so not adding it https://github.com/magefree/mage/pull/6190#issuecomment-582354790 + //cards.add(new SetCardInfo("Elesh Norn, Grand Cenobite", 8, Rarity.RARE, mage.cards.e.EleshNornGrandCenobite.class)); + cards.add(new SetCardInfo("Force of Will", 4, Rarity.RARE, mage.cards.f.ForceOfWill.class)); + cards.add(new SetCardInfo("Forest", "5*", Rarity.LAND, mage.cards.basiclands.Forest.class, FULL_ART_ZEN_VARIOUS)); + cards.add(new SetCardInfo("Greater Good", 2, Rarity.RARE, mage.cards.g.GreaterGood.class)); + cards.add(new SetCardInfo("Hanna, Ship's Navigator", 5, Rarity.RARE, mage.cards.h.HannaShipsNavigator.class)); + cards.add(new SetCardInfo("Island", "2*", Rarity.LAND, mage.cards.basiclands.Island.class, FULL_ART_ZEN_VARIOUS)); + cards.add(new SetCardInfo("Karador, Ghost Chieftain", 1, Rarity.RARE, mage.cards.k.KaradorGhostChieftain.class)); + cards.add(new SetCardInfo("Mountain", "4*", Rarity.LAND, mage.cards.basiclands.Mountain.class, FULL_ART_ZEN_VARIOUS)); + cards.add(new SetCardInfo("Nekusar, the Mindrazer", 7, Rarity.RARE, mage.cards.n.NekusarTheMindrazer.class)); + cards.add(new SetCardInfo("Oloro, Ageless Ascetic", 9, Rarity.RARE, mage.cards.o.OloroAgelessAscetic.class)); + cards.add(new SetCardInfo("Plains", "1*", Rarity.LAND, mage.cards.basiclands.Plains.class, FULL_ART_ZEN_VARIOUS)); + cards.add(new SetCardInfo("Riku of Two Reflections", 3, Rarity.MYTHIC, mage.cards.r.RikuOfTwoReflections.class)); + cards.add(new SetCardInfo("Swamp", "3*", Rarity.LAND, mage.cards.basiclands.Swamp.class, FULL_ART_ZEN_VARIOUS)); + cards.add(new SetCardInfo("Sword of Feast and Famine", 6, Rarity.RARE, mage.cards.s.SwordOfFeastAndFamine.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/JudgeGiftCards2015.java b/Mage.Sets/src/mage/sets/JudgeGiftCards2015.java new file mode 100644 index 0000000000..a3047a0301 --- /dev/null +++ b/Mage.Sets/src/mage/sets/JudgeGiftCards2015.java @@ -0,0 +1,32 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/j15 + */ +public class JudgeGiftCards2015 extends ExpansionSet { + + private static final JudgeGiftCards2015 instance = new JudgeGiftCards2015(); + + public static JudgeGiftCards2015 getInstance() { + return instance; + } + + private JudgeGiftCards2015() { + super("Judge Gift Cards 2015", "J15", ExpansionSet.buildDate(2015, 1, 1), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Damnation", 5, Rarity.RARE, mage.cards.d.Damnation.class)); + cards.add(new SetCardInfo("Dualcaster Mage", 6, Rarity.RARE, mage.cards.d.DualcasterMage.class)); + cards.add(new SetCardInfo("Feldon of the Third Path", 7, Rarity.MYTHIC, mage.cards.f.FeldonOfTheThirdPath.class)); + cards.add(new SetCardInfo("Ravages of War", 4, Rarity.RARE, mage.cards.r.RavagesOfWar.class)); + cards.add(new SetCardInfo("Rishadan Port", 3, Rarity.RARE, mage.cards.r.RishadanPort.class)); + cards.add(new SetCardInfo("Shardless Agent", 2, Rarity.RARE, mage.cards.s.ShardlessAgent.class)); + cards.add(new SetCardInfo("Temporal Manipulation", 1, Rarity.RARE, mage.cards.t.TemporalManipulation.class)); + cards.add(new SetCardInfo("Wasteland", 8, Rarity.RARE, mage.cards.w.Wasteland.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/JudgeGiftCards2016.java b/Mage.Sets/src/mage/sets/JudgeGiftCards2016.java new file mode 100644 index 0000000000..24e0ae4519 --- /dev/null +++ b/Mage.Sets/src/mage/sets/JudgeGiftCards2016.java @@ -0,0 +1,31 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/j16 + */ +public class JudgeGiftCards2016 extends ExpansionSet { + + private static final JudgeGiftCards2016 instance = new JudgeGiftCards2016(); + + public static JudgeGiftCards2016 getInstance() { + return instance; + } + + private JudgeGiftCards2016() { + super("Judge Gift Cards 2016", "J16", ExpansionSet.buildDate(2016, 1, 1), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Azusa, Lost but Seeking", 3, Rarity.RARE, mage.cards.a.AzusaLostButSeeking.class)); + cards.add(new SetCardInfo("Command Beacon", 4, Rarity.RARE, mage.cards.c.CommandBeacon.class)); + cards.add(new SetCardInfo("Defense of the Heart", 7, Rarity.RARE, mage.cards.d.DefenseOfTheHeart.class)); + cards.add(new SetCardInfo("Imperial Seal", 6, Rarity.RARE, mage.cards.i.ImperialSeal.class)); + cards.add(new SetCardInfo("Mana Drain", 2, Rarity.RARE, mage.cards.m.ManaDrain.class)); + cards.add(new SetCardInfo("Mystic Confluence", 5, Rarity.RARE, mage.cards.m.MysticConfluence.class)); + cards.add(new SetCardInfo("Zur the Enchanter", 8, Rarity.RARE, mage.cards.z.ZurTheEnchanter.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/JudgeGiftCards2017.java b/Mage.Sets/src/mage/sets/JudgeGiftCards2017.java new file mode 100644 index 0000000000..95aeb250cb --- /dev/null +++ b/Mage.Sets/src/mage/sets/JudgeGiftCards2017.java @@ -0,0 +1,34 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/j17 + */ +public class JudgeGiftCards2017 extends ExpansionSet { + + private static final JudgeGiftCards2017 instance = new JudgeGiftCards2017(); + + public static JudgeGiftCards2017 getInstance() { + return instance; + } + + private JudgeGiftCards2017() { + super("Judge Gift Cards 2017", "J17", ExpansionSet.buildDate(2017, 1, 1), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Avacyn, Angel of Hope", 1, Rarity.MYTHIC, mage.cards.a.AvacynAngelOfHope.class)); + cards.add(new SetCardInfo("Capture of Jingzhou", 2, Rarity.RARE, mage.cards.c.CaptureOfJingzhou.class)); + cards.add(new SetCardInfo("Doran, the Siege Tower", 5, Rarity.MYTHIC, mage.cards.d.DoranTheSiegeTower.class)); + cards.add(new SetCardInfo("Gaddock Teeg", 3, Rarity.RARE, mage.cards.g.GaddockTeeg.class)); + cards.add(new SetCardInfo("Homeward Path", 4, Rarity.RARE, mage.cards.h.HomewardPath.class)); + cards.add(new SetCardInfo("Pendelhaven", 8, Rarity.RARE, mage.cards.p.Pendelhaven.class)); + cards.add(new SetCardInfo("Prismatic Geoscope", 6, Rarity.RARE, mage.cards.p.PrismaticGeoscope.class)); + // Card not implemented + // cards.add(new SetCardInfo("Rules Lawyer", 9, Rarity.RARE, mage.cards.r.RulesLawyer.class)); + cards.add(new SetCardInfo("Spellskite", 7, Rarity.RARE, mage.cards.s.Spellskite.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/JudgeGiftCards2018.java b/Mage.Sets/src/mage/sets/JudgeGiftCards2018.java new file mode 100644 index 0000000000..364b11b557 --- /dev/null +++ b/Mage.Sets/src/mage/sets/JudgeGiftCards2018.java @@ -0,0 +1,32 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/j18 + */ +public class JudgeGiftCards2018 extends ExpansionSet { + + private static final JudgeGiftCards2018 instance = new JudgeGiftCards2018(); + + public static JudgeGiftCards2018 getInstance() { + return instance; + } + + private JudgeGiftCards2018() { + super("Judge Gift Cards 2018", "J18", ExpansionSet.buildDate(2018, 1, 1), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Commander's Sphere", 4, Rarity.RARE, mage.cards.c.CommandersSphere.class)); + cards.add(new SetCardInfo("Food Chain", 8, Rarity.RARE, mage.cards.f.FoodChain.class)); + cards.add(new SetCardInfo("Lord of Atlantis", 6, Rarity.RARE, mage.cards.l.LordOfAtlantis.class)); + cards.add(new SetCardInfo("Merchant Scroll", 1, Rarity.RARE, mage.cards.m.MerchantScroll.class)); + cards.add(new SetCardInfo("Nin, the Pain Artist", 3, Rarity.RARE, mage.cards.n.NinThePainArtist.class)); + cards.add(new SetCardInfo("Rhystic Study", 7, Rarity.RARE, mage.cards.r.RhysticStudy.class)); + cards.add(new SetCardInfo("Teferi's Protection", 5, Rarity.RARE, mage.cards.t.TeferisProtection.class)); + cards.add(new SetCardInfo("Vampiric Tutor", 2, Rarity.RARE, mage.cards.v.VampiricTutor.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/JudgeGiftCards2019.java b/Mage.Sets/src/mage/sets/JudgeGiftCards2019.java new file mode 100644 index 0000000000..2ae96bb0e5 --- /dev/null +++ b/Mage.Sets/src/mage/sets/JudgeGiftCards2019.java @@ -0,0 +1,32 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/j19 + */ +public class JudgeGiftCards2019 extends ExpansionSet { + + private static final JudgeGiftCards2019 instance = new JudgeGiftCards2019(); + + public static JudgeGiftCards2019 getInstance() { + return instance; + } + + private JudgeGiftCards2019() { + super("Judge Gift Cards 2019", "J19", ExpansionSet.buildDate(2019, 4, 10), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Chalice of the Void", 7, Rarity.RARE, mage.cards.c.ChaliceOfTheVoid.class)); + cards.add(new SetCardInfo("Isolated Watchtower", 4, Rarity.MYTHIC, mage.cards.i.IsolatedWatchtower.class)); + cards.add(new SetCardInfo("Mirri's Guile", 1, Rarity.MYTHIC, mage.cards.m.MirrisGuile.class)); + cards.add(new SetCardInfo("Monastery Mentor", 5, Rarity.MYTHIC, mage.cards.m.MonasteryMentor.class)); + cards.add(new SetCardInfo("Mox Opal", 3, Rarity.MYTHIC, mage.cards.m.MoxOpal.class)); + cards.add(new SetCardInfo("Reflecting Pool", 8, Rarity.RARE, mage.cards.r.ReflectingPool.class)); + cards.add(new SetCardInfo("Sliver Legion", 2, Rarity.MYTHIC, mage.cards.s.SliverLegion.class)); + cards.add(new SetCardInfo("Yuriko, the Tiger's Shadow", 6, Rarity.RARE, mage.cards.y.YurikoTheTigersShadow.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/JudgeGiftCards2020.java b/Mage.Sets/src/mage/sets/JudgeGiftCards2020.java new file mode 100644 index 0000000000..d409a1c470 --- /dev/null +++ b/Mage.Sets/src/mage/sets/JudgeGiftCards2020.java @@ -0,0 +1,30 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/j20 + */ +public class JudgeGiftCards2020 extends ExpansionSet { + + private static final JudgeGiftCards2020 instance = new JudgeGiftCards2020(); + + public static JudgeGiftCards2020 getInstance() { + return instance; + } + + private JudgeGiftCards2020() { + super("Judge Gift Cards 2020", "J20", ExpansionSet.buildDate(2020, 1, 1), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Arena Rector", 1, Rarity.RARE, mage.cards.a.ArenaRector.class)); + cards.add(new SetCardInfo("Demonic Tutor", 4, Rarity.RARE, mage.cards.d.DemonicTutor.class)); + cards.add(new SetCardInfo("Enlightened Tutor", 2, Rarity.RARE, mage.cards.e.EnlightenedTutor.class)); + cards.add(new SetCardInfo("Gamble", 6, Rarity.RARE, mage.cards.g.Gamble.class)); + cards.add(new SetCardInfo("Spellseeker", 3, Rarity.RARE, mage.cards.s.Spellseeker.class)); + cards.add(new SetCardInfo("Sylvan Tutor", 8, Rarity.RARE, mage.cards.s.SylvanTutor.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/JudgePromo.java b/Mage.Sets/src/mage/sets/JudgePromo.java deleted file mode 100644 index 5efbac3d00..0000000000 --- a/Mage.Sets/src/mage/sets/JudgePromo.java +++ /dev/null @@ -1,136 +0,0 @@ - -package mage.sets; - -import mage.cards.ExpansionSet; -import mage.constants.Rarity; -import mage.constants.SetType; - -/** - * - * @author fireshoes - */ -public final class JudgePromo extends ExpansionSet { - - private static final JudgePromo instance = new JudgePromo(); - - public static JudgePromo getInstance() { - return instance; - } - - private JudgePromo() { - super("Judge Promo", "JR", ExpansionSet.buildDate(2011, 6, 17), SetType.PROMOTIONAL); - this.hasBoosters = false; - cards.add(new SetCardInfo("Argothian Enchantress", 12, Rarity.RARE, mage.cards.a.ArgothianEnchantress.class)); - cards.add(new SetCardInfo("Armageddon", 14, Rarity.RARE, mage.cards.a.Armageddon.class)); - cards.add(new SetCardInfo("Avacyn, Angel of Hope", 110, Rarity.SPECIAL, mage.cards.a.AvacynAngelOfHope.class)); - cards.add(new SetCardInfo("Azusa, Lost but Seeking", 102, Rarity.RARE, mage.cards.a.AzusaLostButSeeking.class));// 2016 003/008 - cards.add(new SetCardInfo("Balance", 15, Rarity.RARE, mage.cards.b.Balance.class)); - cards.add(new SetCardInfo("Ball Lightning", 7, Rarity.RARE, mage.cards.b.BallLightning.class)); - cards.add(new SetCardInfo("Bitterblossom", 59, Rarity.RARE, mage.cards.b.Bitterblossom.class)); - cards.add(new SetCardInfo("Bloodstained Mire", 43, Rarity.RARE, mage.cards.b.BloodstainedMire.class)); - cards.add(new SetCardInfo("Bribery", 73, Rarity.RARE, mage.cards.b.Bribery.class)); - cards.add(new SetCardInfo("Burning Wish", 42, Rarity.RARE, mage.cards.b.BurningWish.class)); - cards.add(new SetCardInfo("Command Beacon", 105, Rarity.RARE, mage.cards.c.CommandBeacon.class));// 2016 004/008 - cards.add(new SetCardInfo("Command Tower", 71, Rarity.COMMON, mage.cards.c.CommandTower.class)); - cards.add(new SetCardInfo("Counterspell", 5, Rarity.COMMON, mage.cards.c.Counterspell.class)); - cards.add(new SetCardInfo("Crucible of Worlds", 75, Rarity.RARE, mage.cards.c.CrucibleOfWorlds.class)); - cards.add(new SetCardInfo("Cunning Wish", 29, Rarity.RARE, mage.cards.c.CunningWish.class)); - cards.add(new SetCardInfo("Damnation", 98, Rarity.RARE, mage.cards.d.Damnation.class)); - cards.add(new SetCardInfo("Dark Confidant", 61, Rarity.RARE, mage.cards.d.DarkConfidant.class)); - cards.add(new SetCardInfo("Dark Ritual", 38, Rarity.COMMON, mage.cards.d.DarkRitual.class)); - cards.add(new SetCardInfo("Decree of Justice", 32, Rarity.RARE, mage.cards.d.DecreeOfJustice.class)); - cards.add(new SetCardInfo("Defense of the Heart", 106, Rarity.RARE, mage.cards.d.DefenseOfTheHeart.class)); // 2016 007/008 - cards.add(new SetCardInfo("Demonic Tutor", 35, Rarity.UNCOMMON, mage.cards.d.DemonicTutor.class)); - cards.add(new SetCardInfo("Deranged Hermit", 18, Rarity.RARE, mage.cards.d.DerangedHermit.class)); - cards.add(new SetCardInfo("Doubling Season", 62, Rarity.RARE, mage.cards.d.DoublingSeason.class)); - cards.add(new SetCardInfo("Dualcaster Mage", 99, Rarity.RARE, mage.cards.d.DualcasterMage.class)); - cards.add(new SetCardInfo("Elesh Norn, Grand Cenobite", 87, Rarity.MYTHIC, mage.cards.e.EleshNornGrandCenobite.class)); - cards.add(new SetCardInfo("Entomb", 56, Rarity.RARE, mage.cards.e.Entomb.class)); - cards.add(new SetCardInfo("Exalted Angel", 24, Rarity.RARE, mage.cards.e.ExaltedAngel.class)); - cards.add(new SetCardInfo("Feldon of the Third Path", 100, Rarity.MYTHIC, mage.cards.f.FeldonOfTheThirdPath.class)); - cards.add(new SetCardInfo("Flooded Strand", 44, Rarity.RARE, mage.cards.f.FloodedStrand.class)); - cards.add(new SetCardInfo("Flusterstorm", 65, Rarity.RARE, mage.cards.f.Flusterstorm.class)); - cards.add(new SetCardInfo("Force of Will", 83, Rarity.UNCOMMON, mage.cards.f.ForceOfWill.class)); - cards.add(new SetCardInfo("Forest", 93, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Gaddock Teeg", 112, Rarity.SPECIAL, mage.cards.g.GaddockTeeg.class)); - cards.add(new SetCardInfo("Gaea's Cradle", 3, Rarity.RARE, mage.cards.g.GaeasCradle.class)); - cards.add(new SetCardInfo("Gemstone Mine", 20, Rarity.UNCOMMON, mage.cards.g.GemstoneMine.class)); - cards.add(new SetCardInfo("Genesis", 79, Rarity.RARE, mage.cards.g.Genesis.class)); - cards.add(new SetCardInfo("Goblin Piledriver", 36, Rarity.RARE, mage.cards.g.GoblinPiledriver.class)); - cards.add(new SetCardInfo("Goblin Welder", 63, Rarity.RARE, mage.cards.g.GoblinWelder.class)); - cards.add(new SetCardInfo("Greater Good", 81, Rarity.RARE, mage.cards.g.GreaterGood.class)); - cards.add(new SetCardInfo("Grim Lavamancer", 25, Rarity.RARE, mage.cards.g.GrimLavamancer.class)); - cards.add(new SetCardInfo("Grindstone", 104, Rarity.RARE, mage.cards.g.Grindstone.class)); - cards.add(new SetCardInfo("Hammer of Bogardan", 9, Rarity.RARE, mage.cards.h.HammerOfBogardan.class)); - cards.add(new SetCardInfo("Hanna, Ship's Navigator", 84, Rarity.RARE, mage.cards.h.HannaShipsNavigator.class)); - cards.add(new SetCardInfo("Hermit Druid", 19, Rarity.RARE, mage.cards.h.HermitDruid.class)); - cards.add(new SetCardInfo("Homeward Path", 113, Rarity.SPECIAL, mage.cards.h.HomewardPath.class)); - cards.add(new SetCardInfo("Imperial Recruiter", 74, Rarity.UNCOMMON, mage.cards.i.ImperialRecruiter.class)); - cards.add(new SetCardInfo("Imperial Seal", 109, Rarity.SPECIAL, mage.cards.i.ImperialSeal.class));// 2016 006/008 - cards.add(new SetCardInfo("Intuition", 11, Rarity.RARE, mage.cards.i.Intuition.class)); - cards.add(new SetCardInfo("Island", 90, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Karador, Ghost Chieftain", 80, Rarity.MYTHIC, mage.cards.k.KaradorGhostChieftain.class)); - cards.add(new SetCardInfo("Karakas", 69, Rarity.UNCOMMON, mage.cards.k.Karakas.class)); - cards.add(new SetCardInfo("Karmic Guide", 67, Rarity.RARE, mage.cards.k.KarmicGuide.class)); - cards.add(new SetCardInfo("Land Tax", 52, Rarity.RARE, mage.cards.l.LandTax.class)); - cards.add(new SetCardInfo("Lightning Bolt", 1, Rarity.COMMON, mage.cards.l.LightningBolt.class)); - cards.add(new SetCardInfo("Living Death", 13, Rarity.RARE, mage.cards.l.LivingDeath.class)); - cards.add(new SetCardInfo("Living Wish", 37, Rarity.RARE, mage.cards.l.LivingWish.class)); - cards.add(new SetCardInfo("Mana Crypt", 60, Rarity.RARE, mage.cards.m.ManaCrypt.class)); - cards.add(new SetCardInfo("Mana Drain", 103, Rarity.UNCOMMON, mage.cards.m.ManaDrain.class));// 2016 002/008 - cards.add(new SetCardInfo("Maze of Ith", 39, Rarity.UNCOMMON, mage.cards.m.MazeOfIth.class)); - cards.add(new SetCardInfo("Meddling Mage", 26, Rarity.RARE, mage.cards.m.MeddlingMage.class)); - cards.add(new SetCardInfo("Memory Lapse", 4, Rarity.COMMON, mage.cards.m.MemoryLapse.class)); - cards.add(new SetCardInfo("Mind's Desire", 34, Rarity.RARE, mage.cards.m.MindsDesire.class)); - cards.add(new SetCardInfo("Mishra's Factory", 23, Rarity.UNCOMMON, mage.cards.m.MishrasFactory.class)); - cards.add(new SetCardInfo("Morphling", 53, Rarity.RARE, mage.cards.m.Morphling.class)); - cards.add(new SetCardInfo("Mountain", 92, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Mystic Confluence", 108, Rarity.SPECIAL, mage.cards.m.MysticConfluence.class, NON_FULL_USE_VARIOUS)); // 2016 005/008 - cards.add(new SetCardInfo("Natural Order", 49, Rarity.RARE, mage.cards.n.NaturalOrder.class)); - cards.add(new SetCardInfo("Nekusar, the Mindrazer", 86, Rarity.MYTHIC, mage.cards.n.NekusarTheMindrazer.class)); - cards.add(new SetCardInfo("Noble Hierarch", 66, Rarity.RARE, mage.cards.n.NobleHierarch.class)); - cards.add(new SetCardInfo("Oath of Druids", 8, Rarity.RARE, mage.cards.o.OathOfDruids.class)); - cards.add(new SetCardInfo("Oloro, Ageless Ascetic", 88, Rarity.MYTHIC, mage.cards.o.OloroAgelessAscetic.class)); - cards.add(new SetCardInfo("Orim's Chant", 33, Rarity.RARE, mage.cards.o.OrimsChant.class)); - cards.add(new SetCardInfo("Overwhelming Forces", 76, Rarity.RARE, mage.cards.o.OverwhelmingForces.class)); - cards.add(new SetCardInfo("Pernicious Deed", 27, Rarity.RARE, mage.cards.p.PerniciousDeed.class)); - cards.add(new SetCardInfo("Phyrexian Dreadnought", 50, Rarity.RARE, mage.cards.p.PhyrexianDreadnought.class)); - cards.add(new SetCardInfo("Phyrexian Negator", 17, Rarity.RARE, mage.cards.p.PhyrexianNegator.class)); - cards.add(new SetCardInfo("Plains", 89, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Polluted Delta", 45, Rarity.RARE, mage.cards.p.PollutedDelta.class)); - cards.add(new SetCardInfo("Ravages of War", 97, Rarity.RARE, mage.cards.r.RavagesOfWar.class)); - cards.add(new SetCardInfo("Ravenous Baloth", 28, Rarity.RARE, mage.cards.r.RavenousBaloth.class)); - cards.add(new SetCardInfo("Regrowth", 21, Rarity.UNCOMMON, mage.cards.r.Regrowth.class)); - cards.add(new SetCardInfo("Riku of Two Reflections", 82, Rarity.MYTHIC, mage.cards.r.RikuOfTwoReflections.class)); - cards.add(new SetCardInfo("Rishadan Port", 96, Rarity.RARE, mage.cards.r.RishadanPort.class)); - cards.add(new SetCardInfo("Shardless Agent", 95, Rarity.UNCOMMON, mage.cards.s.ShardlessAgent.class)); - cards.add(new SetCardInfo("Show and Tell", 77, Rarity.RARE, mage.cards.s.ShowAndTell.class)); - cards.add(new SetCardInfo("Sinkhole", 48, Rarity.COMMON, mage.cards.s.Sinkhole.class)); - cards.add(new SetCardInfo("Sneak Attack", 68, Rarity.RARE, mage.cards.s.SneakAttack.class)); - cards.add(new SetCardInfo("Sol Ring", 22, Rarity.UNCOMMON, mage.cards.s.SolRing.class)); - cards.add(new SetCardInfo("Stifle", 40, Rarity.RARE, mage.cards.s.Stifle.class)); - cards.add(new SetCardInfo("Stroke of Genius", 2, Rarity.RARE, mage.cards.s.StrokeOfGenius.class)); - cards.add(new SetCardInfo("Survival of the Fittest", 41, Rarity.RARE, mage.cards.s.SurvivalOfTheFittest.class)); - cards.add(new SetCardInfo("Swamp", 91, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Sword of Feast and Famine", 85, Rarity.MYTHIC, mage.cards.s.SwordOfFeastAndFamine.class)); - cards.add(new SetCardInfo("Sword of Fire and Ice", 57, Rarity.RARE, mage.cards.s.SwordOfFireAndIce.class)); - cards.add(new SetCardInfo("Sword of Light and Shadow", 70, Rarity.RARE, mage.cards.s.SwordOfLightAndShadow.class)); - cards.add(new SetCardInfo("Swords to Plowshares", 72, Rarity.UNCOMMON, mage.cards.s.SwordsToPlowshares.class)); - cards.add(new SetCardInfo("Thawing Glaciers", 51, Rarity.RARE, mage.cards.t.ThawingGlaciers.class)); - cards.add(new SetCardInfo("Time Warp", 16, Rarity.MYTHIC, mage.cards.t.TimeWarp.class)); - cards.add(new SetCardInfo("Tradewind Rider", 10, Rarity.RARE, mage.cards.t.TradewindRider.class)); - cards.add(new SetCardInfo("Vampiric Tutor", 6, Rarity.RARE, mage.cards.v.VampiricTutor.class)); - cards.add(new SetCardInfo("Vendilion Clique", 58, Rarity.RARE, mage.cards.v.VendilionClique.class)); - cards.add(new SetCardInfo("Vindicate", 31, Rarity.RARE, mage.cards.v.Vindicate.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Vindicate", 78, Rarity.RARE, mage.cards.v.Vindicate.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Wasteland", 55, Rarity.UNCOMMON, mage.cards.w.Wasteland.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Wasteland", 101, Rarity.RARE, mage.cards.w.Wasteland.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Wheel of Fortune", 54, Rarity.RARE, mage.cards.w.WheelOfFortune.class)); - cards.add(new SetCardInfo("Windswept Heath", 46, Rarity.RARE, mage.cards.w.WindsweptHeath.class)); - cards.add(new SetCardInfo("Wooded Foothills", 47, Rarity.RARE, mage.cards.w.WoodedFoothills.class)); - cards.add(new SetCardInfo("Xiahou Dun, the One-Eyed", 64, Rarity.RARE, mage.cards.x.XiahouDunTheOneEyed.class)); - cards.add(new SetCardInfo("Yawgmoth's Will", 30, Rarity.RARE, mage.cards.y.YawgmothsWill.class)); - cards.add(new SetCardInfo("Zur the Enchanter", 107, Rarity.RARE, mage.cards.z.ZurTheEnchanter.class)); // 2016 008/008 - } - -} diff --git a/Mage.Tests/src/test/java/org/mage/test/serverside/deck/DeckValidatorTest.java b/Mage.Tests/src/test/java/org/mage/test/serverside/deck/DeckValidatorTest.java index d5fb13d47a..1628d329dc 100644 --- a/Mage.Tests/src/test/java/org/mage/test/serverside/deck/DeckValidatorTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/serverside/deck/DeckValidatorTest.java @@ -135,7 +135,7 @@ public class DeckValidatorTest extends MageTestBase { Assert.assertFalse("Counterspell not allowed in modern", testDeckValid(new Modern(), deckList)); deckList.clear(); - deckList.add(new CardNameAmount("JR", 5, 4)); + deckList.add(new CardNameAmount("G00", 1, 4)); deckList.add(new CardNameAmount("Mountain", 56)); Assert.assertFalse("Counterspell not allowed in modern", testDeckValid(new Modern(), deckList));