diff --git a/Mage.Client/release/sample-decks/1998/1998 Cali-Nightmare World Championship Deck Brian Selden.dck b/Mage.Client/release/sample-decks/1998/1998 Cali-Nightmare World Championship Deck Brian Selden.dck index eca9cfad61e..08d5f738602 100644 --- a/Mage.Client/release/sample-decks/1998/1998 Cali-Nightmare World Championship Deck Brian Selden.dck +++ b/Mage.Client/release/sample-decks/1998/1998 Cali-Nightmare World Championship Deck Brian Selden.dck @@ -1,28 +1,28 @@ -1 [TMP:227] Cloudchaser Eagle +1 [TMP:15] Cloudchaser Eagle 1 [EXO:76] Thrull Surgeon -2 [TMP:328] Reflecting Pool -1 [MIR:44] Spirit of the Night +2 [TMP:322] Reflecting Pool +1 [MIR:146] Spirit of the Night 1 [TMP:98] Tradewind Rider 2 [VIS:167] Undiscovered Paradise 2 [7ED:350] Underground River 4 [EXO:129] Survival of the Fittest 2 [WTH:101] Firestorm 2 [9ED:149] Nekrataal -1 [STH:137] Volrath's Stronghold +1 [STH:143] Volrath's Stronghold 2 [7ED:336] Karplusan Forest 3 [5ED:413] City of Brass -4 [STH:75] Wall of Blossoms +4 [STH:125] Wall of Blossoms 1 [M11:239] Swamp 4 [M11:165] Birds of Paradise 1 [TSB:119] Gemstone Mine 1 [VIS:37] Man-o'-War -2 [STH:68] Spike Feeder +2 [STH:118] Spike Feeder 1 [EXO:128] Spike Weaver 1 [9ED:278] Verdant Force -2 [TMP:298] Scroll Rack +2 [TMP:308] Scroll Rack 4 [EXO:72] Recurring Nightmare 2 [TSB:89] Wall of Roots 2 [INV:255] Lobotomy 8 [M10:247] Forest 1 [WTH:112] Orcish Settlers -2 [VIS:73] Uktabi Orangutan +2 [VIS:123] Uktabi Orangutan diff --git a/Mage.Client/release/sample-decks/2011/Ala-M10-Zen/Tim Sussino's Pyromancer Ascension.dck b/Mage.Client/release/sample-decks/2011/Ala-M10-Zen/Tim Sussino's Pyromancer Ascension.dck index 71b4baf87c3..4d4d0ebb4ac 100644 --- a/Mage.Client/release/sample-decks/2011/Ala-M10-Zen/Tim Sussino's Pyromancer Ascension.dck +++ b/Mage.Client/release/sample-decks/2011/Ala-M10-Zen/Tim Sussino's Pyromancer Ascension.dck @@ -12,4 +12,4 @@ 4 [ZEN:119] Burst Lightning 4 [TMP:97] Time Warp 2 [M11:47] Call to Mind -7 [ZEN:264] Mountain +7 [ZEN:242a] Mountain diff --git a/Mage.Client/release/sample-decks/2011/Ala-M10-Zen/Tobias Graefensteiner's Pyromancer Ascension.dck b/Mage.Client/release/sample-decks/2011/Ala-M10-Zen/Tobias Graefensteiner's Pyromancer Ascension.dck index 877242c508d..aa6d1472a58 100644 --- a/Mage.Client/release/sample-decks/2011/Ala-M10-Zen/Tobias Graefensteiner's Pyromancer Ascension.dck +++ b/Mage.Client/release/sample-decks/2011/Ala-M10-Zen/Tobias Graefensteiner's Pyromancer Ascension.dck @@ -3,7 +3,7 @@ 3 [WWK:138] Khalni Garden 4 [M11:70] Preordain 4 [M12:63] Mana Leak -10 [GUR:2] Island +10 [PGRU:2] Island 2 [ZEN:48] Into the Roil 4 [ROE:86] See Beyond 4 [M12:73] Ponder @@ -12,4 +12,4 @@ 3 [TMP:97] Time Warp 3 [M11:54] Foresee 2 [M11:47] Call to Mind -5 [ZEN:264] Mountain +5 [ZEN:242a] Mountain diff --git a/Mage.Client/release/sample-decks/2011/Starter Decks/[ZEN] Kor Armory.dck b/Mage.Client/release/sample-decks/2011/Starter Decks/[ZEN] Kor Armory.dck index 762f24cc802..5e73f6f9d2f 100644 --- a/Mage.Client/release/sample-decks/2011/Starter Decks/[ZEN] Kor Armory.dck +++ b/Mage.Client/release/sample-decks/2011/Starter Decks/[ZEN] Kor Armory.dck @@ -25,7 +25,7 @@ AUTHOR:WotC 2 [ZEN:231] Plains 2 [ZEN:232] Plains 2 [ZEN:233] Plains -2 [ZEN:250] Plains -2 [ZEN:251] Plains -2 [ZEN:252] Plains -2 [ZEN:253] Plains \ No newline at end of file +2 [ZEN:230a] Plains +2 [ZEN:230a] Plains +2 [ZEN:230a] Plains +2 [ZEN:230a] Plains diff --git a/Mage.Client/release/sample-decks/2011/Starter Decks/[ZEN] The Adventurers.dck b/Mage.Client/release/sample-decks/2011/Starter Decks/[ZEN] The Adventurers.dck index 0ec81a0d06d..d7387f444c1 100644 --- a/Mage.Client/release/sample-decks/2011/Starter Decks/[ZEN] The Adventurers.dck +++ b/Mage.Client/release/sample-decks/2011/Starter Decks/[ZEN] The Adventurers.dck @@ -30,11 +30,11 @@ AUTHOR:WotC 1 [ZEN:247] Forest 1 [ZEN:248] Forest 1 [ZEN:249] Forest -1 [ZEN:262] Mountain -1 [ZEN:263] Mountain -1 [ZEN:264] Mountain -1 [ZEN:265] Mountain -1 [ZEN:266] Forest -1 [ZEN:267] Forest -1 [ZEN:268] Forest -1 [ZEN:269] Forest \ No newline at end of file +1 [ZEN:242a] Mountain +1 [ZEN:242a] Mountain +1 [ZEN:242a] Mountain +1 [ZEN:242a] Mountain +1 [ZEN:246a] Forest +1 [ZEN:246a] Forest +1 [ZEN:246a] Forest +1 [ZEN:246a] Forest diff --git a/Mage.Client/release/sample-decks/2011/Unsorted (submitted by Iran)/Hexproof Enchantress.dck b/Mage.Client/release/sample-decks/2011/Unsorted (submitted by Iran)/Hexproof Enchantress.dck index a2af5ec3141..b3b2b6344c8 100644 --- a/Mage.Client/release/sample-decks/2011/Unsorted (submitted by Iran)/Hexproof Enchantress.dck +++ b/Mage.Client/release/sample-decks/2011/Unsorted (submitted by Iran)/Hexproof Enchantress.dck @@ -1,21 +1,18 @@ -Hexproof Enchantress -[general] -constructed -[main] -3 Island -5 Plains -4 Invisible Stalker -4 Mentor of the Meek -4 Mesa Enchantress -4 Mirran Crusader -3 Angelic Destiny -4 Bonds of Faith -4 Nevermore -4 Oblivion Ring -3 Ghost Quarter -4 Glacial Fortress -2 Moorland Haunt -4 Seachrome Coast -4 Geist of Saint Traft -4 Gitaxian Probe -[sideboard] +3 [M21:263] Island +5 [M21:260] Plains +4 [ISD:60] Invisible Stalker +4 [M19:27] Mentor of the Meek +4 [M12:25] Mesa Enchantress +4 [MBS:14] Mirran Crusader +3 [M12:3] Angelic Destiny +4 [ISD:5] Bonds of Faith +4 [ISD:25] Nevermore +4 [M13:22] Oblivion Ring +3 [ISD:240] Ghost Quarter +4 [XLN:255] Glacial Fortress +2 [ISD:244] Moorland Haunt +4 [SOM:229] Seachrome Coast +4 [ISD:213] Geist of Saint Traft +4 [NPH:35] Gitaxian Probe +LAYOUT MAIN:(1,5)(EDH_POWER_LEVEL,false,73)|([M21:263],[M21:263],[M21:263],[M21:260],[M21:260],[M21:260],[M21:260],[M21:260],[M12:3],[M12:3],[M12:3],[ISD:5],[ISD:5],[ISD:5],[ISD:5],[NPH:35],[NPH:35],[NPH:35],[NPH:35])([ISD:25],[ISD:25],[ISD:25],[ISD:25])([ISD:244],[ISD:244],[ISD:213],[ISD:213],[ISD:213],[ISD:213])([ISD:60],[ISD:60],[ISD:60],[ISD:60],[M12:25],[M12:25],[M12:25],[M12:25],[MBS:14],[MBS:14],[MBS:14],[MBS:14],[M13:22],[M13:22],[M13:22],[M13:22],[ISD:240],[ISD:240],[ISD:240])([M19:27],[M19:27],[M19:27],[M19:27],[XLN:255],[XLN:255],[XLN:255],[XLN:255],[SOM:229],[SOM:229],[SOM:229],[SOM:229]) +LAYOUT SIDEBOARD:(0,0)(EDH_POWER_LEVEL,false,50)| diff --git a/Mage.Client/release/sample-decks/2011/Unsorted (submitted by Iran)/Shouta Yasooka's Blue-Black Control.dck b/Mage.Client/release/sample-decks/2011/Unsorted (submitted by Iran)/Shouta Yasooka's Blue-Black Control.dck index a3c9e2a8851..c3e4d2ed6d3 100644 --- a/Mage.Client/release/sample-decks/2011/Unsorted (submitted by Iran)/Shouta Yasooka's Blue-Black Control.dck +++ b/Mage.Client/release/sample-decks/2011/Unsorted (submitted by Iran)/Shouta Yasooka's Blue-Black Control.dck @@ -1,27 +1,24 @@ -[metadata] -Name=Shouta Yasooka's Blue-Black Control -Deck Type=Constructed -[main] -1 Black Sun's Zenith|MBS -1 Consume the Meek|ROE -4 Creeping Tar Pit|WWK -4 Darkslick Shores|SOM -2 Despise|NPH -2 Disfigure|ZEN -2 Doom Blade|M12 -4 Drowned Catacomb|M12 -4 Everflowing Chalice|WWK -2 Inkmoth Nexus|MBS -3 Inquisition of Kozilek|ROE -4 Island|ZEN -2 Jace Beleren|M11 -2 Jace, the Mind Sculptor|WWK -2 Mana Leak|STH -4 Preordain|M11 -3 Swamp|ZEN -3 Tectonic Edge|WWK -3 Tezzeret, Agent of Bolas|MBS -4 Torpor Orb|NPH -3 Tumble Magnet|SOM -1 Wurmcoil Engine|SOM -[sideboard] +1 [MBS:39] Black Sun's Zenith +1 [ROE:100] Consume the Meek +4 [WWK:134] Creeping Tar Pit +4 [SOM:226] Darkslick Shores +2 [KTK:69] Despise +2 [M20:95] Disfigure +2 [M14:96] Doom Blade +4 [XLN:253] Drowned Catacomb +4 [WWK:123] Everflowing Chalice +2 [MBS:145] Inkmoth Nexus +3 [ROE:115] Inquisition of Kozilek +4 [M21:263] Island +2 [M11:58] Jace Beleren +2 [WWK:31] Jace, the Mind Sculptor +2 [M12:63] Mana Leak +4 [M11:70] Preordain +3 [M21:266] Swamp +3 [WWK:145] Tectonic Edge +3 [MBS:97] Tezzeret, Agent of Bolas +4 [NPH:162] Torpor Orb +3 [SOM:218] Tumble Magnet +1 [SOM:223] Wurmcoil Engine +LAYOUT MAIN:(1,6)(EDH_POWER_LEVEL,false,73)|([KTK:69],[KTK:69],[M20:95],[M20:95],[M21:263],[M21:263],[M21:263],[M21:263],[M21:266],[M21:266],[M21:266],[NPH:162],[NPH:162],[NPH:162],[NPH:162])([M14:96],[M14:96],[SOM:218],[SOM:218],[SOM:218])([M11:70],[M11:70],[M11:70],[M11:70])([WWK:134],[WWK:134],[WWK:134],[WWK:134],[WWK:145],[WWK:145],[WWK:145],[MBS:97],[MBS:97],[MBS:97])([MBS:39],[ROE:100],[SOM:226],[SOM:226],[SOM:226],[SOM:226],[XLN:253],[XLN:253],[XLN:253],[XLN:253],[WWK:123],[WWK:123],[WWK:123],[WWK:123],[MBS:145],[MBS:145],[ROE:115],[ROE:115],[ROE:115],[M11:58],[M11:58],[M12:63],[M12:63],[SOM:223])([WWK:31],[WWK:31]) +LAYOUT SIDEBOARD:(0,0)(EDH_POWER_LEVEL,false,50)| diff --git a/Mage.Client/release/sample-decks/2011/World Championship 2011/Patrick Chapin's Grixis Control Standard.dck b/Mage.Client/release/sample-decks/2011/World Championship 2011/Patrick Chapin's Grixis Control Standard.dck index c2b31c0c0a5..be83c0f36e3 100644 --- a/Mage.Client/release/sample-decks/2011/World Championship 2011/Patrick Chapin's Grixis Control Standard.dck +++ b/Mage.Client/release/sample-decks/2011/World Championship 2011/Patrick Chapin's Grixis Control Standard.dck @@ -6,7 +6,7 @@ 4 [ISD:55] Forbidden Alchemy 1 [MBS:43] Go for the Throat 5 [ISD:261] Mountain -1 [ISD:247] Shimmering Grotto +1 [ISD:246] Shimmering Grotto 1 [M12:147] Inferno Titan 1 [SOM:225] Copperline Gorge 2 [M12:226] Drowned Catacomb diff --git a/Mage.Client/release/sample-decks/2012/ISD-DKA-AVR/Budget - Jacob's Mono-Black Zombies.dck b/Mage.Client/release/sample-decks/2012/ISD-DKA-AVR/Budget - Jacob's Mono-Black Zombies.dck index 30d90a8a251..d831f4807b8 100644 --- a/Mage.Client/release/sample-decks/2012/ISD-DKA-AVR/Budget - Jacob's Mono-Black Zombies.dck +++ b/Mage.Client/release/sample-decks/2012/ISD-DKA-AVR/Budget - Jacob's Mono-Black Zombies.dck @@ -1,7 +1,7 @@ 3 [DKA:76] Tragic Slip 1 [AVR:104] Gloom Surgeon -1 [ZEN:259] Swamp -1 [ZEN:258] Swamp +1 [ZEN:238a] Swamp +1 [ZEN:238a] Swamp 1 [NPH:170] Swamp 1 [MBS:123] Pierce Strider 1 [SOM:192] Perilous Myr @@ -17,7 +17,7 @@ 1 [USG:340] Swamp 1 [SOM:241] Swamp 3 [DKA:54] Black Cat -1 [ZEN:260] Swamp +1 [ZEN:238a] Swamp 4 [NPH:104] Birthing Pod 1 [SOM:238] Swamp 1 [SOM:239] Swamp diff --git a/Mage.Client/release/sample-decks/2012/ISD-DKA-AVR/Turbo Poison.dck b/Mage.Client/release/sample-decks/2012/ISD-DKA-AVR/Turbo Poison.dck index 6385c46c944..ab76ab16e1d 100644 --- a/Mage.Client/release/sample-decks/2012/ISD-DKA-AVR/Turbo Poison.dck +++ b/Mage.Client/release/sample-decks/2012/ISD-DKA-AVR/Turbo Poison.dck @@ -2,7 +2,7 @@ 1 [ISD:262] Forest 4 [MBS:145] Inkmoth Nexus 2 [DKA:27] Artful Dodge -1 [GUR:1] Forest +1 [PGRU:5] Forest 4 [SOM:166] Ichorclaw Myr 3 [NPH:2] Apostle's Blessing 1 [INV:335] Island diff --git a/Mage.Client/release/sample-decks/2012/Starter Decks/[DKA] Grave Power.dck b/Mage.Client/release/sample-decks/2012/Starter Decks/[DKA] Grave Power.dck index 59a3f9de0cd..c5f623c897e 100644 --- a/Mage.Client/release/sample-decks/2012/Starter Decks/[DKA] Grave Power.dck +++ b/Mage.Client/release/sample-decks/2012/Starter Decks/[DKA] Grave Power.dck @@ -8,7 +8,7 @@ NAME:[DKA] Grave Power 2 [ISD:69] Moon Heron 1 [M12:167] Brindle Boar 3 [ISD:43] Armored Skaab -2 [STH:60] Mulch +2 [STH:110] Mulch 1 [M13:159] Acidic Slime 2 [M12:48] Chasm Drake 1 [ISD:205] Splinterfright diff --git a/Mage.Client/release/sample-decks/2012/T2/[T2] Avignon.dck b/Mage.Client/release/sample-decks/2012/T2/[T2] Avignon.dck index 8936f251ff6..60d22011606 100644 --- a/Mage.Client/release/sample-decks/2012/T2/[T2] Avignon.dck +++ b/Mage.Client/release/sample-decks/2012/T2/[T2] Avignon.dck @@ -31,7 +31,7 @@ NAME:[T2] Avignon SB: 1 [ISD:74] Sensory Deprivation SB: 1 [WWK:26] Dispel SB: 3 [RTR:173] Izzet Staticaster -SB: 1 [MPR:38] Negate +SB: 1 [M20:69] Negate SB: 2 [RTR:201] Supreme Verdict SB: 2 [RTR:18] Rest in Peace SB: 2 [ISD:213] Geist of Saint Traft diff --git a/Mage.Client/release/sample-decks/2012/T2/[T2] Kangasu.dck b/Mage.Client/release/sample-decks/2012/T2/[T2] Kangasu.dck index 1916899e0ff..82b35e5e176 100644 --- a/Mage.Client/release/sample-decks/2012/T2/[T2] Kangasu.dck +++ b/Mage.Client/release/sample-decks/2012/T2/[T2] Kangasu.dck @@ -10,7 +10,7 @@ NAME:[T2] Kangasu 4 [ISD:122] Unburial Rites 3 [RTR:148] Centaur Healer 1 [AVR:106] Griselbrand -3 [STH:60] Mulch +3 [STH:110] Mulch 1 [M13:159] Acidic Slime 1 [AVR:229] Slayers' Stronghold 1 [ISD:196] Mulch diff --git a/Mage.Client/release/sample-decks/2012/T2/[T2] Samite Healer.dck b/Mage.Client/release/sample-decks/2012/T2/[T2] Samite Healer.dck index 71c04467d9a..e052145c99e 100644 --- a/Mage.Client/release/sample-decks/2012/T2/[T2] Samite Healer.dck +++ b/Mage.Client/release/sample-decks/2012/T2/[T2] Samite Healer.dck @@ -10,7 +10,7 @@ NAME:[T2] Samite Healer 4 [M13:193] Thragtusk 2 [M13:228] Rootbound Crag 4 [ISD:122] Unburial Rites -2 [STH:60] Mulch +2 [STH:110] Mulch 2 [ISD:196] Mulch 2 [M11:227] Rootbound Crag 1 [RAV:284] Temple Garden diff --git a/Mage.Client/release/sample-decks/2012/T2/[T2] dhouse.dck b/Mage.Client/release/sample-decks/2012/T2/[T2] dhouse.dck index d3bb9377b61..3174d9819a5 100644 --- a/Mage.Client/release/sample-decks/2012/T2/[T2] dhouse.dck +++ b/Mage.Client/release/sample-decks/2012/T2/[T2] dhouse.dck @@ -12,10 +12,10 @@ NAME:[T2] dhouse 2 [AVR:32] Restoration Angel 2 [M12:229] Sunpetal Grove 1 [MMQ:348] Forest -1 [4ED:177] Forest +1 [4ED:376] Forest 4 [M13:193] Thragtusk 4 [ISD:122] Unburial Rites -2 [STH:60] Mulch +2 [STH:110] Mulch 2 [ISD:196] Mulch 1 [10E:375] Swamp 3 [RAV:284] Temple Garden diff --git a/Mage.Client/release/sample-decks/2012/T2/[T2] puddingtime.dck b/Mage.Client/release/sample-decks/2012/T2/[T2] puddingtime.dck index c3b6d9898fb..6676109bfe9 100644 --- a/Mage.Client/release/sample-decks/2012/T2/[T2] puddingtime.dck +++ b/Mage.Client/release/sample-decks/2012/T2/[T2] puddingtime.dck @@ -2,7 +2,7 @@ NAME:[T2] puddingtime 4 [ISD:170] Avacyn's Pilgrim 1 [6ED:347] Forest 3 [ULG:110] Rancor -1 [4ED:188] Plains +1 [4ED:364] Plains 2 [ISD:239] Gavony Township 1 [MMQ:350] Forest 3 [AVR:206] Wolfir Silverheart @@ -17,7 +17,7 @@ NAME:[T2] puddingtime 3 [M13:193] Thragtusk 3 [AVR:36] Silverblade Paladin 1 [RAV:303] Forest -1 [ZEN:252] Plains +1 [ZEN:230a] Plains 1 [9ED:349] Forest 1 [M11:248] Forest 1 [WWK:95] Arbor Elf diff --git a/Mage.Client/release/sample-decks/2012/T2/[T2] sknbny.dck b/Mage.Client/release/sample-decks/2012/T2/[T2] sknbny.dck index 5a9bfa8e759..bbd2f754cfa 100644 --- a/Mage.Client/release/sample-decks/2012/T2/[T2] sknbny.dck +++ b/Mage.Client/release/sample-decks/2012/T2/[T2] sknbny.dck @@ -3,7 +3,7 @@ NAME:[T2] sknbny 3 [ISD:249] Woodland Cemetery 1 [ULG:110] Rancor 2 [ISD:239] Gavony Township -1 [5ED:436] Plains +1 [5ED:430] Plains 1 [M11:228] Sunpetal Grove 1 [RTR:1] Angel of Serenity 4 [RTR:178] Loxodon Smiter @@ -17,7 +17,7 @@ NAME:[T2] sknbny 3 [M13:193] Thragtusk 2 [RTR:208] Vraska the Unseen 1 [RTR:141] Abrupt Decay -1 [ZEN:266] Forest +1 [ZEN:246a] Forest 3 [AVR:36] Silverblade Paladin 2 [RAV:284] Temple Garden 3 [RTR:194] Selesnya Charm diff --git a/Mage.Client/release/sample-decks/2013/Legacy/Tim Wilson's Nic Fit.dck b/Mage.Client/release/sample-decks/2013/Legacy/Tim Wilson's Nic Fit.dck index 560689f930d..2ed9875dce9 100644 --- a/Mage.Client/release/sample-decks/2013/Legacy/Tim Wilson's Nic Fit.dck +++ b/Mage.Client/release/sample-decks/2013/Legacy/Tim Wilson's Nic Fit.dck @@ -1,7 +1,7 @@ NAME:Tim Wilson's Nic Fit 1 [MBS:92] Thrun, the Last Troll 4 [CMD:131] Punishing Fire -1 [3ED:302] Taiga +1 [3ED:287] Taiga 4 [ZEN:229] Verdant Catacombs 2 [RTR:265] Mountain 1 [M12:188] Primeval Titan @@ -29,7 +29,7 @@ NAME:Tim Wilson's Nic Fit 4 [MBS:81] Green Sun's Zenith SB: 2 [LRW:145] Thoughtseize SB: 3 [USG:240] Carpet of Flowers -SB: 3 [4ED:236] Red Elemental Blast +SB: 3 [4ED:218] Red Elemental Blast SB: 2 [ZEN:57] Mindbreak Trap SB: 2 [RTR:197] Slaughter Games SB: 3 [NPH:74] Surgical Extraction diff --git a/Mage.Client/release/sample-decks/2013/Modern/DailyMTG/Krond - Clothes in a Bag.dck b/Mage.Client/release/sample-decks/2013/Modern/DailyMTG/Krond - Clothes in a Bag.dck index 5e5d8f8e1ed..278aea78dde 100644 --- a/Mage.Client/release/sample-decks/2013/Modern/DailyMTG/Krond - Clothes in a Bag.dck +++ b/Mage.Client/release/sample-decks/2013/Modern/DailyMTG/Krond - Clothes in a Bag.dck @@ -22,10 +22,10 @@ NAME:Krond — Clothes in a Bag 2 [ARB:75] Qasali Pridemage 1 [UDS:143] Yavimaya Hollow 3 [PC2:99] Krond the Dawn-Clad -1 [TMP:218] Auratog +1 [TMP:6] Auratog 3 [AVR:194] Somberwald Sage 6 [AVR:230] Plains 1 [INV:229] Armadillo Cloak 1 [LRW:248] Gaddock Teeg -1 [NMS:18] Seal of Cleansing +1 [NEM:18] Seal of Cleansing 1 [DIS:7] Celestial Ancient diff --git a/Mage.Client/release/sample-decks/2013/Modern/GP Kansas City/Jonathan Riddell's Melira Pod.dck b/Mage.Client/release/sample-decks/2013/Modern/GP Kansas City/Jonathan Riddell's Melira Pod.dck index 64d377f7f6a..07828c69fed 100644 --- a/Mage.Client/release/sample-decks/2013/Modern/GP Kansas City/Jonathan Riddell's Melira Pod.dck +++ b/Mage.Client/release/sample-decks/2013/Modern/GP Kansas City/Jonathan Riddell's Melira Pod.dck @@ -20,7 +20,7 @@ NAME:Jonathan Riddell's Melira Pod 1 [GPT:124] Orzhov Pontiff 1 [ARB:75] Qasali Pridemage 3 [RAV:156] Chord of Calling -1 [MIR:151] Wall of Roots +1 [MIR:253] Wall of Roots 1 [ZEN:219] Marsh Flats 1 [NPH:159] Spellskite 1 [CMD:152] Eternal Witness diff --git a/Mage.Client/release/sample-decks/2013/Modern/GP Kansas City/Josh Inoa's UWR Splinter Twin.dck b/Mage.Client/release/sample-decks/2013/Modern/GP Kansas City/Josh Inoa's UWR Splinter Twin.dck index 65a5c678bc5..97ad4d8889e 100644 --- a/Mage.Client/release/sample-decks/2013/Modern/GP Kansas City/Josh Inoa's UWR Splinter Twin.dck +++ b/Mage.Client/release/sample-decks/2013/Modern/GP Kansas City/Josh Inoa's UWR Splinter Twin.dck @@ -13,7 +13,7 @@ NAME:Josh Inoa's UWR Splinter Twin 2 [AVR:233] Island 1 [NPH:159] Spellskite 3 [RAV:63] Remand -4 [4ED:226] Lightning Bolt +4 [4ED:208] Lightning Bolt 2 [CHK:175] Kiki-Jiki, Mirror Breaker 1 [AVR:230] Plains 2 [DIS:174] Hallowed Fountain diff --git a/Mage.Client/release/sample-decks/2013/Modern/GP Kansas City/Louis Kaplan's Kiki-Jiki Pod.dck b/Mage.Client/release/sample-decks/2013/Modern/GP Kansas City/Louis Kaplan's Kiki-Jiki Pod.dck index c4cd756d581..444f7099474 100644 --- a/Mage.Client/release/sample-decks/2013/Modern/GP Kansas City/Louis Kaplan's Kiki-Jiki Pod.dck +++ b/Mage.Client/release/sample-decks/2013/Modern/GP Kansas City/Louis Kaplan's Kiki-Jiki Pod.dck @@ -24,7 +24,7 @@ NAME:Louis Kaplan's Kiki-Jiki Pod 1 [GTC:247] Stomping Ground 1 [GTC:245] Sacred Foundry 3 [RAV:156] Chord of Calling -4 [MIR:151] Wall of Roots +4 [MIR:253] Wall of Roots 1 [NPH:159] Spellskite 1 [CMD:152] Eternal Witness 2 [SHM:271] Fire-Lit Thicket diff --git a/Mage.Client/release/sample-decks/2013/Modern/GP Kansas City/Noah Whinston's Splinter Twin.dck b/Mage.Client/release/sample-decks/2013/Modern/GP Kansas City/Noah Whinston's Splinter Twin.dck index 93ed447ed1c..57aeeb128b4 100644 --- a/Mage.Client/release/sample-decks/2013/Modern/GP Kansas City/Noah Whinston's Splinter Twin.dck +++ b/Mage.Client/release/sample-decks/2013/Modern/GP Kansas City/Noah Whinston's Splinter Twin.dck @@ -11,7 +11,7 @@ NAME:Noah Whinston's Splinter Twin 3 [NPH:159] Spellskite 4 [5DN:36] Serum Visions 4 [RAV:63] Remand -3 [4ED:226] Lightning Bolt +3 [4ED:208] Lightning Bolt 2 [CHK:175] Kiki-Jiki, Mirror Breaker 3 [GPT:164] Steam Vents 4 [ZEN:223] Scalding Tarn diff --git a/Mage.Client/release/sample-decks/2013/Modern/GP Kansas City/Steven Locke's Domain Zoo.dck b/Mage.Client/release/sample-decks/2013/Modern/GP Kansas City/Steven Locke's Domain Zoo.dck index f76f181e9af..09dfbb537f7 100644 --- a/Mage.Client/release/sample-decks/2013/Modern/GP Kansas City/Steven Locke's Domain Zoo.dck +++ b/Mage.Client/release/sample-decks/2013/Modern/GP Kansas City/Steven Locke's Domain Zoo.dck @@ -13,19 +13,19 @@ NAME:Steven Locke's Domain Zoo 1 [ZEN:219] Marsh Flats 1 [RAV:284] Temple Garden 4 [FUT:153] Tarmogoyf -4 [4ED:226] Lightning Bolt +4 [4ED:208] Lightning Bolt 4 [GTC:119] Experiment One 1 [AVR:230] Plains 1 [DIS:174] Hallowed Fountain 1 [GPT:164] Steam Vents 2 [ZEN:223] Scalding Tarn -4 [ARN:49] Kird Ape +4 [ARN:40] Kird Ape 2 [CMD:25] Path to Exile 4 [WWK:13] Loam Lion 2 [ZEN:229] Verdant Catacombs SB: 4 [LRW:145] Thoughtseize SB: 1 [GTC:167] Ghor-Clan Rampager -SB: 1 [ATQ:93] Shatterstorm +SB: 1 [ATQ:28] Shatterstorm SB: 2 [ISD:36] Stony Silence SB: 2 [MMA:190] Kitchen Finks SB: 1 [DDF:1] Elspeth, Knight-Errant diff --git a/Mage.Client/release/sample-decks/2013/Modern/Gamma_Frog's Raka Tempo.dck b/Mage.Client/release/sample-decks/2013/Modern/Gamma_Frog's Raka Tempo.dck index 0477a50df94..5953730fd7a 100644 --- a/Mage.Client/release/sample-decks/2013/Modern/Gamma_Frog's Raka Tempo.dck +++ b/Mage.Client/release/sample-decks/2013/Modern/Gamma_Frog's Raka Tempo.dck @@ -7,15 +7,15 @@ NAME:Gamma_Frog's Raka Tempo 1 [DIS:174] Hallowed Fountain 3 [ISD:213] Geist of Saint Traft 4 [ISD:78] Snapcaster Mage -1 [4ED:226] Lightning Bolt -1 [MPR:40] Lightning Bolt +1 [4ED:208] Lightning Bolt +1 [M11:149] Lightning Bolt 1 [RTR:172] Izzet Charm 1 [RTR:247] Steam Vents 1 [GPT:164] Steam Vents -2 [3ED:161] Lightning Bolt -1 [MPR:8] Mana Leak +2 [3ED:162] Lightning Bolt +1 [M12:63] Mana Leak 1 [STH:36] Mana Leak -2 [MPR:16] Lightning Helix +2 [RAV:213] Lightning Helix 2 [M11:62] Mana Leak 4 [ZEN:223] Scalding Tarn 1 [ZEN:242] Mountain @@ -39,4 +39,4 @@ SB: 3 [MRD:101] Molten Rain SB: 1 [M12:40] Timely Reinforcements SB: 1 [M12:11] Celestial Purge SB: 1 [M10:7] Celestial Purge -SB: 1 [ATQ:93] Shatterstorm +SB: 1 [ATQ:28] Shatterstorm diff --git a/Mage.Client/release/sample-decks/2013/Modern/New Mexico - Albuquerque/Brandon Remley's KikiPod 3rd Place.dck b/Mage.Client/release/sample-decks/2013/Modern/New Mexico - Albuquerque/Brandon Remley's KikiPod 3rd Place.dck index a5aa56acae1..fda88f02850 100644 --- a/Mage.Client/release/sample-decks/2013/Modern/New Mexico - Albuquerque/Brandon Remley's KikiPod 3rd Place.dck +++ b/Mage.Client/release/sample-decks/2013/Modern/New Mexico - Albuquerque/Brandon Remley's KikiPod 3rd Place.dck @@ -9,7 +9,7 @@ NAME:Brandon Remley 3rd Place 1 [SHM:192] Murderous Redcap 4 [CON:87] Noble Hierarch 3 [AVR:32] Restoration Angel -1 [5ED:142] Birds of Paradise +1 [5ED:280] Birds of Paradise 1 [RTR:247] Steam Vents 1 [M12:72] Phantasmal Image 1 [MMQ:348] Forest @@ -24,9 +24,9 @@ NAME:Brandon Remley 3rd Place 1 [GTC:247] Stomping Ground 2 [CHK:175] Kiki-Jiki, Mirror Breaker 1 [10E:252] Birds of Paradise -1 [2ED:95] Birds of Paradise +1 [2ED:187] Birds of Paradise 1 [TSP:240] Harmonic Sliver -1 [MIR:151] Wall of Roots +1 [MIR:253] Wall of Roots 1 [SOM:230] Plains 1 [DIS:172] Breeding Pool 3 [TSB:89] Wall of Roots @@ -48,4 +48,4 @@ SB: 1 [M12:128] Combust SB: 1 [M10:65] Negate SB: 1 [AVR:210] Sigarda, Host of Herons SB: 1 [ISD:127] Ancient Grudge -SB: 1 [ATQ:93] Shatterstorm +SB: 1 [ATQ:28] Shatterstorm diff --git a/Mage.Client/release/sample-decks/2013/Modern/New Mexico - Albuquerque/David Daniel's KikiPod 1st Place.dck b/Mage.Client/release/sample-decks/2013/Modern/New Mexico - Albuquerque/David Daniel's KikiPod 1st Place.dck index dc60ade68ca..541be46efac 100644 --- a/Mage.Client/release/sample-decks/2013/Modern/New Mexico - Albuquerque/David Daniel's KikiPod 1st Place.dck +++ b/Mage.Client/release/sample-decks/2013/Modern/New Mexico - Albuquerque/David Daniel's KikiPod 1st Place.dck @@ -6,13 +6,13 @@ NAME:David Daniel (1st place) 1 [DIS:174] Hallowed Fountain 1 [NPH:33] Deceiver Exarch 3 [RAV:156] Chord of Calling -2 [4ED:118] Birds of Paradise +2 [4ED:234] Birds of Paradise 2 [SHM:271] Fire-Lit Thicket 1 [SHM:192] Murderous Redcap 4 [CON:87] Noble Hierarch 3 [AVR:32] Restoration Angel 1 [RTR:247] Steam Vents -1 [3ED:94] Birds of Paradise +1 [3ED:187] Birds of Paradise 1 [M12:72] Phantasmal Image 1 [ARB:75] Qasali Pridemage 4 [NPH:104] Birthing Pod @@ -25,13 +25,13 @@ NAME:David Daniel (1st place) 1 [RAV:280] Sacred Foundry 1 [GTC:247] Stomping Ground 3 [CHK:175] Kiki-Jiki, Mirror Breaker -1 [2ED:95] Birds of Paradise +1 [2ED:187] Birds of Paradise 1 [TSP:240] Harmonic Sliver -2 [MIR:151] Wall of Roots +2 [MIR:253] Wall of Roots 2 [TSB:89] Wall of Roots 1 [RTR:248] Temple Garden 1 [INV:334] Plains -1 [4ED:183] Mountain +1 [4ED:373] Mountain 3 [ZEN:220] Misty Rainforest 3 [ZEN:211] Arid Mesa 1 [AVR:166] Zealous Conscripts diff --git a/Mage.Client/release/sample-decks/2013/Modern/New Mexico - Albuquerque/Donald Richter 2nd Place (GWB).dck b/Mage.Client/release/sample-decks/2013/Modern/New Mexico - Albuquerque/Donald Richter 2nd Place (GWB).dck index 3f9cdc75ea5..58e8cf41c5b 100644 --- a/Mage.Client/release/sample-decks/2013/Modern/New Mexico - Albuquerque/Donald Richter 2nd Place (GWB).dck +++ b/Mage.Client/release/sample-decks/2013/Modern/New Mexico - Albuquerque/Donald Richter 2nd Place (GWB).dck @@ -1,6 +1,6 @@ NAME:Donald Richter 2nd Place 3 [TSP:204] Might of Old Krosa -1 [LEG:250] Pendelhaven +1 [LEG:305] Pendelhaven 3 [ULG:110] Rancor 4 [WWK:104] Groundswell 2 [RTR:141] Abrupt Decay @@ -14,7 +14,7 @@ NAME:Donald Richter 2nd Place 4 [NPH:29] Blighted Agent 1 [7ED:335] Island 4 [SOM:75] Plague Stinger -1 [ZEN:268] Forest +1 [ZEN:246a] Forest 4 [ZEN:220] Misty Rainforest 1 [SOM:241] Swamp 4 [ZEN:193] Vines of Vastwood diff --git a/Mage.Client/release/sample-decks/2013/Modern/New Mexico - Albuquerque/Joseph Cardoza's Meerfolk 4th Place.dck b/Mage.Client/release/sample-decks/2013/Modern/New Mexico - Albuquerque/Joseph Cardoza's Meerfolk 4th Place.dck index 40657d41e0f..f979f3350c2 100644 --- a/Mage.Client/release/sample-decks/2013/Modern/New Mexico - Albuquerque/Joseph Cardoza's Meerfolk 4th Place.dck +++ b/Mage.Client/release/sample-decks/2013/Modern/New Mexico - Albuquerque/Joseph Cardoza's Meerfolk 4th Place.dck @@ -6,7 +6,7 @@ NAME:Joseph Cardoza 4th Place 1 [4ED:82] Lord of Atlantis 4 [LRW:74] Merrow Reejerey 1 [7ED:333] Island -1 [ICE:336] Island +1 [ICE:368] Island 2 [2ED:63] Lord of Atlantis 2 [M10:62] Merfolk Sovereign 4 [M12:72] Phantasmal Image @@ -17,7 +17,7 @@ NAME:Joseph Cardoza 4th Place 4 [EVE:31] Wake Thrasher 1 [6ED:79] Lord of Atlantis 1 [MRD:291] Island -1 [ZEN:256] Island +1 [ZEN:234a] Island 1 [9ED:335] Island 4 [M13:59] Master of the Pearl Trident 1 [MMQ:336] Island diff --git a/Mage.Client/release/sample-decks/2013/Modern/Zoizaite's Splinter Twin.dck b/Mage.Client/release/sample-decks/2013/Modern/Zoizaite's Splinter Twin.dck index 1032bafc5b4..67bb897c5cf 100644 --- a/Mage.Client/release/sample-decks/2013/Modern/Zoizaite's Splinter Twin.dck +++ b/Mage.Client/release/sample-decks/2013/Modern/Zoizaite's Splinter Twin.dck @@ -20,7 +20,7 @@ NAME:Zoizaite's Splinter Twin 2 [CHK:175] Kiki-Jiki, Mirror Breaker 1 [M13:234] Island 3 [LRW:78] Pestermite -1 [4ED:178] Island +1 [4ED:367] Island 3 [RAV:63] Remand 4 [ZEN:220] Misty Rainforest 1 [ZEN:211] Arid Mesa diff --git a/Mage.Client/release/sample-decks/2013/Modern/_Blaze777_'s RG Tron.dck b/Mage.Client/release/sample-decks/2013/Modern/_Blaze777_'s RG Tron.dck index 7ff7723638d..21fb9dc8a8c 100644 --- a/Mage.Client/release/sample-decks/2013/Modern/_Blaze777_'s RG Tron.dck +++ b/Mage.Client/release/sample-decks/2013/Modern/_Blaze777_'s RG Tron.dck @@ -18,7 +18,7 @@ NAME:_Blaze777_'s RG Tron 2 [SOM:176] Mindslaver 4 [NPH:1] Karn Liberated 1 [10E:380] Forest -1 [ATQ:75] Urza's Mine +1 [ATQ:83a] Urza's Mine 4 [FUT:176] Grove of the Burnwillows 4 [ROE:174] Ancient Stirrings 3 [MRD:222] Oblivion Stone diff --git a/Mage.Client/release/sample-decks/2013/Modern/____czery's Kiki-Jiki Pod.dck b/Mage.Client/release/sample-decks/2013/Modern/____czery's Kiki-Jiki Pod.dck index 97fa7ba447d..cb6847fa5af 100644 --- a/Mage.Client/release/sample-decks/2013/Modern/____czery's Kiki-Jiki Pod.dck +++ b/Mage.Client/release/sample-decks/2013/Modern/____czery's Kiki-Jiki Pod.dck @@ -6,17 +6,17 @@ NAME:____czery's Kiki-Jiki Pod 1 [DIS:174] Hallowed Fountain 3 [ISD:213] Geist of Saint Traft 4 [ISD:78] Snapcaster Mage -1 [4ED:226] Lightning Bolt +1 [4ED:208] Lightning Bolt 1 [M11:149] Lightning Bolt 1 [RTR:172] Izzet Charm 1 [RTR:247] Steam Vents 1 [GPT:164] Steam Vents 1 [M12:145] Grim Lavamancer -1 [3ED:161] Lightning Bolt -1 [LEB:163] Lightning Bolt -1 [MPR:8] Mana Leak +1 [3ED:162] Lightning Bolt +1 [LEB:162] Lightning Bolt +1 [M12:63] Mana Leak 1 [STH:36] Mana Leak -2 [MPR:16] Lightning Helix +2 [RAV:213] Lightning Helix 1 [M11:62] Mana Leak 4 [ZEN:223] Scalding Tarn 1 [M12:63] Mana Leak @@ -36,7 +36,7 @@ SB: 1 [MOR:55] Vendilion Clique SB: 2 [NPH:159] Spellskite SB: 2 [ISD:36] Stony Silence SB: 2 [ALA:218] Relic of Progenitus -SB: 1 [MPR:45] Celestial Purge +SB: 1 [M12:11] Celestial Purge SB: 1 [HOP:124] Relic of Progenitus SB: 3 [MRD:101] Molten Rain SB: 1 [M12:40] Timely Reinforcements diff --git a/Mage.Client/release/sample-decks/2013/Modern/max115's Spirit Jund.dck b/Mage.Client/release/sample-decks/2013/Modern/max115's Spirit Jund.dck index a511520d580..4c903662c39 100644 --- a/Mage.Client/release/sample-decks/2013/Modern/max115's Spirit Jund.dck +++ b/Mage.Client/release/sample-decks/2013/Modern/max115's Spirit Jund.dck @@ -1,7 +1,7 @@ NAME:max115's Spirit Jund 3 [ISD:105] Liliana of the Veil -2 [4ED:226] Lightning Bolt -1 [MPR:40] Lightning Bolt +2 [4ED:208] Lightning Bolt +1 [M11:149] Lightning Bolt 1 [ISD:215] Olivia Voldaren 4 [ZEN:229] Verdant Catacombs 1 [ARB:92] Maelstrom Pulse @@ -12,8 +12,8 @@ NAME:max115's Spirit Jund 1 [9ED:341] Swamp 2 [PLS:128] Terminate 1 [SHM:229] Kitchen Finks -1 [MPR:39] Terminate -1 [ZEN:266] Forest +1 [ARB:46] Terminate +1 [ZEN:246a] Forest 3 [ROE:115] Inquisition of Kozilek 4 [RTR:213] Deathrite Shaman 4 [FUT:153] Tarmogoyf @@ -23,7 +23,7 @@ NAME:max115's Spirit Jund 2 [ULG:143] Treetop Village 4 [ZEN:219] Marsh Flats 1 [GTC:247] Stomping Ground -1 [LEA:162] Lightning Bolt +1 [LEA:161] Lightning Bolt 2 [LRW:145] Thoughtseize 4 [RAV:81] Dark Confidant 1 [RTR:243] Overgrown Tomb @@ -37,5 +37,5 @@ SB: 2 [RTR:141] Abrupt Decay SB: 1 [ISD:105] Liliana of the Veil SB: 2 [RTR:197] Slaughter Games SB: 1 [SHM:229] Kitchen Finks -SB: 1 [ATQ:93] Shatterstorm +SB: 1 [ATQ:28] Shatterstorm SB: 1 [ISD:127] Ancient Grudge diff --git a/Mage.Client/release/sample-decks/2013/Modern/optimus's Tribal Zoo.dck b/Mage.Client/release/sample-decks/2013/Modern/optimus's Tribal Zoo.dck index 91609a486c4..143ed7e2cb2 100644 --- a/Mage.Client/release/sample-decks/2013/Modern/optimus's Tribal Zoo.dck +++ b/Mage.Client/release/sample-decks/2013/Modern/optimus's Tribal Zoo.dck @@ -8,10 +8,10 @@ NAME:optimus's Tribal Zoo 4 [ISD:213] Geist of Saint Traft 3 [ISD:78] Snapcaster Mage 3 [INV:176] Tribal Flames -1 [MPR:40] Lightning Bolt +1 [M11:149] Lightning Bolt 1 [RTR:247] Steam Vents -1 [LEB:163] Lightning Bolt -1 [MPR:16] Lightning Helix +1 [LEB:162] Lightning Bolt +1 [RAV:213] Lightning Helix 4 [ZEN:223] Scalding Tarn 1 [GTC:240] Breeding Pool 4 [RTR:213] Deathrite Shaman @@ -23,7 +23,7 @@ NAME:optimus's Tribal Zoo 4 [ZEN:36] Steppe Lynx 2 [GTC:148] Boros Charm 4 [ZEN:220] Misty Rainforest -1 [MIR:295] Forest +1 [MIR:347] Forest 4 [ZEN:211] Arid Mesa 1 [RTR:238] Blood Crypt 1 [RTR:252] Plains diff --git a/Mage.Client/release/sample-decks/2013/Standard/DailyMTG ReConstructed/Darryl Hoard's Bottoms Up.dck b/Mage.Client/release/sample-decks/2013/Standard/DailyMTG ReConstructed/Darryl Hoard's Bottoms Up.dck index e7f15b40841..9e86cbc24da 100644 --- a/Mage.Client/release/sample-decks/2013/Standard/DailyMTG ReConstructed/Darryl Hoard's Bottoms Up.dck +++ b/Mage.Client/release/sample-decks/2013/Standard/DailyMTG ReConstructed/Darryl Hoard's Bottoms Up.dck @@ -9,7 +9,7 @@ NAME:Darryl Hoard's Bottoms Up 4 [M14:246] Forest 4 [M13:2] Ajani's Sunstriker 2 [M14:1] Ajani, Caller of the Pride -4 [DKA:146] Chalice of Death +4 [DKA:146] Chalice of Life 4 [M14:209] Elixir of Immortality 4 [M13:229] Sunpetal Grove 3 [M14:26] Path of Bravery diff --git a/Mage.Client/release/sample-decks/2013/Standard/DailyMTG Reconstructed - Sliving the good Life/Douglas Scheinberg's Seance Combo.dck b/Mage.Client/release/sample-decks/2013/Standard/DailyMTG Reconstructed - Sliving the good Life/Douglas Scheinberg's Seance Combo.dck index a11ea95c633..0cc56d539a8 100644 --- a/Mage.Client/release/sample-decks/2013/Standard/DailyMTG Reconstructed - Sliving the good Life/Douglas Scheinberg's Seance Combo.dck +++ b/Mage.Client/release/sample-decks/2013/Standard/DailyMTG Reconstructed - Sliving the good Life/Douglas Scheinberg's Seance Combo.dck @@ -1,4 +1,3 @@ -NAME:Douglas Scheinberg's Séance Combo 1 [AVR:42] Alchemist's Apprentice 4 [RTR:1] Angel of Serenity 1 [ISD:68] Mirror-Mad Phantasm diff --git a/Mage.Client/release/sample-decks/2013/Standard/DailyMTG with M14/Disciple of Innistrad's Angelic Post.dck b/Mage.Client/release/sample-decks/2013/Standard/DailyMTG with M14/Disciple of Innistrad's Angelic Post.dck index 1fea3178ec4..8fab4e2bbd8 100644 --- a/Mage.Client/release/sample-decks/2013/Standard/DailyMTG with M14/Disciple of Innistrad's Angelic Post.dck +++ b/Mage.Client/release/sample-decks/2013/Standard/DailyMTG with M14/Disciple of Innistrad's Angelic Post.dck @@ -13,7 +13,7 @@ NAME:Disciple of Innistrad's Angelic Post 1 [AVR:94] Demonic Rising 3 [AVR:220] Scroll of Avacyn 2 [M14:215] Ratchet Bomb -1 [DKA:146] Chalice of Death +1 [DKA:146] Chalice of Life 2 [AVR:230] Plains 1 [DKA:158] Vault of the Archangel 4 [AVR:38] Terminus diff --git a/Mage.Client/release/sample-decks/2013/Standard/GP Guadalajara (May 26)/Emmanuel Ramirez's Reanimator.dck b/Mage.Client/release/sample-decks/2013/Standard/GP Guadalajara (May 26)/Emmanuel Ramirez's Reanimator.dck index c8bf400e7de..196813996fd 100644 --- a/Mage.Client/release/sample-decks/2013/Standard/GP Guadalajara (May 26)/Emmanuel Ramirez's Reanimator.dck +++ b/Mage.Client/release/sample-decks/2013/Standard/GP Guadalajara (May 26)/Emmanuel Ramirez's Reanimator.dck @@ -1,4 +1,3 @@ -NAME:Emmanuel Ramírez's Reanimator 4 [ISD:170] Avacyn's Pilgrim 2 [ISD:249] Woodland Cemetery 3 [M13:159] Acidic Slime diff --git a/Mage.Client/release/sample-decks/2013/Standard/GP Quebec City/Frederic Mercier's Esper Control.dck b/Mage.Client/release/sample-decks/2013/Standard/GP Quebec City/Frederic Mercier's Esper Control.dck index 70622a3155f..5f12d980745 100644 --- a/Mage.Client/release/sample-decks/2013/Standard/GP Quebec City/Frederic Mercier's Esper Control.dck +++ b/Mage.Client/release/sample-decks/2013/Standard/GP Quebec City/Frederic Mercier's Esper Control.dck @@ -1,4 +1,3 @@ -NAME:Frédéric Mercier's Esper Control 2 [M13:26] Planar Cleansing 1 [RTR:250] Plains 4 [M13:225] Glacial Fortress diff --git a/Mage.Client/release/sample-decks/2013/Standard/GP Verona/Jeremy Dezani's Jund Midrange.dck b/Mage.Client/release/sample-decks/2013/Standard/GP Verona/Jeremy Dezani's Jund Midrange.dck index e5e32ee185a..280f8d1860c 100644 --- a/Mage.Client/release/sample-decks/2013/Standard/GP Verona/Jeremy Dezani's Jund Midrange.dck +++ b/Mage.Client/release/sample-decks/2013/Standard/GP Verona/Jeremy Dezani's Jund Midrange.dck @@ -1,4 +1,3 @@ -NAME:Jérémy Dezani's Jund Midrange 4 [M13:170] Farseek 3 [AVR:129] Bonfire of the Damned 1 [DKA:76] Tragic Slip diff --git a/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/Anthony Loman's Reanimator.dck b/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/Anthony Loman's Reanimator.dck index 2e290b74ee7..3ff18ad5802 100644 --- a/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/Anthony Loman's Reanimator.dck +++ b/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/Anthony Loman's Reanimator.dck @@ -21,8 +21,8 @@ NAME:Anthony Loman's Reanimator 1 [CNS:102] Misdirection 1 [KTK:258] Swamp 4 [VMA:136] Reanimate -4 [TMP:284] Lotus Petal -SB: 1 [NMS:58] Massacre +4 [TMP:294] Lotus Petal +SB: 1 [NEM:58] Massacre SB: 1 [RTR:231] Pithing Needle SB: 3 [M14:97] Duress SB: 1 [EXO:143] City of Traitors diff --git a/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/Derek Reda's Esper Deathblade.dck b/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/Derek Reda's Esper Deathblade.dck index 0c708187ff4..110e61d085a 100644 --- a/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/Derek Reda's Esper Deathblade.dck +++ b/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/Derek Reda's Esper Deathblade.dck @@ -1,5 +1,5 @@ NAME:Derek Reda's Esper Deathblade -2 [TMP:340] Wasteland +2 [TMP:330] Wasteland 3 [C13:63] True-Name Nemesis 4 [KTK:239] Polluted Delta 1 [NPH:130] Batterskull @@ -12,7 +12,7 @@ NAME:Derek Reda's Esper Deathblade 4 [VMA:69] Force of Will 3 [ZEN:219] Marsh Flats 1 [VMA:321] Tropical Island -1 [LEG:248] Karakas +1 [LEG:303] Karakas 3 [VMA:322] Tundra 3 [VMA:323] Underground Sea 4 [RTR:213] Deathrite Shaman @@ -23,12 +23,12 @@ NAME:Derek Reda's Esper Deathblade 3 [M12:73] Ponder 1 [ISD:105] Liliana of the Veil SB: 1 [ZEN:67] Spell Pierce -SB: 1 [TMP:340] Wasteland +SB: 1 [TMP:330] Wasteland SB: 2 [VMA:68] Flusterstorm SB: 1 [NPH:74] Surgical Extraction SB: 1 [RTR:231] Pithing Needle SB: 1 [VMA:321] Tropical Island -SB: 1 [LEG:248] Karakas +SB: 1 [LEG:303] Karakas SB: 1 [MMA:204] Engineered Explosives SB: 1 [ZEN:87] Disfigure SB: 1 [VMA:313] Scrubland diff --git a/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/Eric De Luca's Sultai Delver.dck b/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/Eric De Luca's Sultai Delver.dck index 412374508ed..5f8b9fe5121 100644 --- a/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/Eric De Luca's Sultai Delver.dck +++ b/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/Eric De Luca's Sultai Delver.dck @@ -1,5 +1,5 @@ NAME:Eric De Luca's Sultai Delver -4 [TMP:340] Wasteland +4 [TMP:330] Wasteland 2 [C13:63] True-Name Nemesis 1 [MMA:180] Maelstrom Pulse 4 [ZEN:220] Misty Rainforest diff --git a/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/Eric Markowicz's Jeskai Delver.dck b/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/Eric Markowicz's Jeskai Delver.dck index d0f3ec711ed..c9fb1b29656 100644 --- a/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/Eric Markowicz's Jeskai Delver.dck +++ b/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/Eric Markowicz's Jeskai Delver.dck @@ -1,10 +1,10 @@ NAME:Eric Markowicz's Jeskai Delver -4 [TMP:340] Wasteland +4 [TMP:330] Wasteland 3 [C13:63] True-Name Nemesis 4 [M11:149] Lightning Bolt 4 [ZEN:220] Misty Rainforest 1 [NPH:130] Batterskull -2 [4ED:236] Red Elemental Blast +2 [4ED:218] Red Elemental Blast 1 [BOK:163] Umezawa's Jitte 2 [RTR:241] Hallowed Fountain 2 [KTK:59] Treasure Cruise @@ -23,7 +23,7 @@ NAME:Eric Markowicz's Jeskai Delver 3 [M12:73] Ponder 1 [MMA:64] Spell Snare SB: 1 [MBS:138] Sword of Feast and Famine -SB: 2 [NMS:48] Submerge +SB: 2 [NEM:48] Submerge SB: 2 [ARB:8] Meddling Mage SB: 2 [DGM:135] Wear // Tear SB: 3 [ROE:146] Forked Bolt diff --git a/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/JD Nir's Ad Nauseam.dck b/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/JD Nir's Ad Nauseam.dck index 18b88670650..46f3a4a0c6d 100644 --- a/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/JD Nir's Ad Nauseam.dck +++ b/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/JD Nir's Ad Nauseam.dck @@ -4,7 +4,7 @@ NAME:JD Nir's Ad Nauseam 4 [KTK:239] Polluted Delta 1 [CNS:114] Ill-Gotten Gains 1 [KTK:258] Swamp -4 [TMP:284] Lotus Petal +4 [TMP:294] Lotus Petal 4 [JUD:62] Cabal Therapy 4 [DIS:46] Infernal Tutor 1 [KTK:254] Island @@ -24,7 +24,7 @@ NAME:JD Nir's Ad Nauseam 4 [M12:73] Ponder SB: 2 [CHK:268] Sensei's Divining Top SB: 2 [VMA:68] Flusterstorm -SB: 1 [NMS:58] Massacre +SB: 1 [NEM:58] Massacre SB: 4 [RTR:141] Abrupt Decay SB: 3 [ONS:73] Chain of Vapor SB: 3 [SCG:135] Xantid Swarm diff --git a/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/John Gatza's Lands.dck b/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/John Gatza's Lands.dck index 50d9adc3723..b9f8b032e79 100644 --- a/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/John Gatza's Lands.dck +++ b/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/John Gatza's Lands.dck @@ -1,12 +1,12 @@ NAME:John Gatza's Lands -4 [TMP:340] Wasteland +4 [TMP:330] Wasteland 4 [CNS:164] Exploration 4 [MMQ:324] Rishadan Port -1 [ICE:331] Glacial Chasm +1 [ICE:353] Glacial Chasm 3 [CMD:131] Punishing Fire 4 [GTC:248] Thespian's Stage 2 [KTK:248] Windswept Heath -4 [STH:132] Mox Diamond +4 [STH:138] Mox Diamond 1 [KTK:249] Wooded Foothills 1 [FUT:177] Horizon Canopy 4 [FUT:176] Grove of the Burnwillows @@ -15,12 +15,12 @@ NAME:John Gatza's Lands 4 [MMA:153] Life from the Loam 1 [C13:278] Bojuka Bog 2 [VMA:317] Taiga -1 [LEG:248] Karakas +1 [LEG:303] Karakas 1 [ISD:240] Ghost Quarter -3 [DRK:114] Maze of Ith +3 [DRK:117] Maze of Ith 2 [CSP:145] Dark Depths 2 [VMA:320] Tranquil Thicket -1 [LEG:252] The Tabernacle at Pendrell Vale +1 [LEG:307] The Tabernacle at Pendrell Vale 4 [ULG:98] Crop Rotation 4 [VMA:162] Gamble SB: 1 [LRW:262] Thorn of Amethyst diff --git a/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/John Grudzina's Jeskai Delver.dck b/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/John Grudzina's Jeskai Delver.dck index 792393d69e4..21331a1a499 100644 --- a/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/John Grudzina's Jeskai Delver.dck +++ b/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/John Grudzina's Jeskai Delver.dck @@ -1,5 +1,5 @@ NAME:John Grudzina's Jeskai Delver -4 [TMP:340] Wasteland +4 [TMP:330] Wasteland 2 [C13:63] True-Name Nemesis 4 [M11:149] Lightning Bolt 4 [KTK:239] Polluted Delta @@ -25,6 +25,6 @@ SB: 1 [MMA:14] Ethersworn Canonist SB: 1 [MBS:138] Sword of Feast and Famine SB: 1 [VMA:74] Jace, the Mind Sculptor SB: 3 [ARB:8] Meddling Mage -SB: 3 [4ED:236] Red Elemental Blast +SB: 3 [4ED:218] Red Elemental Blast SB: 1 [DGM:135] Wear // Tear SB: 2 [RTR:18] Rest in Peace diff --git a/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/Jon Goss's Esper Deathblade.dck b/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/Jon Goss's Esper Deathblade.dck index 23c7c0a1c36..f7e3502345d 100644 --- a/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/Jon Goss's Esper Deathblade.dck +++ b/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/Jon Goss's Esper Deathblade.dck @@ -5,7 +5,7 @@ NAME:Jon Goss's Esper Deathblade 2 [ZEN:67] Spell Pierce 4 [VMA:58] Brainstorm 1 [VMA:321] Tropical Island -1 [LEG:248] Karakas +1 [LEG:303] Karakas 2 [VMA:322] Tundra 1 [ZEN:87] Disfigure 3 [VMA:323] Underground Sea @@ -14,7 +14,7 @@ NAME:Jon Goss's Esper Deathblade 4 [WWK:20] Stoneforge Mystic 3 [M12:73] Ponder 1 [ISD:105] Liliana of the Veil -2 [TMP:340] Wasteland +2 [TMP:330] Wasteland 3 [C13:63] True-Name Nemesis 4 [KTK:239] Polluted Delta 1 [NPH:130] Batterskull diff --git a/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/Louis Fata's Death and Taxes.dck b/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/Louis Fata's Death and Taxes.dck index 570258125fe..88f644ce998 100644 --- a/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/Louis Fata's Death and Taxes.dck +++ b/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/Louis Fata's Death and Taxes.dck @@ -1,6 +1,6 @@ NAME:Louis Fata's Death and Taxes 4 [C13:13] Flickerwisp -4 [TMP:340] Wasteland +4 [TMP:330] Wasteland 4 [MMQ:324] Rishadan Port 2 [BNG:5] Brimaz, King of Oreskos 2 [BNG:27] Spirit of the Labyrinth @@ -11,7 +11,7 @@ NAME:Louis Fata's Death and Taxes 4 [MMA:197] Aether Vial 3 [M15:225] Phyrexian Revoker 10 [KTK:250] Plains -3 [LEG:248] Karakas +3 [LEG:303] Karakas 1 [MMA:216] Sword of Fire and Ice 4 [VMA:51] Swords to Plowshares 4 [WWK:20] Stoneforge Mystic diff --git a/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/Marc Bertolin's Temur Delver.dck b/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/Marc Bertolin's Temur Delver.dck index 755927deb49..5567fddbbc2 100644 --- a/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/Marc Bertolin's Temur Delver.dck +++ b/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/Marc Bertolin's Temur Delver.dck @@ -1,5 +1,5 @@ NAME:Marc Bertolin's Temur Delver -4 [TMP:340] Wasteland +4 [TMP:330] Wasteland 4 [M11:149] Lightning Bolt 2 [KTK:249] Wooded Foothills 2 [ROE:146] Forked Bolt @@ -22,6 +22,6 @@ SB: 3 [VMA:68] Flusterstorm SB: 3 [NPH:74] Surgical Extraction SB: 3 [C13:153] Krosan Grip SB: 1 [5ED:262] Pyroblast -SB: 2 [4ED:236] Red Elemental Blast +SB: 2 [4ED:218] Red Elemental Blast SB: 1 [MMA:70] Vendilion Clique SB: 2 [BOK:163] Umezawa's Jitte diff --git a/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/Michael Monks's Pox.dck b/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/Michael Monks's Pox.dck index 25106084ad1..323b0ecd26c 100644 --- a/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/Michael Monks's Pox.dck +++ b/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/Michael Monks's Pox.dck @@ -1,5 +1,5 @@ NAME:Michael Monks's Pox -3 [TMP:340] Wasteland +3 [TMP:330] Wasteland 3 [CMD:131] Punishing Fire 3 [M11:149] Lightning Bolt 1 [MMA:180] Maelstrom Pulse @@ -25,7 +25,7 @@ NAME:Michael Monks's Pox SB: 1 [RTR:231] Pithing Needle SB: 2 [NPH:74] Surgical Extraction SB: 2 [DKA:149] Grafdigger's Cage -SB: 1 [LEG:5] Chains of Mephistopheles +SB: 1 [LEG:91] Chains of Mephistopheles SB: 2 [5ED:262] Pyroblast SB: 2 [M14:97] Duress SB: 1 [BOK:163] Umezawa's Jitte diff --git a/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/Mike Midiri's Elves.dck b/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/Mike Midiri's Elves.dck index fb2f478132a..63de5d6bde7 100644 --- a/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/Mike Midiri's Elves.dck +++ b/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/Mike Midiri's Elves.dck @@ -17,13 +17,13 @@ NAME:Mike Midiri's Elves 4 [USG:321] Gaea's Cradle 1 [SOM:119] Ezuri, Renegade Leader 4 [EVE:71] Nettle Sentinel -3 [POR:101] Natural Order +3 [POR:175] Natural Order 2 [VMA:293] Bayou -4 [VIS:67] Quirion Ranger +4 [VIS:117] Quirion Ranger SB: 1 [RTR:231] Pithing Needle SB: 1 [VMA:278] Null Rod SB: 1 [MMA:182] Progenitus -SB: 1 [POR:101] Natural Order +SB: 1 [POR:175] Natural Order SB: 3 [RTR:141] Abrupt Decay SB: 3 [THS:107] Thoughtseize SB: 1 [M14:195] Scavenging Ooze diff --git a/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/Nate Sturm's Punishing Maverick.dck b/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/Nate Sturm's Punishing Maverick.dck index 79c9406c7a6..80fb9f6063a 100644 --- a/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/Nate Sturm's Punishing Maverick.dck +++ b/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/Nate Sturm's Punishing Maverick.dck @@ -11,12 +11,12 @@ NAME:Nate Sturm's Punishing Maverick 1 [KTK:266] Forest 1 [FUT:174] Dryad Arbor 4 [MMA:178] Knight of the Reliquary -1 [LEG:248] Karakas -1 [DRK:114] Maze of Ith +1 [LEG:303] Karakas +1 [DRK:117] Maze of Ith 1 [LRW:248] Gaddock Teeg 4 [VMA:51] Swords to Plowshares 3 [WWK:20] Stoneforge Mystic -3 [TMP:340] Wasteland +3 [TMP:330] Wasteland 1 [NPH:130] Batterskull 1 [M14:195] Scavenging Ooze 1 [M12:165] Birds of Paradise @@ -34,8 +34,8 @@ SB: 1 [MMA:216] Sword of Fire and Ice SB: 1 [VMA:235] Sylvan Library SB: 1 [VMA:20] Council's Judgment SB: 1 [LRW:248] Gaddock Teeg -SB: 2 [4ED:236] Red Elemental Blast +SB: 2 [4ED:218] Red Elemental Blast SB: 1 [MBS:92] Thrun, the Last Troll -SB: 1 [LEG:252] The Tabernacle at Pendrell Vale +SB: 1 [LEG:307] The Tabernacle at Pendrell Vale SB: 1 [M14:195] Scavenging Ooze SB: 1 [MMA:153] Life from the Loam diff --git a/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/Nicholas DiJohn's Miracles.dck b/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/Nicholas DiJohn's Miracles.dck index cb882bdacf4..ab4355fcf68 100644 --- a/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/Nicholas DiJohn's Miracles.dck +++ b/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/Nicholas DiJohn's Miracles.dck @@ -2,7 +2,7 @@ NAME:Nicholas DiJohn's Miracles 4 [CHK:268] Sensei's Divining Top 2 [AVR:20] Entreat the Angels 4 [CSP:31] Counterbalance -1 [4ED:236] Red Elemental Blast +1 [4ED:218] Red Elemental Blast 2 [ZEN:211] Arid Mesa 4 [KTK:233] Flooded Strand 1 [ZEN:67] Spell Pierce @@ -13,7 +13,7 @@ NAME:Nicholas DiJohn's Miracles 4 [ZEN:223] Scalding Tarn 3 [VMA:322] Tundra 2 [KTK:250] Plains -1 [LEG:248] Karakas +1 [LEG:303] Karakas 2 [VMA:64] Counterspell 1 [VMA:20] Council's Judgment 1 [VMA:324] Volcanic Island @@ -25,7 +25,7 @@ NAME:Nicholas DiJohn's Miracles SB: 1 [6ED:19] Enlightened Tutor SB: 1 [FUT:46] Venser, Shaper Savant SB: 2 [5ED:262] Pyroblast -SB: 1 [4ED:236] Red Elemental Blast +SB: 1 [4ED:218] Red Elemental Blast SB: 1 [RTR:201] Supreme Verdict SB: 2 [VMA:68] Flusterstorm SB: 1 [RTR:231] Pithing Needle diff --git a/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/Pat Fehling's Deathblade.dck b/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/Pat Fehling's Deathblade.dck index fe3866c5e72..4b4f37076a8 100644 --- a/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/Pat Fehling's Deathblade.dck +++ b/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/Pat Fehling's Deathblade.dck @@ -2,7 +2,7 @@ NAME:Pat Fehling's Deathblade 1 [BOK:163] Umezawa's Jitte 4 [VMA:58] Brainstorm 3 [VMA:322] Tundra -1 [LEG:248] Karakas +1 [LEG:303] Karakas 4 [VMA:323] Underground Sea 2 [NPH:35] Gitaxian Probe 4 [VMA:51] Swords to Plowshares @@ -11,7 +11,7 @@ NAME:Pat Fehling's Deathblade 2 [MMA:70] Vendilion Clique 4 [M12:73] Ponder 1 [ISD:105] Liliana of the Veil -3 [TMP:340] Wasteland +3 [TMP:330] Wasteland 2 [C13:63] True-Name Nemesis 3 [KTK:239] Polluted Delta 1 [NPH:130] Batterskull diff --git a/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/Ralph Betesh's Temur Delver.dck b/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/Ralph Betesh's Temur Delver.dck index d066595051b..aee92511acd 100644 --- a/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/Ralph Betesh's Temur Delver.dck +++ b/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/Ralph Betesh's Temur Delver.dck @@ -1,5 +1,5 @@ NAME:Ralph Betesh's Temur Delver -4 [TMP:340] Wasteland +4 [TMP:330] Wasteland 4 [M11:149] Lightning Bolt 2 [KTK:239] Polluted Delta 1 [KTK:249] Wooded Foothills @@ -23,8 +23,8 @@ SB: 1 [VMA:68] Flusterstorm SB: 2 [DKA:149] Grafdigger's Cage SB: 2 [5ED:262] Pyroblast SB: 1 [VMA:235] Sylvan Library -SB: 2 [NMS:48] Submerge -SB: 1 [4ED:236] Red Elemental Blast +SB: 2 [NEM:48] Submerge +SB: 1 [4ED:218] Red Elemental Blast SB: 1 [MMA:70] Vendilion Clique SB: 2 [C13:118] Rough // Tumble SB: 1 [ISD:127] Ancient Grudge diff --git a/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/Reid Duke's Miracles.dck b/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/Reid Duke's Miracles.dck index b59cd604e29..3387637a960 100644 --- a/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/Reid Duke's Miracles.dck +++ b/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/Reid Duke's Miracles.dck @@ -2,7 +2,7 @@ NAME:Reid Duke's Miracles 4 [CHK:268] Sensei's Divining Top 2 [AVR:20] Entreat the Angels 3 [CSP:31] Counterbalance -2 [4ED:236] Red Elemental Blast +2 [4ED:218] Red Elemental Blast 2 [ZEN:211] Arid Mesa 2 [KTK:36] Dig Through Time 4 [KTK:233] Flooded Strand @@ -14,7 +14,7 @@ NAME:Reid Duke's Miracles 4 [ZEN:223] Scalding Tarn 2 [KTK:250] Plains 3 [VMA:322] Tundra -1 [LEG:248] Karakas +1 [LEG:303] Karakas 1 [VMA:324] Volcanic Island 2 [VMA:64] Counterspell 2 [VMA:20] Council's Judgment @@ -32,4 +32,4 @@ SB: 1 [M11:7] Baneslayer Angel SB: 2 [MMA:70] Vendilion Clique SB: 1 [RTR:18] Rest in Peace SB: 1 [4ED:63] Blue Elemental Blast -SB: 1 [WTH:138] Peacekeeper +SB: 1 [WTH:22] Peacekeeper diff --git a/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/Rodrigo Togores's Ad Nauseam Tendrils.dck b/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/Rodrigo Togores's Ad Nauseam Tendrils.dck index 66040096666..348736cb36b 100644 --- a/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/Rodrigo Togores's Ad Nauseam Tendrils.dck +++ b/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/Rodrigo Togores's Ad Nauseam Tendrils.dck @@ -4,7 +4,7 @@ NAME:Rodrigo Togores's Ad Nauseam Tendrils 4 [KTK:239] Polluted Delta 4 [ZEN:220] Misty Rainforest 1 [KTK:258] Swamp -4 [TMP:284] Lotus Petal +4 [TMP:294] Lotus Petal 3 [JUD:62] Cabal Therapy 4 [DIS:46] Infernal Tutor 4 [VMA:106] Cabal Ritual @@ -23,7 +23,7 @@ NAME:Rodrigo Togores's Ad Nauseam Tendrils 4 [M12:73] Ponder 1 [VMA:293] Bayou SB: 2 [VMA:68] Flusterstorm -SB: 2 [NMS:58] Massacre +SB: 2 [NEM:58] Massacre SB: 1 [VMA:142] Tendrils of Agony SB: 2 [USG:240] Carpet of Flowers SB: 3 [RTR:141] Abrupt Decay diff --git a/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/Stephen Harvey's Reanimator.dck b/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/Stephen Harvey's Reanimator.dck index c8b2916f085..8fa2525d4c3 100644 --- a/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/Stephen Harvey's Reanimator.dck +++ b/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/Stephen Harvey's Reanimator.dck @@ -3,7 +3,7 @@ NAME:Stephen Harvey's Reanimator 4 [KTK:239] Polluted Delta 2 [THS:107] Thoughtseize 1 [KTK:258] Swamp -4 [TMP:284] Lotus Petal +4 [TMP:294] Lotus Petal 3 [DD2:23] Daze 2 [KTK:233] Flooded Strand 1 [DIS:34] Tidespout Tyrant @@ -26,7 +26,7 @@ SB: 2 [USG:96] Show and Tell SB: 2 [RTR:231] Pithing Needle SB: 1 [MMA:204] Engineered Explosives SB: 1 [THS:187] Ashen Rider -SB: 2 [NMS:58] Massacre +SB: 2 [NEM:58] Massacre SB: 1 [ODY:124] Coffin Purge SB: 1 [M12:98] Grave Titan SB: 1 [CON:30] Inkwell Leviathan diff --git a/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/Wang Zixi's Deathblade.dck b/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/Wang Zixi's Deathblade.dck index c67d9213c5a..0b508c09305 100644 --- a/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/Wang Zixi's Deathblade.dck +++ b/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/Wang Zixi's Deathblade.dck @@ -12,7 +12,7 @@ NAME:Wang Zixi's Deathblade 4 [WWK:20] Stoneforge Mystic 1 [MMA:70] Vendilion Clique 2 [ISD:105] Liliana of the Veil -2 [TMP:340] Wasteland +2 [TMP:330] Wasteland 3 [C13:63] True-Name Nemesis 1 [WWK:134] Creeping Tar Pit 4 [KTK:239] Polluted Delta diff --git a/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/Xin Sui's Shardless Sultai.dck b/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/Xin Sui's Shardless Sultai.dck index cb0bcb578f9..f57b93cfae8 100644 --- a/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/Xin Sui's Shardless Sultai.dck +++ b/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/Xin Sui's Shardless Sultai.dck @@ -1,5 +1,5 @@ NAME:Xin Sui's Shardless Sultai -2 [TMP:340] Wasteland +2 [TMP:330] Wasteland 1 [C13:96] Toxic Deluge 2 [WWK:134] Creeping Tar Pit 4 [KTK:239] Polluted Delta diff --git a/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/Zach Dobbin's Helmerator.dck b/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/Zach Dobbin's Helmerator.dck index e9333811187..62bb5cda8bc 100644 --- a/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/Zach Dobbin's Helmerator.dck +++ b/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/Zach Dobbin's Helmerator.dck @@ -9,7 +9,7 @@ NAME:Zach Dobbin's Helmerator 1 [M15:248] Urborg, Tomb of Yawgmoth 4 [VMA:323] Underground Sea 1 [MMA:219] Academy Ruins -3 [ATQ:58] Transmute Artifact +3 [ATQ:14] Transmute Artifact 4 [VMA:243] Baleful Strix 4 [MBS:97] Tezzeret, Agent of Bolas 1 [CSP:153] Snow-Covered Swamp @@ -17,7 +17,7 @@ NAME:Zach Dobbin's Helmerator 4 [KTK:239] Polluted Delta 4 [CMD:246] Dimir Signet 1 [FUT:165] Sword of the Meek -1 [ALL:163] Helm of Obedience +1 [ALL:121] Helm of Obedience 4 [VMA:69] Force of Will 2 [DDF:39] Tezzeret the Seeker 4 [MMA:203] Chalice of the Void diff --git a/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/Zack Mullin's Miracles.dck b/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/Zack Mullin's Miracles.dck index 5cf9d0c0c16..2a22686dcf9 100644 --- a/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/Zack Mullin's Miracles.dck +++ b/Mage.Client/release/sample-decks/2014/Legacy/Championship Philadelpia/Zack Mullin's Miracles.dck @@ -3,13 +3,13 @@ NAME:Zack Mullin's Miracles 1 [SHM:277] Mystic Gate 2 [AVR:20] Entreat the Angels 1 [ZEN:220] Misty Rainforest -2 [4ED:236] Red Elemental Blast +2 [4ED:218] Red Elemental Blast 1 [ISD:78] Snapcaster Mage 4 [VMA:58] Brainstorm 1 [KTK:262] Mountain 4 [ZEN:223] Scalding Tarn 2 [VMA:322] Tundra -2 [LEG:248] Karakas +2 [LEG:303] Karakas 1 [VMA:324] Volcanic Island 3 [VMA:74] Jace, the Mind Sculptor 3 [VMA:51] Swords to Plowshares diff --git a/Mage.Client/release/sample-decks/2014/Legacy/GP Paris/Javier Dominguez's BUG Delver.dck b/Mage.Client/release/sample-decks/2014/Legacy/GP Paris/Javier Dominguez's BUG Delver.dck index ae31fee5484..a08cc9a49fb 100644 --- a/Mage.Client/release/sample-decks/2014/Legacy/GP Paris/Javier Dominguez's BUG Delver.dck +++ b/Mage.Client/release/sample-decks/2014/Legacy/GP Paris/Javier Dominguez's BUG Delver.dck @@ -4,30 +4,30 @@ NAME:Javier Dominguez's BUG Delver 4 [MMA:166] Tarmogoyf 1 [ZEN:220] Misty Rainforest 4 [ISD:51] Delver of Secrets -3 [ALL:42] Force of Will +3 [ALL:28] Force of Will 3 [M12:73] Ponder 2 [MMA:75] Dark Confidant 4 [CMD:40] Brainstorm -4 [TMP:340] Wasteland -4 [NMS:30] Daze +4 [TMP:330] Wasteland +4 [NEM:30] Daze 2 [THS:107] Thoughtseize 4 [ONS:321] Polluted Delta -3 [FEM:12] Hymn to Tourach +3 [FEM:38a] Hymn to Tourach 2 [3ED:283] Bayou -4 [3ED:305] Underground Sea +4 [3ED:290] Underground Sea 4 [RTR:141] Abrupt Decay -1 [3ED:303] Tropical Island +1 [3ED:288] Tropical Island 4 [ZEN:229] Verdant Catacombs SB: 1 [WTH:154] Null Rod SB: 1 [DKA:149] Grafdigger's Cage SB: 1 [7ED:133] Engineered Plague SB: 1 [NPH:57] Dismember SB: 1 [WWK:31] Jace, the Mind Sculptor -SB: 1 [ALL:42] Force of Will +SB: 1 [ALL:28] Force of Will SB: 2 [ZEN:87] Disfigure SB: 1 [ZEN:67] Spell Pierce SB: 2 [RTR:164] Golgari Charm SB: 1 [MMA:70] Vendilion Clique -SB: 1 [5ED:191] Sylvan Library -SB: 1 [FEM:12] Hymn to Tourach -SB: 1 [TMP:22] Diabolic Edict +SB: 1 [5ED:329] Sylvan Library +SB: 1 [FEM:38a] Hymn to Tourach +SB: 1 [TMP:128] Diabolic Edict diff --git a/Mage.Client/release/sample-decks/2014/Legacy/GP Paris/Jean-Mary Accart's Imperial Painter.dck b/Mage.Client/release/sample-decks/2014/Legacy/GP Paris/Jean-Mary Accart's Imperial Painter.dck index 1e774243c14..65d12a204df 100644 --- a/Mage.Client/release/sample-decks/2014/Legacy/GP Paris/Jean-Mary Accart's Imperial Painter.dck +++ b/Mage.Client/release/sample-decks/2014/Legacy/GP Paris/Jean-Mary Accart's Imperial Painter.dck @@ -1,7 +1,7 @@ NAME:Jean-Mary Accart's Imperial Painter 1 [FUT:101] Magus of the Moon 4 [5ED:262] Pyroblast -4 [TMP:305] Ancient Tomb +4 [TMP:315] Ancient Tomb 3 [PLC:122] Simian Spirit Guide 1 [HOP:133] Great Furnace 3 [CHK:268] Sensei's Divining Top @@ -12,18 +12,18 @@ NAME:Jean-Mary Accart's Imperial Painter 4 [MMA:106] Blood Moon 2 [6ED:19] Enlightened Tutor 3 [ULG:80] Goblin Welder -2 [4ED:236] Red Elemental Blast +2 [4ED:218] Red Elemental Blast 4 [C13:349] Mountain 2 [ONS:330] Wooded Foothills 4 [SHM:257] Painter's Servant -2 [3ED:296] Plateau -4 [TMP:280] Grindstone +2 [3ED:284] Plateau +4 [TMP:290] Grindstone 2 [8ED:300] Ensnaring Bridge -2 [TMP:284] Lotus Petal +2 [TMP:294] Lotus Petal 1 [TSP:166] Jaya Ballard, Task Mage SB: 1 [LRW:262] Thorn of Amethyst SB: 4 [ODY:193] Firebolt -SB: 1 [4ED:236] Red Elemental Blast +SB: 1 [4ED:218] Red Elemental Blast SB: 1 [M14:215] Ratchet Bomb SB: 2 [M13:219] Tormod's Crypt SB: 1 [DST:154] Trinisphere diff --git a/Mage.Client/release/sample-decks/2014/Legacy/GP Paris/Jose Manuel Fernandez Castello's BUG Delver.dck b/Mage.Client/release/sample-decks/2014/Legacy/GP Paris/Jose Manuel Fernandez Castello's BUG Delver.dck index 69bf225fff1..e12db2b7fca 100644 --- a/Mage.Client/release/sample-decks/2014/Legacy/GP Paris/Jose Manuel Fernandez Castello's BUG Delver.dck +++ b/Mage.Client/release/sample-decks/2014/Legacy/GP Paris/Jose Manuel Fernandez Castello's BUG Delver.dck @@ -4,18 +4,18 @@ NAME:Jose Manuel Fernandez Castello's BUG Delver 4 [ZEN:220] Misty Rainforest 3 [C13:63] True-Name Nemesis 4 [ISD:51] Delver of Secrets -4 [ALL:42] Force of Will +4 [ALL:28] Force of Will 4 [M12:73] Ponder 4 [CMD:40] Brainstorm -4 [TMP:340] Wasteland +4 [TMP:330] Wasteland 1 [NPH:57] Dismember -4 [NMS:30] Daze +4 [NEM:30] Daze 4 [ONS:321] Polluted Delta -4 [FEM:12] Hymn to Tourach +4 [FEM:38a] Hymn to Tourach 1 [3ED:283] Bayou -4 [3ED:305] Underground Sea +4 [3ED:290] Underground Sea 4 [RTR:141] Abrupt Decay -2 [3ED:303] Tropical Island +2 [3ED:288] Tropical Island 1 [ZEN:229] Verdant Catacombs SB: 1 [C13:249] Nihil Spellbomb SB: 1 [7ED:133] Engineered Plague diff --git a/Mage.Client/release/sample-decks/2014/Legacy/GP Paris/Loic Le Briand's Reanimator.dck b/Mage.Client/release/sample-decks/2014/Legacy/GP Paris/Loic Le Briand's Reanimator.dck index 5f727435f3a..0c6a88d4156 100644 --- a/Mage.Client/release/sample-decks/2014/Legacy/GP Paris/Loic Le Briand's Reanimator.dck +++ b/Mage.Client/release/sample-decks/2014/Legacy/GP Paris/Loic Le Briand's Reanimator.dck @@ -6,21 +6,21 @@ NAME:Loic Le Briand's Reanimator 1 [C13:345] Swamp 1 [ONS:313] Bloodstained Mire 4 [ODY:132] Entomb -4 [ALL:42] Force of Will +4 [ALL:28] Force of Will 1 [THS:187] Ashen Rider 2 [M12:73] Ponder 1 [NPH:9] Elesh Norn, Grand Cenobite 4 [ODY:70] Careful Study 4 [CMD:40] Brainstorm 4 [USG:134] Exhume -3 [NMS:30] Daze +3 [NEM:30] Daze 4 [AVR:106] Griselbrand 3 [THS:107] Thoughtseize 2 [USG:96] Show and Tell 4 [ONS:321] Polluted Delta -4 [TMP:45] Reanimate -4 [3ED:305] Underground Sea -4 [TMP:284] Lotus Petal +4 [TMP:151] Reanimate +4 [3ED:290] Underground Sea +4 [TMP:294] Lotus Petal 1 [ZEN:229] Verdant Catacombs SB: 3 [RTR:231] Pithing Needle SB: 1 [ALA:166] Empyrial Archangel diff --git a/Mage.Client/release/sample-decks/2014/Legacy/GP Paris/Maxime Gilles' UWr Miracles.dck b/Mage.Client/release/sample-decks/2014/Legacy/GP Paris/Maxime Gilles' UWr Miracles.dck index 621a53bef5d..ff0ecd838e9 100644 --- a/Mage.Client/release/sample-decks/2014/Legacy/GP Paris/Maxime Gilles' UWr Miracles.dck +++ b/Mage.Client/release/sample-decks/2014/Legacy/GP Paris/Maxime Gilles' UWr Miracles.dck @@ -6,28 +6,28 @@ NAME:Maxime Gilles' UWr Miracles 3 [AVR:20] Entreat the Angels 3 [WWK:31] Jace, the Mind Sculptor 2 [ISD:78] Snapcaster Mage -4 [ALL:42] Force of Will +4 [ALL:28] Force of Will 3 [ZEN:211] Arid Mesa 1 [RTR:201] Supreme Verdict 2 [M12:73] Ponder 2 [MMA:70] Vendilion Clique 4 [CMD:40] Brainstorm -1 [LEG:248] Karakas -1 [4ED:236] Red Elemental Blast +1 [LEG:303] Karakas +1 [4ED:218] Red Elemental Blast 2 [7ED:67] Counterspell 3 [CSP:31] Counterbalance 3 [AVR:38] Terminus 3 [ZEN:223] Scalding Tarn 2 [C13:337] Plains -2 [3ED:306] Volcanic Island -3 [3ED:304] Tundra +2 [3ED:291] Volcanic Island +3 [3ED:289] Tundra 3 [DDF:22] Swords to Plowshares SB: 1 [RTR:231] Pithing Needle SB: 2 [CMD:46] Flusterstorm SB: 2 [RTR:18] Rest in Peace SB: 1 [DGM:135] Wear // Tear SB: 1 [DKA:149] Grafdigger's Cage -SB: 1 [4ED:236] Red Elemental Blast +SB: 1 [4ED:218] Red Elemental Blast SB: 1 [MMA:204] Engineered Explosives SB: 1 [C13:349] Mountain SB: 1 [AVR:38] Terminus diff --git a/Mage.Client/release/sample-decks/2014/Legacy/GP Paris/Paulo Vitor Damo da Rosa's UWr Miracles.dck b/Mage.Client/release/sample-decks/2014/Legacy/GP Paris/Paulo Vitor Damo da Rosa's UWr Miracles.dck index 9ee3354ff37..64a33d500dd 100644 --- a/Mage.Client/release/sample-decks/2014/Legacy/GP Paris/Paulo Vitor Damo da Rosa's UWr Miracles.dck +++ b/Mage.Client/release/sample-decks/2014/Legacy/GP Paris/Paulo Vitor Damo da Rosa's UWr Miracles.dck @@ -5,13 +5,13 @@ NAME:Paulo Vitor Damo da Rosa's UWr Miracles 2 [AVR:20] Entreat the Angels 4 [WWK:31] Jace, the Mind Sculptor 2 [ISD:78] Snapcaster Mage -4 [ALL:42] Force of Will +4 [ALL:28] Force of Will 2 [ZEN:211] Arid Mesa 2 [M12:73] Ponder 1 [MMA:64] Spell Snare 2 [MMA:70] Vendilion Clique 4 [CMD:40] Brainstorm -1 [LEG:248] Karakas +1 [LEG:303] Karakas 2 [7ED:67] Counterspell 2 [CSP:31] Counterbalance 4 [AVR:38] Terminus @@ -19,8 +19,8 @@ NAME:Paulo Vitor Damo da Rosa's UWr Miracles 1 [SHM:277] Mystic Gate 1 [ZEN:67] Spell Pierce 2 [C13:337] Plains -2 [3ED:306] Volcanic Island -2 [3ED:304] Tundra +2 [3ED:291] Volcanic Island +2 [3ED:289] Tundra 4 [DDF:22] Swords to Plowshares SB: 1 [DGM:135] Wear // Tear SB: 3 [5ED:262] Pyroblast diff --git a/Mage.Client/release/sample-decks/2014/Legacy/GP Paris/Philipp Schonegger's Miracles.dck b/Mage.Client/release/sample-decks/2014/Legacy/GP Paris/Philipp Schonegger's Miracles.dck index 791dfa7183a..ab61c724f07 100644 --- a/Mage.Client/release/sample-decks/2014/Legacy/GP Paris/Philipp Schonegger's Miracles.dck +++ b/Mage.Client/release/sample-decks/2014/Legacy/GP Paris/Philipp Schonegger's Miracles.dck @@ -1,29 +1,28 @@ -NAME:Philipp Schönegger's Miracles 4 [C13:341] Island 4 [CHK:268] Sensei's Divining Top 4 [ONS:316] Flooded Strand 2 [AVR:20] Entreat the Angels 3 [WWK:31] Jace, the Mind Sculptor 3 [ISD:78] Snapcaster Mage -4 [ALL:42] Force of Will +4 [ALL:28] Force of Will 2 [ZEN:211] Arid Mesa 2 [M12:73] Ponder 1 [MMA:70] Vendilion Clique 4 [CMD:40] Brainstorm -1 [LEG:248] Karakas +1 [LEG:303] Karakas 2 [7ED:67] Counterspell 3 [CSP:31] Counterbalance 4 [AVR:38] Terminus 4 [ZEN:223] Scalding Tarn 2 [ZEN:67] Spell Pierce 2 [C13:337] Plains -2 [3ED:306] Volcanic Island -3 [3ED:304] Tundra +2 [3ED:291] Volcanic Island +3 [3ED:289] Tundra 4 [DDF:22] Swords to Plowshares SB: 1 [5ED:262] Pyroblast SB: 1 [AVR:20] Entreat the Angels SB: 3 [CMD:46] Flusterstorm -SB: 2 [4ED:236] Red Elemental Blast +SB: 2 [4ED:218] Red Elemental Blast SB: 1 [TSB:6] Disenchant SB: 2 [MMA:204] Engineered Explosives SB: 1 [7ED:67] Counterspell diff --git a/Mage.Client/release/sample-decks/2014/Legacy/GP Paris/Stefan Bottcher's Deathblade.dck b/Mage.Client/release/sample-decks/2014/Legacy/GP Paris/Stefan Bottcher's Deathblade.dck index 668d8ad15d7..49b9038bf7e 100644 --- a/Mage.Client/release/sample-decks/2014/Legacy/GP Paris/Stefan Bottcher's Deathblade.dck +++ b/Mage.Client/release/sample-decks/2014/Legacy/GP Paris/Stefan Bottcher's Deathblade.dck @@ -1,4 +1,3 @@ -NAME:Stefan Böttcher's Deathblade 1 [WWK:134] Creeping Tar Pit 4 [RTR:213] Deathrite Shaman 1 [AVR:20] Entreat the Angels @@ -13,18 +12,18 @@ NAME:Stefan B 2 [THS:107] Thoughtseize 1 [MMA:204] Engineered Explosives 1 [BOK:163] Umezawa's Jitte -1 [3ED:298] Scrubland +1 [3ED:286] Scrubland 1 [C13:337] Plains -3 [3ED:305] Underground Sea -3 [3ED:304] Tundra +3 [3ED:290] Underground Sea +3 [3ED:289] Tundra 4 [DDF:22] Swords to Plowshares -1 [3ED:303] Tropical Island +1 [3ED:288] Tropical Island 1 [C13:341] Island 3 [ONS:316] Flooded Strand 1 [C13:345] Swamp 1 [ZEN:219] Marsh Flats -2 [TMP:340] Wasteland -1 [LEG:248] Karakas +2 [TMP:330] Wasteland +1 [LEG:303] Karakas 1 [MMA:219] Academy Ruins 1 [7ED:67] Counterspell 3 [ONS:321] Polluted Delta @@ -32,11 +31,11 @@ NAME:Stefan B 3 [WWK:20] Stoneforge Mystic SB: 1 [ISD:105] Liliana of the Veil SB: 1 [RTR:155] Detention Sphere -SB: 3 [ALL:42] Force of Will +SB: 3 [ALL:28] Force of Will SB: 1 [RTR:201] Supreme Verdict SB: 3 [M11:21] Leyline of Sanctity SB: 1 [MBS:138] Sword of Feast and Famine SB: 2 [NPH:74] Surgical Extraction SB: 1 [THS:65] Swan Song SB: 1 [MMA:213] Relic of Progenitus -SB: 1 [NMS:111] Reverent Silence +SB: 1 [NEM:111] Reverent Silence diff --git a/Mage.Client/release/sample-decks/2014/Modern/GP Richmond/James Cady – UWR Splinter Twin.dck b/Mage.Client/release/sample-decks/2014/Modern/GP Richmond/James Cady – UWR Splinter Twin.dck index 2ed4d9216ef..5cc7d6b19e3 100644 --- a/Mage.Client/release/sample-decks/2014/Modern/GP Richmond/James Cady – UWR Splinter Twin.dck +++ b/Mage.Client/release/sample-decks/2014/Modern/GP Richmond/James Cady – UWR Splinter Twin.dck @@ -1,4 +1,3 @@ -NAME:James Cady – UWR Splinter Twin 2 [M12:145] Grim Lavamancer 4 [WWK:133] Celestial Colonnade 2 [C13:341] Island diff --git a/Mage.Client/release/sample-decks/2014/Standard/DailyMTG ReConstructed Enchantress to Meet You/Ajani Nakano’s Infinite Ajani.dck b/Mage.Client/release/sample-decks/2014/Standard/DailyMTG ReConstructed Enchantress to Meet You/Ajani Nakano’s Infinite Ajani.dck index 1a7e4bc85af..fa0910bc4d8 100644 --- a/Mage.Client/release/sample-decks/2014/Standard/DailyMTG ReConstructed Enchantress to Meet You/Ajani Nakano’s Infinite Ajani.dck +++ b/Mage.Client/release/sample-decks/2014/Standard/DailyMTG ReConstructed Enchantress to Meet You/Ajani Nakano’s Infinite Ajani.dck @@ -1,4 +1,3 @@ -NAME:Ajani Nakano’s Infinite Ajani 2 [RTR:243] Overgrown Tomb 2 [RTR:120] Deadbridge Goliath 2 [RTR:248] Temple Garden diff --git a/Mage.Client/release/sample-decks/2014/Standard/DailyMTG ReConstructed Enchantress to Meet You/Colin Reilly’s Quadruple Strike.dck b/Mage.Client/release/sample-decks/2014/Standard/DailyMTG ReConstructed Enchantress to Meet You/Colin Reilly’s Quadruple Strike.dck index e1a65418981..7b03635ad5f 100644 --- a/Mage.Client/release/sample-decks/2014/Standard/DailyMTG ReConstructed Enchantress to Meet You/Colin Reilly’s Quadruple Strike.dck +++ b/Mage.Client/release/sample-decks/2014/Standard/DailyMTG ReConstructed Enchantress to Meet You/Colin Reilly’s Quadruple Strike.dck @@ -1,4 +1,3 @@ -NAME:Colin Reilly’s Quadruple Strike 4 [M14:10] Brave the Elements 4 [C13:179] Boros Charm 4 [GTC:245] Sacred Foundry diff --git a/Mage.Client/release/sample-decks/2014/Standard/DailyMTG ReConstructed Enchantress to Meet You/Devon Straub’s The One-ders.dck b/Mage.Client/release/sample-decks/2014/Standard/DailyMTG ReConstructed Enchantress to Meet You/Devon Straub’s The One-ders.dck index 756170c84b7..96e106757b3 100644 --- a/Mage.Client/release/sample-decks/2014/Standard/DailyMTG ReConstructed Enchantress to Meet You/Devon Straub’s The One-ders.dck +++ b/Mage.Client/release/sample-decks/2014/Standard/DailyMTG ReConstructed Enchantress to Meet You/Devon Straub’s The One-ders.dck @@ -1,4 +1,3 @@ -NAME:Devon Straub’s The One-ders 4 [RTR:214] Dryad Militant 2 [RTR:82] Ultimate Price 2 [THS:33] Spear of Heliod diff --git a/Mage.Client/release/sample-decks/2014/Standard/DailyMTG ReConstructed Enchantress to Meet You/Gavin Verhey’s Nyxchantress.dck b/Mage.Client/release/sample-decks/2014/Standard/DailyMTG ReConstructed Enchantress to Meet You/Gavin Verhey’s Nyxchantress.dck index f25692c8cef..6ebf60ba71a 100644 --- a/Mage.Client/release/sample-decks/2014/Standard/DailyMTG ReConstructed Enchantress to Meet You/Gavin Verhey’s Nyxchantress.dck +++ b/Mage.Client/release/sample-decks/2014/Standard/DailyMTG ReConstructed Enchantress to Meet You/Gavin Verhey’s Nyxchantress.dck @@ -1,4 +1,3 @@ -NAME:Gavin Verhey’s Nyxchantress 4 [RTR:24] Sphere of Safety 4 [RTR:248] Temple Garden 4 [BNG:165] Temple of Plenty diff --git a/Mage.Client/release/sample-decks/2014/Standard/DailyMTG ReConstructed Enchantress to Meet You/Mahdi Fozi’s UR One-shot combo.dck b/Mage.Client/release/sample-decks/2014/Standard/DailyMTG ReConstructed Enchantress to Meet You/Mahdi Fozi’s UR One-shot combo.dck index 25428994acb..b63f9f49543 100644 --- a/Mage.Client/release/sample-decks/2014/Standard/DailyMTG ReConstructed Enchantress to Meet You/Mahdi Fozi’s UR One-shot combo.dck +++ b/Mage.Client/release/sample-decks/2014/Standard/DailyMTG ReConstructed Enchantress to Meet You/Mahdi Fozi’s UR One-shot combo.dck @@ -1,4 +1,3 @@ -NAME:Mahdi Fozi’s UR One-shot combo 2 [THS:205] Steam Augury 4 [JOU:164] Temple of Epiphany 4 [RTR:247] Steam Vents diff --git a/Mage.Client/release/sample-decks/2015/Legacy/Manaless Dredge Example 1.dck b/Mage.Client/release/sample-decks/2015/Legacy/Manaless Dredge Example 1.dck index 3d9867fc18c..42dcb2f33f2 100644 --- a/Mage.Client/release/sample-decks/2015/Legacy/Manaless Dredge Example 1.dck +++ b/Mage.Client/release/sample-decks/2015/Legacy/Manaless Dredge Example 1.dck @@ -4,7 +4,7 @@ 4 [FUT:54] Narcomoeba 4 [TSP:104] Dread Return 4 [PLC:77] Phantasmagorian -3 [ALL:4] Contagion +3 [ALL:45] Contagion 4 [FUT:174] Dryad Arbor 4 [JUD:62] Cabal Therapy 4 [TOR:65] Ichorid @@ -12,11 +12,11 @@ 4 [RAV:107] Stinkweed Imp 2 [DKA:89] Flayer of the Hatebound 4 [FUT:81] Bridge from Below -4 [5ED:45] Nether Shadow +4 [5ED:183] Nether Shadow 4 [FUT:90] Street Wraith 1 [BOK:82] Sickening Shoal SB: 3 [NPH:118] Noxious Revival -SB: 4 [NMS:111] Reverent Silence +SB: 4 [NEM:111] Reverent Silence SB: 2 [ZEN:229] Verdant Catacombs SB: 3 [WWK:108] Nature's Claim SB: 1 [DTK:262] Forest diff --git a/Mage.Client/release/sample-decks/2015/Legacy/Manaless Dredge Example 2.dck b/Mage.Client/release/sample-decks/2015/Legacy/Manaless Dredge Example 2.dck index 063ff8504c4..7d08dfd4b45 100644 --- a/Mage.Client/release/sample-decks/2015/Legacy/Manaless Dredge Example 2.dck +++ b/Mage.Client/release/sample-decks/2015/Legacy/Manaless Dredge Example 2.dck @@ -13,10 +13,10 @@ 1 [DKA:89] Flayer of the Hatebound 4 [FUT:81] Bridge from Below 4 [FUT:90] Street Wraith -3 [5ED:45] Nether Shadow +3 [5ED:183] Nether Shadow 4 [BOK:82] Sickening Shoal SB: 4 [ZEN:57] Mindbreak Trap SB: 1 [GPT:101] Angel of Despair SB: 4 [M11:21] Leyline of Sanctity SB: 4 [NPH:35] Gitaxian Probe -SB: 2 [ALL:4] Contagion +SB: 2 [ALL:45] Contagion diff --git a/Mage.Client/release/sample-decks/2015/Legacy/Manaless Dredge Example 3.dck b/Mage.Client/release/sample-decks/2015/Legacy/Manaless Dredge Example 3.dck index 453814a54b7..a515fff6b18 100644 --- a/Mage.Client/release/sample-decks/2015/Legacy/Manaless Dredge Example 3.dck +++ b/Mage.Client/release/sample-decks/2015/Legacy/Manaless Dredge Example 3.dck @@ -12,11 +12,11 @@ 4 [RAV:107] Stinkweed Imp 1 [DKA:89] Flayer of the Hatebound 4 [FUT:81] Bridge from Below -4 [5ED:45] Nether Shadow +4 [5ED:183] Nether Shadow 4 [FUT:90] Street Wraith SB: 1 [NPH:6] Chancellor of the Annex SB: 1 [THS:187] Ashen Rider SB: 4 [M15:237] Tormod's Crypt SB: 4 [MMQ:168] Unmask -SB: 1 [ALL:4] Contagion +SB: 1 [ALL:45] Contagion SB: 4 [BOK:82] Sickening Shoal diff --git a/Mage.Client/release/sample-decks/AI/FastRedHaste.dck b/Mage.Client/release/sample-decks/AI/FastRedHaste.dck index 971dbf13e31..94361d193bc 100644 --- a/Mage.Client/release/sample-decks/AI/FastRedHaste.dck +++ b/Mage.Client/release/sample-decks/AI/FastRedHaste.dck @@ -7,7 +7,7 @@ NAME:FastRedHaste 1 [C16:16] Charging Cinderhorn 1 [M13:200] Akroma's Memorial 1 [RAV:193] Boros Swiftblade -1 [3ED:296] Plateau +1 [3ED:284] Plateau 1 [EMN:149] Weaver of Lightning 1 [BNG:108] Satyr Firedancer 1 [WTH:93] Cinder Giant @@ -16,7 +16,7 @@ NAME:FastRedHaste 1 [BFZ:150] Outnumber 1 [M14:139] Flames of the Firebrand 1 [INV:11] Crimson Acolyte -1 [LEG:247] Hammerheim +1 [LEG:302] Hammerheim 1 [KLD:246] Inspiring Vantage 1 [DGM:107] Tajic, Blade of the Legion 1 [GTC:97] Legion Loyalist @@ -32,7 +32,7 @@ NAME:FastRedHaste 1 [ISD:4] Avacynian Priest 1 [ODY:200] Lava Blister 1 [EVE:139] Figure of Destiny -1 [LEG:175] Clergy of the Holy Nimbus +1 [LEG:6] Clergy of the Holy Nimbus 1 [LEG:133] Beasts of Bogardan 1 [DTK:151] Roast 1 [ME4:113] Fire Imp @@ -55,7 +55,7 @@ NAME:FastRedHaste 1 [HOU:92] Firebrand Archer 1 [AVR:141] Hound of Griselbrand 1 [ONS:189] Blistering Firecat -1 [VIS:125] Zhalfirin Crusader +1 [VIS:25] Zhalfirin Crusader 1 [RAV:243] Boros Recruit 1 [ROE:15] Caravan Escort 1 [C14:40] Volcanic Offering @@ -73,5 +73,5 @@ NAME:FastRedHaste 1 [DTK:134] Draconic Roar 1 [2ED:245] Gauntlet of Might 1 [ONS:199] Dwarven Blastminer -LAYOUT MAIN:(1,8)(CARD_TYPE,false,50)|([KLD:236])([M13:200],[RAV:255],[2ED:245])([BNG:108])([M15:35],[C16:16],[EMN:149],[KLD:130],[TSB:72],[ISD:23],[ISD:4],[LEG:133],[ZEN:127],[HOU:104],[HOU:103],[AVR:141],[ONS:189],[RAV:243],[ROE:15],[SOI:190],[KTK:118],[MMQ:53],[ONS:199],[DKA:93],[WTH:93],[DGM:56],[INV:11],[DGM:107],[GTC:97],[USG:11],[AKH:21],[M12:133],[LEG:175],[ME4:113],[M11:129],[OGW:105],[M13:148],[M10:34],[HOU:92],[VIS:125],[EVE:139],[KTK:11],[DIS:10],[RAV:193],[GTC:215])([SOI:28])([ZEN:119],[CHK:40],[C14:40],[M11:149],[DTK:134],[8ED:200],[ZEN:142],[WWK:90],[TSP:180],[BFZ:150],[HOU:20],[FUT:115],[RAV:213],[DKA:84])([DOM:262],[DOM:250],[DOM:250],[DOM:250],[DOM:250],[KLD:246],[OGW:175],[DOM:262],[DOM:262],[DOM:262],[DOM:262],[DOM:250],[LEG:247],[DOM:262],[DOM:262],[DOM:262],[DOM:262],[DOM:250],[DOM:250],[DOM:262],[DOM:262],[3ED:296],[DOM:250],[DOM:262],[DOM:262],[DOM:262],[DOM:262],[DOM:250],[DOM:250],[DOM:250],[DOM:250],[DOM:262])([ODY:193],[XLN:145],[DTK:151],[ODY:193],[ORI:143],[ODY:200],[C15:28],[M14:139]) +LAYOUT MAIN:(1,8)(CARD_TYPE,false,50)|([KLD:236])([M13:200],[RAV:255],[2ED:245])([BNG:108])([M15:35],[C16:16],[EMN:149],[KLD:130],[TSB:72],[ISD:23],[ISD:4],[LEG:133],[ZEN:127],[HOU:104],[HOU:103],[AVR:141],[ONS:189],[RAV:243],[ROE:15],[SOI:190],[KTK:118],[MMQ:53],[ONS:199],[DKA:93],[WTH:93],[DGM:56],[INV:11],[DGM:107],[GTC:97],[USG:11],[AKH:21],[M12:133],[LEG:6],[ME4:113],[M11:129],[OGW:105],[M13:148],[M10:34],[HOU:92],[VIS:25],[EVE:139],[KTK:11],[DIS:10],[RAV:193],[GTC:215])([SOI:28])([ZEN:119],[CHK:40],[C14:40],[M11:149],[DTK:134],[8ED:200],[ZEN:142],[WWK:90],[TSP:180],[BFZ:150],[HOU:20],[FUT:115],[RAV:213],[DKA:84])([DOM:262],[DOM:250],[DOM:250],[DOM:250],[DOM:250],[KLD:246],[OGW:175],[DOM:262],[DOM:262],[DOM:262],[DOM:262],[DOM:250],[LEG:302],[DOM:262],[DOM:262],[DOM:262],[DOM:262],[DOM:250],[DOM:250],[DOM:262],[DOM:262],[3ED:284],[DOM:250],[DOM:262],[DOM:262],[DOM:262],[DOM:262],[DOM:250],[DOM:250],[DOM:250],[DOM:250],[DOM:262])([ODY:193],[XLN:145],[DTK:151],[ODY:193],[ORI:143],[ODY:200],[C15:28],[M14:139]) LAYOUT SIDEBOARD:(0,0)(CMC,true,50)| diff --git a/Mage.Client/release/sample-decks/AI/Poison.dck b/Mage.Client/release/sample-decks/AI/Poison.dck index ef2dcb38b8e..aec84cce2fe 100644 --- a/Mage.Client/release/sample-decks/AI/Poison.dck +++ b/Mage.Client/release/sample-decks/AI/Poison.dck @@ -3,13 +3,13 @@ 1 [FUT:171] Llanowar Reborn 1 [KLD:243] Blooming Marsh 1 [ALA:225] Jund Panorama -1 [MIR:12] Crypt Cobra +1 [MIR:114] Crypt Cobra 1 [ZEN:221] Oran-Rief, the Vastwood -1 [STH:132] Mox Diamond +1 [STH:138] Mox Diamond 1 [M15:194] Reclamation Sage NAME:Poison 1 [M13:168] Elvish Archdruid -1 [STH:137] Volrath's Stronghold +1 [STH:143] Volrath's Stronghold 1 [FUT:174] Dryad Arbor 1 [M15:101] Indulgent Tormentor 1 [DKA:125] Scorned Villager @@ -62,7 +62,7 @@ NAME:Poison 1 [CMA:186] Meren of Clan Nel Toth 1 [SHM:273] Leechridden Swamp 1 [NPH:72] Reaper of Sheoldred -1 [MIR:136] Sabertooth Cobra +1 [MIR:238] Sabertooth Cobra 1 [RTR:243] Overgrown Tomb 1 [AER:106] Druid of the Cowl 1 [AKH:237] Throne of the God-Pharaoh @@ -94,5 +94,5 @@ NAME:Poison 1 [BFZ:240] Mortuary Mire 1 [SOM:223] Wurmcoil Engine 1 [AKH:187] Sixth Sense -LAYOUT MAIN:(1,11)(CARD_TYPE,false,50)|([SOM:170],[MBS:121],[MBS:125],[SOM:166],[SOM:185],[SOM:223])([THS:153])([MOR:145])([RTR:229],[BFZ:225],[SOM:140],[M14:207],[STH:132],[RAV:262],[AKH:237],[MRD:270])([JOU:154],[BNG:68])([FUT:174])([RAV:231],[M15:194],[M14:168],[M15:101],[DKA:125],[ORI:101],[ORI:100],[EMN:159],[M12:195],[NPH:119],[DGM:26],[SOI:203],[SOI:202],[LRW:250],[SOM:66],[NPH:72],[NPH:111],[AER:106],[DTK:123],[EVE:79],[EVE:124],[RTR:198],[AER:117],[EMN:175],[THS:91],[AVR:107],[THS:201],[ALA:71],[MIR:12],[MOR:140],[GTC:123],[CHK:236],[SOM:79],[MBS:94],[C13:84],[M13:118],[MBS:96],[MBS:90],[CMA:186],[M13:168],[CHK:238],[ODY:282],[MIR:136],[DTK:204],[BFZ:170],[BNG:122],[MBS:77],[BOK:136],[KTK:152],[M12:81],[LRW:219],[APC:109])([VMA:250],[AKH:187])([MBS:57])([KLD:243],[ZEN:221],[DOM:266],[DOM:266],[DOM:258],[DOM:258],[USG:321],[LRW:268],[RTR:243],[OGW:172],[OGW:171],[FUT:171],[DOM:266],[DOM:266],[DOM:266],[DOM:266],[DOM:266],[DOM:258],[WWK:140],[FRF:169],[MBS:145],[BFZ:240],[ALA:225],[DOM:258],[DOM:266],[STH:137],[SHM:273],[DOM:258],[DOM:258],[CON:144],[DOM:266],[RAV:283])([M15:183],[AER:70]) +LAYOUT MAIN:(1,11)(CARD_TYPE,false,50)|([SOM:170],[MBS:121],[MBS:125],[SOM:166],[SOM:185],[SOM:223])([THS:153])([MOR:145])([RTR:229],[BFZ:225],[SOM:140],[M14:207],[STH:138],[RAV:262],[AKH:237],[MRD:270])([JOU:154],[BNG:68])([FUT:174])([RAV:231],[M15:194],[M14:168],[M15:101],[DKA:125],[ORI:101],[ORI:100],[EMN:159],[M12:195],[NPH:119],[DGM:26],[SOI:203],[SOI:202],[LRW:250],[SOM:66],[NPH:72],[NPH:111],[AER:106],[DTK:123],[EVE:79],[EVE:124],[RTR:198],[AER:117],[EMN:175],[THS:91],[AVR:107],[THS:201],[ALA:71],[MIR:114],[MOR:140],[GTC:123],[CHK:236],[SOM:79],[MBS:94],[C13:84],[M13:118],[MBS:96],[MBS:90],[CMA:186],[M13:168],[CHK:238],[ODY:282],[MIR:238],[DTK:204],[BFZ:170],[BNG:122],[MBS:77],[BOK:136],[KTK:152],[M12:81],[LRW:219],[APC:109])([VMA:250],[AKH:187])([MBS:57])([KLD:243],[ZEN:221],[DOM:266],[DOM:266],[DOM:258],[DOM:258],[USG:321],[LRW:268],[RTR:243],[OGW:172],[OGW:171],[FUT:171],[DOM:266],[DOM:266],[DOM:266],[DOM:266],[DOM:266],[DOM:258],[WWK:140],[FRF:169],[MBS:145],[BFZ:240],[ALA:225],[DOM:258],[DOM:266],[STH:143],[SHM:273],[DOM:258],[DOM:258],[CON:144],[DOM:266],[RAV:283])([M15:183],[AER:70]) LAYOUT SIDEBOARD:(0,0)(CMC,true,50)| diff --git a/Mage.Client/release/sample-decks/AI/Zombi & Skeleton.dck b/Mage.Client/release/sample-decks/AI/Zombi & Skeleton.dck index a5c0c8c1e15..e9fe8430d1f 100644 --- a/Mage.Client/release/sample-decks/AI/Zombi & Skeleton.dck +++ b/Mage.Client/release/sample-decks/AI/Zombi & Skeleton.dck @@ -1,4 +1,4 @@ -NAME:Zombi & Skeleton +NAME:Zombi & Skeleton 1 [FUT:171] Llanowar Reborn 1 [LGN:77] Noxious Ghoul 1 [M12:116] Vengeful Pharaoh @@ -35,7 +35,7 @@ NAME:Zombi & Skeleton 1 [DOM:241] Isolated Chapel 1 [AER:109] Heroic Intervention 2 [DOM:248] Woodland Cemetery -1 [MIR:296] Grasslands +1 [MIR:327] Grasslands 1 [SOI:216] Loam Dryad 1 [SOM:63] Fume Spitter 1 [SOI:212] Inexorable Blob @@ -64,8 +64,8 @@ NAME:Zombi & Skeleton 1 [ALA:221] Bant Panorama 1 [CHK:122] Kokusho, the Evening Star 1 [AKH:6] Binding Mummy -1 [MIR:11] Choking Sands -1 [3ED:298] Scrubland +1 [MIR:113] Choking Sands +1 [3ED:286] Scrubland 1 [WTH:152] Mana Web 4 [DOM:266] Forest 1 [PLC:145] Essence Warden @@ -114,5 +114,5 @@ NAME:Zombi & Skeleton 1 [AKH:104] Plague Belcher 1 [MRD:278] Ancient Den 1 [DTK:172] Ainok Survivalist -LAYOUT MAIN:(1,7)(CARD_TYPE,false,50)|([MRD:278],[MRD:285])([LRW:265],[4ED:299],[AER:173],[WTH:152],[3ED:274])([EVE:119],[LGN:77],[M12:116],[SHM:229],[M14:103],[THS:89],[DKA:70],[RTR:174],[RAV:238],[10E:155],[MBS:50],[CMD:227],[RTR:158],[DKA:63],[RTR:213],[DKA:64],[LGN:80],[7ED:166],[AKH:91],[SCG:62],[KTK:73],[TSB:52],[AKH:99],[SOI:216],[SOM:63],[SOI:212],[AKH:81],[M14:195],[CSP:71],[CMD:98],[M15:121],[M15:111],[6ED:162],[ISD:170],[SOI:107],[ALA:70],[NPH:68],[SOM:78],[SOK:69],[CHK:122],[AKH:6],[EVE:117],[ONS:164],[MBS:96],[E01:36],[M12:81],[AKH:208],[DTK:116],[PLC:145],[ODY:282],[EMN:89],[BFZ:210],[M13:92],[CMA:66],[GTC:182],[APC:109],[M12:86],[NPH:25],[AKH:104],[DTK:172])([ZEN:108],[ROE:207],[EMN:90])([C16:21],[MMQ:129],[TSP:135],[APC:86],[TOR:51],[AER:109],[TSP:206],[OGW:26],[ROE:131],[ISD:124],[PLC:127],[DGM:132])([M11:229],[DOM:258],[DOM:258],[DOM:258],[BFZ:234],[DOM:266],[AKH:247],[SHM:279],[DOM:266],[KTK:248],[FUT:171],[DOM:258],[MIR:296],[DOM:266],[JUD:141],[ONS:312],[HOU:171],[DOM:250],[DOM:258],[GTC:242],[ONS:324],[ONS:326],[ONS:327],[3ED:283],[SHM:273],[DOM:258],[ALA:221],[DOM:241],[DOM:258],[DOM:248],[DOM:248],[3ED:298],[EVE:180],[DOM:266],[SHM:281],[DKA:158])([JUD:72],[ISD:26],[TOR:57],[MIR:11],[TOR:78],[JOU:120],[DKA:80]) +LAYOUT MAIN:(1,7)(CARD_TYPE,false,50)|([MRD:278],[MRD:285])([LRW:265],[4ED:299],[AER:173],[WTH:152],[3ED:274])([EVE:119],[LGN:77],[M12:116],[SHM:229],[M14:103],[THS:89],[DKA:70],[RTR:174],[RAV:238],[10E:155],[MBS:50],[CMD:227],[RTR:158],[DKA:63],[RTR:213],[DKA:64],[LGN:80],[7ED:166],[AKH:91],[SCG:62],[KTK:73],[TSB:52],[AKH:99],[SOI:216],[SOM:63],[SOI:212],[AKH:81],[M14:195],[CSP:71],[CMD:98],[M15:121],[M15:111],[6ED:162],[ISD:170],[SOI:107],[ALA:70],[NPH:68],[SOM:78],[SOK:69],[CHK:122],[AKH:6],[EVE:117],[ONS:164],[MBS:96],[E01:36],[M12:81],[AKH:208],[DTK:116],[PLC:145],[ODY:282],[EMN:89],[BFZ:210],[M13:92],[CMA:66],[GTC:182],[APC:109],[M12:86],[NPH:25],[AKH:104],[DTK:172])([ZEN:108],[ROE:207],[EMN:90])([C16:21],[MMQ:129],[TSP:135],[APC:86],[TOR:51],[AER:109],[TSP:206],[OGW:26],[ROE:131],[ISD:124],[PLC:127],[DGM:132])([M11:229],[DOM:258],[DOM:258],[DOM:258],[BFZ:234],[DOM:266],[AKH:247],[SHM:279],[DOM:266],[KTK:248],[FUT:171],[DOM:258],[MIR:327],[DOM:266],[JUD:141],[ONS:312],[HOU:171],[DOM:250],[DOM:258],[GTC:242],[ONS:324],[ONS:326],[ONS:327],[3ED:283],[SHM:273],[DOM:258],[ALA:221],[DOM:241],[DOM:258],[DOM:248],[DOM:248],[3ED:286],[EVE:180],[DOM:266],[SHM:281],[DKA:158])([JUD:72],[ISD:26],[TOR:57],[MIR:113],[TOR:78],[JOU:120],[DKA:80]) LAYOUT SIDEBOARD:(0,0)(CMC,true,50)| diff --git a/Mage.Client/release/sample-decks/Commander/Commander 2015/Call the Spirits (WB).dck b/Mage.Client/release/sample-decks/Commander/Commander 2015/Call the Spirits (WB).dck index c00e539a8e2..7652893bcbd 100644 --- a/Mage.Client/release/sample-decks/Commander/Commander 2015/Call the Spirits (WB).dck +++ b/Mage.Client/release/sample-decks/Commander/Commander 2015/Call the Spirits (WB).dck @@ -46,8 +46,8 @@ 1 [C15:268] Sol Ring 1 [C15:301] Reliquary Tower 1 [C15:57] Ajani's Chosen -1 [C15:302] Scoured Barrens -1 [C15:303] Secluded Steppe +1 [C15:303] Scoured Barrens +1 [C15:304] Secluded Steppe 1 [C15:229] Necromancer's Covenant 1 [C15:22] Thief of Blood 1 [C15:66] Dawn to Dusk diff --git a/Mage.Client/release/sample-decks/Commander/Commander 2017/VampiricBloodlust.dck b/Mage.Client/release/sample-decks/Commander/Commander 2017/VampiricBloodlust.dck index 3944360bfb0..2726ac5a909 100644 --- a/Mage.Client/release/sample-decks/Commander/Commander 2017/VampiricBloodlust.dck +++ b/Mage.Client/release/sample-decks/Commander/Commander 2017/VampiricBloodlust.dck @@ -1,6 +1,6 @@ 1 [C17:100] Blood Tribute 1 [C17:101] Bloodhusk Ritualist -1 [C17:102] Bloodlord of Vaasgoth +1 [M12:82] Bloodlord of Vaasgoth 1 [C17:103] Butcher of Malakir 1 [C17:104] Captivating Vampire 1 [C17:105] Consuming Vapors diff --git a/Mage.Client/release/sample-decks/Commander/Commander 2018/Subjective Reality.dck b/Mage.Client/release/sample-decks/Commander/Commander 2018/Subjective Reality.dck index 49462f68623..b24a237a89f 100644 --- a/Mage.Client/release/sample-decks/Commander/Commander 2018/Subjective Reality.dck +++ b/Mage.Client/release/sample-decks/Commander/Commander 2018/Subjective Reality.dck @@ -1,93 +1,93 @@ -1 [C18:102] Sigiled Starfish -1 [C18:103] Sphinx of Jwar Isle -1 [C18:104] Sphinx of Uthuun -1 [C18:105] Telling Time -1 [C18:109] Treasure Hunt -1 [C18:113] Army of the Damned -1 [C18:115] Phyrexian Delver -1 [C18:12] Primordial Mist -1 [C18:15] Entreat the Dead -1 [C18:168] Aethermage's Touch -1 [C18:16] Loyal Subordinate -1 [C18:176] Duskmantle Seer -1 [C18:178] Enigma Sphinx -1 [C18:179] Esper Charm -1 [C18:17] Night Incarnate -1 [C18:183] High Priest of Penance -1 [C18:186] Mortify -1 [C18:18] Skull Storm -1 [C18:191] Silent-Blade Oni -1 [C18:193] Utter End -1 [C18:196] Azorius Signet -1 [C18:19] Sower of Discord -1 [C18:1] Boreas Charger -1 [C18:200] Commander's Sphere -1 [C18:201] Crystal Ball -1 [C18:203] Dimir Signet -1 [C18:210] Mind Stone -1 [C18:213] Orzhov Signet -1 [C18:214] Pilgrim's Eye -1 [C18:220] Seer's Lantern -1 [C18:222] Sol Ring -1 [C18:232] Arcane Sanctum -1 [C18:233] Azorius Chancery -1 [C18:234] Azorius Guildgate -1 [C18:235] Barren Moor -1 [C18:240] Command Tower -1 [C18:242] Dimir Aqueduct -1 [C18:243] Dimir Guildgate -1 [C18:244] Dismal Backwater -1 [C18:247] Forsaken Sanctuary -1 [C18:253] Halimar Depths -1 [C18:260] Jwar Isle Refuge -1 [C18:264] Lonely Sandbar -1 [C18:265] Meandering River -1 [C18:266] Mortuary Mire -1 [C18:270] New Benalia -1 [C18:271] Orzhov Basilica -1 [C18:272] Orzhov Guildgate -1 [C18:276] Scoured Barrens -1 [C18:279] Secluded Steppe -1 [C18:280] Sejiri Refuge -1 [C18:283] Submerged Boneyard -1 [C18:48] Varina, Lich Queen -1 [C18:4] Loyal Unicorn -1 [C18:56] Geode Golem -1 [C18:58] Forge of Heroes -1 [C18:59] Isolated Watchtower -1 [C18:5] Magus of the Balance -1 [C18:60] Adarkar Valkyrie -1 [C18:62] Akroma's Vengeance -1 [C18:63] Banishing Stroke -1 [C18:65] Crib Swap -1 [C18:67] Entreat the Angels -1 [C18:68] Lightform -1 [C18:71] Return to Dust -1 [C18:73] Serra Avatar -1 [C18:77] Terminus -1 [C18:82] Brainstorm -1 [C18:83] Cloudform -1 [C18:84] Conundrum Sphinx -1 [C18:85] Devastation Tide -1 [C18:87] Djinn of Wishes -1 [C18:88] Dream Cache -1 [C18:93] Jeskai Infiltrator -1 [C18:94] Mulldrifter -1 [C18:95] Ninja of the Deep Hours -1 [C18:96] Ponder -1 [C18:97] Portent -1 [C18:98] Predict -1 [C18:298] Island -1 [C18:299] Swamp -1 [C18:300] Swamp -1 [C18:301] Swamp -1 [C18:006] Aminatou's Augury +1 [C18:102] Sigiled Starfish +1 [C18:103] Sphinx of Jwar Isle +1 [C18:104] Sphinx of Uthuun +1 [C18:105] Telling Time +1 [C18:109] Treasure Hunt +1 [C18:113] Army of the Damned +1 [C18:115] Phyrexian Delver +1 [C18:12] Primordial Mist +1 [C18:15] Entreat the Dead +1 [C18:168] Aethermage's Touch +1 [C18:16] Loyal Subordinate +1 [C18:176] Duskmantle Seer +1 [C18:178] Enigma Sphinx +1 [C18:179] Esper Charm +1 [C18:17] Night Incarnate +1 [C18:183] High Priest of Penance +1 [C18:186] Mortify +1 [C18:18] Skull Storm +1 [C18:191] Silent-Blade Oni +1 [C18:193] Utter End +1 [C18:196] Azorius Signet +1 [C18:19] Sower of Discord +1 [C18:1] Boreas Charger +1 [C18:200] Commander's Sphere +1 [C18:201] Crystal Ball +1 [C18:203] Dimir Signet +1 [C18:210] Mind Stone +1 [C18:213] Orzhov Signet +1 [C18:214] Pilgrim's Eye +1 [C18:220] Seer's Lantern +1 [C18:222] Sol Ring +1 [C18:232] Arcane Sanctum +1 [C18:233] Azorius Chancery +1 [C18:234] Azorius Guildgate +1 [C18:235] Barren Moor +1 [C18:240] Command Tower +1 [C18:242] Dimir Aqueduct +1 [C18:243] Dimir Guildgate +1 [C18:244] Dismal Backwater +1 [C18:247] Forsaken Sanctuary +1 [C18:253] Halimar Depths +1 [C18:260] Jwar Isle Refuge +1 [C18:264] Lonely Sandbar +1 [C18:265] Meandering River +1 [C18:266] Mortuary Mire +1 [C18:270] New Benalia +1 [C18:271] Orzhov Basilica +1 [C18:272] Orzhov Guildgate +1 [C18:276] Scoured Barrens +1 [C18:279] Secluded Steppe +1 [C18:280] Sejiri Refuge +1 [C18:283] Submerged Boneyard +1 [C18:48] Varina, Lich Queen +1 [C18:4] Loyal Unicorn +1 [C18:56] Geode Golem +1 [C18:58] Forge of Heroes +1 [C18:59] Isolated Watchtower +1 [C18:5] Magus of the Balance +1 [C18:60] Adarkar Valkyrie +1 [C18:62] Akroma's Vengeance +1 [C18:63] Banishing Stroke +1 [C18:65] Crib Swap +1 [C18:67] Entreat the Angels +1 [C18:68] Lightform +1 [C18:71] Return to Dust +1 [C18:73] Serra Avatar +1 [C18:77] Terminus +1 [C18:82] Brainstorm +1 [C18:83] Cloudform +1 [C18:84] Conundrum Sphinx +1 [C18:85] Devastation Tide +1 [C18:87] Djinn of Wishes +1 [C18:88] Dream Cache +1 [C18:93] Jeskai Infiltrator +1 [C18:94] Mulldrifter +1 [C18:95] Ninja of the Deep Hours +1 [C18:96] Ponder +1 [C18:97] Portent +1 [C18:98] Predict +1 [C18:298] Island +1 [C18:299] Swamp +1 [C18:300] Swamp +1 [C18:301] Swamp +1 [C18:6] Aminatou's Augury 1 [C18:288] Tranquil Cove 1 [C18:51] Yennett, Cryptic Sovereign 1 [C18:52] Yuriko, the Tiger's Shadow -2 [C18:296] Island -2 [C18:297] Island -2 [C18:295] Plains -3 [C18:293] Plains -3 [C18:294] Plains +2 [C18:296] Island +2 [C18:297] Island +2 [C18:295] Plains +3 [C18:293] Plains +3 [C18:294] Plains SB: 1 [C18:37] Aminatou, the Fateshifter diff --git a/Mage.Client/release/sample-decks/Commander/Tasigur BGU.dck b/Mage.Client/release/sample-decks/Commander/Tasigur BGU.dck index 6ccbf8fa47c..76402867465 100644 --- a/Mage.Client/release/sample-decks/Commander/Tasigur BGU.dck +++ b/Mage.Client/release/sample-decks/Commander/Tasigur BGU.dck @@ -1,11 +1,11 @@ 1 [MMQ:316] Dust Bowl 1 [MBS:43] Go for the Throat -1 [ALL:42] Force of Will +1 [ALL:28] Force of Will 1 [ZEN:220] Misty Rainforest 1 [10E:361] Treetop Village 1 [10E:362] Underground River 1 [ROE:115] Inquisition of Kozilek -1 [STH:137] Volrath's Stronghold +1 [STH:143] Volrath's Stronghold 1 [PLC:85] Damnation 1 [FUT:173] Tolaria West 1 [ISD:78] Snapcaster Mage @@ -23,14 +23,14 @@ 1 [GTC:240] Breeding Pool 1 [DTK:262] Forest 1 [ISD:105] Liliana of the Veil -1 [TMP:340] Wasteland +1 [TMP:330] Wasteland 1 [JUD:46] Mental Note 1 [ULG:36] Miscalculation 2 [CSP:152] Snow-Covered Island 1 [RAV:63] Remand 1 [LRW:56] Cryptic Command 1 [3ED:283] Bayou -1 [5ED:191] Sylvan Library +1 [5ED:329] Sylvan Library 1 [CMD:269] Command Tower 1 [EXO:35] Forbid 1 [DDO:36] Aetherize @@ -41,7 +41,7 @@ 1 [ARB:92] Maelstrom Pulse 1 [KTK:81] Murderous Cut 1 [TSP:48] Ancestral Vision -1 [TMP:22] Diabolic Edict +1 [TMP:128] Diabolic Edict 1 [10E:319] Crucible of Worlds 1 [M12:63] Mana Leak 1 [FUT:52] Logic Knot @@ -65,13 +65,13 @@ 1 [RTR:243] Overgrown Tomb 1 [7ED:76] Force Spike 1 [TMP:70] Intuition -1 [3ED:305] Underground Sea +1 [3ED:290] Underground Sea 1 [M15:248] Urborg, Tomb of Yawgmoth 1 [AVR:226] Cavern of Souls 1 [ISD:241] Hinterland Harbor 1 [DKA:52] Thought Scour -1 [3ED:303] Tropical Island -1 [3ED:13] Demonic Tutor +1 [3ED:288] Tropical Island +1 [3ED:105] Demonic Tutor 1 [ISD:249] Woodland Cemetery 1 [M12:73] Ponder 1 [DTK:65] Negate diff --git a/Mage.Client/release/sample-decks/Commander/Zurgo Helmsmasher RWB.dck b/Mage.Client/release/sample-decks/Commander/Zurgo Helmsmasher RWB.dck index 2e5fce7b615..550937ff3e1 100644 --- a/Mage.Client/release/sample-decks/Commander/Zurgo Helmsmasher RWB.dck +++ b/Mage.Client/release/sample-decks/Commander/Zurgo Helmsmasher RWB.dck @@ -34,7 +34,7 @@ 1 [M14:1] Ajani, Caller of the Pride 1 [M12:109] Sorin Markov 1 [M12:147] Inferno Titan -1 [ICE:278] Swords to Plowshares +1 [ICE:54] Swords to Plowshares 1 [CMD:269] Command Tower 1 [M12:222] Worldslayer 1 [M15:133] Burning Anger @@ -66,7 +66,7 @@ 1 [ZEN:203] Grappling Hook 1 [ORI:244] Battlefield Forge 1 [ORI:245] Caves of Koilos -1 [3ED:13] Demonic Tutor +1 [3ED:105] Demonic Tutor 1 [GTC:143] Aurelia, the Warleader 1 [AVR:36] Silverblade Paladin 1 [THS:85] Erebos, God of the Dead diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Abzan Midrange TDtB ST Dec 2014.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Abzan Midrange TDtB ST Dec 2014.mwDeck.dck index 0115fc7ca68..72f23e2a974 100644 --- a/Mage.Client/release/sample-decks/Decks to Beat/Abzan Midrange TDtB ST Dec 2014.mwDeck.dck +++ b/Mage.Client/release/sample-decks/Decks to Beat/Abzan Midrange TDtB ST Dec 2014.mwDeck.dck @@ -1,44 +1,44 @@ -4 [KTK:248] Windswept Heath -1 [TPR:267] Forest -2 [JOU:165] Temple of Malady -1 [PLC:165] Urborg, Tomb of Yawgmoth -1 [JOU:5] Banishing Light -4 [KTK:200] Siege Rhino -2 [M15:34] Soul of Theros -2 [C14:191] Elvish Mystic -1 [FNMP:172] Banishing Light -1 [M11:233] Plains -1 [LRW:299] Forest -4 [KTK:241] Sandsteppe Citadel -1 [10E:355] Llanowar Wastes -1 [M15:178] Hornet Queen -1 [UNH:140] Forest -1 [APC:140] Caves of Koilos -1 [M15:173] Elvish Mystic -2 [BNG:136] Satyr Wayfinder -4 [BNG:119] Courser of Kruphix -1 [RAV:287] Plains -2 [THS:227] Temple of Silence -1 [APC:141] Llanowar Wastes -4 [KTK:31] Wingmate Roc -2 [M15:198] Satyr Wayfinder -2 [THS:155] Commune with the Gods -2 [THS:180] Sylvan Caryatid -1 [MBP:77] Sylvan Caryatid -2 [THS:110] Whip of Erebos -1 [FNMP:165] Elvish Mystic -3 [KTK:81] Murderous Cut -2 [CMD:159] Hornet Queen -2 [M15:244] Llanowar Wastes -SB: 1 [M15:194] Reclamation Sage -SB: 1 [PTC:80] Doomwake Giant -SB: 2 [LRW:145] Thoughtseize -SB: 1 [KTK:174] Duneblast -SB: 1 [M15:187] Nissa, Worldwaker -SB: 1 [THS:110] Whip of Erebos -SB: 2 [THS:15] Glare of Heresy -SB: 2 [KTK:8] End Hostilities -SB: 1 [JOU:66] Doomwake Giant -SB: 1 [C14:213] Reclamation Sage -SB: 1 [THS:101] Read the Bones -SB: 1 [MBP:103] Nissa, Worldwaker +4 [KTK:248] Windswept Heath +1 [TPR:267] Forest +2 [JOU:165] Temple of Malady +1 [PLC:165] Urborg, Tomb of Yawgmoth +1 [JOU:5] Banishing Light +4 [KTK:200] Siege Rhino +2 [M15:34] Soul of Theros +2 [C14:191] Elvish Mystic +1 [F14:9] Banishing Light +1 [M11:233] Plains +1 [LRW:299] Forest +4 [KTK:241] Sandsteppe Citadel +1 [10E:355] Llanowar Wastes +1 [M15:178] Hornet Queen +1 [UNH:140] Forest +1 [APC:140] Caves of Koilos +1 [M15:173] Elvish Mystic +2 [BNG:136] Satyr Wayfinder +4 [BNG:119] Courser of Kruphix +1 [RAV:287] Plains +2 [THS:227] Temple of Silence +1 [APC:141] Llanowar Wastes +4 [KTK:31] Wingmate Roc +2 [M15:198] Satyr Wayfinder +2 [THS:155] Commune with the Gods +2 [THS:180] Sylvan Caryatid +1 [THS:180] Sylvan Caryatid +2 [THS:110] Whip of Erebos +1 [F14:2] Elvish Mystic +3 [KTK:81] Murderous Cut +2 [CMD:159] Hornet Queen +2 [M15:244] Llanowar Wastes +SB: 1 [M15:194] Reclamation Sage +SB: 1 [PJOU:66] Doomwake Giant +SB: 2 [LRW:145] Thoughtseize +SB: 1 [KTK:174] Duneblast +SB: 1 [M15:187] Nissa, Worldwaker +SB: 1 [THS:110] Whip of Erebos +SB: 2 [THS:15] Glare of Heresy +SB: 2 [KTK:8] End Hostilities +SB: 1 [JOU:66] Doomwake Giant +SB: 1 [C14:213] Reclamation Sage +SB: 1 [THS:101] Read the Bones +SB: 1 [M15:187] Nissa, Worldwaker 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 d21efee1f93..f4aca6a7d7f 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 @@ -27,13 +27,13 @@ 2 [9ED:322] Llanowar Wastes 4 [THS:180] Sylvan Caryatid 1 [ARC:150] Forest -SB: 1 [MBP:101] Liliana Vess +SB: 1 [M15:103] Liliana Vess SB: 2 [M15:169] Back to Nature -SB: 1 [FNMP:171] Bile Blight +SB: 1 [F14:8] Bile Blight SB: 2 [BNG:61] Bile Blight SB: 1 [C14:158] Read the Bones SB: 1 [M15:187] Nissa, Worldwaker SB: 1 [KTK:8] End Hostilities SB: 2 [KTK:163] Anafenza, the Foremost -SB: 1 [MBP:103] Nissa, Worldwaker +SB: 1 [M15:187] Nissa, Worldwaker SB: 3 [BNG:65] Drown in Sorrow diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Bant Pod TDtB ST Oct 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Bant Pod TDtB ST Oct 2011.mwDeck.dck index e0f57b47650..0b057ef67af 100644 --- a/Mage.Client/release/sample-decks/Decks to Beat/Bant Pod TDtB ST Oct 2011.mwDeck.dck +++ b/Mage.Client/release/sample-decks/Decks to Beat/Bant Pod TDtB ST Oct 2011.mwDeck.dck @@ -16,7 +16,7 @@ 1 [NPH:9] Elesh Norn, Grand Cenobite 4 [ISD:241] Hinterland Harbor 1 [ISD:207] Tree of Redemption -1 [FNMP:147] Avacyn's Pilgrim +1 [F12:8] Avacyn's Pilgrim 1 [ISD:193] Mayor of Avabruck 1 [NPH:4] Blade Splicer 1 [C14:283] Wurmcoil Engine 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 0d338274f16..69eca0313b6 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 @@ -1,46 +1,46 @@ -1 [POR:214] Mountain -4 [MBS:64] Goblin Wardriver -1 [WWK:145] Tectonic Edge -3 [M10:139] Goblin Chieftain -1 [M12:138] Goblin Chieftain -1 [SHM:296] Mountain -1 [ARC:147] Mountain -1 [RTR:267] Mountain -1 [C13:352] Mountain -4 [ZEN:125] Goblin Bushwhacker -1 [DDE:69] Mountain -2 [ZEN:126] Goblin Guide -3 [MPRP:47] Burst Lightning -1 [ZEN:226] Teetering Peaks -1 [SOM:81] Arc Trail -1 [S00:102] Mountain -2 [MM2:127] Spikeshot Elder -1 [LEA:283] Mountain -1 [MMQ:345] Mountain -1 [RAV:300] Mountain -2 [GPX:6] Goblin Guide -4 [M11:135] Ember Hauler -2 [JR:1] Lightning Bolt -1 [M10:146] Lightning Bolt -1 [M10:243] Mountain -1 [M12:242] Mountain -2 [ROE:166] Staggershock -1 [C14:313] Tectonic Edge -1 [MIR:301] Mountain -1 [DDL:77] Mountain -2 [GRC:48] Staggershock -1 [ZEN:119] Burst Lightning -1 [DD3B:60] Mountain -3 [FNMP:136] Teetering Peaks -2 [SOM:104] Spikeshot Elder -1 [HOP:163] Mountain -1 [LEB:163] Lightning Bolt -1 [SOM:243] Mountain -SB: 2 [M12:151] Manic Vandal -SB: 2 [M13:141] Mark of Mutiny -SB: 1 [DDN:23] Arc Trail -SB: 1 [SOM:196] Ratchet Bomb -SB: 2 [PC2:39] Arc Trail -SB: 2 [PC2:47] Mark of Mutiny -SB: 3 [M14:215] Ratchet Bomb -SB: 2 [M11:151] Manic Vandal +1 [POR:208] Mountain +4 [MBS:64] Goblin Wardriver +1 [WWK:145] Tectonic Edge +3 [M10:139] Goblin Chieftain +1 [M12:138] Goblin Chieftain +1 [SHM:296] Mountain +1 [ARC:147] Mountain +1 [RTR:267] Mountain +1 [C13:352] Mountain +4 [ZEN:125] Goblin Bushwhacker +1 [DDE:69] Mountain +2 [ZEN:126] Goblin Guide +3 [P10:8] Burst Lightning +1 [ZEN:226] Teetering Peaks +1 [SOM:81] Arc Trail +1 [4ED:373] Mountain +2 [MM2:127] Spikeshot Elder +1 [LEA:292] Mountain +1 [MMQ:345] Mountain +1 [RAV:300] Mountain +2 [PGPX:2012a] Goblin Guide +4 [M11:135] Ember Hauler +2 [JGP:1] Lightning Bolt +1 [M10:146] Lightning Bolt +1 [M10:243] Mountain +1 [M12:242] Mountain +2 [ROE:166] Staggershock +1 [C14:313] Tectonic Edge +1 [MIR:343] Mountain +1 [DDL:77] Mountain +2 [ROE:166] Staggershock +1 [ZEN:119] Burst Lightning +1 [M21:269] Mountain +3 [F11:9] Teetering Peaks +2 [SOM:104] Spikeshot Elder +1 [HOP:163] Mountain +1 [LEB:162] Lightning Bolt +1 [SOM:243] Mountain +SB: 2 [M12:151] Manic Vandal +SB: 2 [M13:141] Mark of Mutiny +SB: 1 [DDN:23] Arc Trail +SB: 1 [SOM:196] Ratchet Bomb +SB: 2 [PC2:39] Arc Trail +SB: 2 [PC2:47] Mark of Mutiny +SB: 3 [M14:215] Ratchet Bomb +SB: 2 [M11:151] Manic Vandal 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 77253da0835..ad66ba7cd98 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 @@ -2,7 +2,7 @@ 1 [THS:127] Lightning Strike 1 [7ED:339] Mountain 1 [INV:343] Mountain -1 [ZEN:263] Mountain +1 [ZEN:242a] Mountain 1 [APC:140] Caves of Koilos 3 [KTK:22] Seeker of the Way 1 [THS:227] Temple of Silence @@ -15,11 +15,11 @@ 1 [DDL:22] Magma Jet 3 [THS:4] Chained to the Rocks 1 [10E:348] Battlefield Forge -1 [PO2:157] Mountain +1 [M21:269] Mountain 1 [SOM:238] Swamp 1 [DDO:1] Elspeth, Sun's Champion -1 [JR:43] Bloodstained Mire -2 [MBP:98] Goblin Rabblemaster +1 [G09:6] Bloodstained Mire +2 [M15:145] Goblin Rabblemaster 1 [KTK:31] Wingmate Roc 2 [KTK:97] Arc Lightning 1 [9ED:320] Caves of Koilos @@ -35,14 +35,14 @@ 1 [TPR:262] Mountain SB: 1 [ULG:7] Erase SB: 1 [THS:15] Glare of Heresy -SB: 1 [MBP:75] Chandra, Pyromaster +SB: 1 [M15:134] Chandra, Pyromaster SB: 2 [THS:112] Anger of the Gods SB: 1 [THS:101] Read the Bones SB: 1 [KTK:104] Burn Away SB: 1 [THS:107] Thoughtseize SB: 1 [C14:158] Read the Bones SB: 1 [KTK:186] Mardu Charm -SB: 1 [MGDC:38] Utter End +SB: 1 [KTK:210] Utter End SB: 1 [KTK:9] Erase SB: 2 [KTK:8] End Hostilities SB: 1 [THS:9] Elspeth, Sun's Champion diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Saint WW TDtB ST Jan 2012.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Saint WW TDtB ST Jan 2012.mwDeck.dck index 81d1b5e28ee..32c468e7606 100644 --- a/Mage.Client/release/sample-decks/Decks to Beat/Saint WW TDtB ST Jan 2012.mwDeck.dck +++ b/Mage.Client/release/sample-decks/Decks to Beat/Saint WW TDtB ST Jan 2012.mwDeck.dck @@ -1,43 +1,43 @@ -1 [WMCQ:2] Geist of Saint Traft -2 [M12:18] Gideon's Lawkeeper -1 [M12:19] Grand Abolisher -3 [C13:11] Fiend Hunter -1 [ALA:20] Oblivion Ring -3 [C14:74] Grand Abolisher -2 [M10:16] Honor of the Pure -1 [POR:216] Plains -1 [M10:233] Plains -1 [M13:225] Glacial Fortress -4 [PTC:47] Hero of Bladehold -3 [ISD:11] Doomed Traveler -1 [DDK:2] Doomed Traveler -1 [DDN:81] Plains -1 [ODY:333] Plains -1 [DDI:40] Plains -3 [ISD:244] Moorland Haunt -1 [MBS:14] Mirran Crusader -1 [ALA:230] Plains -2 [M10:226] Glacial Fortress -1 [M12:227] Glacial Fortress -2 [MBP:32] Mirran Crusader -3 [M12:3] Angelic Destiny -1 [LRW:34] Oblivion Ring -1 [ZEN:232] Plains -1 [DDN:38] Plains -1 [HOP:145] Plains -1 [KTK:250] Plains -1 [MM2:25] Mirran Crusader -1 [ISD:251] Plains -4 [SOM:229] Seachrome Coast -1 [ISD:213] Geist of Saint Traft -2 [M12:23] Honor of the Pure -1 [ME3:220] Island -4 [ISD:6] Champion of the Parish -1 [AVR:231] Plains -SB: 2 [NPH:161] Sword of War and Peace -SB: 2 [NPH:57] Dismember -SB: 1 [M12:11] Celestial Purge -SB: 1 [MBS:115] Mortarpod -SB: 4 [M12:40] Timely Reinforcements -SB: 3 [M12:63] Mana Leak -SB: 2 [M15:71] Negate +1 [ISD:213] Geist of Saint Traft +2 [M12:18] Gideon's Lawkeeper +1 [M12:19] Grand Abolisher +3 [C13:11] Fiend Hunter +1 [ALA:20] Oblivion Ring +3 [C14:74] Grand Abolisher +2 [M10:16] Honor of the Pure +1 [POR:196] Plains +1 [M10:233] Plains +1 [M13:225] Glacial Fortress +4 [PMBS:8] Hero of Bladehold +3 [ISD:11] Doomed Traveler +1 [DDK:2] Doomed Traveler +1 [DDN:81] Plains +1 [ODY:333] Plains +1 [DDI:40] Plains +3 [ISD:244] Moorland Haunt +1 [MBS:14] Mirran Crusader +1 [ALA:230] Plains +2 [M10:226] Glacial Fortress +1 [M12:227] Glacial Fortress +2 [MBS:14] Mirran Crusader +3 [M12:3] Angelic Destiny +1 [LRW:34] Oblivion Ring +1 [ZEN:232] Plains +1 [DDN:38] Plains +1 [HOP:145] Plains +1 [KTK:250] Plains +1 [MM2:25] Mirran Crusader +1 [ISD:251] Plains +4 [SOM:229] Seachrome Coast +1 [ISD:213] Geist of Saint Traft +2 [M12:23] Honor of the Pure +1 [ME3:220] Island +4 [ISD:6] Champion of the Parish +1 [AVR:231] Plains +SB: 2 [NPH:161] Sword of War and Peace +SB: 2 [NPH:57] Dismember +SB: 1 [M12:11] Celestial Purge +SB: 1 [MBS:115] Mortarpod +SB: 4 [M12:40] Timely Reinforcements +SB: 3 [M12:63] Mana Leak +SB: 2 [M15:71] Negate diff --git a/Mage.Client/release/sample-decks/Duel Decks/Blessed vs. Cursed/Blessed.dck b/Mage.Client/release/sample-decks/Duel Decks/Blessed vs. Cursed/Blessed.dck index 49a6033d4f4..6bfd063f8d9 100644 --- a/Mage.Client/release/sample-decks/Duel Decks/Blessed vs. Cursed/Blessed.dck +++ b/Mage.Client/release/sample-decks/Duel Decks/Blessed vs. Cursed/Blessed.dck @@ -15,7 +15,7 @@ 1 [DDQ:16] Moorland Inquisitor 2 [DDQ:17] Rebuke 1 [DDQ:7] Doomed Traveler -4 [DDQ:35] Plains +4 [DDQ:38] Plains 1 [DDQ:32] Sharpened Pitchfork 1 [DDQ:6] Dearly Departed 1 [DDQ:14] Increasing Devotion @@ -24,16 +24,16 @@ 1 [DDQ:15] Momentary Blink 2 [DDQ:12] Gather the Townsfolk 1 [DDQ:4] Champion of the Parish -3 [DDQ:38] Island +3 [DDQ:35] Island 1 [DDQ:3] Cathedral Sanctifier 1 [DDQ:13] Goldnight Redeemer -2 [DDQ:39] Island -4 [DDQ:36] Plains +2 [DDQ:35] Island +4 [DDQ:38] Plains 1 [DDQ:10] Emancipation Angel 1 [DDQ:2] Bonds of Faith -4 [DDQ:37] Plains +4 [DDQ:38] Plains 1 [DDQ:11] Fiend Hunter 1 [DDQ:1] Geist of Saint Traft -2 [DDQ:40] Island +2 [DDQ:35] Island 1 [DDQ:31] Butcher's Cleaver 1 [DDQ:30] Tower Geist diff --git a/Mage.Client/release/sample-decks/Duel Decks/Blessed vs. Cursed/Cursed.dck b/Mage.Client/release/sample-decks/Duel Decks/Blessed vs. Cursed/Cursed.dck index 235b0f5df52..0b27c573857 100644 --- a/Mage.Client/release/sample-decks/Duel Decks/Blessed vs. Cursed/Cursed.dck +++ b/Mage.Client/release/sample-decks/Duel Decks/Blessed vs. Cursed/Cursed.dck @@ -15,19 +15,19 @@ 1 [DDQ:63] Sever the Bloodline 1 [DDQ:61] Human Frailty 2 [DDQ:62] Moan of the Unhallowed -3 [DDQ:38] Island -1 [DDQ:41] Mindbreaker Demon -3 [DDQ:39] Island +3 [DDQ:35] Island +1 [DDQ:41] Mindwrack Demon +3 [DDQ:35] Island 1 [DDQ:42] Compelling Deterrence 1 [DDQ:60] Harvester of Souls -2 [DDQ:40] Island +2 [DDQ:35] Island 1 [DDQ:46] Relentless Skaabs 1 [DDQ:45] Makeshift Mauler 1 [DDQ:44] Havengul Runebinder 1 [DDQ:69] Cobbled Wings 1 [DDQ:43] Forbidden Alchemy 2 [DDQ:68] Diregraf Captain -1 [SOI:997] Tooth Collector +1 [SOI:140] Tooth Collector 1 [DDQ:67] Victim of Night 2 [DDQ:49] Stitched Drake 1 [DDQ:66] Unbreathing Horde diff --git a/Mage.Client/release/sample-decks/Duel Decks/Elves vs. Goblins/Elves.dck b/Mage.Client/release/sample-decks/Duel Decks/Elves vs. Goblins/Elves.dck index 8b78427d777..cccbc3ff8fe 100644 --- a/Mage.Client/release/sample-decks/Duel Decks/Elves vs. Goblins/Elves.dck +++ b/Mage.Client/release/sample-decks/Duel Decks/Elves vs. Goblins/Elves.dck @@ -1,31 +1,31 @@ -2 [EVG:3] Elvish Eulogist -1 [EVG:26] Wirewood Lodge -1 [EVG:2] Allosaurus Rider -2 [EVG:27] Tranquil Thicket -3 [EVG:5] Elvish Warrior -3 [EVG:24] Moonglove Extract -1 [EVG:4] Elvish Harbinger -1 [EVG:25] Slate of Ancestry -4 [EVG:28] Forest -1 [EVG:1] Ambush Commander -5 [EVG:29] Forest -1 [EVG:22] Harmonize -1 [EVG:23] Wildsize -1 [EVG:20] Elvish Promenade -2 [EVG:21] Giant Growth -2 [EVG:8] Imperious Perfect -3 [EVG:9] Llanowar Elves -2 [EVG:6] Gempalm Strider -1 [EVG:7] Heedless One -1 [EVG:13] Timberwatch Elf -5 [EVG:31] Forest -1 [EVG:14] Voice of the Woods -2 [EVG:15] Wellwisher -1 [EVG:16] Wirewood Herald -1 [EVG:17] Wirewood Symbiote -2 [EVG:18] Wood Elves -5 [EVG:30] Forest -1 [EVG:19] Wren's Run Vanquisher -2 [EVG:10] Lys Alana Huntmaster -1 [EVG:11] Stonewood Invoker -1 [EVG:12] Sylvan Messenger +2 [DD1:3] Elvish Eulogist +1 [DD1:26] Wirewood Lodge +1 [DD1:2] Allosaurus Rider +2 [DD1:27] Tranquil Thicket +3 [DD1:5] Elvish Warrior +3 [DD1:24] Moonglove Extract +1 [DD1:4] Elvish Harbinger +1 [DD1:25] Slate of Ancestry +4 [DD1:28] Forest +1 [DD1:1] Ambush Commander +5 [DD1:29] Forest +1 [DD1:22] Harmonize +1 [DD1:23] Wildsize +1 [DD1:20] Elvish Promenade +2 [DD1:21] Giant Growth +2 [DD1:8] Imperious Perfect +3 [DD1:9] Llanowar Elves +2 [DD1:6] Gempalm Strider +1 [DD1:7] Heedless One +1 [DD1:13] Timberwatch Elf +5 [DD1:31] Forest +1 [DD1:14] Voice of the Woods +2 [DD1:15] Wellwisher +1 [DD1:16] Wirewood Herald +1 [DD1:17] Wirewood Symbiote +2 [DD1:18] Wood Elves +5 [DD1:30] Forest +1 [DD1:19] Wren's Run Vanquisher +2 [DD1:10] Lys Alana Huntmaster +1 [DD1:11] Stonewood Invoker +1 [DD1:12] Sylvan Messenger diff --git a/Mage.Client/release/sample-decks/Duel Decks/Elves vs. Goblins/Goblins.dck b/Mage.Client/release/sample-decks/Duel Decks/Elves vs. Goblins/Goblins.dck index a61a1b842f0..a79fad411d2 100644 --- a/Mage.Client/release/sample-decks/Duel Decks/Elves vs. Goblins/Goblins.dck +++ b/Mage.Client/release/sample-decks/Duel Decks/Elves vs. Goblins/Goblins.dck @@ -1,31 +1,31 @@ -2 [EVG:45] Mogg War Marshal -5 [EVG:62] Mountain -1 [EVG:44] Mogg Fanatic -5 [EVG:61] Mountain -1 [EVG:43] Ib Halfheart, Goblin Tactician -6 [EVG:60] Mountain -1 [EVG:42] Goblin Warchief -1 [EVG:41] Goblin Sledder -1 [EVG:40] Goblin Ringleader -2 [EVG:49] Skirk Drill Sergeant -1 [EVG:48] Reckless One -2 [EVG:47] Raging Goblin -2 [EVG:46] Mudbutton Torchrunner -1 [EVG:50] Skirk Fire Marshal -1 [EVG:32] Siege-Gang Commander -1 [EVG:52] Skirk Shaman -1 [EVG:34] Clickslither -1 [EVG:51] Skirk Prospector -1 [EVG:33] Akki Coalflinger -2 [EVG:54] Boggart Shenanigans -1 [EVG:53] Tar Pitcher -3 [EVG:56] Tarfire -1 [EVG:55] Spitting Earth -1 [EVG:58] Goblin Burrows -1 [EVG:57] Forgotten Cave -1 [EVG:39] Goblin Matron -6 [EVG:59] Mountain -1 [EVG:36] Flamewave Invoker -3 [EVG:35] Emberwilde Augur -3 [EVG:38] Goblin Cohort -1 [EVG:37] Gempalm Incinerator +2 [DD1:45] Mogg War Marshal +5 [DD1:62] Mountain +1 [DD1:44] Mogg Fanatic +5 [DD1:61] Mountain +1 [DD1:43] Ib Halfheart, Goblin Tactician +6 [DD1:60] Mountain +1 [DD1:42] Goblin Warchief +1 [DD1:41] Goblin Sledder +1 [DD1:40] Goblin Ringleader +2 [DD1:49] Skirk Drill Sergeant +1 [DD1:48] Reckless One +2 [DD1:47] Raging Goblin +2 [DD1:46] Mudbutton Torchrunner +1 [DD1:50] Skirk Fire Marshal +1 [DD1:32] Siege-Gang Commander +1 [DD1:52] Skirk Shaman +1 [DD1:34] Clickslither +1 [DD1:51] Skirk Prospector +1 [DD1:33] Akki Coalflinger +2 [DD1:54] Boggart Shenanigans +1 [DD1:53] Tar Pitcher +3 [DD1:56] Tarfire +1 [DD1:55] Spitting Earth +1 [DD1:58] Goblin Burrows +1 [DD1:57] Forgotten Cave +1 [DD1:39] Goblin Matron +6 [DD1:59] Mountain +1 [DD1:36] Flamewave Invoker +3 [DD1:35] Emberwilde Augur +3 [DD1:38] Goblin Cohort +1 [DD1:37] Gempalm Incinerator diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Affinity(1) 58 World Championship 2004 (San Francisco) ST 9-5-04.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Affinity(1) 58 World Championship 2004 (San Francisco) ST 9-5-04.dck index ea56b923cd0..49a215c6dc3 100644 --- a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Affinity(1) 58 World Championship 2004 (San Francisco) ST 9-5-04.dck +++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Affinity(1) 58 World Championship 2004 (San Francisco) ST 9-5-04.dck @@ -1,11 +1,11 @@ -1 [ATQ:88] Atog +1 [ATQ:23] Atog 2 [MRD:283] Seat of the Synod 3 [MMA:198] Arcbound Ravager 1 [HOP:136] Seat of the Synod 4 [MRD:62] Disciple of the Vault 4 [DST:91] Aether Vial 2 [MRD:286] Vault of Whispers -1 [FNMP:105] Myr Enforcer +1 [F09:2] Myr Enforcer 1 [DDF:40] Arcbound Worker 3 [HOP:110] Cranial Plating 2 [MRD:86] Atog diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Affinity(2) 58 World Championship 2004 (San Francisco) ST 9-5-04.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Affinity(2) 58 World Championship 2004 (San Francisco) ST 9-5-04.dck index 431d4219fa2..dd921c42c2a 100644 --- a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Affinity(2) 58 World Championship 2004 (San Francisco) ST 9-5-04.dck +++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Affinity(2) 58 World Championship 2004 (San Francisco) ST 9-5-04.dck @@ -12,7 +12,7 @@ 2 [7ED:327] City of Brass 1 [MRD:172] Frogmite 2 [INV:299] Chromatic Sphere -2 [GPX:3] Chrome Mox +2 [PGPX:2009] Chrome Mox 1 [MRD:151] Chromatic Sphere 1 [MRD:152] Chrome Mox 1 [5DN:113] Cranial Plating diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Astral Slide 1 World Championship 2004 (San Francisco) ST 9-5-04.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Astral Slide 1 World Championship 2004 (San Francisco) ST 9-5-04.dck index 96997d1ec60..53c1fc29913 100644 --- a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Astral Slide 1 World Championship 2004 (San Francisco) ST 9-5-04.dck +++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Astral Slide 1 World Championship 2004 (San Francisco) ST 9-5-04.dck @@ -4,7 +4,7 @@ 4 [CMD:152] Eternal Witness 7 [UNH:140] Forest 2 [CMD:3] Akroma's Vengeance -1 [FNMP:76] Astral Slide +1 [F06:9] Astral Slide 4 [KTK:248] Windswept Heath 4 [C14:316] Tranquil Thicket 4 [C13:27] Wrath of God @@ -19,8 +19,8 @@ SB: 2 [DST:79] Oxidize SB: 1 [5DN:92] Rude Awakening SB: 2 [UDS:117] Plow Under -SB: 2 [MPRP:7] Oxidize -SB: 2 [5ED:296] Circle of Protection: Red +SB: 2 [P05:4] Oxidize +SB: 2 [5ED:20] Circle of Protection: Red SB: 1 [MMA:160] Rude Awakening SB: 1 [9ED:11] Circle of Protection: Red SB: 1 [8ED:272] Plow Under diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Astral Slide 58 World Championship 2004 (San Francisco) ST 9-5-04.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Astral Slide 58 World Championship 2004 (San Francisco) ST 9-5-04.dck index 31dc11bd2c3..336207beba2 100644 --- a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Astral Slide 58 World Championship 2004 (San Francisco) ST 9-5-04.dck +++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Astral Slide 58 World Championship 2004 (San Francisco) ST 9-5-04.dck @@ -3,7 +3,7 @@ 4 [CMD:152] Eternal Witness 1 [ONS:4] Astral Slide 5 [UNH:140] Forest -2 [FNMP:76] Astral Slide +2 [F06:9] Astral Slide 1 [KTK:249] Wooded Foothills 2 [C13:119] Slice and Dice 4 [C14:316] Tranquil Thicket @@ -22,10 +22,10 @@ 8 [UNH:136] Plains SB: 1 [DST:79] Oxidize SB: 2 [UDS:117] Plow Under -SB: 2 [MPRP:7] Oxidize -SB: 1 [LEG:237] Relic Barrier +SB: 2 [P05:4] Oxidize +SB: 1 [LEG:292] Relic Barrier SB: 2 [5DN:147] Relic Barrier SB: 2 [SCG:23] Silver Knight SB: 2 [DST:146] Sundering Titan SB: 2 [8ED:272] Plow Under -SB: 1 [FNMP:46] Silver Knight +SB: 1 [F04:3] Silver Knight 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 6ffd8e665a5..5ea6c44efea 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 6005b7cf266..a925e4035e0 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 ade6c6d193f..6f605976c3c 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,11 +19,11 @@ 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 -2 [FNMP:118] Ancient Ziggurat +2 [F10:3] Ancient Ziggurat SB: 2 [10E:182] Terror SB: 2 [CMD:25] Path to Exile SB: 2 [ALA:218] Relic of Progenitus diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Doran Rock 1 World Championship 2007 (New York) ST 12-6-07.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Doran Rock 1 World Championship 2007 (New York) ST 12-6-07.dck index 2d885c39fed..87c8fdbaa8f 100644 --- a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Doran Rock 1 World Championship 2007 (New York) ST 12-6-07.dck +++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Doran Rock 1 World Championship 2007 (New York) ST 12-6-07.dck @@ -23,7 +23,7 @@ 4 [LRW:268] Gilt-Leaf Palace SB: 2 [C14:247] Loxodon Warhammer SB: 2 [LRW:250] Nath of the Gilt-Leaf -SB: 1 [HML:135] Serrated Arrows +SB: 1 [HML:110] Serrated Arrows SB: 2 [TSB:48] Stupor SB: 1 [TSB:114] Serrated Arrows SB: 3 [FUT:136] Riftsweeper diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Dragonstorm 1 World Championship 2006 (Paris) ST 12-3-06.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Dragonstorm 1 World Championship 2006 (Paris) ST 12-3-06.dck index 002549392a0..6cc07964d07 100644 --- a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Dragonstorm 1 World Championship 2006 (Paris) ST 12-3-06.dck +++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Dragonstorm 1 World Championship 2006 (Paris) ST 12-3-06.dck @@ -12,7 +12,7 @@ 4 [RTR:247] Steam Vents 1 [TSP:270] Calciform Pools 4 [C14:173] Bogardan Hellkite -1 [PO2:46] Sleight of Hand +1 [9ED:99] Sleight of Hand 2 [TSB:60] Dragonstorm 2 [9ED:99] Sleight of Hand 8 [UNH:137] Island diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Faeries 58 PT Hollywood ST 5-25-08.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Faeries 58 PT Hollywood ST 5-25-08.dck index 150ce6b0183..4e8f1a25d79 100644 --- a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Faeries 58 PT Hollywood ST 5-25-08.dck +++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Faeries 58 PT Hollywood ST 5-25-08.dck @@ -3,7 +3,7 @@ 4 [LRW:89] Spellstutter Sprite 4 [LRW:56] Cryptic Command 3 [FUT:179] River of Tears -1 [FNMP:96] Pendelhaven +1 [F08:5] Pendelhaven 1 [TSB:120] Pendelhaven 4 [10E:362] Underground River 2 [SHM:280] Sunken Ruins diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/GB Elves 34 PT Hollywood ST 5-25-08.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/GB Elves 34 PT Hollywood ST 5-25-08.dck index 6865f55ee9f..626fac68971 100644 --- a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/GB Elves 34 PT Hollywood ST 5-25-08.dck +++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/GB Elves 34 PT Hollywood ST 5-25-08.dck @@ -1,4 +1,4 @@ -1 [LEG:250] Pendelhaven +1 [LEG:305] Pendelhaven 3 [UNH:140] Forest 4 [CMD:157] Garruk Wildspeaker 4 [10E:361] Treetop Village 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 76629698819..e12be5b6080 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)/Heartbeat 58 PT Honolulu ST 3-5-06.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Heartbeat 58 PT Honolulu ST 3-5-06.dck index c012292208f..be2ec741c79 100644 --- a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Heartbeat 58 PT Honolulu ST 3-5-06.dck +++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Heartbeat 58 PT Honolulu ST 3-5-06.dck @@ -12,7 +12,7 @@ 4 [CNS:177] Sakura-Tribe Elder 1 [UNH:139] Mountain 1 [C14:102] Compulsive Research -2 [MIR:111] Early Harvest +2 [MIR:213] Early Harvest 1 [10E:70] Boomerang 1 [DDJ:31] Invoke the Firemind 10 [UNH:137] Island diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Izzetron 58 PT Honolulu ST 3-5-06.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Izzetron 58 PT Honolulu ST 3-5-06.dck index 0ffe78a74ab..078b6b7bc79 100644 --- a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Izzetron 58 PT Honolulu ST 3-5-06.dck +++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Izzetron 58 PT Honolulu ST 3-5-06.dck @@ -11,22 +11,22 @@ 2 [8ED:330] Urza's Tower 1 [10E:190] Blaze 4 [RAV:63] Remand -1 [ATQ:75] Urza's Mine +1 [ATQ:83a] Urza's Mine 2 [M11:154] Pyroclasm 2 [10E:114] Telling Time -2 [ME4:258] Urza's Power Plant -1 [ME4:257] Urza's Mine +2 [ME4:258a] Urza's Power Plant +1 [ME4:257a] Urza's Mine 4 [CHK:74] Meloku the Clouded Mirror 1 [10E:116] Tidings -1 [ME4:259] Urza's Tower +1 [ME4:259a] Urza's Tower 4 [CHK:72] Keiga, the Tide Star 1 [DDJ:31] Invoke the Firemind -2 [5ED:448] Urza's Power Plant +2 [5ED:428] Urza's Power Plant 1 [8ED:328] Urza's Mine 4 [M12:63] Mana Leak SB: 4 [GPT:143] Giant Solifuge SB: 1 [GPT:32] Repeal -SB: 1 [CHK:185] Ryusei, The Falling Star +SB: 1 [CHK:185] Ryusei, the Falling Star SB: 1 [DDN:72] Repeal SB: 2 [ONS:63] Annex SB: 2 [M11:154] Pyroclasm diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Mono Red Aggro 58 PT San Diego ST 2-21-10.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Mono Red Aggro 58 PT San Diego ST 2-21-10.dck index 3121ad3ad36..b60bffedd3d 100644 --- a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Mono Red Aggro 58 PT San Diego ST 2-21-10.dck +++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Mono Red Aggro 58 PT San Diego ST 2-21-10.dck @@ -4,7 +4,7 @@ 4 [M11:149] Lightning Bolt 4 [ZEN:211] Arid Mesa 4 [ALA:103] Hell's Thunder -1 [GRC:25] Hellspark Elemental +1 [CON:65] Hellspark Elemental 13 [UNH:139] Mountain 3 [CMD:121] Earthquake 1 [CON:65] Hellspark Elemental 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 97d8461373d..0bc7606aba3 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 @@ -10,14 +10,14 @@ 2 [UNH:139] Mountain 4 [ARB:50] Bloodbraid Elf 2 [MM2:151] Noble Hierarch -2 [FNMP:118] Ancient Ziggurat +2 [F10:3] Ancient Ziggurat 4 [ZEN:168] Lotus Cobra 1 [ALA:154] Ajani Vengeant 4 [ZEN:126] Goblin Guide 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)/Owling Mine 34 PT Honolulu ST 3-5-06.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Owling Mine 34 PT Honolulu ST 3-5-06.dck index 8e3c8f2cdd4..daae67cbef6 100644 --- a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Owling Mine 34 PT Honolulu ST 3-5-06.dck +++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Owling Mine 34 PT Honolulu ST 3-5-06.dck @@ -5,7 +5,7 @@ 4 [RTR:247] Steam Vents 2 [PTK:42] Exhaustion 2 [UNH:139] Mountain -1 [POR:42] Balance of Power +1 [POR:41] Balance of Power 2 [SOK:162] Mikokoro, Center of the Sea 4 [SOK:154] Ebony Owl Netsuke 4 [RAV:63] Remand @@ -15,9 +15,9 @@ 4 [10E:241] Sudden Impact 1 [USG:74] Exhaustion 4 [M15:246] Shivan Reef -1 [PO2:46] Sleight of Hand +1 [9ED:99] Sleight of Hand SB: 4 [BOK:56] Threads of Disloyalty -SB: 1 [DRK:57] Blood Moon +SB: 1 [DRK:58] Blood Moon SB: 1 [9ED:176] Blood Moon SB: 3 [M12:63] Mana Leak SB: 2 [CHK:74] Meloku the Clouded Mirror diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Rock(1) 58 World Championship 2007 (New York) ST 12-6-07.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Rock(1) 58 World Championship 2007 (New York) ST 12-6-07.dck index d238b630ef7..526b44cadc1 100644 --- a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Rock(1) 58 World Championship 2007 (New York) ST 12-6-07.dck +++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Rock(1) 58 World Championship 2007 (New York) ST 12-6-07.dck @@ -1,6 +1,6 @@ 1 [C14:247] Loxodon Warhammer 2 [M12:165] Birds of Paradise -1 [LEG:250] Pendelhaven +1 [LEG:305] Pendelhaven 2 [CSP:153] Snow-Covered Swamp 1 [ME2:243] Snow-Covered Swamp 3 [M15:103] Liliana Vess diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Rock(2) 58 World Championship 2007 (New York) ST 12-6-07.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Rock(2) 58 World Championship 2007 (New York) ST 12-6-07.dck index f43c1aeb5d2..621e6fc143d 100644 --- a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Rock(2) 58 World Championship 2007 (New York) ST 12-6-07.dck +++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Rock(2) 58 World Championship 2007 (New York) ST 12-6-07.dck @@ -2,7 +2,7 @@ 1 [LRW:250] Nath of the Gilt-Leaf 4 [M12:165] Birds of Paradise 3 [UNH:138] Swamp -1 [LEG:250] Pendelhaven +1 [LEG:305] Pendelhaven 1 [FUT:91] Tombstalker 1 [LRW:128] Nameless Inversion 4 [FUT:153] Tarmogoyf diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Seasons Past Control Pro Tour SOI 2016 Jon Finkel.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Seasons Past Control Pro Tour SOI 2016 Jon Finkel.dck index c28131c9926..d4017a10189 100644 --- a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Seasons Past Control Pro Tour SOI 2016 Jon Finkel.dck +++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Seasons Past Control Pro Tour SOI 2016 Jon Finkel.dck @@ -3,7 +3,7 @@ NAME:Seasons Past Control Pro Tour SOI 2016 Jon Finkel 4 [ORI:105] Languish 4 [SOM:65] Grasp of Darkness 2 [OGW:86] Kalitas, Traitor of Ghet -5 [ZEN:266] Forest +5 [ZEN:246a] Forest 2 [APC:141] Llanowar Wastes 3 [DDO:58] Evolving Wilds 1 [BFZ:180] Nissa's Renewal diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Snow Mana Ramp 58 PT Hollywood ST 5-25-08.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Snow Mana Ramp 58 PT Hollywood ST 5-25-08.dck index 075f8f6ada0..e226b631906 100644 --- a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Snow Mana Ramp 58 PT Hollywood ST 5-25-08.dck +++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Snow Mana Ramp 58 PT Hollywood ST 5-25-08.dck @@ -5,14 +5,14 @@ 5 [ME2:245] Snow-Covered Forest 2 [FUT:144] Edge of Autumn 4 [SHM:229] Kitchen Finks -2 [FNMP:98] Wall of Roots -1 [MIR:151] Wall of Roots +2 [F08:7] Wall of Roots +1 [MIR:253] Wall of Roots 3 [CSP:148] Mouth of Ronom 2 [CSP:147] Highland Weald 1 [SHM:252] Grim Poppet 1 [ARC:73] Wall of Roots 4 [FUT:176] Grove of the Burnwillows -3 [ICE:347] Snow-Covered Forest +3 [ICE:383] Snow-Covered Forest 2 [CSP:155] Snow-Covered Forest 4 [CMD:199] Firespout 4 [MOR:116] Chameleon Colossus 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 82458d9d4d6..da131819d1d 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 @@ -2,11 +2,11 @@ 2 [8ED:272] Plow Under 1 [UDS:118] Rofellos, Llanowar Emissary 4 [M12:165] Birds of Paradise -4 [NMS:119] Skyshroud Poacher +4 [NEM:119] Skyshroud Poacher 2 [UDS:117] Plow Under -4 [NMS:139] Tangle Wire +4 [NEM: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 @@ -22,6 +22,6 @@ SB: 4 [UDS:140] Thran Foundry SB: 2 [BOK:146] Splinter SB: 1 [DDE:29] Phyrexian Processor SB: 1 [UNH:140] Forest -SB: 2 [VIS:73] Uktabi Orangutan -SB: 1 [MIR:153] Worldly Tutor -SB: 2 [NMS:111] Reverent Silence +SB: 2 [VIS:123] Uktabi Orangutan +SB: 1 [MIR:255] Worldly Tutor +SB: 2 [NEM:111] Reverent Silence 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 2c6ef40ba58..7be83dd13b8 100644 --- a/Mage.Client/src/main/java/mage/client/cards/DragCardGrid.java +++ b/Mage.Client/src/main/java/mage/client/cards/DragCardGrid.java @@ -1504,29 +1504,103 @@ public class DragCardGrid extends JPanel implements DragCardSource, DragCardTarg JOptionPane.YES_NO_OPTION) == JOptionPane.NO_OPTION) { return; } - + // TODO: Why are these a HashMap? It can be a HashSet instead, as the value is never used in the code. Map pimpedSets = new HashMap<>(); Map pimpedCards = new HashMap<>(); - pimpedSets.put("CP", 1); - pimpedSets.put("JR", 1); + pimpedSets.put("PCMP", 1); pimpedSets.put("MPS", 1); - pimpedSets.put("CLASH", 1); - pimpedSets.put("ARENA", 1); - pimpedSets.put("UGIN", 1); - pimpedSets.put("WMCQ", 1); - pimpedSets.put("APAC", 1); - pimpedSets.put("EURO", 1); - pimpedSets.put("FNMP", 1); - pimpedSets.put("MGDC", 1); - pimpedSets.put("MPRP", 1); + pimpedSets.put("MP2", 1); pimpedSets.put("EXP", 1); - pimpedSets.put("GPX", 1); - pimpedSets.put("GRC", 1); - pimpedSets.put("MBP", 1); - pimpedSets.put("MLP", 1); + pimpedSets.put("CP1", 1); + pimpedSets.put("CP2", 1); + pimpedSets.put("CP3", 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); + pimpedSets.put("PAL00", 1); + pimpedSets.put("PAL01", 1); + pimpedSets.put("PAL02", 1); + pimpedSets.put("PAL03", 1); + pimpedSets.put("PAL04", 1); + pimpedSets.put("PAL05", 1); + pimpedSets.put("PAL06", 1); + + pimpedSets.put("UGIN", 1); + pimpedSets.put("PALP", 1); + pimpedSets.put("PELP", 1); + + //Friday Night Magic + pimpedSets.put("FNM", 1); + pimpedSets.put("F01", 1); + pimpedSets.put("F02", 1); + pimpedSets.put("F03", 1); + pimpedSets.put("F04", 1); + pimpedSets.put("F05", 1); + pimpedSets.put("F06", 1); + pimpedSets.put("F07", 1); + pimpedSets.put("F08", 1); + pimpedSets.put("F09", 1); + pimpedSets.put("F10", 1); + pimpedSets.put("F11", 1); + pimpedSets.put("F12", 1); + pimpedSets.put("F13", 1); + pimpedSets.put("F14", 1); + pimpedSets.put("F15", 1); + pimpedSets.put("F16", 1); + pimpedSets.put("F17", 1); + pimpedSets.put("F18", 1); + + // Magic Player Rewards 2001-2011, except for 2002 (P02), which only contains tokens + pimpedSets.put("MPR", 1); + pimpedSets.put("P03", 1); + pimpedSets.put("P04", 1); + pimpedSets.put("P05", 1); + pimpedSets.put("P06", 1); + pimpedSets.put("P07", 1); + pimpedSets.put("P08", 1); + pimpedSets.put("P09", 1); + pimpedSets.put("P10", 1); + pimpedSets.put("P11", 1); + + pimpedSets.put("OVNT", 1); // Vintage Championship + pimpedSets.put("PREL", 1); // Release Events + pimpedSets.put("PJSE", 1); // Junior Series Europe + pimpedSets.put("P2HG", 1); // Two-Headed Giant Tournament + pimpedSets.put("PGTW", 1); // Gateway 2006 + pimpedSets.put("PJAS", 1); // Junior APAC Series + + pimpedSets.put("EXP", 1); + pimpedSets.put("PGPX", 1); + pimpedSets.put("PMEI", 1); + pimpedSets.put("PREL", 1); pimpedSets.put("PLS", 1); - pimpedSets.put("PTC", 1); - pimpedSets.put("SUS", 1); + pimpedSets.put("PPRE", 1); String[] sets = pimpedSets.keySet().toArray(new String[pimpedSets.keySet().size()]); Boolean didModify = false; diff --git a/Mage.Client/src/main/java/mage/client/components/LegalityLabel.java b/Mage.Client/src/main/java/mage/client/components/LegalityLabel.java index 9d0a70b4bbd..2998015766b 100644 --- a/Mage.Client/src/main/java/mage/client/components/LegalityLabel.java +++ b/Mage.Client/src/main/java/mage/client/components/LegalityLabel.java @@ -187,7 +187,7 @@ public class LegalityLabel extends JLabel { } try { StringBuilder errorMessages = new StringBuilder(); - Deck deck = Deck.load(DeckImporter.importDeckFromFile(deckFile.getAbsolutePath(), errorMessages), true, true); + Deck deck = Deck.load(DeckImporter.importDeckFromFile(deckFile.getAbsolutePath(), errorMessages, false), true, true); errorMessage = errorMessages.toString(); validateDeck(deck); } catch (Exception ex) { diff --git a/Mage.Client/src/main/java/mage/client/deckeditor/DeckEditorPanel.java b/Mage.Client/src/main/java/mage/client/deckeditor/DeckEditorPanel.java index be08f0511ba..887c193764d 100644 --- a/Mage.Client/src/main/java/mage/client/deckeditor/DeckEditorPanel.java +++ b/Mage.Client/src/main/java/mage/client/deckeditor/DeckEditorPanel.java @@ -187,11 +187,9 @@ public class DeckEditorPanel extends javax.swing.JPanel { case SIDEBOARDING: this.btnSubmit.setVisible(true); this.btnSubmitTimer.setVisible(true); - if (mode == DeckEditorMode.SIDEBOARDING) { - this.deckArea.setOrientation(/*limitedBuildingOrientation = */false); - } else /*(if (mode == LIMITED_BUILDING)*/ { - this.deckArea.setOrientation(/*limitedBuildingOrientation = */true); - } + /*(if (mode == LIMITED_BUILDING)*/ + /*limitedBuildingOrientation = */ + this.deckArea.setOrientation(/*limitedBuildingOrientation = */mode != DeckEditorMode.SIDEBOARDING); this.cardSelector.setVisible(false); this.btnExit.setVisible(false); this.btnImport.setVisible(false); @@ -479,14 +477,14 @@ public class DeckEditorPanel extends javax.swing.JPanel { @Override protected boolean handleFilesDrop(boolean move, List files) { - loadDeck(files.get(0).getAbsolutePath()); + loadDeck(files.get(0).getAbsolutePath(), true); return true; } @Override protected boolean handlePlainTextDrop(boolean move, String text) { String tmpFile = DeckUtil.writeTextToTempFile(text); - loadDeck(tmpFile); + loadDeck(tmpFile, false); return true; } })); @@ -679,7 +677,7 @@ public class DeckEditorPanel extends javax.swing.JPanel { StringBuilder errorMessages = new StringBuilder(); Deck newDeck = null; - newDeck = Deck.load(importer.importDeck(file.getPath(), errorMessages)); + newDeck = Deck.load(importer.importDeck(file.getPath(), errorMessages, true)); // file will be auto-fixed and saved on simple errors processAndShowImportErrors(errorMessages); if (newDeck != null) { @@ -711,7 +709,7 @@ public class DeckEditorPanel extends javax.swing.JPanel { dialog.showDialog(); if (!dialog.getTmpPath().isEmpty()) { - loadDeck(dialog.getTmpPath()); + loadDeck(dialog.getTmpPath(), false); } } @@ -725,7 +723,7 @@ public class DeckEditorPanel extends javax.swing.JPanel { MageFrame.getDesktop().setCursor(new Cursor(Cursor.WAIT_CURSOR)); try { - deckToAppend = Deck.load(DeckImporter.importDeckFromFile(dialog.getTmpPath(), errorMessages), true, true); + deckToAppend = Deck.load(DeckImporter.importDeckFromFile(dialog.getTmpPath(), errorMessages, false), true, true); processAndShowImportErrors(errorMessages); if (deckToAppend != null) { @@ -819,11 +817,11 @@ public class DeckEditorPanel extends javax.swing.JPanel { } } - private boolean loadDeck(String file) { + private boolean loadDeck(String file, boolean saveAutoFixedFile) { MageFrame.getDesktop().setCursor(new Cursor(Cursor.WAIT_CURSOR)); try { StringBuilder errorMessages = new StringBuilder(); - Deck newDeck = Deck.load(DeckImporter.importDeckFromFile(file, errorMessages), true, true); + Deck newDeck = Deck.load(DeckImporter.importDeckFromFile(file, errorMessages, saveAutoFixedFile), true, true); processAndShowImportErrors(errorMessages); if (newDeck != null) { @@ -1343,7 +1341,7 @@ public class DeckEditorPanel extends javax.swing.JPanel { Deck newDeck = null; StringBuilder errorMessages = new StringBuilder(); - newDeck = Deck.load(DeckImporter.importDeckFromFile(file.getPath(), errorMessages), true, true); + newDeck = Deck.load(DeckImporter.importDeckFromFile(file.getPath(), errorMessages, true), true, true); processAndShowImportErrors(errorMessages); if (newDeck != null) { @@ -1394,7 +1392,7 @@ public class DeckEditorPanel extends javax.swing.JPanel { try { MageFrame.getDesktop().setCursor(new Cursor(Cursor.WAIT_CURSOR)); String path = DeckGenerator.generateDeck(); - deck = Deck.load(DeckImporter.importDeckFromFile(path), true, true); + deck = Deck.load(DeckImporter.importDeckFromFile(path, false), true, true); } catch (GameException ex) { JOptionPane.showMessageDialog(MageFrame.getDesktop(), ex.getMessage(), "Error loading generated deck", JOptionPane.ERROR_MESSAGE); } catch (DeckGeneratorException ex) { diff --git a/Mage.Client/src/main/java/mage/client/dialog/DownloadImagesDialog.form b/Mage.Client/src/main/java/mage/client/dialog/DownloadImagesDialog.form index 2ab6699220e..420011de615 100644 --- a/Mage.Client/src/main/java/mage/client/dialog/DownloadImagesDialog.form +++ b/Mage.Client/src/main/java/mage/client/dialog/DownloadImagesDialog.form @@ -20,7 +20,7 @@ - + @@ -223,14 +223,14 @@ - + - + @@ -258,7 +258,47 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -368,10 +408,10 @@ - + - + @@ -379,7 +419,7 @@ - + diff --git a/Mage.Client/src/main/java/mage/client/dialog/DownloadImagesDialog.java b/Mage.Client/src/main/java/mage/client/dialog/DownloadImagesDialog.java index f6877c8eff4..cbf581d0c00 100644 --- a/Mage.Client/src/main/java/mage/client/dialog/DownloadImagesDialog.java +++ b/Mage.Client/src/main/java/mage/client/dialog/DownloadImagesDialog.java @@ -19,9 +19,9 @@ public class DownloadImagesDialog extends MageDialog { public static final int RET_CANCEL = 0; public static final int RET_OK = 1; - private Dimension sizeModeMessageOnly; - private Dimension sizeModeMessageAndControls; - private Map actionsControlStates = new HashMap<>(); + private final Dimension sizeModeMessageOnly; + private final Dimension sizeModeMessageAndControls; + private final Map actionsControlStates = new HashMap<>(); /** @@ -34,9 +34,9 @@ public class DownloadImagesDialog extends MageDialog { // fix for panelInfo (it's resets aligmentX after netbeans designer opened) panelInfo.setAlignmentX(CENTER_ALIGNMENT); - // save default sizes + // save default sizes (WARNING, you must sync it manually with designer sizes) // - this.sizeModeMessageAndControls = new Dimension(580, 330); // dialog -> properties -> designer size + this.sizeModeMessageAndControls = new Dimension(716, 329); // dialog -> properties -> code tab -> designer size // this.sizeModeMessageOnly = new Dimension(this.sizeModeMessageAndControls.getSize()); sizeModeMessageOnly.height = 25 * 4; @@ -95,6 +95,10 @@ public class DownloadImagesDialog extends MageDialog { return this.comboLanguage; } + public JComboBox getDownloadThreadsCombo() { + return this.comboDownloadThreads; + } + public JComboBox getSetsCombo() { return this.comboSets; } @@ -142,6 +146,7 @@ public class DownloadImagesDialog extends MageDialog { enableActionControl(enable, comboSets); enableActionControl(enable, buttonSearchSet); enableActionControl(enable, comboLanguage); + enableActionControl(enable, comboDownloadThreads); enableActionControl(enable, checkboxRedownload); } @@ -214,9 +219,12 @@ public class DownloadImagesDialog extends MageDialog { panelSourceLeft = new javax.swing.JPanel(); labelSource = new javax.swing.JLabel(); comboSource = new javax.swing.JComboBox<>(); - panelSourceRight = new javax.swing.JPanel(); + panelSourceCenter = new javax.swing.JPanel(); labelLanguage = new javax.swing.JLabel(); comboLanguage = new javax.swing.JComboBox<>(); + panelSourceRight = new javax.swing.JPanel(); + labelDownloadThreads = new javax.swing.JLabel(); + comboDownloadThreads = new javax.swing.JComboBox<>(); panelMode = new javax.swing.JPanel(); panelModeInner = new javax.swing.JPanel(); labelMode = new javax.swing.JLabel(); @@ -295,19 +303,33 @@ public class DownloadImagesDialog extends MageDialog { panelSource.add(panelSourceLeft); - panelSourceRight.setAlignmentX(0.0F); - panelSourceRight.setMaximumSize(new java.awt.Dimension(130, 32767)); - panelSourceRight.setMinimumSize(new java.awt.Dimension(130, 30)); - panelSourceRight.setPreferredSize(new java.awt.Dimension(130, 100)); - panelSourceRight.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEADING)); + panelSourceCenter.setAlignmentX(0.0F); + panelSourceCenter.setMaximumSize(new java.awt.Dimension(130, 32767)); + panelSourceCenter.setMinimumSize(new java.awt.Dimension(130, 10)); + panelSourceCenter.setPreferredSize(new java.awt.Dimension(130, 100)); + panelSourceCenter.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEADING)); labelLanguage.setText("Language:"); - panelSourceRight.add(labelLanguage); + panelSourceCenter.add(labelLanguage); comboLanguage.setMaximumRowCount(15); comboLanguage.setModel(new javax.swing.DefaultComboBoxModel<>(new String[]{"Item 1", "Item 2", "Item 3", "Item 4"})); - comboLanguage.setPreferredSize(new java.awt.Dimension(90, 25)); - panelSourceRight.add(comboLanguage); + comboLanguage.setPreferredSize(new java.awt.Dimension(110, 25)); + panelSourceCenter.add(comboLanguage); + + panelSource.add(panelSourceCenter); + + panelSourceRight.setMinimumSize(new java.awt.Dimension(150, 30)); + panelSourceRight.setPreferredSize(new java.awt.Dimension(150, 35)); + panelSourceRight.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEADING)); + + labelDownloadThreads.setText("Download threads:"); + panelSourceRight.add(labelDownloadThreads); + + comboDownloadThreads.setMaximumRowCount(15); + comboDownloadThreads.setModel(new javax.swing.DefaultComboBoxModel<>(new String[]{"Item 1", "Item 2", "Item 3", "Item 4"})); + comboDownloadThreads.setPreferredSize(new java.awt.Dimension(110, 25)); + panelSourceRight.add(comboDownloadThreads); panelSource.add(panelSourceRight); @@ -350,11 +372,11 @@ public class DownloadImagesDialog extends MageDialog { panelRedownload.setAlignmentX(0.0F); panelRedownload.setMaximumSize(new java.awt.Dimension(130, 32767)); - panelRedownload.setMinimumSize(new java.awt.Dimension(130, 30)); - panelRedownload.setPreferredSize(new java.awt.Dimension(130, 100)); + panelRedownload.setMinimumSize(new java.awt.Dimension(280, 30)); + panelRedownload.setPreferredSize(new java.awt.Dimension(280, 100)); panelRedownload.setLayout(new java.awt.BorderLayout()); - checkboxRedownload.setText("Re-download selected images"); + checkboxRedownload.setText("Re-download all images"); checkboxRedownload.setVerticalAlignment(javax.swing.SwingConstants.BOTTOM); panelRedownload.add(checkboxRedownload, java.awt.BorderLayout.CENTER); panelRedownload.add(filler1, java.awt.BorderLayout.PAGE_END); @@ -431,6 +453,7 @@ public class DownloadImagesDialog extends MageDialog { private javax.swing.JButton buttonSearchSet; private javax.swing.JButton buttonStop; private javax.swing.JCheckBox checkboxRedownload; + private javax.swing.JComboBox comboDownloadThreads; private javax.swing.JComboBox comboLanguage; private javax.swing.JComboBox comboSets; private javax.swing.JComboBox comboSource; @@ -444,6 +467,7 @@ public class DownloadImagesDialog extends MageDialog { private javax.swing.Box.Filler fillerProgress1; private javax.swing.Box.Filler fillerProgress2; private javax.swing.Box.Filler fillerglobal2; + private javax.swing.JLabel labelDownloadThreads; private javax.swing.JLabel labelGlobal; private javax.swing.JLabel labelInfo; private javax.swing.JLabel labelLanguage; @@ -458,6 +482,7 @@ public class DownloadImagesDialog extends MageDialog { private javax.swing.JPanel panelProgress; private javax.swing.JPanel panelRedownload; private javax.swing.JPanel panelSource; + private javax.swing.JPanel panelSourceCenter; private javax.swing.JPanel panelSourceLeft; private javax.swing.JPanel panelSourceRight; private javax.swing.JProgressBar progress; diff --git a/Mage.Client/src/main/java/mage/client/dialog/JoinTableDialog.java b/Mage.Client/src/main/java/mage/client/dialog/JoinTableDialog.java index 5d4e19e7642..f95da5a77f7 100644 --- a/Mage.Client/src/main/java/mage/client/dialog/JoinTableDialog.java +++ b/Mage.Client/src/main/java/mage/client/dialog/JoinTableDialog.java @@ -1,4 +1,3 @@ - package mage.client.dialog; import mage.cards.decks.importer.DeckImporter; @@ -12,7 +11,6 @@ import javax.swing.*; import java.util.UUID; /** - * * @author BetaSteward_at_googlemail.com */ public class JoinTableDialog extends MageDialog { @@ -24,7 +22,9 @@ public class JoinTableDialog extends MageDialog { private boolean joined = false; private boolean isTournament; - /** Creates new form JoinTableDialog */ + /** + * Creates new form JoinTableDialog + */ public JoinTableDialog() { initComponents(); newPlayerPanel.showLevel(false); @@ -43,7 +43,8 @@ public class JoinTableDialog extends MageDialog { } - /** This method is called from within the constructor to + /** + * This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. @@ -73,37 +74,37 @@ public class JoinTableDialog extends MageDialog { javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( - layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addContainerGap() - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() - .addGap(0, 0, Short.MAX_VALUE) - .addComponent(btnOK) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(btnCancel)) - .addComponent(newPlayerPanel, javax.swing.GroupLayout.DEFAULT_SIZE, 414, Short.MAX_VALUE) - .addGroup(layout.createSequentialGroup() - .addComponent(lblPassword) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(txtPassword, javax.swing.GroupLayout.PREFERRED_SIZE, 120, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGap(0, 0, Short.MAX_VALUE))) - .addContainerGap()) + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addContainerGap() + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() + .addGap(0, 0, Short.MAX_VALUE) + .addComponent(btnOK) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(btnCancel)) + .addComponent(newPlayerPanel, javax.swing.GroupLayout.DEFAULT_SIZE, 414, Short.MAX_VALUE) + .addGroup(layout.createSequentialGroup() + .addComponent(lblPassword) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(txtPassword, javax.swing.GroupLayout.PREFERRED_SIZE, 120, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(0, 0, Short.MAX_VALUE))) + .addContainerGap()) ); layout.setVerticalGroup( - layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() - .addContainerGap() - .addComponent(newPlayerPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(lblPassword) - .addComponent(txtPassword, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(btnCancel) - .addComponent(btnOK)) - .addContainerGap()) + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() + .addContainerGap() + .addComponent(newPlayerPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(lblPassword) + .addComponent(txtPassword, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(btnCancel) + .addComponent(btnOK)) + .addContainerGap()) ); pack(); @@ -119,11 +120,11 @@ public class JoinTableDialog extends MageDialog { try { PreferencesDialog.saveValue(PreferencesDialog.KEY_NEW_TABLE_PASSWORD_JOIN, txtPassword.getText()); if (isTournament) { - joined = session.joinTournamentTable(roomId, tableId, this.newPlayerPanel.getPlayerName(), PlayerType.HUMAN, 1, DeckImporter.importDeckFromFile(this.newPlayerPanel.getDeckFile()), this.txtPassword.getText()); + joined = session.joinTournamentTable(roomId, tableId, this.newPlayerPanel.getPlayerName(), PlayerType.HUMAN, 1, DeckImporter.importDeckFromFile(this.newPlayerPanel.getDeckFile(), true), this.txtPassword.getText()); } else { - joined = session.joinTable(roomId, tableId, this.newPlayerPanel.getPlayerName(), PlayerType.HUMAN, 1, DeckImporter.importDeckFromFile(this.newPlayerPanel.getDeckFile()), this.txtPassword.getText()); + joined = session.joinTable(roomId, tableId, this.newPlayerPanel.getPlayerName(), PlayerType.HUMAN, 1, DeckImporter.importDeckFromFile(this.newPlayerPanel.getDeckFile(), true), this.txtPassword.getText()); } - + } catch (Exception ex) { handleError(ex); } diff --git a/Mage.Client/src/main/java/mage/client/dialog/NewTableDialog.java b/Mage.Client/src/main/java/mage/client/dialog/NewTableDialog.java index a905c849265..0e063c2f5a8 100644 --- a/Mage.Client/src/main/java/mage/client/dialog/NewTableDialog.java +++ b/Mage.Client/src/main/java/mage/client/dialog/NewTableDialog.java @@ -525,7 +525,7 @@ public class NewTableDialog extends MageDialog { table.getTableId(), this.player1Panel.getPlayerName(), PlayerType.HUMAN, 1, - DeckImporter.importDeckFromFile(this.player1Panel.getDeckFile()), + DeckImporter.importDeckFromFile(this.player1Panel.getDeckFile(), true), this.txtPassword.getText())) { for (TablePlayerPanel player : players) { if (player.getPlayerType() != PlayerType.HUMAN) { diff --git a/Mage.Client/src/main/java/mage/client/dialog/NewTournamentDialog.java b/Mage.Client/src/main/java/mage/client/dialog/NewTournamentDialog.java index 2e4b980870a..496a8a30516 100644 --- a/Mage.Client/src/main/java/mage/client/dialog/NewTournamentDialog.java +++ b/Mage.Client/src/main/java/mage/client/dialog/NewTournamentDialog.java @@ -687,11 +687,11 @@ public class NewTournamentDialog extends MageDialog { table.getTableId(), this.player1Panel.getPlayerName(), PlayerType.HUMAN, 1, - DeckImporter.importDeckFromFile(this.player1Panel.getDeckFile()), + DeckImporter.importDeckFromFile(this.player1Panel.getDeckFile(), true), tOptions.getPassword())) { for (TournamentPlayerPanel player : players) { if (player.getPlayerType().getSelectedItem() != PlayerType.HUMAN) { - if (!player.joinTournamentTable(roomId, table.getTableId(), DeckImporter.importDeckFromFile(this.player1Panel.getDeckFile()))) { + if (!player.joinTournamentTable(roomId, table.getTableId(), DeckImporter.importDeckFromFile(this.player1Panel.getDeckFile(), true))) { // error message must be send by sever SessionHandler.removeTable(roomId, table.getTableId()); table = null; @@ -743,11 +743,7 @@ public class NewTournamentDialog extends MageDialog { private void spnNumSeatsStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_spnNumSeatsStateChanged int numSeats = (Integer) this.spnNumSeats.getValue(); - if (numSeats > 2) { - this.spnNumPlayers.setEnabled(false); - } else { - this.spnNumPlayers.setEnabled(true); - } + this.spnNumPlayers.setEnabled(numSeats <= 2); updateNumSeats(); }//GEN-LAST:event_spnNumSeatsStateChanged @@ -1209,7 +1205,7 @@ public class NewTournamentDialog extends MageDialog { if (!(cubeFromDeckFilename.isEmpty())) { Deck cubeFromDeck = new Deck(); try { - cubeFromDeck = Deck.load(DeckImporter.importDeckFromFile(cubeFromDeckFilename), true, true); + cubeFromDeck = Deck.load(DeckImporter.importDeckFromFile(cubeFromDeckFilename, true), true, true); } catch (GameException e1) { JOptionPane.showMessageDialog(MageFrame.getDesktop(), e1.getMessage(), "Error loading deck", JOptionPane.ERROR_MESSAGE); } diff --git a/Mage.Client/src/main/java/mage/client/dialog/PreferencesDialog.form b/Mage.Client/src/main/java/mage/client/dialog/PreferencesDialog.form index 1e52f053914..b1a497484ec 100644 --- a/Mage.Client/src/main/java/mage/client/dialog/PreferencesDialog.form +++ b/Mage.Client/src/main/java/mage/client/dialog/PreferencesDialog.form @@ -4425,7 +4425,7 @@ - + diff --git a/Mage.Client/src/main/java/mage/client/dialog/PreferencesDialog.java b/Mage.Client/src/main/java/mage/client/dialog/PreferencesDialog.java index 1b9e9881bad..07f5b02ae04 100644 --- a/Mage.Client/src/main/java/mage/client/dialog/PreferencesDialog.java +++ b/Mage.Client/src/main/java/mage/client/dialog/PreferencesDialog.java @@ -79,6 +79,7 @@ public class PreferencesDialog extends javax.swing.JDialog { public static final String KEY_CARD_IMAGES_USE_DEFAULT = "cardImagesUseDefault"; public static final String KEY_CARD_IMAGES_PATH = "cardImagesPath"; public static final String KEY_CARD_IMAGES_THREADS = "cardImagesThreads"; + public static final String KEY_CARD_IMAGES_THREADS_DEFAULT = "3"; public static final String KEY_CARD_IMAGES_SAVE_TO_ZIP = "cardImagesSaveToZip"; public static final String KEY_CARD_IMAGES_PREF_LANGUAGE = "cardImagesPreferedImageLaguage"; @@ -343,6 +344,10 @@ public class PreferencesDialog extends javax.swing.JDialog { return CardLanguage.valueByCode(getCachedValue(PreferencesDialog.KEY_CARD_IMAGES_PREF_LANGUAGE, CardLanguage.ENGLISH.getCode())); } + public static Integer getPrefDownloadThreads() { + return Integer.parseInt(getCachedValue(KEY_CARD_IMAGES_THREADS, KEY_CARD_IMAGES_THREADS_DEFAULT)); + } + private static class ImageFileFilter extends FileFilter { @Override @@ -486,7 +491,7 @@ public class PreferencesDialog extends javax.swing.JDialog { txtImageFolderPath = new javax.swing.JTextField(); btnBrowseImageLocation = new javax.swing.JButton(); cbSaveToZipFiles = new javax.swing.JCheckBox(); - cbPreferedImageLanguage = new javax.swing.JComboBox(); + cbPreferedImageLanguage = new javax.swing.JComboBox<>(); labelPreferedImageLanguage = new javax.swing.JLabel(); labelNumberOfDownloadThreads = new javax.swing.JLabel(); cbNumberOfDownloadThreads = new javax.swing.JComboBox(); @@ -547,7 +552,7 @@ public class PreferencesDialog extends javax.swing.JDialog { txtURLServerList = new javax.swing.JTextField(); jLabel17 = new javax.swing.JLabel(); lblProxyType = new javax.swing.JLabel(); - cbProxyType = new javax.swing.JComboBox(); + cbProxyType = new javax.swing.JComboBox<>(); pnlProxySettings = new javax.swing.JPanel(); pnlProxy = new javax.swing.JPanel(); lblProxyServer = new javax.swing.JLabel(); @@ -588,7 +593,7 @@ public class PreferencesDialog extends javax.swing.JDialog { tabThemes = new javax.swing.JPanel(); themesCategory = new javax.swing.JPanel(); lbSelectLabel = new javax.swing.JLabel(); - cbTheme = new javax.swing.JComboBox(); + cbTheme = new javax.swing.JComboBox<>(); lbThemeHint = new javax.swing.JLabel(); saveButton = new javax.swing.JButton(); exitButton = new javax.swing.JButton(); @@ -1556,12 +1561,12 @@ public class PreferencesDialog extends javax.swing.JDialog { }); cbPreferedImageLanguage.setMaximumRowCount(20); - cbPreferedImageLanguage.setModel(new javax.swing.DefaultComboBoxModel(new String[]{"Item 1", "Item 2", "Item 3", "Item 4"})); + cbPreferedImageLanguage.setModel(new javax.swing.DefaultComboBoxModel<>(new String[]{"Item 1", "Item 2", "Item 3", "Item 4"})); labelPreferedImageLanguage.setText("Default images language:"); labelPreferedImageLanguage.setFocusable(false); - labelNumberOfDownloadThreads.setText("Number of download threads:"); + labelNumberOfDownloadThreads.setText("Default download threads:"); cbNumberOfDownloadThreads.setMaximumRowCount(20); cbNumberOfDownloadThreads.setModel(new javax.swing.DefaultComboBoxModel(new String[]{"Item 1", "Item 2", "Item 3", "Item 4"})); @@ -3465,7 +3470,7 @@ public class PreferencesDialog extends javax.swing.JDialog { updateCache(KEY_CARD_IMAGES_PATH, path); } load(prefs, dialog.cbSaveToZipFiles, KEY_CARD_IMAGES_SAVE_TO_ZIP, "true"); - dialog.cbNumberOfDownloadThreads.setSelectedItem(MageFrame.getPreferences().get(KEY_CARD_IMAGES_THREADS, "10")); + dialog.cbNumberOfDownloadThreads.setSelectedItem(MageFrame.getPreferences().get(KEY_CARD_IMAGES_THREADS, KEY_CARD_IMAGES_THREADS_DEFAULT)); dialog.cbPreferedImageLanguage.setSelectedItem(MageFrame.getPreferences().get(KEY_CARD_IMAGES_PREF_LANGUAGE, CardLanguage.ENGLISH.getCode())); // rendering settings @@ -3762,10 +3767,9 @@ public class PreferencesDialog extends javax.swing.JDialog { if (CACHE.containsKey(key)) { return CACHE.get(key); } else { - Preferences prefs = MageFrame.getPreferences(); - String value = prefs.get(key, def); + String value = MageFrame.getPreferences().get(key, def); if (value == null) { - return null; + return def; } CACHE.put(key, value); return value; diff --git a/Mage.Client/src/main/java/mage/client/game/PlayAreaPanel.java b/Mage.Client/src/main/java/mage/client/game/PlayAreaPanel.java index 1f04a72fd2a..f7c2c2b35fe 100644 --- a/Mage.Client/src/main/java/mage/client/game/PlayAreaPanel.java +++ b/Mage.Client/src/main/java/mage/client/game/PlayAreaPanel.java @@ -498,11 +498,7 @@ public class PlayAreaPanel extends javax.swing.JPanel { this.battlefieldPanel.init(gameId, bigCard); this.gameId = gameId; this.playerId = player.getPlayerId(); - if (SessionHandler.isTestMode()) { - this.btnCheat.setVisible(true); - } else { - this.btnCheat.setVisible(false); - } + this.btnCheat.setVisible(SessionHandler.isTestMode()); } public final void update(GameView game, PlayerView player, Set possibleTargets) { @@ -561,7 +557,7 @@ public class PlayAreaPanel extends javax.swing.JPanel { } private void btnCheatActionPerformed(java.awt.event.ActionEvent evt) { - SessionHandler.cheat(gameId, playerId, DeckImporter.importDeckFromFile("cheat.dck")); + SessionHandler.cheat(gameId, playerId, DeckImporter.importDeckFromFile("cheat.dck", false)); } public boolean isSmallMode() { diff --git a/Mage.Client/src/main/java/mage/client/game/PlayerPanelExt.java b/Mage.Client/src/main/java/mage/client/game/PlayerPanelExt.java index f66394ce708..2ba6bc104dc 100644 --- a/Mage.Client/src/main/java/mage/client/game/PlayerPanelExt.java +++ b/Mage.Client/src/main/java/mage/client/game/PlayerPanelExt.java @@ -1,13 +1,5 @@ package mage.client.game; -import java.awt.*; -import java.awt.image.BufferedImage; -import java.util.*; -import javax.swing.*; -import javax.swing.GroupLayout.Alignment; -import javax.swing.LayoutStyle.ComponentPlacement; -import javax.swing.border.Border; -import javax.swing.border.LineBorder; import mage.cards.decks.importer.DckDeckImporter; import mage.client.MageFrame; import mage.client.SessionHandler; @@ -24,7 +16,6 @@ import mage.client.util.gui.countryBox.CountryUtil; import mage.components.ImagePanel; import mage.components.ImagePanelStyle; import mage.constants.CardType; -import static mage.constants.Constants.*; import mage.constants.ManaType; import mage.counters.Counter; import mage.counters.CounterType; @@ -33,6 +24,17 @@ import mage.utils.timer.PriorityTimer; import mage.view.*; import org.mage.card.arcane.ManaSymbols; +import javax.swing.*; +import javax.swing.GroupLayout.Alignment; +import javax.swing.LayoutStyle.ComponentPlacement; +import javax.swing.border.Border; +import javax.swing.border.LineBorder; +import java.awt.*; +import java.awt.image.BufferedImage; +import java.util.*; + +import static mage.constants.Constants.*; + /** * Enhanced player pane. * @@ -935,7 +937,7 @@ public class PlayerPanelExt extends javax.swing.JPanel { private void btnCheatActionPerformed(java.awt.event.ActionEvent evt) { DckDeckImporter deckImporter = new DckDeckImporter(); - SessionHandler.cheat(gameId, playerId, deckImporter.importDeck("cheat.dck")); + SessionHandler.cheat(gameId, playerId, deckImporter.importDeck("cheat.dck", false)); } public PlayerView getPlayer() { diff --git a/Mage.Client/src/main/java/mage/client/table/TablePlayerPanel.java b/Mage.Client/src/main/java/mage/client/table/TablePlayerPanel.java index 3a7a6dd8f38..f962b067987 100644 --- a/Mage.Client/src/main/java/mage/client/table/TablePlayerPanel.java +++ b/Mage.Client/src/main/java/mage/client/table/TablePlayerPanel.java @@ -53,7 +53,7 @@ public class TablePlayerPanel extends javax.swing.JPanel { public boolean joinTable(UUID roomId, UUID tableId) throws IOException, ClassNotFoundException { if (this.cbPlayerType.getSelectedItem() != PlayerType.HUMAN) { - return SessionHandler.joinTable(roomId, tableId, this.newPlayerPanel.getPlayerName(), (PlayerType) this.cbPlayerType.getSelectedItem(), this.newPlayerPanel.getLevel(), DeckImporter.importDeckFromFile(this.newPlayerPanel.getDeckFile()), ""); + return SessionHandler.joinTable(roomId, tableId, this.newPlayerPanel.getPlayerName(), (PlayerType) this.cbPlayerType.getSelectedItem(), this.newPlayerPanel.getLevel(), DeckImporter.importDeckFromFile(this.newPlayerPanel.getDeckFile(), true), ""); } return true; } @@ -127,8 +127,7 @@ public class TablePlayerPanel extends javax.swing.JPanel { if (getPlayerType() != PlayerType.HUMAN) { this.newPlayerPanel.setVisible(true); this.newPlayerPanel.setPlayerName(ClientDefaultSettings.computerName + " " + this.lblPlayerNum.getText().charAt(this.lblPlayerNum.getText().length() - 1)); - } - else { + } else { this.newPlayerPanel.setVisible(false); } this.revalidate(); diff --git a/Mage.Client/src/main/java/mage/client/table/TablesPanel.java b/Mage.Client/src/main/java/mage/client/table/TablesPanel.java index c8af0daf782..66ef466a1eb 100644 --- a/Mage.Client/src/main/java/mage/client/table/TablesPanel.java +++ b/Mage.Client/src/main/java/mage/client/table/TablesPanel.java @@ -95,7 +95,7 @@ public class TablesPanel extends javax.swing.JPanel { final JToggleButton[] filterButtons; // time formater - private PrettyTime timeFormater = new PrettyTime(Locale.ENGLISH); + private final PrettyTime timeFormater = new PrettyTime(Locale.ENGLISH); // time ago renderer TableCellRenderer timeAgoCellRenderer = new DefaultTableCellRenderer() { @@ -127,7 +127,7 @@ public class TablesPanel extends javax.swing.JPanel { // datetime render TableCellRenderer datetimeCellRenderer = new DefaultTableCellRenderer() { - DateFormat datetimeFormater = new SimpleDateFormat("HH:mm:ss"); + final DateFormat datetimeFormater = new SimpleDateFormat("HH:mm:ss"); @Override public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { @@ -147,8 +147,8 @@ public class TablesPanel extends javax.swing.JPanel { TableCellRenderer skillCellRenderer = new DefaultTableCellRenderer() { // base panel to render - private JPanel renderPanel = new JPanel(); - private ImageIcon skillIcon = new ImageIcon(this.getClass().getResource("/info/yellow_star_16.png")); + private final JPanel renderPanel = new JPanel(); + private final ImageIcon skillIcon = new ImageIcon(this.getClass().getResource("/info/yellow_star_16.png")); @Override public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { @@ -181,7 +181,7 @@ public class TablesPanel extends javax.swing.JPanel { // seats render TableCellRenderer seatsCellRenderer = new DefaultTableCellRenderer() { - JLabel greenLabel = new JLabel(); + final JLabel greenLabel = new JLabel(); @Override public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { @@ -1469,48 +1469,48 @@ public class TablesPanel extends javax.swing.JPanel { javax.swing.GroupLayout jPanelTopLayout = new javax.swing.GroupLayout(jPanelTop); jPanelTop.setLayout(jPanelTopLayout); jPanelTopLayout.setHorizontalGroup( - jPanelTopLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(jPanelTopLayout.createSequentialGroup() - .addContainerGap() - .addComponent(btnNewTable) - .addGap(6, 6, 6) - .addComponent(btnNewTournament) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(jPanelTopLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) - .addComponent(filterBar1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(filterBar2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(jPanelTopLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(jPanelTopLayout.createSequentialGroup() - .addComponent(btnQuickStartDuel) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(btnQuickStartMCTS)) - .addComponent(btnQuickStartCommander)) - .addContainerGap(540, Short.MAX_VALUE)) + jPanelTopLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanelTopLayout.createSequentialGroup() + .addContainerGap() + .addComponent(btnNewTable) + .addGap(6, 6, 6) + .addComponent(btnNewTournament) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanelTopLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) + .addComponent(filterBar1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(filterBar2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanelTopLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanelTopLayout.createSequentialGroup() + .addComponent(btnQuickStartDuel) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(btnQuickStartMCTS)) + .addComponent(btnQuickStartCommander)) + .addContainerGap(540, Short.MAX_VALUE)) ); jPanelTopLayout.setVerticalGroup( - jPanelTopLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(jPanelTopLayout.createSequentialGroup() - .addContainerGap() - .addGroup(jPanelTopLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(jPanelTopLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(btnNewTable) - .addComponent(btnNewTournament)) - .addGroup(jPanelTopLayout.createSequentialGroup() - .addGroup(jPanelTopLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(filterBar1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addGroup(jPanelTopLayout.createSequentialGroup() + jPanelTopLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanelTopLayout.createSequentialGroup() + .addContainerGap() .addGroup(jPanelTopLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(btnQuickStartDuel) - .addComponent(btnQuickStartMCTS)) - .addGap(0, 0, Short.MAX_VALUE))) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(jPanelTopLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(filterBar2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addGroup(jPanelTopLayout.createSequentialGroup() - .addComponent(btnQuickStartCommander) - .addGap(0, 0, Short.MAX_VALUE))))) - .addContainerGap()) + .addGroup(jPanelTopLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(btnNewTable) + .addComponent(btnNewTournament)) + .addGroup(jPanelTopLayout.createSequentialGroup() + .addGroup(jPanelTopLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(filterBar1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addGroup(jPanelTopLayout.createSequentialGroup() + .addGroup(jPanelTopLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(btnQuickStartDuel) + .addComponent(btnQuickStartMCTS)) + .addGap(0, 0, Short.MAX_VALUE))) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanelTopLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(filterBar2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addGroup(jPanelTopLayout.createSequentialGroup() + .addComponent(btnQuickStartCommander) + .addGap(0, 0, Short.MAX_VALUE))))) + .addContainerGap()) ); gridBagConstraints = new java.awt.GridBagConstraints(); @@ -1547,12 +1547,12 @@ public class TablesPanel extends javax.swing.JPanel { javax.swing.GroupLayout jPanelTablesLayout = new javax.swing.GroupLayout(jPanelTables); jPanelTables.setLayout(jPanelTablesLayout); jPanelTablesLayout.setHorizontalGroup( - jPanelTablesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jSplitPaneTables, javax.swing.GroupLayout.DEFAULT_SIZE, 23, Short.MAX_VALUE) + jPanelTablesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jSplitPaneTables, javax.swing.GroupLayout.DEFAULT_SIZE, 23, Short.MAX_VALUE) ); jPanelTablesLayout.setVerticalGroup( - jPanelTablesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jSplitPaneTables, javax.swing.GroupLayout.DEFAULT_SIZE, 672, Short.MAX_VALUE) + jPanelTablesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jSplitPaneTables, javax.swing.GroupLayout.DEFAULT_SIZE, 672, Short.MAX_VALUE) ); jSplitPane1.setLeftComponent(jPanelTables); @@ -1627,7 +1627,7 @@ public class TablesPanel extends javax.swing.JPanel { + "5 Mountain" + System.lineSeparator() + "5 Plains"); } - DeckCardLists testDeck = DeckImporter.importDeckFromFile(testDeckFile); + DeckCardLists testDeck = DeckImporter.importDeckFromFile(testDeckFile, false); PlayerType aiType = useMonteCarloAI ? PlayerType.COMPUTER_MONTE_CARLO : PlayerType.COMPUTER_MAD; MatchOptions options = new MatchOptions(gameName, gameType, false, 2); diff --git a/Mage.Client/src/main/java/org/mage/card/arcane/ManaSymbols.java b/Mage.Client/src/main/java/org/mage/card/arcane/ManaSymbols.java index 1c60131a569..09abb216b54 100644 --- a/Mage.Client/src/main/java/org/mage/card/arcane/ManaSymbols.java +++ b/Mage.Client/src/main/java/org/mage/card/arcane/ManaSymbols.java @@ -66,7 +66,18 @@ public final class ManaSymbols { onlyMythics.add("EXP"); onlyMythics.add("MPS"); - withoutSymbols.add("MPRP"); + // Magic Player Reward sets + withoutSymbols.add("MPR"); + withoutSymbols.add("P03"); + withoutSymbols.add("P04"); + withoutSymbols.add("P05"); + withoutSymbols.add("P06"); + withoutSymbols.add("P07"); + withoutSymbols.add("P08"); + withoutSymbols.add("P09"); + withoutSymbols.add("P10"); + withoutSymbols.add("P11"); + } private static final Map setImagesExist = new HashMap<>(); diff --git a/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/CopyPasteImageSourceDialog.java b/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/CopyPasteImageSourceDialog.java index b64d7cc8105..91db9311eb2 100644 --- a/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/CopyPasteImageSourceDialog.java +++ b/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/CopyPasteImageSourceDialog.java @@ -145,7 +145,7 @@ public class CopyPasteImageSourceDialog extends JDialog { txtDeckList.setMinimumSize(new Dimension(250, 400)); txtDeckList.setPreferredSize(new Dimension(550, 400)); - txtDeckList.setText("// Example follows. \nNB: **DELETE ALL TEXT AND GO SELECT THIS SOURCE AGAIN TO SEE THE NAMES CARDS YOU'RE MISSING IMAGES FOR!!!***\n\"SWS/Might of the Wild\", \"http://i.imgur.com/eNXOdxp.jpg\"\n\"PTC/Wolf of Devil's Breach\", \"https://img.scryfall.com/cards/large/en/psoi/192s.jpg\"\n\nExpected columns: Name of Card (Set Trigraph\\Name), URL of image\n\n\n"); + txtDeckList.setText("// Example follows. \nNB: **DELETE ALL TEXT AND GO SELECT THIS SOURCE AGAIN TO SEE THE NAMES CARDS YOU'RE MISSING IMAGES FOR!!!***\n\"SWS/Might of the Wild\", \"http://i.imgur.com/eNXOdxp.jpg\"\n\"PPRE/Wolf of Devil's Breach\", \"https://img.scryfall.com/cards/large/en/psoi/192s.jpg\"\n\nExpected columns: Name of Card (Set Trigraph\\Name), URL of image\n\n\n"); JScrollPane txtScrollableDeckList = new JScrollPane(txtDeckList); panel3.add(txtScrollableDeckList, new GridBagConstraints(0, 0, 1, 1, 1.0, 0.0, diff --git a/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/GathererSets.java b/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/GathererSets.java index acd17bb3ffd..a7342e287f9 100644 --- a/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/GathererSets.java +++ b/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/GathererSets.java @@ -1,8 +1,5 @@ package org.mage.plugins.card.dl.sources; -import java.io.File; -import java.util.*; - import mage.cards.ExpansionSet; import mage.cards.Sets; import mage.client.constants.Constants; @@ -10,6 +7,9 @@ import mage.constants.Rarity; import org.apache.log4j.Logger; import org.mage.plugins.card.dl.DownloadJob; +import java.io.File; +import java.util.*; + import static org.mage.plugins.card.dl.DownloadJob.fromURL; import static org.mage.plugins.card.dl.DownloadJob.toFile; import static org.mage.plugins.card.utils.CardImageUtils.getImagesDir; @@ -61,17 +61,16 @@ public class GathererSets implements Iterable { "POR", "P02", "PTK", "ARC", "DD3EVG", "W16", "W17", - // "APAC" -- gatherer do not have that set, scryfall has PALP - // "ARENA" -- is't many set with different codes, not one + // "PALP" -- Gatherer does not have the set Asia Pacific Land Program // "ATH" -- has cards from many sets, symbol does not exist on gatherer - // "CLASH", "CP", "DPA", "EURO", "FNMP", "GPX", "GRC", "GUR", "H17", "JR", "MBP", "MGDC", "MLP", "MPRP", "PTC", "SUS", "SWS", "WMCQ", // need to fix - "H09", "PD2", "PD3", "UNH", "CM1", "V11", "A25", "UST", "IMA", "DD2", "EVG", "DDC", "DDE", "DDD", "8EB", "9EB", "CHR", "G18", "DD3GVL", "S00", "S99", "UGL" // ok + // "CP", "DPA", "PELP", "PGPX", "PGRU", "H17", "JR", "PPRE", "SWS", // need to fix + "H09", "PD2", "PD3", "UNH", "CM1", "V11", "A25", "UST", "IMA", "DD2", "EVG", "DDC", "DDE", "DDD", "8EB", "9EB", "CHR", "G18", "GVL", "S00", "S99", "UGL" // ok // current testing }; private static final String[] symbolsBasicWithMyth = {"M10", "M11", "M12", "M13", "M14", "M15", "ORI", "DDF", "DDG", "DDH", "DDI", "DDJ", "DDK", "DDL", "DDM", "DDN", - "DD3DVD", "DD3JVC", "DDO", "DDP", "DDQ", "DDR", "DDS", "DDT", "DDU", + "DVD", "JVC", "DDO", "DDP", "DDQ", "DDR", "DDS", "DDT", "DDU", "ALA", "CON", "ARB", "ZEN", "WWK", "ROE", "SOM", "MBS", "NPH", @@ -99,11 +98,11 @@ public class GathererSets implements Iterable { }; private static final String[] symbolsOnlyMyth = { - "DRB", "V09", "V10", "V12", "V13", "V14", "V15", "V16", "V17", "EXP", "MEDM" + "DRB", "V09", "V10", "V12", "V13", "V14", "V15", "V16", "V17", "EXP", "MED" // "HTR" does not exist }; private static final String[] symbolsOnlySpecial = { - "MPS", "MPS-AKH" + "MPS", "MP2" }; private static final HashMap codeReplacements = new HashMap<>(); @@ -121,10 +120,10 @@ public class GathererSets implements Iterable { codeReplacements.put("ATQ", "AQ"); codeReplacements.put("CMA", "CM1"); codeReplacements.put("CHR", "CH"); - codeReplacements.put("DD3DVD", "DD3_DVD"); - codeReplacements.put("DD3EVG", "DD3_EVG"); - codeReplacements.put("DD3GVL", "DD3_GVL"); - codeReplacements.put("DD3JVC", "DD3_JVC"); + codeReplacements.put("DVD", "DD3_DVD"); + codeReplacements.put("EVG", "DD3_EVG"); + codeReplacements.put("GVL", "DD3_GVL"); + codeReplacements.put("JVC", "DD3_JVC"); codeReplacements.put("DRK", "DK"); codeReplacements.put("EXO", "EX"); codeReplacements.put("FEM", "FE"); @@ -134,9 +133,9 @@ public class GathererSets implements Iterable { codeReplacements.put("LEA", "1E"); codeReplacements.put("LEB", "2E"); codeReplacements.put("LEG", "LE"); - codeReplacements.put("MEDM", "MPS_WAR"); + codeReplacements.put("MED", "MPS_WAR"); codeReplacements.put("MPS", "MPS_KLD"); - codeReplacements.put("MPS-AKH", "MPS_AKH"); + codeReplacements.put("MP2", "MPS_AKH"); codeReplacements.put("MIR", "MI"); codeReplacements.put("MMQ", "MM"); codeReplacements.put("NEM", "NE"); diff --git a/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/GrabbagImageSource.java b/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/GrabbagImageSource.java index 9d6cebf890a..24c4980db18 100644 --- a/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/GrabbagImageSource.java +++ b/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/GrabbagImageSource.java @@ -29,7 +29,7 @@ public enum GrabbagImageSource implements CardImageSource { @Override public float getAverageSize() { - return 26.7f; + return 74.8f; } @Override 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 03eca017770..375194f18ae 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 @@ -16,9 +16,8 @@ public enum MagidexImageSource implements CardImageSource { MagidexImageSource() { supportedSets = new LinkedHashSet<>(); - // supportedSets.add("PTC"); // Prerelease Events - // supportedSets.add("FNMP"); - supportedSets.add("JR"); + // supportedSets.add("PPRE"); // Prerelease Events + // supportedSets.add("JR"); // TODO: Set was split into the individual sets as listed on Scryfall supportedSets.add("LEA"); supportedSets.add("LEB"); supportedSets.add("2ED"); @@ -258,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/MtgImageSource.java b/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/MtgImageSource.java deleted file mode 100644 index 8509e957303..00000000000 --- a/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/MtgImageSource.java +++ /dev/null @@ -1,92 +0,0 @@ -package org.mage.plugins.card.dl.sources; - -import org.mage.plugins.card.dl.DownloadServiceInfo; -import org.mage.plugins.card.images.CardDownloadData; - -import java.util.List; -import java.util.Locale; - -/** - * Site was shutdown by wizards Feb. 2015 - * - * @author LevelX2 - */ -public enum MtgImageSource implements CardImageSource { - - instance; - - @Override - public String getSourceName() { - return "mtgimage.com"; - } - - @Override - public String getNextHttpImageUrl() { - return null; - } - - @Override - public String getFileForHttpImage(String httpImageUrl) { - return null; - } - - @Override - public boolean prepareDownloadList(DownloadServiceInfo downloadServiceInfo, List downloadList) { - return true; - } - - @Override - public CardImageUrls generateCardUrl(CardDownloadData card) throws Exception { - String collectorId = card.getCollectorId(); - String cardSet = card.getSet(); - if (collectorId == null || cardSet == null) { - throw new Exception("Wrong parameters for image: collector id: " + collectorId + ",card set: " + cardSet); - } - StringBuilder url = new StringBuilder("http://mtgimage.com/set/"); - url.append(cardSet.toUpperCase(Locale.ENGLISH)).append('/'); - - if (card.isSplitCard()) { - url.append(card.getDownloadName().replaceAll(" // ", "")); - } else { - url.append(card.getDownloadName().replaceAll(" ", "%20")); - } - - if (card.isTwoFacedCard()) { - url.append(card.isSecondSide() ? "b" : "a"); - } - if (card.isFlipCard()) { - if (card.isFlippedSide()) { // download rotated by 180 degree image - url.append('b'); - } else { - url.append('a'); - } - } - url.append(".jpg"); - - return new CardImageUrls(url.toString()); - } - - @Override - public CardImageUrls generateTokenUrl(CardDownloadData card) { - return null; - } - - @Override - public float getAverageSize() { - return 70.0f; - } - - @Override - public int getTotalImages() { - return -1; - } - - @Override - public boolean isTokenSource() { - return false; - } - - @Override - public void doPause(String httpImageUrl) { - } -} diff --git a/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/MythicspoilerComSource.java b/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/MythicspoilerComSource.java index f642b3e06fe..d7c9eec3941 100644 --- a/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/MythicspoilerComSource.java +++ b/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/MythicspoilerComSource.java @@ -396,7 +396,7 @@ public enum MythicspoilerComSource implements CardImageSource { String collectorId = card.getCollectorId(); String cardSet = card.getSet(); if (collectorId == null || cardSet == null) { - throw new Exception("Wrong parameters for image: collector id: " + collectorId + ",card set: " + cardSet); + throw new Exception("Wrong parameters for image: collector id: " + collectorId + ", card set: " + cardSet); } if (card.isFlippedSide()) { //doesn't support rotated images return null; 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 350b79eb948..04d9659d5f7 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 @@ -4,8 +4,6 @@ import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonParser; -import mage.cards.ExpansionSet; -import mage.cards.Sets; import mage.client.util.CardLanguage; import mage.util.CardUtil; import org.apache.log4j.Logger; @@ -30,7 +28,7 @@ public enum ScryfallImageSource implements CardImageSource { private final Map languageAliases; private CardLanguage currentLanguage = CardLanguage.ENGLISH; // working language - private Map preparedUrls = new HashMap<>(); + private final Map preparedUrls = new HashMap<>(); ScryfallImageSource() { // LANGUAGES @@ -68,34 +66,34 @@ public enum ScryfallImageSource implements CardImageSource { // TOKENS TRY // tokens support only direct links - if (baseUrl == null && isToken) { + if (isToken) { baseUrl = ScryfallImageSupportTokens.findTokenLink(card.getSet(), card.getName(), card.getType()); alternativeUrl = null; } // CARDS TRY - // direct links to images (non localization) + // direct links to images via hardcoded API path. Used for cards with non-ASCII collector numbers if (baseUrl == null) { - baseUrl = ScryfallImageSupportCards.findDirectDownloadLink(card.getSet(), card.getName(), card.getCollectorId()); - alternativeUrl = null; - } + String apiUrl = ScryfallImageSupportCards.findDirectDownloadLink(card.getSet(), card.getName(), card.getCollectorId()); + if (apiUrl != null) { + baseUrl = apiUrl + localizedCode + "?format=image"; + alternativeUrl = apiUrl + defaultCode + "?format=image"; - // art variation cards - // ARN and POR use † notation - // PLS uses ★ notation - if (baseUrl == null && card.getUsesVariousArt() && card.getSet().matches("ARN|POR|PLS")) { - String scryfallCollectorId = card.getCollectorIdAsInt().toString(); - - if (card.getCollectorId().endsWith("b")) { - if (card.getSet().matches("ARN|POR")) { - scryfallCollectorId += "†"; - } else if (card.getSet().matches("PLS")) { - scryfallCollectorId += "★"; + // workaround to use cards without english images (some promos or special cards) + if (Objects.equals(baseUrl, alternativeUrl) && baseUrl.endsWith("/en?format=image")) { + alternativeUrl = alternativeUrl.replace("/en?format=image", "/?format=image"); } } + } - scryfallCollectorId = CardUtil.urlEncode(scryfallCollectorId); + // ARN and POR uses † notation for art variation cards + if (baseUrl == null && card.getUsesVariousArt() && card.getSet().matches("ARN|POR")) { + String collectorId = card.getCollectorId(); + if (collectorId.endsWith("b")) + collectorId = collectorId.replace("b", "†"); + + final String scryfallCollectorId = CardUtil.urlEncode(collectorId); baseUrl = "https://api.scryfall.com/cards/" + formatSetName(card.getSet(), isToken) + "/" + scryfallCollectorId + "/" + localizedCode + "?format=image"; alternativeUrl = "https://api.scryfall.com/cards/" + formatSetName(card.getSet(), isToken) + "/" @@ -107,9 +105,9 @@ public enum ScryfallImageSource implements CardImageSource { // the back face is prepared beforehand if (baseUrl == null && card.isTwoFacedCard() && !card.isSecondSide()) { baseUrl = "https://api.scryfall.com/cards/" + formatSetName(card.getSet(), isToken) + "/" - + card.getCollectorIdAsInt() + "/" + localizedCode + "?format=image"; + + card.getCollectorId() + "/" + localizedCode + "?format=image"; alternativeUrl = "https://api.scryfall.com/cards/" + formatSetName(card.getSet(), isToken) + "/" - + card.getCollectorIdAsInt() + "/" + defaultCode + "?format=image"; + + card.getCollectorId() + "/" + defaultCode + "?format=image"; } // basic cards by api call (redirect to img link) @@ -136,7 +134,7 @@ public enum ScryfallImageSource implements CardImageSource { private String getFaceImageUrl(Proxy proxy, CardDownloadData card, boolean isToken, String localizationCode) throws Exception { // connect to Scryfall API final URL cardUrl = new URL("https://api.scryfall.com/cards/" + formatSetName(card.getSet(), isToken) + "/" - + (card.getCollectorIdAsInt() % 1000) + "/" + localizationCode); + + card.getCollectorId() + "/" + localizationCode); URLConnection request = proxy == null ? cardUrl.openConnection() : cardUrl.openConnection(proxy); request.connect(); @@ -145,7 +143,7 @@ public enum ScryfallImageSource implements CardImageSource { JsonElement root = jp.parse(new InputStreamReader((InputStream) request.getContent())); JsonObject jsonCard = root.getAsJsonObject(); if (!jsonCard.has("card_faces")) { - throw new Exception("Couldn't find card_faces in Card JSON."); + throw new Exception("Couldn't find card_faces in Card JSON.: " + cardUrl.toString()); } JsonArray jsonCardFaces = jsonCard.getAsJsonArray("card_faces"); JsonObject jsonCardFace = jsonCardFaces.get(card.isSecondSide() ? 1 : 0).getAsJsonObject(); @@ -161,8 +159,6 @@ public enum ScryfallImageSource implements CardImageSource { preparedUrls.clear(); - final List sixthEditionCards = Sets.findSet("6ED").getSetCardInfo(); - for (CardDownloadData card : downloadList) { // need cancel if (downloadServiceInfo.isNeedCancel()) { @@ -179,42 +175,8 @@ public enum ScryfallImageSource implements CardImageSource { try { url = getFaceImageUrl(proxy, card, card.isToken(), localizedCode); } catch (Exception e) { - logger.warn("Failed to prepare image URL (back face) for " + card.getName() + " (" + card.getSet() + ") #" + card.getCollectorId()); - downloadServiceInfo.incErrorCount(); - continue; - } - - preparedUrls.put(card, url); - } - - // if a S00 card is in 6ED, it's actually a 6ED card - if (card.getSet().equals("S00") && sixthEditionCards.stream().anyMatch(sixthEditionCard -> sixthEditionCard.getName().equals(card.getName()))) { - // we have direct links for the lands because there are multiple search results - if (card.getUsesVariousArt()) { // lands are the only defined multiple art cards in S00 in XMage - continue; - } - - String url = null; - - try { - url = searchCard(proxy, "6ED", card.getName()); - } catch (Exception e) { - logger.warn("Failed to prepare image URL (S00) for " + card.getName() + " (" + card.getSet() + ") #" + card.getCollectorId()); - downloadServiceInfo.incErrorCount(); - continue; - } - - preparedUrls.put(card, url); - } - - // if an E01 card number is above 106, it's actually an AKH card - if (card.getSet().equals("E01") && card.getCollectorIdAsInt() > 106) { - String url = null; - - try { - url = searchCard(proxy, "AKH", card.getName()); - } catch (Exception e) { - logger.warn("Failed to prepare image URL (E01) for " + card.getName() + " (" + card.getSet() + ") #" + card.getCollectorId()); + logger.warn("Failed to prepare image URL (back face) for " + card.getName() + " (" + card.getSet() + ") #" + + card.getCollectorId() + ", Error Message: " + e.getMessage()); downloadServiceInfo.incErrorCount(); continue; } @@ -229,24 +191,6 @@ public enum ScryfallImageSource implements CardImageSource { return true; } - private String searchCard(Proxy proxy, String set, String name) throws Exception { - final URL searchUrl = new URL("https://api.scryfall.com/cards/search?q=s:" + CardUtil.urlEncode(set + " " + name)); - URLConnection request = proxy == null ? searchUrl.openConnection() : searchUrl.openConnection(proxy); - request.connect(); - - // parse the response and return the image URI from the correct card face - JsonParser jp = new JsonParser(); - JsonElement root = jp.parse(new InputStreamReader((InputStream) request.getContent())); - JsonObject searchResult = root.getAsJsonObject(); - if (searchResult.get("total_cards").getAsInt() != 1) { - throw new Exception("Card not found in Scryfall."); - } - JsonObject jsonCard = searchResult.getAsJsonArray("data").get(0).getAsJsonObject(); - JsonObject jsonImageUris = jsonCard.getAsJsonObject("image_uris"); - - return jsonImageUris.get("large").getAsString(); - } - @Override public CardImageUrls generateCardUrl(CardDownloadData card) throws Exception { return innerGenerateURL(card, false); @@ -275,7 +219,8 @@ public enum ScryfallImageSource implements CardImageSource { @Override public float getAverageSize() { - return 90; + // March 2020: 46_354 image files with total size 9_545_168 KiB + return 206; } @Override 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 1207706b7ed..2b9c5e24855 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 @@ -8,270 +8,491 @@ import java.util.Locale; import java.util.Map; import java.util.Set; + /** * @author JayDi85 */ public class ScryfallImageSupportCards { - private static final Map xmageSetsToScryfall = ImmutableMap.builder().put("DD3GVL", "gvl"). - put("DD3JVC", "jvc"). - put("DD3DVD", "dvd"). - put("DD3EVG", "evg"). - put("MPS-AKH", "mp2"). - put("MBP", "pmei"). - put("WMCQ", "pwcq"). - put("EURO", "pelp"). - put("GPX", "pgpx"). - put("MED", "me1"). - put("MEDM", "med"). - build(); + private static final Map xmageSetsToScryfall = ImmutableMap.builder(). + //put("xmage", "scryfall"). + build(); private static final Set supportedSets = new ArraySet() { { - // xmage set codes - // add("PTC"); // - add("LEA"); - add("LEB"); - add("2ED"); - add("ARN"); - add("ATQ"); - add("3ED"); - add("LEG"); - add("DRK"); - add("FEM"); - add("4ED"); - add("ICE"); - add("CHR"); - add("HML"); - add("ALL"); - add("MIR"); - add("VIS"); - add("5ED"); - add("POR"); - add("WTH"); - add("TMP"); - add("STH"); - add("EXO"); - add("P02"); - add("UGL"); - add("USG"); - add("DD3DVD"); - add("DD3EVG"); - add("DD3GVL"); - add("DD3JVC"); + // Sorted by release date, as listed on Scryfall + // Commented sets are not available on XMage, most likely because they are non-English sets. + + add("LEA"); // Limited Edition Alpha + add("LEB"); // Limited Edition Beta + add("2ED"); // Unlimited Edition + //add("CEI"); // Intl. Collectors’ Edition + //add("CED"); // Collectors’ Edition + add("ARN"); // Arabian Nights + add("ATQ"); // Antiquities + //add("FBB"); // Foreign Black Border + add("3ED"); // Revised Edition + add("LEG"); // Legends + add("SUM"); // Summer Magic / Edgar + add("PDRC"); // Dragon Con + add("DRK"); // The Dark + add("FEM"); // Fallen Empires + add("PLGM"); // DCI Legend Membership + //add("4BB"); // Fourth Edition Foreign Black Border + add("PHPR"); // HarperPrism Book Promos + add("4ED"); // Fourth Edition + add("ICE"); // Ice Age + add("CHR"); // Chronicles + //add("RIN"); // Rinascimento + //add("REN"); // Renaissance + add("HML"); // Homelands + add("PTC"); // Pro Tour Collector Set + add("ALL"); // Alliances + add("RQS"); // Rivals Quick Start Set + add("PARL"); // Arena League 1996 + //add("PRED"); // Redemption Program + add("MIR"); // Mirage + add("MGB"); // Multiverse Gift Box + add("ITP"); // Introductory Two-Player Set + add("VIS"); // Visions + add("5ED"); // Fifth Edition + //add("PVAN"); // Vanguard Series + add("PPOD"); // Portal Demo Game + add("POR"); // Portal + add("WTH"); // Weatherlight + add("WC97"); // World Championship Decks 1997 + add("TMP"); // Tempest + add("JGP"); // Judge Gift Cards 1998 + add("STH"); // Stronghold + add("P02"); // Portal Second Age + add("EXO"); // Exodus + add("UGL"); // Unglued + add("WC98"); // World Championship Decks 1998 + add("PALP"); // Asia Pacific Land Program + add("USG"); // Urza's Saga + add("ATH"); // Anthologies + add("PAL99"); // Arena League 1999 + add("G99"); // Judge Gift Cards 1999 + add("ULG"); // Urza's Legacy + add("6ED"); // Classic Sixth Edition + add("PTK"); // Portal Three Kingdoms + add("UDS"); // Urza's Destiny + add("S99"); // Starter 1999 + add("PGRU"); // Guru + add("WC99"); // World Championship Decks 1999 + add("PWOS"); // Wizards of the Coast Online Store + add("MMQ"); // Mercadian Masques + add("BRB"); // Battle Royale Box Set + add("PAL00"); // Arena League 2000 + add("G00"); // Judge Gift Cards 2000 + add("FNM"); // Friday Night Magic 2000 + add("PELP"); // European Land Program + add("NEM"); // Nemesis + add("S00"); // Starter 2000 + add("PCY"); // Prophecy + add("WC00"); // World Championship Decks 2000 + add("BTD"); // Beatdown Box Set + add("INV"); // Invasion + add("PAL01"); // Arena League 2001 + add("MPR"); // Magic Player Rewards 2001 + add("G01"); // Judge Gift Cards 2001 + add("F01"); // Friday Night Magic 2001 + add("PLS"); // Planeshift + add("7ED"); // Seventh Edition + add("APC"); // Apocalypse + add("WC01"); // World Championship Decks 2001 + add("ODY"); // Odyssey + add("DKM"); // Deckmasters + add("PAL02"); // Arena League 2002 + //add("PR2"); // Magic Player Rewards 2002 + add("G02"); // Judge Gift Cards 2002 + add("F02"); // Friday Night Magic 2002 + add("TOR"); // Torment + add("JUD"); // Judgment + //add("PHJ"); // Hobby Japan Promos + add("WC02"); // World Championship Decks 2002 + add("ONS"); // Onslaught + //add("PMOA"); // Magic Online Avatars + add("PAL03"); // Arena League 2003 + add("P03"); // Magic Player Rewards 2003 + add("G03"); // Judge Gift Cards 2003 + add("F03"); // Friday Night Magic 2003 + add("LGN"); // Legions + add("SCG"); // Scourge + add("8ED"); // Eighth Edition + add("8EB"); // Eighth Edition Box + add("WC03"); // World Championship Decks 2003 + add("MRD"); // Mirrodin + add("PAL04"); // Arena League 2004 + add("P04"); // Magic Player Rewards 2004 + add("G04"); // Judge Gift Cards 2004 + add("F04"); // Friday Night Magic 2004 + add("DST"); // Darksteel + add("5DN"); // Fifth Dawn + add("WC04"); // World Championship Decks 2004 + add("CHK"); // Champions of Kamigawa + add("UNH"); // Unhinged + //add("PMPS"); // Magic Premiere Shop 2005 + add("PAL05"); // Arena League 2005 + add("P05"); // Magic Player Rewards 2005 + add("G05"); // Judge Gift Cards 2005 + add("F05"); // Friday Night Magic 2005 + add("BOK"); // Betrayers of Kamigawa + add("SOK"); // Saviors of Kamigawa + add("9ED"); // Ninth Edition + add("9EB"); // Ninth Edition Box + //add("PSAL"); // Salvat 2005 + add("RAV"); // Ravnica: City of Guilds + add("P2HG"); // Two-Headed Giant Tournament + add("PAL06"); // Arena League 2006 + //add("PMPS06"); // Magic Premiere Shop 2006 + add("PHUK"); // Hachette UK + add("PGTW"); // Gateway 2006 + add("P06"); // Magic Player Rewards 2006 + add("G06"); // Judge Gift Cards 2006 + add("F06"); // Friday Night Magic 2006 + add("GPT"); // Guildpact + add("DIS"); // Dissension + add("CST"); // Coldsnap Theme Decks + add("CSP"); // Coldsnap + add("TSP"); // Time Spiral + add("TSB"); // Time Spiral Timeshifted + add("PG07"); // Gateway 2007 + //add("PMPS07"); // Magic Premiere Shop 2007 + add("P07"); // Magic Player Rewards 2007 + add("HHO"); // Happy Holidays + add("G07"); // Judge Gift Cards 2007 + add("F07"); // Friday Night Magic 2007 + add("PLC"); // Planar Chaos + add("FUT"); // Future Sight + add("10E"); // Tenth Edition + add("P10E"); // Tenth Edition Promos + add("PSUM"); // Summer of Magic + add("ME1"); // Masters Edition + add("PREL"); // Release Events + add("LRW"); // Lorwyn + add("DD1"); // Duel Decks: Elves vs. Goblins + add("PSUS"); // Junior Super Series + add("PJSE"); // Junior Series Europe + add("PJAS"); // Junior APAC Series + //add("PMPS08"); // Magic Premiere Shop 2008 + add("PG08"); // Gateway 2008 + add("P08"); // Magic Player Rewards 2008 + add("G08"); // Judge Gift Cards 2008 + add("F08"); // Friday Night Magic 2008 + add("MOR"); // Morningtide + add("PCMP"); // Champs and States + add("P15A"); // 15th Anniversary Cards + add("SHM"); // Shadowmoor + //add("PJJT"); // Japan Junior Tournament + add("EVE"); // Eventide + add("DRB"); // From the Vault: Dragons + add("ME2"); // Masters Edition II + add("PWPN"); // Wizards Play Network 2008 + add("ALA"); // Shards of Alara + add("DD2"); // Duel Decks: Jace vs. Chandra + add("PWP09"); // Wizards Play Network 2009 + add("PDTP"); // Duels of the Planeswalkers 2009 Promos + //add("PMPS09"); // Magic Premiere Shop 2009 + add("P09"); // Magic Player Rewards 2009 + add("G09"); // Judge Gift Cards 2009 + add("F09"); // Friday Night Magic 2009 + add("PBOK"); // Miscellaneous Book Promos + add("CON"); // Conflux + add("DDC"); // Duel Decks: Divine vs. Demonic + add("PPRE"); // Prerelease Events + add("ARB"); // Alara Reborn + add("PM10"); // Magic 2010 Promos + add("M10"); // Magic 2010 + add("V09"); // From the Vault: Exiled + add("HOP"); // Planechase + add("ME3"); // Masters Edition III + add("PZEN"); // Zendikar Promos + add("ZEN"); // Zendikar + add("DDD"); // Duel Decks: Garruk vs. Liliana + add("H09"); // Premium Deck Series: Slivers + add("PDP10"); // Duels of the Planeswalkers 2010 Promos + add("PWP10"); // Wizards Play Network 2010 + //add("PMPS10"); // Magic Premiere Shop 2010 + add("P10"); // Magic Player Rewards 2010 + add("G10"); // Judge Gift Cards 2010 + add("F10"); // Friday Night Magic 2010 + add("WWK"); // Worldwake + add("DDE"); // Duel Decks: Phyrexia vs. the Coalition + add("ROE"); // Rise of the Eldrazi + add("DPA"); // Duels of the Planeswalkers + add("ARC"); // Archenemy + add("PM11"); // Magic 2011 Promos + add("M11"); // Magic 2011 + add("PWWK"); // Worldwake Promos + add("PROE"); // Rise of the Eldrazi Promos + add("V10"); // From the Vault: Relics + add("DDF"); // Duel Decks: Elspeth vs. Tezzeret + add("PSOM"); // Scars of Mirrodin Promos + add("SOM"); // Scars of Mirrodin + add("TD0"); // Magic Online Theme Decks + add("PD2"); // Premium Deck Series: Fire and Lightning + //add("PMPS11"); // Magic Premiere Shop 2011 + add("PDP11"); // Duels of the Planeswalkers 2011 Promos + add("PWP11"); // Wizards Play Network 2011 + //add("PS11"); // Salvat 2011 + add("P11"); // Magic Player Rewards 2011 + add("G11"); // Judge Gift Cards 2011 + add("F11"); // Friday Night Magic 2011 + add("ME4"); // Masters Edition IV + add("PMBS"); // Mirrodin Besieged Promos + add("MBS"); // Mirrodin Besieged + add("DDG"); // Duel Decks: Knights vs. Dragons + add("PNPH"); // New Phyrexia Promos + add("NPH"); // New Phyrexia + add("TD2"); // Duel Decks: Mirrodin Pure vs. New Phyrexia + add("PCMD"); // Commander 2011 Launch Party + add("CMD"); // Commander 2011 + add("PM12"); // Magic 2012 Promos + add("M12"); // Magic 2012 + add("V11"); // From the Vault: Legends + add("DDH"); // Duel Decks: Ajani vs. Nicol Bolas + add("PISD"); // Innistrad Promos + add("ISD"); // Innistrad + add("PD3"); // Premium Deck Series: Graveborn + add("PIDW"); // IDW Comics 2012 + add("PWP12"); // Wizards Play Network 2012 + add("PDP12"); // Duels of the Planeswalkers 2012 Promos + add("J12"); // Judge Gift Cards 2012 + add("F12"); // Friday Night Magic 2012 + add("PDKA"); // Dark Ascension Promos + add("DKA"); // Dark Ascension + add("DDI"); // Duel Decks: Venser vs. Koth + add("PHEL"); // Open the Helvault + add("PAVR"); // Avacyn Restored Promos + add("AVR"); // Avacyn Restored + add("PC2"); // Planechase 2012 + add("PM13"); // Magic 2013 Promos + add("M13"); // Magic 2013 + add("V12"); // From the Vault: Realms + add("DDJ"); // Duel Decks: Izzet vs. Golgari + add("RTR"); // Return to Ravnica + add("PRTR"); // Return to Ravnica Promos + add("CM1"); // Commander's Arsenal + add("PDP13"); // Duels of the Planeswalkers 2013 Promos + add("PI13"); // IDW Comics 2013 + add("J13"); // Judge Gift Cards 2013 + add("F13"); // Friday Night Magic 2013 + add("PGTC"); // Gatecrash Promos + add("GTC"); // Gatecrash + add("DDK"); // Duel Decks: Sorin vs. Tibalt + add("PDGM"); // Dragon's Maze Promos + add("DGM"); // Dragon's Maze + add("MMA"); // Modern Masters + add("PM14"); // Magic 2014 Promos + add("PSDC"); // San Diego Comic-Con 2013 + add("M14"); // Magic 2014 + add("V13"); // From the Vault: Twenty + add("DDL"); // Duel Decks: Heroes vs. Monsters + add("PTHS"); // Theros Promos + add("THS"); // Theros + add("C13"); // Commander 2013 + add("PDP14"); // Duels of the Planeswalkers 2014 Promos + add("PI14"); // IDW Comics 2014 + add("J14"); // Judge Gift Cards 2014 + add("F14"); // Friday Night Magic 2014 + add("PBNG"); // Born of the Gods Promos + //add("THP2"); // Born of the Gods Hero's Path + add("BNG"); // Born of the Gods + add("DDM"); // Duel Decks: Jace vs. Vraska + add("PJOU"); // Journey into Nyx Promos + add("JOU"); // Journey into Nyx + add("MD1"); // Modern Event Deck 2014 + add("PLPA"); // Launch Parties + add("CNS"); // Conspiracy + add("VMA"); // Vintage Masters + add("PS14"); // San Diego Comic-Con 2014 + //add("PPC1"); // M15 Prerelease Challenge + add("PM15"); // Magic 2015 Promos + add("M15"); // Magic 2015 + add("CP1"); // Magic 2015 Clash Pack + add("V14"); // From the Vault: Annihilation + add("DDN"); // Duel Decks: Speed vs. Cunning + add("KTK"); // Khans of Tarkir + add("PKTK"); // Khans of Tarkir Promos + add("C14"); // Commander 2014 + //add("PCEL"); // Celebration Cards + add("JVC"); // Duel Decks Anthology: Jace vs. Chandra + add("GVL"); // Duel Decks Anthology: Garruk vs. Liliana + add("EVG"); // Duel Decks Anthology: Elves vs. Goblins + add("DVD"); // Duel Decks Anthology: Divine vs. Demonic + add("J15"); // Judge Gift Cards 2015 + add("F15"); // Friday Night Magic 2015 + add("UGIN"); // Ugin's Fate + add("PURL"); // URL/Convention Promos + add("CP2"); // Fate Reforged Clash Pack + add("FRF"); // Fate Reforged + add("PFRF"); // Fate Reforged Promos + add("DDO"); // Duel Decks: Elspeth vs. Kiora + add("DTK"); // Dragons of Tarkir + add("PDTK"); // Dragons of Tarkir Promos + add("PTKDF"); // Tarkir Dragonfury + add("TPR"); // Tempest Remastered + add("MM2"); // Modern Masters 2015 + add("PS15"); // San Diego Comic-Con 2015 + add("CP3"); // Magic Origins Clash Pack + add("PORI"); // Magic Origins Promos + add("ORI"); // Magic Origins + add("V15"); // From the Vault: Angels + add("DDP"); // Duel Decks: Zendikar vs. Eldrazi + add("BFZ"); // Battle for Zendikar + add("PSS1"); // BFZ Standard Series + add("EXP"); // Zendikar Expeditions + add("PBFZ"); // Battle for Zendikar Promos + add("C15"); // Commander 2015 + add("PZ1"); // Legendary Cube Prize Pack + add("J16"); // Judge Gift Cards 2016 + add("F16"); // Friday Night Magic 2016 + add("OGW"); // Oath of the Gatewatch + add("POGW"); // Oath of the Gatewatch Promos + add("DDQ"); // Duel Decks: Blessed vs. Cursed + add("SOI"); // Shadows over Innistrad + add("W16"); // Welcome Deck 2016 + add("PSOI"); // Shadows over Innistrad Promos + add("EMA"); // Eternal Masters + add("PEMN"); // Eldritch Moon Promos + add("EMN"); // Eldritch Moon + add("V16"); // From the Vault: Lore + add("CN2"); // Conspiracy: Take the Crown + add("DDR"); // Duel Decks: Nissa vs. Ob Nixilis + add("PKLD"); // Kaladesh Promos + add("KLD"); // Kaladesh + add("MPS"); // Kaladesh Inventions + add("PS16"); // San Diego Comic-Con 2016 + add("C16"); // Commander 2016 + add("PCA"); // Planechase Anthology + add("J17"); // Judge Gift Cards 2017 + add("F17"); // Friday Night Magic 2017 + add("AER"); // Aether Revolt + add("PAER"); // Aether Revolt Promos + add("MM3"); // Modern Masters 2017 + add("DDS"); // Duel Decks: Mind vs. Might + add("W17"); // Welcome Deck 2017 + add("PAKH"); // Amonkhet Promos + add("AKH"); // Amonkhet + add("MP2"); // Amonkhet Invocations + add("CMA"); // Commander Anthology + add("E01"); // Archenemy: Nicol Bolas + add("PHOU"); // Hour of Devastation Promos + add("HOU"); // Hour of Devastation + add("PS17"); // San Diego Comic-Con 2017 + add("C17"); // Commander 2017 + add("PWCQ"); // World Magic Cup Qualifiers + add("H17"); // HasCon 2017 + add("HTR"); // 2016 Heroes of the Realm + add("PXLN"); // Ixalan Promos + add("XLN"); // Ixalan + add("PSS2"); // XLN Standard Showdown + add("G17"); // 2017 Gift Pack + add("DDT"); // Duel Decks: Merfolk vs. Goblins + add("PUST"); // Unstable Promos + add("IMA"); // Iconic Masters + add("V17"); // From the Vault: Transform + add("PXTC"); // XLN Treasure Chest + add("E02"); // Explorers of Ixalan + add("UST"); // Unstable + add("J18"); // Judge Gift Cards 2018 + add("PRIX"); // Rivals of Ixalan Promos + add("RIX"); // Rivals of Ixalan + add("PNAT"); // Nationals Promos + add("A25"); // Masters 25 + add("DDU"); // Duel Decks: Elves vs. Inventors + add("PDOM"); // Dominaria Promos + add("DOM"); // Dominaria + add("CM2"); // Commander Anthology Volume II + add("BBD"); // Battlebond + add("PBBD"); // Battlebond Promos + add("PGPX"); // Grand Prix Promos + add("SS1"); // Signature Spellbook: Jace + add("GS1"); // Global Series Jiang Yanggu & Mu Yanling + add("PM19"); // Core Set 2019 Promos + add("PSS3"); // M19 Standard Showdown + add("M19"); // Core Set 2019 + add("ANA"); // Arena New Player Experience + add("XANA"); // Arena New Player Experience Extras + add("PS18"); // San Diego Comic-Con 2018 + //add("HTR17"); // Heroes of the Realm 2017 + add("C18"); // Commander 2018 + add("PGRN"); // Guilds of Ravnica Promos + add("PRWK"); // GRN Ravnica Weekend + add("GRN"); // Guilds of Ravnica + add("GK1"); // GRN Guild Kit + add("GNT"); // Game Night + add("G18"); // M19 Gift Pack + add("PZ2"); // Treasure Chest + add("PUMA"); // Ultimate Box Topper + add("UMA"); // Ultimate Masters + add("PF19"); // MagicFest 2019 + add("PRNA"); // Ravnica Allegiance Promos + add("RNA"); // Ravnica Allegiance + add("GK2"); // RNA Guild Kit + add("PRW2"); // RNA Ravnica Weekend + add("J19"); // Judge Gift Cards 2019 + add("PRM"); // Magic Online Promos + add("MED"); // Mythic Edition + add("WAR"); // War of the Spark + add("PWAR"); // War of the Spark Promos + add("PMH1"); // Modern Horizons Promos + add("MH1"); // Modern Horizons + add("SS2"); // Signature Spellbook: Gideon + add("PRES"); // Resale Promos + add("PPP1"); // M20 Promo Packs + add("PM20"); // Core Set 2020 Promos + add("M20"); // Core Set 2020 + add("PS19"); // San Diego Comic-Con 2019 + //add("HTR18"); // Heroes of the Realm 2018 + add("C19"); // Commander 2019 + add("PELD"); // Throne of Eldraine Promos + add("ELD"); // Throne of Eldraine + //add("PTG"); // Ponies: The Galloping + //add("CMB1"); // Mystery Booster Playtest Cards + add("MB1"); // Mystery Booster + add("GN2"); // Game Night 2019 + add("HA1"); // Historic Anthology 1 + //add("HHO"); // Happy Holidays + add("OVNT"); // Vintage Championship + add("OLGC"); // Legacy Championship + add("PPRO"); // Pro Tour Promos + add("PF20"); // MagicFest 2020 + add("J20"); // Judge Gift Cards 2020 + add("PTHB"); // Theros Beyond Death Promos + add("THB"); // Theros Beyond Death + add("PWOR"); // World Championship Promos + add("PANA"); // MTG Arena Promos + add("PSLD"); // Secret Lair Drop Promos + add("UND"); // Unsanctioned + add("FMB1"); // Mystery Booster Retail Edition Foils + add("HA2"); // Historic Anthology 2 + add("SLD"); // Secret Lair Drop + add("PMEI"); // Magazine Inserts + add("SLU"); // Secret Lair: Ultimate Edition + //add("SS3"); // Signature Spellbook: Chandra + add("HA3"); // Historic Anthology 3 - add("ULG"); - add("6ED"); - add("UDS"); - add("PTK"); - add("S99"); - add("MMQ"); - // add("BRB");Battle Royale Box Set - add("NEM"); - add("S00"); - add("PCY"); - add("INV"); - // add("BTD"); // Beatdown Boxset - add("PLS"); - add("7ED"); - add("APC"); - add("ODY"); - // add("DKM"); // Deckmasters 2001 - add("TOR"); - add("JUD"); - add("ONS"); - add("LGN"); - add("SCG"); - add("8ED"); - add("MRD"); - add("DST"); - add("5DN"); - add("CHK"); - add("UNH"); - add("BOK"); - add("SOK"); - add("9ED"); - add("RAV"); - add("GPT"); - add("DIS"); - add("CSP"); - add("TSP"); - add("TSB"); - add("PLC"); - add("FUT"); - add("10E"); - add("MED"); - add("LRW"); - add("EVG"); - add("MOR"); - add("SHM"); - add("EVE"); - add("DRB"); - add("ME2"); - add("ALA"); - add("DD2"); - add("CON"); - add("DDC"); - add("ARB"); - add("M10"); - // add("TD0"); // Magic Online Deck Series - add("V09"); - add("HOP"); - add("ME3"); - add("ZEN"); - add("DDD"); - add("H09"); - add("WWK"); - add("DDE"); - add("ROE"); - // duels of the planewalkers: - add("DPA"); - add("DPAP"); - // - add("ARC"); - add("M11"); - add("V10"); - add("DDF"); - add("SOM"); // add("TD0"); // Commander Theme Decks - add("PD2"); - add("ME4"); - add("MBS"); - add("DDG"); - add("NPH"); - add("CMD"); - add("M12"); - add("V11"); - add("DDH"); - add("ISD"); - add("PD3"); - add("DKA"); - add("DDI"); - add("AVR"); - add("PC2"); - add("M13"); - add("V12"); - add("DDJ"); - add("RTR"); - add("CM1"); // add("TD2"); // Duel Decks: Mirrodin Pure vs. New Phyrexia - add("GTC"); - add("DDK"); - add("DGM"); - add("MMA"); - add("M14"); - add("V13"); - add("DDL"); - add("THS"); - add("C13"); - add("BNG"); - add("DDM"); - add("JOU"); // add("MD1"); // Modern Event Deck - add("CNS"); - add("VMA"); - add("M15"); - add("V14"); - add("DDN"); - add("KTK"); - add("C14"); // add("DD3"); // Duel Decks Anthology - add("FRF"); - add("DDO"); - add("DTK"); - add("TPR"); - add("MM2"); - add("ORI"); - add("V15"); - add("DDP"); - add("BFZ"); - add("EXP"); - add("C15"); // add("PZ1"); // Legendary Cube - add("OGW"); - add("DDQ"); - add("W16"); - add("SOI"); - add("EMA"); - add("EMN"); - add("V16"); - add("CN2"); - add("DDR"); - add("KLD"); - add("MPS"); - // add("PZ2"); - add("C16"); - add("PCA"); - add("AER"); - add("MM3"); - add("DDS"); - add("W17"); - add("AKH"); - add("CMA"); - add("E01"); - add("HOU"); - add("C17"); - add("XLN"); - add("DDT"); - add("IMA"); - add("E02"); - add("V17"); - add("UST"); - add("DDU"); - add("RIX"); - add("WMCQ"); - add("PPRO"); - add("A25"); - add("DOM"); - add("BBD"); - add("C18"); - add("CM2"); - add("M19"); - add("GS1"); - add("GRN"); - add("GK1"); - add("GNT"); - add("UMA"); - add("PUMA"); - add("RNA"); - add("MEDM"); - add("GK2"); - add("MH1"); - add("WAR"); - add("M20"); - add("C19"); - add("ELD"); - add("THB"); - add("IKO"); - add("C20"); - add("MB1"); - add("FMB1"); + add("IKO"); // Ikoria: Lair of Behemoths + add("C20"); // Commander 2020 Edition // - add("EURO"); - add("GPX"); - add("ATH"); - add("GRC"); - add("ANA"); - add("G18"); - add("PM20"); - add("PS19"); - add("SS1"); - add("SS2"); - add("PPP1"); - add("PF19"); - add("MPS-AKH"); - add("M21"); - add("JMP"); + add("M21"); // Core Set 2021 + add("JMP"); // Jumpstart + add("2XM"); // Double Masters } }; private static final Map directDownloadLinks = new HashMap() { { - // xmage card -> direct or api link: + // xmage card -> api link: // examples: - // direct example: https://img.scryfall.com/cards/large/en/trix/6.jpg - // api example: https://api.scryfall.com/cards/trix/6/en?format=image - // api example: https://api.scryfall.com/cards/trix/6?format=image + // api example: https://api.scryfall.com/cards/trix/6/ // api format is primary // // code form for one card: @@ -281,111 +502,83 @@ public class ScryfallImageSupportCards { // set/card_name/card_number // set/card_name/card_number - // Duels of the Planeswalkers Promos -- xmage uses one set (DPAP), but scryfall store it by years - // 2009 - https://scryfall.com/sets/pdtp - put("DPAP/Garruk Wildspeaker", "https://api.scryfall.com/cards/pdtp/1/en?format=image"); - // 2010 - https://scryfall.com/sets/pdp10 - put("DPAP/Liliana Vess", "https://api.scryfall.com/cards/pdp10/1/en?format=image"); - put("DPAP/Nissa Revane", "https://api.scryfall.com/cards/pdp10/2/en?format=image"); - // 2011 - https://scryfall.com/sets/pdp11 - put("DPAP/Frost Titan", "https://api.scryfall.com/cards/pdp11/1/en?format=image"); - put("DPAP/Grave Titan", "https://api.scryfall.com/cards/pdp11/2/en?format=image"); - put("DPAP/Inferno Titan", "https://api.scryfall.com/cards/pdp11/3/en?format=image"); - // 2012 - https://scryfall.com/sets/pdp12 - put("DPAP/Primordial Hydra", "https://api.scryfall.com/cards/pdp12/1/en?format=image"); - put("DPAP/Serra Avatar", "https://api.scryfall.com/cards/pdp12/2/en?format=image"); - put("DPAP/Vampire Nocturnus", "https://api.scryfall.com/cards/pdp12/3/en?format=image"); - // 2013 - https://scryfall.com/sets/pdp13 - put("DPAP/Bonescythe Sliver", "https://api.scryfall.com/cards/pdp13/1/en?format=image"); - put("DPAP/Ogre Battledriver", "https://api.scryfall.com/cards/pdp13/2/en?format=image"); - put("DPAP/Scavenging Ooze", "https://api.scryfall.com/cards/pdp13/3/en?format=image"); - // 2014 - https://scryfall.com/sets/pdp14 - put("DPAP/Soul of Ravnica", "https://api.scryfall.com/cards/pdp14/1/en?format=image"); - put("DPAP/Soul of Zendikar", "https://api.scryfall.com/cards/pdp14/2/en?format=image"); + // Cards with non-ASCII collector numbers must use direct download (cause xmage uses different card number) + // J14 + put("J14/Plains/1*", "https://api.scryfall.com/cards/j14/1★/"); + put("J14/Island/2*", "https://api.scryfall.com/cards/j14/2★/"); + put("J14/Swamp/3*", "https://api.scryfall.com/cards/j14/3★/"); + put("J14/Mountain/4*", "https://api.scryfall.com/cards/j14/4★/"); + put("J14/Forest/5*", "https://api.scryfall.com/cards/j14/5★/"); + // PLS + put("PLS/Tahngarth, Talruum Hero/74*", "https://api.scryfall.com/cards/pls/74★/"); + put("PLS/Ertai, the Corrupted/107*", "https://api.scryfall.com/cards/pls/107★/"); + put("PLS/Skyship Weatherlight/133*", "https://api.scryfall.com/cards/pls/133★/"); + // PROE + put("PROE/Emrakul, the Aeons Torn/*4", "https://api.scryfall.com/cards/proe/★4/"); + put("PROE/Lord of Shatterskull Pass/*156", "https://api.scryfall.com/cards/proe/★156/"); + // PAL99 + put("PAL99/Island/3+", "https://api.scryfall.com/cards/pal99/3†/"); + // PSOI + put("PSOI/Tamiyo's Journal/265s+", "https://api.scryfall.com/cards/psoi/265s†/"); + // DKM + put("DKM/Icy Manipulator/36s", "https://api.scryfall.com/cards/dkm/36★/"); + put("DKM/Incinerate/14s", "https://api.scryfall.com/cards/dkm/14★/"); + // PWAR + put("PWAR/Ajani, the Greathearted/184s*", "https://api.scryfall.com/cards/pwar/184s★/"); + put("PWAR/Angrath, Captain of Chaos/227s*", "https://api.scryfall.com/cards/pwar/227s★/"); + put("PWAR/Arlinn, Voice of the Pack/150s*", "https://api.scryfall.com/cards/pwar/150s★/"); + put("PWAR/Ashiok, Dream Render/228s*", "https://api.scryfall.com/cards/pwar/228s★/"); + put("PWAR/Chandra, Fire Artisan/119s*", "https://api.scryfall.com/cards/pwar/119s★/"); + put("PWAR/Davriel, Rogue Shadowmage/83s*", "https://api.scryfall.com/cards/pwar/83s★/"); + put("PWAR/Domri, Anarch of Bolas/191s*", "https://api.scryfall.com/cards/pwar/191s★/"); + put("PWAR/Dovin, Hand of Control/229s*", "https://api.scryfall.com/cards/pwar/229s★/"); + put("PWAR/Gideon Blackblade/13s*", "https://api.scryfall.com/cards/pwar/13s★/"); + put("PWAR/Huatli, the Sun's Heart/230s*", "https://api.scryfall.com/cards/pwar/230s★/"); + put("PWAR/Jace, Wielder of Mysteries/54s*", "https://api.scryfall.com/cards/pwar/54s★/"); + put("PWAR/Jaya, Venerated Firemage/135s*", "https://api.scryfall.com/cards/pwar/135s★/"); + put("PWAR/Jiang Yanggu, Wildcrafter/164s*", "https://api.scryfall.com/cards/pwar/164s★/"); + put("PWAR/Karn, the Great Creator/1s*", "https://api.scryfall.com/cards/pwar/1s★/"); + put("PWAR/Kasmina, Enigmatic Mentor/56s*", "https://api.scryfall.com/cards/pwar/56s★/"); + put("PWAR/Kaya, Bane of the Dead/231s*", "https://api.scryfall.com/cards/pwar/231s★/"); + put("PWAR/Kiora, Behemoth Beckoner/232s*", "https://api.scryfall.com/cards/pwar/232s★/"); + put("PWAR/Liliana, Dreadhorde General/97s*", "https://api.scryfall.com/cards/pwar/97s★/"); + put("PWAR/Nahiri, Storm of Stone/233s*", "https://api.scryfall.com/cards/pwar/233s★/"); + put("PWAR/Narset, Parter of Veils/61s*", "https://api.scryfall.com/cards/pwar/61s★/"); + put("PWAR/Nicol Bolas, Dragon-God/207s*", "https://api.scryfall.com/cards/pwar/207s★/"); + put("PWAR/Nissa, Who Shakes the World/169s*", "https://api.scryfall.com/cards/pwar/169s★/"); + put("PWAR/Ob Nixilis, the Hate-Twisted/100s*", "https://api.scryfall.com/cards/pwar/100s★/"); + put("PWAR/Ral, Storm Conduit/211s*", "https://api.scryfall.com/cards/pwar/211s★/"); + put("PWAR/Saheeli, Sublime Artificer/234s*", "https://api.scryfall.com/cards/pwar/234s★/"); + put("PWAR/Samut, Tyrant Smasher/235s*", "https://api.scryfall.com/cards/pwar/235s★/"); + put("PWAR/Sarkhan the Masterless/143s*", "https://api.scryfall.com/cards/pwar/143s★/"); + put("PWAR/Sorin, Vengeful Bloodlord/217s*", "https://api.scryfall.com/cards/pwar/217s★/"); + put("PWAR/Tamiyo, Collector of Tales/220s*", "https://api.scryfall.com/cards/pwar/220s★/"); + put("PWAR/Teferi, Time Raveler/221s*", "https://api.scryfall.com/cards/pwar/221s★/"); + put("PWAR/Teyo, the Shieldmage/32s*", "https://api.scryfall.com/cards/pwar/32s★/"); + put("PWAR/The Wanderer/37s*", "https://api.scryfall.com/cards/pwar/37s★/"); + put("PWAR/Tibalt, Rakish Instigator/146s*", "https://api.scryfall.com/cards/pwar/146s★/"); + put("PWAR/Ugin, the Ineffable/2s*", "https://api.scryfall.com/cards/pwar/2s★/"); + put("PWAR/Vivien, Champion of the Wilds/180s*", "https://api.scryfall.com/cards/pwar/180s★/"); + put("PWAR/Vraska, Swarm's Eminence/236s*", "https://api.scryfall.com/cards/pwar/236s★/"); - // Gateway Promos -- xmage uses one set (GRC), but scryfall store it by years - // 2006 - https://scryfall.com/sets/pgtw - put("GRC/Fiery Temper", "https://api.scryfall.com/cards/pgtw/3/en?format=image"); - put("GRC/Icatian Javelineers", "https://api.scryfall.com/cards/pgtw/2/en?format=image"); - put("GRC/Wood Elves", "https://api.scryfall.com/cards/pgtw/1/en?format=image"); - // 2007 - https://scryfall.com/sets/pg07 - put("GRC/Boomerang", "https://api.scryfall.com/cards/pg07/4/en?format=image"); - put("GRC/Calciderm", "https://api.scryfall.com/cards/pg07/5/en?format=image"); - put("GRC/Dauntless Dourbark", "https://api.scryfall.com/cards/pg07/12/en?format=image"); - put("GRC/Llanowar Elves", "https://api.scryfall.com/cards/pg07/9/en?format=image"); - put("GRC/Mind Stone", "https://api.scryfall.com/cards/pg07/11/en?format=image"); - put("GRC/Mogg Fanatic", "https://api.scryfall.com/cards/pg07/10/en?format=image"); - put("GRC/Reckless Wurm", "https://api.scryfall.com/cards/pg07/6/en?format=image"); - put("GRC/Yixlid Jailer", "https://api.scryfall.com/cards/pg07/7/en?format=image"); - put("GRC/Zoetic Cavern", "https://api.scryfall.com/cards/pg07/8/en?format=image"); - // 2008a - https://scryfall.com/sets/pg08 - put("GRC/Boggart Ram-Gang", "https://api.scryfall.com/cards/pg08/17/en?format=image"); - put("GRC/Cenn's Tactician", "https://api.scryfall.com/cards/pg08/14/en?format=image"); - put("GRC/Duergar Hedge-Mage", "https://api.scryfall.com/cards/pg08/19/en?format=image"); - put("GRC/Gravedigger", "https://api.scryfall.com/cards/pg08/16/en?format=image"); - put("GRC/Lava Axe", "https://api.scryfall.com/cards/pg08/13/en?format=image"); - put("GRC/Oona's Blackguard", "https://api.scryfall.com/cards/pg08/15/en?format=image"); - put("GRC/Selkie Hedge-Mage", "https://api.scryfall.com/cards/pg08/20/en?format=image"); - put("GRC/Wilt-Leaf Cavaliers", "https://api.scryfall.com/cards/pg08/18/en?format=image"); - - // Wizards Play Network Promos -- xmage uses one set (GRC), but scryfall store it by years - // 2008b - https://scryfall.com/sets/pwpn - put("GRC/Sprouting Thrinax", "https://api.scryfall.com/cards/pwpn/21/en?format=image"); - put("GRC/Woolly Thoctar", "https://api.scryfall.com/cards/pwpn/22/en?format=image"); - // 2009 - https://scryfall.com/sets/pwp09 - put("GRC/Hellspark Elemental", "https://api.scryfall.com/cards/pwp09/25/en?format=image"); - put("GRC/Kor Duelist", "https://api.scryfall.com/cards/pwp09/32/en?format=image"); - put("GRC/Marisi's Twinclaws", "https://api.scryfall.com/cards/pwp09/26/en?format=image"); - put("GRC/Mind Control", "https://api.scryfall.com/cards/pwp09/30/en?format=image"); - put("GRC/Path to Exile", "https://api.scryfall.com/cards/pwp09/24/en?format=image"); - put("GRC/Rise from the Grave", "https://api.scryfall.com/cards/pwp09/31/en?format=image"); - put("GRC/Slave of Bolas", "https://api.scryfall.com/cards/pwp09/27/en?format=image"); - put("GRC/Vampire Nighthawk", "https://api.scryfall.com/cards/pwp09/33/en?format=image"); - // 2010 - https://scryfall.com/sets/pwp10 - put("GRC/Kor Firewalker", "https://api.scryfall.com/cards/pwp10/36/en?format=image"); - put("GRC/Leatherback Baloth", "https://api.scryfall.com/cards/pwp10/37/en?format=image"); - put("GRC/Syphon Mind", "https://api.scryfall.com/cards/pwp10/40/en?format=image"); - put("GRC/Pathrazer of Ulamog", "https://api.scryfall.com/cards/pwp10/46/en?format=image"); - put("GRC/Curse of Wizardry", "https://api.scryfall.com/cards/pwp10/47/en?format=image"); - put("GRC/Fling/50", "https://api.scryfall.com/cards/pwp10/50/en?format=image"); // same card but different year - put("GRC/Sylvan Ranger/51", "https://api.scryfall.com/cards/pwp10/51/en?format=image"); // same card but different year - put("GRC/Plague Stinger", "https://api.scryfall.com/cards/pwp10/59/en?format=image"); - put("GRC/Golem's Heart", "https://api.scryfall.com/cards/pwp10/60/en?format=image"); - put("GRC/Skinrender", "https://api.scryfall.com/cards/pwp10/63/en?format=image"); - // 2011 - https://scryfall.com/sets/pwp11 - put("GRC/Auramancer", "https://api.scryfall.com/cards/pwp11/77/en?format=image"); - put("GRC/Bloodcrazed Neonate", "https://api.scryfall.com/cards/pwp11/83/en?format=image"); - put("GRC/Boneyard Wurm", "https://api.scryfall.com/cards/pwp11/84/en?format=image"); - put("GRC/Circle of Flame", "https://api.scryfall.com/cards/pwp11/78/en?format=image"); - put("GRC/Curse of the Bloody Tome", "https://api.scryfall.com/cards/pwp11/80/en?format=image"); - put("GRC/Fling/69", "https://api.scryfall.com/cards/pwp11/69/en?format=image"); // same card but different year - put("GRC/Master's Call", "https://api.scryfall.com/cards/pwp11/64/en?format=image"); - put("GRC/Maul Splicer", "https://api.scryfall.com/cards/pwp11/72/en?format=image"); - put("GRC/Plague Myr", "https://api.scryfall.com/cards/pwp11/65/en?format=image"); - put("GRC/Shrine of Burning Rage", "https://api.scryfall.com/cards/pwp11/73/en?format=image"); - put("GRC/Signal Pest", "https://api.scryfall.com/cards/pwp11/66/en?format=image"); - put("GRC/Sylvan Ranger/70", "https://api.scryfall.com/cards/pwp11/70/en?format=image"); // same card but different year - put("GRC/Tormented Soul", "https://api.scryfall.com/cards/pwp11/76/en?format=image"); - put("GRC/Vault Skirge", "https://api.scryfall.com/cards/pwp11/71/en?format=image"); - // 2012 - https://scryfall.com/sets/pwp12 - put("GRC/Curse of Thirst", "https://api.scryfall.com/cards/pwp12/81/en?format=image"); - put("GRC/Gather the Townsfolk", "https://api.scryfall.com/cards/pwp12/79/en?format=image"); - put("GRC/Nearheath Stalker", "https://api.scryfall.com/cards/pwp12/82/en?format=image"); - - // Spined Wurm print in Starter 2000 is actually from Magazine Inserts - put("S00/Spined Wurm", "https://api.scryfall.com/cards/pmei/11/en?format=image"); - // Most of the other S00 cards are from 6ED - // We'll download lands manually because we have multiple arts and XMage has totally different ID's - put("S00/Forest/49", "https://api.scryfall.com/cards/6ed/347/en?format=image"); - put("S00/Forest/50", "https://api.scryfall.com/cards/6ed/348/en?format=image"); - put("S00/Island/51", "https://api.scryfall.com/cards/6ed/335/en?format=image"); - put("S00/Island/52", "https://api.scryfall.com/cards/6ed/336/en?format=image"); - put("S00/Mountain/53", "https://api.scryfall.com/cards/6ed/343/en?format=image"); - put("S00/Mountain/54", "https://api.scryfall.com/cards/6ed/344/en?format=image"); - put("S00/Plains/55", "https://api.scryfall.com/cards/6ed/331/en?format=image"); - put("S00/Plains/56", "https://api.scryfall.com/cards/6ed/332/en?format=image"); - put("S00/Swamp/57", "https://api.scryfall.com/cards/6ed/339/en?format=image"); - put("S00/Swamp/58", "https://api.scryfall.com/cards/6ed/340/en?format=image"); + // 8th Edition box set and 9th Edition box set + // scryfall stores it with one set, by xmage split into two -- 8ED and 8EB, 9ED and 9EB + put("8EB/Eager Cadet", "https://api.scryfall.com/cards/8ed/S1/"); + put("8EB/Vengeance", "https://api.scryfall.com/cards/8ed/S2/"); + put("8EB/Giant Octopus", "https://api.scryfall.com/cards/8ed/S3/"); + put("8EB/Sea Eagle", "https://api.scryfall.com/cards/8ed/S4/"); + put("8EB/Vizzerdrix", "https://api.scryfall.com/cards/8ed/S5/"); + put("8EB/Enormous Baloth", "https://api.scryfall.com/cards/8ed/S6/"); + put("8EB/Silverback Ape", "https://api.scryfall.com/cards/8ed/S7/"); + put("9EB/Eager Cadet", "https://api.scryfall.com/cards/9ed/S1/"); + put("9EB/Vengeance", "https://api.scryfall.com/cards/9ed/S3/"); + put("9EB/Coral Eel", "https://api.scryfall.com/cards/9ed/S3/"); + put("9EB/Giant Octopus", "https://api.scryfall.com/cards/9ed/S4/"); + put("9EB/Index", "https://api.scryfall.com/cards/9ed/S5/"); + put("9EB/Vizzerdrix", "https://api.scryfall.com/cards/9ed/S7/"); + put("9EB/Goblin Raider", "https://api.scryfall.com/cards/9ed/S8/"); + put("9EB/Enormous Baloth", "https://api.scryfall.com/cards/9ed/S9/"); + put("9EB/Spined Wurm", "https://api.scryfall.com/cards/9ed/S10/"); } }; 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 8ddd4947371..eb108334ab7 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 @@ -55,7 +55,7 @@ public enum WizardCardsImageSource implements CardImageSource { languageAliases.put(CardLanguage.CHINES_TRADITION, "Chinese Traditional "); supportedSets = new LinkedHashSet<>(); - // supportedSets.add("PTC"); // Prerelease Events + // supportedSets.add("PPRE"); // Prerelease Events supportedSets.add("LEA"); supportedSets.add("LEB"); supportedSets.add("2ED"); @@ -334,12 +334,11 @@ public enum WizardCardsImageSource implements CardImageSource { setsAliases.put("EVG", "Duel Decks: Elves vs. Goblins"); setsAliases.put("EXO", "Exodus"); setsAliases.put("FEM", "Fallen Empires"); -// setsAliases.put("FNMP", "Friday Night Magic"); +// setsAliases.put("FNM", "Friday Night Magic"); setsAliases.put("FRF", "Fate Reforged"); setsAliases.put("FUT", "Future Sight"); setsAliases.put("GPT", "Guildpact"); - setsAliases.put("GPX", "Grand Prix"); - setsAliases.put("GRC", "WPN Gateway"); + setsAliases.put("PGPX", "Grand Prix"); setsAliases.put("GTC", "Gatecrash"); setsAliases.put("H09", "Premium Deck Series: Slivers"); setsAliases.put("HML", "Homelands"); @@ -350,7 +349,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"); @@ -365,21 +364,19 @@ public enum WizardCardsImageSource implements CardImageSource { setsAliases.put("M13", "Magic 2013"); setsAliases.put("M14", "Magic 2014"); setsAliases.put("M15", "Magic 2015"); - setsAliases.put("MBP", "Media Inserts"); + setsAliases.put("PMEI", "Media Inserts"); setsAliases.put("MBS", "Mirrodin Besieged"); setsAliases.put("ME2", "Masters Edition II"); setsAliases.put("ME3", "Masters Edition III"); setsAliases.put("ME4", "Masters Edition IV"); setsAliases.put("MED", "Masters Edition"); -// setsAliases.put("MGDC", "Game Day"); setsAliases.put("MIR", "Mirage"); - setsAliases.put("MLP", "Launch Party"); setsAliases.put("MMA", "Modern Masters"); setsAliases.put("MM2", "Modern Masters 2015"); setsAliases.put("MM3", "Modern Masters 2017"); setsAliases.put("MMQ", "Mercadian Masques"); setsAliases.put("MOR", "Morningtide"); - setsAliases.put("MPRP", "Magic Player Rewards"); + // setsAliases.put("MPRP", "Magic Player Rewards"); setsAliases.put("MPS", "Masterpiece Series"); setsAliases.put("MRD", "Mirrodin"); setsAliases.put("NEM", "Nemesis"); @@ -395,7 +392,7 @@ public enum WizardCardsImageSource implements CardImageSource { setsAliases.put("PLS", "Planeshift"); setsAliases.put("PO2", "Portal Second Age"); setsAliases.put("POR", "Portal"); - setsAliases.put("PTC", "Prerelease Events"); + setsAliases.put("PPRE", "Prerelease Events"); setsAliases.put("PTK", "Portal Three Kingdoms"); setsAliases.put("RAV", "Ravnica: City of Guilds"); setsAliases.put("ROE", "Rise of the Eldrazi"); @@ -436,7 +433,6 @@ public enum WizardCardsImageSource implements CardImageSource { setsAliases.put("VMA", "Vintage Masters"); setsAliases.put("W16", "Welcome Deck 2016"); setsAliases.put("W17", "Welcome Deck 2017"); - setsAliases.put("WMCQ", "World Magic Cup Qualifier"); setsAliases.put("WTH", "Weatherlight"); setsAliases.put("WWK", "Worldwake"); setsAliases.put("ZEN", "Zendikar"); @@ -462,7 +458,7 @@ public enum WizardCardsImageSource implements CardImageSource { String collectorId = card.getCollectorId(); String cardSet = card.getSet(); if (collectorId == null || cardSet == null) { - throw new Exception("Wrong parameters for image: collector id: " + collectorId + ",card set: " + cardSet); + throw new Exception("Wrong parameters for image: collector id: " + collectorId + ", card set: " + cardSet); } if (card.isFlippedSide()) { //doesn't support rotated images return null; diff --git a/Mage.Client/src/main/java/org/mage/plugins/card/images/CardDownloadData.java b/Mage.Client/src/main/java/org/mage/plugins/card/images/CardDownloadData.java index 08c0a25587e..5d7c6eaa32b 100644 --- a/Mage.Client/src/main/java/org/mage/plugins/card/images/CardDownloadData.java +++ b/Mage.Client/src/main/java/org/mage/plugins/card/images/CardDownloadData.java @@ -1,11 +1,11 @@ package org.mage.plugins.card.images; +import mage.util.CardUtil; + import java.util.Locale; import java.util.Objects; -import mage.util.CardUtil; /** - * * @author North */ public class CardDownloadData { @@ -106,10 +106,7 @@ public class CardDownloadData { if (this.secondSide != other.secondSide) { return false; } - if (this.isType2 != other.isType2) { - return false; - } - return true; + return this.isType2 == other.isType2; } @Override @@ -134,6 +131,13 @@ public class CardDownloadData { return CardUtil.parseCardNumberAsInt(collectorId); } + public String getCollectorIdAsFileName() { + // return file names compatible card number (e.g. replace special symbols) + return collectorId + .replace("*", "star") + .replace("★", "star"); + } + public String getCollectorIdPostfix() { return getCollectorId().replaceAll(getCollectorIdAsInt().toString(), ""); } diff --git a/Mage.Client/src/main/java/org/mage/plugins/card/images/DownloadPicturesService.java b/Mage.Client/src/main/java/org/mage/plugins/card/images/DownloadPicturesService.java index 6c43bb0a584..a268390dd9e 100644 --- a/Mage.Client/src/main/java/org/mage/plugins/card/images/DownloadPicturesService.java +++ b/Mage.Client/src/main/java/org/mage/plugins/card/images/DownloadPicturesService.java @@ -51,18 +51,18 @@ public class DownloadPicturesService extends DefaultBoundedRangeModel implements private static final int MAX_ERRORS_COUNT_BEFORE_CANCEL = 50; - private DownloadImagesDialog uiDialog; + private final DownloadImagesDialog uiDialog; private boolean needCancel; private int errorCount; private int cardIndex; private List cardsAll; private List cardsMissing; - private List cardsDownloadQueue; + private final List cardsDownloadQueue; private int missingCardsCount = 0; private int missingTokensCount = 0; - private List selectedSets = new ArrayList<>(); + private final List selectedSets = new ArrayList<>(); private static CardImageSource selectedSource; private final Object sync = new Object(); @@ -164,11 +164,14 @@ public class DownloadPicturesService extends DefaultBoundedRangeModel implements uiDialog.getLaunguagesCombo().setSelectedItem(PreferencesDialog.getPrefImagesLanguage()); reloadLanguagesForSelectedSource(); + // DOWNLOAD THREADS + uiDialog.getDownloadThreadsCombo().setModel(new DefaultComboBoxModel<>(new String[]{"10", "9", "8", "7", "6", "5", "4", "3", "2", "1"})); + uiDialog.getDownloadThreadsCombo().setSelectedItem(PreferencesDialog.getPrefDownloadThreads().toString()); + // REDOWNLOAD uiDialog.getRedownloadCheckbox().setSelected(false); uiDialog.getRedownloadCheckbox().addItemListener(this::checkboxRedowloadChanged); - // SETS (fills after source and language select) //uiDialog.getSetsCombo().setModel(new DefaultComboBoxModel(DownloadSources.values())); uiDialog.getSetsCombo().addItemListener((ItemEvent event) -> { @@ -253,19 +256,7 @@ public class DownloadPicturesService extends DefaultBoundedRangeModel implements } private String getSetNameWithYear(ExpansionSet exp) { - Calendar cal = Calendar.getInstance(); - cal.setTime(exp.getReleaseDate()); - String year = String.valueOf(cal.get(Calendar.YEAR)); - - return exp.getName() + " (" + exp.getCode() + ", " + year + ")"; - - /* - if (!exp.getName().contains(year)) { - return exp.getName() + " (" + year + ")"; - } else { - return exp.getName(); - } - */ + return exp.getName() + " (" + exp.getCode() + ", " + exp.getReleaseYear() + ")"; } private ExpansionSet findSetByNameWithYear(String name) { @@ -585,7 +576,6 @@ public class DownloadPicturesService extends DefaultBoundedRangeModel implements } Connection.ProxyType configProxyType = Connection.ProxyType.valueByText(PreferencesDialog.getCachedValue(PreferencesDialog.KEY_PROXY_TYPE, "None")); - Proxy.Type type = Proxy.Type.DIRECT; switch (configProxyType) { case HTTP: @@ -610,15 +600,17 @@ public class DownloadPicturesService extends DefaultBoundedRangeModel implements } } + int downloadThreadsAmount = Integer.parseInt((String) uiDialog.getDownloadThreadsCombo().getSelectedItem()); + if (proxy != null) { logger.info("Started download of " + cardsDownloadQueue.size() + " images" + " from source: " + selectedSource.getSourceName() - + ", language: " + selectedSource.getCurrentLanguage().getCode()); + + ", language: " + selectedSource.getCurrentLanguage().getCode() + + ", threads: " + downloadThreadsAmount); uiDialog.getProgressBar().setString("Preparing download list..."); if (selectedSource.prepareDownloadList(this, cardsDownloadQueue)) { update(0, cardsDownloadQueue.size()); - int numberOfThreads = Integer.parseInt(PreferencesDialog.getCachedValue(PreferencesDialog.KEY_CARD_IMAGES_THREADS, "10")); - ExecutorService executor = Executors.newFixedThreadPool(numberOfThreads); + ExecutorService executor = Executors.newFixedThreadPool(downloadThreadsAmount); for (int i = 0; i < cardsDownloadQueue.size() && !this.isNeedCancel(); i++) { try { CardDownloadData card = cardsDownloadQueue.get(i); 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 ed3684e71a1..77bbf87f9bc 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 @@ -101,7 +101,10 @@ public final class CardImageUtils { } public static String prepareCardNameForFile(String cardName) { - return cardName.replace(":", "").replace("\"", "").replace("//", "-"); + return cardName + .replace(":", "") + .replace("\"", "") + .replace("//", "-"); } public static String getImagesDir() { @@ -200,7 +203,7 @@ public final class CardImageUtils { String finalFileName = ""; if (card.getUsesVariousArt()) { // different arts uses name + collector id - finalFileName = cardName + prefixType + '.' + card.getCollectorId() + ".full.jpg"; + finalFileName = cardName + prefixType + '.' + card.getCollectorIdAsFileName() + ".full.jpg"; } else { // basic arts uses name finalFileName = cardName + prefixType + ".full.jpg"; diff --git a/Mage.Client/src/main/resources/card-pictures-tok.txt b/Mage.Client/src/main/resources/card-pictures-tok.txt index ba0aff26663..05dc6dac50c 100644 --- a/Mage.Client/src/main/resources/card-pictures-tok.txt +++ b/Mage.Client/src/main/resources/card-pictures-tok.txt @@ -12,8 +12,8 @@ #|Generate|TOK:CHK|Dragon Spirit|| #|Generate|TOK:FNMP|Centaur|| #|Generate|TOK:FNMP|Wurm|| -#|Generate|TOK:GPX|Elephant|| -#|Generate|TOK:GPX|Germ|| +#|Generate|TOK:PGPX|Elephant|| +#|Generate|TOK:PGPX|Germ|| #|Generate|TOK:GRC|Bird|| #|Generate|TOK:GRC|Golem|| #|Generate|TOK:GRC|Human|| @@ -23,28 +23,23 @@ #|Generate|TOK:JR|Faerie Rogue|| #|Generate|TOK:JR|Soldier|| #|Generate|TOK:JR|Squirrel|| -#|Generate|TOK:MBP:Beast|| -#|Generate|TOK:MBP|Cat|| -#|Generate|TOK:MBP|Dragon|| -#|Generate|TOK:MBP|Elephant|| -#|Generate|TOK:MBP|Goblin|| -#|Generate|TOK:MBP|Zombie|| -#|Generate|TOK:MGDC|Centaur|| -#|Generate|TOK:MGDC|Knight|| -#|Generate|TOK:MGDC|Rhino|| -#|Generate|TOK:MGDC|Sliver|| +#|Generate|TOK:PMEI|Beast|| +#|Generate|TOK:PMEI|Cat|| +#|Generate|TOK:PMEI|Dragon|| +#|Generate|TOK:PMEI|Elephant|| +#|Generate|TOK:PMEI|Goblin|| +#|Generate|TOK:PMEI|Zombie|| #|Generate|TOK:MLP|Thopter|| -#|Generate|TOK:PTC|Angel|| -#|Generate|TOK:PTC|Avatar|| -#|Generate|TOK:PTC|Beast|| -#|Generate|TOK:PTC|Dragon|| -#|Generate|TOK:PTC|Elemental|| -#|Generate|TOK:PTC|Harpy|| -#|Generate|TOK:PTC|Hippo|| -#|Generate|TOK:PTC|Soldier|| -#|Generate|TOK:PTC|Wolf|| -#|Generate|TOK:PTC|Wurm|| -#|Generate|TOK:WMCQ|Angel|| +#|Generate|TOK:PPRE|Angel|| +#|Generate|TOK:PPRE|Avatar|| +#|Generate|TOK:PPRE|Beast|| +#|Generate|TOK:PPRE|Dragon|| +#|Generate|TOK:PPRE|Elemental|| +#|Generate|TOK:PPRE|Harpy|| +#|Generate|TOK:PPRE|Hippo|| +#|Generate|TOK:PPRE|Soldier|| +#|Generate|TOK:PPRE|Wolf|| +#|Generate|TOK:PPRE|Wurm|| # Emblems |Generate|EMBLEM!:BFZ|Emblem Gideon|||GideonAllyOfZendikarEmblem| @@ -515,18 +510,18 @@ |Generate|TOK:DD3C|Beast|1| |Generate|TOK:DD3C|Beast|2| |Generate|TOK:DD3C|Elephant|| -|Generate|TOK:DD3DVD|Demon|||ReignOfThePitToken| -|Generate|TOK:DD3DVD|Spirit|||SpiritWhiteToken| -|Generate|TOK:DD3DVD|Thrull|||BreedingPitBlackInsectToken| +|Generate|TOK:DVD|Demon|||ReignOfThePitToken| +|Generate|TOK:DVD|Spirit|||SpiritWhiteToken| +|Generate|TOK:DVD|Thrull|||BreedingPitBlackInsectToken| |Generate|TOK:DD3D|Elemental Shaman|| -|Generate|TOK:DD3EVG|Elf Warrior|||ElfToken| -|Generate|TOK:DD3EVG|Goblin|||GoblinToken| -|Generate|TOK:DD3GVL|Ape|||PongifyApeToken| -|Generate|TOK:DD3GVL|Bat|||BatToken| -|Generate|TOK:DD3GVL|Beast|1||BeastToken2| -|Generate|TOK:DD3GVL|Beast|2||BeastToken| -|Generate|TOK:DD3GVL|Elephant|||ElephantToken| -|Generate|TOK:DD3JVC|Elemental Shaman|||ElementalShamanToken| +|Generate|TOK:EVG|Elf Warrior|||ElfToken| +|Generate|TOK:EVG|Goblin|||GoblinToken| +|Generate|TOK:GVL|Ape|||PongifyApeToken| +|Generate|TOK:GVL|Bat|||BatToken| +|Generate|TOK:GVL|Beast|||BeastToken2| +|Generate|TOK:GVL|Beast|||BeastToken| +|Generate|TOK:GVL|Elephant|||ElephantToken| +|Generate|TOK:JVC|Elemental Shaman|||ElementalShamanToken| |Generate|TOK:DDC|Demon|||ReignOfThePitToken| |Generate|TOK:DDC|Spirit|||SpiritWhiteToken| |Generate|TOK:DDC|Thrull|||BreedingPitBlackInsectToken| diff --git a/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/OldSchool9394CFB.java b/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/OldSchool9394CFB.java index 946d52ca6b1..a9f38181ac9 100644 --- a/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/OldSchool9394CFB.java +++ b/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/OldSchool9394CFB.java @@ -1,28 +1,24 @@ - package mage.deck; -import mage.cards.ExpansionSet; -import mage.cards.Sets; import mage.cards.decks.Constructed; -import mage.constants.SetType; /** * This class validates a deck for the Old School 93/94 format, specifically for * the Channel Fireball Rules. - * + *

* This was originally made to follow the deck construction rules found at the * Old School Mtg blog found at: * http://oldschool-mtg.blogspot.com/p/banrestriction.html - * + *

* There is no mana burn in this version of old school * * @author jmharmon */ public class OldSchool9394CFB extends Constructed { - + public OldSchool9394CFB() { super("Constructed - Old School 93/94 - Channel Fireball Rules"); - + // use the set instances to make sure that we get the correct set codes setCodes.add(mage.sets.LimitedEditionAlpha.getInstance().getCode()); setCodes.add(mage.sets.LimitedEditionBeta.getInstance().getCode()); @@ -32,8 +28,7 @@ public class OldSchool9394CFB extends Constructed { setCodes.add(mage.sets.Legends.getInstance().getCode()); setCodes.add(mage.sets.TheDark.getInstance().getCode()); setCodes.add(mage.sets.FallenEmpires.getInstance().getCode()); - setCodes.add(mage.sets.MediaInserts.getInstance().getCode()); - + // ante cards and conspiracies banned, with specifically mentioned ones called out. banned.add("Advantageous Proclamation"); banned.add("Amulet of Quoz"); @@ -57,8 +52,8 @@ public class OldSchool9394CFB extends Constructed { banned.add("Timmerian Fiends"); banned.add("Unexpected Potential"); banned.add("Worldknit"); - - //Let Media Inserts Arena and Sewers of Estark being only cards playable + + //Let Media Inserts Arena and Sewers of Estark being only cards playable banned.add("Acquire"); banned.add("Aeronaut Tinkerer"); banned.add("Ajani, Caller of the Pride"); @@ -126,7 +121,6 @@ public class OldSchool9394CFB extends Constructed { banned.add("Garruk Wildspeaker"); banned.add("Gaze of Granite"); banned.add("Genesis Hydra"); - banned.add("Giant Badger"); banned.add("Gideon of the Trials"); banned.add("Gideon, Ally of Zendikar"); banned.add("Gideon, Battle-Forged"); @@ -166,13 +160,11 @@ public class OldSchool9394CFB extends Constructed { banned.add("Liliana Vess"); banned.add("Liliana Vess"); banned.add("Magister of Worth"); - banned.add("Mana Crypt"); banned.add("Markov Dreadknight"); banned.add("Memoricide"); banned.add("Merfolk Mesmerist"); banned.add("Mirran Crusader"); banned.add("Munda's Vanguard"); - banned.add("Nalathni Dragon"); banned.add("Necromaster Dragon"); banned.add("Nephalia Moondrakes"); banned.add("Niblis of Frost"); @@ -243,9 +235,8 @@ public class OldSchool9394CFB extends Constructed { banned.add("Warmonger"); banned.add("Wash Out"); banned.add("Wildfire Eternal"); - banned.add("Windseeker Centaur"); banned.add("Xathrid Necromancer"); - + restricted.add("Ancestral Recall"); restricted.add("Balance"); restricted.add("Black Lotus"); @@ -269,6 +260,6 @@ public class OldSchool9394CFB extends Constructed { restricted.add("Time Vault"); restricted.add("Time Walk"); restricted.add("Timetwister"); - restricted.add("Wheel of Fortune"); + restricted.add("Wheel of Fortune"); } } diff --git a/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/OldSchool9394EC.java b/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/OldSchool9394EC.java index 589d8762d92..49a5cf564a7 100644 --- a/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/OldSchool9394EC.java +++ b/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/OldSchool9394EC.java @@ -1,28 +1,24 @@ - package mage.deck; -import mage.cards.ExpansionSet; -import mage.cards.Sets; import mage.cards.decks.Constructed; -import mage.constants.SetType; /** * This class validates a deck for the Old School 93/94 format, specifically for * the EC Rules. - * + *

* This was originally made to follow the deck construction rules found at the * Old School Mtg blog found at: * http://oldschool-mtg.blogspot.com/p/banrestriction.html - * + *

* There is no mana burn in this version of old school * * @author jmharmon */ public class OldSchool9394EC extends Constructed { - + public OldSchool9394EC() { super("Constructed - Old School 93/94 - EC Rules"); - + // use the set instances to make sure that we get the correct set codes setCodes.add(mage.sets.LimitedEditionAlpha.getInstance().getCode()); setCodes.add(mage.sets.LimitedEditionBeta.getInstance().getCode()); @@ -32,8 +28,7 @@ public class OldSchool9394EC extends Constructed { setCodes.add(mage.sets.Legends.getInstance().getCode()); setCodes.add(mage.sets.TheDark.getInstance().getCode()); setCodes.add(mage.sets.FallenEmpires.getInstance().getCode()); - setCodes.add(mage.sets.MediaInserts.getInstance().getCode()); - + // ante cards and conspiracies banned, with specifically mentioned ones called out. banned.add("Advantageous Proclamation"); banned.add("Amulet of Quoz"); @@ -58,7 +53,7 @@ public class OldSchool9394EC extends Constructed { banned.add("Timmerian Fiends"); banned.add("Unexpected Potential"); banned.add("Worldknit"); - + //Let Media Inserts Arena and Sewers of Estark being only cards playable banned.add("Acquire"); banned.add("Aeronaut Tinkerer"); @@ -127,7 +122,6 @@ public class OldSchool9394EC extends Constructed { banned.add("Garruk Wildspeaker"); banned.add("Gaze of Granite"); banned.add("Genesis Hydra"); - banned.add("Giant Badger"); banned.add("Gideon of the Trials"); banned.add("Gideon, Ally of Zendikar"); banned.add("Gideon, Battle-Forged"); @@ -167,13 +161,11 @@ public class OldSchool9394EC extends Constructed { banned.add("Liliana Vess"); banned.add("Liliana Vess"); banned.add("Magister of Worth"); - banned.add("Mana Crypt"); banned.add("Markov Dreadknight"); banned.add("Memoricide"); banned.add("Merfolk Mesmerist"); banned.add("Mirran Crusader"); banned.add("Munda's Vanguard"); - banned.add("Nalathni Dragon"); banned.add("Necromaster Dragon"); banned.add("Nephalia Moondrakes"); banned.add("Niblis of Frost"); @@ -244,9 +236,8 @@ public class OldSchool9394EC extends Constructed { banned.add("Warmonger"); banned.add("Wash Out"); banned.add("Wildfire Eternal"); - banned.add("Windseeker Centaur"); banned.add("Xathrid Necromancer"); - + restricted.add("Ancestral Recall"); restricted.add("Balance"); restricted.add("Black Lotus"); @@ -269,7 +260,7 @@ public class OldSchool9394EC extends Constructed { restricted.add("Time Vault"); restricted.add("Time Walk"); restricted.add("Timetwister"); - restricted.add("Wheel of Fortune"); + restricted.add("Wheel of Fortune"); } - + } diff --git a/Mage.Sets/src/mage/sets/AetherRevoltPromos.java b/Mage.Sets/src/mage/sets/AetherRevoltPromos.java new file mode 100644 index 00000000000..57c478a758e --- /dev/null +++ b/Mage.Sets/src/mage/sets/AetherRevoltPromos.java @@ -0,0 +1,84 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/paer + */ +public class AetherRevoltPromos extends ExpansionSet { + + private static final AetherRevoltPromos instance = new AetherRevoltPromos(); + + public static AetherRevoltPromos getInstance() { + return instance; + } + + private AetherRevoltPromos() { + super("Aether Revolt Promos", "PAER", ExpansionSet.buildDate(2017, 1, 21), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Aethergeode Miner", "4s", Rarity.RARE, mage.cards.a.AethergeodeMiner.class)); + cards.add(new SetCardInfo("Aethersphere Harvester", "142s", Rarity.RARE, mage.cards.a.AethersphereHarvester.class)); + cards.add(new SetCardInfo("Aethertide Whale", "27s", Rarity.RARE, mage.cards.a.AethertideWhale.class)); + cards.add(new SetCardInfo("Aetherwind Basker", "104s", Rarity.MYTHIC, mage.cards.a.AetherwindBasker.class)); + cards.add(new SetCardInfo("Aid from the Cowl", "105s", Rarity.RARE, mage.cards.a.AidFromTheCowl.class)); + cards.add(new SetCardInfo("Ajani Unyielding", "127s", Rarity.MYTHIC, mage.cards.a.AjaniUnyielding.class)); + cards.add(new SetCardInfo("Baral's Expertise", "29s", Rarity.RARE, mage.cards.b.BaralsExpertise.class)); + cards.add(new SetCardInfo("Baral, Chief of Compliance", "28s", Rarity.RARE, mage.cards.b.BaralChiefOfCompliance.class)); + cards.add(new SetCardInfo("Battle at the Bridge", "53s", Rarity.RARE, mage.cards.b.BattleAtTheBridge.class)); + cards.add(new SetCardInfo("Call for Unity", "9s", Rarity.RARE, mage.cards.c.CallForUnity.class)); + cards.add(new SetCardInfo("Consulate Crackdown", "11s", Rarity.RARE, mage.cards.c.ConsulateCrackdown.class)); + cards.add(new SetCardInfo("Dark Intimations", "128s", Rarity.RARE, mage.cards.d.DarkIntimations.class)); + cards.add(new SetCardInfo("Disallow", "31p", Rarity.RARE, mage.cards.d.Disallow.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Disallow", "31s", Rarity.RARE, mage.cards.d.Disallow.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Exquisite Archangel", "18s", Rarity.MYTHIC, mage.cards.e.ExquisiteArchangel.class)); + cards.add(new SetCardInfo("Freejam Regent", "81s", Rarity.RARE, mage.cards.f.FreejamRegent.class)); + cards.add(new SetCardInfo("Glint-Sleeve Siphoner", "62s", Rarity.RARE, mage.cards.g.GlintSleeveSiphoner.class)); + cards.add(new SetCardInfo("Gonti's Aether Heart", "152s", Rarity.MYTHIC, mage.cards.g.GontisAetherHeart.class)); + cards.add(new SetCardInfo("Greenbelt Rampager", "107s", Rarity.RARE, mage.cards.g.GreenbeltRampager.class)); + cards.add(new SetCardInfo("Greenwheel Liberator", "108s", Rarity.RARE, mage.cards.g.GreenwheelLiberator.class)); + cards.add(new SetCardInfo("Heart of Kiran", "153s", Rarity.MYTHIC, mage.cards.h.HeartOfKiran.class)); + cards.add(new SetCardInfo("Herald of Anguish", "64s", Rarity.MYTHIC, mage.cards.h.HeraldOfAnguish.class)); + cards.add(new SetCardInfo("Heroic Intervention", "109p", Rarity.RARE, mage.cards.h.HeroicIntervention.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Heroic Intervention", "109s", Rarity.RARE, mage.cards.h.HeroicIntervention.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Hope of Ghirapur", "154s", Rarity.RARE, mage.cards.h.HopeOfGhirapur.class)); + cards.add(new SetCardInfo("Indomitable Creativity", "85s", Rarity.MYTHIC, mage.cards.i.IndomitableCreativity.class)); + cards.add(new SetCardInfo("Inspiring Statuary", "160s", Rarity.RARE, mage.cards.i.InspiringStatuary.class)); + cards.add(new SetCardInfo("Kari Zev's Expertise", "88s", Rarity.RARE, mage.cards.k.KariZevsExpertise.class)); + cards.add(new SetCardInfo("Kari Zev, Skyship Raider", "87s", Rarity.RARE, mage.cards.k.KariZevSkyshipRaider.class)); + cards.add(new SetCardInfo("Lifecrafter's Bestiary", "162s", Rarity.RARE, mage.cards.l.LifecraftersBestiary.class)); + cards.add(new SetCardInfo("Lightning Runner", "90s", Rarity.MYTHIC, mage.cards.l.LightningRunner.class)); + cards.add(new SetCardInfo("Mechanized Production", "38s", Rarity.MYTHIC, mage.cards.m.MechanizedProduction.class)); + cards.add(new SetCardInfo("Merchant's Dockhand", "163s", Rarity.RARE, mage.cards.m.MerchantsDockhand.class)); + cards.add(new SetCardInfo("Metallic Mimic", "164s", Rarity.RARE, mage.cards.m.MetallicMimic.class)); + cards.add(new SetCardInfo("Midnight Entourage", "66s", Rarity.RARE, mage.cards.m.MidnightEntourage.class)); + cards.add(new SetCardInfo("Oath of Ajani", "131s", Rarity.RARE, mage.cards.o.OathOfAjani.class)); + cards.add(new SetCardInfo("Paradox Engine", "169s", Rarity.MYTHIC, mage.cards.p.ParadoxEngine.class)); + cards.add(new SetCardInfo("Peacewalker Colossus", "170s", Rarity.RARE, mage.cards.p.PeacewalkerColossus.class)); + cards.add(new SetCardInfo("Pia's Revolution", "91s", Rarity.RARE, mage.cards.p.PiasRevolution.class)); + cards.add(new SetCardInfo("Planar Bridge", "171s", Rarity.MYTHIC, mage.cards.p.PlanarBridge.class)); + cards.add(new SetCardInfo("Quicksmith Rebel", 93, Rarity.RARE, mage.cards.q.QuicksmithRebel.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Quicksmith Rebel", "93s", Rarity.RARE, mage.cards.q.QuicksmithRebel.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Quicksmith Spy", "41s", Rarity.RARE, mage.cards.q.QuicksmithSpy.class)); + cards.add(new SetCardInfo("Release the Gremlins", "96s", Rarity.RARE, mage.cards.r.ReleaseTheGremlins.class)); + cards.add(new SetCardInfo("Rishkar's Expertise", "123s", Rarity.RARE, mage.cards.r.RishkarsExpertise.class)); + cards.add(new SetCardInfo("Rishkar, Peema Renegade", "122s", Rarity.RARE, mage.cards.r.RishkarPeemaRenegade.class)); + cards.add(new SetCardInfo("Scrap Trawler", 175, Rarity.RARE, mage.cards.s.ScrapTrawler.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Scrap Trawler", "175s", Rarity.RARE, mage.cards.s.ScrapTrawler.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Secret Salvage", "71s", Rarity.RARE, mage.cards.s.SecretSalvage.class)); + cards.add(new SetCardInfo("Solemn Recruit", "22s", Rarity.RARE, mage.cards.s.SolemnRecruit.class)); + cards.add(new SetCardInfo("Spire of Industry", "184s", Rarity.RARE, mage.cards.s.SpireOfIndustry.class)); + cards.add(new SetCardInfo("Sram's Expertise", "24s", Rarity.RARE, mage.cards.s.SramsExpertise.class)); + cards.add(new SetCardInfo("Sram, Senior Edificer", "23s", Rarity.RARE, mage.cards.s.SramSeniorEdificer.class)); + cards.add(new SetCardInfo("Tezzeret the Schemer", "137s", Rarity.MYTHIC, mage.cards.t.TezzeretTheSchemer.class)); + cards.add(new SetCardInfo("Trophy Mage", 48, Rarity.UNCOMMON, mage.cards.t.TrophyMage.class)); + cards.add(new SetCardInfo("Walking Ballista", "181s", Rarity.RARE, mage.cards.w.WalkingBallista.class)); + cards.add(new SetCardInfo("Whir of Invention", "49s", Rarity.RARE, mage.cards.w.WhirOfInvention.class)); + cards.add(new SetCardInfo("Yahenni's Expertise", 75, Rarity.RARE, mage.cards.y.YahennisExpertise.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Yahenni's Expertise", "75s", Rarity.RARE, mage.cards.y.YahennisExpertise.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Yahenni, Undying Partisan", "74s", Rarity.RARE, mage.cards.y.YahenniUndyingPartisan.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/Amonkhet.java b/Mage.Sets/src/mage/sets/Amonkhet.java index dd916747732..4cfcba2fbb7 100644 --- a/Mage.Sets/src/mage/sets/Amonkhet.java +++ b/Mage.Sets/src/mage/sets/Amonkhet.java @@ -331,7 +331,7 @@ public final class Amonkhet extends ExpansionSet { public List getSpecialLand() { if (savedSpecialLand.isEmpty()) { CardCriteria criteria = new CardCriteria(); - criteria.setCodes("MPS-AKH"); + criteria.setCodes("MP2"); criteria.minCardNumber(1); criteria.maxCardNumber(30); savedSpecialLand.addAll(CardRepository.instance.findCards(criteria)); diff --git a/Mage.Sets/src/mage/sets/MasterpieceSeriesAmonkhet.java b/Mage.Sets/src/mage/sets/AmonkhetInvocations.java similarity index 94% rename from Mage.Sets/src/mage/sets/MasterpieceSeriesAmonkhet.java rename to Mage.Sets/src/mage/sets/AmonkhetInvocations.java index 710af8423e5..2d7be3233e2 100644 --- a/Mage.Sets/src/mage/sets/MasterpieceSeriesAmonkhet.java +++ b/Mage.Sets/src/mage/sets/AmonkhetInvocations.java @@ -6,19 +6,20 @@ import mage.constants.Rarity; import mage.constants.SetType; /** + * https://scryfall.com/sets/mp2 * * @author fireshoes */ -public final class MasterpieceSeriesAmonkhet extends ExpansionSet { +public final class AmonkhetInvocations extends ExpansionSet { - private static final MasterpieceSeriesAmonkhet instance = new MasterpieceSeriesAmonkhet(); + private static final AmonkhetInvocations instance = new AmonkhetInvocations(); - public static MasterpieceSeriesAmonkhet getInstance() { + public static AmonkhetInvocations getInstance() { return instance; } - private MasterpieceSeriesAmonkhet() { - super("Masterpiece Series Amonkhet", "MPS-AKH", ExpansionSet.buildDate(2017, 4, 28), SetType.PROMOTIONAL); + private AmonkhetInvocations() { + super("Amonkhet Invocations", "MP2", ExpansionSet.buildDate(2017, 4, 28), SetType.PROMOTIONAL); this.blockName = "Masterpiece Series"; this.hasBoosters = false; this.hasBasicLands = false; diff --git a/Mage.Sets/src/mage/sets/AmonkhetPromos.java b/Mage.Sets/src/mage/sets/AmonkhetPromos.java new file mode 100644 index 00000000000..75565d15a88 --- /dev/null +++ b/Mage.Sets/src/mage/sets/AmonkhetPromos.java @@ -0,0 +1,99 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/pakh + */ +public class AmonkhetPromos extends ExpansionSet { + + private static final AmonkhetPromos instance = new AmonkhetPromos(); + + public static AmonkhetPromos getInstance() { + return instance; + } + + private AmonkhetPromos() { + super("Amonkhet Promos", "PAKH", ExpansionSet.buildDate(2017, 4, 28), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Angel of Sanctions", "1s", Rarity.MYTHIC, mage.cards.a.AngelOfSanctions.class)); + cards.add(new SetCardInfo("Anointed Procession", "2p", Rarity.RARE, mage.cards.a.AnointedProcession.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Anointed Procession", "2s", Rarity.RARE, mage.cards.a.AnointedProcession.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Approach of the Second Sun", "4s", Rarity.RARE, mage.cards.a.ApproachOfTheSecondSun.class)); + cards.add(new SetCardInfo("Archfiend of Ifnir", 78, Rarity.RARE, mage.cards.a.ArchfiendOfIfnir.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Archfiend of Ifnir", "78s", Rarity.RARE, mage.cards.a.ArchfiendOfIfnir.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("As Foretold", "42s", Rarity.MYTHIC, mage.cards.a.AsForetold.class)); + cards.add(new SetCardInfo("Aven Mindcensor", "5p", Rarity.RARE, mage.cards.a.AvenMindcensor.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Aven Mindcensor", "5s", Rarity.RARE, mage.cards.a.AvenMindcensor.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Bontu the Glorified", "82s", Rarity.MYTHIC, mage.cards.b.BontuTheGlorified.class)); + cards.add(new SetCardInfo("Bounty of the Luxa", "196s", Rarity.RARE, mage.cards.b.BountyOfTheLuxa.class)); + cards.add(new SetCardInfo("Canyon Slough", "239s", Rarity.RARE, mage.cards.c.CanyonSlough.class)); + cards.add(new SetCardInfo("Cascading Cataracts", "240s", Rarity.RARE, mage.cards.c.CascadingCataracts.class)); + cards.add(new SetCardInfo("Champion of Rhonas", "159s", Rarity.RARE, mage.cards.c.ChampionOfRhonas.class)); + cards.add(new SetCardInfo("Channeler Initiate", "160s", Rarity.RARE, mage.cards.c.ChannelerInitiate.class)); + cards.add(new SetCardInfo("Combat Celebrant", "125s", Rarity.MYTHIC, mage.cards.c.CombatCelebrant.class)); + cards.add(new SetCardInfo("Commit // Memory", "211s", Rarity.RARE, mage.cards.c.CommitMemory.class)); + cards.add(new SetCardInfo("Cruel Reality", "84s", Rarity.MYTHIC, mage.cards.c.CruelReality.class)); + cards.add(new SetCardInfo("Curator of Mysteries", "49s", Rarity.RARE, mage.cards.c.CuratorOfMysteries.class)); + cards.add(new SetCardInfo("Cut // Ribbons", "223s", Rarity.RARE, mage.cards.c.CutRibbons.class)); + cards.add(new SetCardInfo("Dispossess", "86s", Rarity.RARE, mage.cards.d.Dispossess.class)); + cards.add(new SetCardInfo("Drake Haven", "51s", Rarity.RARE, mage.cards.d.DrakeHaven.class)); + cards.add(new SetCardInfo("Dread Wanderer", "88s", Rarity.RARE, mage.cards.d.DreadWanderer.class)); + cards.add(new SetCardInfo("Dusk // Dawn", "210s", Rarity.RARE, mage.cards.d.DuskDawn.class)); + cards.add(new SetCardInfo("Failure // Comply", "221s", Rarity.RARE, mage.cards.f.FailureComply.class)); + cards.add(new SetCardInfo("Fetid Pools", "243s", Rarity.RARE, mage.cards.f.FetidPools.class)); + cards.add(new SetCardInfo("Gideon of the Trials", "14s", Rarity.MYTHIC, mage.cards.g.GideonOfTheTrials.class)); + cards.add(new SetCardInfo("Gideon's Intervention", "15s", Rarity.RARE, mage.cards.g.GideonsIntervention.class)); + cards.add(new SetCardInfo("Glorious End", "133s", Rarity.MYTHIC, mage.cards.g.GloriousEnd.class)); + cards.add(new SetCardInfo("Glory-Bound Initiate", "16s", Rarity.RARE, mage.cards.g.GloryBoundInitiate.class)); + cards.add(new SetCardInfo("Glorybringer", 134, Rarity.RARE, mage.cards.g.Glorybringer.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Glorybringer", "134s", Rarity.RARE, mage.cards.g.Glorybringer.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Glyph Keeper", "55s", Rarity.RARE, mage.cards.g.GlyphKeeper.class)); + cards.add(new SetCardInfo("Hapatra, Vizier of Poisons", "199s", Rarity.RARE, mage.cards.h.HapatraVizierOfPoisons.class)); + cards.add(new SetCardInfo("Harsh Mentor", "135s", Rarity.RARE, mage.cards.h.HarshMentor.class)); + cards.add(new SetCardInfo("Harvest Season", "170s", Rarity.RARE, mage.cards.h.HarvestSeason.class)); + cards.add(new SetCardInfo("Hazoret the Fervent", "136s", Rarity.MYTHIC, mage.cards.h.HazoretTheFervent.class)); + cards.add(new SetCardInfo("Hazoret's Favor", "137s", Rarity.RARE, mage.cards.h.HazoretsFavor.class)); + cards.add(new SetCardInfo("Heart-Piercer Manticore", "138s", Rarity.RARE, mage.cards.h.HeartPiercerManticore.class)); + cards.add(new SetCardInfo("Heaven // Earth", "224s", Rarity.RARE, mage.cards.h.HeavenEarth.class)); + cards.add(new SetCardInfo("Honored Hydra", "172s", Rarity.RARE, mage.cards.h.HonoredHydra.class)); + cards.add(new SetCardInfo("Insult // Injury", "213s", Rarity.RARE, mage.cards.i.InsultInjury.class)); + cards.add(new SetCardInfo("Irrigated Farmland", "245s", Rarity.RARE, mage.cards.i.IrrigatedFarmland.class)); + cards.add(new SetCardInfo("Kefnet the Mindful", "59s", Rarity.MYTHIC, mage.cards.k.KefnetTheMindful.class)); + cards.add(new SetCardInfo("Liliana's Mastery", "98s", Rarity.RARE, mage.cards.l.LilianasMastery.class)); + cards.add(new SetCardInfo("Liliana, Death's Majesty", "97s", Rarity.MYTHIC, mage.cards.l.LilianaDeathsMajesty.class)); + cards.add(new SetCardInfo("Mouth // Feed", "214s", Rarity.RARE, mage.cards.m.MouthFeed.class)); + cards.add(new SetCardInfo("Neheb, the Worthy", "203s", Rarity.RARE, mage.cards.n.NehebTheWorthy.class)); + cards.add(new SetCardInfo("Never // Return", "212s", Rarity.RARE, mage.cards.n.NeverReturn.class)); + cards.add(new SetCardInfo("New Perspectives", "63s", Rarity.RARE, mage.cards.n.NewPerspectives.class)); + cards.add(new SetCardInfo("Nissa, Steward of Elements", "204s", Rarity.MYTHIC, mage.cards.n.NissaStewardOfElements.class)); + cards.add(new SetCardInfo("Oketra the True", "21s", Rarity.MYTHIC, mage.cards.o.OketraTheTrue.class)); + cards.add(new SetCardInfo("Oracle's Vault", 234, Rarity.RARE, mage.cards.o.OraclesVault.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Oracle's Vault", "234s", Rarity.RARE, mage.cards.o.OraclesVault.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plague Belcher", "104s", Rarity.RARE, mage.cards.p.PlagueBelcher.class)); + cards.add(new SetCardInfo("Prepare // Fight", "220s", Rarity.RARE, mage.cards.p.PrepareFight.class)); + cards.add(new SetCardInfo("Prowling Serpopard", "180s", Rarity.RARE, mage.cards.p.ProwlingSerpopard.class)); + cards.add(new SetCardInfo("Pull from Tomorrow", "65p", Rarity.RARE, mage.cards.p.PullFromTomorrow.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Pull from Tomorrow", "65s", Rarity.RARE, mage.cards.p.PullFromTomorrow.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Pyramid of the Pantheon", "235s", Rarity.RARE, mage.cards.p.PyramidOfThePantheon.class)); + cards.add(new SetCardInfo("Rags // Riches", "222s", Rarity.RARE, mage.cards.r.RagsRiches.class)); + cards.add(new SetCardInfo("Regal Caracal", "24s", Rarity.RARE, mage.cards.r.RegalCaracal.class)); + cards.add(new SetCardInfo("Rhonas the Indomitable", "182s", Rarity.MYTHIC, mage.cards.r.RhonasTheIndomitable.class)); + cards.add(new SetCardInfo("Samut, Voice of Dissent", "205s", Rarity.MYTHIC, mage.cards.s.SamutVoiceOfDissent.class)); + cards.add(new SetCardInfo("Sandwurm Convergence", "183s", Rarity.RARE, mage.cards.s.SandwurmConvergence.class)); + cards.add(new SetCardInfo("Scattered Groves", "247s", Rarity.RARE, mage.cards.s.ScatteredGroves.class)); + cards.add(new SetCardInfo("Shadow of the Grave", "107s", Rarity.RARE, mage.cards.s.ShadowOfTheGrave.class)); + cards.add(new SetCardInfo("Sheltered Thicket", "248s", Rarity.RARE, mage.cards.s.ShelteredThicket.class)); + cards.add(new SetCardInfo("Soul-Scar Mage", "148s", Rarity.RARE, mage.cards.s.SoulScarMage.class)); + cards.add(new SetCardInfo("Sweltering Suns", "149s", Rarity.RARE, mage.cards.s.SwelteringSuns.class)); + cards.add(new SetCardInfo("Temmet, Vizier of Naktamun", "207s", Rarity.RARE, mage.cards.t.TemmetVizierOfNaktamun.class)); + cards.add(new SetCardInfo("Throne of the God-Pharaoh", "237s", Rarity.RARE, mage.cards.t.ThroneOfTheGodPharaoh.class)); + cards.add(new SetCardInfo("Trueheart Duelist", 35, Rarity.UNCOMMON, mage.cards.t.TrueheartDuelist.class)); + cards.add(new SetCardInfo("Vizier of Many Faces", "74s", Rarity.RARE, mage.cards.v.VizierOfManyFaces.class)); + cards.add(new SetCardInfo("Vizier of the Menagerie", "192s", Rarity.MYTHIC, mage.cards.v.VizierOfTheMenagerie.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/Anthologies.java b/Mage.Sets/src/mage/sets/Anthologies.java index 17df9798d6c..0d2a31ebd39 100644 --- a/Mage.Sets/src/mage/sets/Anthologies.java +++ b/Mage.Sets/src/mage/sets/Anthologies.java @@ -17,7 +17,7 @@ public final class Anthologies extends ExpansionSet { } private Anthologies() { - super("Anthologies", "ATH", ExpansionSet.buildDate(1998, 11, 01), SetType.SUPPLEMENTAL); + super("Anthologies", "ATH", ExpansionSet.buildDate(1998, 11, 1), SetType.SUPPLEMENTAL); this.hasBoosters = false; this.hasBasicLands = true; diff --git a/Mage.Sets/src/mage/sets/ArabianNights.java b/Mage.Sets/src/mage/sets/ArabianNights.java index 05f01c9e54e..0219602404b 100644 --- a/Mage.Sets/src/mage/sets/ArabianNights.java +++ b/Mage.Sets/src/mage/sets/ArabianNights.java @@ -32,10 +32,10 @@ public final class ArabianNights extends ExpansionSet { cards.add(new SetCardInfo("Aladdin's Ring", 57, Rarity.RARE, mage.cards.a.AladdinsRing.class)); cards.add(new SetCardInfo("Ali Baba", 35, Rarity.UNCOMMON, mage.cards.a.AliBaba.class)); cards.add(new SetCardInfo("Ali from Cairo", 36, Rarity.RARE, mage.cards.a.AliFromCairo.class)); - cards.add(new SetCardInfo("Army of Allah", "2a", Rarity.COMMON, mage.cards.a.ArmyOfAllah.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Army of Allah", 2, Rarity.COMMON, mage.cards.a.ArmyOfAllah.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Army of Allah", "2b", Rarity.COMMON, mage.cards.a.ArmyOfAllah.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Bazaar of Baghdad", 70, Rarity.UNCOMMON, mage.cards.b.BazaarOfBaghdad.class)); - cards.add(new SetCardInfo("Bird Maiden", "37a", Rarity.COMMON, mage.cards.b.BirdMaiden.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Bird Maiden", 37, Rarity.COMMON, mage.cards.b.BirdMaiden.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Bird Maiden", "37b", Rarity.COMMON, mage.cards.b.BirdMaiden.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Bottle of Suleiman", 58, Rarity.RARE, mage.cards.b.BottleOfSuleiman.class)); cards.add(new SetCardInfo("Brass Man", 59, Rarity.UNCOMMON, mage.cards.b.BrassMan.class)); @@ -54,19 +54,19 @@ public final class ArabianNights extends ExpansionSet { cards.add(new SetCardInfo("Ebony Horse", 62, Rarity.RARE, mage.cards.e.EbonyHorse.class)); cards.add(new SetCardInfo("El-Hajjaj", 24, Rarity.RARE, mage.cards.e.ElHajjaj.class)); cards.add(new SetCardInfo("Elephant Graveyard", 74, Rarity.RARE, mage.cards.e.ElephantGraveyard.class)); - cards.add(new SetCardInfo("Erg Raiders", "25a", Rarity.COMMON, mage.cards.e.ErgRaiders.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Erg Raiders", 25, Rarity.COMMON, mage.cards.e.ErgRaiders.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Erg Raiders", "25b", Rarity.COMMON, mage.cards.e.ErgRaiders.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Erhnam Djinn", 48, Rarity.RARE, mage.cards.e.ErhnamDjinn.class)); cards.add(new SetCardInfo("Eye for an Eye", 4, Rarity.UNCOMMON, mage.cards.e.EyeForAnEye.class)); - cards.add(new SetCardInfo("Fishliver Oil", "13a", Rarity.COMMON, mage.cards.f.FishliverOil.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Fishliver Oil", 13, Rarity.COMMON, mage.cards.f.FishliverOil.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Fishliver Oil", "13b", Rarity.COMMON, mage.cards.f.FishliverOil.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Flying Carpet", 63, Rarity.UNCOMMON, mage.cards.f.FlyingCarpet.class)); cards.add(new SetCardInfo("Flying Men", 14, Rarity.COMMON, mage.cards.f.FlyingMen.class)); cards.add(new SetCardInfo("Ghazban Ogre", 49, Rarity.COMMON, mage.cards.g.GhazbanOgre.class)); - cards.add(new SetCardInfo("Giant Tortoise", "15a", Rarity.COMMON, mage.cards.g.GiantTortoise.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Giant Tortoise", 15, Rarity.COMMON, mage.cards.g.GiantTortoise.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Giant Tortoise", "15b", Rarity.COMMON, mage.cards.g.GiantTortoise.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Guardian Beast", 26, Rarity.RARE, mage.cards.g.GuardianBeast.class)); - cards.add(new SetCardInfo("Hasran Ogress", "27a", Rarity.COMMON, mage.cards.h.HasranOgress.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Hasran Ogress", 27, Rarity.COMMON, mage.cards.h.HasranOgress.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Hasran Ogress", "27b", Rarity.COMMON, mage.cards.h.HasranOgress.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Hurr Jackal", 39, Rarity.COMMON, mage.cards.h.HurrJackal.class)); cards.add(new SetCardInfo("Ifh-Biff Efreet", 50, Rarity.RARE, mage.cards.i.IfhBiffEfreet.class)); @@ -85,21 +85,21 @@ public final class ArabianNights extends ExpansionSet { cards.add(new SetCardInfo("Merchant Ship", 17, Rarity.UNCOMMON, mage.cards.m.MerchantShip.class)); cards.add(new SetCardInfo("Metamorphosis", 51, Rarity.COMMON, mage.cards.m.Metamorphosis.class)); cards.add(new SetCardInfo("Mijae Djinn", 42, Rarity.RARE, mage.cards.m.MijaeDjinn.class)); - cards.add(new SetCardInfo("Moorish Cavalry", "7a", Rarity.COMMON, mage.cards.m.MoorishCavalry.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Moorish Cavalry", 7, Rarity.COMMON, mage.cards.m.MoorishCavalry.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Moorish Cavalry", "7b", Rarity.COMMON, mage.cards.m.MoorishCavalry.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Mountain", 77, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Nafs Asp", "52a", Rarity.COMMON, mage.cards.n.NafsAsp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Nafs Asp", 52, Rarity.COMMON, mage.cards.n.NafsAsp.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Nafs Asp", "52b", Rarity.COMMON, mage.cards.n.NafsAsp.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Oasis", 78, Rarity.UNCOMMON, mage.cards.o.Oasis.class)); cards.add(new SetCardInfo("Old Man of the Sea", 18, Rarity.RARE, mage.cards.o.OldManOfTheSea.class)); - cards.add(new SetCardInfo("Oubliette", "31a", Rarity.COMMON, mage.cards.o.Oubliette.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Oubliette", 31, Rarity.COMMON, mage.cards.o.Oubliette.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Oubliette", "31b", Rarity.COMMON, mage.cards.o.Oubliette.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Piety", "8a", Rarity.COMMON, mage.cards.p.Piety.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Piety", 8, Rarity.COMMON, mage.cards.p.Piety.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Piety", "8b", Rarity.COMMON, mage.cards.p.Piety.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Pyramids", 67, Rarity.RARE, mage.cards.p.Pyramids.class)); cards.add(new SetCardInfo("Repentant Blacksmith", 9, Rarity.RARE, mage.cards.r.RepentantBlacksmith.class)); cards.add(new SetCardInfo("Ring of Ma'ruf", 68, Rarity.RARE, mage.cards.r.RingOfMaruf.class)); - cards.add(new SetCardInfo("Rukh Egg", "43a", Rarity.COMMON, mage.cards.r.RukhEgg.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Rukh Egg", 43, Rarity.COMMON, mage.cards.r.RukhEgg.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Rukh Egg", "43b", Rarity.COMMON, mage.cards.r.RukhEgg.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Sandals of Abdallah", 69, Rarity.UNCOMMON, mage.cards.s.SandalsOfAbdallah.class)); cards.add(new SetCardInfo("Sandstorm", 53, Rarity.COMMON, mage.cards.s.Sandstorm.class)); @@ -108,12 +108,12 @@ public final class ArabianNights extends ExpansionSet { cards.add(new SetCardInfo("Sindbad", 21, Rarity.UNCOMMON, mage.cards.s.Sindbad.class)); cards.add(new SetCardInfo("Singing Tree", 54, Rarity.RARE, mage.cards.s.SingingTree.class)); cards.add(new SetCardInfo("Sorceress Queen", 32, Rarity.UNCOMMON, mage.cards.s.SorceressQueen.class)); - cards.add(new SetCardInfo("Stone-Throwing Devils", "33a", Rarity.COMMON, mage.cards.s.StoneThrowingDevils.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Stone-Throwing Devils", 33, Rarity.COMMON, mage.cards.s.StoneThrowingDevils.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Stone-Throwing Devils", "33b", Rarity.COMMON, mage.cards.s.StoneThrowingDevils.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Unstable Mutation", 22, Rarity.COMMON, mage.cards.u.UnstableMutation.class)); - cards.add(new SetCardInfo("War Elephant", "11a", Rarity.COMMON, mage.cards.w.WarElephant.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("War Elephant", 11, Rarity.COMMON, mage.cards.w.WarElephant.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("War Elephant", "11b", Rarity.COMMON, mage.cards.w.WarElephant.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Wyluli Wolf", "55a", Rarity.COMMON, mage.cards.w.WyluliWolf.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Wyluli Wolf", 55, Rarity.COMMON, mage.cards.w.WyluliWolf.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Wyluli Wolf", "55b", Rarity.COMMON, mage.cards.w.WyluliWolf.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Ydwen Efreet", 44, Rarity.RARE, mage.cards.y.YdwenEfreet.class)); } diff --git a/Mage.Sets/src/mage/sets/ArchenemyNicolBolas.java b/Mage.Sets/src/mage/sets/ArchenemyNicolBolas.java index a6c4a696ace..aec6d79249d 100644 --- a/Mage.Sets/src/mage/sets/ArchenemyNicolBolas.java +++ b/Mage.Sets/src/mage/sets/ArchenemyNicolBolas.java @@ -20,6 +20,7 @@ public final class ArchenemyNicolBolas extends ExpansionSet { private ArchenemyNicolBolas() { super("Archenemy: Nicol Bolas", "E01", ExpansionSet.buildDate(2017, 6, 16), SetType.SUPPLEMENTAL); this.blockName = "Command Zone"; + cards.add(new SetCardInfo("Aegis Angel", 1, Rarity.RARE, mage.cards.a.AegisAngel.class)); cards.add(new SetCardInfo("Aerial Responder", 2, Rarity.UNCOMMON, mage.cards.a.AerialResponder.class)); cards.add(new SetCardInfo("Anointer of Champions", 3, Rarity.UNCOMMON, mage.cards.a.AnointerOfChampions.class)); @@ -29,12 +30,9 @@ public final class ArchenemyNicolBolas extends ExpansionSet { cards.add(new SetCardInfo("Battle-Rattle Shaman", 40, Rarity.COMMON, mage.cards.b.BattleRattleShaman.class)); cards.add(new SetCardInfo("Blood Ogre", 41, Rarity.COMMON, mage.cards.b.BloodOgre.class)); cards.add(new SetCardInfo("Blood Tyrant", 81, Rarity.RARE, mage.cards.b.BloodTyrant.class)); - cards.add(new SetCardInfo("Bone Picker", 110, Rarity.UNCOMMON, mage.cards.b.BonePicker.class)); - cards.add(new SetCardInfo("Brute Strength", 111, Rarity.COMMON, mage.cards.b.BruteStrength.class)); cards.add(new SetCardInfo("Chandra, Pyromaster", 42, Rarity.MYTHIC, mage.cards.c.ChandraPyromaster.class)); cards.add(new SetCardInfo("Chandra's Outrage", 43, Rarity.COMMON, mage.cards.c.ChandrasOutrage.class)); cards.add(new SetCardInfo("Chandra's Phoenix", 44, Rarity.RARE, mage.cards.c.ChandrasPhoenix.class)); - cards.add(new SetCardInfo("Cinder Barrens", 119, Rarity.UNCOMMON, mage.cards.c.CinderBarrens.class)); cards.add(new SetCardInfo("Compulsive Research", 23, Rarity.UNCOMMON, mage.cards.c.CompulsiveResearch.class)); cards.add(new SetCardInfo("Coordinated Assault", 45, Rarity.UNCOMMON, mage.cards.c.CoordinatedAssault.class)); cards.add(new SetCardInfo("Cruel Ultimatum", 82, Rarity.RARE, mage.cards.c.CruelUltimatum.class)); @@ -65,24 +63,20 @@ public final class ArchenemyNicolBolas extends ExpansionSet { cards.add(new SetCardInfo("Gorehorn Minotaurs", 49, Rarity.COMMON, mage.cards.g.GorehornMinotaurs.class)); cards.add(new SetCardInfo("Grand Abolisher", 12, Rarity.RARE, mage.cards.g.GrandAbolisher.class)); cards.add(new SetCardInfo("Grasp of the Hieromancer", 13, Rarity.COMMON, mage.cards.g.GraspOfTheHieromancer.class)); - cards.add(new SetCardInfo("Greater Sandwurm", 115, Rarity.COMMON, mage.cards.g.GreaterSandwurm.class)); cards.add(new SetCardInfo("Grim Lavamancer", 50, Rarity.RARE, mage.cards.g.GrimLavamancer.class)); cards.add(new SetCardInfo("Grixis Panorama", 95, Rarity.COMMON, mage.cards.g.GrixisPanorama.class)); cards.add(new SetCardInfo("Guttersnipe", 51, Rarity.UNCOMMON, mage.cards.g.Guttersnipe.class)); cards.add(new SetCardInfo("Hammerhand", 52, Rarity.COMMON, mage.cards.h.Hammerhand.class)); cards.add(new SetCardInfo("Harvester of Souls", 34, Rarity.RARE, mage.cards.h.HarvesterOfSouls.class)); - cards.add(new SetCardInfo("Highland Lake", 120, Rarity.UNCOMMON, mage.cards.h.HighlandLake.class)); cards.add(new SetCardInfo("Hunter's Prowess", 66, Rarity.RARE, mage.cards.h.HuntersProwess.class)); cards.add(new SetCardInfo("Icefall Regent", 24, Rarity.RARE, mage.cards.i.IcefallRegent.class)); cards.add(new SetCardInfo("Inferno Titan", 53, Rarity.MYTHIC, mage.cards.i.InfernoTitan.class)); - cards.add(new SetCardInfo("Initiate's Companion", 116, Rarity.COMMON, mage.cards.i.InitiatesCompanion.class)); cards.add(new SetCardInfo("Ior Ruin Expedition", 25, Rarity.COMMON, mage.cards.i.IorRuinExpedition.class)); cards.add(new SetCardInfo("Island", 103, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Island", 98, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Khalni Heart Expedition", 67, Rarity.COMMON, mage.cards.k.KhalniHeartExpedition.class)); cards.add(new SetCardInfo("Lightning Bolt", 54, Rarity.COMMON, mage.cards.l.LightningBolt.class)); cards.add(new SetCardInfo("Lightwielder Paladin", 14, Rarity.RARE, mage.cards.l.LightwielderPaladin.class)); - cards.add(new SetCardInfo("Limits of Solidarity", 112, Rarity.UNCOMMON, mage.cards.l.LimitsOfSolidarity.class)); cards.add(new SetCardInfo("Mentor of the Meek", 15, Rarity.RARE, mage.cards.m.MentorOfTheMeek.class)); cards.add(new SetCardInfo("Moment of Heroism", 16, Rarity.COMMON, mage.cards.m.MomentOfHeroism.class)); cards.add(new SetCardInfo("Mountain", 100, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); @@ -95,7 +89,6 @@ public final class ArchenemyNicolBolas extends ExpansionSet { cards.add(new SetCardInfo("Odric, Master Tactician", 17, Rarity.RARE, mage.cards.o.OdricMasterTactician.class)); cards.add(new SetCardInfo("Oran-Rief Hydra", 69, Rarity.RARE, mage.cards.o.OranRiefHydra.class)); cards.add(new SetCardInfo("Overseer of the Damned", 36, Rarity.RARE, mage.cards.o.OverseerOfTheDamned.class)); - cards.add(new SetCardInfo("Pathmaker Initiate", 113, Rarity.COMMON, mage.cards.p.PathmakerInitiate.class)); cards.add(new SetCardInfo("Plains", 102, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Plains", 97, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Precinct Captain", 18, Rarity.RARE, mage.cards.p.PrecinctCaptain.class)); @@ -106,19 +99,15 @@ public final class ArchenemyNicolBolas extends ExpansionSet { cards.add(new SetCardInfo("Reckless Spite", 37, Rarity.UNCOMMON, mage.cards.r.RecklessSpite.class)); cards.add(new SetCardInfo("Relief Captain", 19, Rarity.UNCOMMON, mage.cards.r.ReliefCaptain.class)); cards.add(new SetCardInfo("Retreat to Kazandu", 72, Rarity.UNCOMMON, mage.cards.r.RetreatToKazandu.class)); - cards.add(new SetCardInfo("Scaled Behemoth", 117, Rarity.UNCOMMON, mage.cards.s.ScaledBehemoth.class)); cards.add(new SetCardInfo("Scute Mob", 73, Rarity.RARE, mage.cards.s.ScuteMob.class)); cards.add(new SetCardInfo("Searing Spear", 56, Rarity.COMMON, mage.cards.s.SearingSpear.class)); cards.add(new SetCardInfo("Shoulder to Shoulder", 20, Rarity.COMMON, mage.cards.s.ShoulderToShoulder.class)); - cards.add(new SetCardInfo("Sixth Sense", 118, Rarity.UNCOMMON, mage.cards.s.SixthSense.class)); cards.add(new SetCardInfo("Skarrgan Firebird", 57, Rarity.UNCOMMON, mage.cards.s.SkarrganFirebird.class)); cards.add(new SetCardInfo("Slave of Bolas", 86, Rarity.UNCOMMON, mage.cards.s.SlaveOfBolas.class)); cards.add(new SetCardInfo("Smoldering Spires", 96, Rarity.COMMON, mage.cards.s.SmolderingSpires.class)); cards.add(new SetCardInfo("Soul Ransom", 87, Rarity.UNCOMMON, mage.cards.s.SoulRansom.class)); - cards.add(new SetCardInfo("Sparring Mummy", 107, Rarity.COMMON, mage.cards.s.SparringMummy.class)); cards.add(new SetCardInfo("Sphinx of Jwar Isle", 28, Rarity.RARE, mage.cards.s.SphinxOfJwarIsle.class)); cards.add(new SetCardInfo("Stormblood Berserker", 58, Rarity.UNCOMMON, mage.cards.s.StormbloodBerserker.class)); - cards.add(new SetCardInfo("Submerged Boneyard", 121, Rarity.COMMON, mage.cards.s.SubmergedBoneyard.class)); cards.add(new SetCardInfo("Sudden Demise", 59, Rarity.RARE, mage.cards.s.SuddenDemise.class)); cards.add(new SetCardInfo("Sun Titan", 21, Rarity.MYTHIC, mage.cards.s.SunTitan.class)); cards.add(new SetCardInfo("Swamp", 104, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); @@ -127,20 +116,16 @@ public final class ArchenemyNicolBolas extends ExpansionSet { cards.add(new SetCardInfo("Sylvan Bounty", 74, Rarity.COMMON, mage.cards.s.SylvanBounty.class)); cards.add(new SetCardInfo("Talisman of Dominance", 90, Rarity.UNCOMMON, mage.cards.t.TalismanOfDominance.class)); cards.add(new SetCardInfo("Talisman of Indulgence", 91, Rarity.UNCOMMON, mage.cards.t.TalismanOfIndulgence.class)); - cards.add(new SetCardInfo("Those Who Serve", 108, Rarity.COMMON, mage.cards.t.ThoseWhoServe.class)); cards.add(new SetCardInfo("Thragtusk", 75, Rarity.RARE, mage.cards.t.Thragtusk.class)); cards.add(new SetCardInfo("Torchling", 60, Rarity.RARE, mage.cards.t.Torchling.class)); - cards.add(new SetCardInfo("Tormenting Voice", 114, Rarity.COMMON, mage.cards.t.TormentingVoice.class)); cards.add(new SetCardInfo("Turntimber Basilisk", 76, Rarity.UNCOMMON, mage.cards.t.TurntimberBasilisk.class)); cards.add(new SetCardInfo("Vampire Nighthawk", 38, Rarity.UNCOMMON, mage.cards.v.VampireNighthawk.class)); cards.add(new SetCardInfo("Vastwood Zendikon", 77, Rarity.COMMON, mage.cards.v.VastwoodZendikon.class)); cards.add(new SetCardInfo("Vines of the Recluse", 78, Rarity.COMMON, mage.cards.v.VinesOfTheRecluse.class)); cards.add(new SetCardInfo("Vision Skeins", 29, Rarity.COMMON, mage.cards.v.VisionSkeins.class)); - cards.add(new SetCardInfo("Vizier of Deferment", 109, Rarity.UNCOMMON, mage.cards.v.VizierOfDeferment.class)); cards.add(new SetCardInfo("Volcanic Geyser", 61, Rarity.UNCOMMON, mage.cards.v.VolcanicGeyser.class)); cards.add(new SetCardInfo("Windrider Eel", 30, Rarity.COMMON, mage.cards.w.WindriderEel.class)); cards.add(new SetCardInfo("Woodborn Behemoth", 79, Rarity.UNCOMMON, mage.cards.w.WoodbornBehemoth.class)); - cards.add(new SetCardInfo("Woodland Stream", 122, Rarity.COMMON, mage.cards.w.WoodlandStream.class)); cards.add(new SetCardInfo("Youthful Knight", 22, Rarity.COMMON, mage.cards.y.YouthfulKnight.class)); } diff --git a/Mage.Sets/src/mage/sets/ArenaLeague.java b/Mage.Sets/src/mage/sets/ArenaLeague.java deleted file mode 100644 index 4eefe4b34c9..00000000000 --- a/Mage.Sets/src/mage/sets/ArenaLeague.java +++ /dev/null @@ -1,101 +0,0 @@ - -package mage.sets; - -import mage.cards.ExpansionSet; -import mage.constants.Rarity; -import mage.constants.SetType; - -/** - * - * @author fireshoes - */ -public final class ArenaLeague extends ExpansionSet { - - private static final ArenaLeague instance = new ArenaLeague(); - - public static ArenaLeague getInstance() { - return instance; - } - - private ArenaLeague() { - super("Arena League", "ARENA", ExpansionSet.buildDate(1996, 7, 4), SetType.PROMOTIONAL); - this.hasBoosters = false; - cards.add(new SetCardInfo("Arc Lightning", 42, Rarity.COMMON, mage.cards.a.ArcLightning.class)); - cards.add(new SetCardInfo("Bonesplitter", 52, Rarity.COMMON, mage.cards.b.Bonesplitter.class)); - cards.add(new SetCardInfo("Castigate", 80, Rarity.COMMON, mage.cards.c.Castigate.class)); - cards.add(new SetCardInfo("Chill", 19, Rarity.SPECIAL, mage.cards.c.Chill.class)); - cards.add(new SetCardInfo("Coiling Oracle", 82, Rarity.COMMON, mage.cards.c.CoilingOracle.class)); - cards.add(new SetCardInfo("Creeping Mold", 28, Rarity.SPECIAL, mage.cards.c.CreepingMold.class)); - cards.add(new SetCardInfo("Darksteel Ingot", 58, Rarity.COMMON, mage.cards.d.DarksteelIngot.class)); - cards.add(new SetCardInfo("Dauthi Slayer", 43, Rarity.SPECIAL, mage.cards.d.DauthiSlayer.class)); - cards.add(new SetCardInfo("Diabolic Edict", 37, Rarity.COMMON, mage.cards.d.DiabolicEdict.class)); - cards.add(new SetCardInfo("Disenchant", 6, Rarity.COMMON, mage.cards.d.Disenchant.class)); - cards.add(new SetCardInfo("Dismiss", 29, Rarity.SPECIAL, mage.cards.d.Dismiss.class)); - cards.add(new SetCardInfo("Duress", 17, Rarity.COMMON, mage.cards.d.Duress.class)); - cards.add(new SetCardInfo("Elvish Aberration", 51, Rarity.COMMON, mage.cards.e.ElvishAberration.class)); - cards.add(new SetCardInfo("Empyrial Armor", 31, Rarity.SPECIAL, mage.cards.e.EmpyrialArmor.class)); - cards.add(new SetCardInfo("Enlightened Tutor", 21, Rarity.SPECIAL, mage.cards.e.EnlightenedTutor.class)); - cards.add(new SetCardInfo("Fireball", 7, Rarity.SPECIAL, mage.cards.f.Fireball.class)); - cards.add(new SetCardInfo("Fling", 30, Rarity.COMMON, mage.cards.f.Fling.class)); - cards.add(new SetCardInfo("Forest", 5, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Forest", 12, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Forest", 27, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Forest", 36, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Forest", 40, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Forest", 49, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Forest", 57, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Forest", 71, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Forest", 79, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Gaea's Blessing", 38, Rarity.SPECIAL, mage.cards.g.GaeasBlessing.class)); - cards.add(new SetCardInfo("Genju of the Spires", 72, Rarity.SPECIAL, mage.cards.g.GenjuOfTheSpires.class)); - cards.add(new SetCardInfo("Glacial Ray", 60, Rarity.COMMON, mage.cards.g.GlacialRay.class)); - cards.add(new SetCardInfo("Island", 2, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Island", 9, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Island", 24, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Island", 33, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Island", 39, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Island", 46, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Island", 54, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Island", 68, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Island", 76, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Karn, Silver Golem", 16, Rarity.SPECIAL, mage.cards.k.KarnSilverGolem.class)); - cards.add(new SetCardInfo("Mana Leak", 44, Rarity.COMMON, mage.cards.m.ManaLeak.class)); - cards.add(new SetCardInfo("Man-o'-War", 41, Rarity.COMMON, mage.cards.m.ManOWar.class)); - cards.add(new SetCardInfo("Mountain", 4, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Mountain", 11, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Mountain", 26, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Mountain", 35, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Mountain", 48, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Mountain", 56, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Mountain", 70, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Mountain", 78, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Okina Nightwatch", 73, Rarity.COMMON, mage.cards.o.OkinaNightwatch.class)); - cards.add(new SetCardInfo("Pillage", 20, Rarity.SPECIAL, mage.cards.p.Pillage.class)); - cards.add(new SetCardInfo("Plains", 1, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Plains", 8, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Plains", 23, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Plains", 32, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Plains", 45, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Plains", 53, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Plains", 67, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Plains", 75, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Pouncing Jaguar", 13, Rarity.COMMON, mage.cards.p.PouncingJaguar.class)); - cards.add(new SetCardInfo("Rewind", 15, Rarity.COMMON, mage.cards.r.Rewind.class)); - cards.add(new SetCardInfo("Serum Visions", 59, Rarity.COMMON, mage.cards.s.SerumVisions.class)); - cards.add(new SetCardInfo("Skirk Marauder", 50, Rarity.COMMON, mage.cards.s.SkirkMarauder.class)); - cards.add(new SetCardInfo("Skittering Skirge", 14, Rarity.COMMON, mage.cards.s.SkitteringSkirge.class)); - cards.add(new SetCardInfo("Skyknight Legionnaire", 74, Rarity.COMMON, mage.cards.s.SkyknightLegionnaire.class)); - cards.add(new SetCardInfo("Stupor", 22, Rarity.COMMON, mage.cards.s.Stupor.class)); - cards.add(new SetCardInfo("Surging Flame", 83, Rarity.COMMON, mage.cards.s.SurgingFlame.class)); - cards.add(new SetCardInfo("Swamp", 3, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Swamp", 10, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Swamp", 25, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Swamp", 34, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Swamp", 47, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Swamp", 55, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Swamp", 69, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Swamp", 77, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Uktabi Orangutan", 18, Rarity.SPECIAL, mage.cards.u.UktabiOrangutan.class)); - cards.add(new SetCardInfo("Wee Dragonauts", 81, Rarity.COMMON, mage.cards.w.WeeDragonauts.class)); - } -} diff --git a/Mage.Sets/src/mage/sets/ArenaLeague1996.java b/Mage.Sets/src/mage/sets/ArenaLeague1996.java new file mode 100644 index 00000000000..8a7869dc87a --- /dev/null +++ b/Mage.Sets/src/mage/sets/ArenaLeague1996.java @@ -0,0 +1,31 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/parl + */ +public class ArenaLeague1996 extends ExpansionSet { + + private static final ArenaLeague1996 instance = new ArenaLeague1996(); + + public static ArenaLeague1996 getInstance() { + return instance; + } + + private ArenaLeague1996() { + super("Arena League 1996", "PARL", ExpansionSet.buildDate(1996, 8, 2), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = true; + + cards.add(new SetCardInfo("Disenchant", 6, Rarity.RARE, mage.cards.d.Disenchant.class)); + cards.add(new SetCardInfo("Fireball", 7, Rarity.RARE, mage.cards.f.Fireball.class)); + cards.add(new SetCardInfo("Forest", 5, Rarity.LAND, mage.cards.basiclands.Forest.class)); + cards.add(new SetCardInfo("Island", 2, Rarity.LAND, mage.cards.basiclands.Island.class)); + cards.add(new SetCardInfo("Mountain", 4, Rarity.LAND, mage.cards.basiclands.Mountain.class)); + cards.add(new SetCardInfo("Plains", 1, Rarity.LAND, mage.cards.basiclands.Plains.class)); + cards.add(new SetCardInfo("Swamp", 3, Rarity.LAND, mage.cards.basiclands.Swamp.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/ArenaLeague1999.java b/Mage.Sets/src/mage/sets/ArenaLeague1999.java new file mode 100644 index 00000000000..9e90235cf98 --- /dev/null +++ b/Mage.Sets/src/mage/sets/ArenaLeague1999.java @@ -0,0 +1,34 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/pal99 + */ +public class ArenaLeague1999 extends ExpansionSet { + + private static final ArenaLeague1999 instance = new ArenaLeague1999(); + + public static ArenaLeague1999 getInstance() { + return instance; + } + + private ArenaLeague1999() { + super("Arena League 1999", "PAL99", ExpansionSet.buildDate(1999, 1, 1), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = true; + + cards.add(new SetCardInfo("Forest", 1, Rarity.LAND, mage.cards.basiclands.Forest.class)); + cards.add(new SetCardInfo("Island", 3, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", "3+", Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Karn, Silver Golem", 8, Rarity.RARE, mage.cards.k.KarnSilverGolem.class)); + cards.add(new SetCardInfo("Mountain", 5, Rarity.LAND, mage.cards.basiclands.Mountain.class)); + cards.add(new SetCardInfo("Plains", 7, Rarity.LAND, mage.cards.basiclands.Plains.class)); + cards.add(new SetCardInfo("Pouncing Jaguar", 2, Rarity.RARE, mage.cards.p.PouncingJaguar.class)); + cards.add(new SetCardInfo("Rewind", 6, Rarity.RARE, mage.cards.r.Rewind.class)); + cards.add(new SetCardInfo("Skittering Skirge", 4, Rarity.RARE, mage.cards.s.SkitteringSkirge.class)); + cards.add(new SetCardInfo("Swamp", 9, Rarity.LAND, mage.cards.basiclands.Swamp.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/ArenaLeague2000.java b/Mage.Sets/src/mage/sets/ArenaLeague2000.java new file mode 100644 index 00000000000..66522658416 --- /dev/null +++ b/Mage.Sets/src/mage/sets/ArenaLeague2000.java @@ -0,0 +1,35 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/pal00 + */ +public class ArenaLeague2000 extends ExpansionSet { + + private static final ArenaLeague2000 instance = new ArenaLeague2000(); + + public static ArenaLeague2000 getInstance() { + return instance; + } + + private ArenaLeague2000() { + super("Arena League 2000", "PAL00", ExpansionSet.buildDate(2000, 1, 1), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = true; + + cards.add(new SetCardInfo("Chill", 4, Rarity.RARE, mage.cards.c.Chill.class)); + cards.add(new SetCardInfo("Duress", 2, Rarity.RARE, mage.cards.d.Duress.class)); + cards.add(new SetCardInfo("Enlightened Tutor", 6, Rarity.RARE, mage.cards.e.EnlightenedTutor.class)); + cards.add(new SetCardInfo("Forest", 12, Rarity.LAND, mage.cards.basiclands.Forest.class)); + cards.add(new SetCardInfo("Island", 9, Rarity.LAND, mage.cards.basiclands.Island.class)); + cards.add(new SetCardInfo("Mountain", 11, Rarity.LAND, mage.cards.basiclands.Mountain.class)); + cards.add(new SetCardInfo("Pillage", 5, Rarity.RARE, mage.cards.p.Pillage.class)); + cards.add(new SetCardInfo("Plains", 8, Rarity.LAND, mage.cards.basiclands.Plains.class)); + cards.add(new SetCardInfo("Stupor", 7, Rarity.RARE, mage.cards.s.Stupor.class)); + cards.add(new SetCardInfo("Swamp", 10, Rarity.LAND, mage.cards.basiclands.Swamp.class)); + cards.add(new SetCardInfo("Uktabi Orangutan", 3, Rarity.RARE, mage.cards.u.UktabiOrangutan.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/ArenaLeague2001.java b/Mage.Sets/src/mage/sets/ArenaLeague2001.java new file mode 100644 index 00000000000..9ddcfa7f083 --- /dev/null +++ b/Mage.Sets/src/mage/sets/ArenaLeague2001.java @@ -0,0 +1,36 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/pal01 + */ +public class ArenaLeague2001 extends ExpansionSet { + + private static final ArenaLeague2001 instance = new ArenaLeague2001(); + + public static ArenaLeague2001 getInstance() { + return instance; + } + + private ArenaLeague2001() { + super("Arena League 2001", "PAL01", ExpansionSet.buildDate(2001, 1, 1), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = true; + + cards.add(new SetCardInfo("Creeping Mold", 2, Rarity.RARE, mage.cards.c.CreepingMold.class)); + cards.add(new SetCardInfo("Diabolic Edict", 10, Rarity.RARE, mage.cards.d.DiabolicEdict.class)); + cards.add(new SetCardInfo("Dismiss", 4, Rarity.RARE, mage.cards.d.Dismiss.class)); + cards.add(new SetCardInfo("Empyrial Armor", 8, Rarity.RARE, mage.cards.e.EmpyrialArmor.class)); + cards.add(new SetCardInfo("Fling", 6, Rarity.RARE, mage.cards.f.Fling.class)); + cards.add(new SetCardInfo("Forest", 1, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", 11, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Gaea's Blessing", 12, Rarity.RARE, mage.cards.g.GaeasBlessing.class)); + cards.add(new SetCardInfo("Island", 3, Rarity.LAND, mage.cards.basiclands.Island.class)); + cards.add(new SetCardInfo("Mountain", 5, Rarity.LAND, mage.cards.basiclands.Mountain.class)); + cards.add(new SetCardInfo("Plains", 7, Rarity.LAND, mage.cards.basiclands.Plains.class)); + cards.add(new SetCardInfo("Swamp", 9, Rarity.LAND, mage.cards.basiclands.Swamp.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/ArenaLeague2002.java b/Mage.Sets/src/mage/sets/ArenaLeague2002.java new file mode 100644 index 00000000000..371b130cadb --- /dev/null +++ b/Mage.Sets/src/mage/sets/ArenaLeague2002.java @@ -0,0 +1,29 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/pal02 + */ +public class ArenaLeague2002 extends ExpansionSet { + + private static final ArenaLeague2002 instance = new ArenaLeague2002(); + + public static ArenaLeague2002 getInstance() { + return instance; + } + + private ArenaLeague2002() { + super("Arena League 2002", "PAL02", ExpansionSet.buildDate(2002, 1, 1), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = true; + + cards.add(new SetCardInfo("Arc Lightning", 3, Rarity.RARE, mage.cards.a.ArcLightning.class)); + cards.add(new SetCardInfo("Dauthi Slayer", 4, Rarity.RARE, mage.cards.d.DauthiSlayer.class)); + cards.add(new SetCardInfo("Island", 1, Rarity.LAND, mage.cards.basiclands.Island.class)); + cards.add(new SetCardInfo("Man-o'-War", 2, Rarity.RARE, mage.cards.m.ManOWar.class)); + cards.add(new SetCardInfo("Mana Leak", 5, Rarity.RARE, mage.cards.m.ManaLeak.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/ArenaLeague2003.java b/Mage.Sets/src/mage/sets/ArenaLeague2003.java new file mode 100644 index 00000000000..71639edaf1d --- /dev/null +++ b/Mage.Sets/src/mage/sets/ArenaLeague2003.java @@ -0,0 +1,32 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/pal03 + */ +public class ArenaLeague2003 extends ExpansionSet { + + private static final ArenaLeague2003 instance = new ArenaLeague2003(); + + public static ArenaLeague2003 getInstance() { + return instance; + } + + private ArenaLeague2003() { + super("Arena League 2003", "PAL03", ExpansionSet.buildDate(2003, 1, 1), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = true; + + cards.add(new SetCardInfo("Bonesplitter", 8, Rarity.RARE, mage.cards.b.Bonesplitter.class)); + cards.add(new SetCardInfo("Elvish Aberration", 7, Rarity.RARE, mage.cards.e.ElvishAberration.class)); + cards.add(new SetCardInfo("Forest", 5, Rarity.LAND, mage.cards.basiclands.Forest.class)); + cards.add(new SetCardInfo("Island", 2, Rarity.LAND, mage.cards.basiclands.Island.class)); + cards.add(new SetCardInfo("Mountain", 4, Rarity.LAND, mage.cards.basiclands.Mountain.class)); + cards.add(new SetCardInfo("Plains", 1, Rarity.LAND, mage.cards.basiclands.Plains.class)); + cards.add(new SetCardInfo("Skirk Marauder", 6, Rarity.RARE, mage.cards.s.SkirkMarauder.class)); + cards.add(new SetCardInfo("Swamp", 3, Rarity.LAND, mage.cards.basiclands.Swamp.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/ArenaLeague2004.java b/Mage.Sets/src/mage/sets/ArenaLeague2004.java new file mode 100644 index 00000000000..9c6345f092f --- /dev/null +++ b/Mage.Sets/src/mage/sets/ArenaLeague2004.java @@ -0,0 +1,41 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/pal04 + */ +public class ArenaLeague2004 extends ExpansionSet { + + private static final ArenaLeague2004 instance = new ArenaLeague2004(); + + public static ArenaLeague2004 getInstance() { + return instance; + } + + private ArenaLeague2004() { + super("Arena League 2004", "PAL04", ExpansionSet.buildDate(2004, 1, 1), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = true; + + // Not implemented + //cards.add(new SetCardInfo("Ashnod's Coupon", 14, Rarity.RARE, mage.cards.a.AshnodsCoupon.class)); + cards.add(new SetCardInfo("Booster Tutor", 11, Rarity.RARE, mage.cards.b.BoosterTutor.class)); + // Not implemented + //cards.add(new SetCardInfo("Circle of Protection: Art", 9, Rarity.RARE, mage.cards.c.CircleOfProtectionArt.class)); + cards.add(new SetCardInfo("Darksteel Ingot", 6, Rarity.RARE, mage.cards.d.DarksteelIngot.class)); + cards.add(new SetCardInfo("Forest", 5, Rarity.LAND, mage.cards.basiclands.Forest.class)); + cards.add(new SetCardInfo("Glacial Ray", 8, Rarity.RARE, mage.cards.g.GlacialRay.class)); + // Not implemented + // cards.add(new SetCardInfo("Goblin Mime", 12, Rarity.RARE, mage.cards.g.GoblinMime.class)); + // cards.add(new SetCardInfo("Granny's Payback", 13, Rarity.RARE, mage.cards.g.GrannysPayback.class)); + cards.add(new SetCardInfo("Island", 2, Rarity.LAND, mage.cards.basiclands.Island.class)); + cards.add(new SetCardInfo("Mise", 10, Rarity.RARE, mage.cards.m.Mise.class)); + cards.add(new SetCardInfo("Mountain", 4, Rarity.LAND, mage.cards.basiclands.Mountain.class)); + cards.add(new SetCardInfo("Plains", 1, Rarity.LAND, mage.cards.basiclands.Plains.class)); + cards.add(new SetCardInfo("Serum Visions", 7, Rarity.RARE, mage.cards.s.SerumVisions.class)); + cards.add(new SetCardInfo("Swamp", 3, Rarity.LAND, mage.cards.basiclands.Swamp.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/ArenaLeague2005.java b/Mage.Sets/src/mage/sets/ArenaLeague2005.java new file mode 100644 index 00000000000..dff0c3aea23 --- /dev/null +++ b/Mage.Sets/src/mage/sets/ArenaLeague2005.java @@ -0,0 +1,32 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/pal05 + */ +public class ArenaLeague2005 extends ExpansionSet { + + private static final ArenaLeague2005 instance = new ArenaLeague2005(); + + public static ArenaLeague2005 getInstance() { + return instance; + } + + private ArenaLeague2005() { + super("Arena League 2005", "PAL05", ExpansionSet.buildDate(2005, 1, 1), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = true; + + cards.add(new SetCardInfo("Forest", 5, Rarity.LAND, mage.cards.basiclands.Forest.class)); + cards.add(new SetCardInfo("Genju of the Spires", 6, Rarity.RARE, mage.cards.g.GenjuOfTheSpires.class)); + cards.add(new SetCardInfo("Island", 2, Rarity.LAND, mage.cards.basiclands.Island.class)); + cards.add(new SetCardInfo("Mountain", 4, Rarity.LAND, mage.cards.basiclands.Mountain.class)); + cards.add(new SetCardInfo("Okina Nightwatch", 7, Rarity.RARE, mage.cards.o.OkinaNightwatch.class)); + cards.add(new SetCardInfo("Plains", 1, Rarity.LAND, mage.cards.basiclands.Plains.class)); + cards.add(new SetCardInfo("Skyknight Legionnaire", 8, Rarity.RARE, mage.cards.s.SkyknightLegionnaire.class)); + cards.add(new SetCardInfo("Swamp", 3, Rarity.LAND, mage.cards.basiclands.Swamp.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/ArenaLeague2006.java b/Mage.Sets/src/mage/sets/ArenaLeague2006.java new file mode 100644 index 00000000000..ebfd6feb49c --- /dev/null +++ b/Mage.Sets/src/mage/sets/ArenaLeague2006.java @@ -0,0 +1,33 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/pal06 + */ +public class ArenaLeague2006 extends ExpansionSet { + + private static final ArenaLeague2006 instance = new ArenaLeague2006(); + + public static ArenaLeague2006 getInstance() { + return instance; + } + + private ArenaLeague2006() { + super("Arena League 2006", "PAL06", ExpansionSet.buildDate(2006, 1, 1), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = true; + + cards.add(new SetCardInfo("Castigate", 6, Rarity.RARE, mage.cards.c.Castigate.class)); + cards.add(new SetCardInfo("Coiling Oracle", 8, Rarity.RARE, mage.cards.c.CoilingOracle.class)); + cards.add(new SetCardInfo("Forest", 5, Rarity.LAND, mage.cards.basiclands.Forest.class)); + cards.add(new SetCardInfo("Island", 2, Rarity.LAND, mage.cards.basiclands.Island.class)); + cards.add(new SetCardInfo("Mountain", 4, Rarity.LAND, mage.cards.basiclands.Mountain.class)); + cards.add(new SetCardInfo("Plains", 1, Rarity.LAND, mage.cards.basiclands.Plains.class)); + cards.add(new SetCardInfo("Surging Flame", 9, Rarity.RARE, mage.cards.s.SurgingFlame.class)); + cards.add(new SetCardInfo("Swamp", 3, Rarity.LAND, mage.cards.basiclands.Swamp.class)); + cards.add(new SetCardInfo("Wee Dragonauts", 7, Rarity.RARE, mage.cards.w.WeeDragonauts.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/ArenaNewPlayerExperience.java b/Mage.Sets/src/mage/sets/ArenaNewPlayerExperience.java index aaad1327f93..62405f0367d 100644 --- a/Mage.Sets/src/mage/sets/ArenaNewPlayerExperience.java +++ b/Mage.Sets/src/mage/sets/ArenaNewPlayerExperience.java @@ -16,48 +16,40 @@ public final class ArenaNewPlayerExperience extends ExpansionSet { } private ArenaNewPlayerExperience() { - super("Arena New Player Experience", "ANA", ExpansionSet.buildDate(2018, 7, 29), SetType.MAGIC_ONLINE); + super("Arena New Player Experience", "ANA", ExpansionSet.buildDate(2018, 7, 14), SetType.MAGIC_ONLINE); this.hasBoosters = false; - this.hasBasicLands = false; + this.hasBasicLands = true; - cards.add(new SetCardInfo("Altar's Reap", 24, Rarity.COMMON, mage.cards.a.AltarsReap.class)); - cards.add(new SetCardInfo("Ambition's Cost", 25, Rarity.UNCOMMON, mage.cards.a.AmbitionsCost.class)); cards.add(new SetCardInfo("Angelic Reward", 1, Rarity.UNCOMMON, mage.cards.a.AngelicReward.class)); - cards.add(new SetCardInfo("Blinding Radiance", 2, Rarity.UNCOMMON, mage.cards.b.BlindingRadiance.class)); - cards.add(new SetCardInfo("Chaos Maw", 36, Rarity.RARE, mage.cards.c.ChaosMaw.class)); cards.add(new SetCardInfo("Confront the Assault", 3, Rarity.UNCOMMON, mage.cards.c.ConfrontTheAssault.class)); - cards.add(new SetCardInfo("Cruel Cut", 26, Rarity.COMMON, mage.cards.c.CruelCut.class)); - cards.add(new SetCardInfo("Divination", 14, Rarity.COMMON, mage.cards.d.Divination.class)); - cards.add(new SetCardInfo("Doublecast", 37, Rarity.UNCOMMON, mage.cards.d.Doublecast.class)); cards.add(new SetCardInfo("Feral Roar", 46, Rarity.COMMON, mage.cards.f.FeralRoar.class)); - cards.add(new SetCardInfo("Goblin Bruiser", 39, Rarity.UNCOMMON, mage.cards.g.GoblinBruiser.class)); - cards.add(new SetCardInfo("Goblin Gang Leader", 40, Rarity.UNCOMMON, mage.cards.g.GoblinGangLeader.class)); - cards.add(new SetCardInfo("Goblin Grenade", 41, Rarity.UNCOMMON, mage.cards.g.GoblinGrenade.class)); + cards.add(new SetCardInfo("Forest", 55, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", 60, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", 65, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Inspiring Commander", 5, Rarity.RARE, mage.cards.i.InspiringCommander.class)); + cards.add(new SetCardInfo("Island", 52, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", 57, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", 62, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Knight's Pledge", 6, Rarity.COMMON, mage.cards.k.KnightsPledge.class)); - cards.add(new SetCardInfo("Loxodon Line Breaker", 7, Rarity.COMMON, mage.cards.l.LoxodonLineBreaker.class)); - cards.add(new SetCardInfo("Miasmic Mummy", 29, Rarity.COMMON, mage.cards.m.MiasmicMummy.class)); - cards.add(new SetCardInfo("Nimble Pilferer", 31, Rarity.COMMON, mage.cards.n.NimblePilferer.class)); - cards.add(new SetCardInfo("Ogre Painbringer", 42, Rarity.RARE, mage.cards.o.OgrePainbringer.class)); - cards.add(new SetCardInfo("Overflowing Insight", 16, Rarity.MYTHIC, mage.cards.o.OverflowingInsight.class)); + cards.add(new SetCardInfo("Mountain", 54, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", 59, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", 64, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plains", 51, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plains", 56, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plains", 61, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Raging Goblin", 43, Rarity.COMMON, mage.cards.r.RagingGoblin.class)); - cards.add(new SetCardInfo("Renegade Demon", 33, Rarity.COMMON, mage.cards.r.RenegadeDemon.class)); cards.add(new SetCardInfo("Rise from the Grave", 34, Rarity.UNCOMMON, mage.cards.r.RiseFromTheGrave.class)); cards.add(new SetCardInfo("River's Favor", 17, Rarity.COMMON, mage.cards.r.RiversFavor.class)); - cards.add(new SetCardInfo("Rumbling Baloth", 47, Rarity.COMMON, mage.cards.r.RumblingBaloth.class)); cards.add(new SetCardInfo("Sanctuary Cat", 8, Rarity.COMMON, mage.cards.s.SanctuaryCat.class)); - cards.add(new SetCardInfo("Seismic Rupture", 44, Rarity.UNCOMMON, mage.cards.s.SeismicRupture.class)); cards.add(new SetCardInfo("Serra Angel", 9, Rarity.UNCOMMON, mage.cards.s.SerraAngel.class)); cards.add(new SetCardInfo("Shorecomber Crab", 18, Rarity.COMMON, mage.cards.s.ShorecomberCrab.class)); cards.add(new SetCardInfo("Shrine Keeper", 10, Rarity.COMMON, mage.cards.s.ShrineKeeper.class)); - cards.add(new SetCardInfo("Soulhunter Rakshasa", 35, Rarity.RARE, mage.cards.s.SoulhunterRakshasa.class)); cards.add(new SetCardInfo("Spiritual Guardian", 11, Rarity.COMMON, mage.cards.s.SpiritualGuardian.class)); + cards.add(new SetCardInfo("Swamp", 53, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", 58, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", 63, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Tactical Advantage", 12, Rarity.COMMON, mage.cards.t.TacticalAdvantage.class)); - cards.add(new SetCardInfo("Take Vengeance", 13, Rarity.COMMON, mage.cards.t.TakeVengeance.class)); - cards.add(new SetCardInfo("Titanic Pelagosaur", 19, Rarity.UNCOMMON, mage.cards.t.TitanicPelagosaur.class)); cards.add(new SetCardInfo("Treetop Warden", 48, Rarity.COMMON, mage.cards.t.TreetopWarden.class)); - cards.add(new SetCardInfo("Volcanic Dragon", 45, Rarity.UNCOMMON, mage.cards.v.VolcanicDragon.class)); - cards.add(new SetCardInfo("Waterknot", 22, Rarity.COMMON, mage.cards.w.Waterknot.class)); cards.add(new SetCardInfo("Zephyr Gull", 23, Rarity.COMMON, mage.cards.z.ZephyrGull.class)); } } \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/ArenaNewPlayerExperienceExtras.java b/Mage.Sets/src/mage/sets/ArenaNewPlayerExperienceExtras.java new file mode 100644 index 00000000000..c61eaca6747 --- /dev/null +++ b/Mage.Sets/src/mage/sets/ArenaNewPlayerExperienceExtras.java @@ -0,0 +1,47 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * @author JayDi85 + */ +public final class ArenaNewPlayerExperienceExtras extends ExpansionSet { + + private static final ArenaNewPlayerExperienceExtras instance = new ArenaNewPlayerExperienceExtras(); + + public static ArenaNewPlayerExperienceExtras getInstance() { + return instance; + } + + private ArenaNewPlayerExperienceExtras() { + super("Arena New Player Experience Extras", "XANA", ExpansionSet.buildDate(2018, 7, 14), SetType.MAGIC_ONLINE); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Altar's Reap", 24, Rarity.COMMON, mage.cards.a.AltarsReap.class)); + cards.add(new SetCardInfo("Ambition's Cost", 25, Rarity.UNCOMMON, mage.cards.a.AmbitionsCost.class)); + cards.add(new SetCardInfo("Blinding Radiance", 2, Rarity.UNCOMMON, mage.cards.b.BlindingRadiance.class)); + cards.add(new SetCardInfo("Chaos Maw", 36, Rarity.RARE, mage.cards.c.ChaosMaw.class)); + cards.add(new SetCardInfo("Cruel Cut", 26, Rarity.COMMON, mage.cards.c.CruelCut.class)); + cards.add(new SetCardInfo("Divination", 14, Rarity.COMMON, mage.cards.d.Divination.class)); + cards.add(new SetCardInfo("Doublecast", 37, Rarity.UNCOMMON, mage.cards.d.Doublecast.class)); + cards.add(new SetCardInfo("Goblin Bruiser", 39, Rarity.UNCOMMON, mage.cards.g.GoblinBruiser.class)); + cards.add(new SetCardInfo("Goblin Gang Leader", 40, Rarity.UNCOMMON, mage.cards.g.GoblinGangLeader.class)); + cards.add(new SetCardInfo("Goblin Grenade", 41, Rarity.UNCOMMON, mage.cards.g.GoblinGrenade.class)); + cards.add(new SetCardInfo("Loxodon Line Breaker", 7, Rarity.COMMON, mage.cards.l.LoxodonLineBreaker.class)); + cards.add(new SetCardInfo("Miasmic Mummy", 29, Rarity.COMMON, mage.cards.m.MiasmicMummy.class)); + cards.add(new SetCardInfo("Nimble Pilferer", 31, Rarity.COMMON, mage.cards.n.NimblePilferer.class)); + cards.add(new SetCardInfo("Ogre Painbringer", 42, Rarity.RARE, mage.cards.o.OgrePainbringer.class)); + cards.add(new SetCardInfo("Overflowing Insight", 16, Rarity.MYTHIC, mage.cards.o.OverflowingInsight.class)); + cards.add(new SetCardInfo("Renegade Demon", 33, Rarity.COMMON, mage.cards.r.RenegadeDemon.class)); + cards.add(new SetCardInfo("Rumbling Baloth", 47, Rarity.COMMON, mage.cards.r.RumblingBaloth.class)); + cards.add(new SetCardInfo("Seismic Rupture", 44, Rarity.UNCOMMON, mage.cards.s.SeismicRupture.class)); + cards.add(new SetCardInfo("Soulhunter Rakshasa", 35, Rarity.RARE, mage.cards.s.SoulhunterRakshasa.class)); + cards.add(new SetCardInfo("Take Vengeance", 13, Rarity.COMMON, mage.cards.t.TakeVengeance.class)); + cards.add(new SetCardInfo("Titanic Pelagosaur", 19, Rarity.UNCOMMON, mage.cards.t.TitanicPelagosaur.class)); + cards.add(new SetCardInfo("Volcanic Dragon", 45, Rarity.UNCOMMON, mage.cards.v.VolcanicDragon.class)); + cards.add(new SetCardInfo("Waterknot", 22, Rarity.COMMON, mage.cards.w.Waterknot.class)); + } +} \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/AsiaPacificLandProgram.java b/Mage.Sets/src/mage/sets/AsiaPacificLandProgram.java index c14cd2c22f0..261edd70b4f 100644 --- a/Mage.Sets/src/mage/sets/AsiaPacificLandProgram.java +++ b/Mage.Sets/src/mage/sets/AsiaPacificLandProgram.java @@ -18,8 +18,10 @@ public final class AsiaPacificLandProgram extends ExpansionSet { } private AsiaPacificLandProgram() { - super("Asia Pacific Land Program", "APAC", ExpansionSet.buildDate(1997, 10, 13), SetType.PROMOTIONAL); + super("Asia Pacific Land Program", "PALP", ExpansionSet.buildDate(1997, 10, 13), SetType.PROMOTIONAL); this.hasBoosters = false; + this.hasBasicLands = true; + cards.add(new SetCardInfo("Forest", 1, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Forest", 6, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Forest", 11, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); diff --git a/Mage.Sets/src/mage/sets/AvacynRestoredPromos.java b/Mage.Sets/src/mage/sets/AvacynRestoredPromos.java new file mode 100644 index 00000000000..9463c081072 --- /dev/null +++ b/Mage.Sets/src/mage/sets/AvacynRestoredPromos.java @@ -0,0 +1,29 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/pavr + */ +public class AvacynRestoredPromos extends ExpansionSet { + + private static final AvacynRestoredPromos instance = new AvacynRestoredPromos(); + + public static AvacynRestoredPromos getInstance() { + return instance; + } + + private AvacynRestoredPromos() { + super("Avacyn Restored Promos", "PAVR", ExpansionSet.buildDate(2012, 4, 28), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Killing Wave", 111, Rarity.RARE, mage.cards.k.KillingWave.class)); + cards.add(new SetCardInfo("Latch Seeker", 63, Rarity.UNCOMMON, mage.cards.l.LatchSeeker.class)); + cards.add(new SetCardInfo("Moonsilver Spear", 217, Rarity.RARE, mage.cards.m.MoonsilverSpear.class)); + cards.add(new SetCardInfo("Restoration Angel", 32, Rarity.RARE, mage.cards.r.RestorationAngel.class)); + cards.add(new SetCardInfo("Silverblade Paladin", "*36", Rarity.RARE, mage.cards.s.SilverbladePaladin.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/BFZStandardSeries.java b/Mage.Sets/src/mage/sets/BFZStandardSeries.java new file mode 100644 index 00000000000..2dc173930ad --- /dev/null +++ b/Mage.Sets/src/mage/sets/BFZStandardSeries.java @@ -0,0 +1,29 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/pss1 + */ +public class BFZStandardSeries extends ExpansionSet { + + private static final BFZStandardSeries instance = new BFZStandardSeries(); + + public static BFZStandardSeries getInstance() { + return instance; + } + + private BFZStandardSeries() { + super("BFZ Standard Series", "PSS1", ExpansionSet.buildDate(2015, 10, 2), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Canopy Vista", 234, Rarity.RARE, mage.cards.c.CanopyVista.class)); + cards.add(new SetCardInfo("Cinder Glade", 235, Rarity.RARE, mage.cards.c.CinderGlade.class)); + cards.add(new SetCardInfo("Prairie Stream", 241, Rarity.RARE, mage.cards.p.PrairieStream.class)); + cards.add(new SetCardInfo("Smoldering Marsh", 247, Rarity.RARE, mage.cards.s.SmolderingMarsh.class)); + cards.add(new SetCardInfo("Sunken Hollow", 249, Rarity.RARE, mage.cards.s.SunkenHollow.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/BattleForZendikar.java b/Mage.Sets/src/mage/sets/BattleForZendikar.java index d12ac8e78b1..03aace3d548 100644 --- a/Mage.Sets/src/mage/sets/BattleForZendikar.java +++ b/Mage.Sets/src/mage/sets/BattleForZendikar.java @@ -343,7 +343,7 @@ public final class BattleForZendikar extends ExpansionSet { CardCriteria criteria = new CardCriteria(); criteria.setCodes("EXP"); criteria.minCardNumber(1); - criteria.maxCardNumber(25); + criteria.maxCardNumber(45); savedSpecialLand.addAll(CardRepository.instance.findCards(criteria)); } diff --git a/Mage.Sets/src/mage/sets/BattleForZendikarPromos.java b/Mage.Sets/src/mage/sets/BattleForZendikarPromos.java new file mode 100644 index 00000000000..2b34de9174e --- /dev/null +++ b/Mage.Sets/src/mage/sets/BattleForZendikarPromos.java @@ -0,0 +1,102 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/pbfz + */ +public class BattleForZendikarPromos extends ExpansionSet { + + private static final BattleForZendikarPromos instance = new BattleForZendikarPromos(); + + public static BattleForZendikarPromos getInstance() { + return instance; + } + + private BattleForZendikarPromos() { + super("Battle for Zendikar Promos", "PBFZ", ExpansionSet.buildDate(2015, 10, 3), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Akoum Firebird", "138s", Rarity.MYTHIC, mage.cards.a.AkoumFirebird.class)); + cards.add(new SetCardInfo("Akoum Hellkite", "139s", Rarity.RARE, mage.cards.a.AkoumHellkite.class)); + cards.add(new SetCardInfo("Aligned Hedron Network", "222s", Rarity.RARE, mage.cards.a.AlignedHedronNetwork.class)); + cards.add(new SetCardInfo("Ally Encampment", "228s", Rarity.RARE, mage.cards.a.AllyEncampment.class)); + cards.add(new SetCardInfo("Angelic Captain", "208s", Rarity.RARE, mage.cards.a.AngelicCaptain.class)); + cards.add(new SetCardInfo("Barrage Tyrant", 127, Rarity.RARE, mage.cards.b.BarrageTyrant.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Barrage Tyrant", "127s", Rarity.RARE, mage.cards.b.BarrageTyrant.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Beastcaller Savant", "170s", Rarity.RARE, mage.cards.b.BeastcallerSavant.class)); + cards.add(new SetCardInfo("Blight Herder", 2, Rarity.RARE, mage.cards.b.BlightHerder.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Blight Herder", "2s", Rarity.RARE, mage.cards.b.BlightHerder.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Bring to Light", "209s", Rarity.RARE, mage.cards.b.BringToLight.class)); + cards.add(new SetCardInfo("Brood Butcher", "199s", Rarity.RARE, mage.cards.b.BroodButcher.class)); + cards.add(new SetCardInfo("Brutal Expulsion", "200s", Rarity.RARE, mage.cards.b.BrutalExpulsion.class)); + cards.add(new SetCardInfo("Canopy Vista", "234s", Rarity.RARE, mage.cards.c.CanopyVista.class)); + cards.add(new SetCardInfo("Cinder Glade", "235s", Rarity.RARE, mage.cards.c.CinderGlade.class)); + cards.add(new SetCardInfo("Conduit of Ruin", "4s", Rarity.RARE, mage.cards.c.ConduitOfRuin.class)); + cards.add(new SetCardInfo("Defiant Bloodlord", 107, Rarity.RARE, mage.cards.d.DefiantBloodlord.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Defiant Bloodlord", "107s", Rarity.RARE, mage.cards.d.DefiantBloodlord.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Desolation Twin", "6s", Rarity.RARE, mage.cards.d.DesolationTwin.class)); + cards.add(new SetCardInfo("Dragonmaster Outcast", "144s", Rarity.MYTHIC, mage.cards.d.DragonmasterOutcast.class)); + cards.add(new SetCardInfo("Drana, Liberator of Malakir", "109s", Rarity.MYTHIC, mage.cards.d.DranaLiberatorOfMalakir.class)); + cards.add(new SetCardInfo("Drowner of Hope", 57, Rarity.RARE, mage.cards.d.DrownerOfHope.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Drowner of Hope", "57s", Rarity.RARE, mage.cards.d.DrownerOfHope.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Dust Stalker", "202s", Rarity.RARE, mage.cards.d.DustStalker.class)); + cards.add(new SetCardInfo("Emeria Shepherd", "22s", Rarity.RARE, mage.cards.e.EmeriaShepherd.class)); + cards.add(new SetCardInfo("Endless One", "8s", Rarity.RARE, mage.cards.e.EndlessOne.class)); + cards.add(new SetCardInfo("Exert Influence", "77s", Rarity.RARE, mage.cards.e.ExertInfluence.class)); + cards.add(new SetCardInfo("Fathom Feeder", "203s", Rarity.RARE, mage.cards.f.FathomFeeder.class)); + cards.add(new SetCardInfo("Felidar Sovereign", "26s", Rarity.RARE, mage.cards.f.FelidarSovereign.class)); + cards.add(new SetCardInfo("From Beyond", "167s", Rarity.RARE, mage.cards.f.FromBeyond.class)); + cards.add(new SetCardInfo("Gideon, Ally of Zendikar", "29s", Rarity.MYTHIC, mage.cards.g.GideonAllyOfZendikar.class)); + cards.add(new SetCardInfo("Greenwarden of Murasa", "174s", Rarity.MYTHIC, mage.cards.g.GreenwardenOfMurasa.class)); + cards.add(new SetCardInfo("Gruesome Slaughter", "9s", Rarity.RARE, mage.cards.g.GruesomeSlaughter.class)); + cards.add(new SetCardInfo("Guardian of Tazeem", "78s", Rarity.RARE, mage.cards.g.GuardianOfTazeem.class)); + cards.add(new SetCardInfo("Guul Draz Overseer", "112s", Rarity.RARE, mage.cards.g.GuulDrazOverseer.class)); + cards.add(new SetCardInfo("Hero of Goma Fada", 31, Rarity.RARE, mage.cards.h.HeroOfGomaFada.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Hero of Goma Fada", "31s", Rarity.RARE, mage.cards.h.HeroOfGomaFada.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Kiora, Master of the Depths", "213s", Rarity.MYTHIC, mage.cards.k.KioraMasterOfTheDepths.class)); + cards.add(new SetCardInfo("Lantern Scout", "37s", Rarity.RARE, mage.cards.l.LanternScout.class)); + cards.add(new SetCardInfo("Lumbering Falls", "239s", Rarity.RARE, mage.cards.l.LumberingFalls.class)); + cards.add(new SetCardInfo("March from the Tomb", "214s", Rarity.RARE, mage.cards.m.MarchFromTheTomb.class)); + cards.add(new SetCardInfo("Munda, Ambush Leader", "215s", Rarity.RARE, mage.cards.m.MundaAmbushLeader.class)); + cards.add(new SetCardInfo("Nissa's Renewal", "180s", Rarity.RARE, mage.cards.n.NissasRenewal.class)); + cards.add(new SetCardInfo("Noyan Dar, Roil Shaper", "216s", Rarity.RARE, mage.cards.n.NoyanDarRoilShaper.class)); + cards.add(new SetCardInfo("Ob Nixilis Reignited", "119s", Rarity.MYTHIC, mage.cards.o.ObNixilisReignited.class)); + cards.add(new SetCardInfo("Oblivion Sower", "11s", Rarity.MYTHIC, mage.cards.o.OblivionSower.class)); + cards.add(new SetCardInfo("Omnath, Locus of Rage", "217s", Rarity.MYTHIC, mage.cards.o.OmnathLocusOfRage.class)); + cards.add(new SetCardInfo("Oran-Rief Hydra", 181, Rarity.RARE, mage.cards.o.OranRiefHydra.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Oran-Rief Hydra", "181s", Rarity.RARE, mage.cards.o.OranRiefHydra.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Painful Truths", "120s", Rarity.RARE, mage.cards.p.PainfulTruths.class)); + cards.add(new SetCardInfo("Part the Waterveil", "80s", Rarity.MYTHIC, mage.cards.p.PartTheWaterveil.class)); + cards.add(new SetCardInfo("Planar Outburst", "42s", Rarity.RARE, mage.cards.p.PlanarOutburst.class)); + cards.add(new SetCardInfo("Prairie Stream", "241s", Rarity.RARE, mage.cards.p.PrairieStream.class)); + cards.add(new SetCardInfo("Prism Array", "81s", Rarity.RARE, mage.cards.p.PrismArray.class)); + cards.add(new SetCardInfo("Quarantine Field", "43s", Rarity.MYTHIC, mage.cards.q.QuarantineField.class)); + cards.add(new SetCardInfo("Radiant Flames", 151, Rarity.RARE, mage.cards.r.RadiantFlames.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Radiant Flames", "151s", Rarity.RARE, mage.cards.r.RadiantFlames.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Ruinous Path", 123, Rarity.RARE, mage.cards.r.RuinousPath.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Ruinous Path", "123s", Rarity.RARE, mage.cards.r.RuinousPath.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Sanctum of Ugin", "242s", Rarity.RARE, mage.cards.s.SanctumOfUgin.class)); + cards.add(new SetCardInfo("Scatter to the Winds", "85s", Rarity.RARE, mage.cards.s.ScatterToTheWinds.class)); + cards.add(new SetCardInfo("Scythe Leopard", 188, Rarity.UNCOMMON, mage.cards.s.ScytheLeopard.class)); + cards.add(new SetCardInfo("Serpentine Spike", "133s", Rarity.RARE, mage.cards.s.SerpentineSpike.class)); + cards.add(new SetCardInfo("Shambling Vent", "244s", Rarity.RARE, mage.cards.s.ShamblingVent.class)); + cards.add(new SetCardInfo("Shrine of the Forsaken Gods", "245s", Rarity.RARE, mage.cards.s.ShrineOfTheForsakenGods.class)); + cards.add(new SetCardInfo("Sire of Stagnation", "206s", Rarity.MYTHIC, mage.cards.s.SireOfStagnation.class)); + cards.add(new SetCardInfo("Smoldering Marsh", "247s", Rarity.RARE, mage.cards.s.SmolderingMarsh.class)); + cards.add(new SetCardInfo("Smothering Abomination", "99s", Rarity.RARE, mage.cards.s.SmotheringAbomination.class)); + cards.add(new SetCardInfo("Stasis Snare", 50, Rarity.UNCOMMON, mage.cards.s.StasisSnare.class)); + cards.add(new SetCardInfo("Sunken Hollow", "249s", Rarity.RARE, mage.cards.s.SunkenHollow.class)); + cards.add(new SetCardInfo("Ugin's Insight", "87s", Rarity.RARE, mage.cards.u.UginsInsight.class)); + cards.add(new SetCardInfo("Ulamog, the Ceaseless Hunger", "15s", Rarity.MYTHIC, mage.cards.u.UlamogTheCeaselessHunger.class)); + cards.add(new SetCardInfo("Undergrowth Champion", "197s", Rarity.MYTHIC, mage.cards.u.UndergrowthChampion.class)); + cards.add(new SetCardInfo("Veteran Warleader", "221s", Rarity.RARE, mage.cards.v.VeteranWarleader.class)); + cards.add(new SetCardInfo("Void Winnower", "17s", Rarity.MYTHIC, mage.cards.v.VoidWinnower.class)); + cards.add(new SetCardInfo("Wasteland Strangler", "102s", Rarity.RARE, mage.cards.w.WastelandStrangler.class)); + cards.add(new SetCardInfo("Woodland Wanderer", "198s", Rarity.RARE, mage.cards.w.WoodlandWanderer.class)); + cards.add(new SetCardInfo("Zada, Hedron Grinder", "162s", Rarity.RARE, mage.cards.z.ZadaHedronGrinder.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/BattleRoyaleBoxSet.java b/Mage.Sets/src/mage/sets/BattleRoyaleBoxSet.java new file mode 100644 index 00000000000..1d65894d761 --- /dev/null +++ b/Mage.Sets/src/mage/sets/BattleRoyaleBoxSet.java @@ -0,0 +1,160 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/brb + */ +public class BattleRoyaleBoxSet extends ExpansionSet { + + private static final BattleRoyaleBoxSet instance = new BattleRoyaleBoxSet(); + + public static BattleRoyaleBoxSet getInstance() { + return instance; + } + + private BattleRoyaleBoxSet() { + super("Battle Royale Box Set", "BRB", ExpansionSet.buildDate(1999, 11, 12), SetType.SUPPLEMENTAL); + this.hasBoosters = false; + this.hasBasicLands = true; + + cards.add(new SetCardInfo("Abyssal Specter", 1, Rarity.UNCOMMON, mage.cards.a.AbyssalSpecter.class)); + cards.add(new SetCardInfo("Advance Scout", 2, Rarity.COMMON, mage.cards.a.AdvanceScout.class)); + cards.add(new SetCardInfo("Air Elemental", 3, Rarity.UNCOMMON, mage.cards.a.AirElemental.class)); + cards.add(new SetCardInfo("Angelic Page", 4, Rarity.COMMON, mage.cards.a.AngelicPage.class)); + cards.add(new SetCardInfo("Arc Lightning", 5, Rarity.COMMON, mage.cards.a.ArcLightning.class)); + cards.add(new SetCardInfo("Argothian Elder", 6, Rarity.UNCOMMON, mage.cards.a.ArgothianElder.class)); + cards.add(new SetCardInfo("Armored Pegasus", 7, Rarity.COMMON, mage.cards.a.ArmoredPegasus.class)); + cards.add(new SetCardInfo("Azure Drake", 8, Rarity.UNCOMMON, mage.cards.a.AzureDrake.class)); + cards.add(new SetCardInfo("Blinking Spirit", 9, Rarity.RARE, mage.cards.b.BlinkingSpirit.class)); + cards.add(new SetCardInfo("Broken Fall", 10, Rarity.COMMON, mage.cards.b.BrokenFall.class)); + cards.add(new SetCardInfo("Cackling Fiend", 11, Rarity.COMMON, mage.cards.c.CacklingFiend.class)); + cards.add(new SetCardInfo("Catastrophe", 12, Rarity.RARE, mage.cards.c.Catastrophe.class)); + cards.add(new SetCardInfo("Cinder Marsh", 13, Rarity.UNCOMMON, mage.cards.c.CinderMarsh.class)); + cards.add(new SetCardInfo("Control Magic", 14, Rarity.UNCOMMON, mage.cards.c.ControlMagic.class)); + cards.add(new SetCardInfo("Counterspell", 15, Rarity.COMMON, mage.cards.c.Counterspell.class)); + cards.add(new SetCardInfo("Crazed Skirge", 16, Rarity.UNCOMMON, mage.cards.c.CrazedSkirge.class)); + cards.add(new SetCardInfo("Curfew", 17, Rarity.COMMON, mage.cards.c.Curfew.class)); + cards.add(new SetCardInfo("Dark Ritual", 18, Rarity.COMMON, mage.cards.d.DarkRitual.class)); + cards.add(new SetCardInfo("Dirtcowl Wurm", 19, Rarity.RARE, mage.cards.d.DirtcowlWurm.class)); + cards.add(new SetCardInfo("Disenchant", 20, Rarity.COMMON, mage.cards.d.Disenchant.class)); + cards.add(new SetCardInfo("Disruptive Student", 21, Rarity.COMMON, mage.cards.d.DisruptiveStudent.class)); + cards.add(new SetCardInfo("Drifting Meadow", 22, Rarity.COMMON, mage.cards.d.DriftingMeadow.class)); + cards.add(new SetCardInfo("Elvish Lyrist", 23, Rarity.UNCOMMON, mage.cards.e.ElvishLyrist.class)); + cards.add(new SetCardInfo("Exhume", 24, Rarity.COMMON, mage.cards.e.Exhume.class)); + cards.add(new SetCardInfo("Fecundity", 25, Rarity.UNCOMMON, mage.cards.f.Fecundity.class)); + cards.add(new SetCardInfo("Fertile Ground", 26, Rarity.COMMON, mage.cards.f.FertileGround.class)); + cards.add(new SetCardInfo("Fire Ants", 27, Rarity.UNCOMMON, mage.cards.f.FireAnts.class)); + cards.add(new SetCardInfo("Flood", 28, Rarity.COMMON, mage.cards.f.Flood.class)); + cards.add(new SetCardInfo("Forest", 109, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", 108, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", 107, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", 106, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", 105, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", 104, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", 103, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", 102, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", 101, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Giant Growth", 29, Rarity.COMMON, mage.cards.g.GiantGrowth.class)); + cards.add(new SetCardInfo("Gorilla Warrior", 30, Rarity.COMMON, mage.cards.g.GorillaWarrior.class)); + cards.add(new SetCardInfo("Healing Salve", 31, Rarity.COMMON, mage.cards.h.HealingSalve.class)); + cards.add(new SetCardInfo("Heat Ray", 32, Rarity.COMMON, mage.cards.h.HeatRay.class)); + cards.add(new SetCardInfo("Hurricane", 33, Rarity.UNCOMMON, mage.cards.h.Hurricane.class)); + cards.add(new SetCardInfo("Infantry Veteran", 34, Rarity.COMMON, mage.cards.i.InfantryVeteran.class)); + cards.add(new SetCardInfo("Island", 114, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", 113, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", 112, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", 111, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", 110, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Land Tax", 35, Rarity.UNCOMMON, mage.cards.l.LandTax.class)); + cards.add(new SetCardInfo("Lhurgoyf", 36, Rarity.RARE, mage.cards.l.Lhurgoyf.class)); + cards.add(new SetCardInfo("Lightning Elemental", 37, Rarity.COMMON, mage.cards.l.LightningElemental.class)); + cards.add(new SetCardInfo("Living Death", 38, Rarity.RARE, mage.cards.l.LivingDeath.class)); + cards.add(new SetCardInfo("Llanowar Elves", 39, Rarity.COMMON, mage.cards.l.LlanowarElves.class)); + cards.add(new SetCardInfo("Man-o'-War", 40, Rarity.COMMON, mage.cards.m.ManOWar.class)); + cards.add(new SetCardInfo("Mana Leak", 41, Rarity.COMMON, mage.cards.m.ManaLeak.class)); + cards.add(new SetCardInfo("Maniacal Rage", 42, Rarity.COMMON, mage.cards.m.ManiacalRage.class)); + cards.add(new SetCardInfo("Manta Riders", 43, Rarity.COMMON, mage.cards.m.MantaRiders.class)); + cards.add(new SetCardInfo("Master Decoy", 44, Rarity.COMMON, mage.cards.m.MasterDecoy.class)); + cards.add(new SetCardInfo("Mogg Hollows", 45, Rarity.UNCOMMON, mage.cards.m.MoggHollows.class)); + cards.add(new SetCardInfo("Mountain", 123, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", 122, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", 121, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", 120, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", 119, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", 118, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", 117, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", 116, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", 115, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Nekrataal", 46, Rarity.UNCOMMON, mage.cards.n.Nekrataal.class)); + cards.add(new SetCardInfo("Opportunity", 47, Rarity.UNCOMMON, mage.cards.o.Opportunity.class)); + cards.add(new SetCardInfo("Pacifism", 48, Rarity.COMMON, mage.cards.p.Pacifism.class)); + cards.add(new SetCardInfo("Pestilence", 49, Rarity.UNCOMMON, mage.cards.p.Pestilence.class)); + cards.add(new SetCardInfo("Phyrexian Ghoul", 50, Rarity.COMMON, mage.cards.p.PhyrexianGhoul.class)); + cards.add(new SetCardInfo("Pincher Beetles", 51, Rarity.COMMON, mage.cards.p.PincherBeetles.class)); + cards.add(new SetCardInfo("Plains", 132, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plains", 131, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plains", 130, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plains", 129, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plains", 128, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plains", 127, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plains", 126, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plains", 125, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plains", 124, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plated Rootwalla", 52, Rarity.COMMON, mage.cards.p.PlatedRootwalla.class)); + cards.add(new SetCardInfo("Polluted Mire", 53, Rarity.COMMON, mage.cards.p.PollutedMire.class)); + cards.add(new SetCardInfo("Prodigal Sorcerer", 54, Rarity.COMMON, mage.cards.p.ProdigalSorcerer.class)); + cards.add(new SetCardInfo("Raging Goblin", 55, Rarity.COMMON, mage.cards.r.RagingGoblin.class)); + cards.add(new SetCardInfo("Ray of Command", 56, Rarity.COMMON, mage.cards.r.RayOfCommand.class)); + cards.add(new SetCardInfo("Reanimate", 57, Rarity.UNCOMMON, mage.cards.r.Reanimate.class)); + cards.add(new SetCardInfo("Remote Isle", 58, Rarity.COMMON, mage.cards.r.RemoteIsle.class)); + cards.add(new SetCardInfo("River Boa", 59, Rarity.UNCOMMON, mage.cards.r.RiverBoa.class)); + cards.add(new SetCardInfo("Rolling Thunder", 60, Rarity.COMMON, mage.cards.r.RollingThunder.class)); + cards.add(new SetCardInfo("Sadistic Glee", 61, Rarity.COMMON, mage.cards.s.SadisticGlee.class)); + cards.add(new SetCardInfo("Sanctum Custodian", 62, Rarity.COMMON, mage.cards.s.SanctumCustodian.class)); + cards.add(new SetCardInfo("Sanctum Guardian", 63, Rarity.UNCOMMON, mage.cards.s.SanctumGuardian.class)); + cards.add(new SetCardInfo("Sandstorm", 64, Rarity.COMMON, mage.cards.s.Sandstorm.class)); + cards.add(new SetCardInfo("Scaled Wurm", 65, Rarity.COMMON, mage.cards.s.ScaledWurm.class)); + cards.add(new SetCardInfo("Scryb Sprites", 66, Rarity.COMMON, mage.cards.s.ScrybSprites.class)); + cards.add(new SetCardInfo("Seasoned Marshal", 67, Rarity.UNCOMMON, mage.cards.s.SeasonedMarshal.class)); + cards.add(new SetCardInfo("Seeker of Skybreak", 68, Rarity.COMMON, mage.cards.s.SeekerOfSkybreak.class)); + cards.add(new SetCardInfo("Sengir Vampire", 69, Rarity.UNCOMMON, mage.cards.s.SengirVampire.class)); + cards.add(new SetCardInfo("Sewer Rats", 70, Rarity.COMMON, mage.cards.s.SewerRats.class)); + cards.add(new SetCardInfo("Shower of Sparks", 71, Rarity.COMMON, mage.cards.s.ShowerOfSparks.class)); + cards.add(new SetCardInfo("Skyshroud Elite", 72, Rarity.UNCOMMON, mage.cards.s.SkyshroudElite.class)); + cards.add(new SetCardInfo("Slippery Karst", 73, Rarity.COMMON, mage.cards.s.SlipperyKarst.class)); + cards.add(new SetCardInfo("Soltari Foot Soldier", 74, Rarity.COMMON, mage.cards.s.SoltariFootSoldier.class)); + cards.add(new SetCardInfo("Songstitcher", 75, Rarity.UNCOMMON, mage.cards.s.Songstitcher.class)); + cards.add(new SetCardInfo("Soul Warden", 76, Rarity.COMMON, mage.cards.s.SoulWarden.class)); + cards.add(new SetCardInfo("Spike Colony", 77, Rarity.COMMON, mage.cards.s.SpikeColony.class)); + cards.add(new SetCardInfo("Spike Feeder", 78, Rarity.UNCOMMON, mage.cards.s.SpikeFeeder.class)); + cards.add(new SetCardInfo("Spike Weaver", 79, Rarity.RARE, mage.cards.s.SpikeWeaver.class)); + cards.add(new SetCardInfo("Spike Worker", 80, Rarity.COMMON, mage.cards.s.SpikeWorker.class)); + cards.add(new SetCardInfo("Steam Blast", 81, Rarity.UNCOMMON, mage.cards.s.SteamBlast.class)); + cards.add(new SetCardInfo("Subversion", 82, Rarity.RARE, mage.cards.s.Subversion.class)); + cards.add(new SetCardInfo("Sun Clasp", 83, Rarity.COMMON, mage.cards.s.SunClasp.class)); + cards.add(new SetCardInfo("Swamp", 136, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", 135, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", 134, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", 133, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swords to Plowshares", 84, Rarity.UNCOMMON, mage.cards.s.SwordsToPlowshares.class)); + cards.add(new SetCardInfo("Symbiosis", 85, Rarity.COMMON, mage.cards.s.Symbiosis.class)); + cards.add(new SetCardInfo("Syphon Soul", 86, Rarity.COMMON, mage.cards.s.SyphonSoul.class)); + cards.add(new SetCardInfo("Terror", 87, Rarity.COMMON, mage.cards.t.Terror.class)); + cards.add(new SetCardInfo("Thalakos Lowlands", 88, Rarity.UNCOMMON, mage.cards.t.ThalakosLowlands.class)); + cards.add(new SetCardInfo("Tranquility", 89, Rarity.COMMON, mage.cards.t.Tranquility.class)); + cards.add(new SetCardInfo("Trumpeting Armodon", 90, Rarity.UNCOMMON, mage.cards.t.TrumpetingArmodon.class)); + cards.add(new SetCardInfo("Unnerve", 91, Rarity.COMMON, mage.cards.u.Unnerve.class)); + cards.add(new SetCardInfo("Uthden Troll", 92, Rarity.UNCOMMON, mage.cards.u.UthdenTroll.class)); + cards.add(new SetCardInfo("Vec Townships", 93, Rarity.UNCOMMON, mage.cards.v.VecTownships.class)); + cards.add(new SetCardInfo("Village Elder", 94, Rarity.COMMON, mage.cards.v.VillageElder.class)); + cards.add(new SetCardInfo("Wall of Heat", 95, Rarity.COMMON, mage.cards.w.WallOfHeat.class)); + cards.add(new SetCardInfo("Weakness", 96, Rarity.COMMON, mage.cards.w.Weakness.class)); + cards.add(new SetCardInfo("Wildfire Emissary", 97, Rarity.UNCOMMON, mage.cards.w.WildfireEmissary.class)); + cards.add(new SetCardInfo("Wind Drake", 98, Rarity.COMMON, mage.cards.w.WindDrake.class)); + cards.add(new SetCardInfo("Windfall", 99, Rarity.UNCOMMON, mage.cards.w.Windfall.class)); + cards.add(new SetCardInfo("Wrath of God", 100, Rarity.RARE, mage.cards.w.WrathOfGod.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/BattlebondPromos.java b/Mage.Sets/src/mage/sets/BattlebondPromos.java new file mode 100644 index 00000000000..4e869831ecc --- /dev/null +++ b/Mage.Sets/src/mage/sets/BattlebondPromos.java @@ -0,0 +1,46 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/pbbd + */ +public class BattlebondPromos extends ExpansionSet { + + private static final BattlebondPromos instance = new BattlebondPromos(); + + public static BattlebondPromos getInstance() { + return instance; + } + + private BattlebondPromos() { + super("Battlebond Promos", "PBBD", ExpansionSet.buildDate(2018, 6, 9), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Blaring Captain", "14s", Rarity.UNCOMMON, mage.cards.b.BlaringCaptain.class)); + cards.add(new SetCardInfo("Blaring Recruiter", "13s", Rarity.UNCOMMON, mage.cards.b.BlaringRecruiter.class)); + cards.add(new SetCardInfo("Chakram Retriever", "15s", Rarity.UNCOMMON, mage.cards.c.ChakramRetriever.class)); + cards.add(new SetCardInfo("Chakram Slinger", "16s", Rarity.UNCOMMON, mage.cards.c.ChakramSlinger.class)); + cards.add(new SetCardInfo("Gorm the Great", "8s", Rarity.RARE, mage.cards.g.GormTheGreat.class)); + cards.add(new SetCardInfo("Impetuous Protege", "19s", Rarity.UNCOMMON, mage.cards.i.ImpetuousProtege.class)); + cards.add(new SetCardInfo("Khorvath Brightflame", "9s", Rarity.RARE, mage.cards.k.KhorvathBrightflame.class)); + cards.add(new SetCardInfo("Krav, the Unredeemed", "4s", Rarity.RARE, mage.cards.k.KravTheUnredeemed.class)); + cards.add(new SetCardInfo("Ley Weaver", "21s", Rarity.UNCOMMON, mage.cards.l.LeyWeaver.class)); + cards.add(new SetCardInfo("Lore Weaver", "22s", Rarity.UNCOMMON, mage.cards.l.LoreWeaver.class)); + cards.add(new SetCardInfo("Okaun, Eye of Chaos", "6s", Rarity.RARE, mage.cards.o.OkaunEyeOfChaos.class)); + cards.add(new SetCardInfo("Pir, Imaginative Rascal", "11s", Rarity.RARE, mage.cards.p.PirImaginativeRascal.class)); + cards.add(new SetCardInfo("Proud Mentor", "20s", Rarity.UNCOMMON, mage.cards.p.ProudMentor.class)); + cards.add(new SetCardInfo("Regna, the Redeemer", "3s", Rarity.RARE, mage.cards.r.RegnaTheRedeemer.class)); + cards.add(new SetCardInfo("Rowan Kenrith", "256s", Rarity.MYTHIC, mage.cards.r.RowanKenrith.class)); + cards.add(new SetCardInfo("Soulblade Corrupter", "17s", Rarity.UNCOMMON, mage.cards.s.SoulbladeCorrupter.class)); + cards.add(new SetCardInfo("Soulblade Renewer", "18s", Rarity.UNCOMMON, mage.cards.s.SoulbladeRenewer.class)); + cards.add(new SetCardInfo("Sylvia Brightspear", "10s", Rarity.RARE, mage.cards.s.SylviaBrightspear.class)); + cards.add(new SetCardInfo("Toothy, Imaginary Friend", "12s", Rarity.RARE, mage.cards.t.ToothyImaginaryFriend.class)); + cards.add(new SetCardInfo("Virtus the Veiled", "7s", Rarity.RARE, mage.cards.v.VirtusTheVeiled.class)); + cards.add(new SetCardInfo("Will Kenrith", "255s", Rarity.MYTHIC, mage.cards.w.WillKenrith.class)); + cards.add(new SetCardInfo("Zndrsplt, Eye of Wisdom", "5s", Rarity.RARE, mage.cards.z.ZndrspltEyeOfWisdom.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/BeatdownBoxSet.java b/Mage.Sets/src/mage/sets/BeatdownBoxSet.java new file mode 100644 index 00000000000..350085264a7 --- /dev/null +++ b/Mage.Sets/src/mage/sets/BeatdownBoxSet.java @@ -0,0 +1,114 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/btd + */ +public class BeatdownBoxSet extends ExpansionSet { + + private static final BeatdownBoxSet instance = new BeatdownBoxSet(); + + public static BeatdownBoxSet getInstance() { + return instance; + } + + private BeatdownBoxSet() { + super("Beatdown Box Set", "BTD", ExpansionSet.buildDate(2000, 10, 1), SetType.SUPPLEMENTAL); + this.hasBoosters = false; + this.hasBasicLands = true; + + cards.add(new SetCardInfo("Air Elemental", 1, Rarity.UNCOMMON, mage.cards.a.AirElemental.class)); + cards.add(new SetCardInfo("Balduvian Horde", 34, Rarity.RARE, mage.cards.b.BalduvianHorde.class)); + cards.add(new SetCardInfo("Ball Lightning", 35, Rarity.RARE, mage.cards.b.BallLightning.class)); + cards.add(new SetCardInfo("Blizzard Elemental", 2, Rarity.RARE, mage.cards.b.BlizzardElemental.class)); + cards.add(new SetCardInfo("Bloodrock Cyclops", 36, Rarity.COMMON, mage.cards.b.BloodrockCyclops.class)); + cards.add(new SetCardInfo("Bone Harvest", 19, Rarity.COMMON, mage.cards.b.BoneHarvest.class)); + cards.add(new SetCardInfo("Brainstorm", 3, Rarity.COMMON, mage.cards.b.Brainstorm.class)); + cards.add(new SetCardInfo("Clockwork Avian", 69, Rarity.RARE, mage.cards.c.ClockworkAvian.class)); + cards.add(new SetCardInfo("Clockwork Beast", 70, Rarity.RARE, mage.cards.c.ClockworkBeast.class)); + cards.add(new SetCardInfo("Cloud Djinn", 4, Rarity.UNCOMMON, mage.cards.c.CloudDjinn.class)); + cards.add(new SetCardInfo("Cloud Elemental", 5, Rarity.COMMON, mage.cards.c.CloudElemental.class)); + cards.add(new SetCardInfo("Coercion", 20, Rarity.COMMON, mage.cards.c.Coercion.class)); + cards.add(new SetCardInfo("Counterspell", 6, Rarity.COMMON, mage.cards.c.Counterspell.class)); + cards.add(new SetCardInfo("Crash of Rhinos", 51, Rarity.COMMON, mage.cards.c.CrashOfRhinos.class)); + cards.add(new SetCardInfo("Crashing Boars", 52, Rarity.UNCOMMON, mage.cards.c.CrashingBoars.class)); + cards.add(new SetCardInfo("Dark Ritual", 21, Rarity.COMMON, mage.cards.d.DarkRitual.class)); + cards.add(new SetCardInfo("Deadly Insect", 53, Rarity.COMMON, mage.cards.d.DeadlyInsect.class)); + cards.add(new SetCardInfo("Death Stroke", 22, Rarity.COMMON, mage.cards.d.DeathStroke.class)); + cards.add(new SetCardInfo("Diabolic Edict", 23, Rarity.COMMON, mage.cards.d.DiabolicEdict.class)); + cards.add(new SetCardInfo("Diabolic Vision", 67, Rarity.UNCOMMON, mage.cards.d.DiabolicVision.class)); + cards.add(new SetCardInfo("Drain Life", 24, Rarity.COMMON, mage.cards.d.DrainLife.class)); + cards.add(new SetCardInfo("Dwarven Ruins", 71, Rarity.UNCOMMON, mage.cards.d.DwarvenRuins.class)); + cards.add(new SetCardInfo("Ebon Stronghold", 72, Rarity.UNCOMMON, mage.cards.e.EbonStronghold.class)); + cards.add(new SetCardInfo("Erhnam Djinn", 54, Rarity.UNCOMMON, mage.cards.e.ErhnamDjinn.class)); + cards.add(new SetCardInfo("Fallen Angel", 25, Rarity.RARE, mage.cards.f.FallenAngel.class)); + cards.add(new SetCardInfo("Feral Shadow", 26, Rarity.COMMON, mage.cards.f.FeralShadow.class)); + cards.add(new SetCardInfo("Fireball", 37, Rarity.COMMON, mage.cards.f.Fireball.class)); + cards.add(new SetCardInfo("Fog", 55, Rarity.COMMON, mage.cards.f.Fog.class)); + cards.add(new SetCardInfo("Fog Elemental", 7, Rarity.COMMON, mage.cards.f.FogElemental.class)); + cards.add(new SetCardInfo("Force of Nature", 56, Rarity.RARE, mage.cards.f.ForceOfNature.class)); + cards.add(new SetCardInfo("Forest", 90, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", 89, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", 88, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Gaseous Form", 8, Rarity.COMMON, mage.cards.g.GaseousForm.class)); + cards.add(new SetCardInfo("Giant Crab", 9, Rarity.COMMON, mage.cards.g.GiantCrab.class)); + cards.add(new SetCardInfo("Giant Growth", 57, Rarity.COMMON, mage.cards.g.GiantGrowth.class)); + cards.add(new SetCardInfo("Gravedigger", 27, Rarity.COMMON, mage.cards.g.Gravedigger.class)); + cards.add(new SetCardInfo("Havenwood Battleground", 73, Rarity.UNCOMMON, mage.cards.h.HavenwoodBattleground.class)); + cards.add(new SetCardInfo("Hollow Dogs", 28, Rarity.COMMON, mage.cards.h.HollowDogs.class)); + cards.add(new SetCardInfo("Hulking Cyclops", 38, Rarity.UNCOMMON, mage.cards.h.HulkingCyclops.class)); + cards.add(new SetCardInfo("Impulse", 10, Rarity.COMMON, mage.cards.i.Impulse.class)); + cards.add(new SetCardInfo("Island", 81, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", 80, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", 79, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Killer Whale", 11, Rarity.UNCOMMON, mage.cards.k.KillerWhale.class)); + cards.add(new SetCardInfo("Kird Ape", 39, Rarity.COMMON, mage.cards.k.KirdApe.class)); + cards.add(new SetCardInfo("Lava Axe", 40, Rarity.COMMON, mage.cards.l.LavaAxe.class)); + cards.add(new SetCardInfo("Leviathan", 12, Rarity.RARE, mage.cards.l.Leviathan.class)); + cards.add(new SetCardInfo("Lightning Bolt", 41, Rarity.COMMON, mage.cards.l.LightningBolt.class)); + cards.add(new SetCardInfo("Llanowar Elves", 58, Rarity.COMMON, mage.cards.l.LlanowarElves.class)); + cards.add(new SetCardInfo("Lowland Giant", 42, Rarity.COMMON, mage.cards.l.LowlandGiant.class)); + cards.add(new SetCardInfo("Mahamoti Djinn", 13, Rarity.RARE, mage.cards.m.MahamotiDjinn.class)); + cards.add(new SetCardInfo("Mountain", 87, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", 86, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", 85, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plated Spider", 59, Rarity.COMMON, mage.cards.p.PlatedSpider.class)); + cards.add(new SetCardInfo("Polluted Mire", 74, Rarity.COMMON, mage.cards.p.PollutedMire.class)); + cards.add(new SetCardInfo("Power Sink", 14, Rarity.COMMON, mage.cards.p.PowerSink.class)); + cards.add(new SetCardInfo("Quirion Elves", 60, Rarity.COMMON, mage.cards.q.QuirionElves.class)); + cards.add(new SetCardInfo("Raging Goblin", 43, Rarity.COMMON, mage.cards.r.RagingGoblin.class)); + cards.add(new SetCardInfo("Rampant Growth", 61, Rarity.COMMON, mage.cards.r.RampantGrowth.class)); + cards.add(new SetCardInfo("Remote Isle", 75, Rarity.COMMON, mage.cards.r.RemoteIsle.class)); + cards.add(new SetCardInfo("Scaled Wurm", 62, Rarity.COMMON, mage.cards.s.ScaledWurm.class)); + cards.add(new SetCardInfo("Segmented Wurm", 68, Rarity.UNCOMMON, mage.cards.s.SegmentedWurm.class)); + cards.add(new SetCardInfo("Sengir Vampire", 29, Rarity.UNCOMMON, mage.cards.s.SengirVampire.class)); + cards.add(new SetCardInfo("Shambling Strider", 63, Rarity.COMMON, mage.cards.s.ShamblingStrider.class)); + cards.add(new SetCardInfo("Shivan Dragon", 44, Rarity.RARE, mage.cards.s.ShivanDragon.class)); + cards.add(new SetCardInfo("Shock", 45, Rarity.COMMON, mage.cards.s.Shock.class)); + cards.add(new SetCardInfo("Skittering Horror", 30, Rarity.COMMON, mage.cards.s.SkitteringHorror.class)); + cards.add(new SetCardInfo("Skittering Skirge", 31, Rarity.COMMON, mage.cards.s.SkitteringSkirge.class)); + cards.add(new SetCardInfo("Slippery Karst", 76, Rarity.COMMON, mage.cards.s.SlipperyKarst.class)); + cards.add(new SetCardInfo("Smoldering Crater", 77, Rarity.COMMON, mage.cards.s.SmolderingCrater.class)); + cards.add(new SetCardInfo("Snapping Drake", 15, Rarity.COMMON, mage.cards.s.SnappingDrake.class)); + cards.add(new SetCardInfo("Sonic Burst", 46, Rarity.COMMON, mage.cards.s.SonicBurst.class)); + cards.add(new SetCardInfo("Svyelunite Temple", 78, Rarity.UNCOMMON, mage.cards.s.SvyeluniteTemple.class)); + cards.add(new SetCardInfo("Swamp", 84, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", 83, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", 82, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Talruum Minotaur", 47, Rarity.COMMON, mage.cards.t.TalruumMinotaur.class)); + cards.add(new SetCardInfo("Tar Pit Warrior", 32, Rarity.COMMON, mage.cards.t.TarPitWarrior.class)); + cards.add(new SetCardInfo("Terror", 33, Rarity.COMMON, mage.cards.t.Terror.class)); + cards.add(new SetCardInfo("Thunderbolt", 48, Rarity.COMMON, mage.cards.t.Thunderbolt.class)); + cards.add(new SetCardInfo("Thundering Giant", 49, Rarity.UNCOMMON, mage.cards.t.ThunderingGiant.class)); + cards.add(new SetCardInfo("Tolarian Winds", 16, Rarity.COMMON, mage.cards.t.TolarianWinds.class)); + cards.add(new SetCardInfo("Viashino Warrior", 50, Rarity.COMMON, mage.cards.v.ViashinoWarrior.class)); + cards.add(new SetCardInfo("Vigilant Drake", 17, Rarity.COMMON, mage.cards.v.VigilantDrake.class)); + cards.add(new SetCardInfo("Wayward Soul", 18, Rarity.COMMON, mage.cards.w.WaywardSoul.class)); + cards.add(new SetCardInfo("Wild Growth", 64, Rarity.COMMON, mage.cards.w.WildGrowth.class)); + cards.add(new SetCardInfo("Woolly Spider", 65, Rarity.COMMON, mage.cards.w.WoollySpider.class)); + cards.add(new SetCardInfo("Yavimaya Wurm", 66, Rarity.COMMON, mage.cards.y.YavimayaWurm.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/BornOfTheGodsPromos.java b/Mage.Sets/src/mage/sets/BornOfTheGodsPromos.java new file mode 100644 index 00000000000..ebfb1a4bf7a --- /dev/null +++ b/Mage.Sets/src/mage/sets/BornOfTheGodsPromos.java @@ -0,0 +1,33 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/pbng + */ +public class BornOfTheGodsPromos extends ExpansionSet { + + private static final BornOfTheGodsPromos instance = new BornOfTheGodsPromos(); + + public static BornOfTheGodsPromos getInstance() { + return instance; + } + + private BornOfTheGodsPromos() { + super("Born of the Gods Promos", "PBNG", ExpansionSet.buildDate(2014, 2, 1), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Arbiter of the Ideal", 31, Rarity.RARE, mage.cards.a.ArbiterOfTheIdeal.class)); + cards.add(new SetCardInfo("Eater of Hope", 66, Rarity.RARE, mage.cards.e.EaterOfHope.class)); + cards.add(new SetCardInfo("Fated Conflagration", "*94", Rarity.RARE, mage.cards.f.FatedConflagration.class)); + cards.add(new SetCardInfo("Forgestoker Dragon", 98, Rarity.RARE, mage.cards.f.ForgestokerDragon.class)); + cards.add(new SetCardInfo("Kiora's Follower", 150, Rarity.UNCOMMON, mage.cards.k.KiorasFollower.class)); + cards.add(new SetCardInfo("Nessian Wilds Ravager", 129, Rarity.RARE, mage.cards.n.NessianWildsRavager.class)); + cards.add(new SetCardInfo("Pain Seer", 80, Rarity.RARE, mage.cards.p.PainSeer.class)); + cards.add(new SetCardInfo("Silent Sentinel", 26, Rarity.RARE, mage.cards.s.SilentSentinel.class)); + cards.add(new SetCardInfo("Tromokratis", 55, Rarity.RARE, mage.cards.t.Tromokratis.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/Champs.java b/Mage.Sets/src/mage/sets/Champs.java deleted file mode 100644 index f748aa9a94c..00000000000 --- a/Mage.Sets/src/mage/sets/Champs.java +++ /dev/null @@ -1,37 +0,0 @@ - -package mage.sets; - -import mage.cards.ExpansionSet; -import mage.constants.Rarity; -import mage.constants.SetType; - -/** - * @author fireshoes - */ -public final class Champs extends ExpansionSet { - - private static final Champs instance = new Champs(); - - public static Champs getInstance() { - return instance; - } - - private Champs() { - super("Champs", "CP", ExpansionSet.buildDate(2006, 3, 18), SetType.PROMOTIONAL); - this.hasBoosters = false; - this.hasBasicLands = false; - - cards.add(new SetCardInfo("Blood Knight", 7, Rarity.SPECIAL, mage.cards.b.BloodKnight.class)); - cards.add(new SetCardInfo("Bramblewood Paragon", 11, Rarity.SPECIAL, mage.cards.b.BramblewoodParagon.class)); - cards.add(new SetCardInfo("Doran, the Siege Tower", 10, Rarity.SPECIAL, mage.cards.d.DoranTheSiegeTower.class)); - cards.add(new SetCardInfo("Electrolyze", 1, Rarity.SPECIAL, mage.cards.e.Electrolyze.class)); - cards.add(new SetCardInfo("Groundbreaker", 8, Rarity.SPECIAL, mage.cards.g.Groundbreaker.class)); - cards.add(new SetCardInfo("Imperious Perfect", 9, Rarity.SPECIAL, mage.cards.i.ImperiousPerfect.class)); - cards.add(new SetCardInfo("Mutavault", 12, Rarity.SPECIAL, mage.cards.m.Mutavault.class)); - cards.add(new SetCardInfo("Niv-Mizzet, the Firemind", 2, Rarity.SPECIAL, mage.cards.n.NivMizzetTheFiremind.class)); - cards.add(new SetCardInfo("Rakdos Guildmage", 3, Rarity.SPECIAL, mage.cards.r.RakdosGuildmage.class)); - cards.add(new SetCardInfo("Serra Avenger", 6, Rarity.SPECIAL, mage.cards.s.SerraAvenger.class)); - cards.add(new SetCardInfo("Urza's Factory", 5, Rarity.SPECIAL, mage.cards.u.UrzasFactory.class)); - cards.add(new SetCardInfo("Voidslime", 4, Rarity.SPECIAL, mage.cards.v.Voidslime.class)); - } -} diff --git a/Mage.Sets/src/mage/sets/ChampsAndStates.java b/Mage.Sets/src/mage/sets/ChampsAndStates.java new file mode 100644 index 00000000000..d44d520fc8b --- /dev/null +++ b/Mage.Sets/src/mage/sets/ChampsAndStates.java @@ -0,0 +1,37 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/pcmp + * https://mtg.gamepedia.com/Magic_Champs_and_States + */ +public class ChampsAndStates extends ExpansionSet { + + private static final ChampsAndStates instance = new ChampsAndStates(); + + public static ChampsAndStates getInstance() { + return instance; + } + + private ChampsAndStates() { + super("Champs and States", "PCMP", ExpansionSet.buildDate(2008, 3, 29), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Blood Knight", 7, Rarity.RARE, mage.cards.b.BloodKnight.class)); + cards.add(new SetCardInfo("Bramblewood Paragon", 11, Rarity.RARE, mage.cards.b.BramblewoodParagon.class)); + cards.add(new SetCardInfo("Doran, the Siege Tower", 10, Rarity.RARE, mage.cards.d.DoranTheSiegeTower.class)); + cards.add(new SetCardInfo("Electrolyze", 1, Rarity.RARE, mage.cards.e.Electrolyze.class)); + cards.add(new SetCardInfo("Groundbreaker", 8, Rarity.RARE, mage.cards.g.Groundbreaker.class)); + cards.add(new SetCardInfo("Imperious Perfect", 9, Rarity.RARE, mage.cards.i.ImperiousPerfect.class)); + cards.add(new SetCardInfo("Mutavault", 12, Rarity.RARE, mage.cards.m.Mutavault.class)); + cards.add(new SetCardInfo("Niv-Mizzet, the Firemind", 2, Rarity.RARE, mage.cards.n.NivMizzetTheFiremind.class)); + cards.add(new SetCardInfo("Rakdos Guildmage", 3, Rarity.RARE, mage.cards.r.RakdosGuildmage.class)); + cards.add(new SetCardInfo("Serra Avenger", 6, Rarity.RARE, mage.cards.s.SerraAvenger.class)); + cards.add(new SetCardInfo("Urza's Factory", 5, Rarity.RARE, mage.cards.u.UrzasFactory.class)); + cards.add(new SetCardInfo("Voidslime", 4, Rarity.RARE, mage.cards.v.Voidslime.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/ClashPack.java b/Mage.Sets/src/mage/sets/ClashPack.java deleted file mode 100644 index 93453e15b0e..00000000000 --- a/Mage.Sets/src/mage/sets/ClashPack.java +++ /dev/null @@ -1,36 +0,0 @@ - -package mage.sets; - -import mage.cards.ExpansionSet; -import mage.constants.Rarity; -import mage.constants.SetType; - -/** - * - * @author LevelX2 - */ -public final class ClashPack extends ExpansionSet { - - private static final ClashPack instance = new ClashPack(); - - public static ClashPack getInstance() { - return instance; - } - - private ClashPack() { - super("Clash Pack", "CLASH", ExpansionSet.buildDate(2014, 7, 18), SetType.SUPPLEMENTAL); - this.hasBasicLands = false; - cards.add(new SetCardInfo("Courser of Kruphix", 12, Rarity.SPECIAL, mage.cards.c.CourserOfKruphix.class)); - cards.add(new SetCardInfo("Fated Intervention", 2, Rarity.SPECIAL, mage.cards.f.FatedIntervention.class)); - cards.add(new SetCardInfo("Font of Fertility", 3, Rarity.SPECIAL, mage.cards.f.FontOfFertility.class)); - cards.add(new SetCardInfo("Hero's Downfall", 8, Rarity.SPECIAL, mage.cards.h.HerosDownfall.class)); - cards.add(new SetCardInfo("Hydra Broodmaster", 4, Rarity.SPECIAL, mage.cards.h.HydraBroodmaster.class)); - cards.add(new SetCardInfo("Necropolis Fiend", 7, Rarity.SPECIAL, mage.cards.n.NecropolisFiend.class)); - cards.add(new SetCardInfo("Prognostic Sphinx", 1, Rarity.SPECIAL, mage.cards.p.PrognosticSphinx.class)); - cards.add(new SetCardInfo("Prophet of Kruphix", 5, Rarity.SPECIAL, mage.cards.p.ProphetOfKruphix.class)); - cards.add(new SetCardInfo("Reaper of the Wilds", 10, Rarity.SPECIAL, mage.cards.r.ReaperOfTheWilds.class)); - cards.add(new SetCardInfo("Sultai Ascendancy", 9, Rarity.SPECIAL, mage.cards.s.SultaiAscendancy.class)); - cards.add(new SetCardInfo("Temple of Mystery", 6, Rarity.SPECIAL, mage.cards.t.TempleOfMystery.class)); - cards.add(new SetCardInfo("Whip of Erebos", 11, Rarity.SPECIAL, mage.cards.w.WhipOfErebos.class)); - } -} diff --git a/Mage.Sets/src/mage/sets/ColdsnapThemeDecks.java b/Mage.Sets/src/mage/sets/ColdsnapThemeDecks.java new file mode 100644 index 00000000000..2878cb519a4 --- /dev/null +++ b/Mage.Sets/src/mage/sets/ColdsnapThemeDecks.java @@ -0,0 +1,86 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/cst + */ +public class ColdsnapThemeDecks extends ExpansionSet { + + private static final ColdsnapThemeDecks instance = new ColdsnapThemeDecks(); + + public static ColdsnapThemeDecks getInstance() { + return instance; + } + + private ColdsnapThemeDecks() { + super("Coldsnap Theme Decks", "CST", ExpansionSet.buildDate(2006, 7, 21), SetType.SUPPLEMENTAL); + this.hasBoosters = false; + this.hasBasicLands = true; + + //cards.add(new SetCardInfo("Arcum's Weathervane", 310, Rarity.UNCOMMON, mage.cards.a.ArcumsWeathervane.class)); + cards.add(new SetCardInfo("Ashen Ghoul", 114, Rarity.UNCOMMON, mage.cards.a.AshenGhoul.class)); + cards.add(new SetCardInfo("Aurochs", 225, Rarity.COMMON, mage.cards.a.Aurochs.class)); + cards.add(new SetCardInfo("Balduvian Dead", 43, Rarity.UNCOMMON, mage.cards.b.BalduvianDead.class)); + cards.add(new SetCardInfo("Barbed Sextant", 312, Rarity.COMMON, mage.cards.b.BarbedSextant.class)); + cards.add(new SetCardInfo("Binding Grasp", 60, Rarity.UNCOMMON, mage.cards.b.BindingGrasp.class)); + cards.add(new SetCardInfo("Bounty of the Hunt", 85, Rarity.UNCOMMON, mage.cards.b.BountyOfTheHunt.class)); + cards.add(new SetCardInfo("Brainstorm", 61, Rarity.COMMON, mage.cards.b.Brainstorm.class)); + cards.add(new SetCardInfo("Browse", 25, Rarity.UNCOMMON, mage.cards.b.Browse.class)); + cards.add(new SetCardInfo("Casting of Bones", "44b", Rarity.COMMON, mage.cards.c.CastingOfBones.class)); + cards.add(new SetCardInfo("Dark Banishing", 119, Rarity.COMMON, mage.cards.d.DarkBanishing.class)); + cards.add(new SetCardInfo("Dark Ritual", 120, Rarity.COMMON, mage.cards.d.DarkRitual.class)); + cards.add(new SetCardInfo("Deadly Insect", "86a", Rarity.COMMON, mage.cards.d.DeadlyInsect.class)); + cards.add(new SetCardInfo("Death Spark", 70, Rarity.UNCOMMON, mage.cards.d.DeathSpark.class)); + cards.add(new SetCardInfo("Disenchant", 20, Rarity.COMMON, mage.cards.d.Disenchant.class)); + cards.add(new SetCardInfo("Drift of the Dead", 123, Rarity.UNCOMMON, mage.cards.d.DriftOfTheDead.class)); + cards.add(new SetCardInfo("Essence Flare", 69, Rarity.COMMON, mage.cards.e.EssenceFlare.class)); + cards.add(new SetCardInfo("Forest", 381, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", 382, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", 383, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Gangrenous Zombies", 127, Rarity.COMMON, mage.cards.g.GangrenousZombies.class)); + cards.add(new SetCardInfo("Giant Trap Door Spider", 293, Rarity.UNCOMMON, mage.cards.g.GiantTrapDoorSpider.class)); + cards.add(new SetCardInfo("Gorilla Shaman", "72a", Rarity.COMMON, mage.cards.g.GorillaShaman.class)); + cards.add(new SetCardInfo("Iceberg", 73, Rarity.UNCOMMON, mage.cards.i.Iceberg.class)); + cards.add(new SetCardInfo("Incinerate", 194, Rarity.COMMON, mage.cards.i.Incinerate.class)); + cards.add(new SetCardInfo("Insidious Bookworms", "51a", Rarity.COMMON, mage.cards.i.InsidiousBookworms.class)); + cards.add(new SetCardInfo("Island", 372, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", 373, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", 374, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Kjeldoran Dead", 137, Rarity.COMMON, mage.cards.k.KjeldoranDead.class)); + //cards.add(new SetCardInfo("Kjeldoran Elite Guard", 34, Rarity.UNCOMMON, mage.cards.k.KjeldoranEliteGuard.class)); + cards.add(new SetCardInfo("Kjeldoran Home Guard", 8, Rarity.UNCOMMON, mage.cards.k.KjeldoranHomeGuard.class)); + cards.add(new SetCardInfo("Kjeldoran Pride", "9b", Rarity.COMMON, mage.cards.k.KjeldoranPride.class)); + cards.add(new SetCardInfo("Lat-Nam's Legacy", "30b", Rarity.COMMON, mage.cards.l.LatNamsLegacy.class)); + cards.add(new SetCardInfo("Legions of Lim-Dul", 142, Rarity.COMMON, mage.cards.l.LegionsOfLimDul.class)); + cards.add(new SetCardInfo("Mistfolk", 84, Rarity.COMMON, mage.cards.m.Mistfolk.class)); + cards.add(new SetCardInfo("Mountain", 378, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", 379, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", 380, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Orcish Healer", 208, Rarity.UNCOMMON, mage.cards.o.OrcishHealer.class)); + cards.add(new SetCardInfo("Orcish Lumberjack", 210, Rarity.COMMON, mage.cards.o.OrcishLumberjack.class)); + cards.add(new SetCardInfo("Phantasmal Fiend", "57a", Rarity.COMMON, mage.cards.p.PhantasmalFiend.class)); + cards.add(new SetCardInfo("Plains", 369, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plains", 370, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plains", 371, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Portent", 90, Rarity.COMMON, mage.cards.p.Portent.class)); + cards.add(new SetCardInfo("Reinforcements", "12b", Rarity.COMMON, mage.cards.r.Reinforcements.class)); + //ards.add(new SetCardInfo("Scars of the Veteran", 16, Rarity.UNCOMMON, mage.cards.s.ScarsOfTheVeteran.class)); + cards.add(new SetCardInfo("Skull Catapult", 336, Rarity.UNCOMMON, mage.cards.s.SkullCatapult.class)); + cards.add(new SetCardInfo("Snow Devil", 100, Rarity.COMMON, mage.cards.s.SnowDevil.class)); + cards.add(new SetCardInfo("Soul Burn", 161, Rarity.COMMON, mage.cards.s.SoulBurn.class)); + cards.add(new SetCardInfo("Storm Elemental", 37, Rarity.UNCOMMON, mage.cards.s.StormElemental.class)); + cards.add(new SetCardInfo("Swamp", 375, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", 376, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", 377, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swords to Plowshares", 54, Rarity.UNCOMMON, mage.cards.s.SwordsToPlowshares.class)); + cards.add(new SetCardInfo("Tinder Wall", 270, Rarity.COMMON, mage.cards.t.TinderWall.class)); + cards.add(new SetCardInfo("Viscerid Drone", 42, Rarity.UNCOMMON, mage.cards.v.VisceridDrone.class)); + cards.add(new SetCardInfo("Whalebone Glider", 349, Rarity.UNCOMMON, mage.cards.w.WhaleboneGlider.class)); + cards.add(new SetCardInfo("Wings of Aesthir", 305, Rarity.UNCOMMON, mage.cards.w.WingsOfAesthir.class)); + cards.add(new SetCardInfo("Woolly Mammoths", 278, Rarity.COMMON, mage.cards.w.WoollyMammoths.class)); + cards.add(new SetCardInfo("Zuran Spellcaster", 112, Rarity.COMMON, mage.cards.z.ZuranSpellcaster.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/Commander2011LaunchParty.java b/Mage.Sets/src/mage/sets/Commander2011LaunchParty.java new file mode 100644 index 00000000000..fd8e0c41f59 --- /dev/null +++ b/Mage.Sets/src/mage/sets/Commander2011LaunchParty.java @@ -0,0 +1,29 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/pcmd + */ +public class Commander2011LaunchParty extends ExpansionSet { + + private static final Commander2011LaunchParty instance = new Commander2011LaunchParty(); + + public static Commander2011LaunchParty getInstance() { + return instance; + } + + private Commander2011LaunchParty() { + super("Commander 2011 Launch Party", "PCMD", ExpansionSet.buildDate(2011, 6, 17), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Basandra, Battle Seraph", 184, Rarity.RARE, mage.cards.b.BasandraBattleSeraph.class)); + cards.add(new SetCardInfo("Edric, Spymaster of Trest", 196, Rarity.RARE, mage.cards.e.EdricSpymasterOfTrest.class)); + cards.add(new SetCardInfo("Nin, the Pain Artist", 213, Rarity.RARE, mage.cards.n.NinThePainArtist.class)); + cards.add(new SetCardInfo("Skullbriar, the Walking Grave", 227, Rarity.RARE, mage.cards.s.SkullbriarTheWalkingGrave.class)); + cards.add(new SetCardInfo("Vish Kal, Blood Arbiter", 234, Rarity.RARE, mage.cards.v.VishKalBloodArbiter.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/Commander2013Edition.java b/Mage.Sets/src/mage/sets/Commander2013Edition.java index e1011787db1..54cff546fbb 100644 --- a/Mage.Sets/src/mage/sets/Commander2013Edition.java +++ b/Mage.Sets/src/mage/sets/Commander2013Edition.java @@ -17,7 +17,7 @@ public final class Commander2013Edition extends ExpansionSet { } private Commander2013Edition() { - super("Commander 2013 Edition", "C13", ExpansionSet.buildDate(2013, 11, 01), SetType.SUPPLEMENTAL); + super("Commander 2013 Edition", "C13", ExpansionSet.buildDate(2013, 11, 1), SetType.SUPPLEMENTAL); this.blockName = "Command Zone"; cards.add(new SetCardInfo("Acidic Slime", 134, Rarity.UNCOMMON, mage.cards.a.AcidicSlime.class)); diff --git a/Mage.Sets/src/mage/sets/Commander2014Edition.java b/Mage.Sets/src/mage/sets/Commander2014Edition.java index e3422ee3ea1..707356f10e2 100644 --- a/Mage.Sets/src/mage/sets/Commander2014Edition.java +++ b/Mage.Sets/src/mage/sets/Commander2014Edition.java @@ -18,7 +18,7 @@ public final class Commander2014Edition extends ExpansionSet { } private Commander2014Edition() { - super("Commander 2014 Edition", "C14", ExpansionSet.buildDate(2014, 11, 07), SetType.SUPPLEMENTAL); + super("Commander 2014 Edition", "C14", ExpansionSet.buildDate(2014, 11, 7), SetType.SUPPLEMENTAL); this.blockName = "Command Zone"; cards.add(new SetCardInfo("Abyssal Persecutor", 132, Rarity.MYTHIC, mage.cards.a.AbyssalPersecutor.class)); cards.add(new SetCardInfo("Adarkar Valkyrie", 63, Rarity.RARE, mage.cards.a.AdarkarValkyrie.class)); diff --git a/Mage.Sets/src/mage/sets/CoreSet2019Promos.java b/Mage.Sets/src/mage/sets/CoreSet2019Promos.java new file mode 100644 index 00000000000..9ebf7e2f241 --- /dev/null +++ b/Mage.Sets/src/mage/sets/CoreSet2019Promos.java @@ -0,0 +1,117 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/pm19 + */ +public class CoreSet2019Promos extends ExpansionSet { + + private static final CoreSet2019Promos instance = new CoreSet2019Promos(); + + public static CoreSet2019Promos getInstance() { + return instance; + } + + private CoreSet2019Promos() { + super("Core Set 2019 Promos", "PM19", ExpansionSet.buildDate(2018, 7, 13), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Ajani's Last Stand", "4s", Rarity.RARE, mage.cards.a.AjanisLastStand.class)); + cards.add(new SetCardInfo("Ajani, Adversary of Tyrants", "3s", Rarity.MYTHIC, mage.cards.a.AjaniAdversaryOfTyrants.class)); + cards.add(new SetCardInfo("Alpine Moon", "128s", Rarity.RARE, mage.cards.a.AlpineMoon.class)); + cards.add(new SetCardInfo("Amulet of Safekeeping", "226s", Rarity.RARE, mage.cards.a.AmuletOfSafekeeping.class)); + cards.add(new SetCardInfo("Apex of Power", "129s", Rarity.MYTHIC, mage.cards.a.ApexOfPower.class)); + cards.add(new SetCardInfo("Arcades, the Strategist", "212s", Rarity.MYTHIC, mage.cards.a.ArcadesTheStrategist.class)); + cards.add(new SetCardInfo("Banefire", "130p", Rarity.RARE, mage.cards.b.Banefire.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Banefire", "130s", Rarity.RARE, mage.cards.b.Banefire.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Bone Dragon", "88s", Rarity.MYTHIC, mage.cards.b.BoneDragon.class)); + cards.add(new SetCardInfo("Chaos Wand", "228s", Rarity.RARE, mage.cards.c.ChaosWand.class)); + cards.add(new SetCardInfo("Chromium, the Mutable", "214s", Rarity.MYTHIC, mage.cards.c.ChromiumTheMutable.class)); + cards.add(new SetCardInfo("Cleansing Nova", "9p", Rarity.RARE, mage.cards.c.CleansingNova.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Cleansing Nova", "9s", Rarity.RARE, mage.cards.c.CleansingNova.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Crucible of Worlds", "229s", Rarity.MYTHIC, mage.cards.c.CrucibleOfWorlds.class)); + cards.add(new SetCardInfo("Dark-Dweller Oracle", "134s", Rarity.RARE, mage.cards.d.DarkDwellerOracle.class)); + cards.add(new SetCardInfo("Death Baron", 90, Rarity.RARE, mage.cards.d.DeathBaron.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Death Baron", "90p", Rarity.RARE, mage.cards.d.DeathBaron.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Death Baron", "90s", Rarity.RARE, mage.cards.d.DeathBaron.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Demanding Dragon", "135p", Rarity.RARE, mage.cards.d.DemandingDragon.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Demanding Dragon", "135s", Rarity.RARE, mage.cards.d.DemandingDragon.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Demon of Catastrophes", 91, Rarity.RARE, mage.cards.d.DemonOfCatastrophes.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Demon of Catastrophes", "91s", Rarity.RARE, mage.cards.d.DemonOfCatastrophes.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Desecrated Tomb", 230, Rarity.RARE, mage.cards.d.DesecratedTomb.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Desecrated Tomb", "230s", Rarity.RARE, mage.cards.d.DesecratedTomb.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Detection Tower", "249s", Rarity.RARE, mage.cards.d.DetectionTower.class)); + cards.add(new SetCardInfo("Dismissive Pyromancer", "136s", Rarity.RARE, mage.cards.d.DismissivePyromancer.class)); + cards.add(new SetCardInfo("Djinn of Wishes", "52s", Rarity.RARE, mage.cards.d.DjinnOfWishes.class)); + cards.add(new SetCardInfo("Dragon's Hoard", "232s", Rarity.RARE, mage.cards.d.DragonsHoard.class)); + cards.add(new SetCardInfo("Elvish Clancaller", "179p", Rarity.RARE, mage.cards.e.ElvishClancaller.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Elvish Clancaller", "179s", Rarity.RARE, mage.cards.e.ElvishClancaller.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Elvish Rejuvenator", 180, Rarity.COMMON, mage.cards.e.ElvishRejuvenator.class)); + cards.add(new SetCardInfo("Fraying Omnipotence", "97s", Rarity.RARE, mage.cards.f.FrayingOmnipotence.class)); + cards.add(new SetCardInfo("Gigantosaurus", "185p", Rarity.RARE, mage.cards.g.Gigantosaurus.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Gigantosaurus", "185s", Rarity.RARE, mage.cards.g.Gigantosaurus.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Goblin Trashmaster", "144p", Rarity.RARE, mage.cards.g.GoblinTrashmaster.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Goblin Trashmaster", "144s", Rarity.RARE, mage.cards.g.GoblinTrashmaster.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Goreclaw, Terror of Qal Sisma", "186p", Rarity.RARE, mage.cards.g.GoreclawTerrorOfQalSisma.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Goreclaw, Terror of Qal Sisma", "186s", Rarity.RARE, mage.cards.g.GoreclawTerrorOfQalSisma.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Graveyard Marshal", "99s", Rarity.RARE, mage.cards.g.GraveyardMarshal.class)); + cards.add(new SetCardInfo("Guttersnipe", 145, Rarity.UNCOMMON, mage.cards.g.Guttersnipe.class)); + cards.add(new SetCardInfo("Hungering Hydra", "189s", Rarity.RARE, mage.cards.h.HungeringHydra.class)); + cards.add(new SetCardInfo("Infernal Reckoning", "102s", Rarity.RARE, mage.cards.i.InfernalReckoning.class)); + cards.add(new SetCardInfo("Isareth the Awakener", "104s", Rarity.RARE, mage.cards.i.IsarethTheAwakener.class)); + cards.add(new SetCardInfo("Isolate", "17s", Rarity.RARE, mage.cards.i.Isolate.class)); + cards.add(new SetCardInfo("Lathliss, Dragon Queen", "149s", Rarity.RARE, mage.cards.l.LathlissDragonQueen.class)); + cards.add(new SetCardInfo("Lena, Selfless Champion", "21s", Rarity.RARE, mage.cards.l.LenaSelflessChampion.class)); + cards.add(new SetCardInfo("Leonin Warleader", "23p", Rarity.RARE, mage.cards.l.LeoninWarleader.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Leonin Warleader", "23s", Rarity.RARE, mage.cards.l.LeoninWarleader.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Liliana's Contract", "107s", Rarity.RARE, mage.cards.l.LilianasContract.class)); + cards.add(new SetCardInfo("Liliana, Untouched by Death", "106s", Rarity.MYTHIC, mage.cards.l.LilianaUntouchedByDeath.class)); + cards.add(new SetCardInfo("Magistrate's Scepter", "238s", Rarity.RARE, mage.cards.m.MagistratesScepter.class)); + cards.add(new SetCardInfo("Mentor of the Meek", "27s", Rarity.RARE, mage.cards.m.MentorOfTheMeek.class)); + cards.add(new SetCardInfo("Metamorphic Alteration", "60s", Rarity.RARE, mage.cards.m.MetamorphicAlteration.class)); + cards.add(new SetCardInfo("Militia Bugler", 29, Rarity.UNCOMMON, mage.cards.m.MilitiaBugler.class)); + cards.add(new SetCardInfo("Mistcaller", "62s", Rarity.RARE, mage.cards.m.Mistcaller.class)); + cards.add(new SetCardInfo("Murder", 110, Rarity.UNCOMMON, mage.cards.m.Murder.class)); + cards.add(new SetCardInfo("Mystic Archaeologist", "63s", Rarity.RARE, mage.cards.m.MysticArchaeologist.class)); + cards.add(new SetCardInfo("Nicol Bolas, the Arisen", "218s", Rarity.MYTHIC, mage.cards.n.NicolBolasTheArisen.class)); + cards.add(new SetCardInfo("Nicol Bolas, the Ravager", "218s", Rarity.MYTHIC, mage.cards.n.NicolBolasTheRavager.class)); + cards.add(new SetCardInfo("Omniscience", "65s", Rarity.MYTHIC, mage.cards.o.Omniscience.class)); + cards.add(new SetCardInfo("One with the Machine", "66s", Rarity.RARE, mage.cards.o.OneWithTheMachine.class)); + cards.add(new SetCardInfo("Open the Graves", "112s", Rarity.RARE, mage.cards.o.OpenTheGraves.class)); + cards.add(new SetCardInfo("Palladia-Mors, the Ruiner", "219s", Rarity.MYTHIC, mage.cards.p.PalladiaMorsTheRuiner.class)); + cards.add(new SetCardInfo("Patient Rebuilding", "67s", Rarity.RARE, mage.cards.p.PatientRebuilding.class)); + cards.add(new SetCardInfo("Pelakka Wurm", "192s", Rarity.RARE, mage.cards.p.PelakkaWurm.class)); + cards.add(new SetCardInfo("Phylactery Lich", "113s", Rarity.RARE, mage.cards.p.PhylacteryLich.class)); + cards.add(new SetCardInfo("Prodigious Growth", "194s", Rarity.RARE, mage.cards.p.ProdigiousGrowth.class)); + cards.add(new SetCardInfo("Reliquary Tower", 254, Rarity.UNCOMMON, mage.cards.r.ReliquaryTower.class)); + cards.add(new SetCardInfo("Remorseful Cleric", "33p", Rarity.RARE, mage.cards.r.RemorsefulCleric.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Remorseful Cleric", "33s", Rarity.RARE, mage.cards.r.RemorsefulCleric.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Resplendent Angel", "34p", Rarity.MYTHIC, mage.cards.r.ResplendentAngel.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Resplendent Angel", "34s", Rarity.MYTHIC, mage.cards.r.ResplendentAngel.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Runic Armasaur", "200s", Rarity.RARE, mage.cards.r.RunicArmasaur.class)); + cards.add(new SetCardInfo("Sai, Master Thopterist", "69p", Rarity.RARE, mage.cards.s.SaiMasterThopterist.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Sai, Master Thopterist", "69s", Rarity.RARE, mage.cards.s.SaiMasterThopterist.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Sarkhan's Unsealing", "155s", Rarity.RARE, mage.cards.s.SarkhansUnsealing.class)); + cards.add(new SetCardInfo("Sarkhan, Fireblood", "154s", Rarity.MYTHIC, mage.cards.s.SarkhanFireblood.class)); + cards.add(new SetCardInfo("Scapeshift", "201s", Rarity.MYTHIC, mage.cards.s.Scapeshift.class)); + cards.add(new SetCardInfo("Sigiled Sword of Valeron", "244s", Rarity.RARE, mage.cards.s.SigiledSwordOfValeron.class)); + cards.add(new SetCardInfo("Spit Flame", "160s", Rarity.RARE, mage.cards.s.SpitFlame.class)); + cards.add(new SetCardInfo("Suncleanser", "39s", Rarity.RARE, mage.cards.s.Suncleanser.class)); + cards.add(new SetCardInfo("Supreme Phantom", "76p", Rarity.RARE, mage.cards.s.SupremePhantom.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Supreme Phantom", "76s", Rarity.RARE, mage.cards.s.SupremePhantom.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Tezzeret, Artifice Master", "79s", Rarity.MYTHIC, mage.cards.t.TezzeretArtificeMaster.class)); + cards.add(new SetCardInfo("Thorn Lieutenant", "203p", Rarity.RARE, mage.cards.t.ThornLieutenant.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Thorn Lieutenant", "203s", Rarity.RARE, mage.cards.t.ThornLieutenant.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Transmogrifying Wand", "247s", Rarity.RARE, mage.cards.t.TransmogrifyingWand.class)); + cards.add(new SetCardInfo("Vaevictis Asmadi, the Dire", "225s", Rarity.MYTHIC, mage.cards.v.VaevictisAsmadiTheDire.class)); + cards.add(new SetCardInfo("Valiant Knight", "42s", Rarity.RARE, mage.cards.v.ValiantKnight.class)); + cards.add(new SetCardInfo("Vivien Reid", "208p", Rarity.MYTHIC, mage.cards.v.VivienReid.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Vivien Reid", "208s", Rarity.MYTHIC, mage.cards.v.VivienReid.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Vivien's Invocation", "209s", Rarity.RARE, mage.cards.v.ViviensInvocation.class)); + cards.add(new SetCardInfo("Windreader Sphinx", "84s", Rarity.RARE, mage.cards.w.WindreaderSphinx.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/DCILegendMembership.java b/Mage.Sets/src/mage/sets/DCILegendMembership.java new file mode 100644 index 00000000000..429d24018ff --- /dev/null +++ b/Mage.Sets/src/mage/sets/DCILegendMembership.java @@ -0,0 +1,26 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/plgm + */ +public class DCILegendMembership extends ExpansionSet { + + private static final DCILegendMembership instance = new DCILegendMembership(); + + public static DCILegendMembership getInstance() { + return instance; + } + + private DCILegendMembership() { + super("DCI Legend Membership", "PLGM", ExpansionSet.buildDate(1995, 1, 1), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Counterspell", 1, Rarity.RARE, mage.cards.c.Counterspell.class)); + cards.add(new SetCardInfo("Incinerate", 2, Rarity.RARE, mage.cards.i.Incinerate.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/DarkAscensionPromos.java b/Mage.Sets/src/mage/sets/DarkAscensionPromos.java new file mode 100644 index 00000000000..c54e4ad2e5f --- /dev/null +++ b/Mage.Sets/src/mage/sets/DarkAscensionPromos.java @@ -0,0 +1,31 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/pdka + */ +public class DarkAscensionPromos extends ExpansionSet { + + private static final DarkAscensionPromos instance = new DarkAscensionPromos(); + + public static DarkAscensionPromos getInstance() { + return instance; + } + + private DarkAscensionPromos() { + super("Dark Ascension Promos", "PDKA", ExpansionSet.buildDate(2012, 1, 28), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Archdemon of Greed", 71, Rarity.RARE, mage.cards.a.ArchdemonOfGreed.class)); + cards.add(new SetCardInfo("Gravecrawler", "*64", Rarity.RARE, mage.cards.g.Gravecrawler.class)); + cards.add(new SetCardInfo("Mondronen Shaman", 98, Rarity.RARE, mage.cards.m.MondronenShaman.class)); + cards.add(new SetCardInfo("Ravenous Demon", 71, Rarity.RARE, mage.cards.r.RavenousDemon.class)); + cards.add(new SetCardInfo("Strangleroot Geist", 127, Rarity.UNCOMMON, mage.cards.s.StranglerootGeist.class)); + cards.add(new SetCardInfo("Tovolar's Magehunter", 98, Rarity.RARE, mage.cards.t.TovolarsMagehunter.class)); + cards.add(new SetCardInfo("Zombie Apocalypse", 80, Rarity.RARE, mage.cards.z.ZombieApocalypse.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/Deckmasters.java b/Mage.Sets/src/mage/sets/Deckmasters.java new file mode 100644 index 00000000000..aa1193a9545 --- /dev/null +++ b/Mage.Sets/src/mage/sets/Deckmasters.java @@ -0,0 +1,83 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/dkm + */ +public class Deckmasters extends ExpansionSet { + + private static final Deckmasters instance = new Deckmasters(); + + public static Deckmasters getInstance() { + return instance; + } + + private Deckmasters() { + super("Deckmasters", "DKM", ExpansionSet.buildDate(2001, 12, 1), SetType.SUPPLEMENTAL); + this.hasBoosters = false; + this.hasBasicLands = true; + + cards.add(new SetCardInfo("Abyssal Specter", 1, Rarity.UNCOMMON, mage.cards.a.AbyssalSpecter.class)); + cards.add(new SetCardInfo("Balduvian Bears", 22, Rarity.COMMON, mage.cards.b.BalduvianBears.class)); + cards.add(new SetCardInfo("Balduvian Horde", 10, Rarity.RARE, mage.cards.b.BalduvianHorde.class)); + cards.add(new SetCardInfo("Barbed Sextant", 34, Rarity.COMMON, mage.cards.b.BarbedSextant.class)); + cards.add(new SetCardInfo("Bounty of the Hunt", 23, Rarity.UNCOMMON, mage.cards.b.BountyOfTheHunt.class)); + cards.add(new SetCardInfo("Contagion", 2, Rarity.UNCOMMON, mage.cards.c.Contagion.class)); + cards.add(new SetCardInfo("Dark Banishing", 3, Rarity.COMMON, mage.cards.d.DarkBanishing.class)); + cards.add(new SetCardInfo("Dark Ritual", 4, Rarity.COMMON, mage.cards.d.DarkRitual.class)); + cards.add(new SetCardInfo("Death Spark", 11, Rarity.UNCOMMON, mage.cards.d.DeathSpark.class)); + cards.add(new SetCardInfo("Elkin Bottle", 35, Rarity.RARE, mage.cards.e.ElkinBottle.class)); + cards.add(new SetCardInfo("Elvish Bard", 24, Rarity.UNCOMMON, mage.cards.e.ElvishBard.class)); + cards.add(new SetCardInfo("Folk of the Pines", 25, Rarity.COMMON, mage.cards.f.FolkOfThePines.class)); + cards.add(new SetCardInfo("Forest", 48, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", 49, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", 50, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Foul Familiar", 5, Rarity.COMMON, mage.cards.f.FoulFamiliar.class)); + cards.add(new SetCardInfo("Fyndhorn Elves", 26, Rarity.COMMON, mage.cards.f.FyndhornElves.class)); + cards.add(new SetCardInfo("Giant Growth", 27, Rarity.COMMON, mage.cards.g.GiantGrowth.class)); + cards.add(new SetCardInfo("Giant Trap Door Spider", 33, Rarity.RARE, mage.cards.g.GiantTrapDoorSpider.class)); + cards.add(new SetCardInfo("Goblin Mutant", 12, Rarity.UNCOMMON, mage.cards.g.GoblinMutant.class)); + cards.add(new SetCardInfo("Guerrilla Tactics", "13a", Rarity.COMMON, mage.cards.g.GuerrillaTactics.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Guerrilla Tactics", "13b", Rarity.COMMON, mage.cards.g.GuerrillaTactics.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Hurricane", 28, Rarity.UNCOMMON, mage.cards.h.Hurricane.class)); + cards.add(new SetCardInfo("Icy Manipulator", 36, Rarity.UNCOMMON, mage.cards.i.IcyManipulator.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Icy Manipulator", "36s", Rarity.UNCOMMON, mage.cards.i.IcyManipulator.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Incinerate", 14, Rarity.COMMON, mage.cards.i.Incinerate.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Incinerate", "14s", Rarity.COMMON, mage.cards.i.Incinerate.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Jokulhaups", 15, Rarity.RARE, mage.cards.j.Jokulhaups.class)); + cards.add(new SetCardInfo("Karplusan Forest", 39, Rarity.RARE, mage.cards.k.KarplusanForest.class)); + // Card not implemented + // cards.add(new SetCardInfo("Lava Burst", 16, Rarity.COMMON, mage.cards.l.LavaBurst.class)); + cards.add(new SetCardInfo("Lhurgoyf", 29, Rarity.RARE, mage.cards.l.Lhurgoyf.class)); + cards.add(new SetCardInfo("Lim-Dul's High Guard", "6a", Rarity.COMMON, mage.cards.l.LimDulsHighGuard.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Lim-Dul's High Guard", "6b", Rarity.COMMON, mage.cards.l.LimDulsHighGuard.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", 45, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", 46, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", 47, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Necropotence", 7, Rarity.RARE, mage.cards.n.Necropotence.class)); + cards.add(new SetCardInfo("Orcish Cannoneers", 17, Rarity.UNCOMMON, mage.cards.o.OrcishCannoneers.class)); + cards.add(new SetCardInfo("Phantasmal Fiend", "8a", Rarity.COMMON, mage.cards.p.PhantasmalFiend.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Phantasmal Fiend", "8b", Rarity.COMMON, mage.cards.p.PhantasmalFiend.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Phyrexian War Beast", "37a", Rarity.COMMON, mage.cards.p.PhyrexianWarBeast.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Phyrexian War Beast", "37b", Rarity.COMMON, mage.cards.p.PhyrexianWarBeast.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Pillage", 18, Rarity.UNCOMMON, mage.cards.p.Pillage.class)); + cards.add(new SetCardInfo("Pyroclasm", 19, Rarity.UNCOMMON, mage.cards.p.Pyroclasm.class)); + cards.add(new SetCardInfo("Shatter", 20, Rarity.COMMON, mage.cards.s.Shatter.class)); + cards.add(new SetCardInfo("Soul Burn", 9, Rarity.COMMON, mage.cards.s.SoulBurn.class)); + cards.add(new SetCardInfo("Storm Shaman", "21a", Rarity.COMMON, mage.cards.s.StormShaman.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Storm Shaman", "21b", Rarity.COMMON, mage.cards.s.StormShaman.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Sulfurous Springs", 40, Rarity.RARE, mage.cards.s.SulfurousSprings.class)); + cards.add(new SetCardInfo("Swamp", 42, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", 43, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", 44, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Underground River", 41, Rarity.RARE, mage.cards.u.UndergroundRiver.class)); + cards.add(new SetCardInfo("Walking Wall", 38, Rarity.UNCOMMON, mage.cards.w.WalkingWall.class)); + cards.add(new SetCardInfo("Woolly Spider", 30, Rarity.COMMON, mage.cards.w.WoollySpider.class)); + cards.add(new SetCardInfo("Yavimaya Ancients", "31a", Rarity.COMMON, mage.cards.y.YavimayaAncients.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Yavimaya Ancients", "31b", Rarity.COMMON, mage.cards.y.YavimayaAncients.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Yavimaya Ants", 32, Rarity.UNCOMMON, mage.cards.y.YavimayaAnts.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/DominariaPromos.java b/Mage.Sets/src/mage/sets/DominariaPromos.java new file mode 100644 index 00000000000..57afb2fb3c5 --- /dev/null +++ b/Mage.Sets/src/mage/sets/DominariaPromos.java @@ -0,0 +1,143 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/pdom + */ +public class DominariaPromos extends ExpansionSet { + + private static final DominariaPromos instance = new DominariaPromos(); + + public static DominariaPromos getInstance() { + return instance; + } + + private DominariaPromos() { + super("Dominaria Promos", "PDOM", ExpansionSet.buildDate(2018, 4, 27), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Adeliz, the Cinder Wind", "190s", Rarity.UNCOMMON, mage.cards.a.AdelizTheCinderWind.class)); + cards.add(new SetCardInfo("Arvad the Cursed", "191s", Rarity.UNCOMMON, mage.cards.a.ArvadTheCursed.class)); + cards.add(new SetCardInfo("Aryel, Knight of Windgrace", "192s", Rarity.RARE, mage.cards.a.AryelKnightOfWindgrace.class)); + cards.add(new SetCardInfo("Baird, Steward of Argive", "4s", Rarity.UNCOMMON, mage.cards.b.BairdStewardOfArgive.class)); + cards.add(new SetCardInfo("Benalish Marshal", "6p", Rarity.RARE, mage.cards.b.BenalishMarshal.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Benalish Marshal", "6s", Rarity.RARE, mage.cards.b.BenalishMarshal.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Blackblade Reforged", "211p", Rarity.RARE, mage.cards.b.BlackbladeReforged.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Blackblade Reforged", "211s", Rarity.RARE, mage.cards.b.BlackbladeReforged.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Cabal Stronghold", "238p", Rarity.RARE, mage.cards.c.CabalStronghold.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Cabal Stronghold", "238s", Rarity.RARE, mage.cards.c.CabalStronghold.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Cast Down", 81, Rarity.UNCOMMON, mage.cards.c.CastDown.class)); + cards.add(new SetCardInfo("Clifftop Retreat", "239p", Rarity.RARE, mage.cards.c.ClifftopRetreat.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Clifftop Retreat", "239s", Rarity.RARE, mage.cards.c.ClifftopRetreat.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Danitha Capashen, Paragon", "12s", Rarity.UNCOMMON, mage.cards.d.DanithaCapashenParagon.class)); + cards.add(new SetCardInfo("Darigaaz Reincarnated", "193s", Rarity.MYTHIC, mage.cards.d.DarigaazReincarnated.class)); + cards.add(new SetCardInfo("Daring Archaeologist", "13s", Rarity.RARE, mage.cards.d.DaringArchaeologist.class)); + cards.add(new SetCardInfo("Demonlord Belzenlok", "86s", Rarity.MYTHIC, mage.cards.d.DemonlordBelzenlok.class)); + cards.add(new SetCardInfo("Dread Shade", "88s", Rarity.RARE, mage.cards.d.DreadShade.class)); + cards.add(new SetCardInfo("Evra, Halcyon Witness", "16s", Rarity.RARE, mage.cards.e.EvraHalcyonWitness.class)); + cards.add(new SetCardInfo("Fall of the Thran", "18s", Rarity.RARE, mage.cards.f.FallOfTheThran.class)); + cards.add(new SetCardInfo("Forebear's Blade", "214p", Rarity.RARE, mage.cards.f.ForebearsBlade.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forebear's Blade", "214s", Rarity.RARE, mage.cards.f.ForebearsBlade.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Garna, the Bloodflame", "194s", Rarity.UNCOMMON, mage.cards.g.GarnaTheBloodflame.class)); + cards.add(new SetCardInfo("Gilded Lotus", "215p", Rarity.RARE, mage.cards.g.GildedLotus.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Gilded Lotus", "215s", Rarity.RARE, mage.cards.g.GildedLotus.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Goblin Chainwhirler", "129p", Rarity.RARE, mage.cards.g.GoblinChainwhirler.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Goblin Chainwhirler", "129s", Rarity.RARE, mage.cards.g.GoblinChainwhirler.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Grand Warlord Radha", "195s", Rarity.RARE, mage.cards.g.GrandWarlordRadha.class)); + cards.add(new SetCardInfo("Grunn, the Lonely King", "165s", Rarity.UNCOMMON, mage.cards.g.GrunnTheLonelyKing.class)); + cards.add(new SetCardInfo("Hallar, the Firefletcher", "196s", Rarity.UNCOMMON, mage.cards.h.HallarTheFirefletcher.class)); + cards.add(new SetCardInfo("Haphazard Bombardment", "131s", Rarity.RARE, mage.cards.h.HaphazardBombardment.class)); + cards.add(new SetCardInfo("Helm of the Host", "217p", Rarity.RARE, mage.cards.h.HelmOfTheHost.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Helm of the Host", "217s", Rarity.RARE, mage.cards.h.HelmOfTheHost.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Hinterland Harbor", "240p", Rarity.RARE, mage.cards.h.HinterlandHarbor.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Hinterland Harbor", "240s", Rarity.RARE, mage.cards.h.HinterlandHarbor.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("History of Benalia", "21p", Rarity.MYTHIC, mage.cards.h.HistoryOfBenalia.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("History of Benalia", "21s", Rarity.MYTHIC, mage.cards.h.HistoryOfBenalia.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Isolated Chapel", "241p", Rarity.RARE, mage.cards.i.IsolatedChapel.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Isolated Chapel", "241s", Rarity.RARE, mage.cards.i.IsolatedChapel.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Jaya Ballard", "132s", Rarity.MYTHIC, mage.cards.j.JayaBallard.class)); + cards.add(new SetCardInfo("Jaya's Immolating Inferno", "133s", Rarity.RARE, mage.cards.j.JayasImmolatingInferno.class)); + cards.add(new SetCardInfo("Jhoira, Weatherlight Captain", "197s", Rarity.MYTHIC, mage.cards.j.JhoiraWeatherlightCaptain.class)); + cards.add(new SetCardInfo("Jodah, Archmage Eternal", "198s", Rarity.RARE, mage.cards.j.JodahArchmageEternal.class)); + cards.add(new SetCardInfo("Josu Vess, Lich Knight", "95s", Rarity.RARE, mage.cards.j.JosuVessLichKnight.class)); + cards.add(new SetCardInfo("Kamahl's Druidic Vow", "166s", Rarity.RARE, mage.cards.k.KamahlsDruidicVow.class)); + cards.add(new SetCardInfo("Karn's Temporal Sundering", "55s", Rarity.RARE, mage.cards.k.KarnsTemporalSundering.class)); + cards.add(new SetCardInfo("Karn, Scion of Urza", "1p", Rarity.MYTHIC, mage.cards.k.KarnScionOfUrza.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Karn, Scion of Urza", "1s", Rarity.MYTHIC, mage.cards.k.KarnScionOfUrza.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Kazarov, Sengir Pureblood", "96s", Rarity.RARE, mage.cards.k.KazarovSengirPureblood.class)); + cards.add(new SetCardInfo("Kwende, Pride of Femeref", "25s", Rarity.UNCOMMON, mage.cards.k.KwendePrideOfFemeref.class)); + cards.add(new SetCardInfo("Lich's Mastery", "98s", Rarity.RARE, mage.cards.l.LichsMastery.class)); + cards.add(new SetCardInfo("Llanowar Elves", 168, Rarity.COMMON, mage.cards.l.LlanowarElves.class)); + cards.add(new SetCardInfo("Lyra Dawnbringer", "26p", Rarity.MYTHIC, mage.cards.l.LyraDawnbringer.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Lyra Dawnbringer", "26s", Rarity.MYTHIC, mage.cards.l.LyraDawnbringer.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Marwyn, the Nurturer", "172p", Rarity.RARE, mage.cards.m.MarwynTheNurturer.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Marwyn, the Nurturer", "172s", Rarity.RARE, mage.cards.m.MarwynTheNurturer.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mishra's Self-Replicator", "223s", Rarity.RARE, mage.cards.m.MishrasSelfReplicator.class)); + cards.add(new SetCardInfo("Mox Amber", "224s", Rarity.MYTHIC, mage.cards.m.MoxAmber.class)); + cards.add(new SetCardInfo("Muldrotha, the Gravetide", "199s", Rarity.MYTHIC, mage.cards.m.MuldrothaTheGravetide.class)); + cards.add(new SetCardInfo("Multani, Yavimaya's Avatar", "174s", Rarity.MYTHIC, mage.cards.m.MultaniYavimayasAvatar.class)); + cards.add(new SetCardInfo("Naban, Dean of Iteration", "58s", Rarity.RARE, mage.cards.n.NabanDeanOfIteration.class)); + cards.add(new SetCardInfo("Naru Meha, Master Wizard", "59s", Rarity.MYTHIC, mage.cards.n.NaruMehaMasterWizard.class)); + cards.add(new SetCardInfo("Oath of Teferi", "200s", Rarity.RARE, mage.cards.o.OathOfTeferi.class)); + cards.add(new SetCardInfo("Opt", 60, Rarity.COMMON, mage.cards.o.Opt.class)); + cards.add(new SetCardInfo("Phyrexian Scriptures", "100s", Rarity.MYTHIC, mage.cards.p.PhyrexianScriptures.class)); + cards.add(new SetCardInfo("Precognition Field", "61s", Rarity.RARE, mage.cards.p.PrecognitionField.class)); + cards.add(new SetCardInfo("Primevals' Glorious Rebirth", "201s", Rarity.RARE, mage.cards.p.PrimevalsGloriousRebirth.class)); + cards.add(new SetCardInfo("Raff Capashen, Ship's Mage", "202s", Rarity.UNCOMMON, mage.cards.r.RaffCapashenShipsMage.class)); + cards.add(new SetCardInfo("Rite of Belzenlok", "102s", Rarity.RARE, mage.cards.r.RiteOfBelzenlok.class)); + cards.add(new SetCardInfo("Rona, Disciple of Gix", "203s", Rarity.UNCOMMON, mage.cards.r.RonaDiscipleOfGix.class)); + // Japanese-only printing + //cards.add(new SetCardInfo("Serra Angel", "33c", Rarity.UNCOMMON, mage.cards.s.SerraAngel.class)); + cards.add(new SetCardInfo("Shalai, Voice of Plenty", "35p", Rarity.RARE, mage.cards.s.ShalaiVoiceOfPlenty.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Shalai, Voice of Plenty", "35s", Rarity.RARE, mage.cards.s.ShalaiVoiceOfPlenty.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Shanna, Sisay's Legacy", 204, Rarity.UNCOMMON, mage.cards.s.ShannaSisaysLegacy.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Shanna, Sisay's Legacy", "204s", Rarity.UNCOMMON, mage.cards.s.ShannaSisaysLegacy.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Siege-Gang Commander", "143p", Rarity.RARE, mage.cards.s.SiegeGangCommander.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Siege-Gang Commander", "143s", Rarity.RARE, mage.cards.s.SiegeGangCommander.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Slimefoot, the Stowaway", "205s", Rarity.UNCOMMON, mage.cards.s.SlimefootTheStowaway.class)); + cards.add(new SetCardInfo("Slinn Voda, the Rising Deep", "66s", Rarity.UNCOMMON, mage.cards.s.SlinnVodaTheRisingDeep.class)); + cards.add(new SetCardInfo("Squee, the Immortal", "146p", Rarity.RARE, mage.cards.s.SqueeTheImmortal.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Squee, the Immortal", "146s", Rarity.RARE, mage.cards.s.SqueeTheImmortal.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Steel Leaf Champion", 182, Rarity.RARE, mage.cards.s.SteelLeafChampion.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Steel Leaf Champion", "182p", Rarity.RARE, mage.cards.s.SteelLeafChampion.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Steel Leaf Champion", "182s", Rarity.RARE, mage.cards.s.SteelLeafChampion.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Sulfur Falls", "247p", Rarity.RARE, mage.cards.s.SulfurFalls.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Sulfur Falls", "247s", Rarity.RARE, mage.cards.s.SulfurFalls.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Sylvan Awakening", "183s", Rarity.RARE, mage.cards.s.SylvanAwakening.class)); + cards.add(new SetCardInfo("Tatyova, Benthic Druid", "206s", Rarity.UNCOMMON, mage.cards.t.TatyovaBenthicDruid.class)); + cards.add(new SetCardInfo("Teferi, Hero of Dominaria", "207s", Rarity.MYTHIC, mage.cards.t.TeferiHeroOfDominaria.class)); + cards.add(new SetCardInfo("Tempest Djinn", "68p", Rarity.RARE, mage.cards.t.TempestDjinn.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Tempest Djinn", "68s", Rarity.RARE, mage.cards.t.TempestDjinn.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Territorial Allosaurus", "184s", Rarity.RARE, mage.cards.t.TerritorialAllosaurus.class)); + cards.add(new SetCardInfo("Teshar, Ancestor's Apostle", "36s", Rarity.RARE, mage.cards.t.TesharAncestorsApostle.class)); + cards.add(new SetCardInfo("Tetsuko Umezawa, Fugitive", "69s", Rarity.UNCOMMON, mage.cards.t.TetsukoUmezawaFugitive.class)); + cards.add(new SetCardInfo("The Antiquities War", "42p", Rarity.RARE, mage.cards.t.TheAntiquitiesWar.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("The Antiquities War", "42s", Rarity.RARE, mage.cards.t.TheAntiquitiesWar.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("The First Eruption", "122s", Rarity.RARE, mage.cards.t.TheFirstEruption.class)); + cards.add(new SetCardInfo("The Mending of Dominaria", "173s", Rarity.RARE, mage.cards.t.TheMendingOfDominaria.class)); + cards.add(new SetCardInfo("The Mirari Conjecture", "57s", Rarity.RARE, mage.cards.t.TheMirariConjecture.class)); + cards.add(new SetCardInfo("Thran Temporal Gateway", "233s", Rarity.RARE, mage.cards.t.ThranTemporalGateway.class)); + cards.add(new SetCardInfo("Tiana, Ship's Caretaker", "208s", Rarity.UNCOMMON, mage.cards.t.TianaShipsCaretaker.class)); + cards.add(new SetCardInfo("Torgaar, Famine Incarnate", "108s", Rarity.RARE, mage.cards.t.TorgaarFamineIncarnate.class)); + cards.add(new SetCardInfo("Traxos, Scourge of Kroog", "234s", Rarity.RARE, mage.cards.t.TraxosScourgeOfKroog.class)); + cards.add(new SetCardInfo("Two-Headed Giant", "147s", Rarity.RARE, mage.cards.t.TwoHeadedGiant.class)); + cards.add(new SetCardInfo("Urgoros, the Empty One", "109s", Rarity.UNCOMMON, mage.cards.u.UrgorosTheEmptyOne.class)); + cards.add(new SetCardInfo("Urza's Ruinous Blast", "39s", Rarity.RARE, mage.cards.u.UrzasRuinousBlast.class)); + cards.add(new SetCardInfo("Valduk, Keeper of the Flame", "148s", Rarity.UNCOMMON, mage.cards.v.ValdukKeeperOfTheFlame.class)); + cards.add(new SetCardInfo("Verdant Force", "187s", Rarity.RARE, mage.cards.v.VerdantForce.class)); + cards.add(new SetCardInfo("Verix Bladewing", "149s", Rarity.MYTHIC, mage.cards.v.VerixBladewing.class)); + cards.add(new SetCardInfo("Weatherlight", "237s", Rarity.MYTHIC, mage.cards.w.Weatherlight.class)); + cards.add(new SetCardInfo("Whisper, Blood Liturgist", "111s", Rarity.UNCOMMON, mage.cards.w.WhisperBloodLiturgist.class)); + cards.add(new SetCardInfo("Woodland Cemetery", "248p", Rarity.RARE, mage.cards.w.WoodlandCemetery.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Woodland Cemetery", "248s", Rarity.RARE, mage.cards.w.WoodlandCemetery.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Yargle, Glutton of Urborg", "113s", Rarity.UNCOMMON, mage.cards.y.YargleGluttonOfUrborg.class)); + cards.add(new SetCardInfo("Yawgmoth's Vile Offering", "114s", Rarity.RARE, mage.cards.y.YawgmothsVileOffering.class)); + cards.add(new SetCardInfo("Zahid, Djinn of the Lamp", 76, Rarity.RARE, mage.cards.z.ZahidDjinnOfTheLamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Zahid, Djinn of the Lamp", "76s", Rarity.RARE, mage.cards.z.ZahidDjinnOfTheLamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Zhalfirin Void", 249, Rarity.UNCOMMON, mage.cards.z.ZhalfirinVoid.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/DragonCon.java b/Mage.Sets/src/mage/sets/DragonCon.java new file mode 100644 index 00000000000..6861774a697 --- /dev/null +++ b/Mage.Sets/src/mage/sets/DragonCon.java @@ -0,0 +1,26 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/pdrc + * https://gatherer.wizards.com/pages/card/Details.aspx?name=Nalathni+Dragon + */ +public class DragonCon extends ExpansionSet { + + private static final DragonCon instance = new DragonCon(); + + public static DragonCon getInstance() { + return instance; + } + + private DragonCon() { + super("Dragon Con", "PDRC", ExpansionSet.buildDate(1995, 7, 15), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Nalathni Dragon", 1, Rarity.RARE, mage.cards.n.NalathniDragon.class)); + } +} \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/DragonsMazePromos.java b/Mage.Sets/src/mage/sets/DragonsMazePromos.java new file mode 100644 index 00000000000..5d0aa1038db --- /dev/null +++ b/Mage.Sets/src/mage/sets/DragonsMazePromos.java @@ -0,0 +1,30 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/pdgm + */ +public class DragonsMazePromos extends ExpansionSet { + + private static final DragonsMazePromos instance = new DragonsMazePromos(); + + public static DragonsMazePromos getInstance() { + return instance; + } + + private DragonsMazePromos() { + super("Dragon's Maze Promos", "PDGM", ExpansionSet.buildDate(2013, 4, 27), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = true; + + cards.add(new SetCardInfo("Breaking // Entering", 124, Rarity.RARE, mage.cards.b.BreakingEntering.class)); + cards.add(new SetCardInfo("Maze's End", 152, Rarity.MYTHIC, mage.cards.m.MazesEnd.class)); + cards.add(new SetCardInfo("Melek, Izzet Paragon", 84, Rarity.RARE, mage.cards.m.MelekIzzetParagon.class)); + cards.add(new SetCardInfo("Plains", 157, Rarity.LAND, mage.cards.basiclands.Plains.class)); + cards.add(new SetCardInfo("Render Silent", "*96", Rarity.RARE, mage.cards.r.RenderSilent.class)); + cards.add(new SetCardInfo("Trostani's Summoner", 110, Rarity.UNCOMMON, mage.cards.t.TrostanisSummoner.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/DragonsOfTarkirPromos.java b/Mage.Sets/src/mage/sets/DragonsOfTarkirPromos.java new file mode 100644 index 00000000000..79e35c3cb8c --- /dev/null +++ b/Mage.Sets/src/mage/sets/DragonsOfTarkirPromos.java @@ -0,0 +1,73 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/pdtk + */ +public class DragonsOfTarkirPromos extends ExpansionSet { + + private static final DragonsOfTarkirPromos instance = new DragonsOfTarkirPromos(); + + public static DragonsOfTarkirPromos getInstance() { + return instance; + } + + private DragonsOfTarkirPromos() { + super("Dragons of Tarkir Promos", "PDTK", ExpansionSet.buildDate(2015, 3, 28), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Anafenza, Kin-Tree Spirit", "2s", Rarity.RARE, mage.cards.a.AnafenzaKinTreeSpirit.class)); + cards.add(new SetCardInfo("Arashin Foremost", "3s", Rarity.RARE, mage.cards.a.ArashinForemost.class)); + cards.add(new SetCardInfo("Arashin Sovereign", 212, Rarity.RARE, mage.cards.a.ArashinSovereign.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Arashin Sovereign", "212s", Rarity.RARE, mage.cards.a.ArashinSovereign.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Atarka's Command", "213s", Rarity.RARE, mage.cards.a.AtarkasCommand.class)); + cards.add(new SetCardInfo("Avatar of the Resolute", "175s", Rarity.RARE, mage.cards.a.AvatarOfTheResolute.class)); + cards.add(new SetCardInfo("Blessed Reincarnation", "47s", Rarity.RARE, mage.cards.b.BlessedReincarnation.class)); + cards.add(new SetCardInfo("Blood-Chin Fanatic", "88s", Rarity.RARE, mage.cards.b.BloodChinFanatic.class)); + cards.add(new SetCardInfo("Boltwing Marauder", 214, Rarity.RARE, mage.cards.b.BoltwingMarauder.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Boltwing Marauder", "214s", Rarity.RARE, mage.cards.b.BoltwingMarauder.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Crater Elemental", "132s", Rarity.RARE, mage.cards.c.CraterElemental.class)); + cards.add(new SetCardInfo("Damnable Pact", "93s", Rarity.RARE, mage.cards.d.DamnablePact.class)); + cards.add(new SetCardInfo("Deathbringer Regent", 96, Rarity.RARE, mage.cards.d.DeathbringerRegent.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Deathbringer Regent", "96s", Rarity.RARE, mage.cards.d.DeathbringerRegent.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Den Protector", "181s", Rarity.RARE, mage.cards.d.DenProtector.class)); + cards.add(new SetCardInfo("Dragonlord Atarka", "216s", Rarity.MYTHIC, mage.cards.d.DragonlordAtarka.class)); + cards.add(new SetCardInfo("Dragonlord Dromoka", "217s", Rarity.MYTHIC, mage.cards.d.DragonlordDromoka.class)); + cards.add(new SetCardInfo("Dragonlord Kolaghan", "218s", Rarity.MYTHIC, mage.cards.d.DragonlordKolaghan.class)); + cards.add(new SetCardInfo("Dragonlord Ojutai", "219s", Rarity.MYTHIC, mage.cards.d.DragonlordOjutai.class)); + cards.add(new SetCardInfo("Dragonlord Silumgar", "220s", Rarity.MYTHIC, mage.cards.d.DragonlordSilumgar.class)); + cards.add(new SetCardInfo("Dromoka's Command", "221s", Rarity.RARE, mage.cards.d.DromokasCommand.class)); + cards.add(new SetCardInfo("Foe-Razer Regent", "187s", Rarity.RARE, mage.cards.f.FoeRazerRegent.class)); + cards.add(new SetCardInfo("Harbinger of the Hunt", 223, Rarity.RARE, mage.cards.h.HarbingerOfTheHunt.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Harbinger of the Hunt", "223s", Rarity.RARE, mage.cards.h.HarbingerOfTheHunt.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Hidden Dragonslayer", "23s", Rarity.RARE, mage.cards.h.HiddenDragonslayer.class)); + cards.add(new SetCardInfo("Icefall Regent", "58s", Rarity.RARE, mage.cards.i.IcefallRegent.class)); + cards.add(new SetCardInfo("Ire Shaman", "141s", Rarity.RARE, mage.cards.i.IreShaman.class)); + cards.add(new SetCardInfo("Kolaghan's Command", "224s", Rarity.RARE, mage.cards.k.KolaghansCommand.class)); + cards.add(new SetCardInfo("Living Lore", "61s", Rarity.RARE, mage.cards.l.LivingLore.class)); + cards.add(new SetCardInfo("Myth Realized", "26s", Rarity.RARE, mage.cards.m.MythRealized.class)); + cards.add(new SetCardInfo("Necromaster Dragon", 226, Rarity.RARE, mage.cards.n.NecromasterDragon.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Necromaster Dragon", "226s", Rarity.RARE, mage.cards.n.NecromasterDragon.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Ojutai's Command", 227, Rarity.RARE, mage.cards.o.OjutaisCommand.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Ojutai's Command", "227s", Rarity.RARE, mage.cards.o.OjutaisCommand.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Pitiless Horde", "112s", Rarity.RARE, mage.cards.p.PitilessHorde.class)); + cards.add(new SetCardInfo("Pristine Skywise", 228, Rarity.RARE, mage.cards.p.PristineSkywise.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Pristine Skywise", "228s", Rarity.RARE, mage.cards.p.PristineSkywise.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Profaner of the Dead", "70s", Rarity.RARE, mage.cards.p.ProfanerOfTheDead.class)); + cards.add(new SetCardInfo("Scaleguard Sentinels", 201, Rarity.UNCOMMON, mage.cards.s.ScaleguardSentinels.class)); + cards.add(new SetCardInfo("Sidisi, Undead Vizier", "120s", Rarity.RARE, mage.cards.s.SidisiUndeadVizier.class)); + cards.add(new SetCardInfo("Silumgar Assassin", "121s", Rarity.RARE, mage.cards.s.SilumgarAssassin.class)); + cards.add(new SetCardInfo("Silumgar's Command", "232s", Rarity.RARE, mage.cards.s.SilumgarsCommand.class)); + cards.add(new SetCardInfo("Stratus Dancer", "80s", Rarity.RARE, mage.cards.s.StratusDancer.class)); + cards.add(new SetCardInfo("Sunscorch Regent", "41s", Rarity.RARE, mage.cards.s.SunscorchRegent.class)); + cards.add(new SetCardInfo("Surrak, the Hunt Caller", "210s", Rarity.RARE, mage.cards.s.SurrakTheHuntCaller.class)); + cards.add(new SetCardInfo("Thunderbreak Regent", 162, Rarity.RARE, mage.cards.t.ThunderbreakRegent.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Thunderbreak Regent", "162s", Rarity.RARE, mage.cards.t.ThunderbreakRegent.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Volcanic Vision", "167s", Rarity.RARE, mage.cards.v.VolcanicVision.class)); + cards.add(new SetCardInfo("Zurgo Bellstriker", "169s", Rarity.RARE, mage.cards.z.ZurgoBellstriker.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/DuelDecksAnthologyDivineVsDemonic.java b/Mage.Sets/src/mage/sets/DuelDecksAnthologyDivineVsDemonic.java index a25fdfb6e43..c3f6e8950c9 100644 --- a/Mage.Sets/src/mage/sets/DuelDecksAnthologyDivineVsDemonic.java +++ b/Mage.Sets/src/mage/sets/DuelDecksAnthologyDivineVsDemonic.java @@ -16,7 +16,7 @@ public final class DuelDecksAnthologyDivineVsDemonic extends ExpansionSet { } private DuelDecksAnthologyDivineVsDemonic() { - super("Duel Decks: Anthology, Divine vs. Demonic", "DD3DVD", ExpansionSet.buildDate(2014, 12, 5), SetType.SUPPLEMENTAL); + super("Duel Decks: Anthology, Divine vs. Demonic", "DVD", ExpansionSet.buildDate(2014, 12, 5), SetType.SUPPLEMENTAL); this.blockName = "Duel Decks: Anthology"; this.hasBasicLands = true; diff --git a/Mage.Sets/src/mage/sets/DuelDecksAnthologyElvesVsGoblins.java b/Mage.Sets/src/mage/sets/DuelDecksAnthologyElvesVsGoblins.java index 90d7b150030..80bc91dd080 100644 --- a/Mage.Sets/src/mage/sets/DuelDecksAnthologyElvesVsGoblins.java +++ b/Mage.Sets/src/mage/sets/DuelDecksAnthologyElvesVsGoblins.java @@ -17,7 +17,7 @@ public final class DuelDecksAnthologyElvesVsGoblins extends ExpansionSet { } private DuelDecksAnthologyElvesVsGoblins() { - super("Duel Decks: Anthology, Elves vs. Goblins", "DD3EVG", ExpansionSet.buildDate(2014, 12, 5), + super("Duel Decks: Anthology, Elves vs. Goblins", "EVG", ExpansionSet.buildDate(2014, 12, 5), SetType.SUPPLEMENTAL); this.blockName = "Duel Decks: Anthology"; this.hasBasicLands = true; diff --git a/Mage.Sets/src/mage/sets/DuelDecksAnthologyGarrukVsLiliana.java b/Mage.Sets/src/mage/sets/DuelDecksAnthologyGarrukVsLiliana.java index 82154d1beb0..0abb1006c18 100644 --- a/Mage.Sets/src/mage/sets/DuelDecksAnthologyGarrukVsLiliana.java +++ b/Mage.Sets/src/mage/sets/DuelDecksAnthologyGarrukVsLiliana.java @@ -17,7 +17,7 @@ public final class DuelDecksAnthologyGarrukVsLiliana extends ExpansionSet { } private DuelDecksAnthologyGarrukVsLiliana() { - super("Duel Decks: Anthology, Garruk vs. Liliana", "DD3GVL", ExpansionSet.buildDate(2014, 12, 5), + super("Duel Decks: Anthology, Garruk vs. Liliana", "GVL", ExpansionSet.buildDate(2014, 12, 5), SetType.SUPPLEMENTAL); this.blockName = "Duel Decks: Anthology"; this.hasBasicLands = true; diff --git a/Mage.Sets/src/mage/sets/DuelDecksAnthologyJaceVsChandra.java b/Mage.Sets/src/mage/sets/DuelDecksAnthologyJaceVsChandra.java index d75ab380eef..2939bed8bd1 100644 --- a/Mage.Sets/src/mage/sets/DuelDecksAnthologyJaceVsChandra.java +++ b/Mage.Sets/src/mage/sets/DuelDecksAnthologyJaceVsChandra.java @@ -17,7 +17,7 @@ public final class DuelDecksAnthologyJaceVsChandra extends ExpansionSet { } private DuelDecksAnthologyJaceVsChandra() { - super("Duel Decks: Anthology, Jace vs. Chandra", "DD3JVC", ExpansionSet.buildDate(2014, 12, 5), + super("Duel Decks: Anthology, Jace vs. Chandra", "JVC", ExpansionSet.buildDate(2014, 12, 5), SetType.SUPPLEMENTAL); this.blockName = "Duel Decks: Anthology"; this.hasBasicLands = true; diff --git a/Mage.Sets/src/mage/sets/DuelDecksElvesVsGoblins.java b/Mage.Sets/src/mage/sets/DuelDecksElvesVsGoblins.java index b86f6038692..7d3bbc1aaa3 100644 --- a/Mage.Sets/src/mage/sets/DuelDecksElvesVsGoblins.java +++ b/Mage.Sets/src/mage/sets/DuelDecksElvesVsGoblins.java @@ -16,7 +16,7 @@ public final class DuelDecksElvesVsGoblins extends ExpansionSet { } private DuelDecksElvesVsGoblins() { - super("Duel Decks: Elves vs. Goblins", "EVG", ExpansionSet.buildDate(2007, 11, 16), SetType.SUPPLEMENTAL); + super("Duel Decks: Elves vs. Goblins", "DD1", ExpansionSet.buildDate(2007, 11, 16), SetType.SUPPLEMENTAL); this.blockName = "Duel Decks"; this.hasBasicLands = true; diff --git a/Mage.Sets/src/mage/sets/DuelDecksMirrodinPureVsNewPhyrexia.java b/Mage.Sets/src/mage/sets/DuelDecksMirrodinPureVsNewPhyrexia.java new file mode 100644 index 00000000000..198f1d8ffba --- /dev/null +++ b/Mage.Sets/src/mage/sets/DuelDecksMirrodinPureVsNewPhyrexia.java @@ -0,0 +1,112 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/td2 + */ +public class DuelDecksMirrodinPureVsNewPhyrexia extends ExpansionSet { + + private static final DuelDecksMirrodinPureVsNewPhyrexia instance = new DuelDecksMirrodinPureVsNewPhyrexia(); + + public static DuelDecksMirrodinPureVsNewPhyrexia getInstance() { + return instance; + } + + private DuelDecksMirrodinPureVsNewPhyrexia() { + super("Duel Decks: Mirrodin Pure vs. New Phyrexia", "TD2", ExpansionSet.buildDate(2011, 5, 14), SetType.MAGIC_ONLINE); + this.hasBoosters = false; + this.hasBasicLands = true; + + cards.add(new SetCardInfo("Ancient Den", 36, Rarity.COMMON, mage.cards.a.AncientDen.class)); + cards.add(new SetCardInfo("Ardent Recruit", 4, Rarity.COMMON, mage.cards.a.ArdentRecruit.class)); + cards.add(new SetCardInfo("Argent Sphinx", 13, Rarity.RARE, mage.cards.a.ArgentSphinx.class)); + cards.add(new SetCardInfo("Arrest", 32, Rarity.COMMON, mage.cards.a.Arrest.class)); + cards.add(new SetCardInfo("Barter in Blood", 76, Rarity.UNCOMMON, mage.cards.b.BarterInBlood.class)); + cards.add(new SetCardInfo("Black Sun's Zenith", 81, Rarity.RARE, mage.cards.b.BlackSunsZenith.class)); + cards.add(new SetCardInfo("Blinkmoth Nexus", 37, Rarity.RARE, mage.cards.b.BlinkmothNexus.class)); + cards.add(new SetCardInfo("Bonesplitter", 20, Rarity.COMMON, mage.cards.b.Bonesplitter.class)); + cards.add(new SetCardInfo("Coastal Tower", 38, Rarity.UNCOMMON, mage.cards.c.CoastalTower.class)); + cards.add(new SetCardInfo("Condemn", 22, Rarity.UNCOMMON, mage.cards.c.Condemn.class)); + cards.add(new SetCardInfo("Contagion Clasp", 67, Rarity.UNCOMMON, mage.cards.c.ContagionClasp.class)); + cards.add(new SetCardInfo("Darksteel Gargoyle", 19, Rarity.UNCOMMON, mage.cards.d.DarksteelGargoyle.class)); + cards.add(new SetCardInfo("Darksteel Sentinel", 16, Rarity.UNCOMMON, mage.cards.d.DarksteelSentinel.class)); + cards.add(new SetCardInfo("Desecration Elemental", 57, Rarity.RARE, mage.cards.d.DesecrationElemental.class)); + cards.add(new SetCardInfo("Diabolic Servitude", 75, Rarity.UNCOMMON, mage.cards.d.DiabolicServitude.class)); + cards.add(new SetCardInfo("Dispatch", 23, Rarity.UNCOMMON, mage.cards.d.Dispatch.class)); + cards.add(new SetCardInfo("Drooling Groodion", 64, Rarity.UNCOMMON, mage.cards.d.DroolingGroodion.class)); + cards.add(new SetCardInfo("Duplicant", 17, Rarity.RARE, mage.cards.d.Duplicant.class)); + cards.add(new SetCardInfo("Exhume", 70, Rarity.COMMON, mage.cards.e.Exhume.class)); + cards.add(new SetCardInfo("Flesh-Eater Imp", 58, Rarity.UNCOMMON, mage.cards.f.FleshEaterImp.class)); + cards.add(new SetCardInfo("Forbidding Watchtower", 39, Rarity.UNCOMMON, mage.cards.f.ForbiddingWatchtower.class)); + cards.add(new SetCardInfo("Forest", 86, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", 87, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", 88, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Fume Spitter", 49, Rarity.COMMON, mage.cards.f.FumeSpitter.class)); + cards.add(new SetCardInfo("Glimmerpoint Stag", 12, Rarity.UNCOMMON, mage.cards.g.GlimmerpointStag.class)); + cards.add(new SetCardInfo("Gold Myr", 6, Rarity.COMMON, mage.cards.g.GoldMyr.class)); + cards.add(new SetCardInfo("Grafted Exoskeleton", 74, Rarity.UNCOMMON, mage.cards.g.GraftedExoskeleton.class)); + cards.add(new SetCardInfo("Grand Architect", 10, Rarity.RARE, mage.cards.g.GrandArchitect.class)); + cards.add(new SetCardInfo("Innocent Blood", 66, Rarity.COMMON, mage.cards.i.InnocentBlood.class)); + cards.add(new SetCardInfo("Island", 45, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", 46, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", 47, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Kuldotha Forgemaster", 14, Rarity.RARE, mage.cards.k.KuldothaForgemaster.class)); + cards.add(new SetCardInfo("Lumengrid Gargoyle", 18, Rarity.UNCOMMON, mage.cards.l.LumengridGargoyle.class)); + cards.add(new SetCardInfo("Memnite", 2, Rarity.UNCOMMON, mage.cards.m.Memnite.class)); + cards.add(new SetCardInfo("Mitotic Slime", 61, Rarity.RARE, mage.cards.m.MitoticSlime.class)); + cards.add(new SetCardInfo("Morbid Plunder", 72, Rarity.COMMON, mage.cards.m.MorbidPlunder.class)); + cards.add(new SetCardInfo("Mortarpod", 68, Rarity.UNCOMMON, mage.cards.m.Mortarpod.class)); + cards.add(new SetCardInfo("Myr Retriever", 7, Rarity.UNCOMMON, mage.cards.m.MyrRetriever.class)); + cards.add(new SetCardInfo("Myr Sire", 50, Rarity.COMMON, mage.cards.m.MyrSire.class)); + cards.add(new SetCardInfo("Necroskitter", 55, Rarity.RARE, mage.cards.n.Necroskitter.class)); + cards.add(new SetCardInfo("Neurok Stealthsuit", 25, Rarity.COMMON, mage.cards.n.NeurokStealthsuit.class)); + cards.add(new SetCardInfo("One Dozen Eyes", 80, Rarity.UNCOMMON, mage.cards.o.OneDozenEyes.class)); + cards.add(new SetCardInfo("Phyrexian Altar", 71, Rarity.RARE, mage.cards.p.PhyrexianAltar.class)); + cards.add(new SetCardInfo("Phyrexian Ghoul", 53, Rarity.COMMON, mage.cards.p.PhyrexianGhoul.class)); + cards.add(new SetCardInfo("Phyrexian Juggernaut", 63, Rarity.UNCOMMON, mage.cards.p.PhyrexianJuggernaut.class)); + cards.add(new SetCardInfo("Phyrexian Plaguelord", 48, Rarity.MYTHIC, mage.cards.p.PhyrexianPlaguelord.class)); + cards.add(new SetCardInfo("Plague Myr", 51, Rarity.UNCOMMON, mage.cards.p.PlagueMyr.class)); + cards.add(new SetCardInfo("Plaguemaw Beast", 62, Rarity.UNCOMMON, mage.cards.p.PlaguemawBeast.class)); + cards.add(new SetCardInfo("Plains", 42, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plains", 43, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plains", 44, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Platinum Angel", 1, Rarity.MYTHIC, mage.cards.p.PlatinumAngel.class)); + cards.add(new SetCardInfo("Protean Hulk", 65, Rarity.RARE, mage.cards.p.ProteanHulk.class)); + cards.add(new SetCardInfo("Purge", 28, Rarity.UNCOMMON, mage.cards.p.Purge.class)); + cards.add(new SetCardInfo("Putrefy", 73, Rarity.UNCOMMON, mage.cards.p.Putrefy.class)); + cards.add(new SetCardInfo("Reprocess", 77, Rarity.RARE, mage.cards.r.Reprocess.class)); + cards.add(new SetCardInfo("Rot Wolf", 54, Rarity.COMMON, mage.cards.r.RotWolf.class)); + cards.add(new SetCardInfo("Seat of the Synod", 40, Rarity.COMMON, mage.cards.s.SeatOfTheSynod.class)); + cards.add(new SetCardInfo("Silent Arbiter", 11, Rarity.RARE, mage.cards.s.SilentArbiter.class)); + cards.add(new SetCardInfo("Silver Myr", 8, Rarity.COMMON, mage.cards.s.SilverMyr.class)); + cards.add(new SetCardInfo("Slagwurm Armor", 21, Rarity.COMMON, mage.cards.s.SlagwurmArmor.class)); + cards.add(new SetCardInfo("Soul Snuffers", 60, Rarity.UNCOMMON, mage.cards.s.SoulSnuffers.class)); + cards.add(new SetCardInfo("Spawning Pit", 69, Rarity.UNCOMMON, mage.cards.s.SpawningPit.class)); + cards.add(new SetCardInfo("Spire Serpent", 15, Rarity.COMMON, mage.cards.s.SpireSerpent.class)); + cards.add(new SetCardInfo("Spread the Sickness", 79, Rarity.COMMON, mage.cards.s.SpreadTheSickness.class)); + cards.add(new SetCardInfo("Steel Wall", 3, Rarity.COMMON, mage.cards.s.SteelWall.class)); + cards.add(new SetCardInfo("Steelshaper's Gift", 24, Rarity.UNCOMMON, mage.cards.s.SteelshapersGift.class)); + cards.add(new SetCardInfo("Stoic Rebuttal", 34, Rarity.COMMON, mage.cards.s.StoicRebuttal.class)); + cards.add(new SetCardInfo("Swamp", 83, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", 84, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", 85, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Symbiotic Elf", 59, Rarity.COMMON, mage.cards.s.SymbioticElf.class)); + cards.add(new SetCardInfo("Tainted Wood", 82, Rarity.UNCOMMON, mage.cards.t.TaintedWood.class)); + cards.add(new SetCardInfo("Talisman of Progress", 26, Rarity.UNCOMMON, mage.cards.t.TalismanOfProgress.class)); + cards.add(new SetCardInfo("Terramorphic Expanse", 41, Rarity.COMMON, mage.cards.t.TerramorphicExpanse.class)); + cards.add(new SetCardInfo("Test of Faith", 29, Rarity.UNCOMMON, mage.cards.t.TestOfFaith.class)); + cards.add(new SetCardInfo("Thirst for Knowledge", 33, Rarity.UNCOMMON, mage.cards.t.ThirstForKnowledge.class)); + cards.add(new SetCardInfo("Thunderstaff", 31, Rarity.UNCOMMON, mage.cards.t.Thunderstaff.class)); + cards.add(new SetCardInfo("Trinket Mage", 9, Rarity.UNCOMMON, mage.cards.t.TrinketMage.class)); + cards.add(new SetCardInfo("Triumph of the Hordes", 78, Rarity.UNCOMMON, mage.cards.t.TriumphOfTheHordes.class)); + cards.add(new SetCardInfo("Turn the Tide", 30, Rarity.COMMON, mage.cards.t.TurnTheTide.class)); + cards.add(new SetCardInfo("Vedalken Certarch", 5, Rarity.COMMON, mage.cards.v.VedalkenCertarch.class)); + cards.add(new SetCardInfo("Viridian Claw", 27, Rarity.UNCOMMON, mage.cards.v.ViridianClaw.class)); + cards.add(new SetCardInfo("Viridian Corrupter", 56, Rarity.UNCOMMON, mage.cards.v.ViridianCorrupter.class)); + cards.add(new SetCardInfo("Viridian Emissary", 52, Rarity.COMMON, mage.cards.v.ViridianEmissary.class)); + cards.add(new SetCardInfo("White Sun's Zenith", 35, Rarity.RARE, mage.cards.w.WhiteSunsZenith.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/DuelsOfThePlaneswalkers2009Promos.java b/Mage.Sets/src/mage/sets/DuelsOfThePlaneswalkers2009Promos.java new file mode 100644 index 00000000000..59885dda6fc --- /dev/null +++ b/Mage.Sets/src/mage/sets/DuelsOfThePlaneswalkers2009Promos.java @@ -0,0 +1,27 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/pdtp + * + * @author JayDi85 + */ +public final class DuelsOfThePlaneswalkers2009Promos extends ExpansionSet { + + private static final DuelsOfThePlaneswalkers2009Promos instance = new DuelsOfThePlaneswalkers2009Promos(); + + public static DuelsOfThePlaneswalkers2009Promos getInstance() { + return instance; + } + + private DuelsOfThePlaneswalkers2009Promos() { + super("Duels of the Planeswalkers 2009 Promos", "PDTP", ExpansionSet.buildDate(2009, 1, 1), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Garruk Wildspeaker", 1, Rarity.MYTHIC, mage.cards.g.GarrukWildspeaker.class)); + } +} \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/DuelsOfThePlaneswalkers2010Promos.java b/Mage.Sets/src/mage/sets/DuelsOfThePlaneswalkers2010Promos.java new file mode 100644 index 00000000000..f6377caa69d --- /dev/null +++ b/Mage.Sets/src/mage/sets/DuelsOfThePlaneswalkers2010Promos.java @@ -0,0 +1,28 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/pdp10 + * + * @author JayDi85 + */ +public final class DuelsOfThePlaneswalkers2010Promos extends ExpansionSet { + + private static final DuelsOfThePlaneswalkers2010Promos instance = new DuelsOfThePlaneswalkers2010Promos(); + + public static DuelsOfThePlaneswalkers2010Promos getInstance() { + return instance; + } + + private DuelsOfThePlaneswalkers2010Promos() { + super("Duels of the Planeswalkers 2010 Promos", "PDP10", ExpansionSet.buildDate(2010, 1, 1), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Liliana Vess", 1, Rarity.MYTHIC, mage.cards.l.LilianaVess.class)); + cards.add(new SetCardInfo("Nissa Revane", 2, Rarity.MYTHIC, mage.cards.n.NissaRevane.class)); + } +} \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/DuelsOfThePlaneswalkers2011Promos.java b/Mage.Sets/src/mage/sets/DuelsOfThePlaneswalkers2011Promos.java new file mode 100644 index 00000000000..c940694edaf --- /dev/null +++ b/Mage.Sets/src/mage/sets/DuelsOfThePlaneswalkers2011Promos.java @@ -0,0 +1,29 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/pdp11 + * + * @author JayDi85 + */ +public final class DuelsOfThePlaneswalkers2011Promos extends ExpansionSet { + + private static final DuelsOfThePlaneswalkers2011Promos instance = new DuelsOfThePlaneswalkers2011Promos(); + + public static DuelsOfThePlaneswalkers2011Promos getInstance() { + return instance; + } + + private DuelsOfThePlaneswalkers2011Promos() { + super("Duels of the Planeswalkers 2011 Promos", "PDP11", ExpansionSet.buildDate(2011, 1, 1), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Frost Titan", 1, Rarity.MYTHIC, mage.cards.f.FrostTitan.class)); + cards.add(new SetCardInfo("Grave Titan", 2, Rarity.MYTHIC, mage.cards.g.GraveTitan.class)); + cards.add(new SetCardInfo("Inferno Titan", 3, Rarity.MYTHIC, mage.cards.i.InfernoTitan.class)); + } +} \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/DuelsOfThePlaneswalkers2012Promos.java b/Mage.Sets/src/mage/sets/DuelsOfThePlaneswalkers2012Promos.java new file mode 100644 index 00000000000..9d2e6a17486 --- /dev/null +++ b/Mage.Sets/src/mage/sets/DuelsOfThePlaneswalkers2012Promos.java @@ -0,0 +1,29 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/pdp12 + * + * @author JayDi85 + */ +public final class DuelsOfThePlaneswalkers2012Promos extends ExpansionSet { + + private static final DuelsOfThePlaneswalkers2012Promos instance = new DuelsOfThePlaneswalkers2012Promos(); + + public static DuelsOfThePlaneswalkers2012Promos getInstance() { + return instance; + } + + private DuelsOfThePlaneswalkers2012Promos() { + super("Duels of the Planeswalkers 2012 Promos", "PDP12", ExpansionSet.buildDate(2012, 1, 1), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Primordial Hydra", 1, Rarity.MYTHIC, mage.cards.p.PrimordialHydra.class)); + cards.add(new SetCardInfo("Serra Avatar", 2, Rarity.MYTHIC, mage.cards.s.SerraAvatar.class)); + cards.add(new SetCardInfo("Vampire Nocturnus", 3, Rarity.MYTHIC, mage.cards.v.VampireNocturnus.class)); + } +} \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/DuelsOfThePlaneswalkers2013Promos.java b/Mage.Sets/src/mage/sets/DuelsOfThePlaneswalkers2013Promos.java new file mode 100644 index 00000000000..e438e8603aa --- /dev/null +++ b/Mage.Sets/src/mage/sets/DuelsOfThePlaneswalkers2013Promos.java @@ -0,0 +1,29 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/pdp13 + * + * @author JayDi85 + */ +public final class DuelsOfThePlaneswalkers2013Promos extends ExpansionSet { + + private static final DuelsOfThePlaneswalkers2013Promos instance = new DuelsOfThePlaneswalkers2013Promos(); + + public static DuelsOfThePlaneswalkers2013Promos getInstance() { + return instance; + } + + private DuelsOfThePlaneswalkers2013Promos() { + super("Duels of the Planeswalkers 2013 Promos", "PDP13", ExpansionSet.buildDate(2013, 1, 1), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Bonescythe Sliver", 1, Rarity.RARE, mage.cards.b.BonescytheSliver.class)); + cards.add(new SetCardInfo("Ogre Battledriver", 2, Rarity.RARE, mage.cards.o.OgreBattledriver.class)); + cards.add(new SetCardInfo("Scavenging Ooze", 3, Rarity.RARE, mage.cards.s.ScavengingOoze.class)); + } +} \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/DuelsOfThePlaneswalkers2014Promos.java b/Mage.Sets/src/mage/sets/DuelsOfThePlaneswalkers2014Promos.java new file mode 100644 index 00000000000..71f8989c926 --- /dev/null +++ b/Mage.Sets/src/mage/sets/DuelsOfThePlaneswalkers2014Promos.java @@ -0,0 +1,28 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/pdp14 + * + * @author JayDi85 + */ +public final class DuelsOfThePlaneswalkers2014Promos extends ExpansionSet { + + private static final DuelsOfThePlaneswalkers2014Promos instance = new DuelsOfThePlaneswalkers2014Promos(); + + public static DuelsOfThePlaneswalkers2014Promos getInstance() { + return instance; + } + + private DuelsOfThePlaneswalkers2014Promos() { + super("Duels of the Planeswalkers 2014 Promos", "PDP14", ExpansionSet.buildDate(2014, 1, 1), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Soul of Ravnica", 1, Rarity.MYTHIC, mage.cards.s.SoulOfRavnica.class)); + cards.add(new SetCardInfo("Soul of Zendikar", 2, Rarity.MYTHIC, mage.cards.s.SoulOfZendikar.class)); + } +} \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/DuelsOfThePlaneswalkersPromos.java b/Mage.Sets/src/mage/sets/DuelsOfThePlaneswalkersPromos.java deleted file mode 100644 index 228d227f166..00000000000 --- a/Mage.Sets/src/mage/sets/DuelsOfThePlaneswalkersPromos.java +++ /dev/null @@ -1,55 +0,0 @@ - -package mage.sets; - -import mage.cards.ExpansionSet; -import mage.constants.Rarity; -import mage.constants.SetType; - -/** - * - * @author JayDi85 - */ -public final class DuelsOfThePlaneswalkersPromos extends ExpansionSet { - - private static final DuelsOfThePlaneswalkersPromos instance = new DuelsOfThePlaneswalkersPromos(); - - public static DuelsOfThePlaneswalkersPromos getInstance() { - return instance; - } - - private DuelsOfThePlaneswalkersPromos() { - super("Duels of the Planeswalkers Promos", "DPAP", ExpansionSet.buildDate(2010, 6, 4), SetType.PROMOTIONAL); - this.hasBoosters = false; - this.hasBasicLands = false; - - // all promos in one inner set (2009 - 2014) - // cards numbers must be unqiue - // use replacement list for scryfall download - - // 2009 - https://scryfall.com/sets/pdtp - cards.add(new SetCardInfo("Garruk Wildspeaker", 1, Rarity.MYTHIC, mage.cards.g.GarrukWildspeaker.class)); - - // 2010 - https://scryfall.com/sets/pdp10 - cards.add(new SetCardInfo("Liliana Vess", 2, Rarity.MYTHIC, mage.cards.l.LilianaVess.class)); - cards.add(new SetCardInfo("Nissa Revane", 3, Rarity.MYTHIC, mage.cards.n.NissaRevane.class)); - - // 2011 - https://scryfall.com/sets/pdp11 - cards.add(new SetCardInfo("Frost Titan", 4, Rarity.MYTHIC, mage.cards.f.FrostTitan.class)); - cards.add(new SetCardInfo("Grave Titan", 5, Rarity.MYTHIC, mage.cards.g.GraveTitan.class)); - cards.add(new SetCardInfo("Inferno Titan", 6, Rarity.MYTHIC, mage.cards.i.InfernoTitan.class)); - - // 2012 - https://scryfall.com/sets/pdp12 - cards.add(new SetCardInfo("Primordial Hydra", 7, Rarity.MYTHIC, mage.cards.p.PrimordialHydra.class)); - cards.add(new SetCardInfo("Serra Avatar", 8, Rarity.MYTHIC, mage.cards.s.SerraAvatar.class)); - cards.add(new SetCardInfo("Vampire Nocturnus", 9, Rarity.MYTHIC, mage.cards.v.VampireNocturnus.class)); - - // 2013 - https://scryfall.com/sets/pdp13 - cards.add(new SetCardInfo("Bonescythe Sliver", 10, Rarity.RARE, mage.cards.b.BonescytheSliver.class)); - cards.add(new SetCardInfo("Ogre Battledriver", 11, Rarity.RARE, mage.cards.o.OgreBattledriver.class)); - cards.add(new SetCardInfo("Scavenging Ooze", 12, Rarity.RARE, mage.cards.s.ScavengingOoze.class)); - - // 2014 - https://scryfall.com/sets/pdp14 - cards.add(new SetCardInfo("Soul of Ravnica", 13, Rarity.MYTHIC, mage.cards.s.SoulOfRavnica.class)); - cards.add(new SetCardInfo("Soul of Zendikar", 14, Rarity.MYTHIC, mage.cards.s.SoulOfZendikar.class)); - } -} \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/EighthEdition.java b/Mage.Sets/src/mage/sets/EighthEdition.java index 3d235376c5f..5419781c388 100644 --- a/Mage.Sets/src/mage/sets/EighthEdition.java +++ b/Mage.Sets/src/mage/sets/EighthEdition.java @@ -20,6 +20,10 @@ public final class EighthEdition extends ExpansionSet { this.numBoosterUncommon = 3; this.numBoosterRare = 1; this.ratioBoosterMythic = 0; + + // scryfall combines Eighth Edition and Eighth Edition Box sets in one, but xmage must split it + // reason: remove box's cards from booster? TODO: implement booster ignore settings for cards instead max card number + cards.add(new SetCardInfo("Abyssal Specter", 117, Rarity.UNCOMMON, mage.cards.a.AbyssalSpecter.class)); cards.add(new SetCardInfo("Air Elemental", 59, Rarity.UNCOMMON, mage.cards.a.AirElemental.class)); cards.add(new SetCardInfo("Aladdin's Ring", 291, Rarity.RARE, mage.cards.a.AladdinsRing.class)); diff --git a/Mage.Sets/src/mage/sets/EighthEditionBox.java b/Mage.Sets/src/mage/sets/EighthEditionBox.java index 84cf11a524d..1f6c51aa42d 100644 --- a/Mage.Sets/src/mage/sets/EighthEditionBox.java +++ b/Mage.Sets/src/mage/sets/EighthEditionBox.java @@ -13,11 +13,11 @@ public final class EighthEditionBox extends ExpansionSet { } private EighthEditionBox() { - super("EighthEditionBox", "8EB", ExpansionSet.buildDate(2003, 7, 28), SetType.CORE); + super("Eighth Edition Box", "8EB", ExpansionSet.buildDate(2003, 7, 28), SetType.CORE); this.hasBoosters = false; this.hasBasicLands = false; - // // http://www.magiclibrarities.net/540-rarities-eighth-edition-box-set-cards-english-cards-index.html + // http://www.magiclibrarities.net/540-rarities-eighth-edition-box-set-cards-english-cards-index.html cards.add(new SetCardInfo("Eager Cadet", 1, Rarity.COMMON, mage.cards.e.EagerCadet.class)); cards.add(new SetCardInfo("Vengeance", 2, Rarity.UNCOMMON, mage.cards.v.Vengeance.class)); cards.add(new SetCardInfo("Giant Octopus", 3, Rarity.COMMON, mage.cards.g.GiantOctopus.class)); diff --git a/Mage.Sets/src/mage/sets/EldritchMoon.java b/Mage.Sets/src/mage/sets/EldritchMoon.java index c6a1872f04b..40d15bdb2d5 100644 --- a/Mage.Sets/src/mage/sets/EldritchMoon.java +++ b/Mage.Sets/src/mage/sets/EldritchMoon.java @@ -118,18 +118,18 @@ public final class EldritchMoon extends ExpansionSet { cards.add(new SetCardInfo("Geist of the Lonely Vigil", 27, Rarity.UNCOMMON, mage.cards.g.GeistOfTheLonelyVigil.class)); cards.add(new SetCardInfo("Geist-Fueled Scarecrow", 196, Rarity.UNCOMMON, mage.cards.g.GeistFueledScarecrow.class)); cards.add(new SetCardInfo("Gisa and Geralf", 183, Rarity.MYTHIC, mage.cards.g.GisaAndGeralf.class)); - cards.add(new SetCardInfo("Gisela, the Broken Blade", "28a", Rarity.MYTHIC, mage.cards.g.GiselaTheBrokenBlade.class)); + cards.add(new SetCardInfo("Gisela, the Broken Blade", 28, Rarity.MYTHIC, mage.cards.g.GiselaTheBrokenBlade.class)); cards.add(new SetCardInfo("Give No Ground", 29, Rarity.UNCOMMON, mage.cards.g.GiveNoGround.class)); cards.add(new SetCardInfo("Gnarlwood Dryad", 159, Rarity.UNCOMMON, mage.cards.g.GnarlwoodDryad.class)); cards.add(new SetCardInfo("Graf Harvest", 90, Rarity.UNCOMMON, mage.cards.g.GrafHarvest.class)); - cards.add(new SetCardInfo("Graf Rats", "91a", Rarity.COMMON, mage.cards.g.GrafRats.class)); + cards.add(new SetCardInfo("Graf Rats", 91, Rarity.COMMON, mage.cards.g.GrafRats.class)); cards.add(new SetCardInfo("Grapple with the Past", 160, Rarity.COMMON, mage.cards.g.GrappleWithThePast.class)); cards.add(new SetCardInfo("Grim Flayer", 184, Rarity.MYTHIC, mage.cards.g.GrimFlayer.class)); cards.add(new SetCardInfo("Grisly Anglerfish", 63, Rarity.UNCOMMON, mage.cards.g.GrislyAnglerfish.class)); cards.add(new SetCardInfo("Grizzled Angler", 63, Rarity.UNCOMMON, mage.cards.g.GrizzledAngler.class)); cards.add(new SetCardInfo("Guardian of Pilgrims", 30, Rarity.COMMON, mage.cards.g.GuardianOfPilgrims.class)); cards.add(new SetCardInfo("Hamlet Captain", 161, Rarity.UNCOMMON, mage.cards.h.HamletCaptain.class)); - cards.add(new SetCardInfo("Hanweir Battlements", "204a", Rarity.RARE, mage.cards.h.HanweirBattlements.class)); + cards.add(new SetCardInfo("Hanweir Battlements", 204, Rarity.RARE, mage.cards.h.HanweirBattlements.class)); cards.add(new SetCardInfo("Hanweir Garrison", "130a", Rarity.RARE, mage.cards.h.HanweirGarrison.class)); cards.add(new SetCardInfo("Hanweir, the Writhing Township", "130b", Rarity.RARE, mage.cards.h.HanweirTheWrithingTownship.class)); cards.add(new SetCardInfo("Harmless Offering", 131, Rarity.RARE, mage.cards.h.HarmlessOffering.class)); diff --git a/Mage.Sets/src/mage/sets/EldritchMoonPromos.java b/Mage.Sets/src/mage/sets/EldritchMoonPromos.java new file mode 100644 index 00000000000..38d1aabb59c --- /dev/null +++ b/Mage.Sets/src/mage/sets/EldritchMoonPromos.java @@ -0,0 +1,99 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/pemn + */ +public class EldritchMoonPromos extends ExpansionSet { + + private static final EldritchMoonPromos instance = new EldritchMoonPromos(); + + public static EldritchMoonPromos getInstance() { + return instance; + } + + private EldritchMoonPromos() { + super("Eldritch Moon Promos", "PEMN", ExpansionSet.buildDate(2016, 7, 22), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Abolisher of Bloodlines", "111s", Rarity.RARE, mage.cards.a.AbolisherOfBloodlines.class)); + cards.add(new SetCardInfo("Assembled Alphas", 117, Rarity.RARE, mage.cards.a.AssembledAlphas.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Assembled Alphas", "117s", Rarity.RARE, mage.cards.a.AssembledAlphas.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Bedlam Reveler", "118s", Rarity.RARE, mage.cards.b.BedlamReveler.class)); + cards.add(new SetCardInfo("Bloodhall Priest", "181s", Rarity.RARE, mage.cards.b.BloodhallPriest.class)); + cards.add(new SetCardInfo("Brisela, Voice of Nightmares", "15bs", Rarity.MYTHIC, mage.cards.b.BriselaVoiceOfNightmares.class)); + cards.add(new SetCardInfo("Bruna, the Fading Light", "15as", Rarity.RARE, mage.cards.b.BrunaTheFadingLight.class)); + cards.add(new SetCardInfo("Coax from the Blind Eternities", "51s", Rarity.RARE, mage.cards.c.CoaxFromTheBlindEternities.class)); + cards.add(new SetCardInfo("Collective Brutality", "85s", Rarity.RARE, mage.cards.c.CollectiveBrutality.class)); + cards.add(new SetCardInfo("Collective Defiance", "123s", Rarity.RARE, mage.cards.c.CollectiveDefiance.class)); + cards.add(new SetCardInfo("Collective Effort", "17s", Rarity.RARE, mage.cards.c.CollectiveEffort.class)); + cards.add(new SetCardInfo("Cryptbreaker", "86s", Rarity.RARE, mage.cards.c.Cryptbreaker.class)); + cards.add(new SetCardInfo("Dark Salvation", "87s", Rarity.RARE, mage.cards.d.DarkSalvation.class)); + cards.add(new SetCardInfo("Decimator of the Provinces", "2s", Rarity.MYTHIC, mage.cards.d.DecimatorOfTheProvinces.class)); + cards.add(new SetCardInfo("Deploy the Gatewatch", "20s", Rarity.MYTHIC, mage.cards.d.DeployTheGatewatch.class)); + cards.add(new SetCardInfo("Distended Mindbender", "3s", Rarity.RARE, mage.cards.d.DistendedMindbender.class)); + cards.add(new SetCardInfo("Docent of Perfection", "56s", Rarity.RARE, mage.cards.d.DocentOfPerfection.class)); + cards.add(new SetCardInfo("Elder Deep-Fiend", "5s", Rarity.RARE, mage.cards.e.ElderDeepFiend.class)); + cards.add(new SetCardInfo("Eldritch Evolution", "155s", Rarity.RARE, mage.cards.e.EldritchEvolution.class)); + cards.add(new SetCardInfo("Emrakul's Evangel", "156s", Rarity.RARE, mage.cards.e.EmrakulsEvangel.class)); + cards.add(new SetCardInfo("Emrakul, the Promised End", "6s", Rarity.MYTHIC, mage.cards.e.EmrakulThePromisedEnd.class)); + cards.add(new SetCardInfo("Eternal Scourge", "7s", Rarity.RARE, mage.cards.e.EternalScourge.class)); + cards.add(new SetCardInfo("Final Iteration", "56s", Rarity.RARE, mage.cards.f.FinalIteration.class)); + cards.add(new SetCardInfo("Geier Reach Sanitarium", "203s", Rarity.RARE, mage.cards.g.GeierReachSanitarium.class)); + cards.add(new SetCardInfo("Gisa and Geralf", "183s", Rarity.MYTHIC, mage.cards.g.GisaAndGeralf.class)); + cards.add(new SetCardInfo("Gisela, the Broken Blade", "28s", Rarity.MYTHIC, mage.cards.g.GiselaTheBrokenBlade.class)); + cards.add(new SetCardInfo("Grim Flayer", "184s", Rarity.MYTHIC, mage.cards.g.GrimFlayer.class)); + cards.add(new SetCardInfo("Hanweir Battlements", "204s", Rarity.RARE, mage.cards.h.HanweirBattlements.class)); + cards.add(new SetCardInfo("Hanweir Garrison", "130as", Rarity.RARE, mage.cards.h.HanweirGarrison.class)); + cards.add(new SetCardInfo("Hanweir, the Writhing Township", "130bs", Rarity.RARE, mage.cards.h.HanweirTheWrithingTownship.class)); + cards.add(new SetCardInfo("Harmless Offering", "131s", Rarity.RARE, mage.cards.h.HarmlessOffering.class)); + cards.add(new SetCardInfo("Heron's Grace Champion", 185, Rarity.RARE, mage.cards.h.HeronsGraceChampion.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Heron's Grace Champion", "185s", Rarity.RARE, mage.cards.h.HeronsGraceChampion.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Identity Thief", 64, Rarity.RARE, mage.cards.i.IdentityThief.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Identity Thief", "64s", Rarity.RARE, mage.cards.i.IdentityThief.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Impetuous Devils", "132s", Rarity.RARE, mage.cards.i.ImpetuousDevils.class)); + cards.add(new SetCardInfo("Imprisoned in the Moon", "65s", Rarity.RARE, mage.cards.i.ImprisonedInTheMoon.class)); + cards.add(new SetCardInfo("Ishkanah, Grafwidow", "162s", Rarity.MYTHIC, mage.cards.i.IshkanahGrafwidow.class)); + cards.add(new SetCardInfo("Liliana, the Last Hope", "93s", Rarity.MYTHIC, mage.cards.l.LilianaTheLastHope.class)); + cards.add(new SetCardInfo("Lupine Prototype", "197s", Rarity.RARE, mage.cards.l.LupinePrototype.class)); + cards.add(new SetCardInfo("Mausoleum Wanderer", "69s", Rarity.RARE, mage.cards.m.MausoleumWanderer.class)); + cards.add(new SetCardInfo("Mind's Dilation", "70s", Rarity.MYTHIC, mage.cards.m.MindsDilation.class)); + cards.add(new SetCardInfo("Mirrorwing Dragon", "136s", Rarity.MYTHIC, mage.cards.m.MirrorwingDragon.class)); + cards.add(new SetCardInfo("Nahiri's Wrath", "137s", Rarity.MYTHIC, mage.cards.n.NahirisWrath.class)); + cards.add(new SetCardInfo("Niblis of Frost", 72, Rarity.RARE, mage.cards.n.NiblisOfFrost.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Niblis of Frost", "72s", Rarity.RARE, mage.cards.n.NiblisOfFrost.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Noosegraf Mob", 98, Rarity.RARE, mage.cards.n.NoosegrafMob.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Noosegraf Mob", "98s", Rarity.RARE, mage.cards.n.NoosegrafMob.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Oath of Liliana", "99s", Rarity.RARE, mage.cards.o.OathOfLiliana.class)); + cards.add(new SetCardInfo("Permeating Mass", "165s", Rarity.RARE, mage.cards.p.PermeatingMass.class)); + cards.add(new SetCardInfo("Providence", "37s", Rarity.RARE, mage.cards.p.Providence.class)); + cards.add(new SetCardInfo("Sanctifier of Souls", 39, Rarity.RARE, mage.cards.s.SanctifierOfSouls.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Sanctifier of Souls", "39s", Rarity.RARE, mage.cards.s.SanctifierOfSouls.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Selfless Spirit", "40s", Rarity.RARE, mage.cards.s.SelflessSpirit.class)); + cards.add(new SetCardInfo("Sigarda's Aid", "41s", Rarity.RARE, mage.cards.s.SigardasAid.class)); + cards.add(new SetCardInfo("Soul Separator", "199s", Rarity.RARE, mage.cards.s.SoulSeparator.class)); + cards.add(new SetCardInfo("Spell Queller", "189s", Rarity.RARE, mage.cards.s.SpellQueller.class)); + cards.add(new SetCardInfo("Spirit of the Hunt", "170s", Rarity.RARE, mage.cards.s.SpiritOfTheHunt.class)); + cards.add(new SetCardInfo("Splendid Reclamation", "171s", Rarity.RARE, mage.cards.s.SplendidReclamation.class)); + cards.add(new SetCardInfo("Stitcher's Graft", "200s", Rarity.RARE, mage.cards.s.StitchersGraft.class)); + cards.add(new SetCardInfo("Stromkirk Condemned", "106s", Rarity.RARE, mage.cards.s.StromkirkCondemned.class)); + cards.add(new SetCardInfo("Stromkirk Occultist", "146s", Rarity.RARE, mage.cards.s.StromkirkOccultist.class)); + cards.add(new SetCardInfo("Summary Dismissal", "75s", Rarity.RARE, mage.cards.s.SummaryDismissal.class)); + cards.add(new SetCardInfo("Tamiyo, Field Researcher", "190s", Rarity.MYTHIC, mage.cards.t.TamiyoFieldResearcher.class)); + cards.add(new SetCardInfo("Thalia's Lancers", "47s", Rarity.RARE, mage.cards.t.ThaliasLancers.class)); + cards.add(new SetCardInfo("Thalia, Heretic Cathar", 46, Rarity.RARE, mage.cards.t.ThaliaHereticCathar.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Thalia, Heretic Cathar", "46s", Rarity.RARE, mage.cards.t.ThaliaHereticCathar.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Tree of Perdition", "109s", Rarity.MYTHIC, mage.cards.t.TreeOfPerdition.class)); + cards.add(new SetCardInfo("Ulrich, Uncontested Alpha", "191s", Rarity.MYTHIC, mage.cards.u.UlrichUncontestedAlpha.class)); + cards.add(new SetCardInfo("Ulrich of the Krallenhorde", "191s", Rarity.MYTHIC, mage.cards.u.UlrichOfTheKrallenhorde.class)); + cards.add(new SetCardInfo("Ulvenwald Observer", 176, Rarity.RARE, mage.cards.u.UlvenwaldObserver.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Ulvenwald Observer", "176s", Rarity.RARE, mage.cards.u.UlvenwaldObserver.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Unsubstantiate", 79, Rarity.UNCOMMON, mage.cards.u.Unsubstantiate.class)); + cards.add(new SetCardInfo("Voldaren Pariah", "111s", Rarity.RARE, mage.cards.v.VoldarenPariah.class)); + cards.add(new SetCardInfo("Wharf Infiltrator", "80s", Rarity.RARE, mage.cards.w.WharfInfiltrator.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/EuropeanLandProgram.java b/Mage.Sets/src/mage/sets/EuropeanLandProgram.java index 709d783b8ec..96cfd9b431d 100644 --- a/Mage.Sets/src/mage/sets/EuropeanLandProgram.java +++ b/Mage.Sets/src/mage/sets/EuropeanLandProgram.java @@ -18,8 +18,10 @@ public final class EuropeanLandProgram extends ExpansionSet { } private EuropeanLandProgram() { - super("European Land Program", "EURO", ExpansionSet.buildDate(2000, 2, 14), SetType.PROMOTIONAL); + super("European Land Program", "PELP", ExpansionSet.buildDate(2000, 2, 14), SetType.PROMOTIONAL); this.hasBoosters = false; + this.hasBasicLands = true; + cards.add(new SetCardInfo("Forest", 1, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Forest", 6, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Forest", 11, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); diff --git a/Mage.Sets/src/mage/sets/FateReforgedClashPack.java b/Mage.Sets/src/mage/sets/FateReforgedClashPack.java new file mode 100644 index 00000000000..2a94ca23935 --- /dev/null +++ b/Mage.Sets/src/mage/sets/FateReforgedClashPack.java @@ -0,0 +1,30 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/cp2 + */ +public class FateReforgedClashPack extends ExpansionSet { + + private static final FateReforgedClashPack instance = new FateReforgedClashPack(); + + public static FateReforgedClashPack getInstance() { + return instance; + } + + private FateReforgedClashPack() { + super("Fate Reforged Clash Pack", "CP2", ExpansionSet.buildDate(2015, 1, 23), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Courser of Kruphix", 6, Rarity.RARE, mage.cards.c.CourserOfKruphix.class)); + cards.add(new SetCardInfo("Hero's Downfall", 2, Rarity.RARE, mage.cards.h.HerosDownfall.class)); + cards.add(new SetCardInfo("Necropolis Fiend", 1, Rarity.RARE, mage.cards.n.NecropolisFiend.class)); + cards.add(new SetCardInfo("Reaper of the Wilds", 4, Rarity.RARE, mage.cards.r.ReaperOfTheWilds.class)); + cards.add(new SetCardInfo("Sultai Ascendancy", 3, Rarity.RARE, mage.cards.s.SultaiAscendancy.class)); + cards.add(new SetCardInfo("Whip of Erebos", 5, Rarity.RARE, mage.cards.w.WhipOfErebos.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/FateReforgedPromos.java b/Mage.Sets/src/mage/sets/FateReforgedPromos.java new file mode 100644 index 00000000000..bfc0849fb41 --- /dev/null +++ b/Mage.Sets/src/mage/sets/FateReforgedPromos.java @@ -0,0 +1,63 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/pfrf + */ +public class FateReforgedPromos extends ExpansionSet { + + private static final FateReforgedPromos instance = new FateReforgedPromos(); + + public static FateReforgedPromos getInstance() { + return instance; + } + + private FateReforgedPromos() { + super("Fate Reforged Promos", "PFRF", ExpansionSet.buildDate(2015, 1, 24), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Alesha, Who Smiles at Death", "90s", Rarity.RARE, mage.cards.a.AleshaWhoSmilesAtDeath.class)); + cards.add(new SetCardInfo("Arcbond", "91s", Rarity.RARE, mage.cards.a.Arcbond.class)); + cards.add(new SetCardInfo("Archfiend of Depravity", 62, Rarity.RARE, mage.cards.a.ArchfiendOfDepravity.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Archfiend of Depravity", "62s", Rarity.RARE, mage.cards.a.ArchfiendOfDepravity.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Atarka, World Render", "149s", Rarity.RARE, mage.cards.a.AtarkaWorldRender.class)); + cards.add(new SetCardInfo("Brutal Hordechief", "64s", Rarity.MYTHIC, mage.cards.b.BrutalHordechief.class)); + cards.add(new SetCardInfo("Daghatar the Adamant", "9s", Rarity.RARE, mage.cards.d.DaghatarTheAdamant.class)); + cards.add(new SetCardInfo("Dragonscale General", 11, Rarity.RARE, mage.cards.d.DragonscaleGeneral.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Dragonscale General", "11s", Rarity.RARE, mage.cards.d.DragonscaleGeneral.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Dromoka, the Eternal", "151s", Rarity.RARE, mage.cards.d.DromokaTheEternal.class)); + cards.add(new SetCardInfo("Flamerush Rider", 99, Rarity.RARE, mage.cards.f.FlamerushRider.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Flamerush Rider", "99s", Rarity.RARE, mage.cards.f.FlamerushRider.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Flamewake Phoenix", "100s", Rarity.RARE, mage.cards.f.FlamewakePhoenix.class)); + cards.add(new SetCardInfo("Jeskai Infiltrator", "36s", Rarity.RARE, mage.cards.j.JeskaiInfiltrator.class)); + cards.add(new SetCardInfo("Kolaghan, the Storm's Fury", "155s", Rarity.RARE, mage.cards.k.KolaghanTheStormsFury.class)); + cards.add(new SetCardInfo("Mardu Shadowspear", 74, Rarity.UNCOMMON, mage.cards.m.MarduShadowspear.class)); + cards.add(new SetCardInfo("Mardu Strike Leader", "75s", Rarity.RARE, mage.cards.m.MarduStrikeLeader.class)); + cards.add(new SetCardInfo("Mastery of the Unseen", "19s", Rarity.RARE, mage.cards.m.MasteryOfTheUnseen.class)); + cards.add(new SetCardInfo("Ojutai, Soul of Winter", "156s", Rarity.RARE, mage.cards.o.OjutaiSoulOfWinter.class)); + cards.add(new SetCardInfo("Rally the Ancestors", "22s", Rarity.RARE, mage.cards.r.RallyTheAncestors.class)); + cards.add(new SetCardInfo("Sage-Eye Avengers", 50, Rarity.RARE, mage.cards.s.SageEyeAvengers.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Sage-Eye Avengers", "50s", Rarity.RARE, mage.cards.s.SageEyeAvengers.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Sandsteppe Mastodon", 137, Rarity.RARE, mage.cards.s.SandsteppeMastodon.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Sandsteppe Mastodon", "137s", Rarity.RARE, mage.cards.s.SandsteppeMastodon.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Shaman of the Great Hunt", "113s", Rarity.MYTHIC, mage.cards.s.ShamanOfTheGreatHunt.class)); + cards.add(new SetCardInfo("Shamanic Revelation", 138, Rarity.RARE, mage.cards.s.ShamanicRevelation.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Shamanic Revelation", "138s", Rarity.RARE, mage.cards.s.ShamanicRevelation.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Shu Yun, the Silent Tempest", "52s", Rarity.RARE, mage.cards.s.ShuYunTheSilentTempest.class)); + cards.add(new SetCardInfo("Silumgar, the Drifting Death", "157s", Rarity.RARE, mage.cards.s.SilumgarTheDriftingDeath.class)); + cards.add(new SetCardInfo("Soulfire Grand Master", "27s", Rarity.MYTHIC, mage.cards.s.SoulfireGrandMaster.class)); + cards.add(new SetCardInfo("Soulflayer", "84s", Rarity.RARE, mage.cards.s.Soulflayer.class)); + cards.add(new SetCardInfo("Supplant Form", 54, Rarity.RARE, mage.cards.s.SupplantForm.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Supplant Form", "54s", Rarity.RARE, mage.cards.s.SupplantForm.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Tasigur, the Golden Fang", "87s", Rarity.RARE, mage.cards.t.TasigurTheGoldenFang.class)); + cards.add(new SetCardInfo("Temur War Shaman", 142, Rarity.RARE, mage.cards.t.TemurWarShaman.class)); + cards.add(new SetCardInfo("Torrent Elemental", "56s", Rarity.MYTHIC, mage.cards.t.TorrentElemental.class)); + cards.add(new SetCardInfo("Warden of the First Tree", "143s", Rarity.MYTHIC, mage.cards.w.WardenOfTheFirstTree.class)); + cards.add(new SetCardInfo("Wildcall", "146s", Rarity.RARE, mage.cards.w.Wildcall.class)); + cards.add(new SetCardInfo("Yasova Dragonclaw", "148s", Rarity.RARE, mage.cards.y.YasovaDragonclaw.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/FifteenthAnniversaryCards.java b/Mage.Sets/src/mage/sets/FifteenthAnniversaryCards.java new file mode 100644 index 00000000000..b09c0dee99d --- /dev/null +++ b/Mage.Sets/src/mage/sets/FifteenthAnniversaryCards.java @@ -0,0 +1,26 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/p15a + */ +public class FifteenthAnniversaryCards extends ExpansionSet { + + private static final FifteenthAnniversaryCards instance = new FifteenthAnniversaryCards(); + + public static FifteenthAnniversaryCards getInstance() { + return instance; + } + + private FifteenthAnniversaryCards() { + super("Fifteenth Anniversary Cards", "P15A", ExpansionSet.buildDate(2008, 4, 1), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Char", 1, Rarity.RARE, mage.cards.c.Char.class)); + cards.add(new SetCardInfo("Kamahl, Pit Fighter", 2, Rarity.RARE, mage.cards.k.KamahlPitFighter.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/FridayNightMagic.java b/Mage.Sets/src/mage/sets/FridayNightMagic.java deleted file mode 100644 index 05b66834813..00000000000 --- a/Mage.Sets/src/mage/sets/FridayNightMagic.java +++ /dev/null @@ -1,234 +0,0 @@ - -package mage.sets; - -import mage.cards.ExpansionSet; -import mage.constants.Rarity; -import mage.constants.SetType; - -/** - * - * @author fireshoes - */ -public final class FridayNightMagic extends ExpansionSet { - - private static final FridayNightMagic instance = new FridayNightMagic(); - - public static FridayNightMagic getInstance() { - return instance; - } - - private FridayNightMagic() { - super("Friday Night Magic", "FNMP", ExpansionSet.buildDate(2011, 6, 17), SetType.PROMOTIONAL); - this.hasBoosters = false; - this.hasBasicLands = false; - cards.add(new SetCardInfo("Abzan Beastmaster", 180, Rarity.UNCOMMON, mage.cards.a.AbzanBeastmaster.class)); - cards.add(new SetCardInfo("Accumulated Knowledge", 51, Rarity.COMMON, mage.cards.a.AccumulatedKnowledge.class)); - cards.add(new SetCardInfo("Acidic Slime", 145, Rarity.UNCOMMON, mage.cards.a.AcidicSlime.class)); - cards.add(new SetCardInfo("Aether Hub", 205, Rarity.SPECIAL, mage.cards.a.AetherHub.class)); - cards.add(new SetCardInfo("Albino Troll", 20, Rarity.UNCOMMON, mage.cards.a.AlbinoTroll.class)); - cards.add(new SetCardInfo("Anathemancer", 122, Rarity.UNCOMMON, mage.cards.a.Anathemancer.class)); - cards.add(new SetCardInfo("Ancient Grudge", 144, Rarity.COMMON, mage.cards.a.AncientGrudge.class)); - cards.add(new SetCardInfo("Ancient Ziggurat", 118, Rarity.UNCOMMON, mage.cards.a.AncientZiggurat.class)); - cards.add(new SetCardInfo("Anticipate", 187, Rarity.COMMON, mage.cards.a.Anticipate.class)); - cards.add(new SetCardInfo("Armadillo Cloak", 69, Rarity.COMMON, mage.cards.a.ArmadilloCloak.class)); - cards.add(new SetCardInfo("Arrogant Wurm", 77, Rarity.UNCOMMON, mage.cards.a.ArrogantWurm.class)); - cards.add(new SetCardInfo("Artisan of Kozilek", 131, Rarity.UNCOMMON, mage.cards.a.ArtisanOfKozilek.class)); - cards.add(new SetCardInfo("Astral Slide", 76, Rarity.UNCOMMON, mage.cards.a.AstralSlide.class)); - cards.add(new SetCardInfo("Aura of Silence", 26, Rarity.UNCOMMON, mage.cards.a.AuraOfSilence.class)); - cards.add(new SetCardInfo("Avacyn's Pilgrim", 147, Rarity.COMMON, mage.cards.a.AvacynsPilgrim.class)); - cards.add(new SetCardInfo("Avalanche Riders", 52, Rarity.UNCOMMON, mage.cards.a.AvalancheRiders.class)); - cards.add(new SetCardInfo("Banisher Priest", 166, Rarity.UNCOMMON, mage.cards.b.BanisherPriest.class)); - cards.add(new SetCardInfo("Banishing Light", 172, Rarity.UNCOMMON, mage.cards.b.BanishingLight.class)); - cards.add(new SetCardInfo("Basking Rootwalla", 83, Rarity.COMMON, mage.cards.b.BaskingRootwalla.class)); - cards.add(new SetCardInfo("Bile Blight", 171, Rarity.UNCOMMON, mage.cards.b.BileBlight.class)); - cards.add(new SetCardInfo("Black Knight", 22, Rarity.UNCOMMON, mage.cards.b.BlackKnight.class)); - cards.add(new SetCardInfo("Blastoderm", 59, Rarity.COMMON, mage.cards.b.Blastoderm.class)); - cards.add(new SetCardInfo("Blighted Fen", 191, Rarity.UNCOMMON, mage.cards.b.BlightedFen.class)); - cards.add(new SetCardInfo("Bloodbraid Elf", 119, Rarity.UNCOMMON, mage.cards.b.BloodbraidElf.class)); - cards.add(new SetCardInfo("Bottle Gnomes", 32, Rarity.UNCOMMON, mage.cards.b.BottleGnomes.class)); - cards.add(new SetCardInfo("Brain Maggot", 174, Rarity.UNCOMMON, mage.cards.b.BrainMaggot.class)); - cards.add(new SetCardInfo("Brainstorm", 55, Rarity.COMMON, mage.cards.b.Brainstorm.class)); - cards.add(new SetCardInfo("Browbeat", 113, Rarity.UNCOMMON, mage.cards.b.Browbeat.class)); - cards.add(new SetCardInfo("Cabal Coffers", 89, Rarity.UNCOMMON, mage.cards.c.CabalCoffers.class)); - cards.add(new SetCardInfo("Cabal Therapy", 60, Rarity.UNCOMMON, mage.cards.c.CabalTherapy.class)); - cards.add(new SetCardInfo("Call of the Conclave", 155, Rarity.UNCOMMON, mage.cards.c.CallOfTheConclave.class)); - cards.add(new SetCardInfo("Call the Bloodline", 199, Rarity.UNCOMMON, mage.cards.c.CallTheBloodline.class)); - cards.add(new SetCardInfo("Capsize", 35, Rarity.COMMON, mage.cards.c.Capsize.class)); - cards.add(new SetCardInfo("Carnophage", 16, Rarity.COMMON, mage.cards.c.Carnophage.class)); - cards.add(new SetCardInfo("Carrion Feeder", 49, Rarity.COMMON, mage.cards.c.CarrionFeeder.class)); - cards.add(new SetCardInfo("Chainer's Edict", 74, Rarity.UNCOMMON, mage.cards.c.ChainersEdict.class)); - cards.add(new SetCardInfo("Circle of Protection: Red", 63, Rarity.COMMON, mage.cards.c.CircleOfProtectionRed.class)); - cards.add(new SetCardInfo("Circular Logic", 75, Rarity.UNCOMMON, mage.cards.c.CircularLogic.class)); - cards.add(new SetCardInfo("Clash of Wills", 189, Rarity.UNCOMMON, mage.cards.c.ClashOfWills.class)); - cards.add(new SetCardInfo("Cloudpost", 120, Rarity.COMMON, mage.cards.c.Cloudpost.class)); - cards.add(new SetCardInfo("Contagion Clasp", 137, Rarity.UNCOMMON, mage.cards.c.ContagionClasp.class)); - cards.add(new SetCardInfo("Counterspell", 66, Rarity.COMMON, mage.cards.c.Counterspell.class)); - cards.add(new SetCardInfo("Crumbling Vestige", 195, Rarity.COMMON, mage.cards.c.CrumblingVestige.class)); - cards.add(new SetCardInfo("Crystalline Sliver", 34, Rarity.UNCOMMON, mage.cards.c.CrystallineSliver.class)); - cards.add(new SetCardInfo("Cultivate", 135, Rarity.COMMON, mage.cards.c.Cultivate.class)); - cards.add(new SetCardInfo("Deep Analysis", 81, Rarity.COMMON, mage.cards.d.DeepAnalysis.class)); - cards.add(new SetCardInfo("Desert", 99, Rarity.UNCOMMON, mage.cards.d.Desert.class)); - cards.add(new SetCardInfo("Despise", 141, Rarity.UNCOMMON, mage.cards.d.Despise.class)); - cards.add(new SetCardInfo("Dimir Charm", 159, Rarity.UNCOMMON, mage.cards.d.DimirCharm.class)); - cards.add(new SetCardInfo("Disdainful Stroke", 177, Rarity.COMMON, mage.cards.d.DisdainfulStroke.class)); - cards.add(new SetCardInfo("Disenchant", 31, Rarity.COMMON, mage.cards.d.Disenchant.class)); - cards.add(new SetCardInfo("Dismember", 143, Rarity.UNCOMMON, mage.cards.d.Dismember.class)); - cards.add(new SetCardInfo("Dissipate", 21, Rarity.UNCOMMON, mage.cards.d.Dissipate.class)); - cards.add(new SetCardInfo("Dissolve", 169, Rarity.UNCOMMON, mage.cards.d.Dissolve.class)); - cards.add(new SetCardInfo("Drain Life", 25, Rarity.COMMON, mage.cards.d.DrainLife.class)); - cards.add(new SetCardInfo("Duress", 65, Rarity.COMMON, mage.cards.d.Duress.class)); - cards.add(new SetCardInfo("Elves of Deep Shadow", 68, Rarity.COMMON, mage.cards.e.ElvesOfDeepShadow.class)); - cards.add(new SetCardInfo("Elvish Mystic", 165, Rarity.COMMON, mage.cards.e.ElvishMystic.class)); - cards.add(new SetCardInfo("Elvish Visionary", 121, Rarity.COMMON, mage.cards.e.ElvishVisionary.class)); - cards.add(new SetCardInfo("Encroaching Wastes", 167, Rarity.UNCOMMON, mage.cards.e.EncroachingWastes.class)); - cards.add(new SetCardInfo("Engineered Plague", 86, Rarity.UNCOMMON, mage.cards.e.EngineeredPlague.class)); - cards.add(new SetCardInfo("Eternal Witness", 94, Rarity.UNCOMMON, mage.cards.e.EternalWitness.class)); - cards.add(new SetCardInfo("Everflowing Chalice", 128, Rarity.UNCOMMON, mage.cards.e.EverflowingChalice.class)); - cards.add(new SetCardInfo("Evolving Wilds", 149, Rarity.COMMON, mage.cards.e.EvolvingWilds.class)); - cards.add(new SetCardInfo("Experiment One", 160, Rarity.UNCOMMON, mage.cards.e.ExperimentOne.class)); - cards.add(new SetCardInfo("Fact or Fiction", 61, Rarity.UNCOMMON, mage.cards.f.FactOrFiction.class)); - cards.add(new SetCardInfo("Fanatic of Xenagos", 173, Rarity.UNCOMMON, mage.cards.f.FanaticOfXenagos.class)); - cards.add(new SetCardInfo("Farseek", 154, Rarity.COMMON, mage.cards.f.Farseek.class)); - cards.add(new SetCardInfo("Fatal Push", 208, Rarity.SPECIAL, mage.cards.f.FatalPush.class)); - cards.add(new SetCardInfo("Fiery Temper", 198, Rarity.UNCOMMON, mage.cards.f.FieryTemper.class)); - cards.add(new SetCardInfo("Fireblast", 18, Rarity.COMMON, mage.cards.f.Fireblast.class)); - cards.add(new SetCardInfo("Firebolt", 80, Rarity.UNCOMMON, mage.cards.f.Firebolt.class)); - cards.add(new SetCardInfo("Fire // Ice", 79, Rarity.UNCOMMON, mage.cards.f.FireIce.class)); - cards.add(new SetCardInfo("Fireslinger", 24, Rarity.COMMON, mage.cards.f.Fireslinger.class)); - cards.add(new SetCardInfo("Flametongue Kavu", 58, Rarity.UNCOMMON, mage.cards.f.FlametongueKavu.class)); - cards.add(new SetCardInfo("Flaying Tendrils", 196, Rarity.UNCOMMON, mage.cards.f.FlayingTendrils.class)); - cards.add(new SetCardInfo("Forbid", 27, Rarity.UNCOMMON, mage.cards.f.Forbid.class)); - cards.add(new SetCardInfo("Forbidden Alchemy", 146, Rarity.COMMON, mage.cards.f.ForbiddenAlchemy.class)); - cards.add(new SetCardInfo("Force Spike", 91, Rarity.COMMON, mage.cards.f.ForceSpike.class)); - cards.add(new SetCardInfo("Fortune's Favor", 201, Rarity.COMMON, mage.cards.f.FortunesFavor.class)); - cards.add(new SetCardInfo("Frenzied Goblin", 176, Rarity.UNCOMMON, mage.cards.f.FrenziedGoblin.class)); - cards.add(new SetCardInfo("Frost Walker", 181, Rarity.UNCOMMON, mage.cards.f.FrostWalker.class)); - cards.add(new SetCardInfo("Gatekeeper of Malakir", 126, Rarity.UNCOMMON, mage.cards.g.GatekeeperOfMalakir.class)); - cards.add(new SetCardInfo("Gerrard's Verdict", 82, Rarity.UNCOMMON, mage.cards.g.GerrardsVerdict.class)); - cards.add(new SetCardInfo("Ghor-Clan Rampager", 161, Rarity.UNCOMMON, mage.cards.g.GhorClanRampager.class)); - cards.add(new SetCardInfo("Ghostly Prison", 117, Rarity.UNCOMMON, mage.cards.g.GhostlyPrison.class)); - cards.add(new SetCardInfo("Giant Growth", 8, Rarity.COMMON, mage.cards.g.GiantGrowth.class)); - cards.add(new SetCardInfo("Gitaxian Probe", 151, Rarity.COMMON, mage.cards.g.GitaxianProbe.class)); - cards.add(new SetCardInfo("Glistener Elf", 140, Rarity.COMMON, mage.cards.g.GlistenerElf.class)); - cards.add(new SetCardInfo("Goblin Bombardment", 37, Rarity.UNCOMMON, mage.cards.g.GoblinBombardment.class)); - cards.add(new SetCardInfo("Goblin Legionnaire", 85, Rarity.COMMON, mage.cards.g.GoblinLegionnaire.class)); - cards.add(new SetCardInfo("Goblin Ringleader", 87, Rarity.UNCOMMON, mage.cards.g.GoblinRingleader.class)); - cards.add(new SetCardInfo("Goblin Warchief", 72, Rarity.UNCOMMON, mage.cards.g.GoblinWarchief.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Goblin Warchief", 192, Rarity.UNCOMMON, mage.cards.g.GoblinWarchief.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Go for the Throat", 138, Rarity.UNCOMMON, mage.cards.g.GoForTheThroat.class)); - cards.add(new SetCardInfo("Grisly Salvage", 162, Rarity.COMMON, mage.cards.g.GrislySalvage.class)); - cards.add(new SetCardInfo("Hordeling Outburst", 178, Rarity.UNCOMMON, mage.cards.h.HordelingOutburst.class)); - cards.add(new SetCardInfo("Icy Manipulator", 67, Rarity.UNCOMMON, mage.cards.i.IcyManipulator.class)); - cards.add(new SetCardInfo("Impulse", 17, Rarity.COMMON, mage.cards.i.Impulse.class)); - cards.add(new SetCardInfo("Incendiary Flow", 202, Rarity.SPECIAL, mage.cards.i.IncendiaryFlow.class)); - cards.add(new SetCardInfo("Isochron Scepter", 102, Rarity.UNCOMMON, mage.cards.i.IsochronScepter.class)); - cards.add(new SetCardInfo("Izzet Charm", 157, Rarity.UNCOMMON, mage.cards.i.IzzetCharm.class)); - cards.add(new SetCardInfo("Jace's Ingenuity", 134, Rarity.UNCOMMON, mage.cards.j.JacesIngenuity.class)); - cards.add(new SetCardInfo("Jackal Pup", 14, Rarity.UNCOMMON, mage.cards.j.JackalPup.class)); - cards.add(new SetCardInfo("Judge's Familiar", 156, Rarity.UNCOMMON, mage.cards.j.JudgesFamiliar.class)); - cards.add(new SetCardInfo("Juggernaut", 62, Rarity.UNCOMMON, mage.cards.j.Juggernaut.class)); - cards.add(new SetCardInfo("Kird Ape", 64, Rarity.COMMON, mage.cards.k.KirdApe.class)); - cards.add(new SetCardInfo("Kitchen Finks", 106, Rarity.UNCOMMON, mage.cards.k.KitchenFinks.class)); - cards.add(new SetCardInfo("Krosan Grip", 123, Rarity.UNCOMMON, mage.cards.k.KrosanGrip.class)); - cards.add(new SetCardInfo("Krosan Tusker", 42, Rarity.COMMON, mage.cards.k.KrosanTusker.class)); - cards.add(new SetCardInfo("Krosan Warchief", 47, Rarity.UNCOMMON, mage.cards.k.KrosanWarchief.class)); - cards.add(new SetCardInfo("Life // Death", 78, Rarity.UNCOMMON, mage.cards.l.LifeDeath.class)); - cards.add(new SetCardInfo("Lightning Greaves", 111, Rarity.UNCOMMON, mage.cards.l.LightningGreaves.class)); - cards.add(new SetCardInfo("Lightning Rift", 48, Rarity.UNCOMMON, mage.cards.l.LightningRift.class)); - cards.add(new SetCardInfo("Lingering Souls", 148, Rarity.UNCOMMON, mage.cards.l.LingeringSouls.class)); - cards.add(new SetCardInfo("Llanowar Elves", 11, Rarity.COMMON, mage.cards.l.LlanowarElves.class)); - cards.add(new SetCardInfo("Lobotomy", 71, Rarity.UNCOMMON, mage.cards.l.Lobotomy.class)); - cards.add(new SetCardInfo("Longbow Archer", 3, Rarity.UNCOMMON, mage.cards.l.LongbowArcher.class)); - cards.add(new SetCardInfo("Magma Jet", 104, Rarity.UNCOMMON, mage.cards.m.MagmaJet.class)); - cards.add(new SetCardInfo("Magma Spray", 170, Rarity.COMMON, mage.cards.m.MagmaSpray.class)); - cards.add(new SetCardInfo("Merrow Reejerey", 107, Rarity.UNCOMMON, mage.cards.m.MerrowReejerey.class)); - cards.add(new SetCardInfo("Mind Warp", 5, Rarity.UNCOMMON, mage.cards.m.MindWarp.class)); - cards.add(new SetCardInfo("Mogg Fanatic", 29, Rarity.UNCOMMON, mage.cards.m.MoggFanatic.class)); - cards.add(new SetCardInfo("Mother of Runes", 54, Rarity.UNCOMMON, mage.cards.m.MotherOfRunes.class)); - cards.add(new SetCardInfo("Mulldrifter", 109, Rarity.COMMON, mage.cards.m.Mulldrifter.class)); - cards.add(new SetCardInfo("Murderous Redcap", 110, Rarity.UNCOMMON, mage.cards.m.MurderousRedcap.class)); - cards.add(new SetCardInfo("Muscle Sliver", 33, Rarity.COMMON, mage.cards.m.MuscleSliver.class)); - cards.add(new SetCardInfo("Myr Enforcer", 105, Rarity.COMMON, mage.cards.m.MyrEnforcer.class)); - cards.add(new SetCardInfo("Nissa's Pilgrimage", 188, Rarity.COMMON, mage.cards.n.NissasPilgrimage.class)); - cards.add(new SetCardInfo("Noose Constrictor", 200, Rarity.SPECIAL, mage.cards.n.NooseConstrictor.class)); - cards.add(new SetCardInfo("Oblivion Ring", 114, Rarity.COMMON, mage.cards.o.OblivionRing.class)); - cards.add(new SetCardInfo("Ophidian", 13, Rarity.UNCOMMON, mage.cards.o.Ophidian.class)); - cards.add(new SetCardInfo("Orator of Ojutai", 184, Rarity.UNCOMMON, mage.cards.o.OratorOfOjutai.class)); - cards.add(new SetCardInfo("Path to Exile", 182, Rarity.UNCOMMON, mage.cards.p.PathToExile.class)); - cards.add(new SetCardInfo("Pendelhaven", 96, Rarity.UNCOMMON, mage.cards.p.Pendelhaven.class)); - cards.add(new SetCardInfo("Pillar of Flame", 150, Rarity.COMMON, mage.cards.p.PillarOfFlame.class)); - cards.add(new SetCardInfo("Priest of Titania", 36, Rarity.COMMON, mage.cards.p.PriestOfTitania.class)); - cards.add(new SetCardInfo("Prodigal Sorcerer", 9, Rarity.COMMON, mage.cards.p.ProdigalSorcerer.class)); - cards.add(new SetCardInfo("Qasali Pridemage", 124, Rarity.COMMON, mage.cards.q.QasaliPridemage.class)); - cards.add(new SetCardInfo("Quirion Ranger", 15, Rarity.COMMON, mage.cards.q.QuirionRanger.class)); - cards.add(new SetCardInfo("Rakdos Cackler", 158, Rarity.UNCOMMON, mage.cards.r.RakdosCackler.class)); - cards.add(new SetCardInfo("Rancor", 56, Rarity.COMMON, mage.cards.r.Rancor.class)); - cards.add(new SetCardInfo("Reanimate", 53, Rarity.UNCOMMON, mage.cards.r.Reanimate.class)); - cards.add(new SetCardInfo("Reliquary Tower", 153, Rarity.UNCOMMON, mage.cards.r.ReliquaryTower.class)); - cards.add(new SetCardInfo("Remand", 92, Rarity.UNCOMMON, mage.cards.r.Remand.class)); - cards.add(new SetCardInfo("Renegade Rallier", 207, Rarity.SPECIAL, mage.cards.r.RenegadeRallier.class)); - cards.add(new SetCardInfo("Resurrection", 97, Rarity.UNCOMMON, mage.cards.r.Resurrection.class)); - cards.add(new SetCardInfo("Reverse Engineer", 206, Rarity.SPECIAL, mage.cards.r.ReverseEngineer.class)); - cards.add(new SetCardInfo("Rhox War Monk", 133, Rarity.UNCOMMON, mage.cards.r.RhoxWarMonk.class)); - cards.add(new SetCardInfo("Rift Bolt", 125, Rarity.COMMON, mage.cards.r.RiftBolt.class)); - cards.add(new SetCardInfo("Rise from the Tides", 197, Rarity.UNCOMMON, mage.cards.r.RiseFromTheTides.class)); - cards.add(new SetCardInfo("River Boa", 1, Rarity.UNCOMMON, mage.cards.r.RiverBoa.class)); - cards.add(new SetCardInfo("Roar of the Wurm", 90, Rarity.UNCOMMON, mage.cards.r.RoarOfTheWurm.class)); - cards.add(new SetCardInfo("Roast", 186, Rarity.UNCOMMON, mage.cards.r.Roast.class)); - cards.add(new SetCardInfo("Sakura-Tribe Elder", 115, Rarity.COMMON, mage.cards.s.SakuraTribeElder.class)); - cards.add(new SetCardInfo("Savage Lands", 139, Rarity.UNCOMMON, mage.cards.s.SavageLands.class)); - cards.add(new SetCardInfo("Scragnoth", 38, Rarity.UNCOMMON, mage.cards.s.Scragnoth.class)); - cards.add(new SetCardInfo("Seal of Cleansing", 57, Rarity.COMMON, mage.cards.s.SealOfCleansing.class)); - cards.add(new SetCardInfo("Searing Spear", 152, Rarity.COMMON, mage.cards.s.SearingSpear.class)); - cards.add(new SetCardInfo("Serrated Arrows", 101, Rarity.UNCOMMON, mage.cards.s.SerratedArrows.class)); - cards.add(new SetCardInfo("Serum Visions", 183, Rarity.COMMON, mage.cards.s.SerumVisions.class)); - cards.add(new SetCardInfo("Servo Exhibition", 203, Rarity.SPECIAL, mage.cards.s.ServoExhibition.class)); - cards.add(new SetCardInfo("Shock", 6, Rarity.COMMON, mage.cards.s.Shock.class)); - cards.add(new SetCardInfo("Shrapnel Blast", 103, Rarity.UNCOMMON, mage.cards.s.ShrapnelBlast.class)); - cards.add(new SetCardInfo("Silver Knight", 46, Rarity.UNCOMMON, mage.cards.s.SilverKnight.class)); - cards.add(new SetCardInfo("Sin Collector", 163, Rarity.UNCOMMON, mage.cards.s.SinCollector.class)); - cards.add(new SetCardInfo("Slice and Dice", 45, Rarity.UNCOMMON, mage.cards.s.SliceAndDice.class)); - cards.add(new SetCardInfo("Smash to Smithereens", 190, Rarity.COMMON, mage.cards.s.SmashToSmithereens.class)); - cards.add(new SetCardInfo("Smother", 39, Rarity.UNCOMMON, mage.cards.s.Smother.class)); - cards.add(new SetCardInfo("Soltari Priest", 19, Rarity.UNCOMMON, mage.cards.s.SoltariPriest.class)); - cards.add(new SetCardInfo("Sparksmith", 41, Rarity.COMMON, mage.cards.s.Sparksmith.class)); - cards.add(new SetCardInfo("Spatial Contortion", 194, Rarity.UNCOMMON, mage.cards.s.SpatialContortion.class)); - cards.add(new SetCardInfo("Spellstutter Sprite", 129, Rarity.COMMON, mage.cards.s.SpellstutterSprite.class)); - cards.add(new SetCardInfo("Spike Feeder", 28, Rarity.UNCOMMON, mage.cards.s.SpikeFeeder.class)); - cards.add(new SetCardInfo("Squadron Hawk", 132, Rarity.COMMON, mage.cards.s.SquadronHawk.class)); - cards.add(new SetCardInfo("Staunch Defenders", 7, Rarity.UNCOMMON, mage.cards.s.StaunchDefenders.class)); - cards.add(new SetCardInfo("Stoke the Flames", 175, Rarity.UNCOMMON, mage.cards.s.StokeTheFlames.class)); - cards.add(new SetCardInfo("Stone Rain", 10, Rarity.COMMON, mage.cards.s.StoneRain.class)); - cards.add(new SetCardInfo("Suspension Field", 179, Rarity.UNCOMMON, mage.cards.s.SuspensionField.class)); - cards.add(new SetCardInfo("Swords to Plowshares", 12, Rarity.UNCOMMON, mage.cards.s.SwordsToPlowshares.class)); - cards.add(new SetCardInfo("Sylvan Scrying", 193, Rarity.UNCOMMON, mage.cards.s.SylvanScrying.class)); - cards.add(new SetCardInfo("Tectonic Edge", 142, Rarity.UNCOMMON, mage.cards.t.TectonicEdge.class)); - cards.add(new SetCardInfo("Teetering Peaks", 136, Rarity.COMMON, mage.cards.t.TeeteringPeaks.class)); - cards.add(new SetCardInfo("Tendrils of Agony", 95, Rarity.UNCOMMON, mage.cards.t.TendrilsOfAgony.class)); - cards.add(new SetCardInfo("Terminate", 70, Rarity.COMMON, mage.cards.t.Terminate.class)); - cards.add(new SetCardInfo("Terror", 2, Rarity.COMMON, mage.cards.t.Terror.class)); - cards.add(new SetCardInfo("Thirst for Knowledge", 100, Rarity.UNCOMMON, mage.cards.t.ThirstForKnowledge.class)); - cards.add(new SetCardInfo("Tidehollow Sculler", 116, Rarity.UNCOMMON, mage.cards.t.TidehollowSculler.class)); - cards.add(new SetCardInfo("Tormented Hero", 168, Rarity.UNCOMMON, mage.cards.t.TormentedHero.class)); - cards.add(new SetCardInfo("Tormod's Crypt", 93, Rarity.UNCOMMON, mage.cards.t.TormodsCrypt.class)); - cards.add(new SetCardInfo("Treetop Village", 50, Rarity.UNCOMMON, mage.cards.t.TreetopVillage.class)); - cards.add(new SetCardInfo("Ultimate Price", 185, Rarity.UNCOMMON, mage.cards.u.UltimatePrice.class)); - cards.add(new SetCardInfo("Unlicensed Disintegration", 204, Rarity.SPECIAL, mage.cards.u.UnlicensedDisintegration.class)); - cards.add(new SetCardInfo("Volcanic Geyser", 4, Rarity.UNCOMMON, mage.cards.v.VolcanicGeyser.class)); - cards.add(new SetCardInfo("Wall of Blossoms", 23, Rarity.UNCOMMON, mage.cards.w.WallOfBlossoms.class)); - cards.add(new SetCardInfo("Wall of Omens", 130, Rarity.UNCOMMON, mage.cards.w.WallOfOmens.class)); - cards.add(new SetCardInfo("Wall of Roots", 98, Rarity.COMMON, mage.cards.w.WallOfRoots.class)); - cards.add(new SetCardInfo("Warleader's Helix", 164, Rarity.UNCOMMON, mage.cards.w.WarleadersHelix.class)); - cards.add(new SetCardInfo("Watchwolf", 112, Rarity.UNCOMMON, mage.cards.w.Watchwolf.class)); - cards.add(new SetCardInfo("Whipcorder", 40, Rarity.UNCOMMON, mage.cards.w.Whipcorder.class)); - cards.add(new SetCardInfo("White Knight", 30, Rarity.UNCOMMON, mage.cards.w.WhiteKnight.class)); - cards.add(new SetCardInfo("Wild Mongrel", 73, Rarity.COMMON, mage.cards.w.WildMongrel.class)); - cards.add(new SetCardInfo("Wild Nacatl", 127, Rarity.COMMON, mage.cards.w.WildNacatl.class)); - cards.add(new SetCardInfo("Willbender", 44, Rarity.UNCOMMON, mage.cards.w.Willbender.class)); - cards.add(new SetCardInfo("Wing Shards", 88, Rarity.UNCOMMON, mage.cards.w.WingShards.class)); - cards.add(new SetCardInfo("Withered Wretch", 43, Rarity.UNCOMMON, mage.cards.w.WitheredWretch.class)); - cards.add(new SetCardInfo("Wonder", 84, Rarity.UNCOMMON, mage.cards.w.Wonder.class)); - cards.add(new SetCardInfo("Wren's Run Vanquisher", 108, Rarity.UNCOMMON, mage.cards.w.WrensRunVanquisher.class)); - } - -} diff --git a/Mage.Sets/src/mage/sets/FridayNightMagic2000.java b/Mage.Sets/src/mage/sets/FridayNightMagic2000.java new file mode 100644 index 00000000000..65b0691d3df --- /dev/null +++ b/Mage.Sets/src/mage/sets/FridayNightMagic2000.java @@ -0,0 +1,35 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/fnm + */ +public class FridayNightMagic2000 extends ExpansionSet { + + private static final FridayNightMagic2000 instance = new FridayNightMagic2000(); + + public static FridayNightMagic2000 getInstance() { + return instance; + } + + private FridayNightMagic2000() { + super("Friday Night Magic 2000", "FNM", ExpansionSet.buildDate(2000, 1, 1), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Giant Growth", 8, Rarity.RARE, mage.cards.g.GiantGrowth.class)); + cards.add(new SetCardInfo("Llanowar Elves", 11, Rarity.RARE, mage.cards.l.LlanowarElves.class)); + cards.add(new SetCardInfo("Longbow Archer", 3, Rarity.RARE, mage.cards.l.LongbowArcher.class)); + cards.add(new SetCardInfo("Mind Warp", 5, Rarity.RARE, mage.cards.m.MindWarp.class)); + cards.add(new SetCardInfo("Prodigal Sorcerer", 9, Rarity.RARE, mage.cards.p.ProdigalSorcerer.class)); + cards.add(new SetCardInfo("River Boa", 1, Rarity.RARE, mage.cards.r.RiverBoa.class)); + cards.add(new SetCardInfo("Shock", 6, Rarity.RARE, mage.cards.s.Shock.class)); + cards.add(new SetCardInfo("Staunch Defenders", 12, Rarity.RARE, mage.cards.s.StaunchDefenders.class)); + cards.add(new SetCardInfo("Stone Rain", 10, Rarity.RARE, mage.cards.s.StoneRain.class)); + cards.add(new SetCardInfo("Terror", 2, Rarity.RARE, mage.cards.t.Terror.class)); + cards.add(new SetCardInfo("Volcanic Geyser", 4, Rarity.RARE, mage.cards.v.VolcanicGeyser.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/FridayNightMagic2001.java b/Mage.Sets/src/mage/sets/FridayNightMagic2001.java new file mode 100644 index 00000000000..3b8c3512d10 --- /dev/null +++ b/Mage.Sets/src/mage/sets/FridayNightMagic2001.java @@ -0,0 +1,31 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/f01 + */ +public class FridayNightMagic2001 extends ExpansionSet { + + private static final FridayNightMagic2001 instance = new FridayNightMagic2001(); + + public static FridayNightMagic2001 getInstance() { + return instance; + } + + private FridayNightMagic2001() { + super("Friday Night Magic 2001", "F01", ExpansionSet.buildDate(2001, 1, 1), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Carnophage", 10, Rarity.RARE, mage.cards.c.Carnophage.class)); + cards.add(new SetCardInfo("Fireblast", 12, Rarity.RARE, mage.cards.f.Fireblast.class)); + cards.add(new SetCardInfo("Impulse", 11, Rarity.RARE, mage.cards.i.Impulse.class)); + cards.add(new SetCardInfo("Jackal Pup", 8, Rarity.RARE, mage.cards.j.JackalPup.class)); + cards.add(new SetCardInfo("Ophidian", 7, Rarity.RARE, mage.cards.o.Ophidian.class)); + cards.add(new SetCardInfo("Quirion Ranger", 9, Rarity.RARE, mage.cards.q.QuirionRanger.class)); + cards.add(new SetCardInfo("Swords to Plowshares", 6, Rarity.RARE, mage.cards.s.SwordsToPlowshares.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/FridayNightMagic2002.java b/Mage.Sets/src/mage/sets/FridayNightMagic2002.java new file mode 100644 index 00000000000..629712e5097 --- /dev/null +++ b/Mage.Sets/src/mage/sets/FridayNightMagic2002.java @@ -0,0 +1,36 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/f02 + */ +public class FridayNightMagic2002 extends ExpansionSet { + + private static final FridayNightMagic2002 instance = new FridayNightMagic2002(); + + public static FridayNightMagic2002 getInstance() { + return instance; + } + + private FridayNightMagic2002() { + super("Friday Night Magic 2002", "F02", ExpansionSet.buildDate(2002, 1, 1), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Albino Troll", 2, Rarity.RARE, mage.cards.a.AlbinoTroll.class)); + cards.add(new SetCardInfo("Aura of Silence", 8, Rarity.RARE, mage.cards.a.AuraOfSilence.class)); + cards.add(new SetCardInfo("Black Knight", 4, Rarity.RARE, mage.cards.b.BlackKnight.class)); + cards.add(new SetCardInfo("Dissipate", 3, Rarity.RARE, mage.cards.d.Dissipate.class)); + cards.add(new SetCardInfo("Drain Life", 7, Rarity.RARE, mage.cards.d.DrainLife.class)); + cards.add(new SetCardInfo("Fireslinger", 6, Rarity.RARE, mage.cards.f.Fireslinger.class)); + cards.add(new SetCardInfo("Forbid", 9, Rarity.RARE, mage.cards.f.Forbid.class)); + cards.add(new SetCardInfo("Mogg Fanatic", 11, Rarity.RARE, mage.cards.m.MoggFanatic.class)); + cards.add(new SetCardInfo("Soltari Priest", 1, Rarity.RARE, mage.cards.s.SoltariPriest.class)); + cards.add(new SetCardInfo("Spike Feeder", 10, Rarity.RARE, mage.cards.s.SpikeFeeder.class)); + cards.add(new SetCardInfo("Wall of Blossoms", 5, Rarity.RARE, mage.cards.w.WallOfBlossoms.class)); + cards.add(new SetCardInfo("White Knight", 12, Rarity.RARE, mage.cards.w.WhiteKnight.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/FridayNightMagic2003.java b/Mage.Sets/src/mage/sets/FridayNightMagic2003.java new file mode 100644 index 00000000000..27804bb87df --- /dev/null +++ b/Mage.Sets/src/mage/sets/FridayNightMagic2003.java @@ -0,0 +1,37 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/f03 + */ +public class FridayNightMagic2003 extends ExpansionSet { + + private static final FridayNightMagic2003 instance = new FridayNightMagic2003(); + + public static FridayNightMagic2003 getInstance() { + return instance; + } + + private FridayNightMagic2003() { + super("Friday Night Magic 2003", "F03", ExpansionSet.buildDate(2003, 1, 1), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Bottle Gnomes", 1, Rarity.RARE, mage.cards.b.BottleGnomes.class)); + cards.add(new SetCardInfo("Capsize", 4, Rarity.RARE, mage.cards.c.Capsize.class)); + cards.add(new SetCardInfo("Crystalline Sliver", 3, Rarity.RARE, mage.cards.c.CrystallineSliver.class)); + cards.add(new SetCardInfo("Disenchant", 13, Rarity.RARE, mage.cards.d.Disenchant.class)); + cards.add(new SetCardInfo("Goblin Bombardment", 6, Rarity.RARE, mage.cards.g.GoblinBombardment.class)); + cards.add(new SetCardInfo("Krosan Tusker", 11, Rarity.RARE, mage.cards.k.KrosanTusker.class)); + cards.add(new SetCardInfo("Muscle Sliver", 2, Rarity.RARE, mage.cards.m.MuscleSliver.class)); + cards.add(new SetCardInfo("Priest of Titania", 5, Rarity.RARE, mage.cards.p.PriestOfTitania.class)); + cards.add(new SetCardInfo("Scragnoth", 7, Rarity.RARE, mage.cards.s.Scragnoth.class)); + cards.add(new SetCardInfo("Smother", 8, Rarity.RARE, mage.cards.s.Smother.class)); + cards.add(new SetCardInfo("Sparksmith", 10, Rarity.RARE, mage.cards.s.Sparksmith.class)); + cards.add(new SetCardInfo("Whipcorder", 9, Rarity.RARE, mage.cards.w.Whipcorder.class)); + cards.add(new SetCardInfo("Withered Wretch", 12, Rarity.RARE, mage.cards.w.WitheredWretch.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/FridayNightMagic2004.java b/Mage.Sets/src/mage/sets/FridayNightMagic2004.java new file mode 100644 index 00000000000..ef4445fec2e --- /dev/null +++ b/Mage.Sets/src/mage/sets/FridayNightMagic2004.java @@ -0,0 +1,36 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/f04 + */ +public class FridayNightMagic2004 extends ExpansionSet { + + private static final FridayNightMagic2004 instance = new FridayNightMagic2004(); + + public static FridayNightMagic2004 getInstance() { + return instance; + } + + private FridayNightMagic2004() { + super("Friday Night Magic 2004", "F04", ExpansionSet.buildDate(2004, 1, 1), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Accumulated Knowledge", 8, Rarity.RARE, mage.cards.a.AccumulatedKnowledge.class)); + cards.add(new SetCardInfo("Avalanche Riders", 9, Rarity.RARE, mage.cards.a.AvalancheRiders.class)); + cards.add(new SetCardInfo("Brainstorm", 12, Rarity.RARE, mage.cards.b.Brainstorm.class)); + cards.add(new SetCardInfo("Carrion Feeder", 6, Rarity.RARE, mage.cards.c.CarrionFeeder.class)); + cards.add(new SetCardInfo("Krosan Warchief", 4, Rarity.RARE, mage.cards.k.KrosanWarchief.class)); + cards.add(new SetCardInfo("Lightning Rift", 5, Rarity.RARE, mage.cards.l.LightningRift.class)); + cards.add(new SetCardInfo("Mother of Runes", 11, Rarity.RARE, mage.cards.m.MotherOfRunes.class)); + cards.add(new SetCardInfo("Reanimate", 10, Rarity.RARE, mage.cards.r.Reanimate.class)); + cards.add(new SetCardInfo("Silver Knight", 3, Rarity.RARE, mage.cards.s.SilverKnight.class)); + cards.add(new SetCardInfo("Slice and Dice", 2, Rarity.RARE, mage.cards.s.SliceAndDice.class)); + cards.add(new SetCardInfo("Treetop Village", 7, Rarity.RARE, mage.cards.t.TreetopVillage.class)); + cards.add(new SetCardInfo("Willbender", 1, Rarity.RARE, mage.cards.w.Willbender.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/FridayNightMagic2005.java b/Mage.Sets/src/mage/sets/FridayNightMagic2005.java new file mode 100644 index 00000000000..3a8077b5413 --- /dev/null +++ b/Mage.Sets/src/mage/sets/FridayNightMagic2005.java @@ -0,0 +1,36 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/f05 + */ +public class FridayNightMagic2005 extends ExpansionSet { + + private static final FridayNightMagic2005 instance = new FridayNightMagic2005(); + + public static FridayNightMagic2005 getInstance() { + return instance; + } + + private FridayNightMagic2005() { + super("Friday Night Magic 2005", "F05", ExpansionSet.buildDate(2005, 1, 1), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Blastoderm", 4, Rarity.RARE, mage.cards.b.Blastoderm.class)); + cards.add(new SetCardInfo("Cabal Therapy", 5, Rarity.RARE, mage.cards.c.CabalTherapy.class)); + cards.add(new SetCardInfo("Circle of Protection: Red", 8, Rarity.RARE, mage.cards.c.CircleOfProtectionRed.class)); + cards.add(new SetCardInfo("Counterspell", 11, Rarity.RARE, mage.cards.c.Counterspell.class)); + cards.add(new SetCardInfo("Duress", 10, Rarity.RARE, mage.cards.d.Duress.class)); + cards.add(new SetCardInfo("Fact or Fiction", 6, Rarity.RARE, mage.cards.f.FactOrFiction.class)); + cards.add(new SetCardInfo("Flametongue Kavu", 3, Rarity.RARE, mage.cards.f.FlametongueKavu.class)); + cards.add(new SetCardInfo("Icy Manipulator", 12, Rarity.RARE, mage.cards.i.IcyManipulator.class)); + cards.add(new SetCardInfo("Juggernaut", 7, Rarity.RARE, mage.cards.j.Juggernaut.class)); + cards.add(new SetCardInfo("Kird Ape", 9, Rarity.RARE, mage.cards.k.KirdApe.class)); + cards.add(new SetCardInfo("Rancor", 1, Rarity.RARE, mage.cards.r.Rancor.class)); + cards.add(new SetCardInfo("Seal of Cleansing", 2, Rarity.RARE, mage.cards.s.SealOfCleansing.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/FridayNightMagic2006.java b/Mage.Sets/src/mage/sets/FridayNightMagic2006.java new file mode 100644 index 00000000000..f2ddb443e2d --- /dev/null +++ b/Mage.Sets/src/mage/sets/FridayNightMagic2006.java @@ -0,0 +1,36 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/f06 + */ +public class FridayNightMagic2006 extends ExpansionSet { + + private static final FridayNightMagic2006 instance = new FridayNightMagic2006(); + + public static FridayNightMagic2006 getInstance() { + return instance; + } + + private FridayNightMagic2006() { + super("Friday Night Magic 2006", "F06", ExpansionSet.buildDate(2006, 1, 1), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Armadillo Cloak", 2, Rarity.RARE, mage.cards.a.ArmadilloCloak.class)); + cards.add(new SetCardInfo("Arrogant Wurm", 10, Rarity.RARE, mage.cards.a.ArrogantWurm.class)); + cards.add(new SetCardInfo("Astral Slide", 9, Rarity.RARE, mage.cards.a.AstralSlide.class)); + cards.add(new SetCardInfo("Chainer's Edict", 7, Rarity.RARE, mage.cards.c.ChainersEdict.class)); + cards.add(new SetCardInfo("Circular Logic", 8, Rarity.RARE, mage.cards.c.CircularLogic.class)); + cards.add(new SetCardInfo("Elves of Deep Shadow", 1, Rarity.RARE, mage.cards.e.ElvesOfDeepShadow.class)); + cards.add(new SetCardInfo("Fire // Ice", "12a", Rarity.RARE, mage.cards.f.FireIce.class)); + cards.add(new SetCardInfo("Goblin Warchief", 5, Rarity.RARE, mage.cards.g.GoblinWarchief.class)); + cards.add(new SetCardInfo("Life // Death", "11a", Rarity.RARE, mage.cards.l.LifeDeath.class)); + cards.add(new SetCardInfo("Lobotomy", 4, Rarity.RARE, mage.cards.l.Lobotomy.class)); + cards.add(new SetCardInfo("Terminate", 3, Rarity.RARE, mage.cards.t.Terminate.class)); + cards.add(new SetCardInfo("Wild Mongrel", 6, Rarity.RARE, mage.cards.w.WildMongrel.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/FridayNightMagic2007.java b/Mage.Sets/src/mage/sets/FridayNightMagic2007.java new file mode 100644 index 00000000000..363c7b133aa --- /dev/null +++ b/Mage.Sets/src/mage/sets/FridayNightMagic2007.java @@ -0,0 +1,36 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/f07 + */ +public class FridayNightMagic2007 extends ExpansionSet { + + private static final FridayNightMagic2007 instance = new FridayNightMagic2007(); + + public static FridayNightMagic2007 getInstance() { + return instance; + } + + private FridayNightMagic2007() { + super("Friday Night Magic 2007", "F07", ExpansionSet.buildDate(2007, 1, 1), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Basking Rootwalla", 4, Rarity.RARE, mage.cards.b.BaskingRootwalla.class)); + cards.add(new SetCardInfo("Cabal Coffers", 10, Rarity.RARE, mage.cards.c.CabalCoffers.class)); + cards.add(new SetCardInfo("Deep Analysis", 2, Rarity.RARE, mage.cards.d.DeepAnalysis.class)); + cards.add(new SetCardInfo("Engineered Plague", 7, Rarity.RARE, mage.cards.e.EngineeredPlague.class)); + cards.add(new SetCardInfo("Firebolt", 1, Rarity.RARE, mage.cards.f.Firebolt.class)); + cards.add(new SetCardInfo("Force Spike", 12, Rarity.RARE, mage.cards.f.ForceSpike.class)); + cards.add(new SetCardInfo("Gerrard's Verdict", 3, Rarity.RARE, mage.cards.g.GerrardsVerdict.class)); + cards.add(new SetCardInfo("Goblin Legionnaire", 6, Rarity.RARE, mage.cards.g.GoblinLegionnaire.class)); + cards.add(new SetCardInfo("Goblin Ringleader", 8, Rarity.RARE, mage.cards.g.GoblinRingleader.class)); + cards.add(new SetCardInfo("Roar of the Wurm", 11, Rarity.RARE, mage.cards.r.RoarOfTheWurm.class)); + cards.add(new SetCardInfo("Wing Shards", 9, Rarity.RARE, mage.cards.w.WingShards.class)); + cards.add(new SetCardInfo("Wonder", 5, Rarity.RARE, mage.cards.w.Wonder.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/FridayNightMagic2008.java b/Mage.Sets/src/mage/sets/FridayNightMagic2008.java new file mode 100644 index 00000000000..55b64cfc815 --- /dev/null +++ b/Mage.Sets/src/mage/sets/FridayNightMagic2008.java @@ -0,0 +1,36 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/f08 + */ +public class FridayNightMagic2008 extends ExpansionSet { + + private static final FridayNightMagic2008 instance = new FridayNightMagic2008(); + + public static FridayNightMagic2008 getInstance() { + return instance; + } + + private FridayNightMagic2008() { + super("Friday Night Magic 2008", "F08", ExpansionSet.buildDate(2008, 1, 1), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Desert", 8, Rarity.RARE, mage.cards.d.Desert.class)); + cards.add(new SetCardInfo("Eternal Witness", 3, Rarity.RARE, mage.cards.e.EternalWitness.class)); + cards.add(new SetCardInfo("Isochron Scepter", 11, Rarity.RARE, mage.cards.i.IsochronScepter.class)); + cards.add(new SetCardInfo("Pendelhaven", 5, Rarity.RARE, mage.cards.p.Pendelhaven.class)); + cards.add(new SetCardInfo("Remand", 1, Rarity.RARE, mage.cards.r.Remand.class)); + cards.add(new SetCardInfo("Resurrection", 6, Rarity.RARE, mage.cards.r.Resurrection.class)); + cards.add(new SetCardInfo("Serrated Arrows", 10, Rarity.RARE, mage.cards.s.SerratedArrows.class)); + cards.add(new SetCardInfo("Shrapnel Blast", 12, Rarity.RARE, mage.cards.s.ShrapnelBlast.class)); + cards.add(new SetCardInfo("Tendrils of Agony", 4, Rarity.RARE, mage.cards.t.TendrilsOfAgony.class)); + cards.add(new SetCardInfo("Thirst for Knowledge", 9, Rarity.RARE, mage.cards.t.ThirstForKnowledge.class)); + cards.add(new SetCardInfo("Tormod's Crypt", 2, Rarity.RARE, mage.cards.t.TormodsCrypt.class)); + cards.add(new SetCardInfo("Wall of Roots", 7, Rarity.RARE, mage.cards.w.WallOfRoots.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/FridayNightMagic2009.java b/Mage.Sets/src/mage/sets/FridayNightMagic2009.java new file mode 100644 index 00000000000..292113a0f44 --- /dev/null +++ b/Mage.Sets/src/mage/sets/FridayNightMagic2009.java @@ -0,0 +1,36 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/f09 + */ +public class FridayNightMagic2009 extends ExpansionSet { + + private static final FridayNightMagic2009 instance = new FridayNightMagic2009(); + + public static FridayNightMagic2009 getInstance() { + return instance; + } + + private FridayNightMagic2009() { + super("Friday Night Magic 2009", "F09", ExpansionSet.buildDate(2009, 1, 1), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Browbeat", 10, Rarity.RARE, mage.cards.b.Browbeat.class)); + cards.add(new SetCardInfo("Kitchen Finks", 3, Rarity.RARE, mage.cards.k.KitchenFinks.class)); + cards.add(new SetCardInfo("Lightning Greaves", 8, Rarity.RARE, mage.cards.l.LightningGreaves.class)); + cards.add(new SetCardInfo("Magma Jet", 1, Rarity.RARE, mage.cards.m.MagmaJet.class)); + cards.add(new SetCardInfo("Merrow Reejerey", 4, Rarity.RARE, mage.cards.m.MerrowReejerey.class)); + cards.add(new SetCardInfo("Mulldrifter", 6, Rarity.RARE, mage.cards.m.Mulldrifter.class)); + cards.add(new SetCardInfo("Murderous Redcap", 7, Rarity.RARE, mage.cards.m.MurderousRedcap.class)); + cards.add(new SetCardInfo("Myr Enforcer", 2, Rarity.RARE, mage.cards.m.MyrEnforcer.class)); + cards.add(new SetCardInfo("Oblivion Ring", 11, Rarity.RARE, mage.cards.o.OblivionRing.class)); + cards.add(new SetCardInfo("Sakura-Tribe Elder", 12, Rarity.RARE, mage.cards.s.SakuraTribeElder.class)); + cards.add(new SetCardInfo("Watchwolf", 9, Rarity.RARE, mage.cards.w.Watchwolf.class)); + cards.add(new SetCardInfo("Wren's Run Vanquisher", 5, Rarity.RARE, mage.cards.w.WrensRunVanquisher.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/FridayNightMagic2010.java b/Mage.Sets/src/mage/sets/FridayNightMagic2010.java new file mode 100644 index 00000000000..d7c9cf9fd88 --- /dev/null +++ b/Mage.Sets/src/mage/sets/FridayNightMagic2010.java @@ -0,0 +1,36 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/f10 + */ +public class FridayNightMagic2010 extends ExpansionSet { + + private static final FridayNightMagic2010 instance = new FridayNightMagic2010(); + + public static FridayNightMagic2010 getInstance() { + return instance; + } + + private FridayNightMagic2010() { + super("Friday Night Magic 2010", "F10", ExpansionSet.buildDate(2010, 1, 1), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Anathemancer", 7, Rarity.RARE, mage.cards.a.Anathemancer.class)); + cards.add(new SetCardInfo("Ancient Ziggurat", 3, Rarity.RARE, mage.cards.a.AncientZiggurat.class)); + cards.add(new SetCardInfo("Bloodbraid Elf", 4, Rarity.RARE, mage.cards.b.BloodbraidElf.class)); + cards.add(new SetCardInfo("Cloudpost", 5, Rarity.RARE, mage.cards.c.Cloudpost.class)); + cards.add(new SetCardInfo("Elvish Visionary", 6, Rarity.RARE, mage.cards.e.ElvishVisionary.class)); + cards.add(new SetCardInfo("Gatekeeper of Malakir", 11, Rarity.RARE, mage.cards.g.GatekeeperOfMalakir.class)); + cards.add(new SetCardInfo("Ghostly Prison", 2, Rarity.RARE, mage.cards.g.GhostlyPrison.class)); + cards.add(new SetCardInfo("Krosan Grip", 8, Rarity.RARE, mage.cards.k.KrosanGrip.class)); + cards.add(new SetCardInfo("Qasali Pridemage", 9, Rarity.RARE, mage.cards.q.QasaliPridemage.class)); + cards.add(new SetCardInfo("Rift Bolt", 10, Rarity.RARE, mage.cards.r.RiftBolt.class)); + cards.add(new SetCardInfo("Tidehollow Sculler", 1, Rarity.RARE, mage.cards.t.TidehollowSculler.class)); + cards.add(new SetCardInfo("Wild Nacatl", 12, Rarity.RARE, mage.cards.w.WildNacatl.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/FridayNightMagic2011.java b/Mage.Sets/src/mage/sets/FridayNightMagic2011.java new file mode 100644 index 00000000000..7aa843f3e20 --- /dev/null +++ b/Mage.Sets/src/mage/sets/FridayNightMagic2011.java @@ -0,0 +1,36 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/f11 + */ +public class FridayNightMagic2011 extends ExpansionSet { + + private static final FridayNightMagic2011 instance = new FridayNightMagic2011(); + + public static FridayNightMagic2011 getInstance() { + return instance; + } + + private FridayNightMagic2011() { + super("Friday Night Magic 2011", "F11", ExpansionSet.buildDate(2011, 1, 1), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Artisan of Kozilek", 4, Rarity.RARE, mage.cards.a.ArtisanOfKozilek.class)); + cards.add(new SetCardInfo("Contagion Clasp", 10, Rarity.RARE, mage.cards.c.ContagionClasp.class)); + cards.add(new SetCardInfo("Cultivate", 8, Rarity.RARE, mage.cards.c.Cultivate.class)); + cards.add(new SetCardInfo("Everflowing Chalice", 1, Rarity.RARE, mage.cards.e.EverflowingChalice.class)); + cards.add(new SetCardInfo("Go for the Throat", 11, Rarity.RARE, mage.cards.g.GoForTheThroat.class)); + cards.add(new SetCardInfo("Jace's Ingenuity", 7, Rarity.RARE, mage.cards.j.JacesIngenuity.class)); + cards.add(new SetCardInfo("Rhox War Monk", 6, Rarity.RARE, mage.cards.r.RhoxWarMonk.class)); + cards.add(new SetCardInfo("Savage Lands", 12, Rarity.RARE, mage.cards.s.SavageLands.class)); + cards.add(new SetCardInfo("Spellstutter Sprite", 2, Rarity.RARE, mage.cards.s.SpellstutterSprite.class)); + cards.add(new SetCardInfo("Squadron Hawk", 5, Rarity.RARE, mage.cards.s.SquadronHawk.class)); + cards.add(new SetCardInfo("Teetering Peaks", 9, Rarity.RARE, mage.cards.t.TeeteringPeaks.class)); + cards.add(new SetCardInfo("Wall of Omens", 3, Rarity.RARE, mage.cards.w.WallOfOmens.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/FridayNightMagic2012.java b/Mage.Sets/src/mage/sets/FridayNightMagic2012.java new file mode 100644 index 00000000000..05e608171e5 --- /dev/null +++ b/Mage.Sets/src/mage/sets/FridayNightMagic2012.java @@ -0,0 +1,36 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/f12 + */ +public class FridayNightMagic2012 extends ExpansionSet { + + private static final FridayNightMagic2012 instance = new FridayNightMagic2012(); + + public static FridayNightMagic2012 getInstance() { + return instance; + } + + private FridayNightMagic2012() { + super("Friday Night Magic 2012", "F12", ExpansionSet.buildDate(2012, 1, 1), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Acidic Slime", 6, Rarity.RARE, mage.cards.a.AcidicSlime.class)); + cards.add(new SetCardInfo("Ancient Grudge", 5, Rarity.RARE, mage.cards.a.AncientGrudge.class)); + cards.add(new SetCardInfo("Avacyn's Pilgrim", 8, Rarity.RARE, mage.cards.a.AvacynsPilgrim.class)); + cards.add(new SetCardInfo("Despise", 2, Rarity.RARE, mage.cards.d.Despise.class)); + cards.add(new SetCardInfo("Dismember", 4, Rarity.RARE, mage.cards.d.Dismember.class)); + cards.add(new SetCardInfo("Evolving Wilds", 10, Rarity.RARE, mage.cards.e.EvolvingWilds.class)); + cards.add(new SetCardInfo("Forbidden Alchemy", 7, Rarity.RARE, mage.cards.f.ForbiddenAlchemy.class)); + cards.add(new SetCardInfo("Gitaxian Probe", 12, Rarity.RARE, mage.cards.g.GitaxianProbe.class)); + cards.add(new SetCardInfo("Glistener Elf", 1, Rarity.RARE, mage.cards.g.GlistenerElf.class)); + cards.add(new SetCardInfo("Lingering Souls", 9, Rarity.RARE, mage.cards.l.LingeringSouls.class)); + cards.add(new SetCardInfo("Pillar of Flame", 11, Rarity.RARE, mage.cards.p.PillarOfFlame.class)); + cards.add(new SetCardInfo("Tectonic Edge", 3, Rarity.RARE, mage.cards.t.TectonicEdge.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/FridayNightMagic2013.java b/Mage.Sets/src/mage/sets/FridayNightMagic2013.java new file mode 100644 index 00000000000..3f0d2a5ff2b --- /dev/null +++ b/Mage.Sets/src/mage/sets/FridayNightMagic2013.java @@ -0,0 +1,36 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/f13 + */ +public class FridayNightMagic2013 extends ExpansionSet { + + private static final FridayNightMagic2013 instance = new FridayNightMagic2013(); + + public static FridayNightMagic2013 getInstance() { + return instance; + } + + private FridayNightMagic2013() { + super("Friday Night Magic 2013", "F13", ExpansionSet.buildDate(2013, 1, 1), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Call of the Conclave", 4, Rarity.RARE, mage.cards.c.CallOfTheConclave.class)); + cards.add(new SetCardInfo("Dimir Charm", 8, Rarity.RARE, mage.cards.d.DimirCharm.class)); + cards.add(new SetCardInfo("Experiment One", 9, Rarity.RARE, mage.cards.e.ExperimentOne.class)); + cards.add(new SetCardInfo("Farseek", 3, Rarity.RARE, mage.cards.f.Farseek.class)); + cards.add(new SetCardInfo("Ghor-Clan Rampager", 10, Rarity.RARE, mage.cards.g.GhorClanRampager.class)); + cards.add(new SetCardInfo("Grisly Salvage", 11, Rarity.RARE, mage.cards.g.GrislySalvage.class)); + cards.add(new SetCardInfo("Izzet Charm", 6, Rarity.RARE, mage.cards.i.IzzetCharm.class)); + cards.add(new SetCardInfo("Judge's Familiar", 5, Rarity.RARE, mage.cards.j.JudgesFamiliar.class)); + cards.add(new SetCardInfo("Rakdos Cackler", 7, Rarity.RARE, mage.cards.r.RakdosCackler.class)); + cards.add(new SetCardInfo("Reliquary Tower", 2, Rarity.RARE, mage.cards.r.ReliquaryTower.class)); + cards.add(new SetCardInfo("Searing Spear", 1, Rarity.RARE, mage.cards.s.SearingSpear.class)); + cards.add(new SetCardInfo("Sin Collector", 12, Rarity.RARE, mage.cards.s.SinCollector.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/FridayNightMagic2014.java b/Mage.Sets/src/mage/sets/FridayNightMagic2014.java new file mode 100644 index 00000000000..076ed676ee1 --- /dev/null +++ b/Mage.Sets/src/mage/sets/FridayNightMagic2014.java @@ -0,0 +1,36 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/f14 + */ +public class FridayNightMagic2014 extends ExpansionSet { + + private static final FridayNightMagic2014 instance = new FridayNightMagic2014(); + + public static FridayNightMagic2014 getInstance() { + return instance; + } + + private FridayNightMagic2014() { + super("Friday Night Magic 2014", "F14", ExpansionSet.buildDate(2014, 1, 1), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Banisher Priest", 3, Rarity.RARE, mage.cards.b.BanisherPriest.class)); + cards.add(new SetCardInfo("Banishing Light", 9, Rarity.RARE, mage.cards.b.BanishingLight.class)); + cards.add(new SetCardInfo("Bile Blight", 8, Rarity.RARE, mage.cards.b.BileBlight.class)); + cards.add(new SetCardInfo("Brain Maggot", 11, Rarity.RARE, mage.cards.b.BrainMaggot.class)); + cards.add(new SetCardInfo("Dissolve", 6, Rarity.RARE, mage.cards.d.Dissolve.class)); + cards.add(new SetCardInfo("Elvish Mystic", 2, Rarity.RARE, mage.cards.e.ElvishMystic.class)); + cards.add(new SetCardInfo("Encroaching Wastes", 4, Rarity.RARE, mage.cards.e.EncroachingWastes.class)); + cards.add(new SetCardInfo("Fanatic of Xenagos", 10, Rarity.RARE, mage.cards.f.FanaticOfXenagos.class)); + cards.add(new SetCardInfo("Magma Spray", 7, Rarity.RARE, mage.cards.m.MagmaSpray.class)); + cards.add(new SetCardInfo("Stoke the Flames", 12, Rarity.RARE, mage.cards.s.StokeTheFlames.class)); + cards.add(new SetCardInfo("Tormented Hero", 5, Rarity.RARE, mage.cards.t.TormentedHero.class)); + cards.add(new SetCardInfo("Warleader's Helix", 1, Rarity.RARE, mage.cards.w.WarleadersHelix.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/FridayNightMagic2015.java b/Mage.Sets/src/mage/sets/FridayNightMagic2015.java new file mode 100644 index 00000000000..ed3386f6da5 --- /dev/null +++ b/Mage.Sets/src/mage/sets/FridayNightMagic2015.java @@ -0,0 +1,36 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/f15 + */ +public class FridayNightMagic2015 extends ExpansionSet { + + private static final FridayNightMagic2015 instance = new FridayNightMagic2015(); + + public static FridayNightMagic2015 getInstance() { + return instance; + } + + private FridayNightMagic2015() { + super("Friday Night Magic 2015", "F15", ExpansionSet.buildDate(2015, 1, 1), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Abzan Beastmaster", 5, Rarity.RARE, mage.cards.a.AbzanBeastmaster.class)); + cards.add(new SetCardInfo("Anticipate", 12, Rarity.RARE, mage.cards.a.Anticipate.class)); + cards.add(new SetCardInfo("Disdainful Stroke", 2, Rarity.RARE, mage.cards.d.DisdainfulStroke.class)); + cards.add(new SetCardInfo("Frenzied Goblin", 1, Rarity.RARE, mage.cards.f.FrenziedGoblin.class)); + cards.add(new SetCardInfo("Frost Walker", 6, Rarity.RARE, mage.cards.f.FrostWalker.class)); + cards.add(new SetCardInfo("Hordeling Outburst", 3, Rarity.RARE, mage.cards.h.HordelingOutburst.class)); + cards.add(new SetCardInfo("Orator of Ojutai", 9, Rarity.RARE, mage.cards.o.OratorOfOjutai.class)); + cards.add(new SetCardInfo("Path to Exile", 7, Rarity.RARE, mage.cards.p.PathToExile.class)); + cards.add(new SetCardInfo("Roast", 11, Rarity.RARE, mage.cards.r.Roast.class)); + cards.add(new SetCardInfo("Serum Visions", 8, Rarity.RARE, mage.cards.s.SerumVisions.class)); + cards.add(new SetCardInfo("Suspension Field", 4, Rarity.RARE, mage.cards.s.SuspensionField.class)); + cards.add(new SetCardInfo("Ultimate Price", 10, Rarity.RARE, mage.cards.u.UltimatePrice.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/FridayNightMagic2016.java b/Mage.Sets/src/mage/sets/FridayNightMagic2016.java new file mode 100644 index 00000000000..a9b13382b35 --- /dev/null +++ b/Mage.Sets/src/mage/sets/FridayNightMagic2016.java @@ -0,0 +1,36 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/f16 + */ +public class FridayNightMagic2016 extends ExpansionSet { + + private static final FridayNightMagic2016 instance = new FridayNightMagic2016(); + + public static FridayNightMagic2016 getInstance() { + return instance; + } + + private FridayNightMagic2016() { + super("Friday Night Magic 2016", "F16", ExpansionSet.buildDate(2016, 1, 1), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Blighted Fen", 4, Rarity.RARE, mage.cards.b.BlightedFen.class)); + cards.add(new SetCardInfo("Call the Bloodline", 12, Rarity.RARE, mage.cards.c.CallTheBloodline.class)); + cards.add(new SetCardInfo("Clash of Wills", 2, Rarity.RARE, mage.cards.c.ClashOfWills.class)); + cards.add(new SetCardInfo("Crumbling Vestige", 8, Rarity.RARE, mage.cards.c.CrumblingVestige.class)); + cards.add(new SetCardInfo("Fiery Temper", 11, Rarity.RARE, mage.cards.f.FieryTemper.class)); + cards.add(new SetCardInfo("Flaying Tendrils", 9, Rarity.RARE, mage.cards.f.FlayingTendrils.class)); + cards.add(new SetCardInfo("Goblin Warchief", 5, Rarity.RARE, mage.cards.g.GoblinWarchief.class)); + cards.add(new SetCardInfo("Nissa's Pilgrimage", 1, Rarity.RARE, mage.cards.n.NissasPilgrimage.class)); + cards.add(new SetCardInfo("Rise from the Tides", 10, Rarity.RARE, mage.cards.r.RiseFromTheTides.class)); + cards.add(new SetCardInfo("Smash to Smithereens", 3, Rarity.RARE, mage.cards.s.SmashToSmithereens.class)); + cards.add(new SetCardInfo("Spatial Contortion", 7, Rarity.RARE, mage.cards.s.SpatialContortion.class)); + cards.add(new SetCardInfo("Sylvan Scrying", 6, Rarity.RARE, mage.cards.s.SylvanScrying.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/FridayNightMagic2017.java b/Mage.Sets/src/mage/sets/FridayNightMagic2017.java new file mode 100644 index 00000000000..6429073dfa5 --- /dev/null +++ b/Mage.Sets/src/mage/sets/FridayNightMagic2017.java @@ -0,0 +1,33 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/f17 + */ +public class FridayNightMagic2017 extends ExpansionSet { + + private static final FridayNightMagic2017 instance = new FridayNightMagic2017(); + + public static FridayNightMagic2017 getInstance() { + return instance; + } + + private FridayNightMagic2017() { + super("Friday Night Magic 2017", "F17", ExpansionSet.buildDate(2017, 1, 1), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Aether Hub", 6, Rarity.RARE, mage.cards.a.AetherHub.class)); + cards.add(new SetCardInfo("Fatal Push", 8, Rarity.RARE, mage.cards.f.FatalPush.class)); + cards.add(new SetCardInfo("Fortune's Favor", 2, Rarity.RARE, mage.cards.f.FortunesFavor.class)); + cards.add(new SetCardInfo("Incendiary Flow", 3, Rarity.RARE, mage.cards.i.IncendiaryFlow.class)); + cards.add(new SetCardInfo("Noose Constrictor", 1, Rarity.RARE, mage.cards.n.NooseConstrictor.class)); + cards.add(new SetCardInfo("Renegade Rallier", 9, Rarity.RARE, mage.cards.r.RenegadeRallier.class)); + cards.add(new SetCardInfo("Reverse Engineer", 7, Rarity.RARE, mage.cards.r.ReverseEngineer.class)); + cards.add(new SetCardInfo("Servo Exhibition", 4, Rarity.RARE, mage.cards.s.ServoExhibition.class)); + cards.add(new SetCardInfo("Unlicensed Disintegration", 5, Rarity.RARE, mage.cards.u.UnlicensedDisintegration.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/FromTheVaultTransform.java b/Mage.Sets/src/mage/sets/FromTheVaultTransform.java index 5fb2ccb42bf..47f7159343c 100644 --- a/Mage.Sets/src/mage/sets/FromTheVaultTransform.java +++ b/Mage.Sets/src/mage/sets/FromTheVaultTransform.java @@ -20,34 +20,34 @@ public final class FromTheVaultTransform extends ExpansionSet { super("From the Vault: Transform", "V17", ExpansionSet.buildDate(2017, 11, 24), SetType.SUPPLEMENTAL); this.hasBasicLands = false; - cards.add(new SetCardInfo("Archangel Avacyn", "1a", Rarity.MYTHIC, mage.cards.a.ArchangelAvacyn.class)); - cards.add(new SetCardInfo("Avacyn, the Purifier", "1b", Rarity.MYTHIC, mage.cards.a.AvacynThePurifier.class)); - cards.add(new SetCardInfo("Arguel's Blood Fast", "2a", Rarity.MYTHIC, mage.cards.a.ArguelsBloodFast.class)); - cards.add(new SetCardInfo("Temple of Aclazotz", "2b", Rarity.MYTHIC, mage.cards.t.TempleOfAclazotz.class)); - cards.add(new SetCardInfo("Arlinn Kord", "3a", Rarity.MYTHIC, mage.cards.a.ArlinnKord.class)); - cards.add(new SetCardInfo("Arlinn, Embraced by the Moon", "3b", Rarity.MYTHIC, mage.cards.a.ArlinnEmbracedByTheMoon.class)); - cards.add(new SetCardInfo("Bloodline Keeper", "4a", Rarity.MYTHIC, mage.cards.b.BloodlineKeeper.class)); - cards.add(new SetCardInfo("Lord of Lineage", "4b", Rarity.MYTHIC, mage.cards.l.LordOfLineage.class)); + cards.add(new SetCardInfo("Archangel Avacyn", 1, Rarity.MYTHIC, mage.cards.a.ArchangelAvacyn.class)); + cards.add(new SetCardInfo("Avacyn, the Purifier", 1, Rarity.MYTHIC, mage.cards.a.AvacynThePurifier.class)); + cards.add(new SetCardInfo("Arguel's Blood Fast", 2, Rarity.MYTHIC, mage.cards.a.ArguelsBloodFast.class)); + cards.add(new SetCardInfo("Temple of Aclazotz", 2, Rarity.MYTHIC, mage.cards.t.TempleOfAclazotz.class)); + cards.add(new SetCardInfo("Arlinn Kord", 3, Rarity.MYTHIC, mage.cards.a.ArlinnKord.class)); + cards.add(new SetCardInfo("Arlinn, Embraced by the Moon", 3, Rarity.MYTHIC, mage.cards.a.ArlinnEmbracedByTheMoon.class)); + cards.add(new SetCardInfo("Bloodline Keeper", 4, Rarity.MYTHIC, mage.cards.b.BloodlineKeeper.class)); + cards.add(new SetCardInfo("Lord of Lineage", 4, Rarity.MYTHIC, mage.cards.l.LordOfLineage.class)); cards.add(new SetCardInfo("Bruna, the Fading Light", "5a", Rarity.MYTHIC, mage.cards.b.BrunaTheFadingLight.class)); - cards.add(new SetCardInfo("Brisela, Voice of Nightmares", "5b", Rarity.MYTHIC, mage.cards.b.BriselaVoiceOfNightmares.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Chandra, Fire of Kaladesh", "6a", Rarity.MYTHIC, mage.cards.c.ChandraFireOfKaladesh.class)); - cards.add(new SetCardInfo("Chandra, Roaring Flame", "6b", Rarity.MYTHIC, mage.cards.c.ChandraRoaringFlame.class)); - cards.add(new SetCardInfo("Delver of Secrets", "7a", Rarity.MYTHIC, mage.cards.d.DelverOfSecrets.class)); - cards.add(new SetCardInfo("Insectile Aberration", "7b", Rarity.MYTHIC, mage.cards.i.InsectileAberration.class)); - cards.add(new SetCardInfo("Elbrus, the Binding Blade", "8a", Rarity.MYTHIC, mage.cards.e.ElbrusTheBindingBlade.class)); - cards.add(new SetCardInfo("Withengar Unbound", "8b", Rarity.MYTHIC, mage.cards.w.WithengarUnbound.class)); - cards.add(new SetCardInfo("Garruk Relentless", "9a", Rarity.MYTHIC, mage.cards.g.GarrukRelentless.class)); - cards.add(new SetCardInfo("Garruk, the Veil-Cursed", "9b", Rarity.MYTHIC, mage.cards.g.GarrukTheVeilCursed.class)); - cards.add(new SetCardInfo("Gisela, the Broken Blade", "10a", Rarity.MYTHIC, mage.cards.g.GiselaTheBrokenBlade.class)); - cards.add(new SetCardInfo("Huntmaster of the Fells", "11a", Rarity.MYTHIC, mage.cards.h.HuntmasterOfTheFells.class)); - cards.add(new SetCardInfo("Ravager of the Fells", "11b", Rarity.MYTHIC, mage.cards.r.RavagerOfTheFells.class)); - cards.add(new SetCardInfo("Jace, Vryn's Prodigy", "12a", Rarity.MYTHIC, mage.cards.j.JaceVrynsProdigy.class)); - cards.add(new SetCardInfo("Jace, Telepath Unbound", "12b", Rarity.MYTHIC, mage.cards.j.JaceTelepathUnbound.class)); - cards.add(new SetCardInfo("Kytheon, Hero of Akros", "13a", Rarity.MYTHIC, mage.cards.k.KytheonHeroOfAkros.class)); - cards.add(new SetCardInfo("Gideon, Battle-Forged", "13b", Rarity.MYTHIC, mage.cards.g.GideonBattleForged.class)); - cards.add(new SetCardInfo("Liliana, Heretical Healer", "14a", Rarity.MYTHIC, mage.cards.l.LilianaHereticalHealer.class)); - cards.add(new SetCardInfo("Liliana, Defiant Necromancer", "14b", Rarity.MYTHIC, mage.cards.l.LilianaDefiantNecromancer.class)); - cards.add(new SetCardInfo("Nissa, Vastwood Seer", "15a", Rarity.MYTHIC, mage.cards.n.NissaVastwoodSeer.class)); - cards.add(new SetCardInfo("Nissa, Sage Animist", "15b", Rarity.MYTHIC, mage.cards.n.NissaSageAnimist.class)); + cards.add(new SetCardInfo("Brisela, Voice of Nightmares", "5b", Rarity.MYTHIC, mage.cards.b.BriselaVoiceOfNightmares.class)); + cards.add(new SetCardInfo("Chandra, Fire of Kaladesh", 6, Rarity.MYTHIC, mage.cards.c.ChandraFireOfKaladesh.class)); + cards.add(new SetCardInfo("Chandra, Roaring Flame", 6, Rarity.MYTHIC, mage.cards.c.ChandraRoaringFlame.class)); + cards.add(new SetCardInfo("Delver of Secrets", 7, Rarity.MYTHIC, mage.cards.d.DelverOfSecrets.class)); + cards.add(new SetCardInfo("Insectile Aberration", 7, Rarity.MYTHIC, mage.cards.i.InsectileAberration.class)); + cards.add(new SetCardInfo("Elbrus, the Binding Blade", 8, Rarity.MYTHIC, mage.cards.e.ElbrusTheBindingBlade.class)); + cards.add(new SetCardInfo("Withengar Unbound", 8, Rarity.MYTHIC, mage.cards.w.WithengarUnbound.class)); + cards.add(new SetCardInfo("Garruk Relentless", 9, Rarity.MYTHIC, mage.cards.g.GarrukRelentless.class)); + cards.add(new SetCardInfo("Garruk, the Veil-Cursed", 9, Rarity.MYTHIC, mage.cards.g.GarrukTheVeilCursed.class)); + cards.add(new SetCardInfo("Gisela, the Broken Blade", 10, Rarity.MYTHIC, mage.cards.g.GiselaTheBrokenBlade.class)); + cards.add(new SetCardInfo("Huntmaster of the Fells", 11, Rarity.MYTHIC, mage.cards.h.HuntmasterOfTheFells.class)); + cards.add(new SetCardInfo("Ravager of the Fells", 11, Rarity.MYTHIC, mage.cards.r.RavagerOfTheFells.class)); + cards.add(new SetCardInfo("Jace, Vryn's Prodigy", 12, Rarity.MYTHIC, mage.cards.j.JaceVrynsProdigy.class)); + cards.add(new SetCardInfo("Jace, Telepath Unbound", 12, Rarity.MYTHIC, mage.cards.j.JaceTelepathUnbound.class)); + cards.add(new SetCardInfo("Kytheon, Hero of Akros", 13, Rarity.MYTHIC, mage.cards.k.KytheonHeroOfAkros.class)); + cards.add(new SetCardInfo("Gideon, Battle-Forged", 13, Rarity.MYTHIC, mage.cards.g.GideonBattleForged.class)); + cards.add(new SetCardInfo("Liliana, Heretical Healer", 14, Rarity.MYTHIC, mage.cards.l.LilianaHereticalHealer.class)); + cards.add(new SetCardInfo("Liliana, Defiant Necromancer", 14, Rarity.MYTHIC, mage.cards.l.LilianaDefiantNecromancer.class)); + cards.add(new SetCardInfo("Nissa, Vastwood Seer", 15, Rarity.MYTHIC, mage.cards.n.NissaVastwoodSeer.class)); + cards.add(new SetCardInfo("Nissa, Sage Animist", 15, Rarity.MYTHIC, mage.cards.n.NissaSageAnimist.class)); } } diff --git a/Mage.Sets/src/mage/sets/GRNRavnicaWeekend.java b/Mage.Sets/src/mage/sets/GRNRavnicaWeekend.java new file mode 100644 index 00000000000..c620e0cd297 --- /dev/null +++ b/Mage.Sets/src/mage/sets/GRNRavnicaWeekend.java @@ -0,0 +1,34 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/prwk + */ +public class GRNRavnicaWeekend extends ExpansionSet { + + private static final GRNRavnicaWeekend instance = new GRNRavnicaWeekend(); + + public static GRNRavnicaWeekend getInstance() { + return instance; + } + + private GRNRavnicaWeekend() { + super("GRN Ravnica Weekend", "PRWK", ExpansionSet.buildDate(2018, 10, 5), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = true; + + cards.add(new SetCardInfo("Forest", "A06", Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", "A09", Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", "A01", Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", "A03", Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", "A04", Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", "A07", Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plains", "A08", Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plains", "A10", Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", "A02", Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", "A05", Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + } +} diff --git a/Mage.Sets/src/mage/sets/GameDay.java b/Mage.Sets/src/mage/sets/GameDay.java deleted file mode 100644 index df57b04118e..00000000000 --- a/Mage.Sets/src/mage/sets/GameDay.java +++ /dev/null @@ -1,87 +0,0 @@ - -package mage.sets; - -import mage.cards.ExpansionSet; -import mage.constants.Rarity; -import mage.constants.SetType; - -/** - * - * @author fireshoes - */ -public final class GameDay extends ExpansionSet { - - private static final GameDay instance = new GameDay(); - - public static GameDay getInstance() { - return instance; - } - - private GameDay() { - super("Game Day", "MGDC", ExpansionSet.buildDate(2011, 6, 17), SetType.PROMOTIONAL); - this.hasBoosters = false; - this.hasBasicLands = false; - cards.add(new SetCardInfo("Abrade", 62, Rarity.UNCOMMON, mage.cards.a.Abrade.class)); - cards.add(new SetCardInfo("Adorned Pouncer", 61, Rarity.RARE, mage.cards.a.AdornedPouncer.class)); - cards.add(new SetCardInfo("Anguished Unmaking", 52, Rarity.RARE, mage.cards.a.AnguishedUnmaking.class)); - cards.add(new SetCardInfo("Black Sun's Zenith", 7, Rarity.RARE, mage.cards.b.BlackSunsZenith.class)); - cards.add(new SetCardInfo("Chief Engineer", 40, Rarity.RARE, mage.cards.c.ChiefEngineer.class)); - cards.add(new SetCardInfo("Conclave Naturalists", 45, Rarity.UNCOMMON, mage.cards.c.ConclaveNaturalists.class)); - cards.add(new SetCardInfo("Cryptborn Horror", 22, Rarity.RARE, mage.cards.c.CryptbornHorror.class)); - cards.add(new SetCardInfo("Cultivator of Blades", 56, Rarity.RARE, mage.cards.c.CultivatorOfBlades.class)); - cards.add(new SetCardInfo("Dictate of Kruphix", 35, Rarity.RARE, mage.cards.d.DictateOfKruphix.class)); - cards.add(new SetCardInfo("Diregraf Ghoul", 12, Rarity.UNCOMMON, mage.cards.d.DiregrafGhoul.class)); - cards.add(new SetCardInfo("Dryad Militant", 23, Rarity.UNCOMMON, mage.cards.d.DryadMilitant.class)); - cards.add(new SetCardInfo("Dungrove Elder", 11, Rarity.RARE, mage.cards.d.DungroveElder.class)); - cards.add(new SetCardInfo("Elite Inquisitor", 13, Rarity.RARE, mage.cards.e.EliteInquisitor.class)); - cards.add(new SetCardInfo("Essence Extraction", 55, Rarity.UNCOMMON, mage.cards.e.EssenceExtraction.class)); - cards.add(new SetCardInfo("Firemane Avenger", 24, Rarity.RARE, mage.cards.f.FiremaneAvenger.class)); - cards.add(new SetCardInfo("Glorybringer", 60, Rarity.RARE, mage.cards.g.Glorybringer.class)); - cards.add(new SetCardInfo("Goblin Diplomats", 29, Rarity.RARE, mage.cards.g.GoblinDiplomats.class)); - cards.add(new SetCardInfo("Hall of Triumph", 36, Rarity.RARE, mage.cards.h.HallOfTriumph.class)); - cards.add(new SetCardInfo("Heir of the Wilds", 37, Rarity.UNCOMMON, mage.cards.h.HeirOfTheWilds.class)); - cards.add(new SetCardInfo("Heron's Grace Champion", 54, Rarity.RARE, mage.cards.h.HeronsGraceChampion.class)); - cards.add(new SetCardInfo("Hive Stirrings", 28, Rarity.COMMON, mage.cards.h.HiveStirrings.class)); - cards.add(new SetCardInfo("Immolating Glare", 49, Rarity.UNCOMMON, mage.cards.i.ImmolatingGlare.class)); - cards.add(new SetCardInfo("Incorrigible Youths", 51, Rarity.UNCOMMON, mage.cards.i.IncorrigibleYouths.class)); - cards.add(new SetCardInfo("Jori En, Ruin Diver", 50, Rarity.RARE, mage.cards.j.JoriEnRuinDiver.class)); - cards.add(new SetCardInfo("Killing Wave", 19, Rarity.RARE, mage.cards.k.KillingWave.class)); - cards.add(new SetCardInfo("Kiora's Follower", 33, Rarity.UNCOMMON, mage.cards.k.KiorasFollower.class)); - cards.add(new SetCardInfo("Languish", 46, Rarity.RARE, mage.cards.l.Languish.class)); - cards.add(new SetCardInfo("Latch Seeker", 18, Rarity.UNCOMMON, mage.cards.l.LatchSeeker.class)); - cards.add(new SetCardInfo("Liliana's Specter", 2, Rarity.COMMON, mage.cards.l.LilianasSpecter.class)); - cards.add(new SetCardInfo("Magmaquake", 20, Rarity.RARE, mage.cards.m.Magmaquake.class)); - cards.add(new SetCardInfo("Mardu Shadowspear", 41, Rarity.UNCOMMON, mage.cards.m.MarduShadowspear.class)); - cards.add(new SetCardInfo("Melek, Izzet Paragon", 26, Rarity.RARE, mage.cards.m.MelekIzzetParagon.class)); - cards.add(new SetCardInfo("Memnite", 4, Rarity.UNCOMMON, mage.cards.m.Memnite.class)); - cards.add(new SetCardInfo("Mitotic Slime", 3, Rarity.RARE, mage.cards.m.MitoticSlime.class)); - cards.add(new SetCardInfo("Mwonvuli Beast Tracker", 21, Rarity.UNCOMMON, mage.cards.m.MwonvuliBeastTracker.class)); - cards.add(new SetCardInfo("Myr Superion", 8, Rarity.RARE, mage.cards.m.MyrSuperion.class)); - cards.add(new SetCardInfo("Nighthowler", 31, Rarity.RARE, mage.cards.n.Nighthowler.class)); - cards.add(new SetCardInfo("Pain Seer", 32, Rarity.RARE, mage.cards.p.PainSeer.class)); - cards.add(new SetCardInfo("Phalanx Leader", 30, Rarity.UNCOMMON, mage.cards.p.PhalanxLeader.class)); - cards.add(new SetCardInfo("Priest of Urabrask", 9, Rarity.UNCOMMON, mage.cards.p.PriestOfUrabrask.class)); - cards.add(new SetCardInfo("Pristine Talisman", 17, Rarity.COMMON, mage.cards.p.PristineTalisman.class)); - cards.add(new SetCardInfo("Radiant Flames", 48, Rarity.RARE, mage.cards.r.RadiantFlames.class)); - cards.add(new SetCardInfo("Reclamation Sage", 39, Rarity.UNCOMMON, mage.cards.r.ReclamationSage.class)); - cards.add(new SetCardInfo("Reya Dawnbringer", 1, Rarity.RARE, mage.cards.r.ReyaDawnbringer.class)); - cards.add(new SetCardInfo("Scaleguard Sentinels", 44, Rarity.UNCOMMON, mage.cards.s.ScaleguardSentinels.class)); - cards.add(new SetCardInfo("Squelching Leeches", 34, Rarity.UNCOMMON, mage.cards.s.SquelchingLeeches.class)); - cards.add(new SetCardInfo("Stasis Snare", 47, Rarity.UNCOMMON, mage.cards.s.StasisSnare.class)); - cards.add(new SetCardInfo("Stormblood Berserker", 10, Rarity.UNCOMMON, mage.cards.s.StormbloodBerserker.class)); - cards.add(new SetCardInfo("Strangleroot Geist", 15, Rarity.UNCOMMON, mage.cards.s.StranglerootGeist.class)); - cards.add(new SetCardInfo("Supplant Form", 42, Rarity.RARE, mage.cards.s.SupplantForm.class)); - cards.add(new SetCardInfo("Suture Priest", 16, Rarity.COMMON, mage.cards.s.SuturePriest.class)); - cards.add(new SetCardInfo("Tempered Steel", 5, Rarity.RARE, mage.cards.t.TemperedSteel.class)); - cards.add(new SetCardInfo("Thunderbreak Regent", 43, Rarity.RARE, mage.cards.t.ThunderbreakRegent.class)); - cards.add(new SetCardInfo("Treasure Mage", 6, Rarity.UNCOMMON, mage.cards.t.TreasureMage.class)); - cards.add(new SetCardInfo("Trophy Mage", 57, Rarity.UNCOMMON, mage.cards.t.TrophyMage.class)); - cards.add(new SetCardInfo("Trostani's Summoner", 27, Rarity.UNCOMMON, mage.cards.t.TrostanisSummoner.class)); - cards.add(new SetCardInfo("Trueheart Duelist", 59, Rarity.UNCOMMON, mage.cards.t.TrueheartDuelist.class)); - cards.add(new SetCardInfo("Unsubstantiate", 53, Rarity.UNCOMMON, mage.cards.u.Unsubstantiate.class)); - cards.add(new SetCardInfo("Utter End", 38, Rarity.RARE, mage.cards.u.UtterEnd.class)); - cards.add(new SetCardInfo("Yahenni's Expertise", 58, Rarity.RARE, mage.cards.y.YahennisExpertise.class)); - cards.add(new SetCardInfo("Zameck Guildmage", 25, Rarity.UNCOMMON, mage.cards.z.ZameckGuildmage.class)); - cards.add(new SetCardInfo("Zombie Apocalypse", 14, Rarity.RARE, mage.cards.z.ZombieApocalypse.class)); - } -} diff --git a/Mage.Sets/src/mage/sets/GameNight2019.java b/Mage.Sets/src/mage/sets/GameNight2019.java index ece39af0803..3ae313fd40a 100644 --- a/Mage.Sets/src/mage/sets/GameNight2019.java +++ b/Mage.Sets/src/mage/sets/GameNight2019.java @@ -5,9 +5,10 @@ import mage.constants.Rarity; import mage.constants.SetType; /** + * https://scryfall.com/sets/gn2 * @author TheElk801 */ -public final class GameNight2019 extends ExpansionSet { +public class GameNight2019 extends ExpansionSet { private static final GameNight2019 instance = new GameNight2019(); @@ -17,12 +18,72 @@ public final class GameNight2019 extends ExpansionSet { private GameNight2019() { super("Game Night 2019", "GN2", ExpansionSet.buildDate(2019, 11, 15), SetType.SUPPLEMENTAL); - this.hasBasicLands = false; // TODO: change when spoiled + this.hasBoosters = false; + this.hasBasicLands = true; + cards.add(new SetCardInfo("Accursed Horde", 26, Rarity.UNCOMMON, mage.cards.a.AccursedHorde.class)); + cards.add(new SetCardInfo("Akoum Hellkite", 36, Rarity.RARE, mage.cards.a.AkoumHellkite.class)); + cards.add(new SetCardInfo("Aven Wind Mage", 16, Rarity.COMMON, mage.cards.a.AvenWindMage.class)); + cards.add(new SetCardInfo("Brute Strength", 37, Rarity.COMMON, mage.cards.b.BruteStrength.class)); cards.add(new SetCardInfo("Calculating Lich", 3, Rarity.MYTHIC, mage.cards.c.CalculatingLich.class)); + cards.add(new SetCardInfo("Carrion Screecher", 27, Rarity.COMMON, mage.cards.c.CarrionScreecher.class)); + cards.add(new SetCardInfo("Claustrophobia", 17, Rarity.COMMON, mage.cards.c.Claustrophobia.class)); + cards.add(new SetCardInfo("Consul's Lieutenant", 6, Rarity.UNCOMMON, mage.cards.c.ConsulsLieutenant.class)); + cards.add(new SetCardInfo("Crested Herdcaller", 46, Rarity.UNCOMMON, mage.cards.c.CrestedHerdcaller.class)); + cards.add(new SetCardInfo("Crow of Dark Tidings", 28, Rarity.COMMON, mage.cards.c.CrowOfDarkTidings.class)); + cards.add(new SetCardInfo("Cryptic Serpent", 18, Rarity.UNCOMMON, mage.cards.c.CrypticSerpent.class)); + cards.add(new SetCardInfo("Decision Paralysis", 19, Rarity.COMMON, mage.cards.d.DecisionParalysis.class)); + cards.add(new SetCardInfo("Destructive Tampering", 38, Rarity.COMMON, mage.cards.d.DestructiveTampering.class)); + cards.add(new SetCardInfo("Dragon Egg", 39, Rarity.UNCOMMON, mage.cards.d.DragonEgg.class)); + cards.add(new SetCardInfo("Dramatic Reversal", 20, Rarity.COMMON, mage.cards.d.DramaticReversal.class)); cards.add(new SetCardInfo("Earthshaker Giant", 5, Rarity.MYTHIC, mage.cards.e.EarthshakerGiant.class)); + cards.add(new SetCardInfo("Engulf the Shore", 21, Rarity.RARE, mage.cards.e.EngulfTheShore.class)); + cards.add(new SetCardInfo("Fiend Binder", 7, Rarity.COMMON, mage.cards.f.FiendBinder.class)); cards.add(new SetCardInfo("Fiendish Duo", 4, Rarity.MYTHIC, mage.cards.f.FiendishDuo.class)); + cards.add(new SetCardInfo("Forest", 63, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", 64, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Galestrike", 22, Rarity.UNCOMMON, mage.cards.g.Galestrike.class)); + cards.add(new SetCardInfo("Gavony Unhallowed", 29, Rarity.COMMON, mage.cards.g.GavonyUnhallowed.class)); + cards.add(new SetCardInfo("Ghalta, Primal Hunger", 47, Rarity.RARE, mage.cards.g.GhaltaPrimalHunger.class)); + cards.add(new SetCardInfo("Grasp of Darkness", 30, Rarity.UNCOMMON, mage.cards.g.GraspOfDarkness.class)); + cards.add(new SetCardInfo("Grazing Whiptail", 48, Rarity.COMMON, mage.cards.g.GrazingWhiptail.class)); cards.add(new SetCardInfo("Highcliff Felidar", 1, Rarity.MYTHIC, mage.cards.h.HighcliffFelidar.class)); + cards.add(new SetCardInfo("Howling Golem", 54, Rarity.UNCOMMON, mage.cards.h.HowlingGolem.class)); + cards.add(new SetCardInfo("Island", 57, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", 58, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Kargan Dragonrider", 40, Rarity.COMMON, mage.cards.k.KarganDragonrider.class)); + cards.add(new SetCardInfo("Kytheon's Irregulars", 8, Rarity.RARE, mage.cards.k.KytheonsIrregulars.class)); + cards.add(new SetCardInfo("Lathliss, Dragon Queen", 41, Rarity.RARE, mage.cards.l.LathlissDragonQueen.class)); + cards.add(new SetCardInfo("Lightning Strike", 42, Rarity.COMMON, mage.cards.l.LightningStrike.class)); + cards.add(new SetCardInfo("Liliana's Mastery", 31, Rarity.RARE, mage.cards.l.LilianasMastery.class)); + cards.add(new SetCardInfo("Lord of the Accursed", 32, Rarity.UNCOMMON, mage.cards.l.LordOfTheAccursed.class)); + cards.add(new SetCardInfo("Mighty Leap", 9, Rarity.COMMON, mage.cards.m.MightyLeap.class)); + cards.add(new SetCardInfo("Mountain", 61, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", 62, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Patron of the Valiant", 10, Rarity.UNCOMMON, mage.cards.p.PatronOfTheValiant.class)); + cards.add(new SetCardInfo("Plains", 55, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plains", 56, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Ranging Raptors", 49, Rarity.UNCOMMON, mage.cards.r.RangingRaptors.class)); + cards.add(new SetCardInfo("Relief Captain", 11, Rarity.UNCOMMON, mage.cards.r.ReliefCaptain.class)); + cards.add(new SetCardInfo("Ripjaw Raptor", 50, Rarity.RARE, mage.cards.r.RipjawRaptor.class)); + cards.add(new SetCardInfo("Rise from the Grave", 33, Rarity.UNCOMMON, mage.cards.r.RiseFromTheGrave.class)); + cards.add(new SetCardInfo("Rise from the Tides", 23, Rarity.UNCOMMON, mage.cards.r.RiseFromTheTides.class)); + cards.add(new SetCardInfo("River's Rebuke", 24, Rarity.RARE, mage.cards.r.RiversRebuke.class)); + cards.add(new SetCardInfo("Salvager of Secrets", 25, Rarity.COMMON, mage.cards.s.SalvagerOfSecrets.class)); + cards.add(new SetCardInfo("Sparktongue Dragon", 43, Rarity.COMMON, mage.cards.s.SparktongueDragon.class)); cards.add(new SetCardInfo("Sphinx of Enlightenment", 2, Rarity.MYTHIC, mage.cards.s.SphinxOfEnlightenment.class)); - } + cards.add(new SetCardInfo("Spidery Grasp", 51, Rarity.COMMON, mage.cards.s.SpideryGrasp.class)); + cards.add(new SetCardInfo("Steppe Glider", 12, Rarity.UNCOMMON, mage.cards.s.SteppeGlider.class)); + cards.add(new SetCardInfo("Swamp", 59, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", 60, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Take Vengeance", 13, Rarity.COMMON, mage.cards.t.TakeVengeance.class)); + cards.add(new SetCardInfo("Tattered Mummy", 34, Rarity.COMMON, mage.cards.t.TatteredMummy.class)); + cards.add(new SetCardInfo("Thunderherd Migration", 52, Rarity.UNCOMMON, mage.cards.t.ThunderherdMigration.class)); + cards.add(new SetCardInfo("Thundering Spineback", 53, Rarity.UNCOMMON, mage.cards.t.ThunderingSpineback.class)); + cards.add(new SetCardInfo("Topan Freeblade", 14, Rarity.COMMON, mage.cards.t.TopanFreeblade.class)); + cards.add(new SetCardInfo("Torgaar, Famine Incarnate", 35, Rarity.RARE, mage.cards.t.TorgaarFamineIncarnate.class)); + cards.add(new SetCardInfo("Voldaren Duelist", 44, Rarity.COMMON, mage.cards.v.VoldarenDuelist.class)); + cards.add(new SetCardInfo("Zealot of the God-Pharaoh", 45, Rarity.COMMON, mage.cards.z.ZealotOfTheGodPharaoh.class)); + cards.add(new SetCardInfo("Zetalpa, Primal Dawn", 15, Rarity.RARE, mage.cards.z.ZetalpaPrimalDawn.class)); + } } diff --git a/Mage.Sets/src/mage/sets/GatecrashPromos.java b/Mage.Sets/src/mage/sets/GatecrashPromos.java new file mode 100644 index 00000000000..4147b782ef9 --- /dev/null +++ b/Mage.Sets/src/mage/sets/GatecrashPromos.java @@ -0,0 +1,33 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/pgtc + */ +public class GatecrashPromos extends ExpansionSet { + + private static final GatecrashPromos instance = new GatecrashPromos(); + + public static GatecrashPromos getInstance() { + return instance; + } + + private GatecrashPromos() { + super("Gatecrash Promos", "PGTC", ExpansionSet.buildDate(2013, 1, 26), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Consuming Aberration", 152, Rarity.RARE, mage.cards.c.ConsumingAberration.class)); + cards.add(new SetCardInfo("Fathom Mage", 162, Rarity.RARE, mage.cards.f.FathomMage.class)); + cards.add(new SetCardInfo("Firemane Avenger", 163, Rarity.RARE, mage.cards.f.FiremaneAvenger.class)); + cards.add(new SetCardInfo("Foundry Champion", 165, Rarity.RARE, mage.cards.f.FoundryChampion.class)); + cards.add(new SetCardInfo("Nightveil Specter", "*222", Rarity.RARE, mage.cards.n.NightveilSpecter.class)); + cards.add(new SetCardInfo("Rubblehulk", 191, Rarity.RARE, mage.cards.r.Rubblehulk.class)); + cards.add(new SetCardInfo("Skarrg Goliath", 133, Rarity.RARE, mage.cards.s.SkarrgGoliath.class)); + cards.add(new SetCardInfo("Treasury Thrull", 201, Rarity.RARE, mage.cards.t.TreasuryThrull.class)); + cards.add(new SetCardInfo("Zameck Guildmage", 209, Rarity.UNCOMMON, mage.cards.z.ZameckGuildmage.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/Gateway2006.java b/Mage.Sets/src/mage/sets/Gateway2006.java new file mode 100644 index 00000000000..e21c8b79821 --- /dev/null +++ b/Mage.Sets/src/mage/sets/Gateway2006.java @@ -0,0 +1,27 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/pgtw + */ +public class Gateway2006 extends ExpansionSet { + + private static final Gateway2006 instance = new Gateway2006(); + + public static Gateway2006 getInstance() { + return instance; + } + + private Gateway2006() { + super("Gateway 2006", "PGTW", ExpansionSet.buildDate(2006, 1, 1), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Fiery Temper", 3, Rarity.RARE, mage.cards.f.FieryTemper.class)); + cards.add(new SetCardInfo("Icatian Javelineers", 2, Rarity.RARE, mage.cards.i.IcatianJavelineers.class)); + cards.add(new SetCardInfo("Wood Elves", 1, Rarity.RARE, mage.cards.w.WoodElves.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/Gateway2007.java b/Mage.Sets/src/mage/sets/Gateway2007.java new file mode 100644 index 00000000000..8b5863db688 --- /dev/null +++ b/Mage.Sets/src/mage/sets/Gateway2007.java @@ -0,0 +1,33 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/pg07 + */ +public class Gateway2007 extends ExpansionSet { + + private static final Gateway2007 instance = new Gateway2007(); + + public static Gateway2007 getInstance() { + return instance; + } + + private Gateway2007() { + super("Gateway 2007", "PG07", ExpansionSet.buildDate(2007, 1, 1), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Boomerang", 4, Rarity.RARE, mage.cards.b.Boomerang.class)); + cards.add(new SetCardInfo("Calciderm", 5, Rarity.RARE, mage.cards.c.Calciderm.class)); + cards.add(new SetCardInfo("Dauntless Dourbark", 12, Rarity.RARE, mage.cards.d.DauntlessDourbark.class)); + cards.add(new SetCardInfo("Llanowar Elves", 9, Rarity.RARE, mage.cards.l.LlanowarElves.class)); + cards.add(new SetCardInfo("Mind Stone", 11, Rarity.RARE, mage.cards.m.MindStone.class)); + cards.add(new SetCardInfo("Mogg Fanatic", 10, Rarity.RARE, mage.cards.m.MoggFanatic.class)); + cards.add(new SetCardInfo("Reckless Wurm", 6, Rarity.RARE, mage.cards.r.RecklessWurm.class)); + cards.add(new SetCardInfo("Yixlid Jailer", 7, Rarity.RARE, mage.cards.y.YixlidJailer.class)); + cards.add(new SetCardInfo("Zoetic Cavern", 8, Rarity.RARE, mage.cards.z.ZoeticCavern.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/Gateway2008.java b/Mage.Sets/src/mage/sets/Gateway2008.java new file mode 100644 index 00000000000..c13eade07ed --- /dev/null +++ b/Mage.Sets/src/mage/sets/Gateway2008.java @@ -0,0 +1,32 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/pg08 + */ +public class Gateway2008 extends ExpansionSet { + + private static final Gateway2008 instance = new Gateway2008(); + + public static Gateway2008 getInstance() { + return instance; + } + + private Gateway2008() { + super("Gateway 2008", "PG08", ExpansionSet.buildDate(2008, 1, 1), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Boggart Ram-Gang", 17, Rarity.RARE, mage.cards.b.BoggartRamGang.class)); + cards.add(new SetCardInfo("Cenn's Tactician", 14, Rarity.RARE, mage.cards.c.CennsTactician.class)); + cards.add(new SetCardInfo("Duergar Hedge-Mage", 19, Rarity.RARE, mage.cards.d.DuergarHedgeMage.class)); + cards.add(new SetCardInfo("Gravedigger", 16, Rarity.RARE, mage.cards.g.Gravedigger.class)); + cards.add(new SetCardInfo("Lava Axe", 13, Rarity.RARE, mage.cards.l.LavaAxe.class)); + cards.add(new SetCardInfo("Oona's Blackguard", 15, Rarity.RARE, mage.cards.o.OonasBlackguard.class)); + cards.add(new SetCardInfo("Selkie Hedge-Mage", 20, Rarity.RARE, mage.cards.s.SelkieHedgeMage.class)); + cards.add(new SetCardInfo("Wilt-Leaf Cavaliers", 18, Rarity.RARE, mage.cards.w.WiltLeafCavaliers.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/GiftPack2017.java b/Mage.Sets/src/mage/sets/GiftPack2017.java new file mode 100644 index 00000000000..f7f9cd27cdb --- /dev/null +++ b/Mage.Sets/src/mage/sets/GiftPack2017.java @@ -0,0 +1,29 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/g17 + */ +public class GiftPack2017 extends ExpansionSet { + + private static final GiftPack2017 instance = new GiftPack2017(); + + public static GiftPack2017 getInstance() { + return instance; + } + + private GiftPack2017() { + super("Gift Pack 2017", "G17", ExpansionSet.buildDate(2017, 10, 20), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = true; + + cards.add(new SetCardInfo("Forest", 5, Rarity.LAND, mage.cards.basiclands.Forest.class)); + cards.add(new SetCardInfo("Island", 2, Rarity.LAND, mage.cards.basiclands.Island.class)); + cards.add(new SetCardInfo("Mountain", 4, Rarity.LAND, mage.cards.basiclands.Mountain.class)); + cards.add(new SetCardInfo("Plains", 1, Rarity.LAND, mage.cards.basiclands.Plains.class)); + cards.add(new SetCardInfo("Swamp", 3, Rarity.LAND, mage.cards.basiclands.Swamp.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/GrandPrixPromos.java b/Mage.Sets/src/mage/sets/GrandPrixPromos.java index b3362b716fa..5bd3865dd58 100644 --- a/Mage.Sets/src/mage/sets/GrandPrixPromos.java +++ b/Mage.Sets/src/mage/sets/GrandPrixPromos.java @@ -17,7 +17,7 @@ public final class GrandPrixPromos extends ExpansionSet { } private GrandPrixPromos() { - super("Grand Prix Promos", "GPX", ExpansionSet.buildDate(2011, 6, 17), SetType.PROMOTIONAL); + super("Grand Prix Promos", "PGPX", ExpansionSet.buildDate(2011, 6, 17), SetType.PROMOTIONAL); this.hasBoosters = false; this.hasBasicLands = true; diff --git a/Mage.Sets/src/mage/sets/GuildsOfRavnicaPromos.java b/Mage.Sets/src/mage/sets/GuildsOfRavnicaPromos.java new file mode 100644 index 00000000000..6405aa0050c --- /dev/null +++ b/Mage.Sets/src/mage/sets/GuildsOfRavnicaPromos.java @@ -0,0 +1,91 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/pgrn + */ +public class GuildsOfRavnicaPromos extends ExpansionSet { + + private static final GuildsOfRavnicaPromos instance = new GuildsOfRavnicaPromos(); + + public static GuildsOfRavnicaPromos getInstance() { + return instance; + } + + private GuildsOfRavnicaPromos() { + super("Guilds of Ravnica Promos", "PGRN", ExpansionSet.buildDate(2018, 10, 5), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Arclight Phoenix", "91p", Rarity.MYTHIC, mage.cards.a.ArclightPhoenix.class)); + cards.add(new SetCardInfo("Assassin's Trophy", "152p", Rarity.RARE, mage.cards.a.AssassinsTrophy.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Assassin's Trophy", "152s", Rarity.RARE, mage.cards.a.AssassinsTrophy.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Assure // Assemble", "221s", Rarity.RARE, mage.cards.a.AssureAssemble.class)); + cards.add(new SetCardInfo("Aurelia, Exemplar of Justice", "153p", Rarity.MYTHIC, mage.cards.a.AureliaExemplarOfJustice.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Aurelia, Exemplar of Justice", "153s", Rarity.MYTHIC, mage.cards.a.AureliaExemplarOfJustice.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Beast Whisperer", "123p", Rarity.RARE, mage.cards.b.BeastWhisperer.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Beast Whisperer", "123s", Rarity.RARE, mage.cards.b.BeastWhisperer.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Blood Operative", "63s", Rarity.RARE, mage.cards.b.BloodOperative.class)); + cards.add(new SetCardInfo("Boros Challenger", 156, Rarity.UNCOMMON, mage.cards.b.BorosChallenger.class)); + cards.add(new SetCardInfo("Bounty of Might", "124s", Rarity.RARE, mage.cards.b.BountyOfMight.class)); + cards.add(new SetCardInfo("Chromatic Lantern", "233p", Rarity.RARE, mage.cards.c.ChromaticLantern.class)); + cards.add(new SetCardInfo("Citywide Bust", "4s", Rarity.RARE, mage.cards.c.CitywideBust.class)); + cards.add(new SetCardInfo("Conclave Tribunal", 6, Rarity.UNCOMMON, mage.cards.c.ConclaveTribunal.class)); + cards.add(new SetCardInfo("Connive // Concoct", "222s", Rarity.RARE, mage.cards.c.ConniveConcoct.class)); + cards.add(new SetCardInfo("Dawn of Hope", "8s", Rarity.RARE, mage.cards.d.DawnOfHope.class)); + cards.add(new SetCardInfo("Deafening Clarion", "165s", Rarity.RARE, mage.cards.d.DeafeningClarion.class)); + cards.add(new SetCardInfo("Doom Whisperer", "69p", Rarity.MYTHIC, mage.cards.d.DoomWhisperer.class)); + cards.add(new SetCardInfo("Emmara, Soul of the Accord", 168, Rarity.RARE, mage.cards.e.EmmaraSoulOfTheAccord.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Emmara, Soul of the Accord", "168s", Rarity.RARE, mage.cards.e.EmmaraSoulOfTheAccord.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Etrata, the Silencer", "170s", Rarity.RARE, mage.cards.e.EtrataTheSilencer.class)); + cards.add(new SetCardInfo("Expansion // Explosion", "224p", Rarity.RARE, mage.cards.e.ExpansionExplosion.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Expansion // Explosion", "224s", Rarity.RARE, mage.cards.e.ExpansionExplosion.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Experimental Frenzy", "99p", Rarity.RARE, mage.cards.e.ExperimentalFrenzy.class)); + cards.add(new SetCardInfo("Find // Finality", "225s", Rarity.RARE, mage.cards.f.FindFinality.class)); + cards.add(new SetCardInfo("Firemind's Research", 171, Rarity.RARE, mage.cards.f.FiremindsResearch.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Firemind's Research", "171s", Rarity.RARE, mage.cards.f.FiremindsResearch.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Gruesome Menagerie", "71s", Rarity.RARE, mage.cards.g.GruesomeMenagerie.class)); + cards.add(new SetCardInfo("Hatchery Spider", "132s", Rarity.RARE, mage.cards.h.HatcherySpider.class)); + cards.add(new SetCardInfo("Ionize", "179p", Rarity.RARE, mage.cards.i.Ionize.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Ionize", "179s", Rarity.RARE, mage.cards.i.Ionize.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Izoni, Thousand-Eyed", "180s", Rarity.RARE, mage.cards.i.IzoniThousandEyed.class)); + cards.add(new SetCardInfo("Knight of Autumn", "183p", Rarity.RARE, mage.cards.k.KnightOfAutumn.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Knight of Autumn", "183s", Rarity.RARE, mage.cards.k.KnightOfAutumn.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Lazav, the Multifarious", "184s", Rarity.MYTHIC, mage.cards.l.LazavTheMultifarious.class)); + cards.add(new SetCardInfo("Legion Warboss", "109s", Rarity.RARE, mage.cards.l.LegionWarboss.class)); + cards.add(new SetCardInfo("Light of the Legion", "19s", Rarity.RARE, mage.cards.l.LightOfTheLegion.class)); + cards.add(new SetCardInfo("Mausoleum Secrets", "75s", Rarity.RARE, mage.cards.m.MausoleumSecrets.class)); + cards.add(new SetCardInfo("Midnight Reaper", "77p", Rarity.RARE, mage.cards.m.MidnightReaper.class)); + cards.add(new SetCardInfo("Mission Briefing", "44s", Rarity.RARE, mage.cards.m.MissionBriefing.class)); + cards.add(new SetCardInfo("Narcomoeba", "47s", Rarity.RARE, mage.cards.n.Narcomoeba.class)); + cards.add(new SetCardInfo("Necrotic Wound", 79, Rarity.UNCOMMON, mage.cards.n.NecroticWound.class)); + cards.add(new SetCardInfo("Niv-Mizzet, Parun", "192p", Rarity.RARE, mage.cards.n.NivMizzetParun.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Niv-Mizzet, Parun", "192s", Rarity.RARE, mage.cards.n.NivMizzetParun.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Overgrown Tomb", "253p", Rarity.RARE, mage.cards.o.OvergrownTomb.class)); + cards.add(new SetCardInfo("Quasiduplicate", "51s", Rarity.RARE, mage.cards.q.Quasiduplicate.class)); + cards.add(new SetCardInfo("Response // Resurgence", "229s", Rarity.RARE, mage.cards.r.ResponseResurgence.class)); + cards.add(new SetCardInfo("Risk Factor", "113p", Rarity.RARE, mage.cards.r.RiskFactor.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Risk Factor", "113s", Rarity.RARE, mage.cards.r.RiskFactor.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Ritual of Soot", "84s", Rarity.RARE, mage.cards.r.RitualOfSoot.class)); + cards.add(new SetCardInfo("Runaway Steam-Kin", "115p", Rarity.RARE, mage.cards.r.RunawaySteamKin.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Runaway Steam-Kin", "115s", Rarity.RARE, mage.cards.r.RunawaySteamKin.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Sacred Foundry", "254p", Rarity.RARE, mage.cards.s.SacredFoundry.class)); + cards.add(new SetCardInfo("Sinister Sabotage", 54, Rarity.UNCOMMON, mage.cards.s.SinisterSabotage.class)); + cards.add(new SetCardInfo("Steam Vents", "257p", Rarity.RARE, mage.cards.s.SteamVents.class)); + cards.add(new SetCardInfo("Swiftblade Vindicator", "203s", Rarity.RARE, mage.cards.s.SwiftbladeVindicator.class)); + cards.add(new SetCardInfo("Tajic, Legion's Edge", "204s", Rarity.RARE, mage.cards.t.TajicLegionsEdge.class)); + cards.add(new SetCardInfo("Temple Garden", "258p", Rarity.RARE, mage.cards.t.TempleGarden.class)); + cards.add(new SetCardInfo("Thief of Sanity", "205p", Rarity.RARE, mage.cards.t.ThiefOfSanity.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Thief of Sanity", "205s", Rarity.RARE, mage.cards.t.ThiefOfSanity.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Thought Erasure", 206, Rarity.UNCOMMON, mage.cards.t.ThoughtErasure.class)); + cards.add(new SetCardInfo("Thousand-Year Storm", "207s", Rarity.MYTHIC, mage.cards.t.ThousandYearStorm.class)); + cards.add(new SetCardInfo("Trostani Discordant", "208s", Rarity.MYTHIC, mage.cards.t.TrostaniDiscordant.class)); + cards.add(new SetCardInfo("Underrealm Lich", "211s", Rarity.MYTHIC, mage.cards.u.UnderrealmLich.class)); + cards.add(new SetCardInfo("Venerated Loxodon", "30s", Rarity.RARE, mage.cards.v.VeneratedLoxodon.class)); + cards.add(new SetCardInfo("Vivid Revival", "148s", Rarity.RARE, mage.cards.v.VividRevival.class)); + cards.add(new SetCardInfo("Watery Grave", "259p", Rarity.RARE, mage.cards.w.WateryGrave.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/Guru.java b/Mage.Sets/src/mage/sets/Guru.java index f3739fd241e..9e6c5f115a4 100644 --- a/Mage.Sets/src/mage/sets/Guru.java +++ b/Mage.Sets/src/mage/sets/Guru.java @@ -4,6 +4,9 @@ import mage.cards.ExpansionSet; import mage.constants.Rarity; import mage.constants.SetType; +/** + * https://scryfall.com/sets/pgru + */ public final class Guru extends ExpansionSet { private static final Guru instance = new Guru(); @@ -13,11 +16,14 @@ public final class Guru extends ExpansionSet { } private Guru() { - super("Guru", "GUR", ExpansionSet.buildDate(1990, 1, 2), SetType.PROMOTIONAL); - cards.add(new SetCardInfo("Forest", 1, Rarity.LAND, mage.cards.basiclands.Forest.class)); + super("Guru", "PGRU", ExpansionSet.buildDate(1990, 1, 2), SetType.PROMOTIONAL); + this.hasBasicLands = true; + this.hasBoosters = false; + + cards.add(new SetCardInfo("Forest", 5, Rarity.LAND, mage.cards.basiclands.Forest.class)); cards.add(new SetCardInfo("Island", 2, Rarity.LAND, mage.cards.basiclands.Island.class)); - cards.add(new SetCardInfo("Mountain", 3, Rarity.LAND, mage.cards.basiclands.Mountain.class)); - cards.add(new SetCardInfo("Plains", 4, Rarity.LAND, mage.cards.basiclands.Plains.class)); - cards.add(new SetCardInfo("Swamp", 5, Rarity.LAND, mage.cards.basiclands.Swamp.class)); + cards.add(new SetCardInfo("Mountain", 4, Rarity.LAND, mage.cards.basiclands.Mountain.class)); + cards.add(new SetCardInfo("Plains", 1, Rarity.LAND, mage.cards.basiclands.Plains.class)); + cards.add(new SetCardInfo("Swamp", 3, Rarity.LAND, mage.cards.basiclands.Swamp.class)); } } diff --git a/Mage.Sets/src/mage/sets/HASCONPromo2017.java b/Mage.Sets/src/mage/sets/HASCONPromo2017.java index be06cda1e15..8620d6024bd 100644 --- a/Mage.Sets/src/mage/sets/HASCONPromo2017.java +++ b/Mage.Sets/src/mage/sets/HASCONPromo2017.java @@ -20,8 +20,8 @@ public final class HASCONPromo2017 extends ExpansionSet { super("HASCON Promo 2017", "H17", ExpansionSet.buildDate(2017, 9, 8), SetType.JOKESET); this.hasBasicLands = false; - cards.add(new ExpansionSet.SetCardInfo("Grimlock, Dinobot Leader", "1a", Rarity.MYTHIC, mage.cards.g.GrimlockDinobotLeader.class)); - cards.add(new ExpansionSet.SetCardInfo("Grimlock, Ferocious King", "1b", Rarity.MYTHIC, mage.cards.g.GrimlockFerociousKing.class)); + cards.add(new ExpansionSet.SetCardInfo("Grimlock, Dinobot Leader", 1, Rarity.MYTHIC, mage.cards.g.GrimlockDinobotLeader.class)); + cards.add(new ExpansionSet.SetCardInfo("Grimlock, Ferocious King", 1, Rarity.MYTHIC, mage.cards.g.GrimlockFerociousKing.class)); cards.add(new ExpansionSet.SetCardInfo("Sword of Dungeons & Dragons", 3, Rarity.MYTHIC, mage.cards.s.SwordOfDungeonsAndDragons.class)); } } diff --git a/Mage.Sets/src/mage/sets/HachetteUK.java b/Mage.Sets/src/mage/sets/HachetteUK.java new file mode 100644 index 00000000000..d5ec98b5b7f --- /dev/null +++ b/Mage.Sets/src/mage/sets/HachetteUK.java @@ -0,0 +1,86 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/phuk + */ +public class HachetteUK extends ExpansionSet { + + private static final HachetteUK instance = new HachetteUK(); + + public static HachetteUK getInstance() { + return instance; + } + + private HachetteUK() { + super("Hachette UK", "PHUK", ExpansionSet.buildDate(2006, 1, 1), SetType.SUPPLEMENTAL); + this.hasBoosters = false; + this.hasBasicLands = true; + + cards.add(new SetCardInfo("Betrayal of Flesh", 52, Rarity.UNCOMMON, mage.cards.b.BetrayalOfFlesh.class)); + // Card not implemented + // cards.add(new SetCardInfo("Carrion Rats", 40, Rarity.COMMON, mage.cards.c.CarrionRats.class, NON_FULL_USE_VARIOUS)); + // cards.add(new SetCardInfo("Carrion Rats", 41, Rarity.COMMON, mage.cards.c.CarrionRats.class, NON_FULL_USE_VARIOUS)); + // cards.add(new SetCardInfo("Carrion Rats", 53, Rarity.COMMON, mage.cards.c.CarrionRats.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Chittering Rats", 5, Rarity.COMMON, mage.cards.c.ChitteringRats.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Chittering Rats", 19, Rarity.COMMON, mage.cards.c.ChitteringRats.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Chittering Rats", 54, Rarity.COMMON, mage.cards.c.ChitteringRats.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Crippling Fatigue", 6, Rarity.COMMON, mage.cards.c.CripplingFatigue.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Crippling Fatigue", 30, Rarity.COMMON, mage.cards.c.CripplingFatigue.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Crypt Rats", 28, Rarity.UNCOMMON, mage.cards.c.CryptRats.class)); + cards.add(new SetCardInfo("Diabolic Tutor", 51, Rarity.UNCOMMON, mage.cards.d.DiabolicTutor.class)); + cards.add(new SetCardInfo("Dirge of Dread", 18, Rarity.COMMON, mage.cards.d.DirgeOfDread.class)); + cards.add(new SetCardInfo("Dirty Wererat", 7, Rarity.COMMON, mage.cards.d.DirtyWererat.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Dirty Wererat", 31, Rarity.COMMON, mage.cards.d.DirtyWererat.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Gravestorm", 37, Rarity.RARE, mage.cards.g.Gravestorm.class)); + cards.add(new SetCardInfo("Infernal Contract", 13, Rarity.RARE, mage.cards.i.InfernalContract.class)); + cards.add(new SetCardInfo("Larceny", 49, Rarity.RARE, mage.cards.l.Larceny.class)); + cards.add(new SetCardInfo("Marrow-Gnawer", 1, Rarity.RARE, mage.cards.m.MarrowGnawer.class)); + cards.add(new SetCardInfo("Nezumi Bone-Reader", 50, Rarity.UNCOMMON, mage.cards.n.NezumiBoneReader.class)); + cards.add(new SetCardInfo("Nezumi Cutthroat", 17, Rarity.COMMON, mage.cards.n.NezumiCutthroat.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Nezumi Cutthroat", 29, Rarity.COMMON, mage.cards.n.NezumiCutthroat.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Nezumi Graverobber", 38, Rarity.UNCOMMON, mage.cards.n.NezumiGraverobber.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Nezumi Graverobber", 39, Rarity.UNCOMMON, mage.cards.n.NezumiGraverobber.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Nocturnal Raid", 3, Rarity.UNCOMMON, mage.cards.n.NocturnalRaid.class)); + cards.add(new SetCardInfo("Patron of the Nezumi", 25, Rarity.RARE, mage.cards.p.PatronOfTheNezumi.class)); + cards.add(new SetCardInfo("Rats' Feast", 44, Rarity.COMMON, mage.cards.r.RatsFeast.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Rats' Feast", 55, Rarity.COMMON, mage.cards.r.RatsFeast.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Sever Soul", 15, Rarity.UNCOMMON, mage.cards.s.SeverSoul.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Sever Soul", 16, Rarity.UNCOMMON, mage.cards.s.SeverSoul.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Skullsnatcher", 4, Rarity.COMMON, mage.cards.s.Skullsnatcher.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Skullsnatcher", 42, Rarity.COMMON, mage.cards.s.Skullsnatcher.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Skullsnatcher", 43, Rarity.COMMON, mage.cards.s.Skullsnatcher.class, NON_FULL_USE_VARIOUS)); + // Card not implemented + // cards.add(new SetCardInfo("Suppress", 26, Rarity.UNCOMMON, mage.cards.s.Suppress.class)); + cards.add(new SetCardInfo("Swamp", 8, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", 9, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", 10, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", 11, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", 12, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", 20, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", 21, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", 22, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", 23, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", 24, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", 32, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", 33, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", 34, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", 35, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", 36, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", 45, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", 46, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", 47, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", 48, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", 56, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", 57, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", 58, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", 59, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", 60, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swarm of Rats", 2, Rarity.UNCOMMON, mage.cards.s.SwarmOfRats.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swarm of Rats", 14, Rarity.UNCOMMON, mage.cards.s.SwarmOfRats.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swarm of Rats", 27, Rarity.UNCOMMON, mage.cards.s.SwarmOfRats.class, NON_FULL_USE_VARIOUS)); + } +} diff --git a/Mage.Sets/src/mage/sets/HarperPrismBookPromos.java b/Mage.Sets/src/mage/sets/HarperPrismBookPromos.java new file mode 100644 index 00000000000..f2894f81d0c --- /dev/null +++ b/Mage.Sets/src/mage/sets/HarperPrismBookPromos.java @@ -0,0 +1,30 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/phpr + */ +public class HarperPrismBookPromos extends ExpansionSet { + + private static final HarperPrismBookPromos instance = new HarperPrismBookPromos(); + + public static HarperPrismBookPromos getInstance() { + return instance; + } + + private HarperPrismBookPromos() { + super("HarperPrism Book Promos", "PHPR", ExpansionSet.buildDate(1994, 9, 1), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Arena", 1, Rarity.RARE, mage.cards.a.Arena.class)); + cards.add(new SetCardInfo("Giant Badger", 4, Rarity.RARE, mage.cards.g.GiantBadger.class)); + cards.add(new SetCardInfo("Mana Crypt", 5, Rarity.RARE, mage.cards.m.ManaCrypt.class)); + // TODO: Card not implemented + //cards.add(new SetCardInfo("Sewers of Estark", 2, Rarity.RARE, mage.cards.s.SewersOfEstark.class)) + cards.add(new SetCardInfo("Windseeker Centaur", 3, Rarity.RARE, mage.cards.w.WindseekerCentaur.class)); + } +} \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/HeroesOfTheRealm.java b/Mage.Sets/src/mage/sets/HeroesOfTheRealm.java deleted file mode 100644 index 4ccfd7f4470..00000000000 --- a/Mage.Sets/src/mage/sets/HeroesOfTheRealm.java +++ /dev/null @@ -1,24 +0,0 @@ -package mage.sets; - -import mage.cards.ExpansionSet; -import mage.constants.Rarity; -import mage.constants.SetType; - -/** - * @author TheElk801 - */ -public final class HeroesOfTheRealm extends ExpansionSet { - - private static final HeroesOfTheRealm instance = new HeroesOfTheRealm(); - - public static HeroesOfTheRealm getInstance() { - return instance; - } - - private HeroesOfTheRealm() { - super("Heroes of the Realm", "HTR", ExpansionSet.buildDate(2017, 9, 20), SetType.JOKESET); - this.hasBasicLands = false; - - cards.add(new SetCardInfo("Chandra, Gremlin Wrangler", 1, Rarity.MYTHIC, mage.cards.c.ChandraGremlinWrangler.class)); - } -} diff --git a/Mage.Sets/src/mage/sets/HeroesOfTheRealm2016.java b/Mage.Sets/src/mage/sets/HeroesOfTheRealm2016.java new file mode 100644 index 00000000000..2b2355a5d98 --- /dev/null +++ b/Mage.Sets/src/mage/sets/HeroesOfTheRealm2016.java @@ -0,0 +1,28 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/htr + * @author TheElk801 + */ +public final class HeroesOfTheRealm2016 extends ExpansionSet { + + private static final HeroesOfTheRealm2016 instance = new HeroesOfTheRealm2016(); + + public static HeroesOfTheRealm2016 getInstance() { + return instance; + } + + private HeroesOfTheRealm2016() { + super("Heroes of the Realm 2016", "HTR", ExpansionSet.buildDate(2017, 9, 20), SetType.JOKESET); + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Chandra, Gremlin Wrangler", 1, Rarity.MYTHIC, mage.cards.c.ChandraGremlinWrangler.class)); + // Cards not implemented + //cards.add(new SetCardInfo("Dungeon Master", 2, Rarity.MYTHIC, mage.cards.d.DungeonMaster.class)); + //cards.add(new SetCardInfo("Nira, Hellkite Duelist", 3, Rarity.MYTHIC, mage.cards.n.NiraHellkiteDuelist.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/HistoricAnthology1.java b/Mage.Sets/src/mage/sets/HistoricAnthology1.java index 36e6dc8c9e4..00e75d31a96 100644 --- a/Mage.Sets/src/mage/sets/HistoricAnthology1.java +++ b/Mage.Sets/src/mage/sets/HistoricAnthology1.java @@ -1,4 +1,3 @@ - package mage.sets; import mage.cards.ExpansionSet; @@ -6,6 +5,8 @@ import mage.constants.Rarity; import mage.constants.SetType; /** + * https://scryfall.com/sets/ha1 + * * @author mikalinn777 */ public final class HistoricAnthology1 extends ExpansionSet { @@ -17,10 +18,10 @@ public final class HistoricAnthology1 extends ExpansionSet { } private HistoricAnthology1() { - super("Historic Anthology 1", "HA1", ExpansionSet.buildDate(2019, 11, 21), SetType.SUPPLEMENTAL); - this.blockName = "Reprint"; + super("Historic Anthology 1", "HA1", ExpansionSet.buildDate(2019, 11, 21), SetType.MAGIC_ONLINE); this.hasBoosters = false; this.hasBasicLands = false; + cards.add(new SetCardInfo("Burning Tree Emissary", 16, Rarity.UNCOMMON, mage.cards.b.BurningTreeEmissary.class)); cards.add(new SetCardInfo("Captain Sisay", 17, Rarity.RARE, mage.cards.c.CaptainSisay.class)); cards.add(new SetCardInfo("Cryptbreaker", 6, Rarity.RARE, mage.cards.c.Cryptbreaker.class)); @@ -33,17 +34,13 @@ public final class HistoricAnthology1 extends ExpansionSet { cards.add(new SetCardInfo("Hypnotic Specter", 7, Rarity.RARE, mage.cards.h.HypnoticSpecter.class)); cards.add(new SetCardInfo("Imperious Perfect", 15, Rarity.UNCOMMON, mage.cards.i.ImperiousPerfect.class)); cards.add(new SetCardInfo("Kiln Fiend", 10, Rarity.COMMON, mage.cards.k.KilnFiend.class)); - cards.add(new SetCardInfo("Kinsbaile Cavalier", 3, Rarity.COMMON, mage.cards.k.KinsbaileCavalier.class)); + cards.add(new SetCardInfo("Kinsbaile Cavalier", 3, Rarity.RARE, mage.cards.k.KinsbaileCavalier.class)); cards.add(new SetCardInfo("Mind Stone", 19, Rarity.COMMON, mage.cards.m.MindStone.class)); cards.add(new SetCardInfo("Ornithopter", 18, Rarity.UNCOMMON, mage.cards.o.Ornithopter.class)); - cards.add(new SetCardInfo("Phrexian Arena", 8, Rarity.RARE, mage.cards.p.PhyrexianArena.class)); + cards.add(new SetCardInfo("Phyrexian Arena", 8, Rarity.RARE, mage.cards.p.PhyrexianArena.class)); cards.add(new SetCardInfo("Serra Ascendant", 1, Rarity.RARE, mage.cards.s.SerraAscendant.class)); cards.add(new SetCardInfo("Soul Warden", 2, Rarity.COMMON, mage.cards.s.SoulWarden.class)); - cards.add(new SetCardInfo("Swan Song", 55, Rarity.RARE, mage.cards.s.SwanSong.class)); cards.add(new SetCardInfo("Tendrils of Corruption", 9, Rarity.COMMON, mage.cards.t.TendrilsOfCorruption.class)); cards.add(new SetCardInfo("Treasure Hunt", 4, Rarity.COMMON, mage.cards.t.TreasureHunt.class)); - - } - } diff --git a/Mage.Sets/src/mage/sets/HistoricAnthology2.java b/Mage.Sets/src/mage/sets/HistoricAnthology2.java index 812b318e74f..0131e95c188 100644 --- a/Mage.Sets/src/mage/sets/HistoricAnthology2.java +++ b/Mage.Sets/src/mage/sets/HistoricAnthology2.java @@ -1,4 +1,3 @@ - package mage.sets; import mage.cards.ExpansionSet; @@ -6,6 +5,7 @@ import mage.constants.Rarity; import mage.constants.SetType; /** + * https://scryfall.com/sets/ha2 * @author mikalinn777 */ public final class HistoricAnthology2 extends ExpansionSet { @@ -17,15 +17,14 @@ public final class HistoricAnthology2 extends ExpansionSet { } private HistoricAnthology2() { - super("Historic Anthology 2", "HA2", ExpansionSet.buildDate(2020, 3, 12), SetType.SUPPLEMENTAL); - this.blockName = "Reprint"; + super("Historic Anthology 2", "HA2", ExpansionSet.buildDate(2020, 3, 12), SetType.MAGIC_ONLINE); this.hasBoosters = false; this.hasBasicLands = false; cards.add(new SetCardInfo("Ancestral Mask", 13, Rarity.COMMON, mage.cards.a.AncestralMask.class)); cards.add(new SetCardInfo("Barren Moor", 19, Rarity.COMMON, mage.cards.b.BarrenMoor.class)); cards.add(new SetCardInfo("Bojuka Bog", 20, Rarity.COMMON, mage.cards.b.BojukaBog.class)); cards.add(new SetCardInfo("Brain Maggot", 7, Rarity.UNCOMMON, mage.cards.b.BrainMaggot.class)); - cards.add(new SetCardInfo("Dragonmaster Outcast", 11, Rarity.COMMON, mage.cards.d.DragonmasterOutcast.class)); + cards.add(new SetCardInfo("Dragonmaster Outcast", 11, Rarity.MYTHIC, mage.cards.d.DragonmasterOutcast.class)); cards.add(new SetCardInfo("Forgotten Cave", 21, Rarity.COMMON, mage.cards.f.ForgottenCave.class)); cards.add(new SetCardInfo("Ghost Quarter", 22, Rarity.UNCOMMON, mage.cards.g.GhostQuarter.class)); cards.add(new SetCardInfo("Goblin Ruinblaster", 12, Rarity.UNCOMMON, mage.cards.g.GoblinRuinblaster.class)); @@ -35,7 +34,7 @@ public final class HistoricAnthology2 extends ExpansionSet { cards.add(new SetCardInfo("Maelstrom Pulse", 16, Rarity.RARE, mage.cards.m.MaelstromPulse.class)); cards.add(new SetCardInfo("Meddling Mage", 17, Rarity.RARE, mage.cards.m.MeddlingMage.class)); cards.add(new SetCardInfo("Merrow Reejerey", 5, Rarity.UNCOMMON, mage.cards.m.MerrowReejerey.class)); - cards.add(new SetCardInfo("Nyxfleece Ram", 1, Rarity.UNCOMMON, mage.cards.n.NyxFleeceRam.class)); + cards.add(new SetCardInfo("Nyx-Fleece Ram", 1, Rarity.UNCOMMON, mage.cards.n.NyxFleeceRam.class)); cards.add(new SetCardInfo("Pack Rat", 8, Rarity.RARE, mage.cards.p.PackRat.class)); cards.add(new SetCardInfo("Platinum Angel", 18, Rarity.MYTHIC, mage.cards.p.PlatinumAngel.class)); cards.add(new SetCardInfo("Ranger of Eos", 2, Rarity.RARE, mage.cards.r.RangerOfEos.class)); @@ -46,8 +45,5 @@ public final class HistoricAnthology2 extends ExpansionSet { cards.add(new SetCardInfo("Tranquil Thicket", 25, Rarity.COMMON, mage.cards.t.TranquilThicket.class)); cards.add(new SetCardInfo("Virulent Plague", 9, Rarity.UNCOMMON, mage.cards.v.VirulentPlague.class)); cards.add(new SetCardInfo("Waste Not", 10, Rarity.RARE, mage.cards.w.WasteNot.class)); - - - } - + } } diff --git a/Mage.Sets/src/mage/sets/HourOfDevastation.java b/Mage.Sets/src/mage/sets/HourOfDevastation.java index e0ec55cc55d..2e6fdebbbfb 100644 --- a/Mage.Sets/src/mage/sets/HourOfDevastation.java +++ b/Mage.Sets/src/mage/sets/HourOfDevastation.java @@ -253,7 +253,7 @@ public final class HourOfDevastation extends ExpansionSet { public List getSpecialLand() { if (savedSpecialLand.isEmpty()) { CardCriteria criteria = new CardCriteria(); - criteria.setCodes("MPS-AKH"); + criteria.setCodes("MP2"); criteria.minCardNumber(31); criteria.maxCardNumber(54); savedSpecialLand.addAll(CardRepository.instance.findCards(criteria)); diff --git a/Mage.Sets/src/mage/sets/HourOfDevastationPromos.java b/Mage.Sets/src/mage/sets/HourOfDevastationPromos.java new file mode 100644 index 00000000000..dabf74113c7 --- /dev/null +++ b/Mage.Sets/src/mage/sets/HourOfDevastationPromos.java @@ -0,0 +1,83 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/phou + */ +public class HourOfDevastationPromos extends ExpansionSet { + + private static final HourOfDevastationPromos instance = new HourOfDevastationPromos(); + + public static HourOfDevastationPromos getInstance() { + return instance; + } + + private HourOfDevastationPromos() { + super("Hour of Devastation Promos", "PHOU", ExpansionSet.buildDate(2017, 7, 14), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Abandoned Sarcophagus", "158s", Rarity.RARE, mage.cards.a.AbandonedSarcophagus.class)); + cards.add(new SetCardInfo("Abrade", 83, Rarity.UNCOMMON, mage.cards.a.Abrade.class)); + cards.add(new SetCardInfo("Adorned Pouncer", 2, Rarity.RARE, mage.cards.a.AdornedPouncer.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Adorned Pouncer", "2s", Rarity.RARE, mage.cards.a.AdornedPouncer.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Ammit Eternal", "57s", Rarity.RARE, mage.cards.a.AmmitEternal.class)); + cards.add(new SetCardInfo("Angel of Condemnation", "3s", Rarity.RARE, mage.cards.a.AngelOfCondemnation.class)); + cards.add(new SetCardInfo("Apocalypse Demon", "58s", Rarity.RARE, mage.cards.a.ApocalypseDemon.class)); + cards.add(new SetCardInfo("Bontu's Last Reckoning", "60s", Rarity.RARE, mage.cards.b.BontusLastReckoning.class)); + cards.add(new SetCardInfo("Champion of Wits", "31s", Rarity.RARE, mage.cards.c.ChampionOfWits.class)); + cards.add(new SetCardInfo("Chaos Maw", "87s", Rarity.RARE, mage.cards.c.ChaosMaw.class)); + cards.add(new SetCardInfo("Crested Sunmare", "6s", Rarity.MYTHIC, mage.cards.c.CrestedSunmare.class)); + cards.add(new SetCardInfo("Djeru, With Eyes Open", "10s", Rarity.RARE, mage.cards.d.DjeruWithEyesOpen.class)); + cards.add(new SetCardInfo("Dreamstealer", "63s", Rarity.RARE, mage.cards.d.Dreamstealer.class)); + cards.add(new SetCardInfo("Driven // Despair", "157s", Rarity.RARE, mage.cards.d.DrivenDespair.class)); + cards.add(new SetCardInfo("Earthshaker Khenra", "90s", Rarity.RARE, mage.cards.e.EarthshakerKhenra.class)); + cards.add(new SetCardInfo("Endless Sands", "176s", Rarity.RARE, mage.cards.e.EndlessSands.class)); + cards.add(new SetCardInfo("Fraying Sanity", "35s", Rarity.RARE, mage.cards.f.FrayingSanity.class)); + cards.add(new SetCardInfo("God-Pharaoh's Gift", "161s", Rarity.RARE, mage.cards.g.GodPharaohsGift.class)); + cards.add(new SetCardInfo("Grind // Dust", "155s", Rarity.RARE, mage.cards.g.GrindDust.class)); + cards.add(new SetCardInfo("Hazoret's Undying Fury", "96s", Rarity.RARE, mage.cards.h.HazoretsUndyingFury.class)); + cards.add(new SetCardInfo("Hollow One", "163s", Rarity.RARE, mage.cards.h.HollowOne.class)); + cards.add(new SetCardInfo("Hostile Desert", "178s", Rarity.RARE, mage.cards.h.HostileDesert.class)); + cards.add(new SetCardInfo("Hour of Devastation", "97s", Rarity.RARE, mage.cards.h.HourOfDevastation.class)); + cards.add(new SetCardInfo("Hour of Eternity", "36s", Rarity.RARE, mage.cards.h.HourOfEternity.class)); + cards.add(new SetCardInfo("Hour of Glory", "65s", Rarity.RARE, mage.cards.h.HourOfGlory.class)); + cards.add(new SetCardInfo("Hour of Promise", "120s", Rarity.RARE, mage.cards.h.HourOfPromise.class)); + cards.add(new SetCardInfo("Hour of Revelation", "15s", Rarity.RARE, mage.cards.h.HourOfRevelation.class)); + cards.add(new SetCardInfo("Imminent Doom", "98s", Rarity.RARE, mage.cards.i.ImminentDoom.class)); + cards.add(new SetCardInfo("Kefnet's Last Word", "39s", Rarity.RARE, mage.cards.k.KefnetsLastWord.class)); + cards.add(new SetCardInfo("Leave // Chance", "153s", Rarity.RARE, mage.cards.l.LeaveChance.class)); + cards.add(new SetCardInfo("Majestic Myriarch", "122s", Rarity.MYTHIC, mage.cards.m.MajesticMyriarch.class)); + cards.add(new SetCardInfo("Mirage Mirror", "165p", Rarity.RARE, mage.cards.m.MirageMirror.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mirage Mirror", "165s", Rarity.RARE, mage.cards.m.MirageMirror.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Neheb, the Eternal", "104s", Rarity.MYTHIC, mage.cards.n.NehebTheEternal.class)); + cards.add(new SetCardInfo("Nicol Bolas, God-Pharaoh", "140s", Rarity.MYTHIC, mage.cards.n.NicolBolasGodPharaoh.class)); + cards.add(new SetCardInfo("Nimble Obstructionist", "40s", Rarity.RARE, mage.cards.n.NimbleObstructionist.class)); + cards.add(new SetCardInfo("Oketra's Last Mercy", "18s", Rarity.RARE, mage.cards.o.OketrasLastMercy.class)); + cards.add(new SetCardInfo("Overwhelming Splendor", "19s", Rarity.MYTHIC, mage.cards.o.OverwhelmingSplendor.class)); + cards.add(new SetCardInfo("Pride Sovereign", "126s", Rarity.RARE, mage.cards.p.PrideSovereign.class)); + cards.add(new SetCardInfo("Ramunap Excavator", 129, Rarity.RARE, mage.cards.r.RamunapExcavator.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Ramunap Excavator", "129s", Rarity.RARE, mage.cards.r.RamunapExcavator.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Ramunap Hydra", "130s", Rarity.RARE, mage.cards.r.RamunapHydra.class)); + cards.add(new SetCardInfo("Razaketh, the Foulblooded", "73s", Rarity.MYTHIC, mage.cards.r.RazakethTheFoulblooded.class)); + cards.add(new SetCardInfo("Reason // Believe", "154s", Rarity.RARE, mage.cards.r.ReasonBelieve.class)); + cards.add(new SetCardInfo("Refuse // Cooperate", "156s", Rarity.RARE, mage.cards.r.RefuseCooperate.class)); + cards.add(new SetCardInfo("Resilient Khenra", "131s", Rarity.RARE, mage.cards.r.ResilientKhenra.class)); + cards.add(new SetCardInfo("Rhonas's Last Stand", "132s", Rarity.RARE, mage.cards.r.RhonassLastStand.class)); + cards.add(new SetCardInfo("Samut, the Tested", "144s", Rarity.MYTHIC, mage.cards.s.SamutTheTested.class)); + cards.add(new SetCardInfo("Scavenger Grounds", "182s", Rarity.RARE, mage.cards.s.ScavengerGrounds.class)); + cards.add(new SetCardInfo("Solemnity", "22s", Rarity.RARE, mage.cards.s.Solemnity.class)); + cards.add(new SetCardInfo("Swarm Intelligence", "50s", Rarity.RARE, mage.cards.s.SwarmIntelligence.class)); + cards.add(new SetCardInfo("The Locust God", "139s", Rarity.MYTHIC, mage.cards.t.TheLocustGod.class)); + cards.add(new SetCardInfo("The Scarab God", "145s", Rarity.MYTHIC, mage.cards.t.TheScarabGod.class)); + cards.add(new SetCardInfo("The Scorpion God", "146s", Rarity.MYTHIC, mage.cards.t.TheScorpionGod.class)); + cards.add(new SetCardInfo("Torment of Hailfire", "77s", Rarity.RARE, mage.cards.t.TormentOfHailfire.class)); + cards.add(new SetCardInfo("Uncage the Menagerie", "137s", Rarity.MYTHIC, mage.cards.u.UncageTheMenagerie.class)); + cards.add(new SetCardInfo("Unesh, Criosphinx Sovereign", "52s", Rarity.MYTHIC, mage.cards.u.UneshCriosphinxSovereign.class)); + cards.add(new SetCardInfo("Wildfire Eternal", 109, Rarity.RARE, mage.cards.w.WildfireEternal.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Wildfire Eternal", "109s", Rarity.RARE, mage.cards.w.WildfireEternal.class, NON_FULL_USE_VARIOUS)); + } +} diff --git a/Mage.Sets/src/mage/sets/IDWComics2012.java b/Mage.Sets/src/mage/sets/IDWComics2012.java new file mode 100644 index 00000000000..3a6880bfaf4 --- /dev/null +++ b/Mage.Sets/src/mage/sets/IDWComics2012.java @@ -0,0 +1,33 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/pidw + */ +public class IDWComics2012 extends ExpansionSet { + + private static final IDWComics2012 instance = new IDWComics2012(); + + public static IDWComics2012 getInstance() { + return instance; + } + + private IDWComics2012() { + super("IDW Comics 2012", "PIDW", ExpansionSet.buildDate(2012, 1, 1), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Arrest", 5, Rarity.RARE, mage.cards.a.Arrest.class)); + cards.add(new SetCardInfo("Breath of Malfegor", 8, Rarity.RARE, mage.cards.b.BreathOfMalfegor.class)); + cards.add(new SetCardInfo("Consume Spirit", 6, Rarity.RARE, mage.cards.c.ConsumeSpirit.class)); + cards.add(new SetCardInfo("Electrolyze", 3, Rarity.RARE, mage.cards.e.Electrolyze.class)); + cards.add(new SetCardInfo("Faithless Looting", 2, Rarity.RARE, mage.cards.f.FaithlessLooting.class)); + cards.add(new SetCardInfo("Feast of Blood", 4, Rarity.RARE, mage.cards.f.FeastOfBlood.class)); + cards.add(new SetCardInfo("Standstill", 7, Rarity.RARE, mage.cards.s.Standstill.class)); + cards.add(new SetCardInfo("Treasure Hunt", 1, Rarity.RARE, mage.cards.t.TreasureHunt.class)); + cards.add(new SetCardInfo("Turnabout", 9, Rarity.RARE, mage.cards.t.Turnabout.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/IDWComics2013.java b/Mage.Sets/src/mage/sets/IDWComics2013.java new file mode 100644 index 00000000000..d960562b13c --- /dev/null +++ b/Mage.Sets/src/mage/sets/IDWComics2013.java @@ -0,0 +1,29 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/pi13 + */ +public class IDWComics2013 extends ExpansionSet { + + private static final IDWComics2013 instance = new IDWComics2013(); + + public static IDWComics2013 getInstance() { + return instance; + } + + private IDWComics2013() { + super("IDW Comics 2013", "PI13", ExpansionSet.buildDate(2013, 1, 1), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Corrupt", 12, Rarity.RARE, mage.cards.c.Corrupt.class)); + cards.add(new SetCardInfo("Gaze of Granite", 14, Rarity.RARE, mage.cards.g.GazeOfGranite.class)); + cards.add(new SetCardInfo("High Tide", 13, Rarity.RARE, mage.cards.h.HighTide.class)); + cards.add(new SetCardInfo("Ogre Arsonist", 11, Rarity.RARE, mage.cards.o.OgreArsonist.class)); + cards.add(new SetCardInfo("Voidmage Husher", 10, Rarity.RARE, mage.cards.v.VoidmageHusher.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/IDWComics2014.java b/Mage.Sets/src/mage/sets/IDWComics2014.java new file mode 100644 index 00000000000..44bd2f5d55e --- /dev/null +++ b/Mage.Sets/src/mage/sets/IDWComics2014.java @@ -0,0 +1,27 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/pi14 + */ +public class IDWComics2014 extends ExpansionSet { + + private static final IDWComics2014 instance = new IDWComics2014(); + + public static IDWComics2014 getInstance() { + return instance; + } + + private IDWComics2014() { + super("IDW Comics 2014", "PI14", ExpansionSet.buildDate(2014, 1, 1), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Acquire", 16, Rarity.RARE, mage.cards.a.Acquire.class)); + cards.add(new SetCardInfo("Duress", 17, Rarity.RARE, mage.cards.d.Duress.class)); + cards.add(new SetCardInfo("Wash Out", 15, Rarity.RARE, mage.cards.w.WashOut.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/Innistrad.java b/Mage.Sets/src/mage/sets/Innistrad.java index b32374439f6..d70af168b8c 100644 --- a/Mage.Sets/src/mage/sets/Innistrad.java +++ b/Mage.Sets/src/mage/sets/Innistrad.java @@ -116,7 +116,7 @@ public final class Innistrad extends ExpansionSet { cards.add(new SetCardInfo("Gallows Warden", 16, Rarity.UNCOMMON, mage.cards.g.GallowsWarden.class)); cards.add(new SetCardInfo("Galvanic Juggernaut", 222, Rarity.UNCOMMON, mage.cards.g.GalvanicJuggernaut.class)); cards.add(new SetCardInfo("Garruk Relentless", 181, Rarity.MYTHIC, mage.cards.g.GarrukRelentless.class)); - cards.add(new SetCardInfo("Garruk, the Veil-Cursed", 1181, Rarity.MYTHIC, mage.cards.g.GarrukTheVeilCursed.class)); + cards.add(new SetCardInfo("Garruk, the Veil-Cursed", 181, Rarity.MYTHIC, mage.cards.g.GarrukTheVeilCursed.class)); cards.add(new SetCardInfo("Gatstaf Howler", 182, Rarity.UNCOMMON, mage.cards.g.GatstafHowler.class)); cards.add(new SetCardInfo("Gatstaf Shepherd", 182, Rarity.UNCOMMON, mage.cards.g.GatstafShepherd.class)); cards.add(new SetCardInfo("Gavony Township", 239, Rarity.RARE, mage.cards.g.GavonyTownship.class)); @@ -151,7 +151,7 @@ public final class Innistrad extends ExpansionSet { cards.add(new SetCardInfo("Hysterical Blindness", 59, Rarity.COMMON, mage.cards.h.HystericalBlindness.class)); cards.add(new SetCardInfo("Infernal Plunge", 148, Rarity.COMMON, mage.cards.i.InfernalPlunge.class)); cards.add(new SetCardInfo("Inquisitor's Flail", 227, Rarity.UNCOMMON, mage.cards.i.InquisitorsFlail.class)); - cards.add(new SetCardInfo("Insectile Aberration", 1051, Rarity.COMMON, mage.cards.i.InsectileAberration.class)); + cards.add(new SetCardInfo("Insectile Aberration", 51, Rarity.COMMON, mage.cards.i.InsectileAberration.class)); cards.add(new SetCardInfo("Instigator Gang", 149, Rarity.RARE, mage.cards.i.InstigatorGang.class)); cards.add(new SetCardInfo("Intangible Virtue", 19, Rarity.UNCOMMON, mage.cards.i.IntangibleVirtue.class)); cards.add(new SetCardInfo("Into the Maw of Hell", 150, Rarity.UNCOMMON, mage.cards.i.IntoTheMawOfHell.class)); @@ -170,9 +170,9 @@ public final class Innistrad extends ExpansionSet { cards.add(new SetCardInfo("Laboratory Maniac", 61, Rarity.RARE, mage.cards.l.LaboratoryManiac.class)); cards.add(new SetCardInfo("Lantern Spirit", 62, Rarity.UNCOMMON, mage.cards.l.LanternSpirit.class)); cards.add(new SetCardInfo("Liliana of the Veil", 105, Rarity.MYTHIC, mage.cards.l.LilianaOfTheVeil.class)); - cards.add(new SetCardInfo("Lord of Lineage", 1090, Rarity.RARE, mage.cards.l.LordOfLineage.class)); + cards.add(new SetCardInfo("Lord of Lineage", 90, Rarity.RARE, mage.cards.l.LordOfLineage.class)); cards.add(new SetCardInfo("Lost in the Mist", 63, Rarity.COMMON, mage.cards.l.LostInTheMist.class)); - cards.add(new SetCardInfo("Ludevic's Abomination", 1064, Rarity.RARE, mage.cards.l.LudevicsAbomination.class)); + cards.add(new SetCardInfo("Ludevic's Abomination", 64, Rarity.RARE, mage.cards.l.LudevicsAbomination.class)); cards.add(new SetCardInfo("Ludevic's Test Subject", 64, Rarity.RARE, mage.cards.l.LudevicsTestSubject.class)); cards.add(new SetCardInfo("Lumberknot", 191, Rarity.UNCOMMON, mage.cards.l.Lumberknot.class)); cards.add(new SetCardInfo("Make a Wish", 192, Rarity.UNCOMMON, mage.cards.m.MakeAWish.class)); @@ -276,7 +276,7 @@ public final class Innistrad extends ExpansionSet { cards.add(new SetCardInfo("Swamp", 258, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Terror of Kruin Pass", 152, Rarity.RARE, mage.cards.t.TerrorOfKruinPass.class)); cards.add(new SetCardInfo("Think Twice", 83, Rarity.COMMON, mage.cards.t.ThinkTwice.class)); - cards.add(new SetCardInfo("Thraben Militia", 1038, Rarity.COMMON, mage.cards.t.ThrabenMilitia.class)); + cards.add(new SetCardInfo("Thraben Militia", 38, Rarity.COMMON, mage.cards.t.ThrabenMilitia.class)); cards.add(new SetCardInfo("Thraben Purebloods", 37, Rarity.COMMON, mage.cards.t.ThrabenPurebloods.class)); cards.add(new SetCardInfo("Thraben Sentry", 38, Rarity.COMMON, mage.cards.t.ThrabenSentry.class)); cards.add(new SetCardInfo("Tormented Pariah", 165, Rarity.COMMON, mage.cards.t.TormentedPariah.class)); diff --git a/Mage.Sets/src/mage/sets/InnistradPromos.java b/Mage.Sets/src/mage/sets/InnistradPromos.java new file mode 100644 index 00000000000..b77e0d94f39 --- /dev/null +++ b/Mage.Sets/src/mage/sets/InnistradPromos.java @@ -0,0 +1,31 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/pisd + */ +public class InnistradPromos extends ExpansionSet { + + private static final InnistradPromos instance = new InnistradPromos(); + + public static InnistradPromos getInstance() { + return instance; + } + + private InnistradPromos() { + super("Innistrad Promos", "PISD", ExpansionSet.buildDate(2011, 9, 24), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Devil's Play", 140, Rarity.RARE, mage.cards.d.DevilsPlay.class)); + cards.add(new SetCardInfo("Diregraf Ghoul", 97, Rarity.UNCOMMON, mage.cards.d.DiregrafGhoul.class)); + cards.add(new SetCardInfo("Elite Inquisitor", 13, Rarity.RARE, mage.cards.e.EliteInquisitor.class)); + cards.add(new SetCardInfo("Howlpack Alpha", 193, Rarity.RARE, mage.cards.h.HowlpackAlpha.class)); + cards.add(new SetCardInfo("Ludevic's Abomination", 64, Rarity.RARE, mage.cards.l.LudevicsAbomination.class)); + cards.add(new SetCardInfo("Ludevic's Test Subject", 64, Rarity.RARE, mage.cards.l.LudevicsTestSubject.class)); + cards.add(new SetCardInfo("Mayor of Avabruck", 193, Rarity.RARE, mage.cards.m.MayorOfAvabruck.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/IntroductoryTwoPlayerSet.java b/Mage.Sets/src/mage/sets/IntroductoryTwoPlayerSet.java new file mode 100644 index 00000000000..791a04b7f37 --- /dev/null +++ b/Mage.Sets/src/mage/sets/IntroductoryTwoPlayerSet.java @@ -0,0 +1,91 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/itp + */ +public class IntroductoryTwoPlayerSet extends ExpansionSet { + + private static final IntroductoryTwoPlayerSet instance = new IntroductoryTwoPlayerSet(); + + public static IntroductoryTwoPlayerSet getInstance() { + return instance; + } + + private IntroductoryTwoPlayerSet() { + super("Introductory Two-Player Set", "ITP", ExpansionSet.buildDate(1996, 12, 31), SetType.SUPPLEMENTAL); + this.hasBoosters = false; + this.hasBasicLands = true; + + cards.add(new SetCardInfo("Alabaster Potion", 1, Rarity.COMMON, mage.cards.a.AlabasterPotion.class)); + cards.add(new SetCardInfo("Battering Ram", 48, Rarity.COMMON, mage.cards.b.BatteringRam.class)); + cards.add(new SetCardInfo("Bog Imp", 16, Rarity.COMMON, mage.cards.b.BogImp.class)); + cards.add(new SetCardInfo("Bog Wraith", 17, Rarity.UNCOMMON, mage.cards.b.BogWraith.class)); + cards.add(new SetCardInfo("Circle of Protection: Black", 2, Rarity.COMMON, mage.cards.c.CircleOfProtectionBlack.class)); + cards.add(new SetCardInfo("Circle of Protection: Red", 3, Rarity.COMMON, mage.cards.c.CircleOfProtectionRed.class)); + cards.add(new SetCardInfo("Clockwork Beast", 49, Rarity.RARE, mage.cards.c.ClockworkBeast.class)); + cards.add(new SetCardInfo("Cursed Land", 18, Rarity.UNCOMMON, mage.cards.c.CursedLand.class)); + cards.add(new SetCardInfo("Dark Ritual", 19, Rarity.COMMON, mage.cards.d.DarkRitual.class)); + cards.add(new SetCardInfo("Detonate", 30, Rarity.UNCOMMON, mage.cards.d.Detonate.class)); + cards.add(new SetCardInfo("Disintegrate", 31, Rarity.COMMON, mage.cards.d.Disintegrate.class)); + cards.add(new SetCardInfo("Durkwood Boars", 39, Rarity.COMMON, mage.cards.d.DurkwoodBoars.class)); + cards.add(new SetCardInfo("Elven Riders", 40, Rarity.UNCOMMON, mage.cards.e.ElvenRiders.class)); + cards.add(new SetCardInfo("Elvish Archers", 41, Rarity.RARE, mage.cards.e.ElvishArchers.class)); + cards.add(new SetCardInfo("Energy Flux", 8, Rarity.UNCOMMON, mage.cards.e.EnergyFlux.class)); + cards.add(new SetCardInfo("Feedback", 9, Rarity.UNCOMMON, mage.cards.f.Feedback.class)); + cards.add(new SetCardInfo("Fireball", 32, Rarity.COMMON, mage.cards.f.Fireball.class)); + cards.add(new SetCardInfo("Forest", 67, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", 66, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", 65, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Glasses of Urza", 50, Rarity.UNCOMMON, mage.cards.g.GlassesOfUrza.class)); + cards.add(new SetCardInfo("Grizzly Bears", 42, Rarity.COMMON, mage.cards.g.GrizzlyBears.class)); + cards.add(new SetCardInfo("Healing Salve", 4, Rarity.COMMON, mage.cards.h.HealingSalve.class)); + cards.add(new SetCardInfo("Hill Giant", 33, Rarity.COMMON, mage.cards.h.HillGiant.class)); + cards.add(new SetCardInfo("Ironclaw Orcs", 34, Rarity.COMMON, mage.cards.i.IronclawOrcs.class)); + cards.add(new SetCardInfo("Island", 58, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", 57, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", 56, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Jayemdae Tome", 51, Rarity.RARE, mage.cards.j.JayemdaeTome.class)); + cards.add(new SetCardInfo("Lost Soul", 20, Rarity.COMMON, mage.cards.l.LostSoul.class)); + cards.add(new SetCardInfo("Merfolk of the Pearl Trident", 10, Rarity.COMMON, mage.cards.m.MerfolkOfThePearlTrident.class)); + cards.add(new SetCardInfo("Mesa Pegasus", 5, Rarity.COMMON, mage.cards.m.MesaPegasus.class)); + cards.add(new SetCardInfo("Mons's Goblin Raiders", 35, Rarity.COMMON, mage.cards.m.MonssGoblinRaiders.class)); + cards.add(new SetCardInfo("Mountain", 64, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", 63, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", 62, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Murk Dwellers", 21, Rarity.COMMON, mage.cards.m.MurkDwellers.class)); + cards.add(new SetCardInfo("Orcish Artillery", 36, Rarity.UNCOMMON, mage.cards.o.OrcishArtillery.class)); + cards.add(new SetCardInfo("Orcish Oriflamme", 37, Rarity.UNCOMMON, mage.cards.o.OrcishOriflamme.class)); + cards.add(new SetCardInfo("Pearled Unicorn", 6, Rarity.COMMON, mage.cards.p.PearledUnicorn.class)); + cards.add(new SetCardInfo("Phantom Monster", 11, Rarity.UNCOMMON, mage.cards.p.PhantomMonster.class)); + cards.add(new SetCardInfo("Plains", 55, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plains", 54, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plains", 53, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Power Sink", 12, Rarity.COMMON, mage.cards.p.PowerSink.class)); + cards.add(new SetCardInfo("Pyrotechnics", 38, Rarity.UNCOMMON, mage.cards.p.Pyrotechnics.class)); + cards.add(new SetCardInfo("Raise Dead", 22, Rarity.COMMON, mage.cards.r.RaiseDead.class)); + cards.add(new SetCardInfo("Reverse Damage", 7, Rarity.RARE, mage.cards.r.ReverseDamage.class)); + cards.add(new SetCardInfo("Rod of Ruin", 52, Rarity.UNCOMMON, mage.cards.r.RodOfRuin.class)); + cards.add(new SetCardInfo("Scathe Zombies", 23, Rarity.COMMON, mage.cards.s.ScatheZombies.class)); + cards.add(new SetCardInfo("Scryb Sprites", 43, Rarity.COMMON, mage.cards.s.ScrybSprites.class)); + cards.add(new SetCardInfo("Sorceress Queen", 24, Rarity.RARE, mage.cards.s.SorceressQueen.class)); + cards.add(new SetCardInfo("Swamp", 61, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", 60, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", 59, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Terror", 25, Rarity.COMMON, mage.cards.t.Terror.class)); + cards.add(new SetCardInfo("Twiddle", 13, Rarity.COMMON, mage.cards.t.Twiddle.class)); + cards.add(new SetCardInfo("Unsummon", 14, Rarity.COMMON, mage.cards.u.Unsummon.class)); + cards.add(new SetCardInfo("Untamed Wilds", 44, Rarity.UNCOMMON, mage.cards.u.UntamedWilds.class)); + cards.add(new SetCardInfo("Vampire Bats", 26, Rarity.COMMON, mage.cards.v.VampireBats.class)); + cards.add(new SetCardInfo("Wall of Bone", 27, Rarity.UNCOMMON, mage.cards.w.WallOfBone.class)); + cards.add(new SetCardInfo("War Mammoth", 45, Rarity.COMMON, mage.cards.w.WarMammoth.class)); + cards.add(new SetCardInfo("Warp Artifact", 28, Rarity.RARE, mage.cards.w.WarpArtifact.class)); + cards.add(new SetCardInfo("Weakness", 29, Rarity.COMMON, mage.cards.w.Weakness.class)); + cards.add(new SetCardInfo("Whirling Dervish", 46, Rarity.UNCOMMON, mage.cards.w.WhirlingDervish.class)); + cards.add(new SetCardInfo("Winter Blast", 47, Rarity.UNCOMMON, mage.cards.w.WinterBlast.class)); + cards.add(new SetCardInfo("Zephyr Falcon", 15, Rarity.COMMON, mage.cards.z.ZephyrFalcon.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/IxalanPromos.java b/Mage.Sets/src/mage/sets/IxalanPromos.java new file mode 100644 index 00000000000..d472b0c1307 --- /dev/null +++ b/Mage.Sets/src/mage/sets/IxalanPromos.java @@ -0,0 +1,154 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/pxln + */ +public class IxalanPromos extends ExpansionSet { + + private static final IxalanPromos instance = new IxalanPromos(); + + public static IxalanPromos getInstance() { + return instance; + } + + private IxalanPromos() { + super("Ixalan Promos", "PXLN", ExpansionSet.buildDate(2017, 9, 29), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Adanto, the First Fort", "22s", Rarity.RARE, mage.cards.a.AdantoTheFirstFort.class)); + cards.add(new SetCardInfo("Admiral Beckett Brass", "217s", Rarity.MYTHIC, mage.cards.a.AdmiralBeckettBrass.class)); + cards.add(new SetCardInfo("Angrath's Marauders", "132s", Rarity.RARE, mage.cards.a.AngrathsMarauders.class)); + cards.add(new SetCardInfo("Arcane Adaptation", "46p", Rarity.RARE, mage.cards.a.ArcaneAdaptation.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Arcane Adaptation", "46s", Rarity.RARE, mage.cards.a.ArcaneAdaptation.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Arguel's Blood Fast", "90s", Rarity.RARE, mage.cards.a.ArguelsBloodFast.class)); + cards.add(new SetCardInfo("Ashes of the Abhorrent", "2p", Rarity.RARE, mage.cards.a.AshesOfTheAbhorrent.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Ashes of the Abhorrent", "2s", Rarity.RARE, mage.cards.a.AshesOfTheAbhorrent.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Axis of Mortality", "3s", Rarity.MYTHIC, mage.cards.a.AxisOfMortality.class)); + cards.add(new SetCardInfo("Azcanta, the Sunken Ruin", "74s", Rarity.RARE, mage.cards.a.AzcantaTheSunkenRuin.class)); + cards.add(new SetCardInfo("Bishop of Rebirth", 5, Rarity.RARE, mage.cards.b.BishopOfRebirth.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Bishop of Rebirth", "5s", Rarity.RARE, mage.cards.b.BishopOfRebirth.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Bloodcrazed Paladin", "93s", Rarity.RARE, mage.cards.b.BloodcrazedPaladin.class)); + cards.add(new SetCardInfo("Boneyard Parley", "94s", Rarity.MYTHIC, mage.cards.b.BoneyardParley.class)); + cards.add(new SetCardInfo("Burning Sun's Avatar", 135, Rarity.RARE, mage.cards.b.BurningSunsAvatar.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Burning Sun's Avatar", "135s", Rarity.RARE, mage.cards.b.BurningSunsAvatar.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Captain Lannery Storm", "136p", Rarity.RARE, mage.cards.c.CaptainLanneryStorm.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Captain Lannery Storm", "136s", Rarity.RARE, mage.cards.c.CaptainLanneryStorm.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Captivating Crew", "137p", Rarity.RARE, mage.cards.c.CaptivatingCrew.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Captivating Crew", "137s", Rarity.RARE, mage.cards.c.CaptivatingCrew.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Carnage Tyrant", "179p", Rarity.MYTHIC, mage.cards.c.CarnageTyrant.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Carnage Tyrant", "179s", Rarity.MYTHIC, mage.cards.c.CarnageTyrant.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Conqueror's Foothold", "234s", Rarity.RARE, mage.cards.c.ConquerorsFoothold.class)); + cards.add(new SetCardInfo("Conqueror's Galleon", "234s", Rarity.RARE, mage.cards.c.ConquerorsGalleon.class)); + cards.add(new SetCardInfo("Daring Saboteur", "49s", Rarity.RARE, mage.cards.d.DaringSaboteur.class)); + cards.add(new SetCardInfo("Deadeye Tracker", "99p", Rarity.RARE, mage.cards.d.DeadeyeTracker.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Deadeye Tracker", "99s", Rarity.RARE, mage.cards.d.DeadeyeTracker.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Deathgorge Scavenger", "184p", Rarity.RARE, mage.cards.d.DeathgorgeScavenger.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Deathgorge Scavenger", "184s", Rarity.RARE, mage.cards.d.DeathgorgeScavenger.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Deeproot Champion", 185, Rarity.RARE, mage.cards.d.DeeprootChampion.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Deeproot Champion", "185p", Rarity.RARE, mage.cards.d.DeeprootChampion.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Deeproot Champion", "185s", Rarity.RARE, mage.cards.d.DeeprootChampion.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Dire Fleet Ravager", "104s", Rarity.MYTHIC, mage.cards.d.DireFleetRavager.class)); + cards.add(new SetCardInfo("Dowsing Dagger", "235s", Rarity.RARE, mage.cards.d.DowsingDagger.class)); + cards.add(new SetCardInfo("Dragonskull Summit", "252p", Rarity.RARE, mage.cards.d.DragonskullSummit.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Dragonskull Summit", "252s", Rarity.RARE, mage.cards.d.DragonskullSummit.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Dreamcaller Siren", "54s", Rarity.RARE, mage.cards.d.DreamcallerSiren.class)); + cards.add(new SetCardInfo("Drowned Catacomb", "253p", Rarity.RARE, mage.cards.d.DrownedCatacomb.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Drowned Catacomb", "253s", Rarity.RARE, mage.cards.d.DrownedCatacomb.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Emperor's Vanguard", "189s", Rarity.RARE, mage.cards.e.EmperorsVanguard.class)); + cards.add(new SetCardInfo("Entrancing Melody", "55p", Rarity.RARE, mage.cards.e.EntrancingMelody.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Entrancing Melody", "55s", Rarity.RARE, mage.cards.e.EntrancingMelody.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Fathom Fleet Captain", "106p", Rarity.RARE, mage.cards.f.FathomFleetCaptain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Fathom Fleet Captain", "106s", Rarity.RARE, mage.cards.f.FathomFleetCaptain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Fell Flagship", "238s", Rarity.RARE, mage.cards.f.FellFlagship.class)); + cards.add(new SetCardInfo("Fleet Swallower", "57s", Rarity.RARE, mage.cards.f.FleetSwallower.class)); + cards.add(new SetCardInfo("Gishath, Sun's Avatar", "222s", Rarity.MYTHIC, mage.cards.g.GishathSunsAvatar.class)); + cards.add(new SetCardInfo("Glacial Fortress", "255p", Rarity.RARE, mage.cards.g.GlacialFortress.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Glacial Fortress", "255s", Rarity.RARE, mage.cards.g.GlacialFortress.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Goring Ceratops", "13s", Rarity.RARE, mage.cards.g.GoringCeratops.class)); + cards.add(new SetCardInfo("Growing Rites of Itlimoc", "191s", Rarity.RARE, mage.cards.g.GrowingRitesOfItlimoc.class)); + cards.add(new SetCardInfo("Herald of Secret Streams", "59p", Rarity.RARE, mage.cards.h.HeraldOfSecretStreams.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Herald of Secret Streams", "59s", Rarity.RARE, mage.cards.h.HeraldOfSecretStreams.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Hostage Taker", "223s", Rarity.RARE, mage.cards.h.HostageTaker.class)); + cards.add(new SetCardInfo("Huatli, Warrior Poet", "224s", Rarity.MYTHIC, mage.cards.h.HuatliWarriorPoet.class)); + cards.add(new SetCardInfo("Itlimoc, Cradle of the Sun", "191s", Rarity.RARE, mage.cards.i.ItlimocCradleOfTheSun.class)); + cards.add(new SetCardInfo("Jace, Cunning Castaway", "60s", Rarity.MYTHIC, mage.cards.j.JaceCunningCastaway.class)); + cards.add(new SetCardInfo("Kinjalli's Sunwing", "19p", Rarity.RARE, mage.cards.k.KinjallisSunwing.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Kinjalli's Sunwing", "19s", Rarity.RARE, mage.cards.k.KinjallisSunwing.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Kopala, Warden of Waves", "61p", Rarity.RARE, mage.cards.k.KopalaWardenOfWaves.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Kopala, Warden of Waves", "61s", Rarity.RARE, mage.cards.k.KopalaWardenOfWaves.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Legion's Landing", "22s", Rarity.RARE, mage.cards.l.LegionsLanding.class)); + cards.add(new SetCardInfo("Lost Vale", "235s", Rarity.RARE, mage.cards.l.LostVale.class)); + cards.add(new SetCardInfo("Mavren Fein, Dusk Apostle", "24p", Rarity.RARE, mage.cards.m.MavrenFeinDuskApostle.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mavren Fein, Dusk Apostle", "24s", Rarity.RARE, mage.cards.m.MavrenFeinDuskApostle.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Old-Growth Dryads", "199s", Rarity.RARE, mage.cards.o.OldGrowthDryads.class)); + cards.add(new SetCardInfo("Overflowing Insight", "66s", Rarity.MYTHIC, mage.cards.o.OverflowingInsight.class)); + cards.add(new SetCardInfo("Priest of the Wakening Sun", "27s", Rarity.RARE, mage.cards.p.PriestOfTheWakeningSun.class)); + cards.add(new SetCardInfo("Primal Amulet", "243s", Rarity.RARE, mage.cards.p.PrimalAmulet.class)); + cards.add(new SetCardInfo("Primal Wellspring", "243s", Rarity.RARE, mage.cards.p.PrimalWellspring.class)); + cards.add(new SetCardInfo("Rampaging Ferocidon", "154s", Rarity.RARE, mage.cards.r.RampagingFerocidon.class)); + cards.add(new SetCardInfo("Regisaur Alpha", "227p", Rarity.RARE, mage.cards.r.RegisaurAlpha.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Regisaur Alpha", "227s", Rarity.RARE, mage.cards.r.RegisaurAlpha.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Repeating Barrage", "156s", Rarity.RARE, mage.cards.r.RepeatingBarrage.class)); + cards.add(new SetCardInfo("Revel in Riches", "117p", Rarity.RARE, mage.cards.r.RevelInRiches.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Revel in Riches", "117s", Rarity.RARE, mage.cards.r.RevelInRiches.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Ripjaw Raptor", "203p", Rarity.RARE, mage.cards.r.RipjawRaptor.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Ripjaw Raptor", "203s", Rarity.RARE, mage.cards.r.RipjawRaptor.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("River's Rebuke", "71p", Rarity.RARE, mage.cards.r.RiversRebuke.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("River's Rebuke", "71s", Rarity.RARE, mage.cards.r.RiversRebuke.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Rootbound Crag", "256p", Rarity.RARE, mage.cards.r.RootboundCrag.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Rootbound Crag", "256s", Rarity.RARE, mage.cards.r.RootboundCrag.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Rowdy Crew", "159s", Rarity.MYTHIC, mage.cards.r.RowdyCrew.class)); + cards.add(new SetCardInfo("Ruin Raider", "118p", Rarity.RARE, mage.cards.r.RuinRaider.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Ruin Raider", "118s", Rarity.RARE, mage.cards.r.RuinRaider.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Sanctum Seeker", "120p", Rarity.RARE, mage.cards.s.SanctumSeeker.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Sanctum Seeker", "120s", Rarity.RARE, mage.cards.s.SanctumSeeker.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Sanguine Sacrament", "33s", Rarity.RARE, mage.cards.s.SanguineSacrament.class)); + cards.add(new SetCardInfo("Search for Azcanta", "74s", Rarity.RARE, mage.cards.s.SearchForAzcanta.class)); + cards.add(new SetCardInfo("Settle the Wreckage", "34p", Rarity.RARE, mage.cards.s.SettleTheWreckage.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Settle the Wreckage", "34s", Rarity.RARE, mage.cards.s.SettleTheWreckage.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Shadowed Caravel", "246s", Rarity.RARE, mage.cards.s.ShadowedCaravel.class)); + cards.add(new SetCardInfo("Shapers' Sanctuary", "206p", Rarity.RARE, mage.cards.s.ShapersSanctuary.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Shapers' Sanctuary", "206s", Rarity.RARE, mage.cards.s.ShapersSanctuary.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Sorcerous Spyglass", "248p", Rarity.RARE, mage.cards.s.SorcerousSpyglass.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Sorcerous Spyglass", "248s", Rarity.RARE, mage.cards.s.SorcerousSpyglass.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Spell Swindle", "82p", Rarity.RARE, mage.cards.s.SpellSwindle.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Spell Swindle", "82s", Rarity.RARE, mage.cards.s.SpellSwindle.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Spires of Orazca", "249s", Rarity.RARE, mage.cards.s.SpiresOfOrazca.class)); + cards.add(new SetCardInfo("Spitfire Bastion", "173s", Rarity.RARE, mage.cards.s.SpitfireBastion.class)); + cards.add(new SetCardInfo("Star of Extinction", "161p", Rarity.MYTHIC, mage.cards.s.StarOfExtinction.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Star of Extinction", "161s", Rarity.MYTHIC, mage.cards.s.StarOfExtinction.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Sunbird's Invocation", "165p", Rarity.RARE, mage.cards.s.SunbirdsInvocation.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Sunbird's Invocation", "165s", Rarity.RARE, mage.cards.s.SunbirdsInvocation.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Sunpetal Grove", "257p", Rarity.RARE, mage.cards.s.SunpetalGrove.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Sunpetal Grove", "257s", Rarity.RARE, mage.cards.s.SunpetalGrove.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Sword-Point Diplomacy", "126p", Rarity.RARE, mage.cards.s.SwordPointDiplomacy.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Sword-Point Diplomacy", "126s", Rarity.RARE, mage.cards.s.SwordPointDiplomacy.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Temple of Aclazotz", "90s", Rarity.RARE, mage.cards.t.TempleOfAclazotz.class)); + cards.add(new SetCardInfo("Thaumatic Compass", "249s", Rarity.RARE, mage.cards.t.ThaumaticCompass.class)); + cards.add(new SetCardInfo("Tilonalli's Skinshifter", "170s", Rarity.RARE, mage.cards.t.TilonallisSkinshifter.class)); + cards.add(new SetCardInfo("Tishana, Voice of Thunder", "230s", Rarity.MYTHIC, mage.cards.t.TishanaVoiceOfThunder.class)); + cards.add(new SetCardInfo("Tocatli Honor Guard", "42p", Rarity.RARE, mage.cards.t.TocatliHonorGuard.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Tocatli Honor Guard", "42s", Rarity.RARE, mage.cards.t.TocatliHonorGuard.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Treasure Cove", "250s", Rarity.RARE, mage.cards.t.TreasureCove.class)); + cards.add(new SetCardInfo("Treasure Map", "250s", Rarity.RARE, mage.cards.t.TreasureMap.class)); + cards.add(new SetCardInfo("Unclaimed Territory", 258, Rarity.UNCOMMON, mage.cards.u.UnclaimedTerritory.class)); + cards.add(new SetCardInfo("Vance's Blasting Cannons", "173s", Rarity.RARE, mage.cards.v.VancesBlastingCannons.class)); + cards.add(new SetCardInfo("Vanquisher's Banner", "251p", Rarity.RARE, mage.cards.v.VanquishersBanner.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Vanquisher's Banner", "251s", Rarity.RARE, mage.cards.v.VanquishersBanner.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Verdant Sun's Avatar", "213p", Rarity.RARE, mage.cards.v.VerdantSunsAvatar.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Verdant Sun's Avatar", "213s", Rarity.RARE, mage.cards.v.VerdantSunsAvatar.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Vona, Butcher of Magan", "231s", Rarity.MYTHIC, mage.cards.v.VonaButcherOfMagan.class)); + cards.add(new SetCardInfo("Vraska's Contempt", "129p", Rarity.RARE, mage.cards.v.VraskasContempt.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Vraska's Contempt", "129s", Rarity.RARE, mage.cards.v.VraskasContempt.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Vraska, Relic Seeker", "232p", Rarity.MYTHIC, mage.cards.v.VraskaRelicSeeker.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Vraska, Relic Seeker", "232s", Rarity.MYTHIC, mage.cards.v.VraskaRelicSeeker.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Wakening Sun's Avatar", "44s", Rarity.MYTHIC, mage.cards.w.WakeningSunsAvatar.class)); + cards.add(new SetCardInfo("Waker of the Wilds", "215s", Rarity.RARE, mage.cards.w.WakerOfTheWilds.class)); + cards.add(new SetCardInfo("Walk the Plank", 130, Rarity.UNCOMMON, mage.cards.w.WalkThePlank.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/IxalanStandardShowdown.java b/Mage.Sets/src/mage/sets/IxalanStandardShowdown.java new file mode 100644 index 00000000000..ff9d73b0030 --- /dev/null +++ b/Mage.Sets/src/mage/sets/IxalanStandardShowdown.java @@ -0,0 +1,29 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/pss2 + */ +public class IxalanStandardShowdown extends ExpansionSet { + + private static final IxalanStandardShowdown instance = new IxalanStandardShowdown(); + + public static IxalanStandardShowdown getInstance() { + return instance; + } + + private IxalanStandardShowdown() { + super("Ixalan Standard Showdown", "PSS2", ExpansionSet.buildDate(2017, 9, 29), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = true; + + cards.add(new SetCardInfo("Forest", 5, Rarity.LAND, mage.cards.basiclands.Forest.class)); + cards.add(new SetCardInfo("Island", 2, Rarity.LAND, mage.cards.basiclands.Island.class)); + cards.add(new SetCardInfo("Mountain", 4, Rarity.LAND, mage.cards.basiclands.Mountain.class)); + cards.add(new SetCardInfo("Plains", 1, Rarity.LAND, mage.cards.basiclands.Plains.class)); + cards.add(new SetCardInfo("Swamp", 3, Rarity.LAND, mage.cards.basiclands.Swamp.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/IxalanTreasureChest.java b/Mage.Sets/src/mage/sets/IxalanTreasureChest.java new file mode 100644 index 00000000000..93031239777 --- /dev/null +++ b/Mage.Sets/src/mage/sets/IxalanTreasureChest.java @@ -0,0 +1,44 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/pxtc + */ +public class IxalanTreasureChest extends ExpansionSet { + + private static final IxalanTreasureChest instance = new IxalanTreasureChest(); + + public static IxalanTreasureChest getInstance() { + return instance; + } + + private IxalanTreasureChest() { + super("Ixalan Treasure Chest", "PXTC", ExpansionSet.buildDate(2017, 11, 24), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Adanto, the First Fort", 22, Rarity.RARE, mage.cards.a.AdantoTheFirstFort.class)); + cards.add(new SetCardInfo("Arguel's Blood Fast", 90, Rarity.RARE, mage.cards.a.ArguelsBloodFast.class)); + cards.add(new SetCardInfo("Azcanta, the Sunken Ruin", 74, Rarity.RARE, mage.cards.a.AzcantaTheSunkenRuin.class)); + cards.add(new SetCardInfo("Conqueror's Foothold", 234, Rarity.RARE, mage.cards.c.ConquerorsFoothold.class)); + cards.add(new SetCardInfo("Conqueror's Galleon", 234, Rarity.RARE, mage.cards.c.ConquerorsGalleon.class)); + cards.add(new SetCardInfo("Dowsing Dagger", 235, Rarity.RARE, mage.cards.d.DowsingDagger.class)); + cards.add(new SetCardInfo("Growing Rites of Itlimoc", 191, Rarity.RARE, mage.cards.g.GrowingRitesOfItlimoc.class)); + cards.add(new SetCardInfo("Itlimoc, Cradle of the Sun", 191, Rarity.RARE, mage.cards.i.ItlimocCradleOfTheSun.class)); + cards.add(new SetCardInfo("Legion's Landing", 22, Rarity.RARE, mage.cards.l.LegionsLanding.class)); + cards.add(new SetCardInfo("Lost Vale", 235, Rarity.RARE, mage.cards.l.LostVale.class)); + cards.add(new SetCardInfo("Primal Amulet", 243, Rarity.RARE, mage.cards.p.PrimalAmulet.class)); + cards.add(new SetCardInfo("Primal Wellspring", 243, Rarity.RARE, mage.cards.p.PrimalWellspring.class)); + cards.add(new SetCardInfo("Search for Azcanta", 74, Rarity.RARE, mage.cards.s.SearchForAzcanta.class)); + cards.add(new SetCardInfo("Spires of Orazca", 249, Rarity.RARE, mage.cards.s.SpiresOfOrazca.class)); + cards.add(new SetCardInfo("Spitfire Bastion", 173, Rarity.RARE, mage.cards.s.SpitfireBastion.class)); + cards.add(new SetCardInfo("Temple of Aclazotz", 90, Rarity.RARE, mage.cards.t.TempleOfAclazotz.class)); + cards.add(new SetCardInfo("Thaumatic Compass", 249, Rarity.RARE, mage.cards.t.ThaumaticCompass.class)); + cards.add(new SetCardInfo("Treasure Cove", 250, Rarity.RARE, mage.cards.t.TreasureCove.class)); + cards.add(new SetCardInfo("Treasure Map", 250, Rarity.RARE, mage.cards.t.TreasureMap.class)); + cards.add(new SetCardInfo("Vance's Blasting Cannons", 173, Rarity.RARE, mage.cards.v.VancesBlastingCannons.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/JourneyIntoNyxPromos.java b/Mage.Sets/src/mage/sets/JourneyIntoNyxPromos.java new file mode 100644 index 00000000000..999876730ce --- /dev/null +++ b/Mage.Sets/src/mage/sets/JourneyIntoNyxPromos.java @@ -0,0 +1,33 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/pjou + */ +public class JourneyIntoNyxPromos extends ExpansionSet { + + private static final JourneyIntoNyxPromos instance = new JourneyIntoNyxPromos(); + + public static JourneyIntoNyxPromos getInstance() { + return instance; + } + + private JourneyIntoNyxPromos() { + super("Journey into Nyx Promos", "PJOU", ExpansionSet.buildDate(2014, 4, 26), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Dawnbringer Charioteers", 6, Rarity.RARE, mage.cards.d.DawnbringerCharioteers.class)); + cards.add(new SetCardInfo("Dictate of Kruphix", 37, Rarity.RARE, mage.cards.d.DictateOfKruphix.class)); + cards.add(new SetCardInfo("Dictate of the Twin Gods", 93, Rarity.RARE, mage.cards.d.DictateOfTheTwinGods.class)); + cards.add(new SetCardInfo("Doomwake Giant", 66, Rarity.RARE, mage.cards.d.DoomwakeGiant.class)); + cards.add(new SetCardInfo("Eidolon of Blossoms", "*122", Rarity.RARE, mage.cards.e.EidolonOfBlossoms.class)); + cards.add(new SetCardInfo("Heroes' Bane", 126, Rarity.RARE, mage.cards.h.HeroesBane.class)); + cards.add(new SetCardInfo("Scourge of Fleets", 51, Rarity.RARE, mage.cards.s.ScourgeOfFleets.class)); + cards.add(new SetCardInfo("Spawn of Thraxes", 112, Rarity.RARE, mage.cards.s.SpawnOfThraxes.class)); + cards.add(new SetCardInfo("Squelching Leeches", 84, Rarity.UNCOMMON, mage.cards.s.SquelchingLeeches.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/JudgeGiftCards1998.java b/Mage.Sets/src/mage/sets/JudgeGiftCards1998.java new file mode 100644 index 00000000000..ed3a4886eae --- /dev/null +++ b/Mage.Sets/src/mage/sets/JudgeGiftCards1998.java @@ -0,0 +1,27 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/jgp + */ +public class JudgeGiftCards1998 extends ExpansionSet { + + private static final JudgeGiftCards1998 instance = new JudgeGiftCards1998(); + + public static JudgeGiftCards1998 getInstance() { + return instance; + } + + private JudgeGiftCards1998() { + super("Judge Gift Cards 1998", "JGP", ExpansionSet.buildDate(1998, 1, 1), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Gaea's Cradle", 3, Rarity.RARE, mage.cards.g.GaeasCradle.class)); + cards.add(new SetCardInfo("Lightning Bolt", 1, Rarity.RARE, mage.cards.l.LightningBolt.class)); + cards.add(new SetCardInfo("Stroke of Genius", 2, Rarity.RARE, mage.cards.s.StrokeOfGenius.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/JudgeGiftCards1999.java b/Mage.Sets/src/mage/sets/JudgeGiftCards1999.java new file mode 100644 index 00000000000..0f416bdaa04 --- /dev/null +++ b/Mage.Sets/src/mage/sets/JudgeGiftCards1999.java @@ -0,0 +1,25 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/g99 + */ +public class JudgeGiftCards1999 extends ExpansionSet { + + private static final JudgeGiftCards1999 instance = new JudgeGiftCards1999(); + + public static JudgeGiftCards1999 getInstance() { + return instance; + } + + private JudgeGiftCards1999() { + super("Judge Gift Cards 1999", "G99", ExpansionSet.buildDate(1999, 1, 1), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Memory Lapse", 1, Rarity.RARE, mage.cards.m.MemoryLapse.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/JudgeGiftCards2000.java b/Mage.Sets/src/mage/sets/JudgeGiftCards2000.java new file mode 100644 index 00000000000..1ec179c30e6 --- /dev/null +++ b/Mage.Sets/src/mage/sets/JudgeGiftCards2000.java @@ -0,0 +1,26 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/g00 + */ +public class JudgeGiftCards2000 extends ExpansionSet { + + private static final JudgeGiftCards2000 instance = new JudgeGiftCards2000(); + + public static JudgeGiftCards2000 getInstance() { + return instance; + } + + private JudgeGiftCards2000() { + super("Judge Gift Cards 2000", "G00", ExpansionSet.buildDate(2000, 1, 1), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Counterspell", 1, Rarity.RARE, mage.cards.c.Counterspell.class)); + cards.add(new SetCardInfo("Vampiric Tutor", 2, Rarity.RARE, mage.cards.v.VampiricTutor.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/JudgeGiftCards2001.java b/Mage.Sets/src/mage/sets/JudgeGiftCards2001.java new file mode 100644 index 00000000000..66cbf1c4cf4 --- /dev/null +++ b/Mage.Sets/src/mage/sets/JudgeGiftCards2001.java @@ -0,0 +1,26 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/g01 + */ +public class JudgeGiftCards2001 extends ExpansionSet { + + private static final JudgeGiftCards2001 instance = new JudgeGiftCards2001(); + + public static JudgeGiftCards2001 getInstance() { + return instance; + } + + private JudgeGiftCards2001() { + super("Judge Gift Cards 2001", "G01", ExpansionSet.buildDate(2001, 1, 1), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Ball Lightning", 1, Rarity.RARE, mage.cards.b.BallLightning.class)); + cards.add(new SetCardInfo("Oath of Druids", 2, Rarity.RARE, mage.cards.o.OathOfDruids.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/JudgeGiftCards2002.java b/Mage.Sets/src/mage/sets/JudgeGiftCards2002.java new file mode 100644 index 00000000000..7cf3512622b --- /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 00000000000..8f5cb239a87 --- /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 00000000000..5884984cbfe --- /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 00000000000..f3e64c25987 --- /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 00000000000..b02372f4d44 --- /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 00000000000..c5fcfcb4810 --- /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 00000000000..b38ec15053d --- /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 00000000000..d9bd1a25a02 --- /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 00000000000..cc4a430be96 --- /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 00000000000..e20390875ae --- /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 00000000000..fa3cf3cc007 --- /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 00000000000..59257aa8f93 --- /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 00000000000..9650ba4db32 --- /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 00000000000..a3047a03019 --- /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 00000000000..24e0ae45190 --- /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 00000000000..95aeb250cb6 --- /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 00000000000..364b11b5571 --- /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 00000000000..2ae96bb0e50 --- /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 00000000000..d409a1c4709 --- /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 5efbac3d004..00000000000 --- 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.Sets/src/mage/sets/JuniorAPACSeries.java b/Mage.Sets/src/mage/sets/JuniorAPACSeries.java new file mode 100644 index 00000000000..67b09259d9f --- /dev/null +++ b/Mage.Sets/src/mage/sets/JuniorAPACSeries.java @@ -0,0 +1,30 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/pjas + */ +public class JuniorAPACSeries extends ExpansionSet { + + private static final JuniorAPACSeries instance = new JuniorAPACSeries(); + + public static JuniorAPACSeries getInstance() { + return instance; + } + + private JuniorAPACSeries() { + super("Junior APAC Series", "PJAS", ExpansionSet.buildDate(2008, 1, 1), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Elvish Champion", "2U08", Rarity.RARE, mage.cards.e.ElvishChampion.class)); + cards.add(new SetCardInfo("Glorious Anthem", "1U08", Rarity.RARE, mage.cards.g.GloriousAnthem.class)); + cards.add(new SetCardInfo("Sakura-Tribe Elder", "1U06", Rarity.RARE, mage.cards.s.SakuraTribeElder.class)); + cards.add(new SetCardInfo("Shard Phoenix", "2U06", Rarity.RARE, mage.cards.s.ShardPhoenix.class)); + cards.add(new SetCardInfo("Soltari Priest", "1U07", Rarity.RARE, mage.cards.s.SoltariPriest.class)); + cards.add(new SetCardInfo("Whirling Dervish", "2U07", Rarity.RARE, mage.cards.w.WhirlingDervish.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/JuniorSeriesEurope.java b/Mage.Sets/src/mage/sets/JuniorSeriesEurope.java new file mode 100644 index 00000000000..4782590d6e7 --- /dev/null +++ b/Mage.Sets/src/mage/sets/JuniorSeriesEurope.java @@ -0,0 +1,32 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/pjse + */ +public class JuniorSeriesEurope extends ExpansionSet { + + private static final JuniorSeriesEurope instance = new JuniorSeriesEurope(); + + public static JuniorSeriesEurope getInstance() { + return instance; + } + + private JuniorSeriesEurope() { + super("Junior Series Europe", "PJSE", ExpansionSet.buildDate(2008, 1, 1), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Elvish Champion", "2E08", Rarity.RARE, mage.cards.e.ElvishChampion.class)); + cards.add(new SetCardInfo("Glorious Anthem", "1E08", Rarity.RARE, mage.cards.g.GloriousAnthem.class)); + cards.add(new SetCardInfo("Royal Assassin", "2E05", Rarity.RARE, mage.cards.r.RoyalAssassin.class)); + cards.add(new SetCardInfo("Sakura-Tribe Elder", "1E06", Rarity.RARE, mage.cards.s.SakuraTribeElder.class)); + cards.add(new SetCardInfo("Shard Phoenix", "2E06", Rarity.RARE, mage.cards.s.ShardPhoenix.class)); + cards.add(new SetCardInfo("Slith Firewalker", "1E05", Rarity.RARE, mage.cards.s.SlithFirewalker.class)); + cards.add(new SetCardInfo("Soltari Priest", "1E07", Rarity.RARE, mage.cards.s.SoltariPriest.class)); + cards.add(new SetCardInfo("Whirling Dervish", "2E07", Rarity.RARE, mage.cards.w.WhirlingDervish.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/JuniorSuperSeries.java b/Mage.Sets/src/mage/sets/JuniorSuperSeries.java new file mode 100644 index 00000000000..74b4437da8d --- /dev/null +++ b/Mage.Sets/src/mage/sets/JuniorSuperSeries.java @@ -0,0 +1,42 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/psus + */ +public class JuniorSuperSeries extends ExpansionSet { + + private static final JuniorSuperSeries instance = new JuniorSuperSeries(); + + public static JuniorSuperSeries getInstance() { + return instance; + } + + private JuniorSuperSeries() { + super("Junior Super Series", "PSUS", ExpansionSet.buildDate(2008, 1, 1), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("City of Brass", 6, Rarity.RARE, mage.cards.c.CityOfBrass.class)); + cards.add(new SetCardInfo("Crusade", 4, Rarity.RARE, mage.cards.c.Crusade.class)); + cards.add(new SetCardInfo("Elvish Champion", 17, Rarity.RARE, mage.cards.e.ElvishChampion.class)); + cards.add(new SetCardInfo("Elvish Lyrist", 5, Rarity.RARE, mage.cards.e.ElvishLyrist.class)); + cards.add(new SetCardInfo("Giant Growth", 8, Rarity.RARE, mage.cards.g.GiantGrowth.class)); + cards.add(new SetCardInfo("Glorious Anthem", 16, Rarity.RARE, mage.cards.g.GloriousAnthem.class)); + cards.add(new SetCardInfo("Lord of Atlantis", 3, Rarity.RARE, mage.cards.l.LordOfAtlantis.class)); + cards.add(new SetCardInfo("Mad Auntie", 18, Rarity.RARE, mage.cards.m.MadAuntie.class)); + cards.add(new SetCardInfo("Royal Assassin", 11, Rarity.RARE, mage.cards.r.RoyalAssassin.class)); + cards.add(new SetCardInfo("Sakura-Tribe Elder", 12, Rarity.RARE, mage.cards.s.SakuraTribeElder.class)); + cards.add(new SetCardInfo("Serra Avatar", 2, Rarity.RARE, mage.cards.s.SerraAvatar.class)); + cards.add(new SetCardInfo("Shard Phoenix", 13, Rarity.RARE, mage.cards.s.ShardPhoenix.class)); + cards.add(new SetCardInfo("Slith Firewalker", 10, Rarity.RARE, mage.cards.s.SlithFirewalker.class)); + cards.add(new SetCardInfo("Soltari Priest", 14, Rarity.RARE, mage.cards.s.SoltariPriest.class)); + cards.add(new SetCardInfo("Thran Quarry", 1, Rarity.RARE, mage.cards.t.ThranQuarry.class)); + cards.add(new SetCardInfo("Two-Headed Dragon", 9, Rarity.RARE, mage.cards.t.TwoHeadedDragon.class)); + cards.add(new SetCardInfo("Volcanic Hammer", 7, Rarity.RARE, mage.cards.v.VolcanicHammer.class)); + cards.add(new SetCardInfo("Whirling Dervish", 15, Rarity.RARE, mage.cards.w.WhirlingDervish.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/MasterpieceSeries.java b/Mage.Sets/src/mage/sets/KaladeshInventions.java similarity index 95% rename from Mage.Sets/src/mage/sets/MasterpieceSeries.java rename to Mage.Sets/src/mage/sets/KaladeshInventions.java index a338aff7875..e9081d98caf 100644 --- a/Mage.Sets/src/mage/sets/MasterpieceSeries.java +++ b/Mage.Sets/src/mage/sets/KaladeshInventions.java @@ -1,4 +1,3 @@ - package mage.sets; import mage.cards.CardGraphicInfo; @@ -8,23 +7,26 @@ import mage.constants.Rarity; import mage.constants.SetType; /** + * https://scryfall.com/sets/mps * * @author fireshoes */ -public final class MasterpieceSeries extends ExpansionSet { +public final class KaladeshInventions extends ExpansionSet { - private static final MasterpieceSeries instance = new MasterpieceSeries(); + private static final KaladeshInventions instance = new KaladeshInventions(); - public static MasterpieceSeries getInstance() { + public static KaladeshInventions getInstance() { return instance; } - private MasterpieceSeries() { - super("Masterpiece Series", "MPS", ExpansionSet.buildDate(2016, 9, 30), SetType.PROMOTIONAL); + private KaladeshInventions() { + super("Kaladesh Inventions", "MPS", ExpansionSet.buildDate(2016, 9, 30), SetType.PROMOTIONAL); this.blockName = "Masterpiece Series"; this.hasBoosters = false; this.hasBasicLands = false; + CardGraphicInfo cardGraphicInfo = new CardGraphicInfo(FrameStyle.KLD_INVENTION, false); + cards.add(new SetCardInfo("Aether Vial", 6, Rarity.MYTHIC, mage.cards.a.AetherVial.class, cardGraphicInfo)); cards.add(new SetCardInfo("Arcbound Ravager", 31, Rarity.MYTHIC, mage.cards.a.ArcboundRavager.class, cardGraphicInfo)); cards.add(new SetCardInfo("Black Vise", 32, Rarity.MYTHIC, mage.cards.b.BlackVise.class, cardGraphicInfo)); diff --git a/Mage.Sets/src/mage/sets/KaladeshPromos.java b/Mage.Sets/src/mage/sets/KaladeshPromos.java new file mode 100644 index 00000000000..c31b2ce2c87 --- /dev/null +++ b/Mage.Sets/src/mage/sets/KaladeshPromos.java @@ -0,0 +1,99 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/pkld + */ +public class KaladeshPromos extends ExpansionSet { + + private static final KaladeshPromos instance = new KaladeshPromos(); + + public static KaladeshPromos getInstance() { + return instance; + } + + private KaladeshPromos() { + super("Kaladesh Promos", "PKLD", ExpansionSet.buildDate(2016, 9, 30), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Aetherflux Reservoir", "192s", Rarity.RARE, mage.cards.a.AetherfluxReservoir.class)); + cards.add(new SetCardInfo("Aethersquall Ancient", "39s", Rarity.RARE, mage.cards.a.AethersquallAncient.class)); + cards.add(new SetCardInfo("Aetherstorm Roc", "3s", Rarity.RARE, mage.cards.a.AetherstormRoc.class)); + cards.add(new SetCardInfo("Aetherworks Marvel", "193s", Rarity.MYTHIC, mage.cards.a.AetherworksMarvel.class)); + cards.add(new SetCardInfo("Angel of Invention", "4s", Rarity.MYTHIC, mage.cards.a.AngelOfInvention.class)); + cards.add(new SetCardInfo("Animation Module", "194s", Rarity.RARE, mage.cards.a.AnimationModule.class)); + cards.add(new SetCardInfo("Architect of the Untamed", "143s", Rarity.RARE, mage.cards.a.ArchitectOfTheUntamed.class)); + cards.add(new SetCardInfo("Authority of the Consuls", "5s", Rarity.RARE, mage.cards.a.AuthorityOfTheConsuls.class)); + cards.add(new SetCardInfo("Blooming Marsh", "243s", Rarity.RARE, mage.cards.b.BloomingMarsh.class)); + cards.add(new SetCardInfo("Bomat Courier", "199s", Rarity.RARE, mage.cards.b.BomatCourier.class)); + cards.add(new SetCardInfo("Botanical Sanctum", "244s", Rarity.RARE, mage.cards.b.BotanicalSanctum.class)); + cards.add(new SetCardInfo("Bristling Hydra", "147s", Rarity.RARE, mage.cards.b.BristlingHydra.class)); + cards.add(new SetCardInfo("Captured by the Consulate", "8s", Rarity.RARE, mage.cards.c.CapturedByTheConsulate.class)); + cards.add(new SetCardInfo("Cataclysmic Gearhulk", "9s", Rarity.MYTHIC, mage.cards.c.CataclysmicGearhulk.class)); + cards.add(new SetCardInfo("Chandra, Torch of Defiance", "110s", Rarity.MYTHIC, mage.cards.c.ChandraTorchOfDefiance.class)); + cards.add(new SetCardInfo("Chief of the Foundry", 200, Rarity.UNCOMMON, mage.cards.c.ChiefOfTheFoundry.class)); + cards.add(new SetCardInfo("Combustible Gearhulk", "112p", Rarity.MYTHIC, mage.cards.c.CombustibleGearhulk.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Combustible Gearhulk", "112s", Rarity.MYTHIC, mage.cards.c.CombustibleGearhulk.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Concealed Courtyard", "245s", Rarity.RARE, mage.cards.c.ConcealedCourtyard.class)); + cards.add(new SetCardInfo("Confiscation Coup", "41s", Rarity.RARE, mage.cards.c.ConfiscationCoup.class)); + cards.add(new SetCardInfo("Cultivator of Blades", 151, Rarity.RARE, mage.cards.c.CultivatorOfBlades.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Cultivator of Blades", "151s", Rarity.RARE, mage.cards.c.CultivatorOfBlades.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Cultivator's Caravan", "203s", Rarity.RARE, mage.cards.c.CultivatorsCaravan.class)); + cards.add(new SetCardInfo("Deadlock Trap", "204s", Rarity.RARE, mage.cards.d.DeadlockTrap.class)); + cards.add(new SetCardInfo("Demon of Dark Schemes", "73s", Rarity.MYTHIC, mage.cards.d.DemonOfDarkSchemes.class)); + cards.add(new SetCardInfo("Depala, Pilot Exemplar", "178s", Rarity.RARE, mage.cards.d.DepalaPilotExemplar.class)); + cards.add(new SetCardInfo("Dovin Baan", "179s", Rarity.MYTHIC, mage.cards.d.DovinBaan.class)); + cards.add(new SetCardInfo("Dubious Challenge", "152s", Rarity.RARE, mage.cards.d.DubiousChallenge.class)); + cards.add(new SetCardInfo("Dynavolt Tower", "208s", Rarity.RARE, mage.cards.d.DynavoltTower.class)); + cards.add(new SetCardInfo("Electrostatic Pummeler", "210s", Rarity.RARE, mage.cards.e.ElectrostaticPummeler.class)); + cards.add(new SetCardInfo("Eliminate the Competition", "78s", Rarity.RARE, mage.cards.e.EliminateTheCompetition.class)); + cards.add(new SetCardInfo("Essence Extraction", 80, Rarity.UNCOMMON, mage.cards.e.EssenceExtraction.class)); + cards.add(new SetCardInfo("Fateful Showdown", "114s", Rarity.RARE, mage.cards.f.FatefulShowdown.class)); + cards.add(new SetCardInfo("Fleetwheel Cruiser", "214s", Rarity.RARE, mage.cards.f.FleetwheelCruiser.class)); + cards.add(new SetCardInfo("Fumigate", "15s", Rarity.RARE, mage.cards.f.Fumigate.class)); + cards.add(new SetCardInfo("Ghirapur Orrery", "216s", Rarity.RARE, mage.cards.g.GhirapurOrrery.class)); + cards.add(new SetCardInfo("Gonti, Lord of Luxury", "84s", Rarity.RARE, mage.cards.g.GontiLordOfLuxury.class)); + cards.add(new SetCardInfo("Insidious Will", "52s", Rarity.RARE, mage.cards.i.InsidiousWill.class)); + cards.add(new SetCardInfo("Inspiring Vantage", "246s", Rarity.RARE, mage.cards.i.InspiringVantage.class)); + cards.add(new SetCardInfo("Inventors' Fair", "247s", Rarity.RARE, mage.cards.i.InventorsFair.class)); + cards.add(new SetCardInfo("Kambal, Consul of Allocation", "183s", Rarity.RARE, mage.cards.k.KambalConsulOfAllocation.class)); + cards.add(new SetCardInfo("Key to the City", "220s", Rarity.RARE, mage.cards.k.KeyToTheCity.class)); + cards.add(new SetCardInfo("Lathnu Hellion", "121s", Rarity.RARE, mage.cards.l.LathnuHellion.class)); + cards.add(new SetCardInfo("Lost Legacy", "88s", Rarity.RARE, mage.cards.l.LostLegacy.class)); + cards.add(new SetCardInfo("Madcap Experiment", "122s", Rarity.RARE, mage.cards.m.MadcapExperiment.class)); + cards.add(new SetCardInfo("Marionette Master", "90s", Rarity.RARE, mage.cards.m.MarionetteMaster.class)); + cards.add(new SetCardInfo("Master Trinketeer", "21s", Rarity.RARE, mage.cards.m.MasterTrinketeer.class)); + cards.add(new SetCardInfo("Metallurgic Summonings", "56s", Rarity.MYTHIC, mage.cards.m.MetallurgicSummonings.class)); + cards.add(new SetCardInfo("Metalwork Colossus", "222s", Rarity.RARE, mage.cards.m.MetalworkColossus.class)); + cards.add(new SetCardInfo("Midnight Oil", "92s", Rarity.RARE, mage.cards.m.MidnightOil.class)); + cards.add(new SetCardInfo("Multiform Wonder", "223s", Rarity.RARE, mage.cards.m.MultiformWonder.class)); + cards.add(new SetCardInfo("Nissa, Vital Force", "163s", Rarity.MYTHIC, mage.cards.n.NissaVitalForce.class)); + cards.add(new SetCardInfo("Noxious Gearhulk", "96p", Rarity.MYTHIC, mage.cards.n.NoxiousGearhulk.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Noxious Gearhulk", "96s", Rarity.MYTHIC, mage.cards.n.NoxiousGearhulk.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Oviya Pashiri, Sage Lifecrafter", "165s", Rarity.RARE, mage.cards.o.OviyaPashiriSageLifecrafter.class)); + cards.add(new SetCardInfo("Padeem, Consul of Innovation", "59s", Rarity.RARE, mage.cards.p.PadeemConsulOfInnovation.class)); + cards.add(new SetCardInfo("Panharmonicon", "226s", Rarity.RARE, mage.cards.p.Panharmonicon.class)); + cards.add(new SetCardInfo("Paradoxical Outcome", "60s", Rarity.RARE, mage.cards.p.ParadoxicalOutcome.class)); + cards.add(new SetCardInfo("Pia Nalaar", "124s", Rarity.RARE, mage.cards.p.PiaNalaar.class)); + cards.add(new SetCardInfo("Rashmi, Eternities Crafter", "184s", Rarity.MYTHIC, mage.cards.r.RashmiEternitiesCrafter.class)); + cards.add(new SetCardInfo("Saheeli Rai", "186s", Rarity.MYTHIC, mage.cards.s.SaheeliRai.class)); + cards.add(new SetCardInfo("Saheeli's Artistry", 62, Rarity.RARE, mage.cards.s.SaheelisArtistry.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Saheeli's Artistry", "62s", Rarity.RARE, mage.cards.s.SaheelisArtistry.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Scrapheap Scrounger", "231s", Rarity.RARE, mage.cards.s.ScrapheapScrounger.class)); + cards.add(new SetCardInfo("Skyship Stalker", 130, Rarity.RARE, mage.cards.s.SkyshipStalker.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Skyship Stalker", "130s", Rarity.RARE, mage.cards.s.SkyshipStalker.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Skysovereign, Consul Flagship", "234s", Rarity.MYTHIC, mage.cards.s.SkysovereignConsulFlagship.class)); + cards.add(new SetCardInfo("Smuggler's Copter", "235s", Rarity.RARE, mage.cards.s.SmugglersCopter.class)); + cards.add(new SetCardInfo("Spirebluff Canal", "249s", Rarity.RARE, mage.cards.s.SpirebluffCanal.class)); + cards.add(new SetCardInfo("Syndicate Trafficker", "101s", Rarity.RARE, mage.cards.s.SyndicateTrafficker.class)); + cards.add(new SetCardInfo("Territorial Gorger", "136s", Rarity.RARE, mage.cards.t.TerritorialGorger.class)); + cards.add(new SetCardInfo("Toolcraft Exemplar", "32s", Rarity.RARE, mage.cards.t.ToolcraftExemplar.class)); + cards.add(new SetCardInfo("Torrential Gearhulk", "67s", Rarity.MYTHIC, mage.cards.t.TorrentialGearhulk.class)); + cards.add(new SetCardInfo("Verdurous Gearhulk", "172s", Rarity.MYTHIC, mage.cards.v.VerdurousGearhulk.class)); + cards.add(new SetCardInfo("Wildest Dreams", "174s", Rarity.RARE, mage.cards.w.WildestDreams.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/KhansOfTarkirPromos.java b/Mage.Sets/src/mage/sets/KhansOfTarkirPromos.java new file mode 100644 index 00000000000..4ba4fd8f228 --- /dev/null +++ b/Mage.Sets/src/mage/sets/KhansOfTarkirPromos.java @@ -0,0 +1,74 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/pktk + */ +public class KhansOfTarkirPromos extends ExpansionSet { + + private static final KhansOfTarkirPromos instance = new KhansOfTarkirPromos(); + + public static KhansOfTarkirPromos getInstance() { + return instance; + } + + private KhansOfTarkirPromos() { + super("Khans of Tarkir Promos", "PKTK", ExpansionSet.buildDate(2014, 9, 27), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Abzan Ascendancy", "160s", Rarity.RARE, mage.cards.a.AbzanAscendancy.class)); + cards.add(new SetCardInfo("Anafenza, the Foremost", "163s", Rarity.MYTHIC, mage.cards.a.AnafenzaTheForemost.class)); + cards.add(new SetCardInfo("Ankle Shanker", 164, Rarity.RARE, mage.cards.a.AnkleShanker.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Ankle Shanker", "164s", Rarity.RARE, mage.cards.a.AnkleShanker.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Avalanche Tusker", 166, Rarity.RARE, mage.cards.a.AvalancheTusker.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Avalanche Tusker", "166s", Rarity.RARE, mage.cards.a.AvalancheTusker.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Bloodsoaked Champion", "66s", Rarity.RARE, mage.cards.b.BloodsoakedChampion.class)); + cards.add(new SetCardInfo("Butcher of the Horde", "168s", Rarity.RARE, mage.cards.b.ButcherOfTheHorde.class)); + cards.add(new SetCardInfo("Crackling Doom", "171s", Rarity.RARE, mage.cards.c.CracklingDoom.class)); + cards.add(new SetCardInfo("Crater's Claws", "106s", Rarity.RARE, mage.cards.c.CratersClaws.class)); + cards.add(new SetCardInfo("Deflecting Palm", "173s", Rarity.RARE, mage.cards.d.DeflectingPalm.class)); + cards.add(new SetCardInfo("Dig Through Time", "36s", Rarity.RARE, mage.cards.d.DigThroughTime.class)); + cards.add(new SetCardInfo("Dragon Throne of Tarkir", 219, Rarity.RARE, mage.cards.d.DragonThroneOfTarkir.class)); + cards.add(new SetCardInfo("Dragon-Style Twins", "108s", Rarity.RARE, mage.cards.d.DragonStyleTwins.class)); + cards.add(new SetCardInfo("Duneblast", "174s", Rarity.RARE, mage.cards.d.Duneblast.class)); + cards.add(new SetCardInfo("Flying Crane Technique", "176s", Rarity.RARE, mage.cards.f.FlyingCraneTechnique.class)); + cards.add(new SetCardInfo("Grim Haruspex", "73s", Rarity.RARE, mage.cards.g.GrimHaruspex.class)); + cards.add(new SetCardInfo("Hardened Scales", "133s", Rarity.RARE, mage.cards.h.HardenedScales.class)); + cards.add(new SetCardInfo("Heir of the Wilds", 134, Rarity.UNCOMMON, mage.cards.h.HeirOfTheWilds.class)); + cards.add(new SetCardInfo("Herald of Anafenza", "12s", Rarity.RARE, mage.cards.h.HeraldOfAnafenza.class)); + cards.add(new SetCardInfo("High Sentinels of Arashin", "13s", Rarity.RARE, mage.cards.h.HighSentinelsOfArashin.class)); + cards.add(new SetCardInfo("Icy Blast", "42s", Rarity.RARE, mage.cards.i.IcyBlast.class)); + cards.add(new SetCardInfo("Ivorytusk Fortress", 179, Rarity.RARE, mage.cards.i.IvorytuskFortress.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Ivorytusk Fortress", "179s", Rarity.RARE, mage.cards.i.IvorytuskFortress.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Jeering Instigator", "113s", Rarity.RARE, mage.cards.j.JeeringInstigator.class)); + cards.add(new SetCardInfo("Jeskai Ascendancy", "180s", Rarity.RARE, mage.cards.j.JeskaiAscendancy.class)); + cards.add(new SetCardInfo("Kheru Lich Lord", "182s", Rarity.RARE, mage.cards.k.KheruLichLord.class)); + cards.add(new SetCardInfo("Mardu Ascendancy", "185s", Rarity.RARE, mage.cards.m.MarduAscendancy.class)); + cards.add(new SetCardInfo("Master of Pearls", "18s", Rarity.RARE, mage.cards.m.MasterOfPearls.class)); + cards.add(new SetCardInfo("Narset, Enlightened Master", "190s", Rarity.MYTHIC, mage.cards.n.NarsetEnlightenedMaster.class)); + cards.add(new SetCardInfo("Necropolis Fiend", "82s", Rarity.RARE, mage.cards.n.NecropolisFiend.class)); + cards.add(new SetCardInfo("Rakshasa Vizier", 193, Rarity.RARE, mage.cards.r.RakshasaVizier.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Rakshasa Vizier", "193s", Rarity.RARE, mage.cards.r.RakshasaVizier.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Rattleclaw Mystic", 144, Rarity.RARE, mage.cards.r.RattleclawMystic.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Rattleclaw Mystic", "144s", Rarity.RARE, mage.cards.r.RattleclawMystic.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Sage of the Inward Eye", 195, Rarity.RARE, mage.cards.s.SageOfTheInwardEye.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Sage of the Inward Eye", "195s", Rarity.RARE, mage.cards.s.SageOfTheInwardEye.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Sidisi, Brood Tyrant", "199s", Rarity.MYTHIC, mage.cards.s.SidisiBroodTyrant.class)); + cards.add(new SetCardInfo("Siege Rhino", "200s", Rarity.RARE, mage.cards.s.SiegeRhino.class)); + cards.add(new SetCardInfo("Sultai Ascendancy", "203s", Rarity.RARE, mage.cards.s.SultaiAscendancy.class)); + cards.add(new SetCardInfo("Sultai Charm", 204, Rarity.UNCOMMON, mage.cards.s.SultaiCharm.class)); + cards.add(new SetCardInfo("Surrak Dragonclaw", "206s", Rarity.MYTHIC, mage.cards.s.SurrakDragonclaw.class)); + cards.add(new SetCardInfo("Temur Ascendancy", "207s", Rarity.RARE, mage.cards.t.TemurAscendancy.class)); + cards.add(new SetCardInfo("Thousand Winds", "58s", Rarity.RARE, mage.cards.t.ThousandWinds.class)); + cards.add(new SetCardInfo("Trail of Mystery", "154s", Rarity.RARE, mage.cards.t.TrailOfMystery.class)); + cards.add(new SetCardInfo("Trap Essence", "209s", Rarity.RARE, mage.cards.t.TrapEssence.class)); + cards.add(new SetCardInfo("Utter End", 210, Rarity.RARE, mage.cards.u.UtterEnd.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Utter End", "210s", Rarity.RARE, mage.cards.u.UtterEnd.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Villainous Wealth", "211s", Rarity.RARE, mage.cards.v.VillainousWealth.class)); + cards.add(new SetCardInfo("Zurgo Helmsmasher", "214s", Rarity.MYTHIC, mage.cards.z.ZurgoHelmsmasher.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/LaunchParties.java b/Mage.Sets/src/mage/sets/LaunchParties.java new file mode 100644 index 00000000000..8beb167b1d3 --- /dev/null +++ b/Mage.Sets/src/mage/sets/LaunchParties.java @@ -0,0 +1,30 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/plpa + */ +public class LaunchParties extends ExpansionSet { + + private static final LaunchParties instance = new LaunchParties(); + + public static LaunchParties getInstance() { + return instance; + } + + private LaunchParties() { + super("Launch Parties", "PLPA", ExpansionSet.buildDate(2014, 6, 6), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Earwig Squad", 1, Rarity.RARE, mage.cards.e.EarwigSquad.class)); + cards.add(new SetCardInfo("Figure of Destiny", 3, Rarity.RARE, mage.cards.f.FigureOfDestiny.class)); + cards.add(new SetCardInfo("Knight of New Alara", 6, Rarity.RARE, mage.cards.k.KnightOfNewAlara.class)); + cards.add(new SetCardInfo("Magister of Worth", 7, Rarity.RARE, mage.cards.m.MagisterOfWorth.class)); + cards.add(new SetCardInfo("Obelisk of Alara", 5, Rarity.RARE, mage.cards.o.ObeliskOfAlara.class)); + cards.add(new SetCardInfo("Vexing Shusher", 2, Rarity.RARE, mage.cards.v.VexingShusher.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/LaunchParty.java b/Mage.Sets/src/mage/sets/LaunchParty.java deleted file mode 100644 index acf35454e16..00000000000 --- a/Mage.Sets/src/mage/sets/LaunchParty.java +++ /dev/null @@ -1,68 +0,0 @@ - -package mage.sets; - -import mage.cards.ExpansionSet; -import mage.constants.Rarity; -import mage.constants.SetType; - -/** - * - * @author fireshoes - */ -public final class LaunchParty extends ExpansionSet { - - private static final LaunchParty instance = new LaunchParty(); - - public static LaunchParty getInstance() { - return instance; - } - - private LaunchParty() { - super("Launch Party", "MLP", ExpansionSet.buildDate(2011, 6, 17), SetType.PROMOTIONAL); - this.hasBoosters = false; - this.hasBasicLands = false; - cards.add(new SetCardInfo("Ajani Vengeant", 4, Rarity.MYTHIC, mage.cards.a.AjaniVengeant.class)); - cards.add(new SetCardInfo("Ancient Hellkite", 11, Rarity.RARE, mage.cards.a.AncientHellkite.class)); - cards.add(new SetCardInfo("Angel of Deliverance", 35, Rarity.RARE, mage.cards.a.AngelOfDeliverance.class)); - cards.add(new SetCardInfo("Ant Queen", 7, Rarity.RARE, mage.cards.a.AntQueen.class)); - cards.add(new SetCardInfo("Bident of Thassa", 24, Rarity.RARE, mage.cards.b.BidentOfThassa.class)); - cards.add(new SetCardInfo("Bishop of Rebirth", 41, Rarity.RARE, mage.cards.b.BishopOfRebirth.class)); - cards.add(new SetCardInfo("Blight Herder", 32, Rarity.RARE, mage.cards.b.BlightHerder.class)); - cards.add(new SetCardInfo("Breaking // Entering", 22, Rarity.RARE, mage.cards.b.BreakingEntering.class)); - cards.add(new SetCardInfo("Colossal Whale", 23, Rarity.RARE, mage.cards.c.ColossalWhale.class)); - cards.add(new SetCardInfo("Deadbridge Goliath", 20, Rarity.RARE, mage.cards.d.DeadbridgeGoliath.class)); - cards.add(new SetCardInfo("Deathbringer Regent", 30, Rarity.RARE, mage.cards.d.DeathbringerRegent.class)); - cards.add(new SetCardInfo("Dictate of the Twin Gods", 26, Rarity.RARE, mage.cards.d.DictateOfTheTwinGods.class)); - cards.add(new SetCardInfo("Dragon Throne of Tarkir", 27, Rarity.RARE, mage.cards.d.DragonThroneOfTarkir.class)); - cards.add(new SetCardInfo("Earwig Squad", 1, Rarity.RARE, mage.cards.e.EarwigSquad.class)); - cards.add(new SetCardInfo("Endbringer", 34, Rarity.RARE, mage.cards.e.Endbringer.class)); - cards.add(new SetCardInfo("Figure of Destiny", 3, Rarity.RARE, mage.cards.f.FigureOfDestiny.class)); - cards.add(new SetCardInfo("Garruk's Horde", 15, Rarity.RARE, mage.cards.g.GarruksHorde.class)); - cards.add(new SetCardInfo("Identity Thief", 33, Rarity.RARE, mage.cards.i.IdentityThief.class)); - cards.add(new SetCardInfo("In Garruk's Wake", 28, Rarity.RARE, mage.cards.i.InGarruksWake.class)); - cards.add(new SetCardInfo("Joraga Warcaller", 9, Rarity.RARE, mage.cards.j.JoragaWarcaller.class)); - cards.add(new SetCardInfo("Knight of New Alara", 6, Rarity.RARE, mage.cards.k.KnightOfNewAlara.class)); - cards.add(new SetCardInfo("Lord of Shatterskull Pass", 10, Rarity.RARE, mage.cards.l.LordOfShatterskullPass.class)); - cards.add(new SetCardInfo("Ludevic's Abomination", 1064, Rarity.RARE, mage.cards.l.LudevicsAbomination.class)); - cards.add(new SetCardInfo("Ludevic's Test Subject", 16, Rarity.RARE, mage.cards.l.LudevicsTestSubject.class)); - cards.add(new SetCardInfo("Mizzium Meddler", 31, Rarity.RARE, mage.cards.m.MizziumMeddler.class)); - cards.add(new SetCardInfo("Mondronen Shaman", 17, Rarity.RARE, mage.cards.m.MondronenShaman.class)); - cards.add(new SetCardInfo("Obelisk of Alara", 5, Rarity.RARE, mage.cards.o.ObeliskOfAlara.class)); - cards.add(new SetCardInfo("Oracle's Vault", 39, Rarity.RARE, mage.cards.o.OraclesVault.class)); - cards.add(new SetCardInfo("Phyrexian Metamorph", 14, Rarity.RARE, mage.cards.p.PhyrexianMetamorph.class)); - cards.add(new SetCardInfo("Quicksmith Rebel", 38, Rarity.RARE, mage.cards.q.QuicksmithRebel.class)); - cards.add(new SetCardInfo("Ramunap Excavator", 40, Rarity.RARE, mage.cards.r.RamunapExcavator.class)); - cards.add(new SetCardInfo("Restoration Angel", 18, Rarity.RARE, mage.cards.r.RestorationAngel.class)); - cards.add(new SetCardInfo("Saheeli's Artistry", 37, Rarity.RARE, mage.cards.s.SaheelisArtistry.class)); - cards.add(new SetCardInfo("Sandsteppe Mastodon", 29, Rarity.RARE, mage.cards.s.SandsteppeMastodon.class)); - cards.add(new SetCardInfo("Skarrg Goliath", 21, Rarity.RARE, mage.cards.s.SkarrgGoliath.class)); - cards.add(new SetCardInfo("Staff of Nin", 19, Rarity.RARE, mage.cards.s.StaffOfNin.class)); - cards.add(new SetCardInfo("Steel Hellkite", 12, Rarity.RARE, mage.cards.s.SteelHellkite.class)); - cards.add(new SetCardInfo("Thopter Assembly", 13, Rarity.RARE, mage.cards.t.ThopterAssembly.class)); - cards.add(new SetCardInfo("Tovolar's Magehunter", 98, Rarity.RARE, mage.cards.t.TovolarsMagehunter.class)); - cards.add(new SetCardInfo("Tromokratis", 25, Rarity.RARE, mage.cards.t.Tromokratis.class)); - cards.add(new SetCardInfo("Valakut, the Molten Pinnacle", 8, Rarity.RARE, mage.cards.v.ValakutTheMoltenPinnacle.class)); - cards.add(new SetCardInfo("Vexing Shusher", 2, Rarity.RARE, mage.cards.v.VexingShusher.class)); - } - -} diff --git a/Mage.Sets/src/mage/sets/LegacyChampionship.java b/Mage.Sets/src/mage/sets/LegacyChampionship.java new file mode 100644 index 00000000000..0cbd5bb6bac --- /dev/null +++ b/Mage.Sets/src/mage/sets/LegacyChampionship.java @@ -0,0 +1,38 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/olgc + */ +public class LegacyChampionship extends ExpansionSet { + + private static final LegacyChampionship instance = new LegacyChampionship(); + + public static LegacyChampionship getInstance() { + return instance; + } + + private LegacyChampionship() { + super("Legacy Championship", "OLGC", ExpansionSet.buildDate(2019, 11, 3), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Badlands", "2016NA", Rarity.MYTHIC, mage.cards.b.Badlands.class)); + cards.add(new SetCardInfo("Bayou", "2019A", Rarity.MYTHIC, mage.cards.b.Bayou.class)); + cards.add(new SetCardInfo("Brainstorm", 2012, Rarity.RARE, mage.cards.b.Brainstorm.class)); + cards.add(new SetCardInfo("City of Traitors", "2019NA", Rarity.MYTHIC, mage.cards.c.CityOfTraitors.class)); + cards.add(new SetCardInfo("Force of Will", 2011, Rarity.RARE, mage.cards.f.ForceOfWill.class)); + cards.add(new SetCardInfo("Gaea's Cradle", 2014, Rarity.MYTHIC, mage.cards.g.GaeasCradle.class)); + cards.add(new SetCardInfo("Plateau", "2018A", Rarity.MYTHIC, mage.cards.p.Plateau.class)); + cards.add(new SetCardInfo("Savannah", "2017NA", Rarity.MYTHIC, mage.cards.s.Savannah.class)); + cards.add(new SetCardInfo("Scrubland", 2018, Rarity.MYTHIC, mage.cards.s.Scrubland.class)); + cards.add(new SetCardInfo("Taiga", "2017EU", Rarity.MYTHIC, mage.cards.t.Taiga.class)); + cards.add(new SetCardInfo("Tundra", 2015, Rarity.MYTHIC, mage.cards.t.Tundra.class)); + cards.add(new SetCardInfo("Underground Sea", "2016EU", Rarity.MYTHIC, mage.cards.u.UndergroundSea.class)); + cards.add(new SetCardInfo("Volcanic Island", "2018NA", Rarity.MYTHIC, mage.cards.v.VolcanicIsland.class)); + cards.add(new SetCardInfo("Wasteland", 2013, Rarity.UNCOMMON, mage.cards.w.Wasteland.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/LegendaryCubePrizePack.java b/Mage.Sets/src/mage/sets/LegendaryCubePrizePack.java new file mode 100644 index 00000000000..0d0d8862839 --- /dev/null +++ b/Mage.Sets/src/mage/sets/LegendaryCubePrizePack.java @@ -0,0 +1,174 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://mtg.gamepedia.com/Legendary_Cube + * https://scryfall.com/sets/pz1 + */ +public class LegendaryCubePrizePack extends ExpansionSet { + + private static final LegendaryCubePrizePack instance = new LegendaryCubePrizePack(); + + public static LegendaryCubePrizePack getInstance() { + return instance; + } + + private LegendaryCubePrizePack() { + super("Legendary Cube Prize Pack", "PZ1", ExpansionSet.buildDate(2015, 11, 18), SetType.MAGIC_ONLINE); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Abyssal Persecutor", 38, Rarity.MYTHIC, mage.cards.a.AbyssalPersecutor.class)); + cards.add(new SetCardInfo("Aethersnatch", 18, Rarity.RARE, mage.cards.a.Aethersnatch.class)); + cards.add(new SetCardInfo("Anger", 53, Rarity.UNCOMMON, mage.cards.a.Anger.class)); + cards.add(new SetCardInfo("Animar, Soul of Elements", 93, Rarity.MYTHIC, mage.cards.a.AnimarSoulOfElements.class)); + cards.add(new SetCardInfo("Anya, Merciless Angel", 94, Rarity.RARE, mage.cards.a.AnyaMercilessAngel.class)); + cards.add(new SetCardInfo("Arachnogenesis", 70, Rarity.UNCOMMON, mage.cards.a.Arachnogenesis.class)); + cards.add(new SetCardInfo("Arcane Sanctum", 134, Rarity.UNCOMMON, mage.cards.a.ArcaneSanctum.class)); + cards.add(new SetCardInfo("Arjun, the Shifting Flame", 95, Rarity.RARE, mage.cards.a.ArjunTheShiftingFlame.class)); + cards.add(new SetCardInfo("Awaken the Sky Tyrant", 54, Rarity.RARE, mage.cards.a.AwakenTheSkyTyrant.class)); + cards.add(new SetCardInfo("Banshee of the Dread Choir", 39, Rarity.UNCOMMON, mage.cards.b.BansheeOfTheDreadChoir.class)); + cards.add(new SetCardInfo("Basalt Monolith", 120, Rarity.UNCOMMON, mage.cards.b.BasaltMonolith.class)); + cards.add(new SetCardInfo("Bastion Protector", 1, Rarity.UNCOMMON, mage.cards.b.BastionProtector.class)); + cards.add(new SetCardInfo("Behemoth Sledge", 96, Rarity.UNCOMMON, mage.cards.b.BehemothSledge.class)); + cards.add(new SetCardInfo("Blade of Selves", 121, Rarity.UNCOMMON, mage.cards.b.BladeOfSelves.class)); + cards.add(new SetCardInfo("Bloodspore Thrinax", 71, Rarity.RARE, mage.cards.b.BloodsporeThrinax.class)); + cards.add(new SetCardInfo("Bojuka Bog", 135, Rarity.UNCOMMON, mage.cards.b.BojukaBog.class)); + cards.add(new SetCardInfo("Brainstorm", 19, Rarity.UNCOMMON, mage.cards.b.Brainstorm.class)); + cards.add(new SetCardInfo("Brawn", 72, Rarity.UNCOMMON, mage.cards.b.Brawn.class)); + cards.add(new SetCardInfo("Broodbirth Viper", 20, Rarity.UNCOMMON, mage.cards.b.BroodbirthViper.class)); + cards.add(new SetCardInfo("Caller of the Pack", 73, Rarity.UNCOMMON, mage.cards.c.CallerOfThePack.class)); + cards.add(new SetCardInfo("Centaur Vinecrasher", 74, Rarity.RARE, mage.cards.c.CentaurVinecrasher.class)); + cards.add(new SetCardInfo("Chaos Warp", 55, Rarity.RARE, mage.cards.c.ChaosWarp.class)); + cards.add(new SetCardInfo("Command Beacon", 136, Rarity.UNCOMMON, mage.cards.c.CommandBeacon.class)); + cards.add(new SetCardInfo("Command Tower", 137, Rarity.UNCOMMON, mage.cards.c.CommandTower.class)); + cards.add(new SetCardInfo("Compulsive Research", 21, Rarity.UNCOMMON, mage.cards.c.CompulsiveResearch.class)); + cards.add(new SetCardInfo("Containment Priest", 2, Rarity.RARE, mage.cards.c.ContainmentPriest.class)); + cards.add(new SetCardInfo("Corpse Augur", 40, Rarity.RARE, mage.cards.c.CorpseAugur.class)); + cards.add(new SetCardInfo("Crumbling Necropolis", 138, Rarity.UNCOMMON, mage.cards.c.CrumblingNecropolis.class)); + cards.add(new SetCardInfo("Cultivate", 75, Rarity.UNCOMMON, mage.cards.c.Cultivate.class)); + cards.add(new SetCardInfo("Dack Fayden", 97, Rarity.MYTHIC, mage.cards.d.DackFayden.class)); + cards.add(new SetCardInfo("Daretti, Scrap Savant", 56, Rarity.MYTHIC, mage.cards.d.DarettiScrapSavant.class)); + cards.add(new SetCardInfo("Dawnbreak Reclaimer", 3, Rarity.RARE, mage.cards.d.DawnbreakReclaimer.class)); + cards.add(new SetCardInfo("Daxos the Returned", 98, Rarity.RARE, mage.cards.d.DaxosTheReturned.class)); + cards.add(new SetCardInfo("Daxos's Torment", 41, Rarity.RARE, mage.cards.d.DaxossTorment.class)); + cards.add(new SetCardInfo("Deadly Tempest", 42, Rarity.RARE, mage.cards.d.DeadlyTempest.class)); + cards.add(new SetCardInfo("Deceiver Exarch", 22, Rarity.UNCOMMON, mage.cards.d.DeceiverExarch.class)); + cards.add(new SetCardInfo("Decree of Pain", 43, Rarity.RARE, mage.cards.d.DecreeOfPain.class)); + cards.add(new SetCardInfo("Deep Analysis", 23, Rarity.UNCOMMON, mage.cards.d.DeepAnalysis.class)); + cards.add(new SetCardInfo("Desertion", 24, Rarity.RARE, mage.cards.d.Desertion.class)); + cards.add(new SetCardInfo("Diaochan, Artful Beauty", 57, Rarity.RARE, mage.cards.d.DiaochanArtfulBeauty.class)); + cards.add(new SetCardInfo("Dragonlair Spider", 99, Rarity.RARE, mage.cards.d.DragonlairSpider.class)); + cards.add(new SetCardInfo("Dread Summons", 44, Rarity.RARE, mage.cards.d.DreadSummons.class)); + cards.add(new SetCardInfo("Dreadship Reef", 139, Rarity.UNCOMMON, mage.cards.d.DreadshipReef.class)); + cards.add(new SetCardInfo("Dream Pillager", 58, Rarity.RARE, mage.cards.d.DreamPillager.class)); + cards.add(new SetCardInfo("Duplicant", 122, Rarity.RARE, mage.cards.d.Duplicant.class)); + cards.add(new SetCardInfo("Edric, Spymaster of Trest", 100, Rarity.RARE, mage.cards.e.EdricSpymasterOfTrest.class)); + cards.add(new SetCardInfo("Electrolyze", 101, Rarity.UNCOMMON, mage.cards.e.Electrolyze.class)); + cards.add(new SetCardInfo("Eternal Witness", 76, Rarity.UNCOMMON, mage.cards.e.EternalWitness.class)); + cards.add(new SetCardInfo("Ezuri's Predation", 77, Rarity.RARE, mage.cards.e.EzurisPredation.class)); + cards.add(new SetCardInfo("Ezuri, Claw of Progress", 102, Rarity.RARE, mage.cards.e.EzuriClawOfProgress.class)); + cards.add(new SetCardInfo("Fact or Fiction", 25, Rarity.UNCOMMON, mage.cards.f.FactOrFiction.class)); + cards.add(new SetCardInfo("Faithless Looting", 59, Rarity.UNCOMMON, mage.cards.f.FaithlessLooting.class)); + cards.add(new SetCardInfo("Fiery Confluence", 60, Rarity.RARE, mage.cards.f.FieryConfluence.class)); + cards.add(new SetCardInfo("Firespout", 103, Rarity.UNCOMMON, mage.cards.f.Firespout.class)); + cards.add(new SetCardInfo("Flametongue Kavu", 61, Rarity.UNCOMMON, mage.cards.f.FlametongueKavu.class)); + cards.add(new SetCardInfo("Flusterstorm", 26, Rarity.RARE, mage.cards.f.Flusterstorm.class)); + cards.add(new SetCardInfo("Freyalise, Llanowar's Fury", 78, Rarity.MYTHIC, mage.cards.f.FreyaliseLlanowarsFury.class)); + cards.add(new SetCardInfo("Fungal Reaches", 140, Rarity.UNCOMMON, mage.cards.f.FungalReaches.class)); + cards.add(new SetCardInfo("Ghave, Guru of Spores", 104, Rarity.MYTHIC, mage.cards.g.GhaveGuruOfSpores.class)); + cards.add(new SetCardInfo("Ghostly Prison", 4, Rarity.UNCOMMON, mage.cards.g.GhostlyPrison.class)); + cards.add(new SetCardInfo("Gigantoplasm", 27, Rarity.RARE, mage.cards.g.Gigantoplasm.class)); + cards.add(new SetCardInfo("Goblin Sharpshooter", 62, Rarity.RARE, mage.cards.g.GoblinSharpshooter.class)); + cards.add(new SetCardInfo("Grasp of Fate", 5, Rarity.UNCOMMON, mage.cards.g.GraspOfFate.class)); + cards.add(new SetCardInfo("Great Oak Guardian", 79, Rarity.UNCOMMON, mage.cards.g.GreatOakGuardian.class)); + cards.add(new SetCardInfo("Harmonize", 80, Rarity.UNCOMMON, mage.cards.h.Harmonize.class)); + cards.add(new SetCardInfo("Herald of the Host", 6, Rarity.UNCOMMON, mage.cards.h.HeraldOfTheHost.class)); + cards.add(new SetCardInfo("Homeward Path", 141, Rarity.RARE, mage.cards.h.HomewardPath.class)); + cards.add(new SetCardInfo("Hull Breach", 105, Rarity.UNCOMMON, mage.cards.h.HullBreach.class)); + cards.add(new SetCardInfo("Illusory Ambusher", 28, Rarity.RARE, mage.cards.i.IllusoryAmbusher.class)); + cards.add(new SetCardInfo("Invigorate", 81, Rarity.UNCOMMON, mage.cards.i.Invigorate.class)); + cards.add(new SetCardInfo("Jungle Shrine", 142, Rarity.UNCOMMON, mage.cards.j.JungleShrine.class)); + cards.add(new SetCardInfo("Kaalia of the Vast", 106, Rarity.MYTHIC, mage.cards.k.KaaliaOfTheVast.class)); + cards.add(new SetCardInfo("Kalemne's Captain", 7, Rarity.RARE, mage.cards.k.KalemnesCaptain.class)); + cards.add(new SetCardInfo("Kalemne, Disciple of Iroas", 107, Rarity.RARE, mage.cards.k.KalemneDiscipleOfIroas.class)); + cards.add(new SetCardInfo("Karlov of the Ghost Council", 108, Rarity.RARE, mage.cards.k.KarlovOfTheGhostCouncil.class)); + cards.add(new SetCardInfo("Kaseto, Orochi Archmage", 109, Rarity.RARE, mage.cards.k.KasetoOrochiArchmage.class)); + cards.add(new SetCardInfo("Khalni Garden", 143, Rarity.UNCOMMON, mage.cards.k.KhalniGarden.class)); + cards.add(new SetCardInfo("Krosan Grip", 82, Rarity.UNCOMMON, mage.cards.k.KrosanGrip.class)); + cards.add(new SetCardInfo("Krosan Verge", 144, Rarity.UNCOMMON, mage.cards.k.KrosanVerge.class)); + cards.add(new SetCardInfo("Lightning Greaves", 123, Rarity.UNCOMMON, mage.cards.l.LightningGreaves.class)); + cards.add(new SetCardInfo("Loyal Retainers", 8, Rarity.RARE, mage.cards.l.LoyalRetainers.class)); + cards.add(new SetCardInfo("Maelstrom Wanderer", 110, Rarity.MYTHIC, mage.cards.m.MaelstromWanderer.class)); + cards.add(new SetCardInfo("Magus of the Wheel", 63, Rarity.RARE, mage.cards.m.MagusOfTheWheel.class)); + cards.add(new SetCardInfo("Marchesa, the Black Rose", 111, Rarity.MYTHIC, mage.cards.m.MarchesaTheBlackRose.class)); + cards.add(new SetCardInfo("Mazirek, Kraul Death Priest", 112, Rarity.RARE, mage.cards.m.MazirekKraulDeathPriest.class)); + cards.add(new SetCardInfo("Meren of Clan Nel Toth", 113, Rarity.RARE, mage.cards.m.MerenOfClanNelToth.class)); + cards.add(new SetCardInfo("Meteor Blast", 64, Rarity.RARE, mage.cards.m.MeteorBlast.class)); + cards.add(new SetCardInfo("Mind's Eye", 124, Rarity.RARE, mage.cards.m.MindsEye.class)); + cards.add(new SetCardInfo("Mirari's Wake", 115, Rarity.RARE, mage.cards.m.MirarisWake.class)); + cards.add(new SetCardInfo("Mirror Match", 29, Rarity.RARE, mage.cards.m.MirrorMatch.class)); + cards.add(new SetCardInfo("Mizzix of the Izmagnus", 116, Rarity.RARE, mage.cards.m.MizzixOfTheIzmagnus.class)); + cards.add(new SetCardInfo("Mizzix's Mastery", 65, Rarity.RARE, mage.cards.m.MizzixsMastery.class)); + cards.add(new SetCardInfo("Molten Slagheap", 145, Rarity.UNCOMMON, mage.cards.m.MoltenSlagheap.class)); + cards.add(new SetCardInfo("Mystic Confluence", 30, Rarity.RARE, mage.cards.m.MysticConfluence.class)); + cards.add(new SetCardInfo("Nahiri, the Lithomancer", 9, Rarity.MYTHIC, mage.cards.n.NahiriTheLithomancer.class)); + cards.add(new SetCardInfo("Nest Invader", 83, Rarity.UNCOMMON, mage.cards.n.NestInvader.class)); + cards.add(new SetCardInfo("Ob Nixilis of the Black Oath", 45, Rarity.MYTHIC, mage.cards.o.ObNixilisOfTheBlackOath.class)); + cards.add(new SetCardInfo("Oreskos Explorer", 10, Rarity.UNCOMMON, mage.cards.o.OreskosExplorer.class)); + cards.add(new SetCardInfo("Pathbreaker Ibex", 84, Rarity.RARE, mage.cards.p.PathbreakerIbex.class)); + cards.add(new SetCardInfo("Propaganda", 31, Rarity.UNCOMMON, mage.cards.p.Propaganda.class)); + cards.add(new SetCardInfo("Punishing Fire", 66, Rarity.UNCOMMON, mage.cards.p.PunishingFire.class)); + cards.add(new SetCardInfo("Rancor", 85, Rarity.UNCOMMON, mage.cards.r.Rancor.class)); + cards.add(new SetCardInfo("Reya Dawnbringer", 11, Rarity.MYTHIC, mage.cards.r.ReyaDawnbringer.class)); + cards.add(new SetCardInfo("Rhystic Study", 32, Rarity.RARE, mage.cards.r.RhysticStudy.class)); + cards.add(new SetCardInfo("Righteous Confluence", 12, Rarity.RARE, mage.cards.r.RighteousConfluence.class)); + cards.add(new SetCardInfo("Rite of the Raging Storm", 67, Rarity.RARE, mage.cards.r.RiteOfTheRagingStorm.class)); + cards.add(new SetCardInfo("Sakura-Tribe Elder", 86, Rarity.UNCOMMON, mage.cards.s.SakuraTribeElder.class)); + cards.add(new SetCardInfo("Saltcrusted Steppe", 146, Rarity.UNCOMMON, mage.cards.s.SaltcrustedSteppe.class)); + cards.add(new SetCardInfo("Sandstone Oracle", 125, Rarity.RARE, mage.cards.s.SandstoneOracle.class)); + cards.add(new SetCardInfo("Savage Lands", 147, Rarity.UNCOMMON, mage.cards.s.SavageLands.class)); + cards.add(new SetCardInfo("Scourge of Nel Toth", 46, Rarity.RARE, mage.cards.s.ScourgeOfNelToth.class)); + cards.add(new SetCardInfo("Scroll Rack", 126, Rarity.RARE, mage.cards.s.ScrollRack.class)); + cards.add(new SetCardInfo("Scytheclaw", 127, Rarity.RARE, mage.cards.s.Scytheclaw.class)); + cards.add(new SetCardInfo("Seal of the Guildpact", 128, Rarity.RARE, mage.cards.s.SealOfTheGuildpact.class)); + cards.add(new SetCardInfo("Seaside Citadel", 148, Rarity.UNCOMMON, mage.cards.s.SeasideCitadel.class)); + cards.add(new SetCardInfo("Shardless Agent", 117, Rarity.RARE, mage.cards.s.ShardlessAgent.class)); + cards.add(new SetCardInfo("Shielded by Faith", 13, Rarity.UNCOMMON, mage.cards.s.ShieldedByFaith.class)); + cards.add(new SetCardInfo("Skullwinder", 87, Rarity.UNCOMMON, mage.cards.s.Skullwinder.class)); + cards.add(new SetCardInfo("Sol Ring", 129, Rarity.UNCOMMON, mage.cards.s.SolRing.class)); + cards.add(new SetCardInfo("Spirit Mantle", 14, Rarity.UNCOMMON, mage.cards.s.SpiritMantle.class)); + cards.add(new SetCardInfo("Swiftfoot Boots", 130, Rarity.UNCOMMON, mage.cards.s.SwiftfootBoots.class)); + cards.add(new SetCardInfo("Sylvan Library", 88, Rarity.RARE, mage.cards.s.SylvanLibrary.class)); + cards.add(new SetCardInfo("Synthetic Destiny", 33, Rarity.RARE, mage.cards.s.SyntheticDestiny.class)); + cards.add(new SetCardInfo("Teferi, Temporal Archmage", 34, Rarity.MYTHIC, mage.cards.t.TeferiTemporalArchmage.class)); + cards.add(new SetCardInfo("Temple of the False God", 149, Rarity.RARE, mage.cards.t.TempleOfTheFalseGod.class)); + cards.add(new SetCardInfo("The Mimeoplasm", 114, Rarity.MYTHIC, mage.cards.t.TheMimeoplasm.class)); + cards.add(new SetCardInfo("Thief of Blood", 47, Rarity.RARE, mage.cards.t.ThiefOfBlood.class)); + cards.add(new SetCardInfo("Thought Vessel", 131, Rarity.UNCOMMON, mage.cards.t.ThoughtVessel.class)); + cards.add(new SetCardInfo("Thran Dynamo", 132, Rarity.UNCOMMON, mage.cards.t.ThranDynamo.class)); + cards.add(new SetCardInfo("Titania, Protector of Argoth", 89, Rarity.RARE, mage.cards.t.TitaniaProtectorOfArgoth.class)); + cards.add(new SetCardInfo("Toxic Deluge", 48, Rarity.RARE, mage.cards.t.ToxicDeluge.class)); + cards.add(new SetCardInfo("Tragic Slip", 49, Rarity.UNCOMMON, mage.cards.t.TragicSlip.class)); + cards.add(new SetCardInfo("True-Name Nemesis", 35, Rarity.MYTHIC, mage.cards.t.TrueNameNemesis.class)); + cards.add(new SetCardInfo("Vela the Night-Clad", 118, Rarity.RARE, mage.cards.v.VelaTheNightClad.class)); + cards.add(new SetCardInfo("Verdant Confluence", 90, Rarity.RARE, mage.cards.v.VerdantConfluence.class)); + cards.add(new SetCardInfo("Viscera Seer", 50, Rarity.UNCOMMON, mage.cards.v.VisceraSeer.class)); + cards.add(new SetCardInfo("Vow of Duty", 15, Rarity.UNCOMMON, mage.cards.v.VowOfDuty.class)); + cards.add(new SetCardInfo("Vow of Flight", 36, Rarity.UNCOMMON, mage.cards.v.VowOfFlight.class)); + cards.add(new SetCardInfo("Vow of Lightning", 68, Rarity.UNCOMMON, mage.cards.v.VowOfLightning.class)); + cards.add(new SetCardInfo("Vow of Malice", 51, Rarity.UNCOMMON, mage.cards.v.VowOfMalice.class)); + cards.add(new SetCardInfo("Vow of Wildness", 91, Rarity.UNCOMMON, mage.cards.v.VowOfWildness.class)); + cards.add(new SetCardInfo("Wall of Blossoms", 92, Rarity.UNCOMMON, mage.cards.w.WallOfBlossoms.class)); + cards.add(new SetCardInfo("Wall of Omens", 16, Rarity.UNCOMMON, mage.cards.w.WallOfOmens.class)); + cards.add(new SetCardInfo("Warchief Giant", 69, Rarity.UNCOMMON, mage.cards.w.WarchiefGiant.class)); + cards.add(new SetCardInfo("Wonder", 37, Rarity.UNCOMMON, mage.cards.w.Wonder.class)); + cards.add(new SetCardInfo("Worn Powerstone", 133, Rarity.UNCOMMON, mage.cards.w.WornPowerstone.class)); + cards.add(new SetCardInfo("Wrath of God", 17, Rarity.RARE, mage.cards.w.WrathOfGod.class)); + cards.add(new SetCardInfo("Wretched Confluence", 52, Rarity.RARE, mage.cards.w.WretchedConfluence.class)); + cards.add(new SetCardInfo("Zedruu the Greathearted", 119, Rarity.MYTHIC, mage.cards.z.ZedruuTheGreathearted.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/M19GiftPack.java b/Mage.Sets/src/mage/sets/M19GiftPack.java index bd9558c7646..d9473b1a8fe 100644 --- a/Mage.Sets/src/mage/sets/M19GiftPack.java +++ b/Mage.Sets/src/mage/sets/M19GiftPack.java @@ -5,6 +5,7 @@ import mage.constants.Rarity; import mage.constants.SetType; /** + * https://scryfall.com/sets/g18 * @author JayDi85 */ public final class M19GiftPack extends ExpansionSet { diff --git a/Mage.Sets/src/mage/sets/M19StandardShowdown.java b/Mage.Sets/src/mage/sets/M19StandardShowdown.java new file mode 100644 index 00000000000..389cb898994 --- /dev/null +++ b/Mage.Sets/src/mage/sets/M19StandardShowdown.java @@ -0,0 +1,29 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/pss3 + */ +public class M19StandardShowdown extends ExpansionSet { + + private static final M19StandardShowdown instance = new M19StandardShowdown(); + + public static M19StandardShowdown getInstance() { + return instance; + } + + private M19StandardShowdown() { + super("M19 Standard Showdown", "PSS3", ExpansionSet.buildDate(2018, 7, 13), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = true; + + cards.add(new SetCardInfo("Forest", 5, Rarity.LAND, mage.cards.basiclands.Forest.class)); + cards.add(new SetCardInfo("Island", 2, Rarity.LAND, mage.cards.basiclands.Island.class)); + cards.add(new SetCardInfo("Mountain", 4, Rarity.LAND, mage.cards.basiclands.Mountain.class)); + cards.add(new SetCardInfo("Plains", 1, Rarity.LAND, mage.cards.basiclands.Plains.class)); + cards.add(new SetCardInfo("Swamp", 3, Rarity.LAND, mage.cards.basiclands.Swamp.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/MTGArenaPromos.java b/Mage.Sets/src/mage/sets/MTGArenaPromos.java new file mode 100644 index 00000000000..8a3c8f7a1b1 --- /dev/null +++ b/Mage.Sets/src/mage/sets/MTGArenaPromos.java @@ -0,0 +1,81 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/pana + */ +public class MTGArenaPromos extends ExpansionSet { + + private static final MTGArenaPromos instance = new MTGArenaPromos(); + + public static MTGArenaPromos getInstance() { + return instance; + } + + private MTGArenaPromos() { + super("MTG Arena Promos", "PANA", ExpansionSet.buildDate(2020, 2, 15), SetType.MAGIC_ONLINE); + this.hasBoosters = false; + this.hasBasicLands = true; + + cards.add(new SetCardInfo("Bladewing the Risen", 104, Rarity.RARE, mage.cards.b.BladewingTheRisen.class)); + cards.add(new SetCardInfo("Duress", 6, Rarity.COMMON, mage.cards.d.Duress.class)); + cards.add(new SetCardInfo("Firemind's Research", 5, Rarity.RARE, mage.cards.f.FiremindsResearch.class)); + cards.add(new SetCardInfo("Forest", 205, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", 210, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", 215, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", 220, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", 225, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", 230, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", 235, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", 240, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", 245, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Ghalta, Primal Hunger", 7, Rarity.RARE, mage.cards.g.GhaltaPrimalHunger.class)); + cards.add(new SetCardInfo("Hanna, Ship's Navigator", 105, Rarity.RARE, mage.cards.h.HannaShipsNavigator.class)); + cards.add(new SetCardInfo("Island", 202, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", 207, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", 212, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", 217, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", 222, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", 227, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", 232, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", 237, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", 242, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Llanowar Elves", 4, Rarity.COMMON, mage.cards.l.LlanowarElves.class)); + cards.add(new SetCardInfo("Mountain", 204, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", 209, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", 214, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", 219, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", 224, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", 229, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", 234, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", 239, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", 244, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plains", 201, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plains", 206, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plains", 211, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plains", 216, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plains", 221, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plains", 226, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plains", 231, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plains", 236, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plains", 241, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Ral, Izzet Viceroy", 1, Rarity.MYTHIC, mage.cards.r.RalIzzetViceroy.class)); + cards.add(new SetCardInfo("Rhys the Redeemed", 101, Rarity.RARE, mage.cards.r.RhysTheRedeemed.class)); + cards.add(new SetCardInfo("Swamp", 203, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", 208, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", 213, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", 218, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", 223, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", 228, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", 233, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", 238, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", 243, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Talrand, Sky Summoner", 102, Rarity.RARE, mage.cards.t.TalrandSkySummoner.class)); + cards.add(new SetCardInfo("Teferi, Hero of Dominaria", 2, Rarity.MYTHIC, mage.cards.t.TeferiHeroOfDominaria.class)); + cards.add(new SetCardInfo("The Gitrog Monster", 103, Rarity.MYTHIC, mage.cards.t.TheGitrogMonster.class)); + cards.add(new SetCardInfo("Vraska, Golgari Queen", 3, Rarity.MYTHIC, mage.cards.v.VraskaGolgariQueen.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/MagazineInserts.java b/Mage.Sets/src/mage/sets/MagazineInserts.java new file mode 100644 index 00000000000..64156daf9e4 --- /dev/null +++ b/Mage.Sets/src/mage/sets/MagazineInserts.java @@ -0,0 +1,58 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/pmei + */ +public class MagazineInserts extends ExpansionSet { + + private static final MagazineInserts instance = new MagazineInserts(); + + public static MagazineInserts getInstance() { + return instance; + } + + private MagazineInserts() { + super("Magazine Inserts", "PMEI", ExpansionSet.buildDate(2020, 3, 26), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + // some cards are non-English (most are Japanese, Jamuraan Lion has a German printing), but it's ok - scryfall can download it + + cards.add(new SetCardInfo("Archangel", 29, Rarity.RARE, mage.cards.a.Archangel.class)); + cards.add(new SetCardInfo("Ascendant Evincar", 28, Rarity.RARE, mage.cards.a.AscendantEvincar.class)); + cards.add(new SetCardInfo("Blue Elemental Blast", 5, Rarity.COMMON, mage.cards.b.BlueElementalBlast.class)); + cards.add(new SetCardInfo("Cast Down", 30, Rarity.UNCOMMON, mage.cards.c.CastDown.class)); + cards.add(new SetCardInfo("Chandra's Outrage", 18, Rarity.COMMON, mage.cards.c.ChandrasOutrage.class)); + cards.add(new SetCardInfo("Chandra's Spitfire", 19, Rarity.UNCOMMON, mage.cards.c.ChandrasSpitfire.class)); + cards.add(new SetCardInfo("Cunning Sparkmage", 17, Rarity.UNCOMMON, mage.cards.c.CunningSparkmage.class)); + cards.add(new SetCardInfo("Darksteel Juggernaut", 16, Rarity.RARE, mage.cards.d.DarksteelJuggernaut.class)); + cards.add(new SetCardInfo("Daxos, Blessed by the Sun", 36, Rarity.UNCOMMON, mage.cards.d.DaxosBlessedByTheSun.class)); + cards.add(new SetCardInfo("Diabolic Edict", 31, Rarity.RARE, mage.cards.d.DiabolicEdict.class)); + cards.add(new SetCardInfo("Duress", 34, Rarity.RARE, mage.cards.d.Duress.class)); + cards.add(new SetCardInfo("Fireball", 4, Rarity.COMMON, mage.cards.f.Fireball.class)); + cards.add(new SetCardInfo("Jamuraan Lion", "10*", Rarity.COMMON, mage.cards.j.JamuraanLion.class)); + cards.add(new SetCardInfo("Kuldotha Phoenix", 20, Rarity.RARE, mage.cards.k.KuldothaPhoenix.class)); + cards.add(new SetCardInfo("Lava Coil", 33, Rarity.UNCOMMON, mage.cards.l.LavaCoil.class)); + cards.add(new SetCardInfo("Lightning Hounds", 10, Rarity.COMMON, mage.cards.l.LightningHounds.class)); + cards.add(new SetCardInfo("Parallax Dementia", 27, Rarity.COMMON, mage.cards.p.ParallaxDementia.class)); + cards.add(new SetCardInfo("Phantasmal Dragon", 21, Rarity.UNCOMMON, mage.cards.p.PhantasmalDragon.class)); + cards.add(new SetCardInfo("Phyrexian Rager", 14, Rarity.COMMON, mage.cards.p.PhyrexianRager.class)); + cards.add(new SetCardInfo("Sandbar Crocodile", 22, Rarity.COMMON, mage.cards.s.SandbarCrocodile.class)); + cards.add(new SetCardInfo("Scent of Cinder", 9, Rarity.COMMON, mage.cards.s.ScentOfCinder.class)); + cards.add(new SetCardInfo("Shivan Dragon", 15, Rarity.RARE, mage.cards.s.ShivanDragon.class)); + cards.add(new SetCardInfo("Shock", 32, Rarity.RARE, mage.cards.s.Shock.class)); + cards.add(new SetCardInfo("Shrieking Drake", 24, Rarity.COMMON, mage.cards.s.ShriekingDrake.class)); + cards.add(new SetCardInfo("Silver Drake", 13, Rarity.COMMON, mage.cards.s.SilverDrake.class)); + cards.add(new SetCardInfo("Spined Wurm", 11, Rarity.COMMON, mage.cards.s.SpinedWurm.class)); + cards.add(new SetCardInfo("Staggering Insight", 37, Rarity.RARE, mage.cards.s.StaggeringInsight.class)); + cards.add(new SetCardInfo("Stream of Life", 25, Rarity.COMMON, mage.cards.s.StreamOfLife.class)); + cards.add(new SetCardInfo("Thorn Elemental", 26, Rarity.RARE, mage.cards.t.ThornElemental.class)); + cards.add(new SetCardInfo("Voltaic Key", 35, Rarity.RARE, mage.cards.v.VoltaicKey.class)); + cards.add(new SetCardInfo("Warmonger", 12, Rarity.UNCOMMON, mage.cards.w.Warmonger.class)); + cards.add(new SetCardInfo("Zhalfirin Knight", 23, Rarity.COMMON, mage.cards.z.ZhalfirinKnight.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/Magic2010Promos.java b/Mage.Sets/src/mage/sets/Magic2010Promos.java new file mode 100644 index 00000000000..01ed55925fe --- /dev/null +++ b/Mage.Sets/src/mage/sets/Magic2010Promos.java @@ -0,0 +1,29 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/pm10 + */ +public class Magic2010Promos extends ExpansionSet { + + private static final Magic2010Promos instance = new Magic2010Promos(); + + public static Magic2010Promos getInstance() { + return instance; + } + + private Magic2010Promos() { + super("Magic 2010 Promos", "PM10", ExpansionSet.buildDate(2009, 7, 16), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Ant Queen", 166, Rarity.RARE, mage.cards.a.AntQueen.class)); + cards.add(new SetCardInfo("Honor of the Pure", "*16", Rarity.RARE, mage.cards.h.HonorOfThePure.class)); + cards.add(new SetCardInfo("Mycoid Shepherd", 28, Rarity.RARE, mage.cards.m.MycoidShepherd.class)); + cards.add(new SetCardInfo("Naya Sojourners", 29, Rarity.RARE, mage.cards.n.NayaSojourners.class)); + cards.add(new SetCardInfo("Vampire Nocturnus", 118, Rarity.MYTHIC, mage.cards.v.VampireNocturnus.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/Magic2011Promos.java b/Mage.Sets/src/mage/sets/Magic2011Promos.java new file mode 100644 index 00000000000..cfae343f64f --- /dev/null +++ b/Mage.Sets/src/mage/sets/Magic2011Promos.java @@ -0,0 +1,29 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/pm11 + */ +public class Magic2011Promos extends ExpansionSet { + + private static final Magic2011Promos instance = new Magic2011Promos(); + + public static Magic2011Promos getInstance() { + return instance; + } + + private Magic2011Promos() { + super("Magic 2011 Promos", "PM11", ExpansionSet.buildDate(2010, 7, 15), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Ancient Hellkite", 122, Rarity.RARE, mage.cards.a.AncientHellkite.class)); + cards.add(new SetCardInfo("Birds of Paradise", "*165", Rarity.RARE, mage.cards.b.BirdsOfParadise.class)); + cards.add(new SetCardInfo("Liliana's Specter", 104, Rarity.COMMON, mage.cards.l.LilianasSpecter.class)); + cards.add(new SetCardInfo("Mitotic Slime", 53, Rarity.RARE, mage.cards.m.MitoticSlime.class)); + cards.add(new SetCardInfo("Sun Titan", 35, Rarity.MYTHIC, mage.cards.s.SunTitan.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/Magic2012Promos.java b/Mage.Sets/src/mage/sets/Magic2012Promos.java new file mode 100644 index 00000000000..524bb93c141 --- /dev/null +++ b/Mage.Sets/src/mage/sets/Magic2012Promos.java @@ -0,0 +1,29 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/pm12 + */ +public class Magic2012Promos extends ExpansionSet { + + private static final Magic2012Promos instance = new Magic2012Promos(); + + public static Magic2012Promos getInstance() { + return instance; + } + + private Magic2012Promos() { + super("Magic 2012 Promos", "PM12", ExpansionSet.buildDate(2011, 7, 14), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Bloodlord of Vaasgoth", 82, Rarity.MYTHIC, mage.cards.b.BloodlordOfVaasgoth.class)); + cards.add(new SetCardInfo("Chandra's Phoenix", "*126", Rarity.RARE, mage.cards.c.ChandrasPhoenix.class)); + cards.add(new SetCardInfo("Dungrove Elder", 171, Rarity.RARE, mage.cards.d.DungroveElder.class)); + cards.add(new SetCardInfo("Garruk's Horde", 176, Rarity.RARE, mage.cards.g.GarruksHorde.class)); + cards.add(new SetCardInfo("Stormblood Berserker", 156, Rarity.UNCOMMON, mage.cards.s.StormbloodBerserker.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/Magic2013Promos.java b/Mage.Sets/src/mage/sets/Magic2013Promos.java new file mode 100644 index 00000000000..3ae4d0973f6 --- /dev/null +++ b/Mage.Sets/src/mage/sets/Magic2013Promos.java @@ -0,0 +1,29 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/pm13 + */ +public class Magic2013Promos extends ExpansionSet { + + private static final Magic2013Promos instance = new Magic2013Promos(); + + public static Magic2013Promos getInstance() { + return instance; + } + + private Magic2013Promos() { + super("Magic 2013 Promos", "PM13", ExpansionSet.buildDate(2012, 7, 12), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Cathedral of War", "*221", Rarity.RARE, mage.cards.c.CathedralOfWar.class)); + cards.add(new SetCardInfo("Magmaquake", 140, Rarity.RARE, mage.cards.m.Magmaquake.class)); + cards.add(new SetCardInfo("Mwonvuli Beast Tracker", 177, Rarity.UNCOMMON, mage.cards.m.MwonvuliBeastTracker.class)); + cards.add(new SetCardInfo("Staff of Nin", 217, Rarity.RARE, mage.cards.s.StaffOfNin.class)); + cards.add(new SetCardInfo("Xathrid Gorgon", 118, Rarity.RARE, mage.cards.x.XathridGorgon.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/Magic2014Promos.java b/Mage.Sets/src/mage/sets/Magic2014Promos.java new file mode 100644 index 00000000000..25619f0626f --- /dev/null +++ b/Mage.Sets/src/mage/sets/Magic2014Promos.java @@ -0,0 +1,29 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/pm14 + */ +public class Magic2014Promos extends ExpansionSet { + + private static final Magic2014Promos instance = new Magic2014Promos(); + + public static Magic2014Promos getInstance() { + return instance; + } + + private Magic2014Promos() { + super("Magic 2014 Promos", "PM14", ExpansionSet.buildDate(2013, 7, 18), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Colossal Whale", 48, Rarity.RARE, mage.cards.c.ColossalWhale.class)); + cards.add(new SetCardInfo("Goblin Diplomats", 141, Rarity.RARE, mage.cards.g.GoblinDiplomats.class)); + cards.add(new SetCardInfo("Hive Stirrings", 21, Rarity.COMMON, mage.cards.h.HiveStirrings.class)); + cards.add(new SetCardInfo("Megantic Sliver", 185, Rarity.RARE, mage.cards.m.MeganticSliver.class)); + cards.add(new SetCardInfo("Ratchet Bomb", 215, Rarity.RARE, mage.cards.r.RatchetBomb.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/Magic2015ClashPack.java b/Mage.Sets/src/mage/sets/Magic2015ClashPack.java new file mode 100644 index 00000000000..9f5b67b285b --- /dev/null +++ b/Mage.Sets/src/mage/sets/Magic2015ClashPack.java @@ -0,0 +1,30 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/cp1 + */ +public class Magic2015ClashPack extends ExpansionSet { + + private static final Magic2015ClashPack instance = new Magic2015ClashPack(); + + public static Magic2015ClashPack getInstance() { + return instance; + } + + private Magic2015ClashPack() { + super("Magic 2015 Clash Pack", "CP1", ExpansionSet.buildDate(2014, 7, 18), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Fated Intervention", 2, Rarity.RARE, mage.cards.f.FatedIntervention.class)); + cards.add(new SetCardInfo("Font of Fertility", 3, Rarity.COMMON, mage.cards.f.FontOfFertility.class)); + cards.add(new SetCardInfo("Hydra Broodmaster", 4, Rarity.RARE, mage.cards.h.HydraBroodmaster.class)); + cards.add(new SetCardInfo("Prognostic Sphinx", 1, Rarity.RARE, mage.cards.p.PrognosticSphinx.class)); + cards.add(new SetCardInfo("Prophet of Kruphix", 5, Rarity.RARE, mage.cards.p.ProphetOfKruphix.class)); + cards.add(new SetCardInfo("Temple of Mystery", 6, Rarity.RARE, mage.cards.t.TempleOfMystery.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/Magic2015Promos.java b/Mage.Sets/src/mage/sets/Magic2015Promos.java new file mode 100644 index 00000000000..0f275288d88 --- /dev/null +++ b/Mage.Sets/src/mage/sets/Magic2015Promos.java @@ -0,0 +1,35 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/pm15 + */ +public class Magic2015Promos extends ExpansionSet { + + private static final Magic2015Promos instance = new Magic2015Promos(); + + public static Magic2015Promos getInstance() { + return instance; + } + + private Magic2015Promos() { + super("Magic 2015 Promos", "PM15", ExpansionSet.buildDate(2014, 7, 17), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Chief Engineer", 47, Rarity.RARE, mage.cards.c.ChiefEngineer.class)); + cards.add(new SetCardInfo("Goblin Rabblemaster", 145, Rarity.RARE, mage.cards.g.GoblinRabblemaster.class)); + cards.add(new SetCardInfo("In Garruk's Wake", 100, Rarity.RARE, mage.cards.i.InGarruksWake.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("In Garruk's Wake", "100p", Rarity.RARE, mage.cards.i.InGarruksWake.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Indulgent Tormentor", 101, Rarity.RARE, mage.cards.i.IndulgentTormentor.class)); + cards.add(new SetCardInfo("Mercurial Pretender", 68, Rarity.RARE, mage.cards.m.MercurialPretender.class)); + cards.add(new SetCardInfo("Phytotitan", 191, Rarity.RARE, mage.cards.p.Phytotitan.class)); + cards.add(new SetCardInfo("Reclamation Sage", 194, Rarity.UNCOMMON, mage.cards.r.ReclamationSage.class)); + cards.add(new SetCardInfo("Resolute Archangel", 28, Rarity.RARE, mage.cards.r.ResoluteArchangel.class)); + cards.add(new SetCardInfo("Siege Dragon", 162, Rarity.RARE, mage.cards.s.SiegeDragon.class)); + cards.add(new SetCardInfo("Soul of New Phyrexia", "231p", Rarity.MYTHIC, mage.cards.s.SoulOfNewPhyrexia.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/MagicFest2020.java b/Mage.Sets/src/mage/sets/MagicFest2020.java new file mode 100644 index 00000000000..eddf156086f --- /dev/null +++ b/Mage.Sets/src/mage/sets/MagicFest2020.java @@ -0,0 +1,30 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/pf20 + */ +public class MagicFest2020 extends ExpansionSet { + + private static final MagicFest2020 instance = new MagicFest2020(); + + public static MagicFest2020 getInstance() { + return instance; + } + + private MagicFest2020() { + super("MagicFest 2020", "PF20", ExpansionSet.buildDate(2020, 1, 1), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = true; + + cards.add(new SetCardInfo("Forest", 6, Rarity.LAND, mage.cards.basiclands.Forest.class)); + cards.add(new SetCardInfo("Island", 3, Rarity.LAND, mage.cards.basiclands.Island.class)); + cards.add(new SetCardInfo("Mountain", 5, Rarity.LAND, mage.cards.basiclands.Mountain.class)); + cards.add(new SetCardInfo("Path to Exile", 1, Rarity.RARE, mage.cards.p.PathToExile.class)); + cards.add(new SetCardInfo("Plains", 2, Rarity.LAND, mage.cards.basiclands.Plains.class)); + cards.add(new SetCardInfo("Swamp", 4, Rarity.LAND, mage.cards.basiclands.Swamp.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/MagicOnlinePromos.java b/Mage.Sets/src/mage/sets/MagicOnlinePromos.java new file mode 100644 index 00000000000..ff171299cf2 --- /dev/null +++ b/Mage.Sets/src/mage/sets/MagicOnlinePromos.java @@ -0,0 +1,1276 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.cards.CardGraphicInfo; +import mage.cards.FrameStyle; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/prm + */ +public class MagicOnlinePromos extends ExpansionSet { + + private static final MagicOnlinePromos instance = new MagicOnlinePromos(); + + public static MagicOnlinePromos getInstance() { + return instance; + } + + private MagicOnlinePromos() { + super("Magic Online Promos", "PRM", ExpansionSet.buildDate(2002, 6, 24), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = true; + + final CardGraphicInfo MPR_FULL_ART = new CardGraphicInfo(FrameStyle.MPRP_FULL_ART_BASIC, true); + + cards.add(new SetCardInfo("Abbot of Keral Keep", 62501, Rarity.RARE, mage.cards.a.AbbotOfKeralKeep.class)); + cards.add(new SetCardInfo("Abhorrent Overlord", 50126, Rarity.RARE, mage.cards.a.AbhorrentOverlord.class)); + cards.add(new SetCardInfo("Abrade", 65001, Rarity.UNCOMMON, mage.cards.a.Abrade.class)); + cards.add(new SetCardInfo("Abrupt Decay", 59681, Rarity.RARE, mage.cards.a.AbruptDecay.class)); + cards.add(new SetCardInfo("Abu Ja'far", 62479, Rarity.UNCOMMON, mage.cards.a.AbuJafar.class)); + cards.add(new SetCardInfo("Abzan Beastmaster", 55888, Rarity.UNCOMMON, mage.cards.a.AbzanBeastmaster.class)); + cards.add(new SetCardInfo("Accumulated Knowledge", 36182, Rarity.COMMON, mage.cards.a.AccumulatedKnowledge.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Accumulated Knowledge", 59641, Rarity.COMMON, mage.cards.a.AccumulatedKnowledge.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Acidic Slime", 45199, Rarity.UNCOMMON, mage.cards.a.AcidicSlime.class)); + cards.add(new SetCardInfo("Adorned Pouncer", 64993, Rarity.RARE, mage.cards.a.AdornedPouncer.class)); + cards.add(new SetCardInfo("Aether Hub", 64432, Rarity.UNCOMMON, mage.cards.a.AetherHub.class)); + cards.add(new SetCardInfo("Aether Storm", 62453, Rarity.UNCOMMON, mage.cards.a.AetherStorm.class)); + cards.add(new SetCardInfo("Ainok Tracker", 55779, Rarity.COMMON, mage.cards.a.AinokTracker.class)); + cards.add(new SetCardInfo("Aisling Leprechaun", 35050, Rarity.COMMON, mage.cards.a.AislingLeprechaun.class)); + cards.add(new SetCardInfo("Ajani Goldmane", 37847, Rarity.MYTHIC, mage.cards.a.AjaniGoldmane.class)); + cards.add(new SetCardInfo("Ajani Vengeant", 31969, Rarity.MYTHIC, mage.cards.a.AjaniVengeant.class)); + cards.add(new SetCardInfo("Albino Troll", 36122, Rarity.UNCOMMON, mage.cards.a.AlbinoTroll.class)); + cards.add(new SetCardInfo("Alhammarret, High Arbiter", 57588, Rarity.RARE, mage.cards.a.AlhammarretHighArbiter.class)); + cards.add(new SetCardInfo("Allosaurus Rider", 32033, Rarity.RARE, mage.cards.a.AllosaurusRider.class)); + cards.add(new SetCardInfo("Altar of the Brood", 55787, Rarity.RARE, mage.cards.a.AltarOfTheBrood.class)); + cards.add(new SetCardInfo("Ambition's Cost", 62523, Rarity.UNCOMMON, mage.cards.a.AmbitionsCost.class)); + cards.add(new SetCardInfo("Anathemancer", 37606, Rarity.UNCOMMON, mage.cards.a.Anathemancer.class)); + cards.add(new SetCardInfo("Ancestral Recall", 46954, Rarity.RARE, mage.cards.a.AncestralRecall.class)); + cards.add(new SetCardInfo("Ancient Grudge", 43590, Rarity.COMMON, mage.cards.a.AncientGrudge.class)); + cards.add(new SetCardInfo("Ancient Hellkite", 37594, Rarity.RARE, mage.cards.a.AncientHellkite.class)); + cards.add(new SetCardInfo("Ancient Stirrings", 70944, Rarity.MYTHIC, mage.cards.a.AncientStirrings.class)); + cards.add(new SetCardInfo("Ancient Ziggurat", 43562, Rarity.UNCOMMON, mage.cards.a.AncientZiggurat.class)); + cards.add(new SetCardInfo("Angel of Deliverance", 60474, Rarity.RARE, mage.cards.a.AngelOfDeliverance.class)); + cards.add(new SetCardInfo("Anguished Unmaking", 60462, Rarity.RARE, mage.cards.a.AnguishedUnmaking.class)); + cards.add(new SetCardInfo("Ankle Shanker", 54512, Rarity.RARE, mage.cards.a.AnkleShanker.class)); + cards.add(new SetCardInfo("Ant Queen", 33103, Rarity.RARE, mage.cards.a.AntQueen.class)); + cards.add(new SetCardInfo("Anthousa, Setessan Hero", 50124, Rarity.RARE, mage.cards.a.AnthousaSetessanHero.class)); + cards.add(new SetCardInfo("Anticipate", 58267, Rarity.COMMON, mage.cards.a.Anticipate.class)); + cards.add(new SetCardInfo("Arashin Sovereign", 56996, Rarity.RARE, mage.cards.a.ArashinSovereign.class)); + cards.add(new SetCardInfo("Arashin War Beast", 55741, Rarity.UNCOMMON, mage.cards.a.ArashinWarBeast.class)); + cards.add(new SetCardInfo("Arbiter of the Ideal", 51912, Rarity.RARE, mage.cards.a.ArbiterOfTheIdeal.class)); + cards.add(new SetCardInfo("Arc Lightning", 36116, Rarity.COMMON, mage.cards.a.ArcLightning.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Arc Lightning", 55791, Rarity.RARE, mage.cards.a.ArcLightning.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Arcanis the Omnipotent", 54547, Rarity.MYTHIC, mage.cards.a.ArcanisTheOmnipotent.class)); + cards.add(new SetCardInfo("Archdemon of Greed", 43503, Rarity.RARE, mage.cards.a.ArchdemonOfGreed.class)); + cards.add(new SetCardInfo("Archfiend of Depravity", 55711, Rarity.RARE, mage.cards.a.ArchfiendOfDepravity.class)); + cards.add(new SetCardInfo("Archfiend of Ifnir", 64422, Rarity.RARE, mage.cards.a.ArchfiendOfIfnir.class)); + cards.add(new SetCardInfo("Archon of the Triumvirate", 46877, Rarity.RARE, mage.cards.a.ArchonOfTheTriumvirate.class)); + cards.add(new SetCardInfo("Arena", 35958, Rarity.RARE, mage.cards.a.Arena.class)); + cards.add(new SetCardInfo("Argivian Archaeologist", 219, Rarity.RARE, mage.cards.a.ArgivianArchaeologist.class)); + cards.add(new SetCardInfo("Argothian Enchantress", 36104, Rarity.RARE, mage.cards.a.ArgothianEnchantress.class)); + cards.add(new SetCardInfo("Armadillo Cloak", 31455, Rarity.COMMON, mage.cards.a.ArmadilloCloak.class)); + cards.add(new SetCardInfo("Armageddon", 31413, Rarity.RARE, mage.cards.a.Armageddon.class)); + cards.add(new SetCardInfo("Arrogant Wurm", 36246, Rarity.UNCOMMON, mage.cards.a.ArrogantWurm.class)); + cards.add(new SetCardInfo("Artisan of Kozilek", 39673, Rarity.UNCOMMON, mage.cards.a.ArtisanOfKozilek.class)); + cards.add(new SetCardInfo("Ash Barrens", 69983, Rarity.COMMON, mage.cards.a.AshBarrens.class)); + cards.add(new SetCardInfo("Assembled Alphas", 61551, Rarity.RARE, mage.cards.a.AssembledAlphas.class)); + cards.add(new SetCardInfo("Astral Slide", 32567, Rarity.UNCOMMON, mage.cards.a.AstralSlide.class)); + cards.add(new SetCardInfo("Aura of Silence", 36030, Rarity.UNCOMMON, mage.cards.a.AuraOfSilence.class)); + cards.add(new SetCardInfo("Auramancer", 41644, Rarity.COMMON, mage.cards.a.Auramancer.class)); + cards.add(new SetCardInfo("Avacyn's Pilgrim", 45209, Rarity.COMMON, mage.cards.a.AvacynsPilgrim.class)); + cards.add(new SetCardInfo("Avacyn, Angel of Hope", 64436, Rarity.RARE, mage.cards.a.AvacynAngelOfHope.class)); + cards.add(new SetCardInfo("Avalanche Riders", 36134, Rarity.UNCOMMON, mage.cards.a.AvalancheRiders.class)); + cards.add(new SetCardInfo("Avalanche Tusker", 54514, Rarity.RARE, mage.cards.a.AvalancheTusker.class)); + cards.add(new SetCardInfo("Avatar of Discord", 32031, Rarity.RARE, mage.cards.a.AvatarOfDiscord.class)); + cards.add(new SetCardInfo("Avatar of Hope", 32206, Rarity.RARE, mage.cards.a.AvatarOfHope.class)); + cards.add(new SetCardInfo("Avatar of Woe", 36208, Rarity.RARE, mage.cards.a.AvatarOfWoe.class)); + cards.add(new SetCardInfo("Avenger of Zendikar", 58895, Rarity.MYTHIC, mage.cards.a.AvengerOfZendikar.class)); + cards.add(new SetCardInfo("Azorius Guildmage", 32585, Rarity.UNCOMMON, mage.cards.a.AzoriusGuildmage.class)); + cards.add(new SetCardInfo("Azorius Signet", 46906, Rarity.UNCOMMON, mage.cards.a.AzoriusSignet.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Azorius Signet", 62395, Rarity.COMMON, mage.cards.a.AzoriusSignet.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Azusa, Lost but Seeking", 62505, Rarity.RARE, mage.cards.a.AzusaLostButSeeking.class)); + cards.add(new SetCardInfo("Badlands", 43600, Rarity.RARE, mage.cards.b.Badlands.class)); + cards.add(new SetCardInfo("Balance", 36278, Rarity.RARE, mage.cards.b.Balance.class)); + cards.add(new SetCardInfo("Balduvian Horde", 35992, Rarity.RARE, mage.cards.b.BalduvianHorde.class)); + cards.add(new SetCardInfo("Ball Lightning", 35972, Rarity.RARE, mage.cards.b.BallLightning.class)); + cards.add(new SetCardInfo("Banisher Priest", 51908, Rarity.UNCOMMON, mage.cards.b.BanisherPriest.class)); + cards.add(new SetCardInfo("Banishing Light", 53840, Rarity.UNCOMMON, mage.cards.b.BanishingLight.class)); + cards.add(new SetCardInfo("Baron Sengir", 227, Rarity.RARE, mage.cards.b.BaronSengir.class)); + cards.add(new SetCardInfo("Barrage Tyrant", 58249, Rarity.RARE, mage.cards.b.BarrageTyrant.class)); + cards.add(new SetCardInfo("Basalt Monolith", 43602, Rarity.UNCOMMON, mage.cards.b.BasaltMonolith.class)); + cards.add(new SetCardInfo("Basking Rootwalla", 35152, Rarity.COMMON, mage.cards.b.BaskingRootwalla.class)); + cards.add(new SetCardInfo("Batterskull", 51930, Rarity.MYTHIC, mage.cards.b.Batterskull.class)); + cards.add(new SetCardInfo("Bayou", 43604, Rarity.RARE, mage.cards.b.Bayou.class)); + cards.add(new SetCardInfo("Beacon of Unrest", 62519, Rarity.RARE, mage.cards.b.BeaconOfUnrest.class)); + cards.add(new SetCardInfo("Beast of Burden", 32198, Rarity.RARE, mage.cards.b.BeastOfBurden.class)); + cards.add(new SetCardInfo("Bident of Thassa", 50114, Rarity.RARE, mage.cards.b.BidentOfThassa.class)); + cards.add(new SetCardInfo("Bile Blight", 53838, Rarity.UNCOMMON, mage.cards.b.BileBlight.class)); + cards.add(new SetCardInfo("Birds of Paradise", 37598, Rarity.RARE, mage.cards.b.BirdsOfParadise.class)); + cards.add(new SetCardInfo("Bishop of Rebirth", 65662, Rarity.RARE, mage.cards.b.BishopOfRebirth.class)); + cards.add(new SetCardInfo("Bitterblossom", 39626, Rarity.RARE, mage.cards.b.Bitterblossom.class)); + cards.add(new SetCardInfo("Bituminous Blast", 36857, Rarity.UNCOMMON, mage.cards.b.BituminousBlast.class, MPR_FULL_ART)); + cards.add(new SetCardInfo("Black Knight", 35922, Rarity.UNCOMMON, mage.cards.b.BlackKnight.class)); + cards.add(new SetCardInfo("Black Lotus", 46932, Rarity.RARE, mage.cards.b.BlackLotus.class)); + cards.add(new SetCardInfo("Black Sun's Zenith", 39634, Rarity.RARE, mage.cards.b.BlackSunsZenith.class)); + cards.add(new SetCardInfo("Blasting Station", 62473, Rarity.UNCOMMON, mage.cards.b.BlastingStation.class)); + cards.add(new SetCardInfo("Blastoderm", 35134, Rarity.COMMON, mage.cards.b.Blastoderm.class)); + cards.add(new SetCardInfo("Blight Herder", 58265, Rarity.RARE, mage.cards.b.BlightHerder.class)); + cards.add(new SetCardInfo("Blighted Fen", 60464, Rarity.RARE, mage.cards.b.BlightedFen.class)); + cards.add(new SetCardInfo("Blightning", 35124, Rarity.COMMON, mage.cards.b.Blightning.class, MPR_FULL_ART)); + cards.add(new SetCardInfo("Blood Crypt", 72301, Rarity.RARE, mage.cards.b.BloodCrypt.class)); + cards.add(new SetCardInfo("Blood Knight", 35984, Rarity.UNCOMMON, mage.cards.b.BloodKnight.class)); + cards.add(new SetCardInfo("Bloodbraid Elf", 36867, Rarity.UNCOMMON, mage.cards.b.BloodbraidElf.class)); + cards.add(new SetCardInfo("Bloodcrazed Neonate", 42862, Rarity.COMMON, mage.cards.b.BloodcrazedNeonate.class)); + cards.add(new SetCardInfo("Bloodlord of Vaasgoth", 41638, Rarity.MYTHIC, mage.cards.b.BloodlordOfVaasgoth.class)); + cards.add(new SetCardInfo("Bloodstained Mire", 36254, Rarity.RARE, mage.cards.b.BloodstainedMire.class)); + cards.add(new SetCardInfo("Blue Elemental Blast", 35924, Rarity.UNCOMMON, mage.cards.b.BlueElementalBlast.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Blue Elemental Blast", 43606, Rarity.UNCOMMON, mage.cards.b.BlueElementalBlast.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Blue Elemental Blast", 70922, Rarity.MYTHIC, mage.cards.b.BlueElementalBlast.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Boggart Ram-Gang", 31439, Rarity.UNCOMMON, mage.cards.b.BoggartRamGang.class)); + cards.add(new SetCardInfo("Bolas's Citadel", 72317, Rarity.RARE, mage.cards.b.BolassCitadel.class)); + cards.add(new SetCardInfo("Boltwing Marauder", 56998, Rarity.RARE, mage.cards.b.BoltwingMarauder.class)); + cards.add(new SetCardInfo("Bonesplitter", 36272, Rarity.COMMON, mage.cards.b.Bonesplitter.class)); + cards.add(new SetCardInfo("Boneyard Wurm", 42860, Rarity.UNCOMMON, mage.cards.b.BoneyardWurm.class)); + cards.add(new SetCardInfo("Boomerang", 36228, Rarity.COMMON, mage.cards.b.Boomerang.class)); + cards.add(new SetCardInfo("Boros Challenger", 69953, Rarity.UNCOMMON, mage.cards.b.BorosChallenger.class)); + cards.add(new SetCardInfo("Boros Signet", 46904, Rarity.UNCOMMON, mage.cards.b.BorosSignet.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Boros Signet", 62393, Rarity.COMMON, mage.cards.b.BorosSignet.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Bottle Gnomes", 36050, Rarity.UNCOMMON, mage.cards.b.BottleGnomes.class)); + cards.add(new SetCardInfo("Brain Maggot", 54551, Rarity.UNCOMMON, mage.cards.b.BrainMaggot.class)); + cards.add(new SetCardInfo("Braingeyser", 205, Rarity.RARE, mage.cards.b.Braingeyser.class)); + cards.add(new SetCardInfo("Brainstorm", 31453, Rarity.COMMON, mage.cards.b.Brainstorm.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Brainstorm", 70920, Rarity.MYTHIC, mage.cards.b.Brainstorm.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Bramblewood Paragon", 31423, Rarity.UNCOMMON, mage.cards.b.BramblewoodParagon.class)); + cards.add(new SetCardInfo("Brass's Bounty", 66886, Rarity.RARE, mage.cards.b.BrasssBounty.class)); + cards.add(new SetCardInfo("Brave the Elements", 37857, Rarity.UNCOMMON, mage.cards.b.BraveTheElements.class, MPR_FULL_ART)); + cards.add(new SetCardInfo("Breaking // Entering", 48586, Rarity.RARE, mage.cards.b.BreakingEntering.class)); + cards.add(new SetCardInfo("Breeding Pool", 72311, Rarity.RARE, mage.cards.b.BreedingPool.class)); + cards.add(new SetCardInfo("Briber's Purse", 55781, Rarity.UNCOMMON, mage.cards.b.BribersPurse.class)); + cards.add(new SetCardInfo("Bribery", 46928, Rarity.RARE, mage.cards.b.Bribery.class)); + cards.add(new SetCardInfo("Brion Stoutarm", 36096, Rarity.RARE, mage.cards.b.BrionStoutarm.class)); + cards.add(new SetCardInfo("Broodmate Dragon", 36148, Rarity.RARE, mage.cards.b.BroodmateDragon.class)); + cards.add(new SetCardInfo("Browbeat", 36198, Rarity.UNCOMMON, mage.cards.b.Browbeat.class)); + cards.add(new SetCardInfo("Budoka Pupil", 36288, Rarity.UNCOMMON, mage.cards.b.BudokaPupil.class)); + cards.add(new SetCardInfo("Burgeoning", 62507, Rarity.RARE, mage.cards.b.Burgeoning.class)); + cards.add(new SetCardInfo("Burning Sun's Avatar", 65664, Rarity.RARE, mage.cards.b.BurningSunsAvatar.class)); + cards.add(new SetCardInfo("Burning Wish", 43542, Rarity.RARE, mage.cards.b.BurningWish.class)); + cards.add(new SetCardInfo("Burst Lightning", 37610, Rarity.COMMON, mage.cards.b.BurstLightning.class, MPR_FULL_ART)); + cards.add(new SetCardInfo("Cabal Coffers", 31471, Rarity.UNCOMMON, mage.cards.c.CabalCoffers.class)); + cards.add(new SetCardInfo("Cabal Therapy", 31473, Rarity.UNCOMMON, mage.cards.c.CabalTherapy.class)); + cards.add(new SetCardInfo("Calciderm", 35988, Rarity.UNCOMMON, mage.cards.c.Calciderm.class)); + cards.add(new SetCardInfo("Call of the Conclave", 48190, Rarity.UNCOMMON, mage.cards.c.CallOfTheConclave.class)); + cards.add(new SetCardInfo("Call of the Herd", 36108, Rarity.RARE, mage.cards.c.CallOfTheHerd.class)); + cards.add(new SetCardInfo("Call the Bloodline", 62213, Rarity.UNCOMMON, mage.cards.c.CallTheBloodline.class)); + cards.add(new SetCardInfo("Cancel", 36222, Rarity.COMMON, mage.cards.c.Cancel.class, MPR_FULL_ART)); + cards.add(new SetCardInfo("Candelabra of Tawnos", 62531, Rarity.RARE, mage.cards.c.CandelabraOfTawnos.class)); + cards.add(new SetCardInfo("Capsize", 36040, Rarity.COMMON, mage.cards.c.Capsize.class)); + cards.add(new SetCardInfo("Captain's Hook", 66884, Rarity.RARE, mage.cards.c.CaptainsHook.class)); + cards.add(new SetCardInfo("Capture of Jingzhou", 64420, Rarity.RARE, mage.cards.c.CaptureOfJingzhou.class)); + cards.add(new SetCardInfo("Carnival Hellsteed", 46885, Rarity.RARE, mage.cards.c.CarnivalHellsteed.class)); + cards.add(new SetCardInfo("Carnophage", 36100, Rarity.COMMON, mage.cards.c.Carnophage.class)); + cards.add(new SetCardInfo("Carrion Feeder", 36264, Rarity.COMMON, mage.cards.c.CarrionFeeder.class)); + cards.add(new SetCardInfo("Cast Down", 68049, Rarity.UNCOMMON, mage.cards.c.CastDown.class)); + cards.add(new SetCardInfo("Castigate", 35176, Rarity.COMMON, mage.cards.c.Castigate.class)); + cards.add(new SetCardInfo("Cathedral of War", 45215, Rarity.RARE, mage.cards.c.CathedralOfWar.class)); + cards.add(new SetCardInfo("Celestial Archon", 50128, Rarity.RARE, mage.cards.c.CelestialArchon.class)); + cards.add(new SetCardInfo("Celestial Colonnade", 43572, Rarity.RARE, mage.cards.c.CelestialColonnade.class)); + cards.add(new SetCardInfo("Celestial Purge", 36859, Rarity.UNCOMMON, mage.cards.c.CelestialPurge.class, MPR_FULL_ART)); + // Planechase Plane. Card not implemented. + // cards.add(new SetCardInfo("Celestine Reef", 44348, Rarity.RARE, mage.cards.c.CelestineReef.class)); + cards.add(new SetCardInfo("Cenn's Tactician", 32541, Rarity.UNCOMMON, mage.cards.c.CennsTactician.class)); + cards.add(new SetCardInfo("Chain of Vapor", 62513, Rarity.UNCOMMON, mage.cards.c.ChainOfVapor.class)); + cards.add(new SetCardInfo("Chainer's Edict", 36242, Rarity.UNCOMMON, mage.cards.c.ChainersEdict.class)); + cards.add(new SetCardInfo("Chains of Mephistopheles", 65646, Rarity.RARE, mage.cards.c.ChainsOfMephistopheles.class)); + cards.add(new SetCardInfo("Chalice of the Void", 69993, Rarity.RARE, mage.cards.c.ChaliceOfTheVoid.class)); + cards.add(new SetCardInfo("Chandra's Phoenix", 41646, Rarity.RARE, mage.cards.c.ChandrasPhoenix.class)); + cards.add(new SetCardInfo("Chandra, Pyromaster", 65007, Rarity.MYTHIC, mage.cards.c.ChandraPyromaster.class)); + cards.add(new SetCardInfo("Chandra, Torch of Defiance", 70934, Rarity.MYTHIC, mage.cards.c.ChandraTorchOfDefiance.class)); + cards.add(new SetCardInfo("Char", 36142, Rarity.RARE, mage.cards.c.Char.class)); + cards.add(new SetCardInfo("Chief Engineer", 53824, Rarity.RARE, mage.cards.c.ChiefEngineer.class)); + cards.add(new SetCardInfo("Chill", 36062, Rarity.UNCOMMON, mage.cards.c.Chill.class)); + cards.add(new SetCardInfo("Chittering Rats", 62445, Rarity.COMMON, mage.cards.c.ChitteringRats.class)); + cards.add(new SetCardInfo("Chrome Mox", 36160, Rarity.RARE, mage.cards.c.ChromeMox.class)); + cards.add(new SetCardInfo("Circle of Flame", 41648, Rarity.COMMON, mage.cards.c.CircleOfFlame.class)); + cards.add(new SetCardInfo("Circle of Protection: Red", 31375, Rarity.COMMON, mage.cards.c.CircleOfProtectionRed.class)); + cards.add(new SetCardInfo("Circular Logic", 36244, Rarity.UNCOMMON, mage.cards.c.CircularLogic.class)); + cards.add(new SetCardInfo("City of Brass", 35952, Rarity.RARE, mage.cards.c.CityOfBrass.class)); + cards.add(new SetCardInfo("Clash of Wills", 59671, Rarity.UNCOMMON, mage.cards.c.ClashOfWills.class)); + cards.add(new SetCardInfo("Cloudpost", 36869, Rarity.COMMON, mage.cards.c.Cloudpost.class)); + cards.add(new SetCardInfo("Coiling Oracle", 32587, Rarity.COMMON, mage.cards.c.CoilingOracle.class)); + cards.add(new SetCardInfo("Colossal Whale", 49834, Rarity.RARE, mage.cards.c.ColossalWhale.class)); + cards.add(new SetCardInfo("Comet Storm", 35822, Rarity.MYTHIC, mage.cards.c.CometStorm.class)); + cards.add(new SetCardInfo("Command Tower", 47979, Rarity.COMMON, mage.cards.c.CommandTower.class)); + cards.add(new SetCardInfo("Conclave Naturalists", 57596, Rarity.UNCOMMON, mage.cards.c.ConclaveNaturalists.class)); + cards.add(new SetCardInfo("Condemn", 31385, Rarity.UNCOMMON, mage.cards.c.Condemn.class, MPR_FULL_ART)); + cards.add(new SetCardInfo("Consume the Meek", 62491, Rarity.RARE, mage.cards.c.ConsumeTheMeek.class)); + cards.add(new SetCardInfo("Consuming Aberration", 47997, Rarity.RARE, mage.cards.c.ConsumingAberration.class)); + cards.add(new SetCardInfo("Contagion", 62485, Rarity.RARE, mage.cards.c.Contagion.class)); + cards.add(new SetCardInfo("Contagion Clasp", 42258, Rarity.UNCOMMON, mage.cards.c.ContagionClasp.class)); + cards.add(new SetCardInfo("Control Magic", 43594, Rarity.RARE, mage.cards.c.ControlMagic.class)); + cards.add(new SetCardInfo("Copy Artifact", 65650, Rarity.RARE, mage.cards.c.CopyArtifact.class)); + cards.add(new SetCardInfo("Corpsejack Menace", 46887, Rarity.RARE, mage.cards.c.CorpsejackMenace.class)); + cards.add(new SetCardInfo("Corrupt", 35120, Rarity.UNCOMMON, mage.cards.c.Corrupt.class, MPR_FULL_ART)); + cards.add(new SetCardInfo("Counterspell", 31377, Rarity.UNCOMMON, mage.cards.c.Counterspell.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Counterspell", 36323, Rarity.COMMON, mage.cards.c.Counterspell.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Courser of Kruphix", 55735, Rarity.RARE, mage.cards.c.CourserOfKruphix.class)); + cards.add(new SetCardInfo("Creeping Mold", 32525, Rarity.UNCOMMON, mage.cards.c.CreepingMold.class)); + cards.add(new SetCardInfo("Crop Rotation", 62521, Rarity.COMMON, mage.cards.c.CropRotation.class)); + cards.add(new SetCardInfo("Crucible of Worlds", 49846, Rarity.RARE, mage.cards.c.CrucibleOfWorlds.class)); + cards.add(new SetCardInfo("Cruel Edict", 35062, Rarity.RARE, mage.cards.c.CruelEdict.class, MPR_FULL_ART)); + cards.add(new SetCardInfo("Crumbling Vestige", 61565, Rarity.COMMON, mage.cards.c.CrumblingVestige.class)); + cards.add(new SetCardInfo("Crusade", 35926, Rarity.RARE, mage.cards.c.Crusade.class)); + cards.add(new SetCardInfo("Cryptborn Horror", 46883, Rarity.RARE, mage.cards.c.CryptbornHorror.class)); + cards.add(new SetCardInfo("Cryptic Command", 31447, Rarity.RARE, mage.cards.c.CrypticCommand.class, MPR_FULL_ART)); + cards.add(new SetCardInfo("Crystalline Sliver", 36070, Rarity.UNCOMMON, mage.cards.c.CrystallineSliver.class)); + cards.add(new SetCardInfo("Cultivate", 41640, Rarity.COMMON, mage.cards.c.Cultivate.class)); + cards.add(new SetCardInfo("Cultivator of Blades", 62219, Rarity.RARE, mage.cards.c.CultivatorOfBlades.class)); + cards.add(new SetCardInfo("Cunning Wish", 31393, Rarity.RARE, mage.cards.c.CunningWish.class)); + cards.add(new SetCardInfo("Cuombajj Witches", 65652, Rarity.COMMON, mage.cards.c.CuombajjWitches.class)); + cards.add(new SetCardInfo("Curse of Thirst", 43499, Rarity.UNCOMMON, mage.cards.c.CurseOfThirst.class)); + cards.add(new SetCardInfo("Curse of Wizardry", 36863, Rarity.UNCOMMON, mage.cards.c.CurseOfWizardry.class)); + cards.add(new SetCardInfo("Curse of the Bloody Tome", 42870, Rarity.COMMON, mage.cards.c.CurseOfTheBloodyTome.class)); + cards.add(new SetCardInfo("Damnation", 31417, Rarity.RARE, mage.cards.d.Damnation.class, MPR_FULL_ART)); + cards.add(new SetCardInfo("Damnation", 55862, Rarity.RARE, mage.cards.d.Damnation.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Dark Ritual", 36168, Rarity.COMMON, mage.cards.d.DarkRitual.class)); + cards.add(new SetCardInfo("Darksteel Ingot", 36276, Rarity.COMMON, mage.cards.d.DarksteelIngot.class)); + cards.add(new SetCardInfo("Darksteel Relic", 41108, Rarity.UNCOMMON, mage.cards.d.DarksteelRelic.class)); + cards.add(new SetCardInfo("Dauntless Dourbark", 36098, Rarity.RARE, mage.cards.d.DauntlessDourbark.class)); + cards.add(new SetCardInfo("Dauthi Slayer", 36032, Rarity.COMMON, mage.cards.d.DauthiSlayer.class)); + cards.add(new SetCardInfo("Dawnbringer Charioteers", 52332, Rarity.RARE, mage.cards.d.DawnbringerCharioteers.class)); + cards.add(new SetCardInfo("Day of Judgment", 36220, Rarity.RARE, mage.cards.d.DayOfJudgment.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Day of Judgment", 37873, Rarity.RARE, mage.cards.d.DayOfJudgment.class, MPR_FULL_ART)); + cards.add(new SetCardInfo("Deadbridge Goliath", 46875, Rarity.RARE, mage.cards.d.DeadbridgeGoliath.class)); + cards.add(new SetCardInfo("Death Baron", 69254, Rarity.RARE, mage.cards.d.DeathBaron.class)); + cards.add(new SetCardInfo("Deathbringer Regent", 55894, Rarity.RARE, mage.cards.d.DeathbringerRegent.class)); + cards.add(new SetCardInfo("Deathless Angel", 36853, Rarity.RARE, mage.cards.d.DeathlessAngel.class)); + cards.add(new SetCardInfo("Debilitating Injury", 55765, Rarity.COMMON, mage.cards.d.DebilitatingInjury.class)); + cards.add(new SetCardInfo("Decimate", 62459, Rarity.RARE, mage.cards.d.Decimate.class)); + cards.add(new SetCardInfo("Decree of Justice", 31399, Rarity.RARE, mage.cards.d.DecreeOfJustice.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Decree of Justice", 59645, Rarity.RARE, mage.cards.d.DecreeOfJustice.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Decree of Pain", 47985, Rarity.RARE, mage.cards.d.DecreeOfPain.class)); + cards.add(new SetCardInfo("Deep Analysis", 35150, Rarity.COMMON, mage.cards.d.DeepAnalysis.class)); + cards.add(new SetCardInfo("Deepfathom Skulker", 59663, Rarity.RARE, mage.cards.d.DeepfathomSkulker.class)); + cards.add(new SetCardInfo("Defiant Bloodlord", 58247, Rarity.RARE, mage.cards.d.DefiantBloodlord.class)); + cards.add(new SetCardInfo("Demigod of Revenge", 31437, Rarity.RARE, mage.cards.d.DemigodOfRevenge.class)); + cards.add(new SetCardInfo("Demon of Catastrophes", 69246, Rarity.RARE, mage.cards.d.DemonOfCatastrophes.class)); + cards.add(new SetCardInfo("Demonic Tutor", 35074, Rarity.UNCOMMON, mage.cards.d.DemonicTutor.class)); + cards.add(new SetCardInfo("Deranged Hermit", 36132, Rarity.RARE, mage.cards.d.DerangedHermit.class)); + cards.add(new SetCardInfo("Desecrated Tomb", 69244, Rarity.RARE, mage.cards.d.DesecratedTomb.class)); + cards.add(new SetCardInfo("Desert", 35148, Rarity.RARE, mage.cards.d.Desert.class)); + cards.add(new SetCardInfo("Desertion", 47967, Rarity.RARE, mage.cards.d.Desertion.class)); + cards.add(new SetCardInfo("Despise", 43065, Rarity.UNCOMMON, mage.cards.d.Despise.class)); + cards.add(new SetCardInfo("Devil's Play", 42868, Rarity.RARE, mage.cards.d.DevilsPlay.class)); + cards.add(new SetCardInfo("Diabolic Edict", 32527, Rarity.COMMON, mage.cards.d.DiabolicEdict.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Diabolic Edict", 62413, Rarity.COMMON, mage.cards.d.DiabolicEdict.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Diaochan, Artful Beauty", 47971, Rarity.RARE, mage.cards.d.DiaochanArtfulBeauty.class)); + cards.add(new SetCardInfo("Dictate of Kruphix", 52326, Rarity.RARE, mage.cards.d.DictateOfKruphix.class)); + cards.add(new SetCardInfo("Dictate of the Twin Gods", 52334, Rarity.RARE, mage.cards.d.DictateOfTheTwinGods.class)); + cards.add(new SetCardInfo("Dimir Charm", 49840, Rarity.UNCOMMON, mage.cards.d.DimirCharm.class)); + cards.add(new SetCardInfo("Dimir Guildmage", 32579, Rarity.UNCOMMON, mage.cards.d.DimirGuildmage.class)); + cards.add(new SetCardInfo("Dimir Signet", 46924, Rarity.UNCOMMON, mage.cards.d.DimirSignet.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Dimir Signet", 62435, Rarity.COMMON, mage.cards.d.DimirSignet.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Diregraf Ghoul", 42882, Rarity.UNCOMMON, mage.cards.d.DiregrafGhoul.class)); + cards.add(new SetCardInfo("Dirtcowl Wurm", 32190, Rarity.RARE, mage.cards.d.DirtcowlWurm.class)); + cards.add(new SetCardInfo("Disdainful Stroke", 55785, Rarity.COMMON, mage.cards.d.DisdainfulStroke.class)); + cards.add(new SetCardInfo("Disenchant", 31397, Rarity.COMMON, mage.cards.d.Disenchant.class, MPR_FULL_ART)); + cards.add(new SetCardInfo("Disenchant", 36184, Rarity.COMMON, mage.cards.d.Disenchant.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Disintegrate", 62429, Rarity.UNCOMMON, mage.cards.d.Disintegrate.class)); + cards.add(new SetCardInfo("Dismember", 43588, Rarity.UNCOMMON, mage.cards.d.Dismember.class)); + cards.add(new SetCardInfo("Dismiss", 36060, Rarity.UNCOMMON, mage.cards.d.Dismiss.class)); + cards.add(new SetCardInfo("Dissipate", 35996, Rarity.UNCOMMON, mage.cards.d.Dissipate.class)); + cards.add(new SetCardInfo("Dissolve", 52336, Rarity.UNCOMMON, mage.cards.d.Dissolve.class)); + cards.add(new SetCardInfo("Djinn Illuminatus", 32029, Rarity.RARE, mage.cards.d.DjinnIlluminatus.class)); + cards.add(new SetCardInfo("Doom Blade", 37855, Rarity.COMMON, mage.cards.d.DoomBlade.class, MPR_FULL_ART)); + cards.add(new SetCardInfo("Doom Blade", 62525, Rarity.UNCOMMON, mage.cards.d.DoomBlade.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Doomsday", 61058, Rarity.RARE, mage.cards.d.Doomsday.class)); + cards.add(new SetCardInfo("Doomwake Giant", 52322, Rarity.RARE, mage.cards.d.DoomwakeGiant.class)); + cards.add(new SetCardInfo("Door of Destinies", 31963, Rarity.RARE, mage.cards.d.DoorOfDestinies.class)); + cards.add(new SetCardInfo("Doran, the Siege Tower", 31411, Rarity.RARE, mage.cards.d.DoranTheSiegeTower.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Doran, the Siege Tower", 65658, Rarity.MYTHIC, mage.cards.d.DoranTheSiegeTower.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Dragon Broodmother", 32553, Rarity.MYTHIC, mage.cards.d.DragonBroodmother.class)); + cards.add(new SetCardInfo("Dragon Fodder", 55898, Rarity.COMMON, mage.cards.d.DragonFodder.class)); + cards.add(new SetCardInfo("Dragon Throne of Tarkir", 54565, Rarity.RARE, mage.cards.d.DragonThroneOfTarkir.class)); + cards.add(new SetCardInfo("Dragonlord's Servant", 55884, Rarity.UNCOMMON, mage.cards.d.DragonlordsServant.class)); + cards.add(new SetCardInfo("Dragonscale Boon", 55793, Rarity.COMMON, mage.cards.d.DragonscaleBoon.class)); + cards.add(new SetCardInfo("Dragonscale General", 55707, Rarity.RARE, mage.cards.d.DragonscaleGeneral.class)); + cards.add(new SetCardInfo("Drain Life", 35928, Rarity.COMMON, mage.cards.d.DrainLife.class)); + cards.add(new SetCardInfo("Dread Defiler", 59665, Rarity.RARE, mage.cards.d.DreadDefiler.class)); + cards.add(new SetCardInfo("Dread Return", 60482, Rarity.UNCOMMON, mage.cards.d.DreadReturn.class)); + cards.add(new SetCardInfo("Drogskol Cavalry", 60466, Rarity.RARE, mage.cards.d.DrogskolCavalry.class)); + cards.add(new SetCardInfo("Dromoka, the Eternal", 57604, Rarity.RARE, mage.cards.d.DromokaTheEternal.class)); + cards.add(new SetCardInfo("Drowner of Hope", 58245, Rarity.RARE, mage.cards.d.DrownerOfHope.class)); + cards.add(new SetCardInfo("Dryad Militant", 46267, Rarity.UNCOMMON, mage.cards.d.DryadMilitant.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Dryad Militant", 46873, Rarity.UNCOMMON, mage.cards.d.DryadMilitant.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Dualcaster Mage", 55868, Rarity.RARE, mage.cards.d.DualcasterMage.class)); + cards.add(new SetCardInfo("Duergar Hedge-Mage", 32547, Rarity.UNCOMMON, mage.cards.d.DuergarHedgeMage.class)); + cards.add(new SetCardInfo("Dungrove Elder", 41650, Rarity.RARE, mage.cards.d.DungroveElder.class)); + cards.add(new SetCardInfo("Duplicant", 47983, Rarity.RARE, mage.cards.d.Duplicant.class)); + cards.add(new SetCardInfo("Duress", 35078, Rarity.COMMON, mage.cards.d.Duress.class)); + cards.add(new SetCardInfo("Dwynen, Gilt-Leaf Daen", 57600, Rarity.RARE, mage.cards.d.DwynenGiltLeafDaen.class)); + cards.add(new SetCardInfo("Earwig Squad", 32539, Rarity.RARE, mage.cards.e.EarwigSquad.class)); + cards.add(new SetCardInfo("Eater of Hope", 51918, Rarity.RARE, mage.cards.e.EaterOfHope.class)); + cards.add(new SetCardInfo("Eidolon of Blossoms", 52318, Rarity.RARE, mage.cards.e.EidolonOfBlossoms.class)); + cards.add(new SetCardInfo("Electrolyze", 32581, Rarity.UNCOMMON, mage.cards.e.Electrolyze.class)); + cards.add(new SetCardInfo("Elesh Norn, Grand Cenobite", 52306, Rarity.MYTHIC, mage.cards.e.EleshNornGrandCenobite.class)); + cards.add(new SetCardInfo("Elite Inquisitor", 42880, Rarity.RARE, mage.cards.e.EliteInquisitor.class)); + cards.add(new SetCardInfo("Elspeth, Sun's Champion", 59647, Rarity.MYTHIC, mage.cards.e.ElspethSunsChampion.class)); + cards.add(new SetCardInfo("Elusive Tormentor", 60472, Rarity.RARE, mage.cards.e.ElusiveTormentor.class)); + cards.add(new SetCardInfo("Elves of Deep Shadow", 35974, Rarity.UNCOMMON, mage.cards.e.ElvesOfDeepShadow.class)); + cards.add(new SetCardInfo("Elvish Aberration", 36266, Rarity.UNCOMMON, mage.cards.e.ElvishAberration.class)); + cards.add(new SetCardInfo("Elvish Champion", 31435, Rarity.RARE, mage.cards.e.ElvishChampion.class)); + cards.add(new SetCardInfo("Elvish Lyrist", 36118, Rarity.COMMON, mage.cards.e.ElvishLyrist.class)); + cards.add(new SetCardInfo("Elvish Mystic", 51538, Rarity.COMMON, mage.cards.e.ElvishMystic.class)); + cards.add(new SetCardInfo("Elvish Pioneer", 62481, Rarity.COMMON, mage.cards.e.ElvishPioneer.class)); + cards.add(new SetCardInfo("Elvish Rejuvenator", 69258, Rarity.COMMON, mage.cards.e.ElvishRejuvenator.class)); + cards.add(new SetCardInfo("Elvish Spirit Guide", 65654, Rarity.UNCOMMON, mage.cards.e.ElvishSpiritGuide.class)); + cards.add(new SetCardInfo("Elvish Visionary", 36865, Rarity.COMMON, mage.cards.e.ElvishVisionary.class)); + cards.add(new SetCardInfo("Ember Swallower", 50130, Rarity.RARE, mage.cards.e.EmberSwallower.class)); + cards.add(new SetCardInfo("Emeria Angel", 36218, Rarity.RARE, mage.cards.e.EmeriaAngel.class)); + cards.add(new SetCardInfo("Emmara, Soul of the Accord", 69951, Rarity.RARE, mage.cards.e.EmmaraSoulOfTheAccord.class)); + cards.add(new SetCardInfo("Empyrial Armor", 36024, Rarity.COMMON, mage.cards.e.EmpyrialArmor.class)); + cards.add(new SetCardInfo("Emrakul, the Aeons Torn", 36873, Rarity.MYTHIC, mage.cards.e.EmrakulTheAeonsTorn.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Emrakul, the Aeons Torn", 63001, Rarity.MYTHIC, mage.cards.e.EmrakulTheAeonsTorn.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Encroaching Wastes", 51932, Rarity.UNCOMMON, mage.cards.e.EncroachingWastes.class)); + cards.add(new SetCardInfo("Endbringer", 59667, Rarity.RARE, mage.cards.e.Endbringer.class)); + cards.add(new SetCardInfo("Engineered Plague", 32543, Rarity.UNCOMMON, mage.cards.e.EngineeredPlague.class)); + cards.add(new SetCardInfo("Enlightened Tutor", 35998, Rarity.UNCOMMON, mage.cards.e.EnlightenedTutor.class)); + cards.add(new SetCardInfo("Entomb", 51532, Rarity.RARE, mage.cards.e.Entomb.class)); + cards.add(new SetCardInfo("Epic Struggle", 62447, Rarity.RARE, mage.cards.e.EpicStruggle.class)); + cards.add(new SetCardInfo("Erratic Portal", 62421, Rarity.RARE, mage.cards.e.ErraticPortal.class)); + cards.add(new SetCardInfo("Essence Extraction", 62211, Rarity.UNCOMMON, mage.cards.e.EssenceExtraction.class)); + cards.add(new SetCardInfo("Eternal Dragon", 31387, Rarity.RARE, mage.cards.e.EternalDragon.class)); + cards.add(new SetCardInfo("Eternal Witness", 31431, Rarity.UNCOMMON, mage.cards.e.EternalWitness.class)); + cards.add(new SetCardInfo("Eureka", 46946, Rarity.RARE, mage.cards.e.Eureka.class)); + cards.add(new SetCardInfo("Everflowing Chalice", 39620, Rarity.UNCOMMON, mage.cards.e.EverflowingChalice.class)); + cards.add(new SetCardInfo("Evolving Wilds", 46265, Rarity.COMMON, mage.cards.e.EvolvingWilds.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Evolving Wilds", 55880, Rarity.COMMON, mage.cards.e.EvolvingWilds.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Exalted Angel", 31491, Rarity.RARE, mage.cards.e.ExaltedAngel.class)); + cards.add(new SetCardInfo("Exclude", 62477, Rarity.COMMON, mage.cards.e.Exclude.class)); + cards.add(new SetCardInfo("Experiment One", 49838, Rarity.UNCOMMON, mage.cards.e.ExperimentOne.class)); + cards.add(new SetCardInfo("Exploration", 62463, Rarity.RARE, mage.cards.e.Exploration.class)); + cards.add(new SetCardInfo("Explore", 59643, Rarity.COMMON, mage.cards.e.Explore.class)); + cards.add(new SetCardInfo("Exquisite Firecraft", 62503, Rarity.RARE, mage.cards.e.ExquisiteFirecraft.class)); + cards.add(new SetCardInfo("Fact or Fiction", 31457, Rarity.UNCOMMON, mage.cards.f.FactOrFiction.class)); + cards.add(new SetCardInfo("Faerie Conclave", 36090, Rarity.UNCOMMON, mage.cards.f.FaerieConclave.class)); + cards.add(new SetCardInfo("False Prophet", 32200, Rarity.RARE, mage.cards.f.FalseProphet.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("False Prophet", 62469, Rarity.RARE, mage.cards.f.FalseProphet.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Fanatic of Xenagos", 54559, Rarity.UNCOMMON, mage.cards.f.FanaticOfXenagos.class)); + cards.add(new SetCardInfo("Farseek", 48005, Rarity.COMMON, mage.cards.f.Farseek.class)); + cards.add(new SetCardInfo("Fatal Push", 64997, Rarity.UNCOMMON, mage.cards.f.FatalPush.class)); + cards.add(new SetCardInfo("Fated Conflagration", 51922, Rarity.RARE, mage.cards.f.FatedConflagration.class)); + cards.add(new SetCardInfo("Fated Intervention", 53818, Rarity.RARE, mage.cards.f.FatedIntervention.class)); + cards.add(new SetCardInfo("Fathom Mage", 48001, Rarity.RARE, mage.cards.f.FathomMage.class)); + cards.add(new SetCardInfo("Feldon of the Third Path", 55872, Rarity.MYTHIC, mage.cards.f.FeldonOfTheThirdPath.class)); + cards.add(new SetCardInfo("Feral Throwback", 36256, Rarity.RARE, mage.cards.f.FeralThrowback.class)); + cards.add(new SetCardInfo("Fierce Invocation", 55743, Rarity.COMMON, mage.cards.f.FierceInvocation.class)); + cards.add(new SetCardInfo("Fiery Temper", 35978, Rarity.COMMON, mage.cards.f.FieryTemper.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Fiery Temper", 62217, Rarity.RARE, mage.cards.f.FieryTemper.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Figure of Destiny", 32545, Rarity.RARE, mage.cards.f.FigureOfDestiny.class)); + cards.add(new SetCardInfo("Fire // Ice", 31497, Rarity.UNCOMMON, mage.cards.f.FireIce.class)); + cards.add(new SetCardInfo("Fire-Lit Thicket", 62457, Rarity.RARE, mage.cards.f.FireLitThicket.class)); + cards.add(new SetCardInfo("Fireball", 31485, Rarity.UNCOMMON, mage.cards.f.Fireball.class, MPR_FULL_ART)); + cards.add(new SetCardInfo("Fireball", 36321, Rarity.UNCOMMON, mage.cards.f.Fireball.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Fireblast", 31401, Rarity.COMMON, mage.cards.f.Fireblast.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Fireblast", 43598, Rarity.COMMON, mage.cards.f.Fireblast.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Firebolt", 31469, Rarity.COMMON, mage.cards.f.Firebolt.class)); + cards.add(new SetCardInfo("Firemane Avenger", 47991, Rarity.RARE, mage.cards.f.FiremaneAvenger.class)); + cards.add(new SetCardInfo("Firemind's Research", 69949, Rarity.RARE, mage.cards.f.FiremindsResearch.class)); + cards.add(new SetCardInfo("Fireslinger", 36038, Rarity.COMMON, mage.cards.f.Fireslinger.class)); + cards.add(new SetCardInfo("Flame Javelin", 35122, Rarity.UNCOMMON, mage.cards.f.FlameJavelin.class, MPR_FULL_ART)); + cards.add(new SetCardInfo("Flameblade Angel", 60454, Rarity.RARE, mage.cards.f.FlamebladeAngel.class)); + cards.add(new SetCardInfo("Flamerush Rider", 55713, Rarity.RARE, mage.cards.f.FlamerushRider.class)); + cards.add(new SetCardInfo("Flametongue Kavu", 31459, Rarity.UNCOMMON, mage.cards.f.FlametongueKavu.class)); + cards.add(new SetCardInfo("Flaying Tendrils", 61561, Rarity.UNCOMMON, mage.cards.f.FlayingTendrils.class)); + cards.add(new SetCardInfo("Fling", 36074, Rarity.COMMON, mage.cards.f.Fling.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Fling", 36076, Rarity.COMMON, mage.cards.f.Fling.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Fling", 37590, Rarity.COMMON, mage.cards.f.Fling.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Flooded Strand", 43580, Rarity.RARE, mage.cards.f.FloodedStrand.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Flooded Strand", 69252, Rarity.RARE, mage.cards.f.FloodedStrand.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Flusterstorm", 69985, Rarity.RARE, mage.cards.f.Flusterstorm.class)); + cards.add(new SetCardInfo("Foe-Razer Regent", 55890, Rarity.RARE, mage.cards.f.FoeRazerRegent.class)); + cards.add(new SetCardInfo("Font of Fertility", 53848, Rarity.COMMON, mage.cards.f.FontOfFertility.class)); + cards.add(new SetCardInfo("Food Chain", 69947, Rarity.RARE, mage.cards.f.FoodChain.class)); + cards.add(new SetCardInfo("Forbid", 36078, Rarity.UNCOMMON, mage.cards.f.Forbid.class)); + cards.add(new SetCardInfo("Forbidden Alchemy", 45203, Rarity.COMMON, mage.cards.f.ForbiddenAlchemy.class)); + cards.add(new SetCardInfo("Forbidden Orchard", 62409, Rarity.RARE, mage.cards.f.ForbiddenOrchard.class)); + cards.add(new SetCardInfo("Force Spike", 31395, Rarity.UNCOMMON, mage.cards.f.ForceSpike.class)); + cards.add(new SetCardInfo("Force of Nature", 36294, Rarity.RARE, mage.cards.f.ForceOfNature.class)); + cards.add(new SetCardInfo("Force of Will", 43578, Rarity.RARE, mage.cards.f.ForceOfWill.class)); + cards.add(new SetCardInfo("Forest", 237, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", 251, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", 259, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", 269, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", 279, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", 293, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", 297, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", 31983, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", 31991, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", 32005, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", 32027, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", 40040, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", 40050, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", 40060, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", 40094, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", 53875, Rarity.LAND, mage.cards.basiclands.Forest.class, FULL_ART_ZEN_VARIOUS)); + cards.add(new SetCardInfo("Forest", 58261, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forgestoker Dragon", 51920, Rarity.RARE, mage.cards.f.ForgestokerDragon.class)); + cards.add(new SetCardInfo("Fork", 207, Rarity.RARE, mage.cards.f.Fork.class)); + cards.add(new SetCardInfo("Forked Lightning", 33440, Rarity.UNCOMMON, mage.cards.f.ForkedLightning.class)); + cards.add(new SetCardInfo("Formless Nurturing", 55747, Rarity.COMMON, mage.cards.f.FormlessNurturing.class)); + cards.add(new SetCardInfo("Fortune's Favor", 62987, Rarity.UNCOMMON, mage.cards.f.FortunesFavor.class)); + cards.add(new SetCardInfo("Foundry Champion", 47993, Rarity.RARE, mage.cards.f.FoundryChampion.class)); + cards.add(new SetCardInfo("Frenzied Goblin", 55703, Rarity.UNCOMMON, mage.cards.f.FrenziedGoblin.class)); + cards.add(new SetCardInfo("Frost Walker", 55886, Rarity.UNCOMMON, mage.cards.f.FrostWalker.class)); + cards.add(new SetCardInfo("Fungal Shambler", 36236, Rarity.RARE, mage.cards.f.FungalShambler.class)); + cards.add(new SetCardInfo("Future Sight", 43596, Rarity.RARE, mage.cards.f.FutureSight.class)); + cards.add(new SetCardInfo("Fyndhorn Elves", 43632, Rarity.COMMON, mage.cards.f.FyndhornElves.class)); + cards.add(new SetCardInfo("Gaddock Teeg", 64418, Rarity.RARE, mage.cards.g.GaddockTeeg.class)); + cards.add(new SetCardInfo("Gaea's Blessing", 36026, Rarity.UNCOMMON, mage.cards.g.GaeasBlessing.class)); + cards.add(new SetCardInfo("Gaea's Cradle", 36112, Rarity.RARE, mage.cards.g.GaeasCradle.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Gaea's Cradle", 59655, Rarity.MYTHIC, mage.cards.g.GaeasCradle.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Garruk Wildspeaker", 36178, Rarity.MYTHIC, mage.cards.g.GarrukWildspeaker.class)); + cards.add(new SetCardInfo("Garruk's Horde", 41636, Rarity.RARE, mage.cards.g.GarruksHorde.class)); + cards.add(new SetCardInfo("Gate Colossus", 71592, Rarity.UNCOMMON, mage.cards.g.GateColossus.class)); + cards.add(new SetCardInfo("Gatekeeper of Malakir", 37853, Rarity.UNCOMMON, mage.cards.g.GatekeeperOfMalakir.class)); + cards.add(new SetCardInfo("Gather the Townsfolk", 43511, Rarity.COMMON, mage.cards.g.GatherTheTownsfolk.class)); + cards.add(new SetCardInfo("Gauntlet of Might", 65656, Rarity.RARE, mage.cards.g.GauntletOfMight.class)); + cards.add(new SetCardInfo("Geist of Saint Traft", 51928, Rarity.MYTHIC, mage.cards.g.GeistOfSaintTraft.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Geist of Saint Traft", 60484, Rarity.MYTHIC, mage.cards.g.GeistOfSaintTraft.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Gemstone Mine", 36028, Rarity.UNCOMMON, mage.cards.g.GemstoneMine.class)); + cards.add(new SetCardInfo("Genesis Hydra", 55870, Rarity.RARE, mage.cards.g.GenesisHydra.class)); + cards.add(new SetCardInfo("Genju of the Spires", 36284, Rarity.UNCOMMON, mage.cards.g.GenjuOfTheSpires.class)); + cards.add(new SetCardInfo("Gerrard's Verdict", 31461, Rarity.UNCOMMON, mage.cards.g.GerrardsVerdict.class)); + cards.add(new SetCardInfo("Ghalta, Primal Hunger", 66896, Rarity.RARE, mage.cards.g.GhaltaPrimalHunger.class)); + cards.add(new SetCardInfo("Ghor-Clan Rampager", 50110, Rarity.UNCOMMON, mage.cards.g.GhorClanRampager.class)); + cards.add(new SetCardInfo("Ghost-Lit Raider", 36292, Rarity.UNCOMMON, mage.cards.g.GhostLitRaider.class)); + cards.add(new SetCardInfo("Ghostfire Blade", 55777, Rarity.RARE, mage.cards.g.GhostfireBlade.class)); + cards.add(new SetCardInfo("Ghostly Prison", 43538, Rarity.UNCOMMON, mage.cards.g.GhostlyPrison.class)); + cards.add(new SetCardInfo("Giant Badger", 35960, Rarity.RARE, mage.cards.g.GiantBadger.class)); + cards.add(new SetCardInfo("Giant Growth", 32557, Rarity.COMMON, mage.cards.g.GiantGrowth.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Giant Growth", 35824, Rarity.COMMON, mage.cards.g.GiantGrowth.class, MPR_FULL_ART)); + cards.add(new SetCardInfo("Giant Growth", 35930, Rarity.COMMON, mage.cards.g.GiantGrowth.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Gideon Jura", 65003, Rarity.MYTHIC, mage.cards.g.GideonJura.class)); + cards.add(new SetCardInfo("Gideon of the Trials", 70940, Rarity.MYTHIC, mage.cards.g.GideonOfTheTrials.class)); + cards.add(new SetCardInfo("Gifts Ungiven", 70924, Rarity.MYTHIC, mage.cards.g.GiftsUngiven.class)); + cards.add(new SetCardInfo("Gitaxian Probe", 46869, Rarity.COMMON, mage.cards.g.GitaxianProbe.class)); + cards.add(new SetCardInfo("Glacial Ray", 36286, Rarity.COMMON, mage.cards.g.GlacialRay.class)); + cards.add(new SetCardInfo("Gladehart Cavalry", 59661, Rarity.RARE, mage.cards.g.GladehartCavalry.class)); + cards.add(new SetCardInfo("Gleancrawler", 32017, Rarity.RARE, mage.cards.g.Gleancrawler.class)); + // Set-exclusive, not legal card. Not implemented. See https://scryfall.com/card/prm/26584/gleemox + // cards.add(new SetCardInfo("Gleemox", 26584, Rarity.RARE, mage.cards.g.Gleemox.class)); + cards.add(new SetCardInfo("Glissa, the Traitor", 39618, Rarity.MYTHIC, mage.cards.g.GlissaTheTraitor.class)); + cards.add(new SetCardInfo("Glistener Elf", 43067, Rarity.COMMON, mage.cards.g.GlistenerElf.class)); + cards.add(new SetCardInfo("Glorious Anthem", 35110, Rarity.RARE, mage.cards.g.GloriousAnthem.class)); + cards.add(new SetCardInfo("Glory", 36248, Rarity.RARE, mage.cards.g.Glory.class)); + cards.add(new SetCardInfo("Glorybringer", 64426, Rarity.RARE, mage.cards.g.Glorybringer.class)); + cards.add(new SetCardInfo("Go for the Throat", 42878, Rarity.UNCOMMON, mage.cards.g.GoForTheThroat.class)); + cards.add(new SetCardInfo("Goblin Bombardment", 36058, Rarity.UNCOMMON, mage.cards.g.GoblinBombardment.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Goblin Bombardment", 54545, Rarity.UNCOMMON, mage.cards.g.GoblinBombardment.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Goblin Dark-Dwellers", 59673, Rarity.RARE, mage.cards.g.GoblinDarkDwellers.class)); + cards.add(new SetCardInfo("Goblin Diplomats", 49832, Rarity.RARE, mage.cards.g.GoblinDiplomats.class)); + cards.add(new SetCardInfo("Goblin Guide", 44309, Rarity.RARE, mage.cards.g.GoblinGuide.class)); + cards.add(new SetCardInfo("Goblin Legionnaire", 35146, Rarity.COMMON, mage.cards.g.GoblinLegionnaire.class)); + cards.add(new SetCardInfo("Goblin Piledriver", 31415, Rarity.RARE, mage.cards.g.GoblinPiledriver.class)); + cards.add(new SetCardInfo("Goblin Rabblemaster", 53832, Rarity.RARE, mage.cards.g.GoblinRabblemaster.class)); + cards.add(new SetCardInfo("Goblin Ringleader", 35144, Rarity.UNCOMMON, mage.cards.g.GoblinRingleader.class)); + cards.add(new SetCardInfo("Goblin Vandal", 46916, Rarity.COMMON, mage.cards.g.GoblinVandal.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Goblin Vandal", 62383, Rarity.COMMON, mage.cards.g.GoblinVandal.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Goblin Warchief", 31477, Rarity.UNCOMMON, mage.cards.g.GoblinWarchief.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Goblin Warchief", 60452, Rarity.RARE, mage.cards.g.GoblinWarchief.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Godless Shrine", 72305, Rarity.RARE, mage.cards.g.GodlessShrine.class)); + cards.add(new SetCardInfo("Golem's Heart", 37869, Rarity.UNCOMMON, mage.cards.g.GolemsHeart.class)); + cards.add(new SetCardInfo("Golgari Signet", 62397, Rarity.UNCOMMON, mage.cards.g.GolgariSignet.class)); + cards.add(new SetCardInfo("Gorilla Shaman", 61060, Rarity.COMMON, mage.cards.g.GorillaShaman.class)); + cards.add(new SetCardInfo("Grafdigger's Cage", 69989, Rarity.RARE, mage.cards.g.GrafdiggersCage.class)); + cards.add(new SetCardInfo("Grave Titan", 62403, Rarity.MYTHIC, mage.cards.g.GraveTitan.class)); + cards.add(new SetCardInfo("Gravecrawler", 43517, Rarity.RARE, mage.cards.g.Gravecrawler.class)); + cards.add(new SetCardInfo("Greater Good", 51542, Rarity.RARE, mage.cards.g.GreaterGood.class)); + cards.add(new SetCardInfo("Grim Haruspex", 55789, Rarity.RARE, mage.cards.g.GrimHaruspex.class)); + cards.add(new SetCardInfo("Grim Lavamancer", 31489, Rarity.RARE, mage.cards.g.GrimLavamancer.class)); + cards.add(new SetCardInfo("Grim Monolith", 61567, Rarity.RARE, mage.cards.g.GrimMonolith.class)); + cards.add(new SetCardInfo("Grindstone", 62423, Rarity.RARE, mage.cards.g.Grindstone.class)); + cards.add(new SetCardInfo("Griselbrand", 55727, Rarity.MYTHIC, mage.cards.g.Griselbrand.class)); + cards.add(new SetCardInfo("Grisly Salvage", 50108, Rarity.COMMON, mage.cards.g.GrislySalvage.class)); + cards.add(new SetCardInfo("Groundbreaker", 36072, Rarity.RARE, mage.cards.g.Groundbreaker.class)); + cards.add(new SetCardInfo("Grove of the Guardian", 46889, Rarity.RARE, mage.cards.g.GroveOfTheGuardian.class)); + cards.add(new SetCardInfo("Gruul Guildmage", 36302, Rarity.UNCOMMON, mage.cards.g.GruulGuildmage.class)); + cards.add(new SetCardInfo("Gruul Signet", 46914, Rarity.UNCOMMON, mage.cards.g.GruulSignet.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Gruul Signet", 62401, Rarity.COMMON, mage.cards.g.GruulSignet.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Gush", 61056, Rarity.UNCOMMON, mage.cards.g.Gush.class)); + cards.add(new SetCardInfo("Guttersnipe", 69248, Rarity.UNCOMMON, mage.cards.g.Guttersnipe.class)); + cards.add(new SetCardInfo("Guul Draz Assassin", 36875, Rarity.RARE, mage.cards.g.GuulDrazAssassin.class)); + cards.add(new SetCardInfo("Hada Freeblade", 43558, Rarity.COMMON, mage.cards.h.HadaFreeblade.class)); + cards.add(new SetCardInfo("Hall of Triumph", 52340, Rarity.RARE, mage.cards.h.HallOfTriumph.class)); + cards.add(new SetCardInfo("Hallowed Fountain", 72297, Rarity.RARE, mage.cards.h.HallowedFountain.class)); + cards.add(new SetCardInfo("Hammer of Bogardan", 36000, Rarity.RARE, mage.cards.h.HammerOfBogardan.class)); + cards.add(new SetCardInfo("Hand of Justice", 223, Rarity.RARE, mage.cards.h.HandOfJustice.class)); + cards.add(new SetCardInfo("Hanna, Ship's Navigator", 52308, Rarity.RARE, mage.cards.h.HannaShipsNavigator.class)); + cards.add(new SetCardInfo("Harbinger of the Hunt", 57004, Rarity.RARE, mage.cards.h.HarbingerOfTheHunt.class)); + cards.add(new SetCardInfo("Harmonize", 35106, Rarity.UNCOMMON, mage.cards.h.Harmonize.class, MPR_FULL_ART)); + cards.add(new SetCardInfo("Harrow", 37612, Rarity.COMMON, mage.cards.h.Harrow.class, MPR_FULL_ART)); + cards.add(new SetCardInfo("Hazezon Tamar", 23956, Rarity.RARE, mage.cards.h.HazezonTamar.class)); + cards.add(new SetCardInfo("Headless Horseman", 35052, Rarity.COMMON, mage.cards.h.HeadlessHorseman.class)); + cards.add(new SetCardInfo("Hedge Troll", 35968, Rarity.UNCOMMON, mage.cards.h.HedgeTroll.class)); + cards.add(new SetCardInfo("Heir of the Wilds", 54555, Rarity.UNCOMMON, mage.cards.h.HeirOfTheWilds.class)); + cards.add(new SetCardInfo("Hellspark Elemental", 36172, Rarity.UNCOMMON, mage.cards.h.HellsparkElemental.class)); + cards.add(new SetCardInfo("Helm of Kaldra", 31989, Rarity.RARE, mage.cards.h.HelmOfKaldra.class)); + cards.add(new SetCardInfo("Helm of Obedience", 65642, Rarity.RARE, mage.cards.h.HelmOfObedience.class)); + cards.add(new SetCardInfo("Hermit Druid", 36080, Rarity.RARE, mage.cards.h.HermitDruid.class)); + cards.add(new SetCardInfo("Hero of Bladehold", 39646, Rarity.MYTHIC, mage.cards.h.HeroOfBladehold.class)); + cards.add(new SetCardInfo("Hero of Goma Fada", 58243, Rarity.RARE, mage.cards.h.HeroOfGomaFada.class)); + cards.add(new SetCardInfo("Hero's Downfall", 55731, Rarity.RARE, mage.cards.h.HerosDownfall.class)); + cards.add(new SetCardInfo("Heroes' Bane", 52328, Rarity.RARE, mage.cards.h.HeroesBane.class)); + cards.add(new SetCardInfo("Heron's Grace Champion", 61563, Rarity.RARE, mage.cards.h.HeronsGraceChampion.class)); + cards.add(new SetCardInfo("Hewed Stone Retainers", 55745, Rarity.UNCOMMON, mage.cards.h.HewedStoneRetainers.class)); + cards.add(new SetCardInfo("Hinder", 35172, Rarity.UNCOMMON, mage.cards.h.Hinder.class, MPR_FULL_ART)); + cards.add(new SetCardInfo("Hive Stirrings", 49828, Rarity.COMMON, mage.cards.h.HiveStirrings.class)); + cards.add(new SetCardInfo("Hixus, Prison Warden", 57584, Rarity.RARE, mage.cards.h.HixusPrisonWarden.class)); + cards.add(new SetCardInfo("Honor of the Pure", 43554, Rarity.RARE, mage.cards.h.HonorOfThePure.class)); + cards.add(new SetCardInfo("Honored Hierarch", 57598, Rarity.RARE, mage.cards.h.HonoredHierarch.class)); + cards.add(new SetCardInfo("Hoodwink", 62449, Rarity.COMMON, mage.cards.h.Hoodwink.class)); + cards.add(new SetCardInfo("Hordeling Outburst", 55783, Rarity.UNCOMMON, mage.cards.h.HordelingOutburst.class)); + // Planechase Plane. Card not implemented. + // cards.add(new SetCardInfo("Horizon Boughs", 44346, Rarity.RARE, mage.cards.h.HorizonBoughs.class)); + cards.add(new SetCardInfo("Hostage Taker", 69987, Rarity.RARE, mage.cards.h.HostageTaker.class)); + cards.add(new SetCardInfo("Howlpack Alpha", 42866, Rarity.RARE, mage.cards.h.HowlpackAlpha.class)); + cards.add(new SetCardInfo("Hydra Broodmaster", 53850, Rarity.RARE, mage.cards.h.HydraBroodmaster.class)); + cards.add(new SetCardInfo("Hydroblast", 69979, Rarity.COMMON, mage.cards.h.Hydroblast.class)); + cards.add(new SetCardInfo("Hymn to Tourach", 43634, Rarity.UNCOMMON, mage.cards.h.HymnToTourach.class)); + cards.add(new SetCardInfo("Hypersonic Dragon", 46881, Rarity.RARE, mage.cards.h.HypersonicDragon.class)); + cards.add(new SetCardInfo("Hypnotic Specter", 35040, Rarity.RARE, mage.cards.h.HypnoticSpecter.class)); + cards.add(new SetCardInfo("Icatian Javelineers", 35980, Rarity.COMMON, mage.cards.i.IcatianJavelineers.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Icatian Javelineers", 59639, Rarity.COMMON, mage.cards.i.IcatianJavelineers.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Icy Manipulator", 35042, Rarity.UNCOMMON, mage.cards.i.IcyManipulator.class)); + cards.add(new SetCardInfo("Identity Thief", 61559, Rarity.RARE, mage.cards.i.IdentityThief.class)); + cards.add(new SetCardInfo("Ifh-Biff Efreet", 213, Rarity.RARE, mage.cards.i.IfhBiffEfreet.class)); + cards.add(new SetCardInfo("Immolating Glare", 59669, Rarity.UNCOMMON, mage.cards.i.ImmolatingGlare.class)); + cards.add(new SetCardInfo("Imperious Perfect", 31409, Rarity.UNCOMMON, mage.cards.i.ImperiousPerfect.class)); + cards.add(new SetCardInfo("Impulse", 36006, Rarity.COMMON, mage.cards.i.Impulse.class)); + cards.add(new SetCardInfo("In Garruk's Wake", 53828, Rarity.RARE, mage.cards.i.InGarruksWake.class)); + cards.add(new SetCardInfo("Incendiary Flow", 62991, Rarity.UNCOMMON, mage.cards.i.IncendiaryFlow.class)); + cards.add(new SetCardInfo("Incinerate", 31419, Rarity.COMMON, mage.cards.i.Incinerate.class, MPR_FULL_ART)); + cards.add(new SetCardInfo("Incorrigible Youths", 60470, Rarity.UNCOMMON, mage.cards.i.IncorrigibleYouths.class)); + cards.add(new SetCardInfo("Indulgent Tormentor", 53822, Rarity.RARE, mage.cards.i.IndulgentTormentor.class)); + cards.add(new SetCardInfo("Inferno", 62439, Rarity.RARE, mage.cards.i.Inferno.class)); + cards.add(new SetCardInfo("Inferno Titan", 62405, Rarity.MYTHIC, mage.cards.i.InfernoTitan.class)); + cards.add(new SetCardInfo("Infest", 43568, Rarity.UNCOMMON, mage.cards.i.Infest.class, MPR_FULL_ART)); + cards.add(new SetCardInfo("Ink-Eyes, Servant of Oni", 32013, Rarity.RARE, mage.cards.i.InkEyesServantOfOni.class)); + cards.add(new SetCardInfo("Inkmoth Nexus", 62999, Rarity.RARE, mage.cards.i.InkmothNexus.class)); + cards.add(new SetCardInfo("Insidious Mist", 60472, Rarity.RARE, mage.cards.i.InsidiousMist.class)); + cards.add(new SetCardInfo("Intuition", 36046, Rarity.RARE, mage.cards.i.Intuition.class)); + cards.add(new SetCardInfo("Island", 239, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", 247, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", 249, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", 273, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", 283, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", 285, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", 31979, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", 31993, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", 32009, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", 32023, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", 40042, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", 40052, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", 40062, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", 40100, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", 53881, Rarity.LAND, mage.cards.basiclands.Island.class, FULL_ART_ZEN_VARIOUS)); + cards.add(new SetCardInfo("Island", 58255, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Isochron Scepter", 35064, Rarity.UNCOMMON, mage.cards.i.IsochronScepter.class)); + cards.add(new SetCardInfo("Ivorytusk Fortress", 54510, Rarity.RARE, mage.cards.i.IvorytuskFortress.class)); + cards.add(new SetCardInfo("Izzet Charm", 48192, Rarity.UNCOMMON, mage.cards.i.IzzetCharm.class)); + cards.add(new SetCardInfo("Izzet Signet", 62387, Rarity.UNCOMMON, mage.cards.i.IzzetSignet.class)); + cards.add(new SetCardInfo("Jace Beleren", 36176, Rarity.MYTHIC, mage.cards.j.JaceBeleren.class)); + cards.add(new SetCardInfo("Jace's Ingenuity", 41642, Rarity.UNCOMMON, mage.cards.j.JacesIngenuity.class)); + cards.add(new SetCardInfo("Jace, Cunning Castaway", 70932, Rarity.MYTHIC, mage.cards.j.JaceCunningCastaway.class)); + cards.add(new SetCardInfo("Jackal Pup", 36056, Rarity.UNCOMMON, mage.cards.j.JackalPup.class)); + cards.add(new SetCardInfo("Jaya Ballard, Task Mage", 36312, Rarity.RARE, mage.cards.j.JayaBallardTaskMage.class)); + cards.add(new SetCardInfo("Jeering Instigator", 55771, Rarity.RARE, mage.cards.j.JeeringInstigator.class)); + cards.add(new SetCardInfo("Jeskai Infiltrator", 55757, Rarity.RARE, mage.cards.j.JeskaiInfiltrator.class)); + cards.add(new SetCardInfo("Jokulhaups", 70942, Rarity.MYTHIC, mage.cards.j.Jokulhaups.class)); + cards.add(new SetCardInfo("Joraga Warcaller", 35820, Rarity.RARE, mage.cards.j.JoragaWarcaller.class)); + cards.add(new SetCardInfo("Jori En, Ruin Diver", 59679, Rarity.RARE, mage.cards.j.JoriEnRuinDiver.class)); + cards.add(new SetCardInfo("Judge's Familiar", 48194, Rarity.UNCOMMON, mage.cards.j.JudgesFamiliar.class)); + cards.add(new SetCardInfo("Juggernaut", 35044, Rarity.UNCOMMON, mage.cards.j.Juggernaut.class)); + cards.add(new SetCardInfo("Kalastria Highborn", 43552, Rarity.RARE, mage.cards.k.KalastriaHighborn.class)); + cards.add(new SetCardInfo("Kamahl, Pit Fighter", 36088, Rarity.RARE, mage.cards.k.KamahlPitFighter.class)); + cards.add(new SetCardInfo("Karador, Ghost Chieftain", 51534, Rarity.MYTHIC, mage.cards.k.KaradorGhostChieftain.class)); + cards.add(new SetCardInfo("Karakas", 43592, Rarity.UNCOMMON, mage.cards.k.Karakas.class)); + cards.add(new SetCardInfo("Karametra's Acolyte", 50118, Rarity.UNCOMMON, mage.cards.k.KarametrasAcolyte.class)); + cards.add(new SetCardInfo("Karn, Silver Golem", 36106, Rarity.RARE, mage.cards.k.KarnSilverGolem.class)); + cards.add(new SetCardInfo("Khabal Ghoul", 215, Rarity.UNCOMMON, mage.cards.k.KhabalGhoul.class)); + cards.add(new SetCardInfo("Killing Wave", 44319, Rarity.RARE, mage.cards.k.KillingWave.class)); + cards.add(new SetCardInfo("Kiora's Follower", 51926, Rarity.UNCOMMON, mage.cards.k.KiorasFollower.class)); + cards.add(new SetCardInfo("Kiora, the Crashing Wave", 59651, Rarity.MYTHIC, mage.cards.k.KioraTheCrashingWave.class)); + cards.add(new SetCardInfo("Kird Ape", 31383, Rarity.UNCOMMON, mage.cards.k.KirdApe.class)); + cards.add(new SetCardInfo("Kitchen Finks", 36166, Rarity.UNCOMMON, mage.cards.k.KitchenFinks.class)); + cards.add(new SetCardInfo("Kiyomaro, First to Stand", 32015, Rarity.RARE, mage.cards.k.KiyomaroFirstToStand.class)); + cards.add(new SetCardInfo("Kjeldoran Outpost", 23952, Rarity.RARE, mage.cards.k.KjeldoranOutpost.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Kjeldoran Outpost", 43628, Rarity.RARE, mage.cards.k.KjeldoranOutpost.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Knight of New Alara", 32555, Rarity.RARE, mage.cards.k.KnightOfNewAlara.class)); + cards.add(new SetCardInfo("Kongming, \"Sleeping Dragon\"", 33442, Rarity.RARE, mage.cards.k.KongmingSleepingDragon.class)); + cards.add(new SetCardInfo("Kor Duelist", 36212, Rarity.UNCOMMON, mage.cards.k.KorDuelist.class)); + cards.add(new SetCardInfo("Kor Firewalker", 43574, Rarity.UNCOMMON, mage.cards.k.KorFirewalker.class)); + cards.add(new SetCardInfo("Kor Skyfisher", 43548, Rarity.COMMON, mage.cards.k.KorSkyfisher.class)); + cards.add(new SetCardInfo("Korlash, Heir to Blackblade", 31961, Rarity.RARE, mage.cards.k.KorlashHeirToBlackblade.class)); + cards.add(new SetCardInfo("Kothophed, Soul Hoarder", 57590, Rarity.RARE, mage.cards.k.KothophedSoulHoarder.class)); + cards.add(new SetCardInfo("Kozilek, the Great Distortion", 62493, Rarity.MYTHIC, mage.cards.k.KozilekTheGreatDistortion.class)); + cards.add(new SetCardInfo("Krosan Grip", 37604, Rarity.UNCOMMON, mage.cards.k.KrosanGrip.class)); + cards.add(new SetCardInfo("Krosan Tusker", 32575, Rarity.COMMON, mage.cards.k.KrosanTusker.class)); + cards.add(new SetCardInfo("Krosan Warchief", 32577, Rarity.UNCOMMON, mage.cards.k.KrosanWarchief.class)); + cards.add(new SetCardInfo("Lake of the Dead", 23954, Rarity.RARE, mage.cards.l.LakeOfTheDead.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Lake of the Dead", 43630, Rarity.RARE, mage.cards.l.LakeOfTheDead.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Land Tax", 36855, Rarity.RARE, mage.cards.l.LandTax.class)); + cards.add(new SetCardInfo("Languish", 57592, Rarity.RARE, mage.cards.l.Languish.class)); + cards.add(new SetCardInfo("Laquatus's Champion", 37875, Rarity.RARE, mage.cards.l.LaquatussChampion.class)); + cards.add(new SetCardInfo("Latch Seeker", 44315, Rarity.UNCOMMON, mage.cards.l.LatchSeeker.class)); + cards.add(new SetCardInfo("Lava Axe", 32559, Rarity.COMMON, mage.cards.l.LavaAxe.class)); + cards.add(new SetCardInfo("Lavinia, Azorius Renegade", 71588, Rarity.RARE, mage.cards.l.LaviniaAzoriusRenegade.class)); + cards.add(new SetCardInfo("Leatherback Baloth", 43576, Rarity.UNCOMMON, mage.cards.l.LeatherbackBaloth.class)); + cards.add(new SetCardInfo("Library of Alexandria", 46940, Rarity.RARE, mage.cards.l.LibraryOfAlexandria.class)); + cards.add(new SetCardInfo("Life // Death", 32591, Rarity.UNCOMMON, mage.cards.l.LifeDeath.class)); + cards.add(new SetCardInfo("Lightning Bolt", 35932, Rarity.COMMON, mage.cards.l.LightningBolt.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Lightning Bolt", 36224, Rarity.COMMON, mage.cards.l.LightningBolt.class, MPR_FULL_ART)); + cards.add(new SetCardInfo("Lightning Dragon", 32196, Rarity.RARE, mage.cards.l.LightningDragon.class)); + cards.add(new SetCardInfo("Lightning Greaves", 36194, Rarity.UNCOMMON, mage.cards.l.LightningGreaves.class)); + cards.add(new SetCardInfo("Lightning Helix", 31487, Rarity.UNCOMMON, mage.cards.l.LightningHelix.class, MPR_FULL_ART)); + cards.add(new SetCardInfo("Lightning Hounds", 36154, Rarity.COMMON, mage.cards.l.LightningHounds.class)); + cards.add(new SetCardInfo("Lightning Rift", 32571, Rarity.UNCOMMON, mage.cards.l.LightningRift.class)); + cards.add(new SetCardInfo("Liliana of the Veil", 55866, Rarity.MYTHIC, mage.cards.l.LilianaOfTheVeil.class)); + cards.add(new SetCardInfo("Liliana's Specter", 37602, Rarity.COMMON, mage.cards.l.LilianasSpecter.class)); + cards.add(new SetCardInfo("Liliana, Untouched by Death", 70938, Rarity.MYTHIC, mage.cards.l.LilianaUntouchedByDeath.class)); + cards.add(new SetCardInfo("Lingering Souls", 45201, Rarity.UNCOMMON, mage.cards.l.LingeringSouls.class)); + cards.add(new SetCardInfo("Lion's Eye Diamond", 51936, Rarity.RARE, mage.cards.l.LionsEyeDiamond.class)); + cards.add(new SetCardInfo("Living Death", 36042, Rarity.RARE, mage.cards.l.LivingDeath.class)); + cards.add(new SetCardInfo("Living Wish", 35068, Rarity.RARE, mage.cards.l.LivingWish.class)); + cards.add(new SetCardInfo("Llanowar Elves", 31379, Rarity.COMMON, mage.cards.l.LlanowarElves.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Llanowar Elves", 35934, Rarity.COMMON, mage.cards.l.LlanowarElves.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Llanowar Elves", 68039, Rarity.COMMON, mage.cards.l.LlanowarElves.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Lobotomy", 32529, Rarity.UNCOMMON, mage.cards.l.Lobotomy.class)); + cards.add(new SetCardInfo("Longbow Archer", 36008, Rarity.UNCOMMON, mage.cards.l.LongbowArcher.class)); + cards.add(new SetCardInfo("Lord of Atlantis", 35936, Rarity.RARE, mage.cards.l.LordOfAtlantis.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Lord of Atlantis", 69945, Rarity.RARE, mage.cards.l.LordOfAtlantis.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Lord of Shatterskull Pass", 36871, Rarity.RARE, mage.cards.l.LordOfShatterskullPass.class)); + cards.add(new SetCardInfo("Lotus Bloom", 31495, Rarity.RARE, mage.cards.l.LotusBloom.class)); + cards.add(new SetCardInfo("Lotus Cobra", 44321, Rarity.MYTHIC, mage.cards.l.LotusCobra.class)); + cards.add(new SetCardInfo("Lowland Oaf", 62415, Rarity.COMMON, mage.cards.l.LowlandOaf.class)); + cards.add(new SetCardInfo("Loyal Retainers", 47973, Rarity.UNCOMMON, mage.cards.l.LoyalRetainers.class)); + cards.add(new SetCardInfo("Lu Bu, Master-at-Arms", 36130, Rarity.RARE, mage.cards.l.LuBuMasterAtArms.class)); + cards.add(new SetCardInfo("Ludevic's Abomination", 42874, Rarity.RARE, mage.cards.l.LudevicsAbomination.class)); + cards.add(new SetCardInfo("Ludevic's Test Subject", 42874, Rarity.RARE, mage.cards.l.LudevicsTestSubject.class)); + cards.add(new SetCardInfo("Mad Auntie", 35066, Rarity.RARE, mage.cards.m.MadAuntie.class)); + cards.add(new SetCardInfo("Maelstrom Pulse", 37845, Rarity.RARE, mage.cards.m.MaelstromPulse.class)); + cards.add(new SetCardInfo("Magister of Worth", 52593, Rarity.RARE, mage.cards.m.MagisterOfWorth.class)); + cards.add(new SetCardInfo("Magma Jet", 36162, Rarity.UNCOMMON, mage.cards.m.MagmaJet.class)); + cards.add(new SetCardInfo("Magma Spray", 52338, Rarity.RARE, mage.cards.m.MagmaSpray.class)); + cards.add(new SetCardInfo("Magmaquake", 45207, Rarity.RARE, mage.cards.m.Magmaquake.class)); + cards.add(new SetCardInfo("Malfegor", 31971, Rarity.MYTHIC, mage.cards.m.Malfegor.class)); + cards.add(new SetCardInfo("Man-o'-War", 36010, Rarity.COMMON, mage.cards.m.ManOWar.class)); + cards.add(new SetCardInfo("Mana Crypt", 35962, Rarity.RARE, mage.cards.m.ManaCrypt.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mana Crypt", 46908, Rarity.RARE, mage.cards.m.ManaCrypt.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mana Drain", 46934, Rarity.RARE, mage.cards.m.ManaDrain.class)); + cards.add(new SetCardInfo("Mana Flare", 58241, Rarity.RARE, mage.cards.m.ManaFlare.class)); + cards.add(new SetCardInfo("Mana Leak", 31481, Rarity.COMMON, mage.cards.m.ManaLeak.class, MPR_FULL_ART)); + cards.add(new SetCardInfo("Mana Tithe", 35108, Rarity.COMMON, mage.cards.m.ManaTithe.class, MPR_FULL_ART)); + cards.add(new SetCardInfo("Mana Vault", 46942, Rarity.RARE, mage.cards.m.ManaVault.class)); + cards.add(new SetCardInfo("Mardu Shadowspear", 55717, Rarity.UNCOMMON, mage.cards.m.MarduShadowspear.class)); + cards.add(new SetCardInfo("Marisi's Twinclaws", 36186, Rarity.UNCOMMON, mage.cards.m.MarisisTwinclaws.class)); + cards.add(new SetCardInfo("Markov Dreadknight", 60456, Rarity.RARE, mage.cards.m.MarkovDreadknight.class)); + cards.add(new SetCardInfo("Master's Call", 39644, Rarity.COMMON, mage.cards.m.MastersCall.class)); + cards.add(new SetCardInfo("Mastery of the Unseen", 55705, Rarity.RARE, mage.cards.m.MasteryOfTheUnseen.class)); + cards.add(new SetCardInfo("Maul Splicer", 40084, Rarity.COMMON, mage.cards.m.MaulSplicer.class)); + cards.add(new SetCardInfo("Mayor of Avabruck", 42866, Rarity.RARE, mage.cards.m.MayorOfAvabruck.class)); + cards.add(new SetCardInfo("Maze of Ith", 36170, Rarity.RARE, mage.cards.m.MazeOfIth.class)); + cards.add(new SetCardInfo("Maze's End", 48572, Rarity.MYTHIC, mage.cards.m.MazesEnd.class)); + cards.add(new SetCardInfo("Meddling Mage", 36304, Rarity.RARE, mage.cards.m.MeddlingMage.class)); + cards.add(new SetCardInfo("Megantic Sliver", 49830, Rarity.RARE, mage.cards.m.MeganticSliver.class)); + cards.add(new SetCardInfo("Melek, Izzet Paragon", 48578, Rarity.RARE, mage.cards.m.MelekIzzetParagon.class)); + cards.add(new SetCardInfo("Memnite", 37871, Rarity.UNCOMMON, mage.cards.m.Memnite.class)); + cards.add(new SetCardInfo("Memoricide", 37863, Rarity.RARE, mage.cards.m.Memoricide.class)); + cards.add(new SetCardInfo("Memory Lapse", 35986, Rarity.COMMON, mage.cards.m.MemoryLapse.class)); + cards.add(new SetCardInfo("Merchant Scroll", 68055, Rarity.RARE, mage.cards.m.MerchantScroll.class)); + cards.add(new SetCardInfo("Mercurial Pretender", 53826, Rarity.RARE, mage.cards.m.MercurialPretender.class)); + cards.add(new SetCardInfo("Merrow Reejerey", 36164, Rarity.UNCOMMON, mage.cards.m.MerrowReejerey.class)); + cards.add(new SetCardInfo("Metalworker", 46950, Rarity.RARE, mage.cards.m.Metalworker.class)); + cards.add(new SetCardInfo("Militia Bugler", 69260, Rarity.UNCOMMON, mage.cards.m.MilitiaBugler.class)); + cards.add(new SetCardInfo("Mind Control", 36298, Rarity.UNCOMMON, mage.cards.m.MindControl.class)); + cards.add(new SetCardInfo("Mind Stone", 31405, Rarity.UNCOMMON, mage.cards.m.MindStone.class)); + cards.add(new SetCardInfo("Mind Twist", 46920, Rarity.RARE, mage.cards.m.MindTwist.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mind Twist", 62427, Rarity.RARE, mage.cards.m.MindTwist.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mind Warp", 35982, Rarity.UNCOMMON, mage.cards.m.MindWarp.class)); + cards.add(new SetCardInfo("Mind's Desire", 35070, Rarity.RARE, mage.cards.m.MindsDesire.class)); + cards.add(new SetCardInfo("Mind's Eye", 47981, Rarity.RARE, mage.cards.m.MindsEye.class)); + cards.add(new SetCardInfo("Mindwrack Demon", 60480, Rarity.MYTHIC, mage.cards.m.MindwrackDemon.class)); + cards.add(new SetCardInfo("Mirari's Wake", 31421, Rarity.RARE, mage.cards.m.MirarisWake.class)); + cards.add(new SetCardInfo("Mirran Crusader", 39636, Rarity.RARE, mage.cards.m.MirranCrusader.class)); + // Planechase Plane. Card not implemented. + // cards.add(new SetCardInfo("Mirrored Depths", 44344, Rarity.RARE, mage.cards.m.MirroredDepths.class)); + cards.add(new SetCardInfo("Misdirection", 62461, Rarity.RARE, mage.cards.m.Misdirection.class)); + cards.add(new SetCardInfo("Mishra's Factory", 221, Rarity.UNCOMMON, mage.cards.m.MishrasFactory.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mishra's Factory", 35954, Rarity.UNCOMMON, mage.cards.m.MishrasFactory.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mishra's Workshop", 46944, Rarity.RARE, mage.cards.m.MishrasWorkshop.class)); + cards.add(new SetCardInfo("Mitotic Slime", 37600, Rarity.RARE, mage.cards.m.MitoticSlime.class)); + cards.add(new SetCardInfo("Mizzium Meddler", 57608, Rarity.RARE, mage.cards.m.MizziumMeddler.class)); + cards.add(new SetCardInfo("Moat", 46948, Rarity.RARE, mage.cards.m.Moat.class)); + cards.add(new SetCardInfo("Mogg Fanatic", 31407, Rarity.UNCOMMON, mage.cards.m.MoggFanatic.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mogg Fanatic", 36036, Rarity.COMMON, mage.cards.m.MoggFanatic.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Momentary Blink", 60478, Rarity.COMMON, mage.cards.m.MomentaryBlink.class)); + cards.add(new SetCardInfo("Mondronen Shaman", 43507, Rarity.RARE, mage.cards.m.MondronenShaman.class)); + cards.add(new SetCardInfo("Monstrous Hound", 32194, Rarity.RARE, mage.cards.m.MonstrousHound.class)); + cards.add(new SetCardInfo("Moonsilver Spear", 44311, Rarity.RARE, mage.cards.m.MoonsilverSpear.class)); + cards.add(new SetCardInfo("Morphling", 26982, Rarity.RARE, mage.cards.m.Morphling.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Morphling", 36847, Rarity.RARE, mage.cards.m.Morphling.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mortify", 35046, Rarity.UNCOMMON, mage.cards.m.Mortify.class, MPR_FULL_ART)); + cards.add(new SetCardInfo("Mother of Runes", 36140, Rarity.UNCOMMON, mage.cards.m.MotherOfRunes.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mother of Runes", 59649, Rarity.UNCOMMON, mage.cards.m.MotherOfRunes.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", 241, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", 243, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", 245, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", 267, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", 277, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", 289, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", 291, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", 31981, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", 31995, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", 32003, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", 32025, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", 40044, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", 40054, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", 40064, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", 40096, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", 53877, Rarity.LAND, mage.cards.basiclands.Mountain.class, FULL_ART_ZEN_VARIOUS)); + cards.add(new SetCardInfo("Mountain", 58259, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mox Emerald", 46896, Rarity.RARE, mage.cards.m.MoxEmerald.class)); + cards.add(new SetCardInfo("Mox Jet", 46894, Rarity.RARE, mage.cards.m.MoxJet.class)); + cards.add(new SetCardInfo("Mox Pearl", 46892, Rarity.RARE, mage.cards.m.MoxPearl.class)); + cards.add(new SetCardInfo("Mox Ruby", 46952, Rarity.RARE, mage.cards.m.MoxRuby.class)); + cards.add(new SetCardInfo("Mox Sapphire", 46902, Rarity.RARE, mage.cards.m.MoxSapphire.class)); + cards.add(new SetCardInfo("Mulldrifter", 36190, Rarity.COMMON, mage.cards.m.Mulldrifter.class)); + cards.add(new SetCardInfo("Munda's Vanguard", 59659, Rarity.RARE, mage.cards.m.MundasVanguard.class)); + cards.add(new SetCardInfo("Murder", 69256, Rarity.UNCOMMON, mage.cards.m.Murder.class)); + cards.add(new SetCardInfo("Murderous Redcap", 36192, Rarity.UNCOMMON, mage.cards.m.MurderousRedcap.class)); + cards.add(new SetCardInfo("Muscle Sliver", 36034, Rarity.COMMON, mage.cards.m.MuscleSliver.class)); + cards.add(new SetCardInfo("Mutavault", 31425, Rarity.RARE, mage.cards.m.Mutavault.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mutavault", 66888, Rarity.RARE, mage.cards.m.Mutavault.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mwonvuli Beast Tracker", 45211, Rarity.UNCOMMON, mage.cards.m.MwonvuliBeastTracker.class)); + cards.add(new SetCardInfo("Mycoid Shepherd", 43556, Rarity.RARE, mage.cards.m.MycoidShepherd.class)); + cards.add(new SetCardInfo("Myr Enforcer", 36274, Rarity.COMMON, mage.cards.m.MyrEnforcer.class)); + cards.add(new SetCardInfo("Myr Superion", 40078, Rarity.RARE, mage.cards.m.MyrSuperion.class)); + cards.add(new SetCardInfo("Mystic of the Hidden Way", 55775, Rarity.COMMON, mage.cards.m.MysticOfTheHiddenWay.class)); + cards.add(new SetCardInfo("Mystical Tutor", 70926, Rarity.MYTHIC, mage.cards.m.MysticalTutor.class)); + cards.add(new SetCardInfo("Nalathni Dragon", 35956, Rarity.RARE, mage.cards.n.NalathniDragon.class)); + cards.add(new SetCardInfo("Nameless Inversion", 35126, Rarity.COMMON, mage.cards.n.NamelessInversion.class, MPR_FULL_ART)); + cards.add(new SetCardInfo("Natural Order", 43536, Rarity.RARE, mage.cards.n.NaturalOrder.class)); + cards.add(new SetCardInfo("Naya Sojourners", 36188, Rarity.COMMON, mage.cards.n.NayaSojourners.class)); + cards.add(new SetCardInfo("Nearheath Stalker", 43509, Rarity.COMMON, mage.cards.n.NearheathStalker.class)); + cards.add(new SetCardInfo("Necromaster Dragon", 57000, Rarity.RARE, mage.cards.n.NecromasterDragon.class)); + cards.add(new SetCardInfo("Necropolis Fiend", 55729, Rarity.RARE, mage.cards.n.NecropolisFiend.class)); + cards.add(new SetCardInfo("Negate", 35138, Rarity.COMMON, mage.cards.n.Negate.class, MPR_FULL_ART)); + cards.add(new SetCardInfo("Negate", 70930, Rarity.MYTHIC, mage.cards.n.Negate.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Nekusar, the Mindrazer", 52314, Rarity.MYTHIC, mage.cards.n.NekusarTheMindrazer.class)); + cards.add(new SetCardInfo("Nephalia Moondrakes", 60458, Rarity.RARE, mage.cards.n.NephaliaMoondrakes.class)); + cards.add(new SetCardInfo("Nessian Wilds Ravager", 51924, Rarity.RARE, mage.cards.n.NessianWildsRavager.class)); + cards.add(new SetCardInfo("Nether Void", 46936, Rarity.RARE, mage.cards.n.NetherVoid.class)); + cards.add(new SetCardInfo("Niblis of Frost", 61547, Rarity.RARE, mage.cards.n.NiblisOfFrost.class)); + cards.add(new SetCardInfo("Nicol Bolas, Planeswalker", 65009, Rarity.MYTHIC, mage.cards.n.NicolBolasPlaneswalker.class)); + cards.add(new SetCardInfo("Nighthowler", 50122, Rarity.RARE, mage.cards.n.Nighthowler.class)); + cards.add(new SetCardInfo("Nightveil Specter", 47995, Rarity.RARE, mage.cards.n.NightveilSpecter.class)); + cards.add(new SetCardInfo("Nissa's Chosen", 36216, Rarity.COMMON, mage.cards.n.NissasChosen.class)); + cards.add(new SetCardInfo("Nissa's Pilgrimage", 59677, Rarity.COMMON, mage.cards.n.NissasPilgrimage.class)); + cards.add(new SetCardInfo("Nissa, Vital Force", 70936, Rarity.MYTHIC, mage.cards.n.NissaVitalForce.class)); + cards.add(new SetCardInfo("Nissa, Voice of Zendikar", 62511, Rarity.MYTHIC, mage.cards.n.NissaVoiceOfZendikar.class)); + cards.add(new SetCardInfo("Nissa, Worldwaker", 65005, Rarity.MYTHIC, mage.cards.n.NissaWorldwaker.class)); + cards.add(new SetCardInfo("Niv-Mizzet, the Firemind", 32583, Rarity.RARE, mage.cards.n.NivMizzetTheFiremind.class)); + cards.add(new SetCardInfo("Noble Hierarch", 58239, Rarity.RARE, mage.cards.n.NobleHierarch.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Noble Hierarch", 66894, Rarity.RARE, mage.cards.n.NobleHierarch.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Noose Constrictor", 62995, Rarity.UNCOMMON, mage.cards.n.NooseConstrictor.class)); + cards.add(new SetCardInfo("Noosegraf Mob", 61549, Rarity.RARE, mage.cards.n.NoosegrafMob.class)); + cards.add(new SetCardInfo("Oath of Druids", 36092, Rarity.RARE, mage.cards.o.OathOfDruids.class)); + cards.add(new SetCardInfo("Ob Nixilis Reignited", 62509, Rarity.MYTHIC, mage.cards.o.ObNixilisReignited.class)); + cards.add(new SetCardInfo("Obelisk of Alara", 31973, Rarity.RARE, mage.cards.o.ObeliskOfAlara.class)); + cards.add(new SetCardInfo("Oblivion Ring", 36202, Rarity.COMMON, mage.cards.o.OblivionRing.class)); + cards.add(new SetCardInfo("Oblivion Sower", 58893, Rarity.MYTHIC, mage.cards.o.OblivionSower.class)); + cards.add(new SetCardInfo("Ojutai's Command", 55878, Rarity.RARE, mage.cards.o.OjutaisCommand.class)); + cards.add(new SetCardInfo("Okina Nightwatch", 36290, Rarity.COMMON, mage.cards.o.OkinaNightwatch.class)); + cards.add(new SetCardInfo("Old Man of the Sea", 43644, Rarity.RARE, mage.cards.o.OldManOfTheSea.class)); + cards.add(new SetCardInfo("Oloro, Ageless Ascetic", 52316, Rarity.MYTHIC, mage.cards.o.OloroAgelessAscetic.class)); + cards.add(new SetCardInfo("Oona's Blackguard", 32535, Rarity.UNCOMMON, mage.cards.o.OonasBlackguard.class)); + cards.add(new SetCardInfo("Ophidian", 36022, Rarity.COMMON, mage.cards.o.Ophidian.class)); + cards.add(new SetCardInfo("Opt", 68047, Rarity.COMMON, mage.cards.o.Opt.class)); + cards.add(new SetCardInfo("Oracle's Vault", 64434, Rarity.RARE, mage.cards.o.OraclesVault.class)); + cards.add(new SetCardInfo("Oran-Rief Hydra", 58251, Rarity.RARE, mage.cards.o.OranRiefHydra.class)); + cards.add(new SetCardInfo("Orator of Ojutai", 57578, Rarity.UNCOMMON, mage.cards.o.OratorOfOjutai.class)); + cards.add(new SetCardInfo("Orcish Lumberjack", 43638, Rarity.COMMON, mage.cards.o.OrcishLumberjack.class)); + cards.add(new SetCardInfo("Orim's Chant", 35072, Rarity.RARE, mage.cards.o.OrimsChant.class)); + cards.add(new SetCardInfo("Oros, the Avenger", 31959, Rarity.RARE, mage.cards.o.OrosTheAvenger.class)); + cards.add(new SetCardInfo("Orzhov Signet", 46910, Rarity.UNCOMMON, mage.cards.o.OrzhovSignet.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Orzhov Signet", 62399, Rarity.COMMON, mage.cards.o.OrzhovSignet.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Overbeing of Myth", 31967, Rarity.RARE, mage.cards.o.OverbeingOfMyth.class)); + cards.add(new SetCardInfo("Overgrown Tomb", 72315, Rarity.RARE, mage.cards.o.OvergrownTomb.class)); + cards.add(new SetCardInfo("Overtaker", 32202, Rarity.RARE, mage.cards.o.Overtaker.class)); + cards.add(new SetCardInfo("Oxidize", 35162, Rarity.UNCOMMON, mage.cards.o.Oxidize.class, MPR_FULL_ART)); + cards.add(new SetCardInfo("Pain Seer", 51916, Rarity.RARE, mage.cards.p.PainSeer.class)); + cards.add(new SetCardInfo("Path to Exile", 36174, Rarity.UNCOMMON, mage.cards.p.PathToExile.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Path to Exile", 57580, Rarity.UNCOMMON, mage.cards.p.PathToExile.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Pathrazer of Ulamog", 36861, Rarity.UNCOMMON, mage.cards.p.PathrazerOfUlamog.class)); + cards.add(new SetCardInfo("Peace Strider", 39019, Rarity.UNCOMMON, mage.cards.p.PeaceStrider.class)); + cards.add(new SetCardInfo("Pendelhaven", 35104, Rarity.UNCOMMON, mage.cards.p.Pendelhaven.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Pendelhaven", 65660, Rarity.UNCOMMON, mage.cards.p.Pendelhaven.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Pernicious Deed", 36306, Rarity.RARE, mage.cards.p.PerniciousDeed.class)); + cards.add(new SetCardInfo("Phalanx Leader", 50116, Rarity.UNCOMMON, mage.cards.p.PhalanxLeader.class)); + cards.add(new SetCardInfo("Phyrexian Dreadnought", 43534, Rarity.RARE, mage.cards.p.PhyrexianDreadnought.class)); + cards.add(new SetCardInfo("Phyrexian Metamorph", 40082, Rarity.RARE, mage.cards.p.PhyrexianMetamorph.class)); + cards.add(new SetCardInfo("Phyrexian Negator", 36144, Rarity.RARE, mage.cards.p.PhyrexianNegator.class)); + cards.add(new SetCardInfo("Phytotitan", 53830, Rarity.RARE, mage.cards.p.Phytotitan.class)); + cards.add(new SetCardInfo("Pia and Kiran Nalaar", 57594, Rarity.RARE, mage.cards.p.PiaAndKiranNalaar.class)); + cards.add(new SetCardInfo("Pierce Strider", 39017, Rarity.UNCOMMON, mage.cards.p.PierceStrider.class)); + cards.add(new SetCardInfo("Pillage", 35994, Rarity.UNCOMMON, mage.cards.p.Pillage.class)); + cards.add(new SetCardInfo("Pillar of Flame", 46871, Rarity.COMMON, mage.cards.p.PillarOfFlame.class)); + cards.add(new SetCardInfo("Plague Myr", 39640, Rarity.UNCOMMON, mage.cards.p.PlagueMyr.class)); + cards.add(new SetCardInfo("Plague Stinger", 37867, Rarity.COMMON, mage.cards.p.PlagueStinger.class)); + cards.add(new SetCardInfo("Plains", 231, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plains", 233, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plains", 255, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plains", 261, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plains", 271, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plains", 281, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plains", 295, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plains", 31975, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plains", 31997, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plains", 32011, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plains", 32019, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plains", 40046, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plains", 40056, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plains", 40066, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plains", 40098, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plains", 48582, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plains", 53879, Rarity.LAND, mage.cards.basiclands.Plains.class, FULL_ART_ZEN_VARIOUS)); + cards.add(new SetCardInfo("Plains", 58253, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plateau", 43608, Rarity.RARE, mage.cards.p.Plateau.class)); + cards.add(new SetCardInfo("Polluted Delta", 43582, Rarity.RARE, mage.cards.p.PollutedDelta.class)); + cards.add(new SetCardInfo("Ponder", 35118, Rarity.COMMON, mage.cards.p.Ponder.class, MPR_FULL_ART)); + cards.add(new SetCardInfo("Pouncing Jaguar", 36110, Rarity.COMMON, mage.cards.p.PouncingJaguar.class)); + cards.add(new SetCardInfo("Powder Keg", 36146, Rarity.RARE, mage.cards.p.PowderKeg.class)); + cards.add(new SetCardInfo("Preacher", 23950, Rarity.RARE, mage.cards.p.Preacher.class)); + cards.add(new SetCardInfo("Priest of Titania", 36120, Rarity.COMMON, mage.cards.p.PriestOfTitania.class)); + cards.add(new SetCardInfo("Priest of Urabrask", 40080, Rarity.UNCOMMON, mage.cards.p.PriestOfUrabrask.class)); + cards.add(new SetCardInfo("Primal Command", 62489, Rarity.RARE, mage.cards.p.PrimalCommand.class)); + cards.add(new SetCardInfo("Pristine Skywise", 57002, Rarity.RARE, mage.cards.p.PristineSkywise.class)); + cards.add(new SetCardInfo("Pristine Talisman", 40074, Rarity.COMMON, mage.cards.p.PristineTalisman.class)); + cards.add(new SetCardInfo("Prodigal Sorcerer", 35938, Rarity.COMMON, mage.cards.p.ProdigalSorcerer.class)); + cards.add(new SetCardInfo("Prognostic Sphinx", 53842, Rarity.RARE, mage.cards.p.PrognosticSphinx.class)); + cards.add(new SetCardInfo("Prophet of Kruphix", 53844, Rarity.RARE, mage.cards.p.ProphetOfKruphix.class)); + cards.add(new SetCardInfo("Psionic Blast", 35058, Rarity.RARE, mage.cards.p.PsionicBlast.class, MPR_FULL_ART)); + cards.add(new SetCardInfo("Psychatog", 31467, Rarity.UNCOMMON, mage.cards.p.Psychatog.class)); + cards.add(new SetCardInfo("Putrefy", 35166, Rarity.UNCOMMON, mage.cards.p.Putrefy.class, MPR_FULL_ART)); + cards.add(new SetCardInfo("Pyroblast", 69981, Rarity.COMMON, mage.cards.p.Pyroblast.class)); + cards.add(new SetCardInfo("Pyroclasm", 35168, Rarity.UNCOMMON, mage.cards.p.Pyroclasm.class, MPR_FULL_ART)); + cards.add(new SetCardInfo("Pyrokinesis", 43640, Rarity.RARE, mage.cards.p.Pyrokinesis.class)); + cards.add(new SetCardInfo("Qasali Pridemage", 37608, Rarity.COMMON, mage.cards.q.QasaliPridemage.class)); + cards.add(new SetCardInfo("Questing Phelddagrif", 36234, Rarity.RARE, mage.cards.q.QuestingPhelddagrif.class)); + cards.add(new SetCardInfo("Quicksmith Rebel", 62993, Rarity.RARE, mage.cards.q.QuicksmithRebel.class)); + cards.add(new SetCardInfo("Quirion Ranger", 36012, Rarity.COMMON, mage.cards.q.QuirionRanger.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Quirion Ranger", 62443, Rarity.COMMON, mage.cards.q.QuirionRanger.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Radiant Flames", 58277, Rarity.RARE, mage.cards.r.RadiantFlames.class)); + cards.add(new SetCardInfo("Raging Kavu", 36206, Rarity.RARE, mage.cards.r.RagingKavu.class)); + cards.add(new SetCardInfo("Rakdos Cackler", 49842, Rarity.UNCOMMON, mage.cards.r.RakdosCackler.class)); + cards.add(new SetCardInfo("Rakdos Firewheeler", 71590, Rarity.UNCOMMON, mage.cards.r.RakdosFirewheeler.class)); + cards.add(new SetCardInfo("Rakdos Guildmage", 32589, Rarity.UNCOMMON, mage.cards.r.RakdosGuildmage.class)); + cards.add(new SetCardInfo("Rakdos Signet", 46898, Rarity.UNCOMMON, mage.cards.r.RakdosSignet.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Rakdos Signet", 62389, Rarity.COMMON, mage.cards.r.RakdosSignet.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Rakshasa Vizier", 54516, Rarity.RARE, mage.cards.r.RakshasaVizier.class)); + cards.add(new SetCardInfo("Rampaging Baloths", 35140, Rarity.MYTHIC, mage.cards.r.RampagingBaloths.class)); + cards.add(new SetCardInfo("Rampant Growth", 35128, Rarity.COMMON, mage.cards.r.RampantGrowth.class, MPR_FULL_ART)); + cards.add(new SetCardInfo("Ramunap Excavator", 64991, Rarity.RARE, mage.cards.r.RamunapExcavator.class)); + cards.add(new SetCardInfo("Rancor", 35112, Rarity.COMMON, mage.cards.r.Rancor.class)); + cards.add(new SetCardInfo("Ratchet Bomb", 49836, Rarity.RARE, mage.cards.r.RatchetBomb.class)); + cards.add(new SetCardInfo("Rathi Assassin", 32204, Rarity.RARE, mage.cards.r.RathiAssassin.class)); + cards.add(new SetCardInfo("Rattleclaw Mystic", 54557, Rarity.RARE, mage.cards.r.RattleclawMystic.class)); + cards.add(new SetCardInfo("Ravages of War", 55864, Rarity.RARE, mage.cards.r.RavagesOfWar.class)); + cards.add(new SetCardInfo("Ravenous Baloth", 31389, Rarity.RARE, mage.cards.r.RavenousBaloth.class)); + cards.add(new SetCardInfo("Ravenous Bloodseeker", 60486, Rarity.UNCOMMON, mage.cards.r.RavenousBloodseeker.class)); + cards.add(new SetCardInfo("Ravenous Demon", 43503, Rarity.RARE, mage.cards.r.RavenousDemon.class)); + cards.add(new SetCardInfo("Razorfin Hunter", 62407, Rarity.COMMON, mage.cards.r.RazorfinHunter.class)); + cards.add(new SetCardInfo("Reality Shift", 55759, Rarity.UNCOMMON, mage.cards.r.RealityShift.class)); + cards.add(new SetCardInfo("Reanimate", 36052, Rarity.UNCOMMON, mage.cards.r.Reanimate.class)); + cards.add(new SetCardInfo("Reaper of the Wilds", 55737, Rarity.RARE, mage.cards.r.ReaperOfTheWilds.class)); + cards.add(new SetCardInfo("Reciprocate", 35164, Rarity.UNCOMMON, mage.cards.r.Reciprocate.class, MPR_FULL_ART)); + cards.add(new SetCardInfo("Reckless Wurm", 35990, Rarity.UNCOMMON, mage.cards.r.RecklessWurm.class)); + cards.add(new SetCardInfo("Reclamation Sage", 53836, Rarity.UNCOMMON, mage.cards.r.ReclamationSage.class)); + cards.add(new SetCardInfo("Recollect", 35060, Rarity.UNCOMMON, mage.cards.r.Recollect.class, MPR_FULL_ART)); + cards.add(new SetCardInfo("Red Elemental Blast", 43610, Rarity.UNCOMMON, mage.cards.r.RedElementalBlast.class)); + cards.add(new SetCardInfo("Reflecting Pool", 62487, Rarity.RARE, mage.cards.r.ReflectingPool.class)); + cards.add(new SetCardInfo("Regrowth", 35940, Rarity.UNCOMMON, mage.cards.r.Regrowth.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Regrowth", 43612, Rarity.RARE, mage.cards.r.Regrowth.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Reins of Power", 62517, Rarity.RARE, mage.cards.r.ReinsOfPower.class)); + cards.add(new SetCardInfo("Relic Seeker", 57574, Rarity.RARE, mage.cards.r.RelicSeeker.class)); + cards.add(new SetCardInfo("Reliquary Tower", 48007, Rarity.UNCOMMON, mage.cards.r.ReliquaryTower.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Reliquary Tower", 69250, Rarity.UNCOMMON, mage.cards.r.ReliquaryTower.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Remand", 31429, Rarity.UNCOMMON, mage.cards.r.Remand.class)); + cards.add(new SetCardInfo("Remove Soul", 35130, Rarity.COMMON, mage.cards.r.RemoveSoul.class, MPR_FULL_ART)); + cards.add(new SetCardInfo("Render Silent", 48576, Rarity.RARE, mage.cards.r.RenderSilent.class)); + cards.add(new SetCardInfo("Renegade Rallier", 64999, Rarity.UNCOMMON, mage.cards.r.RenegadeRallier.class)); + cards.add(new SetCardInfo("Repeal", 54543, Rarity.COMMON, mage.cards.r.Repeal.class)); + cards.add(new SetCardInfo("Resolute Archangel", 53820, Rarity.RARE, mage.cards.r.ResoluteArchangel.class)); + cards.add(new SetCardInfo("Restoration Angel", 44317, Rarity.RARE, mage.cards.r.RestorationAngel.class)); + cards.add(new SetCardInfo("Resurrection", 36136, Rarity.UNCOMMON, mage.cards.r.Resurrection.class)); + cards.add(new SetCardInfo("Retaliator Griffin", 43546, Rarity.RARE, mage.cards.r.RetaliatorGriffin.class)); + cards.add(new SetCardInfo("Revenant", 32192, Rarity.RARE, mage.cards.r.Revenant.class)); + cards.add(new SetCardInfo("Reverse Engineer", 64995, Rarity.UNCOMMON, mage.cards.r.ReverseEngineer.class)); + cards.add(new SetCardInfo("Rewind", 36124, Rarity.COMMON, mage.cards.r.Rewind.class)); + cards.add(new SetCardInfo("Reya Dawnbringer", 36086, Rarity.RARE, mage.cards.r.ReyaDawnbringer.class)); + cards.add(new SetCardInfo("Rhox", 36204, Rarity.RARE, mage.cards.r.Rhox.class)); + cards.add(new SetCardInfo("Rhox War Monk", 40088, Rarity.UNCOMMON, mage.cards.r.RhoxWarMonk.class)); + cards.add(new SetCardInfo("Rhystic Study", 47975, Rarity.COMMON, mage.cards.r.RhysticStudy.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Rhystic Study", 69943, Rarity.RARE, mage.cards.r.RhysticStudy.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Rift Bolt", 37849, Rarity.COMMON, mage.cards.r.RiftBolt.class)); + cards.add(new SetCardInfo("Riku of Two Reflections", 51536, Rarity.MYTHIC, mage.cards.r.RikuOfTwoReflections.class)); + cards.add(new SetCardInfo("Rise from the Grave", 36300, Rarity.UNCOMMON, mage.cards.r.RiseFromTheGrave.class)); + cards.add(new SetCardInfo("Rise from the Tides", 62209, Rarity.RARE, mage.cards.r.RiseFromTheTides.class)); + cards.add(new SetCardInfo("Rishadan Port", 55739, Rarity.RARE, mage.cards.r.RishadanPort.class)); + cards.add(new SetCardInfo("River Boa", 36014, Rarity.UNCOMMON, mage.cards.r.RiverBoa.class)); + cards.add(new SetCardInfo("Roar of the Wurm", 32565, Rarity.UNCOMMON, mage.cards.r.RoarOfTheWurm.class)); + cards.add(new SetCardInfo("Roast", 58263, Rarity.UNCOMMON, mage.cards.r.Roast.class)); + cards.add(new SetCardInfo("Rout", 62465, Rarity.RARE, mage.cards.r.Rout.class)); + cards.add(new SetCardInfo("Royal Assassin", 35160, Rarity.RARE, mage.cards.r.RoyalAssassin.class)); + cards.add(new SetCardInfo("Rubblehulk", 47977, Rarity.RARE, mage.cards.r.Rubblehulk.class)); + cards.add(new SetCardInfo("Ruinous Path", 58273, Rarity.RARE, mage.cards.r.RuinousPath.class)); + cards.add(new SetCardInfo("Rukh Egg", 36270, Rarity.RARE, mage.cards.r.RukhEgg.class)); + cards.add(new SetCardInfo("Rupture", 62417, Rarity.RARE, mage.cards.r.Rupture.class)); + cards.add(new SetCardInfo("Ruthless Ripper", 55767, Rarity.UNCOMMON, mage.cards.r.RuthlessRipper.class)); + cards.add(new SetCardInfo("Ryusei, the Falling Star", 32001, Rarity.RARE, mage.cards.r.RyuseiTheFallingStar.class)); + cards.add(new SetCardInfo("Sacred Foundry", 72309, Rarity.RARE, mage.cards.s.SacredFoundry.class)); + cards.add(new SetCardInfo("Sage of the Inward Eye", 54518, Rarity.RARE, mage.cards.s.SageOfTheInwardEye.class)); + cards.add(new SetCardInfo("Sage-Eye Avengers", 55709, Rarity.RARE, mage.cards.s.SageEyeAvengers.class)); + cards.add(new SetCardInfo("Saheeli's Artistry", 62207, Rarity.RARE, mage.cards.s.SaheelisArtistry.class)); + cards.add(new SetCardInfo("Sakura-Tribe Elder", 36200, Rarity.COMMON, mage.cards.s.SakuraTribeElder.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Sakura-Tribe Elder", 36282, Rarity.COMMON, mage.cards.s.SakuraTribeElder.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Sanctifier of Souls", 61543, Rarity.RARE, mage.cards.s.SanctifierOfSouls.class)); + cards.add(new SetCardInfo("Sandsteppe Citadel", 57606, Rarity.RARE, mage.cards.s.SandsteppeCitadel.class)); + cards.add(new SetCardInfo("Sandsteppe Mastodon", 55721, Rarity.RARE, mage.cards.s.SandsteppeMastodon.class)); + cards.add(new SetCardInfo("Savage Lands", 42876, Rarity.UNCOMMON, mage.cards.s.SavageLands.class)); + cards.add(new SetCardInfo("Savannah", 43614, Rarity.RARE, mage.cards.s.Savannah.class)); + cards.add(new SetCardInfo("Scaleguard Sentinels", 55882, Rarity.UNCOMMON, mage.cards.s.ScaleguardSentinels.class)); + cards.add(new SetCardInfo("Scapeshift", 66898, Rarity.MYTHIC, mage.cards.s.Scapeshift.class)); + cards.add(new SetCardInfo("Scavenging Ooze", 62451, Rarity.RARE, mage.cards.s.ScavengingOoze.class)); + cards.add(new SetCardInfo("Scent of Cinder", 36150, Rarity.COMMON, mage.cards.s.ScentOfCinder.class)); + cards.add(new SetCardInfo("Scourge of Fleets", 52324, Rarity.RARE, mage.cards.s.ScourgeOfFleets.class)); + cards.add(new SetCardInfo("Scragnoth", 36054, Rarity.UNCOMMON, mage.cards.s.Scragnoth.class)); + cards.add(new SetCardInfo("Scrap Trawler", 62997, Rarity.RARE, mage.cards.s.ScrapTrawler.class)); + cards.add(new SetCardInfo("Scroll Rack", 47969, Rarity.RARE, mage.cards.s.ScrollRack.class)); + cards.add(new SetCardInfo("Scrubland", 43616, Rarity.RARE, mage.cards.s.Scrubland.class)); + cards.add(new SetCardInfo("Scryb Sprites", 62431, Rarity.COMMON, mage.cards.s.ScrybSprites.class)); + cards.add(new SetCardInfo("Scythe Leopard", 58271, Rarity.UNCOMMON, mage.cards.s.ScytheLeopard.class)); + cards.add(new SetCardInfo("Seal of Cleansing", 35132, Rarity.COMMON, mage.cards.s.SealOfCleansing.class)); + cards.add(new SetCardInfo("Searing Blaze", 39630, Rarity.COMMON, mage.cards.s.SearingBlaze.class, MPR_FULL_ART)); + cards.add(new SetCardInfo("Searing Spear", 48003, Rarity.COMMON, mage.cards.s.SearingSpear.class)); + cards.add(new SetCardInfo("Sedge Troll", 209, Rarity.RARE, mage.cards.s.SedgeTroll.class)); + cards.add(new SetCardInfo("Seeker of the Way", 57576, Rarity.UNCOMMON, mage.cards.s.SeekerOfTheWay.class)); + cards.add(new SetCardInfo("Selesnya Signet", 46926, Rarity.UNCOMMON, mage.cards.s.SelesnyaSignet.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Selesnya Signet", 62437, Rarity.COMMON, mage.cards.s.SelesnyaSignet.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Selkie Hedge-Mage", 32549, Rarity.UNCOMMON, mage.cards.s.SelkieHedgeMage.class)); + cards.add(new SetCardInfo("Serendib Efreet", 217, Rarity.RARE, mage.cards.s.SerendibEfreet.class)); + cards.add(new SetCardInfo("Serra Angel", 35942, Rarity.UNCOMMON, mage.cards.s.SerraAngel.class)); + cards.add(new SetCardInfo("Serra Avatar", 26984, Rarity.RARE, mage.cards.s.SerraAvatar.class)); + cards.add(new SetCardInfo("Serra Avenger", 36314, Rarity.RARE, mage.cards.s.SerraAvenger.class)); + cards.add(new SetCardInfo("Serrated Arrows", 35116, Rarity.UNCOMMON, mage.cards.s.SerratedArrows.class)); + cards.add(new SetCardInfo("Serum Visions", 36280, Rarity.COMMON, mage.cards.s.SerumVisions.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Serum Visions", 57586, Rarity.COMMON, mage.cards.s.SerumVisions.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Servo Exhibition", 64428, Rarity.UNCOMMON, mage.cards.s.ServoExhibition.class)); + // Card not implemented + // cards.add(new SetCardInfo("Sewers of Estark", 35964, Rarity.RARE, mage.cards.s.SewersOfEstark.class)); + cards.add(new SetCardInfo("Shadowmage Infiltrator", 55314, Rarity.RARE, mage.cards.s.ShadowmageInfiltrator.class)); + cards.add(new SetCardInfo("Shamanic Revelation", 55719, Rarity.RARE, mage.cards.s.ShamanicRevelation.class)); + cards.add(new SetCardInfo("Shanna, Sisay's Legacy", 68051, Rarity.UNCOMMON, mage.cards.s.ShannaSisaysLegacy.class)); + cards.add(new SetCardInfo("Shard Phoenix", 36308, Rarity.RARE, mage.cards.s.ShardPhoenix.class)); + cards.add(new SetCardInfo("Shardless Agent", 55697, Rarity.UNCOMMON, mage.cards.s.ShardlessAgent.class)); + cards.add(new SetCardInfo("Sheoldred, Whispering One", 40086, Rarity.MYTHIC, mage.cards.s.SheoldredWhisperingOne.class)); + cards.add(new SetCardInfo("Shepherd of the Lost", 43550, Rarity.UNCOMMON, mage.cards.s.ShepherdOfTheLost.class)); + cards.add(new SetCardInfo("Shield of Kaldra", 31985, Rarity.RARE, mage.cards.s.ShieldOfKaldra.class)); + cards.add(new SetCardInfo("Shipbreaker Kraken", 50106, Rarity.RARE, mage.cards.s.ShipbreakerKraken.class)); + cards.add(new SetCardInfo("Shivan Dragon", 36232, Rarity.RARE, mage.cards.s.ShivanDragon.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Shivan Dragon", 62535, Rarity.RARE, mage.cards.s.ShivanDragon.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Shock", 32531, Rarity.COMMON, mage.cards.s.Shock.class)); + cards.add(new SetCardInfo("Show and Tell", 46930, Rarity.RARE, mage.cards.s.ShowAndTell.class)); + cards.add(new SetCardInfo("Shrapnel Blast", 31443, Rarity.UNCOMMON, mage.cards.s.ShrapnelBlast.class)); + cards.add(new SetCardInfo("Shriekmaw", 32537, Rarity.UNCOMMON, mage.cards.s.Shriekmaw.class)); + cards.add(new SetCardInfo("Shrine of Burning Rage", 40090, Rarity.UNCOMMON, mage.cards.s.ShrineOfBurningRage.class)); + cards.add(new SetCardInfo("Siege Dragon", 53834, Rarity.RARE, mage.cards.s.SiegeDragon.class)); + cards.add(new SetCardInfo("Siege Rhino", 57602, Rarity.RARE, mage.cards.s.SiegeRhino.class)); + cards.add(new SetCardInfo("Sign in Blood", 36226, Rarity.COMMON, mage.cards.s.SignInBlood.class)); + cards.add(new SetCardInfo("Signal Pest", 39648, Rarity.UNCOMMON, mage.cards.s.SignalPest.class)); + cards.add(new SetCardInfo("Silent Sentinel", 51910, Rarity.RARE, mage.cards.s.SilentSentinel.class)); + cards.add(new SetCardInfo("Silent Specter", 36252, Rarity.RARE, mage.cards.s.SilentSpecter.class)); + cards.add(new SetCardInfo("Silkwrap", 62497, Rarity.UNCOMMON, mage.cards.s.Silkwrap.class)); + cards.add(new SetCardInfo("Silver Knight", 31479, Rarity.UNCOMMON, mage.cards.s.SilverKnight.class)); + cards.add(new SetCardInfo("Silverblade Paladin", 44313, Rarity.RARE, mage.cards.s.SilverbladePaladin.class)); + cards.add(new SetCardInfo("Silvergill Adept", 66892, Rarity.UNCOMMON, mage.cards.s.SilvergillAdept.class)); + cards.add(new SetCardInfo("Simic Ascendancy", 71586, Rarity.RARE, mage.cards.s.SimicAscendancy.class)); + cards.add(new SetCardInfo("Simic Signet", 46900, Rarity.UNCOMMON, mage.cards.s.SimicSignet.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Simic Signet", 62391, Rarity.COMMON, mage.cards.s.SimicSignet.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Sin Collector", 50112, Rarity.UNCOMMON, mage.cards.s.SinCollector.class)); + cards.add(new SetCardInfo("Sinkhole", 43566, Rarity.RARE, mage.cards.s.Sinkhole.class)); + cards.add(new SetCardInfo("Skarrg Goliath", 47989, Rarity.RARE, mage.cards.s.SkarrgGoliath.class)); + cards.add(new SetCardInfo("Skirk Marauder", 36260, Rarity.COMMON, mage.cards.s.SkirkMarauder.class)); + cards.add(new SetCardInfo("Skittering Skirge", 36126, Rarity.COMMON, mage.cards.s.SkitteringSkirge.class)); + cards.add(new SetCardInfo("Skyknight Legionnaire", 36296, Rarity.COMMON, mage.cards.s.SkyknightLegionnaire.class)); + cards.add(new SetCardInfo("Skyship Stalker", 62215, Rarity.RARE, mage.cards.s.SkyshipStalker.class)); + cards.add(new SetCardInfo("Skyship Weatherlight", 62381, Rarity.RARE, mage.cards.s.SkyshipWeatherlight.class)); + cards.add(new SetCardInfo("Slave of Bolas", 36180, Rarity.UNCOMMON, mage.cards.s.SlaveOfBolas.class)); + cards.add(new SetCardInfo("Slice and Dice", 32573, Rarity.UNCOMMON, mage.cards.s.SliceAndDice.class)); + cards.add(new SetCardInfo("Slith Firewalker", 35158, Rarity.UNCOMMON, mage.cards.s.SlithFirewalker.class)); + cards.add(new SetCardInfo("Sliver Queen", 26980, Rarity.RARE, mage.cards.s.SliverQueen.class)); + cards.add(new SetCardInfo("Smash to Smithereens", 59675, Rarity.COMMON, mage.cards.s.SmashToSmithereens.class)); + cards.add(new SetCardInfo("Smite the Monstrous", 55769, Rarity.COMMON, mage.cards.s.SmiteTheMonstrous.class)); + cards.add(new SetCardInfo("Smother", 31475, Rarity.UNCOMMON, mage.cards.s.Smother.class)); + cards.add(new SetCardInfo("Snap", 62441, Rarity.COMMON, mage.cards.s.Snap.class)); + cards.add(new SetCardInfo("Snapcaster Mage", 59685, Rarity.MYTHIC, mage.cards.s.SnapcasterMage.class)); + cards.add(new SetCardInfo("Sol Ring", 35944, Rarity.UNCOMMON, mage.cards.s.SolRing.class)); + cards.add(new SetCardInfo("Soltari Priest", 35054, Rarity.UNCOMMON, mage.cards.s.SoltariPriest.class)); + cards.add(new SetCardInfo("Sorrow's Path", 36889, Rarity.RARE, mage.cards.s.SorrowsPath.class)); + cards.add(new SetCardInfo("Soul Collector", 36268, Rarity.RARE, mage.cards.s.SoulCollector.class)); + cards.add(new SetCardInfo("Soul Summons", 55751, Rarity.COMMON, mage.cards.s.SoulSummons.class)); + cards.add(new SetCardInfo("Soul Swallower", 60460, Rarity.RARE, mage.cards.s.SoulSwallower.class)); + cards.add(new SetCardInfo("Soul of Theros", 62471, Rarity.MYTHIC, mage.cards.s.SoulOfTheros.class)); + cards.add(new SetCardInfo("Sparksmith", 32569, Rarity.COMMON, mage.cards.s.Sparksmith.class)); + cards.add(new SetCardInfo("Spatial Contortion", 61555, Rarity.COMMON, mage.cards.s.SpatialContortion.class)); + cards.add(new SetCardInfo("Spawn of Thraxes", 52320, Rarity.RARE, mage.cards.s.SpawnOfThraxes.class)); + cards.add(new SetCardInfo("Spellskite", 62533, Rarity.RARE, mage.cards.s.Spellskite.class)); + cards.add(new SetCardInfo("Spellstutter Sprite", 39622, Rarity.COMMON, mage.cards.s.SpellstutterSprite.class)); + cards.add(new SetCardInfo("Spike Feeder", 36082, Rarity.UNCOMMON, mage.cards.s.SpikeFeeder.class)); + cards.add(new SetCardInfo("Spiritmonger", 35976, Rarity.RARE, mage.cards.s.Spiritmonger.class)); + cards.add(new SetCardInfo("Sprouting Thrinax", 31451, Rarity.UNCOMMON, mage.cards.s.SproutingThrinax.class)); + cards.add(new SetCardInfo("Squadron Hawk", 39675, Rarity.COMMON, mage.cards.s.SquadronHawk.class)); + cards.add(new SetCardInfo("Squelching Leeches", 52330, Rarity.UNCOMMON, mage.cards.s.SquelchingLeeches.class)); + cards.add(new SetCardInfo("Staff of Nin", 45213, Rarity.RARE, mage.cards.s.StaffOfNin.class)); + cards.add(new SetCardInfo("Staggershock", 36851, Rarity.COMMON, mage.cards.s.Staggershock.class)); + // Planechase Plane. Card not implemented. + // cards.add(new SetCardInfo("Stairs to Infinity", 44350, Rarity.RARE, mage.cards.s.StairsToInfinity.class)); + cards.add(new SetCardInfo("Stasis", 65648, Rarity.RARE, mage.cards.s.Stasis.class)); + cards.add(new SetCardInfo("Stasis Snare", 58275, Rarity.UNCOMMON, mage.cards.s.StasisSnare.class)); + cards.add(new SetCardInfo("Staunch Defenders", 36064, Rarity.UNCOMMON, mage.cards.s.StaunchDefenders.class)); + cards.add(new SetCardInfo("Stealer of Secrets", 52310, Rarity.COMMON, mage.cards.s.StealerOfSecrets.class)); + cards.add(new SetCardInfo("Steam Vents", 72307, Rarity.RARE, mage.cards.s.SteamVents.class)); + cards.add(new SetCardInfo("Steel Hellkite", 37859, Rarity.RARE, mage.cards.s.SteelHellkite.class)); + cards.add(new SetCardInfo("Steel Leaf Champion", 68045, Rarity.RARE, mage.cards.s.SteelLeafChampion.class)); + cards.add(new SetCardInfo("Sterling Grove", 62467, Rarity.UNCOMMON, mage.cards.s.SterlingGrove.class)); + cards.add(new SetCardInfo("Stifle", 43540, Rarity.RARE, mage.cards.s.Stifle.class)); + cards.add(new SetCardInfo("Stoke the Flames", 54553, Rarity.RARE, mage.cards.s.StokeTheFlames.class)); + cards.add(new SetCardInfo("Stomping Ground", 72313, Rarity.RARE, mage.cards.s.StompingGround.class)); + cards.add(new SetCardInfo("Stone Haven Outfitter", 62495, Rarity.RARE, mage.cards.s.StoneHavenOutfitter.class)); + cards.add(new SetCardInfo("Stone Rain", 35946, Rarity.COMMON, mage.cards.s.StoneRain.class)); + cards.add(new SetCardInfo("Stone-Tongue Basilisk", 36238, Rarity.RARE, mage.cards.s.StoneTongueBasilisk.class)); + cards.add(new SetCardInfo("Stoneforge Mystic", 62499, Rarity.RARE, mage.cards.s.StoneforgeMystic.class)); + cards.add(new SetCardInfo("Storm Entity", 36020, Rarity.UNCOMMON, mage.cards.s.StormEntity.class)); + cards.add(new SetCardInfo("Strangleroot Geist", 43513, Rarity.UNCOMMON, mage.cards.s.StranglerootGeist.class)); + cards.add(new SetCardInfo("Stroke of Genius", 36114, Rarity.RARE, mage.cards.s.StrokeOfGenius.class)); + cards.add(new SetCardInfo("Stunted Growth", 43642, Rarity.RARE, mage.cards.s.StuntedGrowth.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Stunted Growth", 62425, Rarity.RARE, mage.cards.s.StuntedGrowth.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Stupor", 36002, Rarity.UNCOMMON, mage.cards.s.Stupor.class)); + cards.add(new SetCardInfo("Sudden Shock", 36316, Rarity.UNCOMMON, mage.cards.s.SuddenShock.class)); + cards.add(new SetCardInfo("Sultai Ascendancy", 55701, Rarity.RARE, mage.cards.s.SultaiAscendancy.class)); + cards.add(new SetCardInfo("Sultai Charm", 54561, Rarity.UNCOMMON, mage.cards.s.SultaiCharm.class)); + cards.add(new SetCardInfo("Sultai Emissary", 55753, Rarity.COMMON, mage.cards.s.SultaiEmissary.class)); + cards.add(new SetCardInfo("Sun Titan", 37596, Rarity.MYTHIC, mage.cards.s.SunTitan.class)); + cards.add(new SetCardInfo("Sunscorch Regent", 55896, Rarity.RARE, mage.cards.s.SunscorchRegent.class)); + cards.add(new SetCardInfo("Supplant Form", 55723, Rarity.RARE, mage.cards.s.SupplantForm.class)); + cards.add(new SetCardInfo("Supreme Verdict", 46879, Rarity.RARE, mage.cards.s.SupremeVerdict.class)); + cards.add(new SetCardInfo("Surgical Extraction", 40072, Rarity.RARE, mage.cards.s.SurgicalExtraction.class)); + cards.add(new SetCardInfo("Surging Flame", 35178, Rarity.COMMON, mage.cards.s.SurgingFlame.class)); + cards.add(new SetCardInfo("Survival of the Fittest", 43544, Rarity.RARE, mage.cards.s.SurvivalOfTheFittest.class)); + cards.add(new SetCardInfo("Suspension Field", 55876, Rarity.UNCOMMON, mage.cards.s.SuspensionField.class)); + cards.add(new SetCardInfo("Suture Priest", 40070, Rarity.COMMON, mage.cards.s.SuturePriest.class)); + cards.add(new SetCardInfo("Swamp", 235, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", 253, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", 257, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", 265, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", 275, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", 287, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", 299, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", 31977, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", 31999, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", 32007, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", 32021, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", 40048, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", 40058, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", 40068, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", 40092, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", 53883, Rarity.LAND, mage.cards.basiclands.Swamp.class, FULL_ART_ZEN_VARIOUS)); + cards.add(new SetCardInfo("Swamp", 58257, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Sword of Feast and Famine", 52304, Rarity.MYTHIC, mage.cards.s.SwordOfFeastAndFamine.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Sword of Feast and Famine", 59683, Rarity.MYTHIC, mage.cards.s.SwordOfFeastAndFamine.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Sword of Fire and Ice", 39650, Rarity.RARE, mage.cards.s.SwordOfFireAndIce.class)); + cards.add(new SetCardInfo("Sword of Kaldra", 31987, Rarity.RARE, mage.cards.s.SwordOfKaldra.class)); + cards.add(new SetCardInfo("Swords to Plowshares", 31381, Rarity.UNCOMMON, mage.cards.s.SwordsToPlowshares.class)); + cards.add(new SetCardInfo("Sylvan Caryatid", 50120, Rarity.RARE, mage.cards.s.SylvanCaryatid.class)); + cards.add(new SetCardInfo("Sylvan Library", 23948, Rarity.UNCOMMON, mage.cards.s.SylvanLibrary.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Sylvan Library", 43636, Rarity.RARE, mage.cards.s.SylvanLibrary.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Sylvan Ranger", 37592, Rarity.COMMON, mage.cards.s.SylvanRanger.class)); + cards.add(new SetCardInfo("Sylvan Scrying", 60476, Rarity.RARE, mage.cards.s.SylvanScrying.class)); + cards.add(new SetCardInfo("Taiga", 43618, Rarity.RARE, mage.cards.t.Taiga.class)); + cards.add(new SetCardInfo("Tawnos's Coffin", 23946, Rarity.RARE, mage.cards.t.TawnossCoffin.class)); + // Planechase Plane. Card not implemented. + // cards.add(new SetCardInfo("Tazeem", 44340, Rarity.RARE, mage.cards.t.Tazeem.class)); + cards.add(new SetCardInfo("Tectonic Edge", 43069, Rarity.UNCOMMON, mage.cards.t.TectonicEdge.class)); + cards.add(new SetCardInfo("Teetering Peaks", 41654, Rarity.COMMON, mage.cards.t.TeeteringPeaks.class)); + // Planechase Plane. Card not implemented. + // cards.add(new SetCardInfo("Tember City", 44342, Rarity.RARE, mage.cards.t.TemberCity.class)); + cards.add(new SetCardInfo("Tempered Steel", 37865, Rarity.RARE, mage.cards.t.TemperedSteel.class)); + cards.add(new SetCardInfo("Temple Garden", 72303, Rarity.RARE, mage.cards.t.TempleGarden.class)); + cards.add(new SetCardInfo("Temple of Mystery", 53846, Rarity.RARE, mage.cards.t.TempleOfMystery.class)); + cards.add(new SetCardInfo("Temple of the False God", 59653, Rarity.UNCOMMON, mage.cards.t.TempleOfTheFalseGod.class)); + cards.add(new SetCardInfo("Temporal Manipulation", 55725, Rarity.RARE, mage.cards.t.TemporalManipulation.class)); + cards.add(new SetCardInfo("Temur War Shaman", 55715, Rarity.RARE, mage.cards.t.TemurWarShaman.class)); + cards.add(new SetCardInfo("Tendrils of Agony", 31433, Rarity.UNCOMMON, mage.cards.t.TendrilsOfAgony.class)); + cards.add(new SetCardInfo("Terminate", 35136, Rarity.COMMON, mage.cards.t.Terminate.class, MPR_FULL_ART)); + cards.add(new SetCardInfo("Terminate", 36230, Rarity.COMMON, mage.cards.t.Terminate.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Terra Stomper", 36849, Rarity.RARE, mage.cards.t.TerraStomper.class)); + cards.add(new SetCardInfo("Terror", 31483, Rarity.COMMON, mage.cards.t.Terror.class, MPR_FULL_ART)); + cards.add(new SetCardInfo("Terror", 35948, Rarity.COMMON, mage.cards.t.Terror.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Thalia, Guardian of Thraben", 55699, Rarity.RARE, mage.cards.t.ThaliaGuardianOfThraben.class)); + cards.add(new SetCardInfo("Thalia, Heretic Cathar", 61545, Rarity.RARE, mage.cards.t.ThaliaHereticCathar.class)); + cards.add(new SetCardInfo("Thawing Glaciers", 43564, Rarity.RARE, mage.cards.t.ThawingGlaciers.class)); + cards.add(new SetCardInfo("The Abyss", 46938, Rarity.RARE, mage.cards.t.TheAbyss.class)); + cards.add(new SetCardInfo("The Rack", 62385, Rarity.UNCOMMON, mage.cards.t.TheRack.class)); + cards.add(new SetCardInfo("The Tabernacle at Pendrell Vale", 60450, Rarity.RARE, mage.cards.t.TheTabernacleAtPendrellVale.class)); + cards.add(new SetCardInfo("Thirst for Knowledge", 31445, Rarity.UNCOMMON, mage.cards.t.ThirstForKnowledge.class)); + cards.add(new SetCardInfo("Thopter Assembly", 39638, Rarity.RARE, mage.cards.t.ThopterAssembly.class)); + cards.add(new SetCardInfo("Thran Golem", 62433, Rarity.UNCOMMON, mage.cards.t.ThranGolem.class)); + cards.add(new SetCardInfo("Thran Quarry", 36128, Rarity.RARE, mage.cards.t.ThranQuarry.class)); + cards.add(new SetCardInfo("Threads of Disloyalty", 70928, Rarity.MYTHIC, mage.cards.t.ThreadsOfDisloyalty.class)); + cards.add(new SetCardInfo("Thunder Spirit", 229, Rarity.RARE, mage.cards.t.ThunderSpirit.class)); + cards.add(new SetCardInfo("Thunderbreak Regent", 55892, Rarity.RARE, mage.cards.t.ThunderbreakRegent.class)); + cards.add(new SetCardInfo("Tidehollow Sculler", 43560, Rarity.UNCOMMON, mage.cards.t.TidehollowSculler.class)); + cards.add(new SetCardInfo("Tidings", 35076, Rarity.UNCOMMON, mage.cards.t.Tidings.class, MPR_FULL_ART)); + cards.add(new SetCardInfo("Time Spiral", 62221, Rarity.RARE, mage.cards.t.TimeSpiral.class)); + cards.add(new SetCardInfo("Time Walk", 46912, Rarity.RARE, mage.cards.t.TimeWalk.class)); + cards.add(new SetCardInfo("Time Warp", 36044, Rarity.RARE, mage.cards.t.TimeWarp.class)); + cards.add(new SetCardInfo("Timetwister", 46918, Rarity.RARE, mage.cards.t.Timetwister.class)); + cards.add(new SetCardInfo("Tinder Wall", 62483, Rarity.COMMON, mage.cards.t.TinderWall.class)); + cards.add(new SetCardInfo("Tormented Hero", 51934, Rarity.UNCOMMON, mage.cards.t.TormentedHero.class)); + cards.add(new SetCardInfo("Tormented Soul", 41652, Rarity.COMMON, mage.cards.t.TormentedSoul.class)); + cards.add(new SetCardInfo("Tormod's Crypt", 31427, Rarity.UNCOMMON, mage.cards.t.TormodsCrypt.class)); + cards.add(new SetCardInfo("Tovolar's Magehunter", 43507, Rarity.RARE, mage.cards.t.TovolarsMagehunter.class)); + cards.add(new SetCardInfo("Tradewind Rider", 36048, Rarity.RARE, mage.cards.t.TradewindRider.class)); + cards.add(new SetCardInfo("Transmute Artifact", 65644, Rarity.RARE, mage.cards.t.TransmuteArtifact.class)); + cards.add(new SetCardInfo("Traxos, Scourge of Kroog", 69242, Rarity.RARE, mage.cards.t.TraxosScourgeOfKroog.class)); + cards.add(new SetCardInfo("Treasure Hunt", 39632, Rarity.COMMON, mage.cards.t.TreasureHunt.class, MPR_FULL_ART)); + cards.add(new SetCardInfo("Treasure Mage", 39642, Rarity.UNCOMMON, mage.cards.t.TreasureMage.class)); + cards.add(new SetCardInfo("Treasury Thrull", 47999, Rarity.RARE, mage.cards.t.TreasuryThrull.class)); + cards.add(new SetCardInfo("Treetop Village", 31403, Rarity.UNCOMMON, mage.cards.t.TreetopVillage.class)); + cards.add(new SetCardInfo("Treva, the Renewer", 36158, Rarity.RARE, mage.cards.t.TrevaTheRenewer.class)); + cards.add(new SetCardInfo("Triumph of Ferocity", 62475, Rarity.UNCOMMON, mage.cards.t.TriumphOfFerocity.class)); + cards.add(new SetCardInfo("Tromokratis", 51914, Rarity.RARE, mage.cards.t.Tromokratis.class)); + cards.add(new SetCardInfo("Trophy Mage", 63003, Rarity.UNCOMMON, mage.cards.t.TrophyMage.class)); + cards.add(new SetCardInfo("Tropical Island", 43620, Rarity.RARE, mage.cards.t.TropicalIsland.class)); + cards.add(new SetCardInfo("Trostani's Summoner", 48574, Rarity.UNCOMMON, mage.cards.t.TrostanisSummoner.class)); + cards.add(new SetCardInfo("True-Name Nemesis", 69268, Rarity.RARE, mage.cards.t.TrueNameNemesis.class)); + cards.add(new SetCardInfo("Trueheart Duelist", 64424, Rarity.UNCOMMON, mage.cards.t.TrueheartDuelist.class)); + cards.add(new SetCardInfo("Tundra", 43622, Rarity.RARE, mage.cards.t.Tundra.class)); + cards.add(new SetCardInfo("Twilight Mire", 62455, Rarity.RARE, mage.cards.t.TwilightMire.class)); + cards.add(new SetCardInfo("Two-Headed Dragon", 36156, Rarity.RARE, mage.cards.t.TwoHeadedDragon.class)); + cards.add(new SetCardInfo("Two-Headed Giant of Foriys", 211, Rarity.RARE, mage.cards.t.TwoHeadedGiantOfForiys.class)); + cards.add(new SetCardInfo("Tyrant of Valakut", 59657, Rarity.RARE, mage.cards.t.TyrantOfValakut.class)); + cards.add(new SetCardInfo("Ugin's Construct", 55761, Rarity.UNCOMMON, mage.cards.u.UginsConstruct.class)); + cards.add(new SetCardInfo("Ugin, the Spirit Dragon", 55763, Rarity.MYTHIC, mage.cards.u.UginTheSpiritDragon.class)); + cards.add(new SetCardInfo("Uktabi Orangutan", 36016, Rarity.UNCOMMON, mage.cards.u.UktabiOrangutan.class)); + cards.add(new SetCardInfo("Ultimate Price", 58269, Rarity.UNCOMMON, mage.cards.u.UltimatePrice.class)); + cards.add(new SetCardInfo("Ulvenwald Observer", 61553, Rarity.RARE, mage.cards.u.UlvenwaldObserver.class)); + cards.add(new SetCardInfo("Umezawa's Jitte", 36210, Rarity.RARE, mage.cards.u.UmezawasJitte.class)); + cards.add(new SetCardInfo("Underground Sea", 43624, Rarity.RARE, mage.cards.u.UndergroundSea.class)); + cards.add(new SetCardInfo("Underworld Dreams", 35970, Rarity.RARE, mage.cards.u.UnderworldDreams.class)); + cards.add(new SetCardInfo("Undiscovered Paradise", 61062, Rarity.RARE, mage.cards.u.UndiscoveredParadise.class)); + cards.add(new SetCardInfo("Unlicensed Disintegration", 64430, Rarity.UNCOMMON, mage.cards.u.UnlicensedDisintegration.class)); + cards.add(new SetCardInfo("Unmake", 32551, Rarity.COMMON, mage.cards.u.Unmake.class, MPR_FULL_ART)); + cards.add(new SetCardInfo("Unsubstantiate", 61557, Rarity.RARE, mage.cards.u.Unsubstantiate.class)); + cards.add(new SetCardInfo("Urza's Factory", 31493, Rarity.UNCOMMON, mage.cards.u.UrzasFactory.class)); + cards.add(new SetCardInfo("Urza's Mine", 69262, Rarity.COMMON, mage.cards.u.UrzasMine.class)); + cards.add(new SetCardInfo("Urza's Power Plant", 69264, Rarity.COMMON, mage.cards.u.UrzasPowerPlant.class)); + cards.add(new SetCardInfo("Urza's Tower", 69266, Rarity.COMMON, mage.cards.u.UrzasTower.class)); + cards.add(new SetCardInfo("Utter End", 54563, Rarity.RARE, mage.cards.u.UtterEnd.class)); + cards.add(new SetCardInfo("Valakut, the Molten Pinnacle", 35142, Rarity.RARE, mage.cards.v.ValakutTheMoltenPinnacle.class)); + cards.add(new SetCardInfo("Valorous Stance", 57582, Rarity.UNCOMMON, mage.cards.v.ValorousStance.class)); + cards.add(new SetCardInfo("Vampire Nighthawk", 36214, Rarity.UNCOMMON, mage.cards.v.VampireNighthawk.class)); + cards.add(new SetCardInfo("Vampire Nocturnus", 33105, Rarity.MYTHIC, mage.cards.v.VampireNocturnus.class)); + cards.add(new SetCardInfo("Vampiric Tutor", 36018, Rarity.RARE, mage.cards.v.VampiricTutor.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Vampiric Tutor", 68053, Rarity.RARE, mage.cards.v.VampiricTutor.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Vault Skirge", 40076, Rarity.COMMON, mage.cards.v.VaultSkirge.class)); + cards.add(new SetCardInfo("Vendilion Clique", 39628, Rarity.RARE, mage.cards.v.VendilionClique.class)); + cards.add(new SetCardInfo("Vengevine", 49844, Rarity.MYTHIC, mage.cards.v.Vengevine.class)); + cards.add(new SetCardInfo("Vexing Shusher", 32533, Rarity.RARE, mage.cards.v.VexingShusher.class)); + cards.add(new SetCardInfo("Vindicate", 31391, Rarity.RARE, mage.cards.v.Vindicate.class)); + cards.add(new SetCardInfo("Voidmage Prodigy", 43646, Rarity.RARE, mage.cards.v.VoidmageProdigy.class)); + cards.add(new SetCardInfo("Voidslime", 36310, Rarity.RARE, mage.cards.v.Voidslime.class)); + cards.add(new SetCardInfo("Volcanic Fallout", 43570, Rarity.UNCOMMON, mage.cards.v.VolcanicFallout.class, MPR_FULL_ART)); + cards.add(new SetCardInfo("Volcanic Geyser", 36004, Rarity.UNCOMMON, mage.cards.v.VolcanicGeyser.class)); + cards.add(new SetCardInfo("Volcanic Hammer", 36102, Rarity.COMMON, mage.cards.v.VolcanicHammer.class)); + cards.add(new SetCardInfo("Volcanic Island", 43626, Rarity.RARE, mage.cards.v.VolcanicIsland.class)); + cards.add(new SetCardInfo("Walk the Plank", 65666, Rarity.UNCOMMON, mage.cards.w.WalkThePlank.class)); + cards.add(new SetCardInfo("Walking Ballista", 69991, Rarity.RARE, mage.cards.w.WalkingBallista.class)); + cards.add(new SetCardInfo("Wall of Blossoms", 36084, Rarity.UNCOMMON, mage.cards.w.WallOfBlossoms.class)); + cards.add(new SetCardInfo("Wall of Omens", 39624, Rarity.UNCOMMON, mage.cards.w.WallOfOmens.class)); + cards.add(new SetCardInfo("Wall of Roots", 35114, Rarity.COMMON, mage.cards.w.WallOfRoots.class)); + cards.add(new SetCardInfo("Warleader's Helix", 51540, Rarity.UNCOMMON, mage.cards.w.WarleadersHelix.class)); + cards.add(new SetCardInfo("Warmonger", 36152, Rarity.UNCOMMON, mage.cards.w.Warmonger.class)); + cards.add(new SetCardInfo("Wasteland", 36877, Rarity.UNCOMMON, mage.cards.w.Wasteland.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Wasteland", 55874, Rarity.UNCOMMON, mage.cards.w.Wasteland.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Watcher of the Roost", 55773, Rarity.UNCOMMON, mage.cards.w.WatcherOfTheRoost.class)); + cards.add(new SetCardInfo("Watchwolf", 36196, Rarity.UNCOMMON, mage.cards.w.Watchwolf.class)); + cards.add(new SetCardInfo("Watery Grave", 72299, Rarity.RARE, mage.cards.w.WateryGrave.class)); + cards.add(new SetCardInfo("Wave of Reckoning", 62515, Rarity.RARE, mage.cards.w.WaveOfReckoning.class)); + cards.add(new SetCardInfo("Wee Dragonauts", 35174, Rarity.COMMON, mage.cards.w.WeeDragonauts.class)); + cards.add(new SetCardInfo("Wheel and Deal", 62411, Rarity.RARE, mage.cards.w.WheelAndDeal.class)); + cards.add(new SetCardInfo("Wheel of Fortune", 36879, Rarity.RARE, mage.cards.w.WheelOfFortune.class)); + cards.add(new SetCardInfo("Whip of Erebos", 55733, Rarity.RARE, mage.cards.w.WhipOfErebos.class)); + cards.add(new SetCardInfo("Whipcorder", 36250, Rarity.UNCOMMON, mage.cards.w.Whipcorder.class)); + cards.add(new SetCardInfo("Whirling Dervish", 35056, Rarity.UNCOMMON, mage.cards.w.WhirlingDervish.class)); + cards.add(new SetCardInfo("White Knight", 35950, Rarity.UNCOMMON, mage.cards.w.WhiteKnight.class)); + cards.add(new SetCardInfo("Wild Mongrel", 36240, Rarity.COMMON, mage.cards.w.WildMongrel.class)); + cards.add(new SetCardInfo("Wild Nacatl", 37851, Rarity.COMMON, mage.cards.w.WildNacatl.class)); + cards.add(new SetCardInfo("Wild Pair", 62419, Rarity.RARE, mage.cards.w.WildPair.class)); + cards.add(new SetCardInfo("Wildcall", 55749, Rarity.RARE, mage.cards.w.Wildcall.class)); + cards.add(new SetCardInfo("Wildfire Eternal", 64989, Rarity.RARE, mage.cards.w.WildfireEternal.class)); + cards.add(new SetCardInfo("Willbender", 36258, Rarity.UNCOMMON, mage.cards.w.Willbender.class)); + cards.add(new SetCardInfo("Wilt-Leaf Cavaliers", 31441, Rarity.UNCOMMON, mage.cards.w.WiltLeafCavaliers.class)); + cards.add(new SetCardInfo("Windfall", 62529, Rarity.UNCOMMON, mage.cards.w.Windfall.class)); + cards.add(new SetCardInfo("Windseeker Centaur", 35966, Rarity.RARE, mage.cards.w.WindseekerCentaur.class)); + cards.add(new SetCardInfo("Windswept Heath", 43586, Rarity.RARE, mage.cards.w.WindsweptHeath.class)); + cards.add(new SetCardInfo("Wing Shards", 35156, Rarity.UNCOMMON, mage.cards.w.WingShards.class)); + cards.add(new SetCardInfo("Winter Orb", 46922, Rarity.RARE, mage.cards.w.WinterOrb.class)); + cards.add(new SetCardInfo("Withered Wretch", 36262, Rarity.UNCOMMON, mage.cards.w.WitheredWretch.class)); + cards.add(new SetCardInfo("Wonder", 35154, Rarity.UNCOMMON, mage.cards.w.Wonder.class)); + cards.add(new SetCardInfo("Wood Elves", 36094, Rarity.COMMON, mage.cards.w.WoodElves.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Wood Elves", 62527, Rarity.COMMON, mage.cards.w.WoodElves.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Wooded Foothills", 43584, Rarity.RARE, mage.cards.w.WoodedFoothills.class)); + cards.add(new SetCardInfo("Woolly Thoctar", 31449, Rarity.UNCOMMON, mage.cards.w.WoollyThoctar.class)); + cards.add(new SetCardInfo("Wrath of God", 35048, Rarity.RARE, mage.cards.w.WrathOfGod.class, MPR_FULL_ART)); + cards.add(new SetCardInfo("Wren's Run Packmaster", 31965, Rarity.RARE, mage.cards.w.WrensRunPackmaster.class)); + cards.add(new SetCardInfo("Wren's Run Vanquisher", 36138, Rarity.UNCOMMON, mage.cards.w.WrensRunVanquisher.class)); + cards.add(new SetCardInfo("Write into Being", 55755, Rarity.COMMON, mage.cards.w.WriteIntoBeing.class)); + cards.add(new SetCardInfo("Wurmcoil Engine", 37861, Rarity.MYTHIC, mage.cards.w.WurmcoilEngine.class)); + cards.add(new SetCardInfo("Xathrid Gorgon", 45205, Rarity.RARE, mage.cards.x.XathridGorgon.class)); + cards.add(new SetCardInfo("Xathrid Necromancer", 52312, Rarity.RARE, mage.cards.x.XathridNecromancer.class)); + cards.add(new SetCardInfo("Yahenni's Expertise", 62989, Rarity.RARE, mage.cards.y.YahennisExpertise.class)); + cards.add(new SetCardInfo("Yawgmoth's Will", 35080, Rarity.RARE, mage.cards.y.YawgmothsWill.class)); + cards.add(new SetCardInfo("Yixlid Jailer", 36068, Rarity.UNCOMMON, mage.cards.y.YixlidJailer.class)); + cards.add(new SetCardInfo("Zahid, Djinn of the Lamp", 68041, Rarity.RARE, mage.cards.z.ZahidDjinnOfTheLamp.class)); + cards.add(new SetCardInfo("Zameck Guildmage", 47987, Rarity.UNCOMMON, mage.cards.z.ZameckGuildmage.class)); + cards.add(new SetCardInfo("Zhalfirin Void", 68043, Rarity.UNCOMMON, mage.cards.z.ZhalfirinVoid.class)); + cards.add(new SetCardInfo("Zodiac Dog", 35102, Rarity.COMMON, mage.cards.z.ZodiacDog.class)); + cards.add(new SetCardInfo("Zodiac Goat", 35098, Rarity.COMMON, mage.cards.z.ZodiacGoat.class)); + cards.add(new SetCardInfo("Zodiac Horse", 35090, Rarity.UNCOMMON, mage.cards.z.ZodiacHorse.class)); + cards.add(new SetCardInfo("Zodiac Monkey", 35084, Rarity.COMMON, mage.cards.z.ZodiacMonkey.class)); + cards.add(new SetCardInfo("Zodiac Ox", 35092, Rarity.UNCOMMON, mage.cards.z.ZodiacOx.class)); + cards.add(new SetCardInfo("Zodiac Pig", 35100, Rarity.UNCOMMON, mage.cards.z.ZodiacPig.class)); + cards.add(new SetCardInfo("Zodiac Rabbit", 35086, Rarity.COMMON, mage.cards.z.ZodiacRabbit.class)); + cards.add(new SetCardInfo("Zodiac Rat", 35094, Rarity.COMMON, mage.cards.z.ZodiacRat.class)); + cards.add(new SetCardInfo("Zodiac Rooster", 35082, Rarity.COMMON, mage.cards.z.ZodiacRooster.class)); + cards.add(new SetCardInfo("Zodiac Snake", 35096, Rarity.COMMON, mage.cards.z.ZodiacSnake.class)); + cards.add(new SetCardInfo("Zodiac Tiger", 35088, Rarity.UNCOMMON, mage.cards.z.ZodiacTiger.class)); + cards.add(new SetCardInfo("Zoetic Cavern", 36066, Rarity.UNCOMMON, mage.cards.z.ZoeticCavern.class)); + cards.add(new SetCardInfo("Zombie Apocalypse", 43515, Rarity.RARE, mage.cards.z.ZombieApocalypse.class)); + cards.add(new SetCardInfo("Zombify", 35170, Rarity.UNCOMMON, mage.cards.z.Zombify.class, MPR_FULL_ART)); + cards.add(new SetCardInfo("Zuran Orb", 225, Rarity.UNCOMMON, mage.cards.z.ZuranOrb.class)); + cards.add(new SetCardInfo("Zurgo Helmsmasher", 54549, Rarity.MYTHIC, mage.cards.z.ZurgoHelmsmasher.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/MagicOnlineThemeDecks.java b/Mage.Sets/src/mage/sets/MagicOnlineThemeDecks.java new file mode 100644 index 00000000000..00c4c49229e --- /dev/null +++ b/Mage.Sets/src/mage/sets/MagicOnlineThemeDecks.java @@ -0,0 +1,222 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/td0 + */ +public class MagicOnlineThemeDecks extends ExpansionSet { + + private static final MagicOnlineThemeDecks instance = new MagicOnlineThemeDecks(); + + public static MagicOnlineThemeDecks getInstance() { + return instance; + } + + private MagicOnlineThemeDecks() { + super("Magic Online Theme Decks", "TD0", ExpansionSet.buildDate(2010, 11, 8), SetType.MAGIC_ONLINE); + this.hasBoosters = false; + this.hasBasicLands = true; + + cards.add(new SetCardInfo("Abyssal Gatekeeper", "A34", Rarity.COMMON, mage.cards.a.AbyssalGatekeeper.class)); + cards.add(new SetCardInfo("Aether Vial", "B27", Rarity.UNCOMMON, mage.cards.a.AetherVial.class)); + cards.add(new SetCardInfo("All Hallow's Eve", "A35", Rarity.RARE, mage.cards.a.AllHallowsEve.class)); + cards.add(new SetCardInfo("Anarchist", "A52", Rarity.COMMON, mage.cards.a.Anarchist.class)); + cards.add(new SetCardInfo("Ancient Grudge", "A53", Rarity.COMMON, mage.cards.a.AncientGrudge.class)); + cards.add(new SetCardInfo("Anger", "A54", Rarity.UNCOMMON, mage.cards.a.Anger.class)); + cards.add(new SetCardInfo("Animate Dead", "A36", Rarity.UNCOMMON, mage.cards.a.AnimateDead.class)); + cards.add(new SetCardInfo("Armadillo Cloak", "A94", Rarity.UNCOMMON, mage.cards.a.ArmadilloCloak.class)); + cards.add(new SetCardInfo("Ashes to Ashes", "A37", Rarity.UNCOMMON, mage.cards.a.AshesToAshes.class)); + cards.add(new SetCardInfo("Aura of Silence", "B1", Rarity.UNCOMMON, mage.cards.a.AuraOfSilence.class)); + cards.add(new SetCardInfo("Auramancer", "A1", Rarity.COMMON, mage.cards.a.Auramancer.class)); + cards.add(new SetCardInfo("Avatar of Woe", "A38", Rarity.RARE, mage.cards.a.AvatarOfWoe.class)); + cards.add(new SetCardInfo("Azorius Chancery", "A121", Rarity.UNCOMMON, mage.cards.a.AzoriusChancery.class)); + cards.add(new SetCardInfo("Azorius Guildmage", "A95", Rarity.UNCOMMON, mage.cards.a.AzoriusGuildmage.class)); + cards.add(new SetCardInfo("Azorius Signet", "A111", Rarity.COMMON, mage.cards.a.AzoriusSignet.class)); + cards.add(new SetCardInfo("Bant Panorama", "A122", Rarity.COMMON, mage.cards.b.BantPanorama.class)); + cards.add(new SetCardInfo("Barren Moor", "A123", Rarity.COMMON, mage.cards.b.BarrenMoor.class)); + cards.add(new SetCardInfo("Benevolent Bodyguard", "B2", Rarity.COMMON, mage.cards.b.BenevolentBodyguard.class)); + cards.add(new SetCardInfo("Bonesplitter", "B28", Rarity.COMMON, mage.cards.b.Bonesplitter.class)); + cards.add(new SetCardInfo("Borderland Ranger", "A62", Rarity.COMMON, mage.cards.b.BorderlandRanger.class)); + cards.add(new SetCardInfo("Brawn", "A63", Rarity.UNCOMMON, mage.cards.b.Brawn.class)); + cards.add(new SetCardInfo("Buried Alive", "A39", Rarity.UNCOMMON, mage.cards.b.BuriedAlive.class)); + cards.add(new SetCardInfo("Capsize", "A18", Rarity.COMMON, mage.cards.c.Capsize.class)); + cards.add(new SetCardInfo("Carrion Feeder", "A40", Rarity.COMMON, mage.cards.c.CarrionFeeder.class)); + cards.add(new SetCardInfo("Cauldron Dance", "A96", Rarity.UNCOMMON, mage.cards.c.CauldronDance.class)); + cards.add(new SetCardInfo("Chain Lightning", "A55", Rarity.COMMON, mage.cards.c.ChainLightning.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Chain Lightning", "B14", Rarity.COMMON, mage.cards.c.ChainLightning.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Chartooth Cougar", "A56", Rarity.COMMON, mage.cards.c.ChartoothCougar.class)); + cards.add(new SetCardInfo("Civic Wayfinder", "A64", Rarity.COMMON, mage.cards.c.CivicWayfinder.class)); + cards.add(new SetCardInfo("Coastal Tower", "A124", Rarity.UNCOMMON, mage.cards.c.CoastalTower.class)); + cards.add(new SetCardInfo("Coiling Oracle", "A97", Rarity.UNCOMMON, mage.cards.c.CoilingOracle.class)); + cards.add(new SetCardInfo("Compulsive Research", "A19", Rarity.COMMON, mage.cards.c.CompulsiveResearch.class)); + cards.add(new SetCardInfo("Concordant Crossroads", "A65", Rarity.UNCOMMON, mage.cards.c.ConcordantCrossroads.class)); + cards.add(new SetCardInfo("Condemn", "A2", Rarity.UNCOMMON, mage.cards.c.Condemn.class)); + cards.add(new SetCardInfo("Confiscate", "A20", Rarity.UNCOMMON, mage.cards.c.Confiscate.class)); + cards.add(new SetCardInfo("Constant Mists", "A66", Rarity.UNCOMMON, mage.cards.c.ConstantMists.class)); + cards.add(new SetCardInfo("Copy Enchantment", "A21", Rarity.RARE, mage.cards.c.CopyEnchantment.class)); + cards.add(new SetCardInfo("Court Hussar", "A22", Rarity.UNCOMMON, mage.cards.c.CourtHussar.class)); + cards.add(new SetCardInfo("Darigaaz's Caldera", "A125", Rarity.UNCOMMON, mage.cards.d.DarigaazsCaldera.class)); + cards.add(new SetCardInfo("Decree of Justice", "A3", Rarity.RARE, mage.cards.d.DecreeOfJustice.class)); + cards.add(new SetCardInfo("Dismantling Blow", "A4", Rarity.COMMON, mage.cards.d.DismantlingBlow.class)); + cards.add(new SetCardInfo("Dread Return", "A41", Rarity.UNCOMMON, mage.cards.d.DreadReturn.class)); + cards.add(new SetCardInfo("Edge of Autumn", "A67", Rarity.COMMON, mage.cards.e.EdgeOfAutumn.class)); + cards.add(new SetCardInfo("Elfhame Palace", "A126", Rarity.UNCOMMON, mage.cards.e.ElfhamePalace.class)); + cards.add(new SetCardInfo("Elven Cache", "A68", Rarity.COMMON, mage.cards.e.ElvenCache.class)); + cards.add(new SetCardInfo("Elvish Visionary", "A69", Rarity.COMMON, mage.cards.e.ElvishVisionary.class)); + cards.add(new SetCardInfo("Empyrial Armor", "A5", Rarity.UNCOMMON, mage.cards.e.EmpyrialArmor.class)); + cards.add(new SetCardInfo("Enlightened Tutor", "A6", Rarity.RARE, mage.cards.e.EnlightenedTutor.class)); + cards.add(new SetCardInfo("Eternal Witness", "A70", Rarity.UNCOMMON, mage.cards.e.EternalWitness.class)); + cards.add(new SetCardInfo("Ethersworn Canonist", "B3", Rarity.RARE, mage.cards.e.EtherswornCanonist.class)); + cards.add(new SetCardInfo("Explosive Vegetation", "A71", Rarity.UNCOMMON, mage.cards.e.ExplosiveVegetation.class)); + cards.add(new SetCardInfo("Fact or Fiction", "A23", Rarity.UNCOMMON, mage.cards.f.FactOrFiction.class)); + cards.add(new SetCardInfo("Faith's Fetters", "A7", Rarity.UNCOMMON, mage.cards.f.FaithsFetters.class)); + cards.add(new SetCardInfo("Fertile Ground", "A72", Rarity.COMMON, mage.cards.f.FertileGround.class)); + cards.add(new SetCardInfo("Fireblast", "B15", Rarity.COMMON, mage.cards.f.Fireblast.class)); + cards.add(new SetCardInfo("Fires of Yavimaya", "A98", Rarity.UNCOMMON, mage.cards.f.FiresOfYavimaya.class)); + cards.add(new SetCardInfo("Flagstones of Trokair", "B31", Rarity.RARE, mage.cards.f.FlagstonesOfTrokair.class)); + cards.add(new SetCardInfo("Flames of the Blood Hand", "B16", Rarity.UNCOMMON, mage.cards.f.FlamesOfTheBloodHand.class)); + cards.add(new SetCardInfo("Flametongue Kavu", "A57", Rarity.UNCOMMON, mage.cards.f.FlametongueKavu.class)); + cards.add(new SetCardInfo("Flickerwisp", "B4", Rarity.UNCOMMON, mage.cards.f.Flickerwisp.class)); + cards.add(new SetCardInfo("Forest", "A154", Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", "A155", Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", "A156", Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forgotten Cave", "A127", Rarity.COMMON, mage.cards.f.ForgottenCave.class)); + cards.add(new SetCardInfo("Genesis", "A73", Rarity.RARE, mage.cards.g.Genesis.class)); + cards.add(new SetCardInfo("Ghost Quarter", "A128", Rarity.UNCOMMON, mage.cards.g.GhostQuarter.class)); + cards.add(new SetCardInfo("Ghostly Prison", "A8", Rarity.UNCOMMON, mage.cards.g.GhostlyPrison.class)); + cards.add(new SetCardInfo("Goblin Guide", "B17", Rarity.RARE, mage.cards.g.GoblinGuide.class)); + cards.add(new SetCardInfo("Golgari Grave-Troll", "A74", Rarity.RARE, mage.cards.g.GolgariGraveTroll.class)); + cards.add(new SetCardInfo("Golgari Rot Farm", "A129", Rarity.COMMON, mage.cards.g.GolgariRotFarm.class)); + cards.add(new SetCardInfo("Golgari Signet", "A112", Rarity.COMMON, mage.cards.g.GolgariSignet.class)); + cards.add(new SetCardInfo("Golgari Thug", "A42", Rarity.UNCOMMON, mage.cards.g.GolgariThug.class)); + cards.add(new SetCardInfo("Grim Harvest", "A43", Rarity.COMMON, mage.cards.g.GrimHarvest.class)); + cards.add(new SetCardInfo("Gruul Signet", "A113", Rarity.COMMON, mage.cards.g.GruulSignet.class)); + cards.add(new SetCardInfo("Gruul Turf", "A130", Rarity.COMMON, mage.cards.g.GruulTurf.class)); + cards.add(new SetCardInfo("Harmonize", "A75", Rarity.UNCOMMON, mage.cards.h.Harmonize.class)); + cards.add(new SetCardInfo("Hellspark Elemental", "B18", Rarity.UNCOMMON, mage.cards.h.HellsparkElemental.class)); + cards.add(new SetCardInfo("Hinder", "A24", Rarity.UNCOMMON, mage.cards.h.Hinder.class)); + cards.add(new SetCardInfo("Hissing Iguanar", "A58", Rarity.COMMON, mage.cards.h.HissingIguanar.class)); + // Card not implemented + //cards.add(new SetCardInfo("Illusionary Mask", "A114", Rarity.RARE, mage.cards.i.IllusionaryMask.class)); + cards.add(new SetCardInfo("Island", "A145", Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", "A146", Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", "A147", Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Jund Panorama", "A131", Rarity.COMMON, mage.cards.j.JundPanorama.class)); + cards.add(new SetCardInfo("Jungle Barrier", "A99", Rarity.UNCOMMON, mage.cards.j.JungleBarrier.class)); + cards.add(new SetCardInfo("Jungle Lion", "A76", Rarity.COMMON, mage.cards.j.JungleLion.class)); + cards.add(new SetCardInfo("Jotun Grunt", "B5", Rarity.UNCOMMON, mage.cards.j.JotunGrunt.class)); + cards.add(new SetCardInfo("Kami of Ancient Law", "A9", Rarity.COMMON, mage.cards.k.KamiOfAncientLaw.class)); + cards.add(new SetCardInfo("Karakas", "B32", Rarity.RARE, mage.cards.k.Karakas.class)); + cards.add(new SetCardInfo("Keldon Marauders", "B19", Rarity.COMMON, mage.cards.k.KeldonMarauders.class)); + cards.add(new SetCardInfo("Keldon Vandals", "A59", Rarity.COMMON, mage.cards.k.KeldonVandals.class)); + cards.add(new SetCardInfo("Kodama's Reach", "A77", Rarity.COMMON, mage.cards.k.KodamasReach.class)); + cards.add(new SetCardInfo("Kor Firewalker", "B6", Rarity.UNCOMMON, mage.cards.k.KorFirewalker.class)); + cards.add(new SetCardInfo("Krosan Tusker", "A78", Rarity.COMMON, mage.cards.k.KrosanTusker.class)); + cards.add(new SetCardInfo("Lava Spike", "B20", Rarity.COMMON, mage.cards.l.LavaSpike.class)); + cards.add(new SetCardInfo("Life from the Loam", "A79", Rarity.RARE, mage.cards.l.LifeFromTheLoam.class)); + cards.add(new SetCardInfo("Lightning Bolt", "A60", Rarity.COMMON, mage.cards.l.LightningBolt.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Lightning Bolt", "B21", Rarity.COMMON, mage.cards.l.LightningBolt.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Lightning Greaves", "A115", Rarity.UNCOMMON, mage.cards.l.LightningGreaves.class)); + cards.add(new SetCardInfo("Looter il-Kor", "A25", Rarity.COMMON, mage.cards.l.LooterIlKor.class)); + cards.add(new SetCardInfo("Magma Jet", "B22", Rarity.UNCOMMON, mage.cards.m.MagmaJet.class)); + cards.add(new SetCardInfo("Man-o'-War", "A26", Rarity.COMMON, mage.cards.m.ManOWar.class)); + cards.add(new SetCardInfo("Mangara of Corondor", "B7", Rarity.RARE, mage.cards.m.MangaraOfCorondor.class)); + cards.add(new SetCardInfo("Massacre", "A44", Rarity.UNCOMMON, mage.cards.m.Massacre.class)); + cards.add(new SetCardInfo("Merfolk Looter", "A27", Rarity.COMMON, mage.cards.m.MerfolkLooter.class)); + cards.add(new SetCardInfo("Mirari's Wake", "A100", Rarity.RARE, mage.cards.m.MirarisWake.class)); + cards.add(new SetCardInfo("Miren, the Moaning Well", "A132", Rarity.RARE, mage.cards.m.MirenTheMoaningWell.class)); + cards.add(new SetCardInfo("Mishra's Factory", "B33", Rarity.UNCOMMON, mage.cards.m.MishrasFactory.class)); + cards.add(new SetCardInfo("Mistmeadow Witch", "A101", Rarity.UNCOMMON, mage.cards.m.MistmeadowWitch.class)); + cards.add(new SetCardInfo("Moment's Peace", "A80", Rarity.COMMON, mage.cards.m.MomentsPeace.class)); + cards.add(new SetCardInfo("Momentary Blink", "A10", Rarity.COMMON, mage.cards.m.MomentaryBlink.class)); + cards.add(new SetCardInfo("Mountain", "A151", Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", "A152", Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", "A153", Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", "B38", Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", "B39", Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", "B40", Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", "B41", Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mulldrifter", "A28", Rarity.COMMON, mage.cards.m.Mulldrifter.class)); + cards.add(new SetCardInfo("Nezumi Graverobber", "A45", Rarity.UNCOMMON, mage.cards.n.NezumiGraverobber.class)); + cards.add(new SetCardInfo("Noble Templar", "A11", Rarity.COMMON, mage.cards.n.NobleTemplar.class)); + cards.add(new SetCardInfo("Oblivion Ring", "A12", Rarity.COMMON, mage.cards.o.OblivionRing.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Oblivion Ring", "B8", Rarity.COMMON, mage.cards.o.OblivionRing.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Overwhelming Intellect", "A29", Rarity.UNCOMMON, mage.cards.o.OverwhelmingIntellect.class)); + cards.add(new SetCardInfo("Penumbra Bobcat", "A81", Rarity.COMMON, mage.cards.p.PenumbraBobcat.class)); + cards.add(new SetCardInfo("Phantom Centaur", "A82", Rarity.UNCOMMON, mage.cards.p.PhantomCentaur.class)); + cards.add(new SetCardInfo("Phyrexian Arena", "A46", Rarity.RARE, mage.cards.p.PhyrexianArena.class)); + cards.add(new SetCardInfo("Plains", "A142", Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plains", "A143", Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plains", "A144", Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plains", "B34", Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plains", "B35", Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plains", "B36", Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plains", "B37", Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Price of Progress", "B23", Rarity.UNCOMMON, mage.cards.p.PriceOfProgress.class)); + cards.add(new SetCardInfo("Prison Term", "A13", Rarity.UNCOMMON, mage.cards.p.PrisonTerm.class)); + cards.add(new SetCardInfo("Putrefy", "A102", Rarity.UNCOMMON, mage.cards.p.Putrefy.class)); + cards.add(new SetCardInfo("Pyroblast", "B24", Rarity.COMMON, mage.cards.p.Pyroblast.class)); + cards.add(new SetCardInfo("Pyrostatic Pillar", "B25", Rarity.UNCOMMON, mage.cards.p.PyrostaticPillar.class)); + cards.add(new SetCardInfo("Questing Phelddagrif", "A103", Rarity.RARE, mage.cards.q.QuestingPhelddagrif.class)); + cards.add(new SetCardInfo("Rakdos Carnarium", "A133", Rarity.COMMON, mage.cards.r.RakdosCarnarium.class)); + cards.add(new SetCardInfo("Rakdos Signet", "A116", Rarity.COMMON, mage.cards.r.RakdosSignet.class)); + cards.add(new SetCardInfo("Rampant Growth", "A83", Rarity.COMMON, mage.cards.r.RampantGrowth.class)); + cards.add(new SetCardInfo("Raven Familiar", "A30", Rarity.UNCOMMON, mage.cards.r.RavenFamiliar.class)); + cards.add(new SetCardInfo("Reaping the Graves", "A47", Rarity.COMMON, mage.cards.r.ReapingTheGraves.class)); + cards.add(new SetCardInfo("Recollect", "A84", Rarity.UNCOMMON, mage.cards.r.Recollect.class)); + cards.add(new SetCardInfo("Relic of Progenitus", "A117", Rarity.UNCOMMON, mage.cards.r.RelicOfProgenitus.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Relic of Progenitus", "B29", Rarity.UNCOMMON, mage.cards.r.RelicOfProgenitus.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Resounding Thunder", "A61", Rarity.COMMON, mage.cards.r.ResoundingThunder.class)); + cards.add(new SetCardInfo("Resurrection", "A14", Rarity.UNCOMMON, mage.cards.r.Resurrection.class)); + cards.add(new SetCardInfo("Rhystic Study", "A31", Rarity.COMMON, mage.cards.r.RhysticStudy.class)); + cards.add(new SetCardInfo("Rift Bolt", "B26", Rarity.COMMON, mage.cards.r.RiftBolt.class)); + cards.add(new SetCardInfo("Rootbreaker Wurm", "A85", Rarity.COMMON, mage.cards.r.RootbreakerWurm.class)); + cards.add(new SetCardInfo("Rubinia Soulsinger", "A104", Rarity.RARE, mage.cards.r.RubiniaSoulsinger.class)); + cards.add(new SetCardInfo("Rupture Spire", "A134", Rarity.COMMON, mage.cards.r.RuptureSpire.class)); + cards.add(new SetCardInfo("Sakura-Tribe Elder", "A86", Rarity.COMMON, mage.cards.s.SakuraTribeElder.class)); + cards.add(new SetCardInfo("Savage Lands", "A135", Rarity.UNCOMMON, mage.cards.s.SavageLands.class)); + cards.add(new SetCardInfo("Seal of Cleansing", "A15", Rarity.COMMON, mage.cards.s.SealOfCleansing.class)); + cards.add(new SetCardInfo("Seaside Citadel", "A136", Rarity.UNCOMMON, mage.cards.s.SeasideCitadel.class)); + cards.add(new SetCardInfo("Selesnya Sanctuary", "A137", Rarity.UNCOMMON, mage.cards.s.SelesnyaSanctuary.class)); + cards.add(new SetCardInfo("Selesnya Signet", "A118", Rarity.COMMON, mage.cards.s.SelesnyaSignet.class)); + cards.add(new SetCardInfo("Serra Avenger", "B9", Rarity.RARE, mage.cards.s.SerraAvenger.class)); + cards.add(new SetCardInfo("Shambling Shell", "A105", Rarity.COMMON, mage.cards.s.ShamblingShell.class)); + cards.add(new SetCardInfo("Shoreline Ranger", "A32", Rarity.COMMON, mage.cards.s.ShorelineRanger.class)); + cards.add(new SetCardInfo("Shriekmaw", "A48", Rarity.UNCOMMON, mage.cards.s.Shriekmaw.class)); + cards.add(new SetCardInfo("Silence", "B10", Rarity.RARE, mage.cards.s.Silence.class)); + cards.add(new SetCardInfo("Simic Growth Chamber", "A138", Rarity.UNCOMMON, mage.cards.s.SimicGrowthChamber.class)); + cards.add(new SetCardInfo("Simic Signet", "A119", Rarity.COMMON, mage.cards.s.SimicSignet.class)); + cards.add(new SetCardInfo("Skullclamp", "A120", Rarity.UNCOMMON, mage.cards.s.Skullclamp.class)); + cards.add(new SetCardInfo("Sterling Grove", "A106", Rarity.UNCOMMON, mage.cards.s.SterlingGrove.class)); + cards.add(new SetCardInfo("Stinkweed Imp", "A49", Rarity.UNCOMMON, mage.cards.s.StinkweedImp.class)); + cards.add(new SetCardInfo("Stonecloaker", "A16", Rarity.UNCOMMON, mage.cards.s.Stonecloaker.class)); + cards.add(new SetCardInfo("Stoneforge Mystic", "B11", Rarity.RARE, mage.cards.s.StoneforgeMystic.class)); + cards.add(new SetCardInfo("Swamp", "A148", Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", "A149", Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", "A150", Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swords to Plowshares", "A17", Rarity.UNCOMMON, mage.cards.s.SwordsToPlowshares.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swords to Plowshares", "B12", Rarity.UNCOMMON, mage.cards.s.SwordsToPlowshares.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Temporal Spring", "A107", Rarity.COMMON, mage.cards.t.TemporalSpring.class)); + cards.add(new SetCardInfo("Terminate", "A108", Rarity.COMMON, mage.cards.t.Terminate.class)); + cards.add(new SetCardInfo("Terramorphic Expanse", "A139", Rarity.COMMON, mage.cards.t.TerramorphicExpanse.class)); + cards.add(new SetCardInfo("Terror", "A50", Rarity.COMMON, mage.cards.t.Terror.class)); + cards.add(new SetCardInfo("Tranquil Thicket", "A140", Rarity.COMMON, mage.cards.t.TranquilThicket.class)); + cards.add(new SetCardInfo("Treva's Ruins", "A141", Rarity.UNCOMMON, mage.cards.t.TrevasRuins.class)); + cards.add(new SetCardInfo("Twisted Abomination", "A51", Rarity.COMMON, mage.cards.t.TwistedAbomination.class)); + cards.add(new SetCardInfo("Umezawa's Jitte", "B30", Rarity.RARE, mage.cards.u.UmezawasJitte.class)); + cards.add(new SetCardInfo("Vampiric Dragon", "A109", Rarity.RARE, mage.cards.v.VampiricDragon.class)); + cards.add(new SetCardInfo("Weathered Wayfarer", "B13", Rarity.RARE, mage.cards.w.WeatheredWayfarer.class)); + cards.add(new SetCardInfo("Werebear", "A87", Rarity.COMMON, mage.cards.w.Werebear.class)); + cards.add(new SetCardInfo("Wickerbough Elder", "A88", Rarity.COMMON, mage.cards.w.WickerboughElder.class)); + cards.add(new SetCardInfo("Wild Mongrel", "A89", Rarity.COMMON, mage.cards.w.WildMongrel.class)); + cards.add(new SetCardInfo("Willbender", "A33", Rarity.UNCOMMON, mage.cards.w.Willbender.class)); + cards.add(new SetCardInfo("Wirewood Guardian", "A90", Rarity.COMMON, mage.cards.w.WirewoodGuardian.class)); + cards.add(new SetCardInfo("Wood Elves", "A91", Rarity.UNCOMMON, mage.cards.w.WoodElves.class)); + cards.add(new SetCardInfo("Xira Arien", "A110", Rarity.RARE, mage.cards.x.XiraArien.class)); + cards.add(new SetCardInfo("Yavimaya Elder", "A92", Rarity.COMMON, mage.cards.y.YavimayaElder.class)); + cards.add(new SetCardInfo("Yavimaya Enchantress", "A93", Rarity.UNCOMMON, mage.cards.y.YavimayaEnchantress.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/MagicOriginsClashPack.java b/Mage.Sets/src/mage/sets/MagicOriginsClashPack.java new file mode 100644 index 00000000000..13030a98a6d --- /dev/null +++ b/Mage.Sets/src/mage/sets/MagicOriginsClashPack.java @@ -0,0 +1,30 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/cp3 + */ +public class MagicOriginsClashPack extends ExpansionSet { + + private static final MagicOriginsClashPack instance = new MagicOriginsClashPack(); + + public static MagicOriginsClashPack getInstance() { + return instance; + } + + private MagicOriginsClashPack() { + super("Magic Origins Clash Pack", "CP3", ExpansionSet.buildDate(2015, 7, 17), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Dromoka, the Eternal", 4, Rarity.RARE, mage.cards.d.DromokaTheEternal.class)); + cards.add(new SetCardInfo("Honored Hierarch", 1, Rarity.RARE, mage.cards.h.HonoredHierarch.class)); + cards.add(new SetCardInfo("Sandsteppe Citadel", 6, Rarity.UNCOMMON, mage.cards.s.SandsteppeCitadel.class)); + cards.add(new SetCardInfo("Seeker of the Way", 2, Rarity.UNCOMMON, mage.cards.s.SeekerOfTheWay.class)); + cards.add(new SetCardInfo("Siege Rhino", 5, Rarity.RARE, mage.cards.s.SiegeRhino.class)); + cards.add(new SetCardInfo("Valorous Stance", 3, Rarity.UNCOMMON, mage.cards.v.ValorousStance.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/MagicOriginsPromos.java b/Mage.Sets/src/mage/sets/MagicOriginsPromos.java new file mode 100644 index 00000000000..b76caff8a79 --- /dev/null +++ b/Mage.Sets/src/mage/sets/MagicOriginsPromos.java @@ -0,0 +1,78 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/pori + */ +public class MagicOriginsPromos extends ExpansionSet { + + private static final MagicOriginsPromos instance = new MagicOriginsPromos(); + + public static MagicOriginsPromos getInstance() { + return instance; + } + + private MagicOriginsPromos() { + super("Magic Origins Promos", "PORI", ExpansionSet.buildDate(2015, 7, 17), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Abbot of Keral Keep", "127s", Rarity.RARE, mage.cards.a.AbbotOfKeralKeep.class)); + cards.add(new SetCardInfo("Alhammarret, High Arbiter", 43, Rarity.RARE, mage.cards.a.AlhammarretHighArbiter.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Alhammarret, High Arbiter", "43s", Rarity.RARE, mage.cards.a.AlhammarretHighArbiter.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Chandra's Ignition", "137s", Rarity.RARE, mage.cards.c.ChandrasIgnition.class)); + cards.add(new SetCardInfo("Chandra, Fire of Kaladesh", "135s", Rarity.MYTHIC, mage.cards.c.ChandraFireOfKaladesh.class)); + cards.add(new SetCardInfo("Chandra, Roaring Flame", "135s", Rarity.MYTHIC, mage.cards.c.ChandraRoaringFlame.class)); + cards.add(new SetCardInfo("Conclave Naturalists", 171, Rarity.UNCOMMON, mage.cards.c.ConclaveNaturalists.class)); + cards.add(new SetCardInfo("Dark Petition", "90s", Rarity.RARE, mage.cards.d.DarkPetition.class)); + cards.add(new SetCardInfo("Despoiler of Souls", "93s", Rarity.RARE, mage.cards.d.DespoilerOfSouls.class)); + cards.add(new SetCardInfo("Dwynen, Gilt-Leaf Daen", 172, Rarity.RARE, mage.cards.d.DwynenGiltLeafDaen.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Dwynen, Gilt-Leaf Daen", "172s", Rarity.RARE, mage.cards.d.DwynenGiltLeafDaen.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Embermaw Hellion", "141s", Rarity.RARE, mage.cards.e.EmbermawHellion.class)); + cards.add(new SetCardInfo("Evolutionary Leap", "176s", Rarity.RARE, mage.cards.e.EvolutionaryLeap.class)); + cards.add(new SetCardInfo("Exquisite Firecraft", "143s", Rarity.RARE, mage.cards.e.ExquisiteFirecraft.class)); + cards.add(new SetCardInfo("Gaea's Revenge", "177s", Rarity.RARE, mage.cards.g.GaeasRevenge.class)); + cards.add(new SetCardInfo("Gideon's Phalanx", "14s", Rarity.RARE, mage.cards.g.GideonsPhalanx.class)); + cards.add(new SetCardInfo("Gideon, Battle-Forged", "23s", Rarity.MYTHIC, mage.cards.g.GideonBattleForged.class)); + cards.add(new SetCardInfo("Gilt-Leaf Winnower", "99s", Rarity.RARE, mage.cards.g.GiltLeafWinnower.class)); + cards.add(new SetCardInfo("Goblin Piledriver", "151s", Rarity.RARE, mage.cards.g.GoblinPiledriver.class)); + cards.add(new SetCardInfo("Graveblade Marauder", "101s", Rarity.RARE, mage.cards.g.GravebladeMarauder.class)); + cards.add(new SetCardInfo("Harbinger of the Tides", "58s", Rarity.RARE, mage.cards.h.HarbingerOfTheTides.class)); + cards.add(new SetCardInfo("Hixus, Prison Warden", 19, Rarity.RARE, mage.cards.h.HixusPrisonWarden.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Hixus, Prison Warden", "19s", Rarity.RARE, mage.cards.h.HixusPrisonWarden.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Honored Hierarch", "182s", Rarity.RARE, mage.cards.h.HonoredHierarch.class)); + cards.add(new SetCardInfo("Jace, Telepath Unbound", "60s", Rarity.MYTHIC, mage.cards.j.JaceTelepathUnbound.class)); + cards.add(new SetCardInfo("Jace, Vryn's Prodigy", "60s", Rarity.MYTHIC, mage.cards.j.JaceVrynsProdigy.class)); + cards.add(new SetCardInfo("Knight of the White Orchid", "21s", Rarity.RARE, mage.cards.k.KnightOfTheWhiteOrchid.class)); + cards.add(new SetCardInfo("Kothophed, Soul Hoarder", 104, Rarity.RARE, mage.cards.k.KothophedSoulHoarder.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Kothophed, Soul Hoarder", "104s", Rarity.RARE, mage.cards.k.KothophedSoulHoarder.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Kytheon's Irregulars", "24s", Rarity.RARE, mage.cards.k.KytheonsIrregulars.class)); + cards.add(new SetCardInfo("Kytheon, Hero of Akros", "23s", Rarity.MYTHIC, mage.cards.k.KytheonHeroOfAkros.class)); + cards.add(new SetCardInfo("Languish", 105, Rarity.RARE, mage.cards.l.Languish.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Languish", "105s", Rarity.RARE, mage.cards.l.Languish.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Liliana, Defiant Necromancer", "106s", Rarity.MYTHIC, mage.cards.l.LilianaDefiantNecromancer.class)); + cards.add(new SetCardInfo("Liliana, Heretical Healer", "106s", Rarity.MYTHIC, mage.cards.l.LilianaHereticalHealer.class)); + cards.add(new SetCardInfo("Managorger Hydra", "186s", Rarity.RARE, mage.cards.m.ManagorgerHydra.class)); + cards.add(new SetCardInfo("Mizzium Meddler", 64, Rarity.RARE, mage.cards.m.MizziumMeddler.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mizzium Meddler", "64s", Rarity.RARE, mage.cards.m.MizziumMeddler.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Nissa's Revelation", "191s", Rarity.RARE, mage.cards.n.NissasRevelation.class)); + cards.add(new SetCardInfo("Nissa, Sage Animist", "189s", Rarity.MYTHIC, mage.cards.n.NissaSageAnimist.class)); + cards.add(new SetCardInfo("Nissa, Vastwood Seer", "189s", Rarity.MYTHIC, mage.cards.n.NissaVastwoodSeer.class)); + cards.add(new SetCardInfo("Outland Colossus", "193s", Rarity.RARE, mage.cards.o.OutlandColossus.class)); + cards.add(new SetCardInfo("Pia and Kiran Nalaar", 157, Rarity.RARE, mage.cards.p.PiaAndKiranNalaar.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Pia and Kiran Nalaar", "157s", Rarity.RARE, mage.cards.p.PiaAndKiranNalaar.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Priest of the Blood Rite", "112s", Rarity.RARE, mage.cards.p.PriestOfTheBloodRite.class)); + cards.add(new SetCardInfo("Relic Seeker", 29, Rarity.RARE, mage.cards.r.RelicSeeker.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Relic Seeker", "29s", Rarity.RARE, mage.cards.r.RelicSeeker.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Scab-Clan Berserker", "160s", Rarity.RARE, mage.cards.s.ScabClanBerserker.class)); + cards.add(new SetCardInfo("Soulblade Djinn", "75s", Rarity.RARE, mage.cards.s.SoulbladeDjinn.class)); + cards.add(new SetCardInfo("Talent of the Telepath", "78s", Rarity.RARE, mage.cards.t.TalentOfTheTelepath.class)); + cards.add(new SetCardInfo("Thopter Spy Network", "79s", Rarity.RARE, mage.cards.t.ThopterSpyNetwork.class)); + cards.add(new SetCardInfo("Tragic Arrogance", "38s", Rarity.RARE, mage.cards.t.TragicArrogance.class)); + cards.add(new SetCardInfo("Vryn Wingmare", "40s", Rarity.RARE, mage.cards.v.VrynWingmare.class)); + cards.add(new SetCardInfo("Willbreaker", "84s", Rarity.RARE, mage.cards.w.Willbreaker.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/MagicPlayerRewards.java b/Mage.Sets/src/mage/sets/MagicPlayerRewards.java deleted file mode 100644 index 09f320471f2..00000000000 --- a/Mage.Sets/src/mage/sets/MagicPlayerRewards.java +++ /dev/null @@ -1,77 +0,0 @@ - -package mage.sets; - -import mage.cards.CardGraphicInfo; -import mage.cards.ExpansionSet; -import mage.cards.FrameStyle; -import mage.constants.Rarity; -import mage.constants.SetType; - -public final class MagicPlayerRewards extends ExpansionSet { - - private static final MagicPlayerRewards instance = new MagicPlayerRewards(); - - public static MagicPlayerRewards getInstance() { - return instance; - } - - private MagicPlayerRewards() { - super("Magic Player Rewards", "MPRP", ExpansionSet.buildDate(1990, 1, 1), SetType.PROMOTIONAL); - this.hasBoosters = false; - this.hasBasicLands = false; - CardGraphicInfo graphicInfo = new CardGraphicInfo(FrameStyle.MPRP_FULL_ART_BASIC, false); - cards.add(new SetCardInfo("Bituminous Blast", 46, Rarity.SPECIAL, mage.cards.b.BituminousBlast.class, graphicInfo)); - cards.add(new SetCardInfo("Blightning", 36, Rarity.SPECIAL, mage.cards.b.Blightning.class, graphicInfo)); - cards.add(new SetCardInfo("Brave the Elements", 50, Rarity.SPECIAL, mage.cards.b.BraveTheElements.class, graphicInfo)); - cards.add(new SetCardInfo("Burst Lightning", 47, Rarity.SPECIAL, mage.cards.b.BurstLightning.class, graphicInfo)); - cards.add(new SetCardInfo("Cancel", 41, Rarity.SPECIAL, mage.cards.c.Cancel.class, graphicInfo)); - cards.add(new SetCardInfo("Celestial Purge", 45, Rarity.SPECIAL, mage.cards.c.CelestialPurge.class, graphicInfo)); - cards.add(new SetCardInfo("Condemn", 18, Rarity.SPECIAL, mage.cards.c.Condemn.class, graphicInfo)); - cards.add(new SetCardInfo("Corrupt", 30, Rarity.SPECIAL, mage.cards.c.Corrupt.class, graphicInfo)); - cards.add(new SetCardInfo("Cruel Edict", 21, Rarity.SPECIAL, mage.cards.c.CruelEdict.class, graphicInfo)); - cards.add(new SetCardInfo("Cryptic Command", 31, Rarity.SPECIAL, mage.cards.c.CrypticCommand.class, graphicInfo)); - cards.add(new SetCardInfo("Damnation", 24, Rarity.SPECIAL, mage.cards.d.Damnation.class, graphicInfo)); - cards.add(new SetCardInfo("Day of Judgment", 49, Rarity.SPECIAL, mage.cards.d.DayOfJudgment.class, graphicInfo)); - cards.add(new SetCardInfo("Disenchant", 22, Rarity.SPECIAL, mage.cards.d.Disenchant.class, graphicInfo)); - cards.add(new SetCardInfo("Doom Blade", 51, Rarity.SPECIAL, mage.cards.d.DoomBlade.class, graphicInfo)); - cards.add(new SetCardInfo("Fireball", 6, Rarity.SPECIAL, mage.cards.f.Fireball.class, graphicInfo)); - cards.add(new SetCardInfo("Flame Javelin", 32, Rarity.SPECIAL, mage.cards.f.FlameJavelin.class, graphicInfo)); - cards.add(new SetCardInfo("Giant Growth", 13, Rarity.SPECIAL, mage.cards.g.GiantGrowth.class, graphicInfo)); - cards.add(new SetCardInfo("Harmonize", 28, Rarity.SPECIAL, mage.cards.h.Harmonize.class, graphicInfo)); - cards.add(new SetCardInfo("Harrow", 48, Rarity.SPECIAL, mage.cards.h.Harrow.class, graphicInfo)); - cards.add(new SetCardInfo("Hinder", 11, Rarity.SPECIAL, mage.cards.h.Hinder.class, graphicInfo)); - cards.add(new SetCardInfo("Hypnotic Specter", 10, Rarity.SPECIAL, mage.cards.h.HypnoticSpecter.class)); - cards.add(new SetCardInfo("Incinerate", 26, Rarity.SPECIAL, mage.cards.i.Incinerate.class, graphicInfo)); - cards.add(new SetCardInfo("Infest", 43, Rarity.SPECIAL, mage.cards.i.Infest.class, graphicInfo)); - cards.add(new SetCardInfo("Lightning Bolt", 40, Rarity.SPECIAL, mage.cards.l.LightningBolt.class, graphicInfo)); - cards.add(new SetCardInfo("Lightning Helix", 16, Rarity.SPECIAL, mage.cards.l.LightningHelix.class, graphicInfo)); - cards.add(new SetCardInfo("Mana Leak", 8, Rarity.SPECIAL, mage.cards.m.ManaLeak.class, graphicInfo)); - cards.add(new SetCardInfo("Mana Tithe", 27, Rarity.SPECIAL, mage.cards.m.ManaTithe.class, graphicInfo)); - cards.add(new SetCardInfo("Mortify", 19, Rarity.SPECIAL, mage.cards.m.Mortify.class, graphicInfo)); - cards.add(new SetCardInfo("Nameless Inversion", 34, Rarity.SPECIAL, mage.cards.n.NamelessInversion.class, graphicInfo)); - cards.add(new SetCardInfo("Negate", 38, Rarity.SPECIAL, mage.cards.n.Negate.class, graphicInfo)); - cards.add(new SetCardInfo("Oxidize", 7, Rarity.SPECIAL, mage.cards.o.Oxidize.class, graphicInfo)); - cards.add(new SetCardInfo("Ponder", 29, Rarity.SPECIAL, mage.cards.p.Ponder.class, graphicInfo)); - cards.add(new SetCardInfo("Powder Keg", 3, Rarity.SPECIAL, mage.cards.p.PowderKeg.class)); - cards.add(new SetCardInfo("Psionic Blast", 20, Rarity.SPECIAL, mage.cards.p.PsionicBlast.class, graphicInfo)); - cards.add(new SetCardInfo("Psychatog", 4, Rarity.SPECIAL, mage.cards.p.Psychatog.class)); - cards.add(new SetCardInfo("Putrefy", 14, Rarity.SPECIAL, mage.cards.p.Putrefy.class, graphicInfo)); - cards.add(new SetCardInfo("Pyroclasm", 12, Rarity.SPECIAL, mage.cards.p.Pyroclasm.class, graphicInfo)); - cards.add(new SetCardInfo("Rampant Growth", 37, Rarity.SPECIAL, mage.cards.r.RampantGrowth.class, graphicInfo)); - cards.add(new SetCardInfo("Reciprocate", 9, Rarity.SPECIAL, mage.cards.r.Reciprocate.class, graphicInfo)); - cards.add(new SetCardInfo("Recollect", 23, Rarity.SPECIAL, mage.cards.r.Recollect.class, graphicInfo)); - cards.add(new SetCardInfo("Remove Soul", 35, Rarity.SPECIAL, mage.cards.r.RemoveSoul.class, graphicInfo)); - cards.add(new SetCardInfo("Searing Blaze", 53, Rarity.SPECIAL, mage.cards.s.SearingBlaze.class, graphicInfo)); - cards.add(new SetCardInfo("Sign in Blood", 42, Rarity.SPECIAL, mage.cards.s.SignInBlood.class, graphicInfo)); - cards.add(new SetCardInfo("Terminate", 39, Rarity.SPECIAL, mage.cards.t.Terminate.class, graphicInfo)); - cards.add(new SetCardInfo("Terror", 5, Rarity.SPECIAL, mage.cards.t.Terror.class, graphicInfo)); - cards.add(new SetCardInfo("Tidings", 25, Rarity.SPECIAL, mage.cards.t.Tidings.class, graphicInfo)); - cards.add(new SetCardInfo("Treasure Hunt", 52, Rarity.SPECIAL, mage.cards.t.TreasureHunt.class, graphicInfo)); - cards.add(new SetCardInfo("Unmake", 33, Rarity.SPECIAL, mage.cards.u.Unmake.class, graphicInfo)); - cards.add(new SetCardInfo("Voidmage Prodigy", 2, Rarity.SPECIAL, mage.cards.v.VoidmageProdigy.class)); - cards.add(new SetCardInfo("Volcanic Fallout", 44, Rarity.SPECIAL, mage.cards.v.VolcanicFallout.class, graphicInfo)); - cards.add(new SetCardInfo("Wasteland", 1, Rarity.SPECIAL, mage.cards.w.Wasteland.class, graphicInfo)); - cards.add(new SetCardInfo("Wrath of God", 17, Rarity.SPECIAL, mage.cards.w.WrathOfGod.class, graphicInfo)); - cards.add(new SetCardInfo("Zombify", 15, Rarity.SPECIAL, mage.cards.z.Zombify.class, graphicInfo)); - } -} diff --git a/Mage.Sets/src/mage/sets/MagicPlayerRewards2001.java b/Mage.Sets/src/mage/sets/MagicPlayerRewards2001.java new file mode 100644 index 00000000000..07cdc3bc229 --- /dev/null +++ b/Mage.Sets/src/mage/sets/MagicPlayerRewards2001.java @@ -0,0 +1,25 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/mpr + */ +public class MagicPlayerRewards2001 extends ExpansionSet { + + private static final MagicPlayerRewards2001 instance = new MagicPlayerRewards2001(); + + public static MagicPlayerRewards2001 getInstance() { + return instance; + } + + private MagicPlayerRewards2001() { + super("Magic Player Rewards 2001", "MPR", ExpansionSet.buildDate(2001, 1, 1), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Wasteland", 1, Rarity.RARE, mage.cards.w.Wasteland.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/MagicPlayerRewards2003.java b/Mage.Sets/src/mage/sets/MagicPlayerRewards2003.java new file mode 100644 index 00000000000..7afe968ef65 --- /dev/null +++ b/Mage.Sets/src/mage/sets/MagicPlayerRewards2003.java @@ -0,0 +1,25 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/p03 + */ +public class MagicPlayerRewards2003 extends ExpansionSet { + + private static final MagicPlayerRewards2003 instance = new MagicPlayerRewards2003(); + + public static MagicPlayerRewards2003 getInstance() { + return instance; + } + + private MagicPlayerRewards2003() { + super("Magic Player Rewards 2003", "P03", ExpansionSet.buildDate(2003, 1, 1), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Voidmage Prodigy", 1, Rarity.RARE, mage.cards.v.VoidmageProdigy.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/MagicPlayerRewards2004.java b/Mage.Sets/src/mage/sets/MagicPlayerRewards2004.java new file mode 100644 index 00000000000..d2ba1d0381a --- /dev/null +++ b/Mage.Sets/src/mage/sets/MagicPlayerRewards2004.java @@ -0,0 +1,25 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/p04 + */ +public class MagicPlayerRewards2004 extends ExpansionSet { + + private static final MagicPlayerRewards2004 instance = new MagicPlayerRewards2004(); + + public static MagicPlayerRewards2004 getInstance() { + return instance; + } + + private MagicPlayerRewards2004() { + super("Magic Player Rewards 2004", "P04", ExpansionSet.buildDate(2004, 1, 1), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Powder Keg", 1, Rarity.RARE, mage.cards.p.PowderKeg.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/MagicPlayerRewards2005.java b/Mage.Sets/src/mage/sets/MagicPlayerRewards2005.java new file mode 100644 index 00000000000..688cac308d1 --- /dev/null +++ b/Mage.Sets/src/mage/sets/MagicPlayerRewards2005.java @@ -0,0 +1,34 @@ +package mage.sets; + +import mage.cards.CardGraphicInfo; +import mage.cards.ExpansionSet; +import mage.cards.FrameStyle; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/p05 + */ +public class MagicPlayerRewards2005 extends ExpansionSet { + + private static final MagicPlayerRewards2005 instance = new MagicPlayerRewards2005(); + + public static MagicPlayerRewards2005 getInstance() { + return instance; + } + + private MagicPlayerRewards2005() { + super("Magic Player Rewards 2005", "P05", ExpansionSet.buildDate(2005, 1, 1), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + final CardGraphicInfo MPR_FULL_ART = new CardGraphicInfo(FrameStyle.MPRP_FULL_ART_BASIC, false); + + cards.add(new SetCardInfo("Fireball", 3, Rarity.RARE, mage.cards.f.Fireball.class, MPR_FULL_ART)); + cards.add(new SetCardInfo("Mana Leak", 5, Rarity.RARE, mage.cards.m.ManaLeak.class, MPR_FULL_ART)); + cards.add(new SetCardInfo("Oxidize", 4, Rarity.RARE, mage.cards.o.Oxidize.class, MPR_FULL_ART)); + cards.add(new SetCardInfo("Psychatog", 1, Rarity.RARE, mage.cards.p.Psychatog.class)); + cards.add(new SetCardInfo("Reciprocate", 6, Rarity.RARE, mage.cards.r.Reciprocate.class, MPR_FULL_ART)); + cards.add(new SetCardInfo("Terror", 2, Rarity.RARE, mage.cards.t.Terror.class, MPR_FULL_ART)); + } +} diff --git a/Mage.Sets/src/mage/sets/MagicPlayerRewards2006.java b/Mage.Sets/src/mage/sets/MagicPlayerRewards2006.java new file mode 100644 index 00000000000..cca81f3824c --- /dev/null +++ b/Mage.Sets/src/mage/sets/MagicPlayerRewards2006.java @@ -0,0 +1,35 @@ +package mage.sets; + +import mage.cards.CardGraphicInfo; +import mage.cards.ExpansionSet; +import mage.cards.FrameStyle; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/p06 + */ +public class MagicPlayerRewards2006 extends ExpansionSet { + + private static final MagicPlayerRewards2006 instance = new MagicPlayerRewards2006(); + + public static MagicPlayerRewards2006 getInstance() { + return instance; + } + + private MagicPlayerRewards2006() { + super("Magic Player Rewards 2006", "P06", ExpansionSet.buildDate(2006, 1, 1), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + final CardGraphicInfo MPR_FULL_ART = new CardGraphicInfo(FrameStyle.MPRP_FULL_ART_BASIC, false); + + cards.add(new SetCardInfo("Giant Growth", 4, Rarity.RARE, mage.cards.g.GiantGrowth.class, MPR_FULL_ART)); + cards.add(new SetCardInfo("Hinder", 2, Rarity.RARE, mage.cards.h.Hinder.class, MPR_FULL_ART)); + cards.add(new SetCardInfo("Hypnotic Specter", 1, Rarity.RARE, mage.cards.h.HypnoticSpecter.class)); + cards.add(new SetCardInfo("Lightning Helix", 7, Rarity.RARE, mage.cards.l.LightningHelix.class, MPR_FULL_ART)); + cards.add(new SetCardInfo("Putrefy", 5, Rarity.RARE, mage.cards.p.Putrefy.class, MPR_FULL_ART)); + cards.add(new SetCardInfo("Pyroclasm", 3, Rarity.RARE, mage.cards.p.Pyroclasm.class, MPR_FULL_ART)); + cards.add(new SetCardInfo("Zombify", 6, Rarity.RARE, mage.cards.z.Zombify.class, MPR_FULL_ART)); + } +} diff --git a/Mage.Sets/src/mage/sets/MagicPlayerRewards2007.java b/Mage.Sets/src/mage/sets/MagicPlayerRewards2007.java new file mode 100644 index 00000000000..5b5f0a933e5 --- /dev/null +++ b/Mage.Sets/src/mage/sets/MagicPlayerRewards2007.java @@ -0,0 +1,35 @@ +package mage.sets; + +import mage.cards.CardGraphicInfo; +import mage.cards.ExpansionSet; +import mage.cards.FrameStyle; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/p07 + */ +public class MagicPlayerRewards2007 extends ExpansionSet { + + private static final MagicPlayerRewards2007 instance = new MagicPlayerRewards2007(); + + public static MagicPlayerRewards2007 getInstance() { + return instance; + } + + private MagicPlayerRewards2007() { + super("Magic Player Rewards 2007", "P07", ExpansionSet.buildDate(2007, 1, 1), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + final CardGraphicInfo MPR_FULL_ART = new CardGraphicInfo(FrameStyle.MPRP_FULL_ART_BASIC, false); + + cards.add(new SetCardInfo("Condemn", 2, Rarity.RARE, mage.cards.c.Condemn.class, MPR_FULL_ART)); + cards.add(new SetCardInfo("Cruel Edict", 5, Rarity.RARE, mage.cards.c.CruelEdict.class, MPR_FULL_ART)); + cards.add(new SetCardInfo("Disenchant", 6, Rarity.RARE, mage.cards.d.Disenchant.class, MPR_FULL_ART)); + cards.add(new SetCardInfo("Mortify", 3, Rarity.RARE, mage.cards.m.Mortify.class, MPR_FULL_ART)); + cards.add(new SetCardInfo("Psionic Blast", 4, Rarity.RARE, mage.cards.p.PsionicBlast.class, MPR_FULL_ART)); + cards.add(new SetCardInfo("Recollect", 7, Rarity.RARE, mage.cards.r.Recollect.class, MPR_FULL_ART)); + cards.add(new SetCardInfo("Wrath of God", 1, Rarity.RARE, mage.cards.w.WrathOfGod.class, MPR_FULL_ART)); + } +} diff --git a/Mage.Sets/src/mage/sets/MagicPlayerRewards2008.java b/Mage.Sets/src/mage/sets/MagicPlayerRewards2008.java new file mode 100644 index 00000000000..716ec7b3ac2 --- /dev/null +++ b/Mage.Sets/src/mage/sets/MagicPlayerRewards2008.java @@ -0,0 +1,35 @@ +package mage.sets; + +import mage.cards.CardGraphicInfo; +import mage.cards.ExpansionSet; +import mage.cards.FrameStyle; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/p08 + */ +public class MagicPlayerRewards2008 extends ExpansionSet { + + private static final MagicPlayerRewards2008 instance = new MagicPlayerRewards2008(); + + public static MagicPlayerRewards2008 getInstance() { + return instance; + } + + private MagicPlayerRewards2008() { + super("Magic Player Rewards 2008", "P08", ExpansionSet.buildDate(2008, 1, 1), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + final CardGraphicInfo MPR_FULL_ART = new CardGraphicInfo(FrameStyle.MPRP_FULL_ART_BASIC, false); + + cards.add(new SetCardInfo("Corrupt", 7, Rarity.RARE, mage.cards.c.Corrupt.class)); + cards.add(new SetCardInfo("Damnation", 1, Rarity.RARE, mage.cards.d.Damnation.class)); + cards.add(new SetCardInfo("Harmonize", 5, Rarity.RARE, mage.cards.h.Harmonize.class)); + cards.add(new SetCardInfo("Incinerate", 3, Rarity.RARE, mage.cards.i.Incinerate.class)); + cards.add(new SetCardInfo("Mana Tithe", 4, Rarity.RARE, mage.cards.m.ManaTithe.class)); + cards.add(new SetCardInfo("Ponder", 6, Rarity.RARE, mage.cards.p.Ponder.class)); + cards.add(new SetCardInfo("Tidings", 2, Rarity.RARE, mage.cards.t.Tidings.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/MagicPlayerRewards2009.java b/Mage.Sets/src/mage/sets/MagicPlayerRewards2009.java new file mode 100644 index 00000000000..c699fd4aced --- /dev/null +++ b/Mage.Sets/src/mage/sets/MagicPlayerRewards2009.java @@ -0,0 +1,37 @@ +package mage.sets; + +import mage.cards.CardGraphicInfo; +import mage.cards.ExpansionSet; +import mage.cards.FrameStyle; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/p09 + */ +public class MagicPlayerRewards2009 extends ExpansionSet { + + private static final MagicPlayerRewards2009 instance = new MagicPlayerRewards2009(); + + public static MagicPlayerRewards2009 getInstance() { + return instance; + } + + private MagicPlayerRewards2009() { + super("Magic Player Rewards 2009", "P09", ExpansionSet.buildDate(2009, 1, 1), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + final CardGraphicInfo MPR_FULL_ART = new CardGraphicInfo(FrameStyle.MPRP_FULL_ART_BASIC, false); + + cards.add(new SetCardInfo("Blightning", 6, Rarity.RARE, mage.cards.b.Blightning.class, MPR_FULL_ART)); + cards.add(new SetCardInfo("Cryptic Command", 1, Rarity.RARE, mage.cards.c.CrypticCommand.class, MPR_FULL_ART)); + cards.add(new SetCardInfo("Flame Javelin", 2, Rarity.RARE, mage.cards.f.FlameJavelin.class, MPR_FULL_ART)); + cards.add(new SetCardInfo("Nameless Inversion", 4, Rarity.RARE, mage.cards.n.NamelessInversion.class, MPR_FULL_ART)); + cards.add(new SetCardInfo("Negate", 8, Rarity.RARE, mage.cards.n.Negate.class, MPR_FULL_ART)); + cards.add(new SetCardInfo("Rampant Growth", 7, Rarity.RARE, mage.cards.r.RampantGrowth.class, MPR_FULL_ART)); + cards.add(new SetCardInfo("Remove Soul", 5, Rarity.RARE, mage.cards.r.RemoveSoul.class, MPR_FULL_ART)); + cards.add(new SetCardInfo("Terminate", 9, Rarity.RARE, mage.cards.t.Terminate.class, MPR_FULL_ART)); + cards.add(new SetCardInfo("Unmake", 3, Rarity.RARE, mage.cards.u.Unmake.class, MPR_FULL_ART)); + } +} diff --git a/Mage.Sets/src/mage/sets/MagicPlayerRewards2010.java b/Mage.Sets/src/mage/sets/MagicPlayerRewards2010.java new file mode 100644 index 00000000000..921b5787fb1 --- /dev/null +++ b/Mage.Sets/src/mage/sets/MagicPlayerRewards2010.java @@ -0,0 +1,37 @@ +package mage.sets; + +import mage.cards.CardGraphicInfo; +import mage.cards.ExpansionSet; +import mage.cards.FrameStyle; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/p10 + */ +public class MagicPlayerRewards2010 extends ExpansionSet { + + private static final MagicPlayerRewards2010 instance = new MagicPlayerRewards2010(); + + public static MagicPlayerRewards2010 getInstance() { + return instance; + } + + private MagicPlayerRewards2010() { + super("Magic Player Rewards 2010", "P10", ExpansionSet.buildDate(2010, 1, 1), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + final CardGraphicInfo MPR_FULL_ART = new CardGraphicInfo(FrameStyle.MPRP_FULL_ART_BASIC, false); + + cards.add(new SetCardInfo("Bituminous Blast", 7, Rarity.RARE, mage.cards.b.BituminousBlast.class, MPR_FULL_ART)); + cards.add(new SetCardInfo("Burst Lightning", 8, Rarity.RARE, mage.cards.b.BurstLightning.class, MPR_FULL_ART)); + cards.add(new SetCardInfo("Cancel", 2, Rarity.RARE, mage.cards.c.Cancel.class, MPR_FULL_ART)); + cards.add(new SetCardInfo("Celestial Purge", 6, Rarity.RARE, mage.cards.c.CelestialPurge.class, MPR_FULL_ART)); + cards.add(new SetCardInfo("Harrow", 9, Rarity.RARE, mage.cards.h.Harrow.class, MPR_FULL_ART)); + cards.add(new SetCardInfo("Infest", 4, Rarity.RARE, mage.cards.i.Infest.class, MPR_FULL_ART)); + cards.add(new SetCardInfo("Lightning Bolt", 1, Rarity.RARE, mage.cards.l.LightningBolt.class, MPR_FULL_ART)); + cards.add(new SetCardInfo("Sign in Blood", 3, Rarity.RARE, mage.cards.s.SignInBlood.class, MPR_FULL_ART)); + cards.add(new SetCardInfo("Volcanic Fallout", 5, Rarity.RARE, mage.cards.v.VolcanicFallout.class, MPR_FULL_ART)); + } +} diff --git a/Mage.Sets/src/mage/sets/MagicPlayerRewards2011.java b/Mage.Sets/src/mage/sets/MagicPlayerRewards2011.java new file mode 100644 index 00000000000..24e83675470 --- /dev/null +++ b/Mage.Sets/src/mage/sets/MagicPlayerRewards2011.java @@ -0,0 +1,33 @@ +package mage.sets; + +import mage.cards.CardGraphicInfo; +import mage.cards.ExpansionSet; +import mage.cards.FrameStyle; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/p11 + */ +public class MagicPlayerRewards2011 extends ExpansionSet { + + private static final MagicPlayerRewards2011 instance = new MagicPlayerRewards2011(); + + public static MagicPlayerRewards2011 getInstance() { + return instance; + } + + private MagicPlayerRewards2011() { + super("Magic Player Rewards 2011", "P11", ExpansionSet.buildDate(2011, 1, 1), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + final CardGraphicInfo MPR_FULL_ART = new CardGraphicInfo(FrameStyle.MPRP_FULL_ART_BASIC, false); + + cards.add(new SetCardInfo("Brave the Elements", 2, Rarity.RARE, mage.cards.b.BraveTheElements.class, MPR_FULL_ART)); + cards.add(new SetCardInfo("Day of Judgment", 1, Rarity.RARE, mage.cards.d.DayOfJudgment.class, MPR_FULL_ART)); + cards.add(new SetCardInfo("Doom Blade", 3, Rarity.RARE, mage.cards.d.DoomBlade.class, MPR_FULL_ART)); + cards.add(new SetCardInfo("Searing Blaze", 5, Rarity.RARE, mage.cards.s.SearingBlaze.class, MPR_FULL_ART)); + cards.add(new SetCardInfo("Treasure Hunt", 4, Rarity.RARE, mage.cards.t.TreasureHunt.class, MPR_FULL_ART)); + } +} diff --git a/Mage.Sets/src/mage/sets/MastersEdition.java b/Mage.Sets/src/mage/sets/MastersEdition.java index d2ba77613cf..efb3378435f 100644 --- a/Mage.Sets/src/mage/sets/MastersEdition.java +++ b/Mage.Sets/src/mage/sets/MastersEdition.java @@ -17,7 +17,7 @@ public final class MastersEdition extends ExpansionSet { } private MastersEdition() { - super("Masters Edition", "MED", ExpansionSet.buildDate(2007, 9, 10), SetType.MAGIC_ONLINE); + super("Masters Edition", "ME1", ExpansionSet.buildDate(2007, 9, 10), SetType.MAGIC_ONLINE); this.hasBasicLands = true; this.hasBoosters = true; this.numBoosterLands = 1; diff --git a/Mage.Sets/src/mage/sets/MediaInserts.java b/Mage.Sets/src/mage/sets/MediaInserts.java deleted file mode 100644 index 47d1bd4566f..00000000000 --- a/Mage.Sets/src/mage/sets/MediaInserts.java +++ /dev/null @@ -1,214 +0,0 @@ - -package mage.sets; - -import mage.cards.ExpansionSet; -import mage.constants.Rarity; -import mage.constants.SetType; - -public final class MediaInserts extends ExpansionSet { - - private static final MediaInserts instance = new MediaInserts(); - - public static MediaInserts getInstance() { - return instance; - } - - private MediaInserts() { - super("Media Inserts", "MBP", ExpansionSet.buildDate(1990, 1, 1), SetType.PROMOTIONAL); - this.hasBoosters = false; - this.hasBasicLands = false; - - cards.add(new SetCardInfo("Acquire", 83, Rarity.RARE, mage.cards.a.Acquire.class)); - cards.add(new SetCardInfo("Aeronaut Tinkerer", 118, Rarity.COMMON, mage.cards.a.AeronautTinkerer.class)); - cards.add(new SetCardInfo("Ajani, Caller of the Pride", 72, Rarity.MYTHIC, mage.cards.a.AjaniCallerOfThePride.class)); - cards.add(new SetCardInfo("Ajani Steadfast", 99, Rarity.MYTHIC, mage.cards.a.AjaniSteadfast.class)); - cards.add(new SetCardInfo("Alhammarret, High Arbiter", 124, Rarity.SPECIAL, mage.cards.a.AlhammarretHighArbiter.class)); - cards.add(new SetCardInfo("Angelic Skirmisher", 90, Rarity.RARE, mage.cards.a.AngelicSkirmisher.class)); - cards.add(new SetCardInfo("Angel of Glory's Rise", 59, Rarity.RARE, mage.cards.a.AngelOfGlorysRise.class)); - cards.add(new SetCardInfo("Ankle Shanker", 93, Rarity.RARE, mage.cards.a.AnkleShanker.class)); - cards.add(new SetCardInfo("Arashin Sovereign", 112, Rarity.SPECIAL, mage.cards.a.ArashinSovereign.class)); - cards.add(new SetCardInfo("Archfiend of Depravity", 109, Rarity.SPECIAL, mage.cards.a.ArchfiendOfDepravity.class)); - cards.add(new SetCardInfo("Archfiend of Ifnir", 165, Rarity.RARE, mage.cards.a.ArchfiendOfIfnir.class)); - cards.add(new SetCardInfo("Arena", 1, Rarity.SPECIAL, mage.cards.a.Arena.class)); - cards.add(new SetCardInfo("Arrest", 53, Rarity.COMMON, mage.cards.a.Arrest.class)); - cards.add(new SetCardInfo("Assembled Alphas", 160, Rarity.RARE, mage.cards.a.AssembledAlphas.class)); - cards.add(new SetCardInfo("Avalanche Tusker", 94, Rarity.RARE, mage.cards.a.AvalancheTusker.class)); - cards.add(new SetCardInfo("Barrage Tyrant", 139, Rarity.SPECIAL, mage.cards.b.BarrageTyrant.class)); - cards.add(new SetCardInfo("Birds of Paradise", 28, Rarity.RARE, mage.cards.b.BirdsOfParadise.class)); - cards.add(new SetCardInfo("Bloodthrone Vampire", 31, Rarity.COMMON, mage.cards.b.BloodthroneVampire.class)); - cards.add(new SetCardInfo("Blue Elemental Blast", 5, Rarity.COMMON, mage.cards.b.BlueElementalBlast.class)); - cards.add(new SetCardInfo("Boltwing Marauder", 115, Rarity.SPECIAL, mage.cards.b.BoltwingMarauder.class)); - cards.add(new SetCardInfo("Bonescythe Sliver", 68, Rarity.RARE, mage.cards.b.BonescytheSliver.class)); - cards.add(new SetCardInfo("Breath of Malfegor", 58, Rarity.COMMON, mage.cards.b.BreathOfMalfegor.class)); - cards.add(new SetCardInfo("Brion Stoutarm", 17, Rarity.RARE, mage.cards.b.BrionStoutarm.class)); - cards.add(new SetCardInfo("Broodmate Dragon", 19, Rarity.RARE, mage.cards.b.BroodmateDragon.class)); - cards.add(new SetCardInfo("Burning Sun's Avatar", 183, Rarity.RARE, mage.cards.b.BurningSunsAvatar.class)); - cards.add(new SetCardInfo("Canopy Vista", 167, Rarity.RARE, mage.cards.c.CanopyVista.class)); - cards.add(new SetCardInfo("Cathedral of War", 51, Rarity.RARE, mage.cards.c.CathedralOfWar.class)); - cards.add(new SetCardInfo("Celestial Colonnade", 23, Rarity.SPECIAL, mage.cards.c.CelestialColonnade.class)); - cards.add(new SetCardInfo("Chandra, Fire of Kaladesh", 997, Rarity.SPECIAL, mage.cards.c.ChandraFireOfKaladesh.class)); - cards.add(new SetCardInfo("Chandra, Flamecaller", 175, Rarity.MYTHIC, mage.cards.c.ChandraFlamecaller.class)); - cards.add(new SetCardInfo("Chandra, Pyromaster", 75, Rarity.MYTHIC, mage.cards.c.ChandraPyromaster.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Chandra, Pyromaster", 102, Rarity.MYTHIC, mage.cards.c.ChandraPyromaster.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Chandra, Roaring Flame", 997, Rarity.SPECIAL, mage.cards.c.ChandraRoaringFlame.class)); - cards.add(new SetCardInfo("Chandra, Torch of Defiance", 180, Rarity.MYTHIC, mage.cards.c.ChandraTorchOfDefiance.class)); - cards.add(new SetCardInfo("Chandra's Fury", 65, Rarity.COMMON, mage.cards.c.ChandrasFury.class)); - cards.add(new SetCardInfo("Chandra's Phoenix", 37, Rarity.RARE, mage.cards.c.ChandrasPhoenix.class)); - cards.add(new SetCardInfo("Cinder Glade", 168, Rarity.RARE, mage.cards.c.CinderGlade.class)); - cards.add(new SetCardInfo("Consume Spirit", 54, Rarity.UNCOMMON, mage.cards.c.ConsumeSpirit.class)); - cards.add(new SetCardInfo("Corrupt", 64, Rarity.UNCOMMON, mage.cards.c.Corrupt.class)); - cards.add(new SetCardInfo("Day of Judgment", 22, Rarity.RARE, mage.cards.d.DayOfJudgment.class)); - cards.add(new SetCardInfo("Deepfathom Skulker", 144, Rarity.RARE, mage.cards.d.DeepfathomSkulker.class)); - cards.add(new SetCardInfo("Defiant Bloodlord", 138, Rarity.SPECIAL, mage.cards.d.DefiantBloodlord.class)); - cards.add(new SetCardInfo("Devil's Play", 40, Rarity.RARE, mage.cards.d.DevilsPlay.class)); - cards.add(new SetCardInfo("Dragon Fodder", 119, Rarity.COMMON, mage.cards.d.DragonFodder.class)); - cards.add(new SetCardInfo("Dragonlord's Servant", 120, Rarity.SPECIAL, mage.cards.d.DragonlordsServant.class)); - cards.add(new SetCardInfo("Dragonscale General", 107, Rarity.SPECIAL, mage.cards.d.DragonscaleGeneral.class)); - cards.add(new SetCardInfo("Dread Defiler", 145, Rarity.RARE, mage.cards.d.DreadDefiler.class)); - cards.add(new SetCardInfo("Dreg Mangler", 55, Rarity.UNCOMMON, mage.cards.d.DregMangler.class)); - cards.add(new SetCardInfo("Drogskol Cavalry", 149, Rarity.RARE, mage.cards.d.DrogskolCavalry.class)); - cards.add(new SetCardInfo("Dromoka, the Eternal", 132, Rarity.SPECIAL, mage.cards.d.DromokaTheEternal.class)); - cards.add(new SetCardInfo("Drowner of Hope", 137, Rarity.SPECIAL, mage.cards.d.DrownerOfHope.class)); - cards.add(new SetCardInfo("Duress", 84, Rarity.COMMON, mage.cards.d.Duress.class)); - cards.add(new SetCardInfo("Dwynen, Gilt-Leaf Daen", 125, Rarity.SPECIAL, mage.cards.d.DwynenGiltLeafDaen.class)); - cards.add(new SetCardInfo("Eidolon of Blossoms", 85, Rarity.RARE, mage.cards.e.EidolonOfBlossoms.class)); - cards.add(new SetCardInfo("Electrolyze", 42, Rarity.UNCOMMON, mage.cards.e.Electrolyze.class)); - cards.add(new SetCardInfo("Elusive Tormentor", 154, Rarity.RARE, mage.cards.e.ElusiveTormentor.class)); - cards.add(new SetCardInfo("Emrakul, the Aeons Torn", 163, Rarity.MYTHIC, mage.cards.e.EmrakulTheAeonsTorn.class)); - cards.add(new SetCardInfo("Evolving Wilds", 121, Rarity.COMMON, mage.cards.e.EvolvingWilds.class)); - cards.add(new SetCardInfo("Faithless Looting", 39, Rarity.COMMON, mage.cards.f.FaithlessLooting.class)); - cards.add(new SetCardInfo("Fated Conflagration", 79, Rarity.RARE, mage.cards.f.FatedConflagration.class)); - cards.add(new SetCardInfo("Feast of Blood", 43, Rarity.UNCOMMON, mage.cards.f.FeastOfBlood.class)); - cards.add(new SetCardInfo("Fireball", 4, Rarity.COMMON, mage.cards.f.Fireball.class)); - cards.add(new SetCardInfo("Flameblade Angel", 152, Rarity.RARE, mage.cards.f.FlamebladeAngel.class)); - cards.add(new SetCardInfo("Flamerush Rider", 110, Rarity.SPECIAL, mage.cards.f.FlamerushRider.class)); - cards.add(new SetCardInfo("Foe-Razer Regent", 122, Rarity.SPECIAL, mage.cards.f.FoeRazerRegent.class)); - cards.add(new SetCardInfo("Frost Titan", 34, Rarity.MYTHIC, mage.cards.f.FrostTitan.class)); - cards.add(new SetCardInfo("Garruk, Apex Predator", 104, Rarity.MYTHIC, mage.cards.g.GarrukApexPredator.class)); - cards.add(new SetCardInfo("Garruk, Caller of Beasts", 76, Rarity.MYTHIC, mage.cards.g.GarrukCallerOfBeasts.class)); - cards.add(new SetCardInfo("Garruk Wildspeaker", 16, Rarity.RARE, mage.cards.g.GarrukWildspeaker.class)); - cards.add(new SetCardInfo("Gaze of Granite", 81, Rarity.RARE, mage.cards.g.GazeOfGranite.class)); - cards.add(new SetCardInfo("Genesis Hydra", 142, Rarity.SPECIAL, mage.cards.g.GenesisHydra.class)); - cards.add(new SetCardInfo("Giant Badger", 8, Rarity.SPECIAL, mage.cards.g.GiantBadger.class)); - cards.add(new SetCardInfo("Gideon of the Trials", 177, Rarity.MYTHIC, mage.cards.g.GideonOfTheTrials.class)); - cards.add(new SetCardInfo("Gideon, Ally of Zendikar", 172, Rarity.MYTHIC, mage.cards.g.GideonAllyOfZendikar.class)); - cards.add(new SetCardInfo("Gideon, Battle-Forged", 994, Rarity.SPECIAL, mage.cards.g.GideonBattleForged.class)); - cards.add(new SetCardInfo("Gladehart Cavalry", 147, Rarity.RARE, mage.cards.g.GladehartCavalry.class)); - cards.add(new SetCardInfo("Goblin Dark-Dwellers", 148, Rarity.RARE, mage.cards.g.GoblinDarkDwellers.class)); - cards.add(new SetCardInfo("Goblin Rabblemaster", 98, Rarity.RARE, mage.cards.g.GoblinRabblemaster.class)); - cards.add(new SetCardInfo("Gravecrawler", 41, Rarity.RARE, mage.cards.g.Gravecrawler.class)); - cards.add(new SetCardInfo("Grave Titan", 35, Rarity.MYTHIC, mage.cards.g.GraveTitan.class)); - cards.add(new SetCardInfo("Guul Draz Assassin", 26, Rarity.RARE, mage.cards.g.GuulDrazAssassin.class)); - cards.add(new SetCardInfo("Hamletback Goliath", 71, Rarity.RARE, mage.cards.h.HamletbackGoliath.class)); - cards.add(new SetCardInfo("Harbinger of the Hunt", 116, Rarity.SPECIAL, mage.cards.h.HarbingerOfTheHunt.class)); - cards.add(new SetCardInfo("Hero of Goma Fada", 136, Rarity.SPECIAL, mage.cards.h.HeroOfGomaFada.class)); - cards.add(new SetCardInfo("High Tide", 80, Rarity.COMMON, mage.cards.h.HighTide.class)); - cards.add(new SetCardInfo("Hixus, Prison Warden", 126, Rarity.SPECIAL, mage.cards.h.HixusPrisonWarden.class)); - cards.add(new SetCardInfo("Honored Hierarch", 129, Rarity.SPECIAL, mage.cards.h.HonoredHierarch.class)); - cards.add(new SetCardInfo("Honor of the Pure", 20, Rarity.RARE, mage.cards.h.HonorOfThePure.class)); - cards.add(new SetCardInfo("Inferno Titan", 36, Rarity.MYTHIC, mage.cards.i.InfernoTitan.class)); - cards.add(new SetCardInfo("Insidious Mist", 154, Rarity.RARE, mage.cards.i.InsidiousMist.class)); - cards.add(new SetCardInfo("Ivorytusk Fortress", 95, Rarity.RARE, mage.cards.i.IvorytuskFortress.class)); - cards.add(new SetCardInfo("Jace Beleren", 15, Rarity.RARE, mage.cards.j.JaceBeleren.class)); - cards.add(new SetCardInfo("Jace, Memory Adept", 73, Rarity.MYTHIC, mage.cards.j.JaceMemoryAdept.class)); - cards.add(new SetCardInfo("Jace, Telepath Unbound", 995, Rarity.SPECIAL, mage.cards.j.JaceTelepathUnbound.class)); - cards.add(new SetCardInfo("Jace, the Living Guildpact", 100, Rarity.MYTHIC, mage.cards.j.JaceTheLivingGuildpact.class)); - cards.add(new SetCardInfo("Jace, Unraveler of Secrets", 173, Rarity.MYTHIC, mage.cards.j.JaceUnravelerOfSecrets.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Jace, Unraveler of Secrets", 178, Rarity.MYTHIC, mage.cards.j.JaceUnravelerOfSecrets.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Jace, Vryn's Prodigy", 995, Rarity.SPECIAL, mage.cards.j.JaceVrynsProdigy.class)); - cards.add(new SetCardInfo("Jaya Ballard, Task Mage", 18, Rarity.RARE, mage.cards.j.JayaBallardTaskMage.class)); - cards.add(new SetCardInfo("Karametra's Acolyte", 78, Rarity.UNCOMMON, mage.cards.k.KarametrasAcolyte.class)); - cards.add(new SetCardInfo("Knight Exemplar", 46, Rarity.RARE, mage.cards.k.KnightExemplar.class)); - cards.add(new SetCardInfo("Kor Skyfisher", 25, Rarity.COMMON, mage.cards.k.KorSkyfisher.class)); - cards.add(new SetCardInfo("Kothophed, Soul Hoarder", 127, Rarity.SPECIAL, mage.cards.k.KothophedSoulHoarder.class)); - cards.add(new SetCardInfo("Kytheon, Hero of Akros", 994, Rarity.SPECIAL, mage.cards.k.KytheonHeroOfAkros.class)); - cards.add(new SetCardInfo("Lightning Hounds", 10, Rarity.SPECIAL, mage.cards.l.LightningHounds.class)); - cards.add(new SetCardInfo("Liliana of the Dark Realms", 74, Rarity.MYTHIC, mage.cards.l.LilianaOfTheDarkRealms.class)); - cards.add(new SetCardInfo("Liliana, Death's Majesty", 179, Rarity.MYTHIC, mage.cards.l.LilianaDeathsMajesty.class)); - cards.add(new SetCardInfo("Liliana, Defiant Necromancer", 996, Rarity.SPECIAL, mage.cards.l.LilianaDefiantNecromancer.class)); - cards.add(new SetCardInfo("Liliana, the Last Hope", 174, Rarity.MYTHIC, mage.cards.l.LilianaTheLastHope.class)); - cards.add(new SetCardInfo("Liliana Vess", 30, Rarity.RARE, mage.cards.l.LilianaVess.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Liliana Vess", 101, Rarity.MYTHIC, mage.cards.l.LilianaVess.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Magister of Worth", 86, Rarity.SPECIAL, mage.cards.m.MagisterOfWorth.class)); - cards.add(new SetCardInfo("Mana Crypt", 6, Rarity.RARE, mage.cards.m.ManaCrypt.class)); - cards.add(new SetCardInfo("Markov Dreadknight", 151, Rarity.RARE, mage.cards.m.MarkovDreadknight.class)); - cards.add(new SetCardInfo("Memoricide", 29, Rarity.RARE, mage.cards.m.Memoricide.class)); - cards.add(new SetCardInfo("Merfolk Mesmerist", 45, Rarity.COMMON, mage.cards.m.MerfolkMesmerist.class)); - cards.add(new SetCardInfo("Mirran Crusader", 32, Rarity.RARE, mage.cards.m.MirranCrusader.class)); - cards.add(new SetCardInfo("Munda's Vanguard", 143, Rarity.RARE, mage.cards.m.MundasVanguard.class)); - cards.add(new SetCardInfo("Nalathni Dragon", 3, Rarity.SPECIAL, mage.cards.n.NalathniDragon.class)); - cards.add(new SetCardInfo("Necromaster Dragon", 114, Rarity.SPECIAL, mage.cards.n.NecromasterDragon.class)); - cards.add(new SetCardInfo("Nephalia Moondrakes", 150, Rarity.RARE, mage.cards.n.NephaliaMoondrakes.class)); - cards.add(new SetCardInfo("Niblis of Frost", 158, Rarity.RARE, mage.cards.n.NiblisOfFrost.class)); - cards.add(new SetCardInfo("Nicol Bolas, God-Pharaoh", 181, Rarity.MYTHIC, mage.cards.n.NicolBolasGodPharaoh.class)); - cards.add(new SetCardInfo("Nightveil Specter", 61, Rarity.RARE, mage.cards.n.NightveilSpecter.class)); - cards.add(new SetCardInfo("Nissa Revane", 27, Rarity.MYTHIC, mage.cards.n.NissaRevane.class)); - cards.add(new SetCardInfo("Nissa, Sage Animist", 998, Rarity.SPECIAL, mage.cards.n.NissaSageAnimist.class)); - cards.add(new SetCardInfo("Nissa, Steward of Elements", 182, Rarity.MYTHIC, mage.cards.n.NissaStewardOfElements.class)); - cards.add(new SetCardInfo("Nissa, Vastwood Seer", 998, Rarity.SPECIAL, mage.cards.n.NissaVastwoodSeer.class)); - cards.add(new SetCardInfo("Nissa, Voice of Zendikar", 176, Rarity.MYTHIC, mage.cards.n.NissaVoiceOfZendikar.class)); - cards.add(new SetCardInfo("Nissa, Worldwaker", 103, Rarity.MYTHIC, mage.cards.n.NissaWorldwaker.class)); - cards.add(new SetCardInfo("Noosegraf Mob", 159, Rarity.RARE, mage.cards.n.NoosegrafMob.class)); - cards.add(new SetCardInfo("Ogre Arsonist", 63, Rarity.SPECIAL, mage.cards.o.OgreArsonist.class)); - cards.add(new SetCardInfo("Ogre Battledriver", 69, Rarity.RARE, mage.cards.o.OgreBattledriver.class)); - cards.add(new SetCardInfo("Ojutai's Command", 106, Rarity.SPECIAL, mage.cards.o.OjutaisCommand.class)); - cards.add(new SetCardInfo("Oran-Rief Hydra", 140, Rarity.SPECIAL, mage.cards.o.OranRiefHydra.class)); - cards.add(new SetCardInfo("Phyrexian Rager", 14, Rarity.COMMON, mage.cards.p.PhyrexianRager.class)); - cards.add(new SetCardInfo("Pia and Kiran Nalaar", 128, Rarity.SPECIAL, mage.cards.p.PiaAndKiranNalaar.class)); - cards.add(new SetCardInfo("Prairie Stream", 169, Rarity.RARE, mage.cards.p.PrairieStream.class)); - cards.add(new SetCardInfo("Primordial Hydra", 49, Rarity.MYTHIC, mage.cards.p.PrimordialHydra.class)); - cards.add(new SetCardInfo("Pristine Skywise", 113, Rarity.SPECIAL, mage.cards.p.PristineSkywise.class)); - cards.add(new SetCardInfo("Rakshasa Vizier", 96, Rarity.RARE, mage.cards.r.RakshasaVizier.class)); - cards.add(new SetCardInfo("Ratchet Bomb", 67, Rarity.RARE, mage.cards.r.RatchetBomb.class)); - cards.add(new SetCardInfo("Rattleclaw Mystic", 92, Rarity.RARE, mage.cards.r.RattleclawMystic.class)); - cards.add(new SetCardInfo("Ravenous Bloodseeker", 155, Rarity.UNCOMMON, mage.cards.r.RavenousBloodseeker.class)); - cards.add(new SetCardInfo("Relic Seeker", 123, Rarity.RARE, mage.cards.r.RelicSeeker.class)); - cards.add(new SetCardInfo("Render Silent", 66, Rarity.RARE, mage.cards.r.RenderSilent.class)); - cards.add(new SetCardInfo("Retaliator Griffin", 24, Rarity.RARE, mage.cards.r.RetaliatorGriffin.class)); - cards.add(new SetCardInfo("Ruinous Path", 135, Rarity.SPECIAL, mage.cards.r.RuinousPath.class)); - cards.add(new SetCardInfo("Sage-Eye Avengers", 108, Rarity.SPECIAL, mage.cards.s.SageEyeAvengers.class)); - cards.add(new SetCardInfo("Sage of the Inward Eye", 97, Rarity.RARE, mage.cards.s.SageOfTheInwardEye.class)); - cards.add(new SetCardInfo("Sanctifier of Souls", 157, Rarity.RARE, mage.cards.s.SanctifierOfSouls.class)); - cards.add(new SetCardInfo("Sandsteppe Citadel", 134, Rarity.SPECIAL, mage.cards.s.SandsteppeCitadel.class)); - cards.add(new SetCardInfo("Scavenging Ooze", 70, Rarity.RARE, mage.cards.s.ScavengingOoze.class)); - cards.add(new SetCardInfo("Scent of Cinder", 9, Rarity.SPECIAL, mage.cards.s.ScentOfCinder.class)); - cards.add(new SetCardInfo("Scrap Trawler", 164, Rarity.RARE, mage.cards.s.ScrapTrawler.class)); - cards.add(new SetCardInfo("Scythe Leopard", 141, Rarity.SPECIAL, mage.cards.s.ScytheLeopard.class)); - cards.add(new SetCardInfo("Seeker of the Way", 130, Rarity.SPECIAL, mage.cards.s.SeekerOfTheWay.class)); - cards.add(new SetCardInfo("Serra Avatar", 48, Rarity.MYTHIC, mage.cards.s.SerraAvatar.class)); - cards.add(new SetCardInfo("Shamanic Revelation", 105, Rarity.SPECIAL, mage.cards.s.ShamanicRevelation.class)); - cards.add(new SetCardInfo("Siege Rhino", 133, Rarity.SPECIAL, mage.cards.s.SiegeRhino.class)); - cards.add(new SetCardInfo("Silverblade Paladin", 44, Rarity.RARE, mage.cards.s.SilverbladePaladin.class)); - cards.add(new SetCardInfo("Silver Drake", 13, Rarity.SPECIAL, mage.cards.s.SilverDrake.class)); - cards.add(new SetCardInfo("Skyship Stalker", 162, Rarity.RARE, mage.cards.s.SkyshipStalker.class)); - cards.add(new SetCardInfo("Smoldering Marsh", 170, Rarity.RARE, mage.cards.s.SmolderingMarsh.class)); - cards.add(new SetCardInfo("Soul of Ravnica", 87, Rarity.MYTHIC, mage.cards.s.SoulOfRavnica.class)); - cards.add(new SetCardInfo("Soul of Zendikar", 88, Rarity.MYTHIC, mage.cards.s.SoulOfZendikar.class)); - cards.add(new SetCardInfo("Soul Swallower", 153, Rarity.RARE, mage.cards.s.SoulSwallower.class)); - cards.add(new SetCardInfo("Spined Wurm", 11, Rarity.SPECIAL, mage.cards.s.SpinedWurm.class)); - cards.add(new SetCardInfo("Standstill", 57, Rarity.UNCOMMON, mage.cards.s.Standstill.class)); - cards.add(new SetCardInfo("Stealer of Secrets", 89, Rarity.COMMON, mage.cards.s.StealerOfSecrets.class)); - cards.add(new SetCardInfo("Steward of Valeron", 21, Rarity.COMMON, mage.cards.s.StewardOfValeron.class)); - cards.add(new SetCardInfo("Sultai Charm", 117, Rarity.SPECIAL, mage.cards.s.SultaiCharm.class)); - cards.add(new SetCardInfo("Sunblast Angel", 47, Rarity.RARE, mage.cards.s.SunblastAngel.class)); - cards.add(new SetCardInfo("Sunken Hollow", 171, Rarity.RARE, mage.cards.s.SunkenHollow.class)); - cards.add(new SetCardInfo("Supreme Verdict", 56, Rarity.RARE, mage.cards.s.SupremeVerdict.class)); - cards.add(new SetCardInfo("Surgical Extraction", 33, Rarity.RARE, mage.cards.s.SurgicalExtraction.class)); - cards.add(new SetCardInfo("Sylvan Caryatid", 77, Rarity.RARE, mage.cards.s.SylvanCaryatid.class)); - cards.add(new SetCardInfo("Temur War Shaman", 111, Rarity.SPECIAL, mage.cards.t.TemurWarShaman.class)); - cards.add(new SetCardInfo("Terastodon", 52, Rarity.RARE, mage.cards.t.Terastodon.class)); - cards.add(new SetCardInfo("Thalia, Heretic Cathar", 156, Rarity.RARE, mage.cards.t.ThaliaHereticCathar.class)); - cards.add(new SetCardInfo("Treasure Hunt", 38, Rarity.COMMON, mage.cards.t.TreasureHunt.class)); - cards.add(new SetCardInfo("Turnabout", 60, Rarity.UNCOMMON, mage.cards.t.Turnabout.class)); - cards.add(new SetCardInfo("Tyrant of Valakut", 146, Rarity.RARE, mage.cards.t.TyrantOfValakut.class)); - cards.add(new SetCardInfo("Ulvenwald Observer", 161, Rarity.RARE, mage.cards.u.UlvenwaldObserver.class)); - cards.add(new SetCardInfo("Valorous Stance", 131, Rarity.SPECIAL, mage.cards.v.ValorousStance.class)); - cards.add(new SetCardInfo("Vampire Nocturnus", 50, Rarity.MYTHIC, mage.cards.v.VampireNocturnus.class)); - cards.add(new SetCardInfo("Voidmage Husher", 62, Rarity.SPECIAL, mage.cards.v.VoidmageHusher.class)); - cards.add(new SetCardInfo("Warmonger", 12, Rarity.SPECIAL, mage.cards.w.Warmonger.class)); - cards.add(new SetCardInfo("Wash Out", 82, Rarity.UNCOMMON, mage.cards.w.WashOut.class)); - cards.add(new SetCardInfo("Wildfire Eternal", 166, Rarity.RARE, mage.cards.w.WildfireEternal.class)); - cards.add(new SetCardInfo("Windseeker Centaur", 7, Rarity.SPECIAL, mage.cards.w.WindseekerCentaur.class)); - cards.add(new SetCardInfo("Xathrid Necromancer", 91, Rarity.SPECIAL, mage.cards.x.XathridNecromancer.class)); - } -} \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/MirrodinBesiegedPromos.java b/Mage.Sets/src/mage/sets/MirrodinBesiegedPromos.java new file mode 100644 index 00000000000..1ed8c3a1abd --- /dev/null +++ b/Mage.Sets/src/mage/sets/MirrodinBesiegedPromos.java @@ -0,0 +1,30 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/pmbs + */ +public class MirrodinBesiegedPromos extends ExpansionSet { + + private static final MirrodinBesiegedPromos instance = new MirrodinBesiegedPromos(); + + public static MirrodinBesiegedPromos getInstance() { + return instance; + } + + private MirrodinBesiegedPromos() { + super("Mirrodin Besieged Promos", "PMBS", ExpansionSet.buildDate(2011, 2, 3), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Black Sun's Zenith", 39, Rarity.RARE, mage.cards.b.BlackSunsZenith.class)); + cards.add(new SetCardInfo("Glissa, the Traitor", 96, Rarity.MYTHIC, mage.cards.g.GlissaTheTraitor.class)); + cards.add(new SetCardInfo("Hero of Bladehold", 8, Rarity.MYTHIC, mage.cards.h.HeroOfBladehold.class)); + cards.add(new SetCardInfo("Mirran Crusader", "*14", Rarity.RARE, mage.cards.m.MirranCrusader.class)); + cards.add(new SetCardInfo("Thopter Assembly", 140, Rarity.RARE, mage.cards.t.ThopterAssembly.class)); + cards.add(new SetCardInfo("Treasure Mage", 34, Rarity.UNCOMMON, mage.cards.t.TreasureMage.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/MiscellaneousBookPromos.java b/Mage.Sets/src/mage/sets/MiscellaneousBookPromos.java new file mode 100644 index 00000000000..dc84b75d37f --- /dev/null +++ b/Mage.Sets/src/mage/sets/MiscellaneousBookPromos.java @@ -0,0 +1,25 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/pbok + */ +public class MiscellaneousBookPromos extends ExpansionSet { + + private static final MiscellaneousBookPromos instance = new MiscellaneousBookPromos(); + + public static MiscellaneousBookPromos getInstance() { + return instance; + } + + private MiscellaneousBookPromos() { + super("Miscellaneous Book Promos", "PBOK", ExpansionSet.buildDate(2009, 1, 27), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Jace Beleren", 1, Rarity.MYTHIC, mage.cards.j.JaceBeleren.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/ModernEventDeck2014.java b/Mage.Sets/src/mage/sets/ModernEventDeck2014.java new file mode 100644 index 00000000000..0b9082b3d2c --- /dev/null +++ b/Mage.Sets/src/mage/sets/ModernEventDeck2014.java @@ -0,0 +1,50 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/md1 + */ +public class ModernEventDeck2014 extends ExpansionSet { + + private static final ModernEventDeck2014 instance = new ModernEventDeck2014(); + + public static ModernEventDeck2014 getInstance() { + return instance; + } + + private ModernEventDeck2014() { + super("Modern Event Deck 2014", "MD1", ExpansionSet.buildDate(2014, 5, 30), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = true; + + cards.add(new SetCardInfo("Burrenton Forge-Tender", 22, Rarity.UNCOMMON, mage.cards.b.BurrentonForgeTender.class)); + cards.add(new SetCardInfo("Caves of Koilos", 14, Rarity.RARE, mage.cards.c.CavesOfKoilos.class)); + cards.add(new SetCardInfo("City of Brass", 15, Rarity.RARE, mage.cards.c.CityOfBrass.class)); + cards.add(new SetCardInfo("Dismember", 25, Rarity.UNCOMMON, mage.cards.d.Dismember.class)); + cards.add(new SetCardInfo("Duress", 23, Rarity.COMMON, mage.cards.d.Duress.class)); + cards.add(new SetCardInfo("Elspeth, Knight-Errant", 13, Rarity.MYTHIC, mage.cards.e.ElspethKnightErrant.class)); + cards.add(new SetCardInfo("Ghost Quarter", 26, Rarity.UNCOMMON, mage.cards.g.GhostQuarter.class)); + cards.add(new SetCardInfo("Honor of the Pure", 6, Rarity.RARE, mage.cards.h.HonorOfThePure.class)); + cards.add(new SetCardInfo("Inquisition of Kozilek", 4, Rarity.UNCOMMON, mage.cards.i.InquisitionOfKozilek.class)); + cards.add(new SetCardInfo("Intangible Virtue", 7, Rarity.UNCOMMON, mage.cards.i.IntangibleVirtue.class)); + cards.add(new SetCardInfo("Isolated Chapel", 16, Rarity.RARE, mage.cards.i.IsolatedChapel.class)); + cards.add(new SetCardInfo("Kataki, War's Wage", 24, Rarity.RARE, mage.cards.k.KatakiWarsWage.class)); + cards.add(new SetCardInfo("Lingering Souls", 11, Rarity.UNCOMMON, mage.cards.l.LingeringSouls.class)); + cards.add(new SetCardInfo("Path to Exile", 3, Rarity.UNCOMMON, mage.cards.p.PathToExile.class)); + cards.add(new SetCardInfo("Plains", 19, Rarity.LAND, mage.cards.basiclands.Plains.class)); + cards.add(new SetCardInfo("Raise the Alarm", 8, Rarity.COMMON, mage.cards.r.RaiseTheAlarm.class)); + cards.add(new SetCardInfo("Relic of Progenitus", 21, Rarity.UNCOMMON, mage.cards.r.RelicOfProgenitus.class)); + cards.add(new SetCardInfo("Shrine of Loyal Legions", 5, Rarity.UNCOMMON, mage.cards.s.ShrineOfLoyalLegions.class)); + cards.add(new SetCardInfo("Soul Warden", 1, Rarity.COMMON, mage.cards.s.SoulWarden.class)); + cards.add(new SetCardInfo("Spectral Procession", 12, Rarity.UNCOMMON, mage.cards.s.SpectralProcession.class)); + cards.add(new SetCardInfo("Swamp", 20, Rarity.LAND, mage.cards.basiclands.Swamp.class)); + cards.add(new SetCardInfo("Sword of Feast and Famine", 10, Rarity.MYTHIC, mage.cards.s.SwordOfFeastAndFamine.class)); + cards.add(new SetCardInfo("Tidehollow Sculler", 2, Rarity.UNCOMMON, mage.cards.t.TidehollowSculler.class)); + cards.add(new SetCardInfo("Vault of the Archangel", 17, Rarity.RARE, mage.cards.v.VaultOfTheArchangel.class)); + cards.add(new SetCardInfo("Windbrisk Heights", 18, Rarity.RARE, mage.cards.w.WindbriskHeights.class)); + cards.add(new SetCardInfo("Zealous Persecution", 9, Rarity.UNCOMMON, mage.cards.z.ZealousPersecution.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/ModernHorizonsPromos.java b/Mage.Sets/src/mage/sets/ModernHorizonsPromos.java new file mode 100644 index 00000000000..ef251dfad13 --- /dev/null +++ b/Mage.Sets/src/mage/sets/ModernHorizonsPromos.java @@ -0,0 +1,25 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/pmh1 + */ +public class ModernHorizonsPromos extends ExpansionSet { + + private static final ModernHorizonsPromos instance = new ModernHorizonsPromos(); + + public static ModernHorizonsPromos getInstance() { + return instance; + } + + private ModernHorizonsPromos() { + super("Modern Horizons Promos", "PMH1", ExpansionSet.buildDate(2019, 6, 14), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Astral Drift", 3, Rarity.RARE, mage.cards.a.AstralDrift.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/MultiverseGiftBox.java b/Mage.Sets/src/mage/sets/MultiverseGiftBox.java new file mode 100644 index 00000000000..ce8b9956400 --- /dev/null +++ b/Mage.Sets/src/mage/sets/MultiverseGiftBox.java @@ -0,0 +1,34 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/mgb + */ +public class MultiverseGiftBox extends ExpansionSet { + + private static final MultiverseGiftBox instance = new MultiverseGiftBox(); + + public static MultiverseGiftBox getInstance() { + return instance; + } + + private MultiverseGiftBox() { + super("Multiverse Gift Box", "MGB", ExpansionSet.buildDate(1996, 11, 1), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Bull Elephant", 9, Rarity.RARE, mage.cards.b.BullElephant.class)); + cards.add(new SetCardInfo("Dark Privilege", 3, Rarity.RARE, mage.cards.d.DarkPrivilege.class)); + cards.add(new SetCardInfo("King Cheetah", 10, Rarity.RARE, mage.cards.k.KingCheetah.class)); + cards.add(new SetCardInfo("Necrosavant", 4, Rarity.RARE, mage.cards.n.Necrosavant.class)); + cards.add(new SetCardInfo("Ovinomancer", 2, Rarity.RARE, mage.cards.o.Ovinomancer.class)); + cards.add(new SetCardInfo("Peace Talks", 1, Rarity.RARE, mage.cards.p.PeaceTalks.class)); + cards.add(new SetCardInfo("Urborg Mindsucker", 5, Rarity.RARE, mage.cards.u.UrborgMindsucker.class)); + cards.add(new SetCardInfo("Vampirism", 6, Rarity.RARE, mage.cards.v.Vampirism.class)); + cards.add(new SetCardInfo("Viashino Sandstalker", 8, Rarity.RARE, mage.cards.v.ViashinoSandstalker.class)); + cards.add(new SetCardInfo("Wicked Reward", 7, Rarity.RARE, mage.cards.w.WickedReward.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/MythicEdition.java b/Mage.Sets/src/mage/sets/MythicEdition.java index 57740797501..1e2a490c6ca 100644 --- a/Mage.Sets/src/mage/sets/MythicEdition.java +++ b/Mage.Sets/src/mage/sets/MythicEdition.java @@ -16,7 +16,7 @@ public final class MythicEdition extends ExpansionSet { } private MythicEdition() { - super("Mythic Edition", "MEDM", ExpansionSet.buildDate(2018, 10, 5), SetType.SUPPLEMENTAL); // MEDM cause MED uses for master edition + super("Mythic Edition", "MED", ExpansionSet.buildDate(2018, 10, 5), SetType.SUPPLEMENTAL); this.hasBasicLands = false; cards.add(new SetCardInfo("Ajani, Mentor of Heroes", "RA5", Rarity.MYTHIC, mage.cards.a.AjaniMentorOfHeroes.class)); diff --git a/Mage.Sets/src/mage/sets/NationalsPromos.java b/Mage.Sets/src/mage/sets/NationalsPromos.java new file mode 100644 index 00000000000..eb69a7d35be --- /dev/null +++ b/Mage.Sets/src/mage/sets/NationalsPromos.java @@ -0,0 +1,25 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/pnat + */ +public class NationalsPromos extends ExpansionSet { + + private static final NationalsPromos instance = new NationalsPromos(); + + public static NationalsPromos getInstance() { + return instance; + } + + private NationalsPromos() { + super("Nationals Promos", "PNAT", ExpansionSet.buildDate(2018, 1, 25), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Flooded Strand", 2018, Rarity.RARE, mage.cards.f.FloodedStrand.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/NewPhyrexiaPromos.java b/Mage.Sets/src/mage/sets/NewPhyrexiaPromos.java new file mode 100644 index 00000000000..adb3eb70bd2 --- /dev/null +++ b/Mage.Sets/src/mage/sets/NewPhyrexiaPromos.java @@ -0,0 +1,30 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/pnph + */ +public class NewPhyrexiaPromos extends ExpansionSet { + + private static final NewPhyrexiaPromos instance = new NewPhyrexiaPromos(); + + public static NewPhyrexiaPromos getInstance() { + return instance; + } + + private NewPhyrexiaPromos() { + super("New Phyrexia Promos", "PNPH", ExpansionSet.buildDate(2011, 5, 12), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Myr Superion", 146, Rarity.RARE, mage.cards.m.MyrSuperion.class)); + cards.add(new SetCardInfo("Phyrexian Metamorph", 42, Rarity.RARE, mage.cards.p.PhyrexianMetamorph.class)); + cards.add(new SetCardInfo("Priest of Urabrask", 90, Rarity.UNCOMMON, mage.cards.p.PriestOfUrabrask.class)); + cards.add(new SetCardInfo("Pristine Talisman", 151, Rarity.COMMON, mage.cards.p.PristineTalisman.class)); + cards.add(new SetCardInfo("Sheoldred, Whispering One", 73, Rarity.MYTHIC, mage.cards.s.SheoldredWhisperingOne.class)); + cards.add(new SetCardInfo("Surgical Extraction", "*74", Rarity.RARE, mage.cards.s.SurgicalExtraction.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/NinthEdition.java b/Mage.Sets/src/mage/sets/NinthEdition.java index 93759bbb0f3..3d8882d91ac 100644 --- a/Mage.Sets/src/mage/sets/NinthEdition.java +++ b/Mage.Sets/src/mage/sets/NinthEdition.java @@ -21,6 +21,9 @@ public final class NinthEdition extends ExpansionSet { this.numBoosterRare = 1; this.ratioBoosterMythic = 0; + // scryfall combines Ninth Edition and Ninth Edition Box sets in one, but xmage must split it + // reason: remove box's cards from booster? TODO: implement booster ignore settings for cards instead max card number + cards.add(new SetCardInfo("Adarkar Wastes", 317, Rarity.RARE, mage.cards.a.AdarkarWastes.class)); cards.add(new SetCardInfo("Air Elemental", 58, Rarity.UNCOMMON, mage.cards.a.AirElemental.class)); cards.add(new SetCardInfo("Aladdin's Ring", 286, Rarity.RARE, mage.cards.a.AladdinsRing.class)); diff --git a/Mage.Sets/src/mage/sets/OathOfTheGatewatchPromos.java b/Mage.Sets/src/mage/sets/OathOfTheGatewatchPromos.java new file mode 100644 index 00000000000..80a3949badb --- /dev/null +++ b/Mage.Sets/src/mage/sets/OathOfTheGatewatchPromos.java @@ -0,0 +1,87 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/pogw + */ +public class OathOfTheGatewatchPromos extends ExpansionSet { + + private static final OathOfTheGatewatchPromos instance = new OathOfTheGatewatchPromos(); + + public static OathOfTheGatewatchPromos getInstance() { + return instance; + } + + private OathOfTheGatewatchPromos() { + super("Oath of the Gatewatch Promos", "POGW", ExpansionSet.buildDate(2016, 1, 23), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Ayli, Eternal Pilgrim", "151s", Rarity.RARE, mage.cards.a.AyliEternalPilgrim.class)); + cards.add(new SetCardInfo("Bearer of Silence", "67s", Rarity.RARE, mage.cards.b.BearerOfSilence.class)); + cards.add(new SetCardInfo("Call the Gatewatch", "16s", Rarity.RARE, mage.cards.c.CallTheGatewatch.class)); + cards.add(new SetCardInfo("Captain's Claws", "162s", Rarity.RARE, mage.cards.c.CaptainsClaws.class)); + cards.add(new SetCardInfo("Chandra, Flamecaller", "104s", Rarity.MYTHIC, mage.cards.c.ChandraFlamecaller.class)); + cards.add(new SetCardInfo("Corrupted Crossroads", "169s", Rarity.RARE, mage.cards.c.CorruptedCrossroads.class)); + cards.add(new SetCardInfo("Crush of Tentacles", "53s", Rarity.MYTHIC, mage.cards.c.CrushOfTentacles.class)); + cards.add(new SetCardInfo("Deceiver of Form", "1s", Rarity.RARE, mage.cards.d.DeceiverOfForm.class)); + cards.add(new SetCardInfo("Deepfathom Skulker", 43, Rarity.RARE, mage.cards.d.DeepfathomSkulker.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Deepfathom Skulker", "43s", Rarity.RARE, mage.cards.d.DeepfathomSkulker.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Dimensional Infiltrator", "44s", Rarity.RARE, mage.cards.d.DimensionalInfiltrator.class)); + cards.add(new SetCardInfo("Drana's Chosen", "84s", Rarity.RARE, mage.cards.d.DranasChosen.class)); + cards.add(new SetCardInfo("Dread Defiler", 68, Rarity.RARE, mage.cards.d.DreadDefiler.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Dread Defiler", "68s", Rarity.RARE, mage.cards.d.DreadDefiler.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Eldrazi Displacer", "13s", Rarity.RARE, mage.cards.e.EldraziDisplacer.class)); + cards.add(new SetCardInfo("Eldrazi Mimic", "2s", Rarity.RARE, mage.cards.e.EldraziMimic.class)); + cards.add(new SetCardInfo("Eldrazi Obligator", "96s", Rarity.RARE, mage.cards.e.EldraziObligator.class)); + cards.add(new SetCardInfo("Endbringer", 3, Rarity.RARE, mage.cards.e.Endbringer.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Endbringer", "3s", Rarity.RARE, mage.cards.e.Endbringer.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Fall of the Titans", "109s", Rarity.RARE, mage.cards.f.FallOfTheTitans.class)); + cards.add(new SetCardInfo("General Tazri", "19s", Rarity.MYTHIC, mage.cards.g.GeneralTazri.class)); + cards.add(new SetCardInfo("Gladehart Cavalry", 132, Rarity.RARE, mage.cards.g.GladehartCavalry.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Gladehart Cavalry", "132s", Rarity.RARE, mage.cards.g.GladehartCavalry.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Goblin Dark-Dwellers", 110, Rarity.RARE, mage.cards.g.GoblinDarkDwellers.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Goblin Dark-Dwellers", "110s", Rarity.RARE, mage.cards.g.GoblinDarkDwellers.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Hedron Alignment", "57s", Rarity.RARE, mage.cards.h.HedronAlignment.class)); + cards.add(new SetCardInfo("Hissing Quagmire", "171s", Rarity.RARE, mage.cards.h.HissingQuagmire.class)); + cards.add(new SetCardInfo("Immolating Glare", 20, Rarity.UNCOMMON, mage.cards.i.ImmolatingGlare.class)); + cards.add(new SetCardInfo("Inverter of Truth", "72s", Rarity.MYTHIC, mage.cards.i.InverterOfTruth.class)); + cards.add(new SetCardInfo("Jori En, Ruin Diver", 155, Rarity.RARE, mage.cards.j.JoriEnRuinDiver.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Jori En, Ruin Diver", "155s", Rarity.RARE, mage.cards.j.JoriEnRuinDiver.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Kalitas, Traitor of Ghet", "86s", Rarity.MYTHIC, mage.cards.k.KalitasTraitorOfGhet.class)); + cards.add(new SetCardInfo("Kozilek's Return", "98s", Rarity.MYTHIC, mage.cards.k.KozileksReturn.class)); + cards.add(new SetCardInfo("Kozilek, the Great Distortion", "4s", Rarity.MYTHIC, mage.cards.k.KozilekTheGreatDistortion.class)); + cards.add(new SetCardInfo("Linvala, the Preserver", "25s", Rarity.MYTHIC, mage.cards.l.LinvalaThePreserver.class)); + cards.add(new SetCardInfo("Matter Reshaper", "6s", Rarity.RARE, mage.cards.m.MatterReshaper.class)); + cards.add(new SetCardInfo("Mina and Denn, Wildborn", "156s", Rarity.RARE, mage.cards.m.MinaAndDennWildborn.class)); + cards.add(new SetCardInfo("Mirrorpool", "174s", Rarity.MYTHIC, mage.cards.m.Mirrorpool.class)); + cards.add(new SetCardInfo("Munda's Vanguard", 29, Rarity.RARE, mage.cards.m.MundasVanguard.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Munda's Vanguard", "29s", Rarity.RARE, mage.cards.m.MundasVanguard.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Needle Spires", "175s", Rarity.RARE, mage.cards.n.NeedleSpires.class)); + cards.add(new SetCardInfo("Nissa, Voice of Zendikar", "138s", Rarity.MYTHIC, mage.cards.n.NissaVoiceOfZendikar.class)); + cards.add(new SetCardInfo("Oath of Chandra", "113s", Rarity.RARE, mage.cards.o.OathOfChandra.class)); + cards.add(new SetCardInfo("Oath of Gideon", "30s", Rarity.RARE, mage.cards.o.OathOfGideon.class)); + cards.add(new SetCardInfo("Oath of Jace", "60s", Rarity.RARE, mage.cards.o.OathOfJace.class)); + cards.add(new SetCardInfo("Oath of Nissa", "140s", Rarity.RARE, mage.cards.o.OathOfNissa.class)); + cards.add(new SetCardInfo("Overwhelming Denial", "61s", Rarity.RARE, mage.cards.o.OverwhelmingDenial.class)); + cards.add(new SetCardInfo("Reality Smasher", "7s", Rarity.RARE, mage.cards.r.RealitySmasher.class)); + cards.add(new SetCardInfo("Remorseless Punishment", "89s", Rarity.RARE, mage.cards.r.RemorselessPunishment.class)); + cards.add(new SetCardInfo("Ruins of Oran-Rief", "176s", Rarity.RARE, mage.cards.r.RuinsOfOranRief.class)); + cards.add(new SetCardInfo("Sea Gate Wreckage", "177s", Rarity.RARE, mage.cards.s.SeaGateWreckage.class)); + cards.add(new SetCardInfo("Sifter of Skulls", "77s", Rarity.RARE, mage.cards.s.SifterOfSkulls.class)); + cards.add(new SetCardInfo("Sphinx of the Final Word", "63s", Rarity.MYTHIC, mage.cards.s.SphinxOfTheFinalWord.class)); + cards.add(new SetCardInfo("Stone Haven Outfitter", "37s", Rarity.RARE, mage.cards.s.StoneHavenOutfitter.class)); + cards.add(new SetCardInfo("Stoneforge Masterwork", "166s", Rarity.RARE, mage.cards.s.StoneforgeMasterwork.class)); + cards.add(new SetCardInfo("Sylvan Advocate", "144s", Rarity.RARE, mage.cards.s.SylvanAdvocate.class)); + cards.add(new SetCardInfo("Thought-Knot Seer", "9s", Rarity.RARE, mage.cards.t.ThoughtKnotSeer.class)); + cards.add(new SetCardInfo("Tyrant of Valakut", 119, Rarity.RARE, mage.cards.t.TyrantOfValakut.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Tyrant of Valakut", "119s", Rarity.RARE, mage.cards.t.TyrantOfValakut.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Vile Redeemer", "125s", Rarity.RARE, mage.cards.v.VileRedeemer.class)); + cards.add(new SetCardInfo("Wandering Fumarole", "182s", Rarity.RARE, mage.cards.w.WanderingFumarole.class)); + cards.add(new SetCardInfo("World Breaker", "126s", Rarity.MYTHIC, mage.cards.w.WorldBreaker.class)); + cards.add(new SetCardInfo("Zendikar Resurgent", "147s", Rarity.RARE, mage.cards.z.ZendikarResurgent.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/OpenTheHelvault.java b/Mage.Sets/src/mage/sets/OpenTheHelvault.java new file mode 100644 index 00000000000..e6fd211c92f --- /dev/null +++ b/Mage.Sets/src/mage/sets/OpenTheHelvault.java @@ -0,0 +1,29 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/phel + */ +public class OpenTheHelvault extends ExpansionSet { + + private static final OpenTheHelvault instance = new OpenTheHelvault(); + + public static OpenTheHelvault getInstance() { + return instance; + } + + private OpenTheHelvault() { + super("Open the Helvault", "PHEL", ExpansionSet.buildDate(2012, 4, 28), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Avacyn, Angel of Hope", 6, Rarity.MYTHIC, mage.cards.a.AvacynAngelOfHope.class)); + cards.add(new SetCardInfo("Bruna, Light of Alabaster", 208, Rarity.MYTHIC, mage.cards.b.BrunaLightOfAlabaster.class)); + cards.add(new SetCardInfo("Gisela, Blade of Goldnight", 209, Rarity.MYTHIC, mage.cards.g.GiselaBladeOfGoldnight.class)); + cards.add(new SetCardInfo("Griselbrand", 106, Rarity.MYTHIC, mage.cards.g.Griselbrand.class)); + cards.add(new SetCardInfo("Sigarda, Host of Herons", 210, Rarity.MYTHIC, mage.cards.s.SigardaHostOfHerons.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/Planeshift.java b/Mage.Sets/src/mage/sets/Planeshift.java index 206dd194b31..2ae0b873728 100644 --- a/Mage.Sets/src/mage/sets/Planeshift.java +++ b/Mage.Sets/src/mage/sets/Planeshift.java @@ -60,8 +60,8 @@ public final class Planeshift extends ExpansionSet { cards.add(new SetCardInfo("Dromar's Charm", 105, Rarity.UNCOMMON, mage.cards.d.DromarsCharm.class)); cards.add(new SetCardInfo("Eladamri's Call", 106, Rarity.RARE, mage.cards.e.EladamrisCall.class)); cards.add(new SetCardInfo("Ertai's Trickery", 24, Rarity.UNCOMMON, mage.cards.e.ErtaisTrickery.class)); - cards.add(new SetCardInfo("Ertai, the Corrupted", "107a", Rarity.RARE, mage.cards.e.ErtaiTheCorrupted.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Ertai, the Corrupted", "107b", Rarity.RARE, mage.cards.e.ErtaiTheCorrupted.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Ertai, the Corrupted", 107, Rarity.RARE, mage.cards.e.ErtaiTheCorrupted.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Ertai, the Corrupted", "107*", Rarity.RARE, mage.cards.e.ErtaiTheCorrupted.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Escape Routes", 25, Rarity.COMMON, mage.cards.e.EscapeRoutes.class)); cards.add(new SetCardInfo("Exotic Disease", 43, Rarity.UNCOMMON, mage.cards.e.ExoticDisease.class)); cards.add(new SetCardInfo("Falling Timber", 79, Rarity.COMMON, mage.cards.f.FallingTimber.class)); @@ -141,8 +141,8 @@ public final class Planeshift extends ExpansionSet { cards.add(new SetCardInfo("Singe", 71, Rarity.COMMON, mage.cards.s.Singe.class)); cards.add(new SetCardInfo("Sinister Strength", 54, Rarity.COMMON, mage.cards.s.SinisterStrength.class)); cards.add(new SetCardInfo("Sisay's Ingenuity", 33, Rarity.COMMON, mage.cards.s.SisaysIngenuity.class)); - cards.add(new SetCardInfo("Skyship Weatherlight", "133a", Rarity.RARE, mage.cards.s.SkyshipWeatherlight.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Skyship Weatherlight", "133b", Rarity.RARE, mage.cards.s.SkyshipWeatherlight.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Skyship Weatherlight", 133, Rarity.RARE, mage.cards.s.SkyshipWeatherlight.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Skyship Weatherlight", "133*", Rarity.RARE, mage.cards.s.SkyshipWeatherlight.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Skyshroud Blessing", 92, Rarity.UNCOMMON, mage.cards.s.SkyshroudBlessing.class)); cards.add(new SetCardInfo("Slay", 55, Rarity.UNCOMMON, mage.cards.s.Slay.class)); cards.add(new SetCardInfo("Sleeping Potion", 34, Rarity.COMMON, mage.cards.s.SleepingPotion.class)); @@ -159,8 +159,8 @@ public final class Planeshift extends ExpansionSet { cards.add(new SetCardInfo("Sunscape Battlemage", 16, Rarity.UNCOMMON, mage.cards.s.SunscapeBattlemage.class)); cards.add(new SetCardInfo("Sunscape Familiar", 17, Rarity.COMMON, mage.cards.s.SunscapeFamiliar.class)); cards.add(new SetCardInfo("Surprise Deployment", 18, Rarity.UNCOMMON, mage.cards.s.SurpriseDeployment.class)); - cards.add(new SetCardInfo("Tahngarth, Talruum Hero", "74a", Rarity.RARE, mage.cards.t.TahngarthTalruumHero.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Tahngarth, Talruum Hero", "74b", Rarity.RARE, mage.cards.t.TahngarthTalruumHero.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Tahngarth, Talruum Hero", 74, Rarity.RARE, mage.cards.t.TahngarthTalruumHero.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Tahngarth, Talruum Hero", "74*", Rarity.RARE, mage.cards.t.TahngarthTalruumHero.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Terminal Moraine", 142, Rarity.UNCOMMON, mage.cards.t.TerminalMoraine.class)); cards.add(new SetCardInfo("Terminate", 128, Rarity.COMMON, mage.cards.t.Terminate.class)); cards.add(new SetCardInfo("Thornscape Battlemage", 94, Rarity.UNCOMMON, mage.cards.t.ThornscapeBattlemage.class)); diff --git a/Mage.Sets/src/mage/sets/Portal.java b/Mage.Sets/src/mage/sets/Portal.java index b55822aa539..17dffa17c17 100644 --- a/Mage.Sets/src/mage/sets/Portal.java +++ b/Mage.Sets/src/mage/sets/Portal.java @@ -29,7 +29,7 @@ public final class Portal extends ExpansionSet { cards.add(new SetCardInfo("Alabaster Dragon", 1, Rarity.RARE, mage.cards.a.AlabasterDragon.class)); cards.add(new SetCardInfo("Alluring Scent", 157, Rarity.RARE, mage.cards.a.AlluringScent.class)); - cards.add(new SetCardInfo("Anaconda", "158a", Rarity.UNCOMMON, mage.cards.a.Anaconda.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Anaconda", 158, Rarity.UNCOMMON, mage.cards.a.Anaconda.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Anaconda", "158b", Rarity.UNCOMMON, mage.cards.a.Anaconda.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Ancestral Memories", 40, Rarity.RARE, mage.cards.a.AncestralMemories.class)); cards.add(new SetCardInfo("Angelic Blessing", 2, Rarity.COMMON, mage.cards.a.AngelicBlessing.class)); @@ -42,7 +42,7 @@ public final class Portal extends ExpansionSet { cards.add(new SetCardInfo("Balance of Power", 41, Rarity.RARE, mage.cards.b.BalanceOfPower.class)); cards.add(new SetCardInfo("Baleful Stare", 42, Rarity.UNCOMMON, mage.cards.b.BalefulStare.class)); cards.add(new SetCardInfo("Bee Sting", 159, Rarity.UNCOMMON, mage.cards.b.BeeSting.class)); - cards.add(new SetCardInfo("Blaze", "118a", Rarity.UNCOMMON, mage.cards.b.Blaze.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Blaze", 118, Rarity.UNCOMMON, mage.cards.b.Blaze.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Blaze", "118b", Rarity.UNCOMMON, mage.cards.b.Blaze.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Blessed Reversal", 7, Rarity.RARE, mage.cards.b.BlessedReversal.class)); cards.add(new SetCardInfo("Blinding Light", 8, Rarity.RARE, mage.cards.b.BlindingLight.class)); @@ -82,7 +82,7 @@ public final class Portal extends ExpansionSet { cards.add(new SetCardInfo("Dry Spell", 90, Rarity.UNCOMMON, mage.cards.d.DrySpell.class)); cards.add(new SetCardInfo("Earthquake", 124, Rarity.RARE, mage.cards.e.Earthquake.class)); cards.add(new SetCardInfo("Ebon Dragon", 91, Rarity.RARE, mage.cards.e.EbonDragon.class)); - cards.add(new SetCardInfo("Elite Cat Warrior", "163a", Rarity.COMMON, mage.cards.e.EliteCatWarrior.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Elite Cat Warrior", 163, Rarity.COMMON, mage.cards.e.EliteCatWarrior.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Elite Cat Warrior", "163b", Rarity.COMMON, mage.cards.e.EliteCatWarrior.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Elven Cache", 164, Rarity.COMMON, mage.cards.e.ElvenCache.class)); cards.add(new SetCardInfo("Elvish Ranger", 165, Rarity.COMMON, mage.cards.e.ElvishRanger.class)); @@ -112,7 +112,7 @@ public final class Portal extends ExpansionSet { cards.add(new SetCardInfo("Gorilla Warrior", 168, Rarity.COMMON, mage.cards.g.GorillaWarrior.class)); cards.add(new SetCardInfo("Gravedigger", 95, Rarity.UNCOMMON, mage.cards.g.Gravedigger.class)); cards.add(new SetCardInfo("Grizzly Bears", 169, Rarity.COMMON, mage.cards.g.GrizzlyBears.class)); - cards.add(new SetCardInfo("Hand of Death", "96a", Rarity.COMMON, mage.cards.h.HandOfDeath.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Hand of Death", 96, Rarity.COMMON, mage.cards.h.HandOfDeath.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Hand of Death", "96b", Rarity.COMMON, mage.cards.h.HandOfDeath.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Harsh Justice", 18, Rarity.RARE, mage.cards.h.HarshJustice.class)); cards.add(new SetCardInfo("Highland Giant", 132, Rarity.COMMON, mage.cards.h.HighlandGiant.class)); @@ -142,7 +142,7 @@ public final class Portal extends ExpansionSet { cards.add(new SetCardInfo("Mind Rot", 101, Rarity.COMMON, mage.cards.m.MindRot.class)); cards.add(new SetCardInfo("Minotaur Warrior", 140, Rarity.COMMON, mage.cards.m.MinotaurWarrior.class)); cards.add(new SetCardInfo("Mobilize", 172, Rarity.COMMON, mage.cards.m.Mobilize.class)); - cards.add(new SetCardInfo("Monstrous Growth", "173a", Rarity.COMMON, mage.cards.m.MonstrousGrowth.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Monstrous Growth", 173, Rarity.COMMON, mage.cards.m.MonstrousGrowth.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Monstrous Growth", "173b", Rarity.COMMON, mage.cards.m.MonstrousGrowth.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Moon Sprite", 174, Rarity.UNCOMMON, mage.cards.m.MoonSprite.class)); cards.add(new SetCardInfo("Mountain Goat", 141, Rarity.UNCOMMON, mage.cards.m.MountainGoat.class)); @@ -176,7 +176,7 @@ public final class Portal extends ExpansionSet { cards.add(new SetCardInfo("Pyroclasm", 143, Rarity.RARE, mage.cards.p.Pyroclasm.class)); cards.add(new SetCardInfo("Python", 105, Rarity.COMMON, mage.cards.p.Python.class)); cards.add(new SetCardInfo("Raging Cougar", 144, Rarity.COMMON, mage.cards.r.RagingCougar.class)); - cards.add(new SetCardInfo("Raging Goblin", "145a", Rarity.COMMON, mage.cards.r.RagingGoblin.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Raging Goblin", 145, Rarity.COMMON, mage.cards.r.RagingGoblin.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Raging Goblin", "145b", Rarity.COMMON, mage.cards.r.RagingGoblin.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Raging Minotaur", 146, Rarity.COMMON, mage.cards.r.RagingMinotaur.class)); cards.add(new SetCardInfo("Rain of Salt", 147, Rarity.UNCOMMON, mage.cards.r.RainOfSalt.class)); @@ -238,7 +238,7 @@ public final class Portal extends ExpansionSet { cards.add(new SetCardInfo("Volcanic Hammer", 154, Rarity.COMMON, mage.cards.v.VolcanicHammer.class)); cards.add(new SetCardInfo("Wall of Granite", 155, Rarity.UNCOMMON, mage.cards.w.WallOfGranite.class)); cards.add(new SetCardInfo("Wall of Swords", 37, Rarity.UNCOMMON, mage.cards.w.WallOfSwords.class)); - cards.add(new SetCardInfo("Warrior's Charge", "38a", Rarity.COMMON, mage.cards.w.WarriorsCharge.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Warrior's Charge", 38, Rarity.COMMON, mage.cards.w.WarriorsCharge.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Warrior's Charge", "38b", Rarity.COMMON, mage.cards.w.WarriorsCharge.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Whiptail Wurm", 192, Rarity.UNCOMMON, mage.cards.w.WhiptailWurm.class)); cards.add(new SetCardInfo("Wicked Pact", 117, Rarity.RARE, mage.cards.w.WickedPact.class)); diff --git a/Mage.Sets/src/mage/sets/PortalDemoGame.java b/Mage.Sets/src/mage/sets/PortalDemoGame.java new file mode 100644 index 00000000000..82709973dea --- /dev/null +++ b/Mage.Sets/src/mage/sets/PortalDemoGame.java @@ -0,0 +1,30 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/ppod + */ +public class PortalDemoGame extends ExpansionSet { + + private static final PortalDemoGame instance = new PortalDemoGame(); + + public static PortalDemoGame getInstance() { + return instance; + } + + private PortalDemoGame() { + super("Portal Demo Game", "PPOD", ExpansionSet.buildDate(1997, 5, 1), SetType.SUPPLEMENTAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Armored Pegasus", 1, Rarity.COMMON, mage.cards.a.ArmoredPegasus.class)); + cards.add(new SetCardInfo("Bull Hippo", 2, Rarity.UNCOMMON, mage.cards.b.BullHippo.class)); + cards.add(new SetCardInfo("Cloud Pirates", 3, Rarity.COMMON, mage.cards.c.CloudPirates.class)); + cards.add(new SetCardInfo("Feral Shadow", 4, Rarity.COMMON, mage.cards.f.FeralShadow.class)); + cards.add(new SetCardInfo("Snapping Drake", 5, Rarity.COMMON, mage.cards.s.SnappingDrake.class)); + cards.add(new SetCardInfo("Storm Crow", 6, Rarity.COMMON, mage.cards.s.StormCrow.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/PrereleaseEvents.java b/Mage.Sets/src/mage/sets/PrereleaseEvents.java index 7cd1605e9a8..f3c647779bb 100644 --- a/Mage.Sets/src/mage/sets/PrereleaseEvents.java +++ b/Mage.Sets/src/mage/sets/PrereleaseEvents.java @@ -13,314 +13,50 @@ public final class PrereleaseEvents extends ExpansionSet { } private PrereleaseEvents() { - super("Prerelease Events", "PTC", ExpansionSet.buildDate(1990, 1, 1), SetType.PROMOTIONAL); + super("Prerelease Events", "PPRE", ExpansionSet.buildDate(1990, 1, 1), SetType.PROMOTIONAL); this.hasBoosters = false; - this.hasBasicLands = true; + this.hasBasicLands = false; - cards.add(new SetCardInfo("Abbot of Keral Keep", 198, Rarity.RARE, mage.cards.a.AbbotOfKeralKeep.class)); - cards.add(new SetCardInfo("Abhorrent Overlord", 70, Rarity.SPECIAL, mage.cards.a.AbhorrentOverlord.class)); - cards.add(new SetCardInfo("Abzan Ascendancy", 88, Rarity.SPECIAL, mage.cards.a.AbzanAscendancy.class)); - cards.add(new SetCardInfo("Ajani Vengeant", 38, Rarity.SPECIAL, mage.cards.a.AjaniVengeant.class)); - cards.add(new SetCardInfo("Akoum Firebird", 238, Rarity.MYTHIC, mage.cards.a.AkoumFirebird.class)); - cards.add(new SetCardInfo("Akoum Hellkite", 239, Rarity.RARE, mage.cards.a.AkoumHellkite.class)); - cards.add(new SetCardInfo("Alesha, Who Smiles at Death", 128, Rarity.RARE, mage.cards.a.AleshaWhoSmilesAtDeath.class)); - cards.add(new SetCardInfo("Alhammarret, High Arbiter", 199, Rarity.RARE, mage.cards.a.AlhammarretHighArbiter.class)); - cards.add(new SetCardInfo("Aligned Hedron Network", 240, Rarity.RARE, mage.cards.a.AlignedHedronNetwork.class)); - cards.add(new SetCardInfo("Allosaurus Rider", 30, Rarity.SPECIAL, mage.cards.a.AllosaurusRider.class)); - cards.add(new SetCardInfo("Ally Encampment", 241, Rarity.RARE, mage.cards.a.AllyEncampment.class)); - cards.add(new SetCardInfo("Anafenza, Kin-Tree Spirit", 158, Rarity.RARE, mage.cards.a.AnafenzaKinTreeSpirit.class)); - cards.add(new SetCardInfo("Anafenza, the Foremost", 89, Rarity.SPECIAL, mage.cards.a.AnafenzaTheForemost.class)); - cards.add(new SetCardInfo("Angelic Captain", 242, Rarity.RARE, mage.cards.a.AngelicCaptain.class)); - cards.add(new SetCardInfo("Ankle Shanker", 90, Rarity.SPECIAL, mage.cards.a.AnkleShanker.class)); - cards.add(new SetCardInfo("Anthousa, Setessan Hero", 72, Rarity.SPECIAL, mage.cards.a.AnthousaSetessanHero.class)); - cards.add(new SetCardInfo("Arashin Foremost", 159, Rarity.RARE, mage.cards.a.ArashinForemost.class)); - cards.add(new SetCardInfo("Arashin Sovereign", 160, Rarity.RARE, mage.cards.a.ArashinSovereign.class)); - cards.add(new SetCardInfo("Arbiter of the Ideal", 74, Rarity.SPECIAL, mage.cards.a.ArbiterOfTheIdeal.class)); - cards.add(new SetCardInfo("Arcbond", 129, Rarity.RARE, mage.cards.a.Arcbond.class)); - cards.add(new SetCardInfo("Archdemon of Greed", "52b", Rarity.SPECIAL, mage.cards.a.ArchdemonOfGreed.class)); - cards.add(new SetCardInfo("Archfiend of Depravity", 130, Rarity.RARE, mage.cards.a.ArchfiendOfDepravity.class)); - cards.add(new SetCardInfo("Archon of the Triumvirate", 55, Rarity.SPECIAL, mage.cards.a.ArchonOfTheTriumvirate.class)); - cards.add(new SetCardInfo("Atarka's Command", 161, Rarity.RARE, mage.cards.a.AtarkasCommand.class)); - cards.add(new SetCardInfo("Atarka, World Render", 131, Rarity.RARE, mage.cards.a.AtarkaWorldRender.class)); - cards.add(new SetCardInfo("Avalanche Tusker", 91, Rarity.SPECIAL, mage.cards.a.AvalancheTusker.class)); - cards.add(new SetCardInfo("Avatar of Discord", 29, Rarity.SPECIAL, mage.cards.a.AvatarOfDiscord.class)); - cards.add(new SetCardInfo("Avatar of Hope", 11, Rarity.SPECIAL, mage.cards.a.AvatarOfHope.class)); - cards.add(new SetCardInfo("Avatar of the Resolute", 162, Rarity.RARE, mage.cards.a.AvatarOfTheResolute.class)); - cards.add(new SetCardInfo("Barrage Tyrant", 243, Rarity.RARE, mage.cards.b.BarrageTyrant.class)); - cards.add(new SetCardInfo("Beastcaller Savant", 244, Rarity.RARE, mage.cards.b.BeastcallerSavant.class)); - cards.add(new SetCardInfo("Beast of Burden", 5, Rarity.SPECIAL, mage.cards.b.BeastOfBurden.class)); - cards.add(new SetCardInfo("Blessed Reincarnation", 163, Rarity.RARE, mage.cards.b.BlessedReincarnation.class)); - cards.add(new SetCardInfo("Blight Herder", 245, Rarity.RARE, mage.cards.b.BlightHerder.class)); - cards.add(new SetCardInfo("Blood-Chin Fanatic", 164, Rarity.RARE, mage.cards.b.BloodChinFanatic.class)); - cards.add(new SetCardInfo("Bloodlord of Vaasgoth", 50, Rarity.SPECIAL, mage.cards.b.BloodlordOfVaasgoth.class)); - cards.add(new SetCardInfo("Bloodsoaked Champion", 92, Rarity.SPECIAL, mage.cards.b.BloodsoakedChampion.class)); - cards.add(new SetCardInfo("Boltwing Marauder", 165, Rarity.RARE, mage.cards.b.BoltwingMarauder.class)); - cards.add(new SetCardInfo("Bring to Light", 246, Rarity.RARE, mage.cards.b.BringToLight.class)); - cards.add(new SetCardInfo("Brood Butcher", 247, Rarity.RARE, mage.cards.b.BroodButcher.class)); - cards.add(new SetCardInfo("Brutal Expulsion", 248, Rarity.RARE, mage.cards.b.BrutalExpulsion.class)); - cards.add(new SetCardInfo("Brutal Hordechief", 132, Rarity.MYTHIC, mage.cards.b.BrutalHordechief.class)); - cards.add(new SetCardInfo("Butcher of the Horde", 93, Rarity.SPECIAL, mage.cards.b.ButcherOfTheHorde.class)); - cards.add(new SetCardInfo("Canopy Vista", 249, Rarity.RARE, mage.cards.c.CanopyVista.class)); - cards.add(new SetCardInfo("Carnival Hellsteed", 57, Rarity.SPECIAL, mage.cards.c.CarnivalHellsteed.class)); - cards.add(new SetCardInfo("Celestial Archon", 68, Rarity.SPECIAL, mage.cards.c.CelestialArchon.class)); - cards.add(new SetCardInfo("Chandra, Fire of Kaladesh", 201, Rarity.MYTHIC, mage.cards.c.ChandraFireOfKaladesh.class)); - cards.add(new SetCardInfo("Chandra, Roaring Flame", 201, Rarity.MYTHIC, mage.cards.c.ChandraRoaringFlame.class)); - cards.add(new SetCardInfo("Chandra's Ignition", 200, Rarity.RARE, mage.cards.c.ChandrasIgnition.class)); - cards.add(new SetCardInfo("Cinder Glade", 250, Rarity.RARE, mage.cards.c.CinderGlade.class)); - cards.add(new SetCardInfo("Comet Storm", 43, Rarity.SPECIAL, mage.cards.c.CometStorm.class)); - cards.add(new SetCardInfo("Conduit of Ruin", 251, Rarity.RARE, mage.cards.c.ConduitOfRuin.class)); - cards.add(new SetCardInfo("Consuming Aberration", 60, Rarity.SPECIAL, mage.cards.c.ConsumingAberration.class)); - cards.add(new SetCardInfo("Corpsejack Menace", 58, Rarity.SPECIAL, mage.cards.c.CorpsejackMenace.class)); - cards.add(new SetCardInfo("Crackling Doom", 94, Rarity.SPECIAL, mage.cards.c.CracklingDoom.class)); - cards.add(new SetCardInfo("Crater Elemental", 166, Rarity.RARE, mage.cards.c.CraterElemental.class)); - cards.add(new SetCardInfo("Crater's Claws", 95, Rarity.SPECIAL, mage.cards.c.CratersClaws.class)); - cards.add(new SetCardInfo("Daghatar the Adamant", 133, Rarity.RARE, mage.cards.d.DaghatarTheAdamant.class)); - cards.add(new SetCardInfo("Damnable Pact", 167, Rarity.RARE, mage.cards.d.DamnablePact.class)); - cards.add(new SetCardInfo("Dark Petition", 202, Rarity.RARE, mage.cards.d.DarkPetition.class)); - cards.add(new SetCardInfo("Dawnbringer Charioteers", 78, Rarity.SPECIAL, mage.cards.d.DawnbringerCharioteers.class)); - cards.add(new SetCardInfo("Deathbringer Regent", 168, Rarity.RARE, mage.cards.d.DeathbringerRegent.class)); - cards.add(new SetCardInfo("Defiant Bloodlord", 252, Rarity.RARE, mage.cards.d.DefiantBloodlord.class)); - cards.add(new SetCardInfo("Deflecting Palm", 96, Rarity.SPECIAL, mage.cards.d.DeflectingPalm.class)); - cards.add(new SetCardInfo("Demigod of Revenge", 36, Rarity.SPECIAL, mage.cards.d.DemigodOfRevenge.class)); - cards.add(new SetCardInfo("Den Protector", 169, Rarity.RARE, mage.cards.d.DenProtector.class)); - cards.add(new SetCardInfo("Desolation Twin", 253, Rarity.RARE, mage.cards.d.DesolationTwin.class)); - cards.add(new SetCardInfo("Despoiler of Souls", 203, Rarity.RARE, mage.cards.d.DespoilerOfSouls.class)); - cards.add(new SetCardInfo("Dig Through Time", 97, Rarity.SPECIAL, mage.cards.d.DigThroughTime.class)); - cards.add(new SetCardInfo("Dirtcowl Wurm", 1, Rarity.SPECIAL, mage.cards.d.DirtcowlWurm.class)); - cards.add(new SetCardInfo("Djinn Illuminatus", 28, Rarity.SPECIAL, mage.cards.d.DjinnIlluminatus.class)); - cards.add(new SetCardInfo("Doomwake Giant", 80, Rarity.SPECIAL, mage.cards.d.DoomwakeGiant.class)); - cards.add(new SetCardInfo("Door of Destinies", 35, Rarity.SPECIAL, mage.cards.d.DoorOfDestinies.class)); - cards.add(new SetCardInfo("Dragon Broodmother", 40, Rarity.SPECIAL, mage.cards.d.DragonBroodmother.class)); - cards.add(new SetCardInfo("Dragonlord Atarka", 170, Rarity.MYTHIC, mage.cards.d.DragonlordAtarka.class)); - cards.add(new SetCardInfo("Dragonlord Dromoka", 171, Rarity.MYTHIC, mage.cards.d.DragonlordDromoka.class)); - cards.add(new SetCardInfo("Dragonlord Kolaghan", 172, Rarity.MYTHIC, mage.cards.d.DragonlordKolaghan.class)); - cards.add(new SetCardInfo("Dragonlord Ojutai", 173, Rarity.MYTHIC, mage.cards.d.DragonlordOjutai.class)); - cards.add(new SetCardInfo("Dragonlord Silumgar", 174, Rarity.MYTHIC, mage.cards.d.DragonlordSilumgar.class)); - cards.add(new SetCardInfo("Dragonmaster Outcast", 254, Rarity.MYTHIC, mage.cards.d.DragonmasterOutcast.class)); - cards.add(new SetCardInfo("Dragonscale General", 134, Rarity.RARE, mage.cards.d.DragonscaleGeneral.class)); - cards.add(new SetCardInfo("Dragon-Style Twins", 98, Rarity.SPECIAL, mage.cards.d.DragonStyleTwins.class)); - cards.add(new SetCardInfo("Drana, Liberator of Malakir", 255, Rarity.MYTHIC, mage.cards.d.DranaLiberatorOfMalakir.class)); - cards.add(new SetCardInfo("Dromoka's Command", 175, Rarity.RARE, mage.cards.d.DromokasCommand.class)); - cards.add(new SetCardInfo("Dromoka, the Eternal", 135, Rarity.RARE, mage.cards.d.DromokaTheEternal.class)); - cards.add(new SetCardInfo("Drowner of Hope", 256, Rarity.RARE, mage.cards.d.DrownerOfHope.class)); - cards.add(new SetCardInfo("Duneblast", 99, Rarity.SPECIAL, mage.cards.d.Duneblast.class)); - cards.add(new SetCardInfo("Dust Stalker", 257, Rarity.RARE, mage.cards.d.DustStalker.class)); - cards.add(new SetCardInfo("Dwynen, Gilt-Leaf Daen", 204, Rarity.RARE, mage.cards.d.DwynenGiltLeafDaen.class)); - cards.add(new SetCardInfo("Eater of Hope", 75, Rarity.SPECIAL, mage.cards.e.EaterOfHope.class)); - cards.add(new SetCardInfo("Embermaw Hellion", 205, Rarity.RARE, mage.cards.e.EmbermawHellion.class)); - cards.add(new SetCardInfo("Ember Swallower", 71, Rarity.SPECIAL, mage.cards.e.EmberSwallower.class)); - cards.add(new SetCardInfo("Emeria Shepherd", 258, Rarity.RARE, mage.cards.e.EmeriaShepherd.class)); - cards.add(new SetCardInfo("Emrakul, the Aeons Torn", 44, Rarity.SPECIAL, mage.cards.e.EmrakulTheAeonsTorn.class)); - cards.add(new SetCardInfo("Endless One", 259, Rarity.RARE, mage.cards.e.EndlessOne.class)); - cards.add(new SetCardInfo("Evolutionary Leap", 206, Rarity.RARE, mage.cards.e.EvolutionaryLeap.class)); - cards.add(new SetCardInfo("Exert Influence", 260, Rarity.RARE, mage.cards.e.ExertInfluence.class)); - cards.add(new SetCardInfo("Exquisite Firecraft", 207, Rarity.RARE, mage.cards.e.ExquisiteFirecraft.class)); - cards.add(new SetCardInfo("False Prophet", 7, Rarity.SPECIAL, mage.cards.f.FalseProphet.class)); - cards.add(new SetCardInfo("Fathom Feeder", 261, Rarity.RARE, mage.cards.f.FathomFeeder.class)); - cards.add(new SetCardInfo("Fathom Mage", 61, Rarity.SPECIAL, mage.cards.f.FathomMage.class)); - cards.add(new SetCardInfo("Felidar Sovereign", 262, Rarity.RARE, mage.cards.f.FelidarSovereign.class)); - cards.add(new SetCardInfo("Feral Throwback", 19, Rarity.SPECIAL, mage.cards.f.FeralThrowback.class)); - cards.add(new SetCardInfo("Flamerush Rider", 136, Rarity.RARE, mage.cards.f.FlamerushRider.class)); - cards.add(new SetCardInfo("Flamewake Phoenix", 137, Rarity.RARE, mage.cards.f.FlamewakePhoenix.class)); - cards.add(new SetCardInfo("Flying Crane Technique", 100, Rarity.SPECIAL, mage.cards.f.FlyingCraneTechnique.class)); - cards.add(new SetCardInfo("Foe-Razer Regent", 176, Rarity.RARE, mage.cards.f.FoeRazerRegent.class)); - cards.add(new SetCardInfo("Forgestoker Dragon", 76, Rarity.SPECIAL, mage.cards.f.ForgestokerDragon.class)); - cards.add(new SetCardInfo("Foundry Champion", 62, Rarity.SPECIAL, mage.cards.f.FoundryChampion.class)); - cards.add(new SetCardInfo("From Beyond", 263, Rarity.RARE, mage.cards.f.FromBeyond.class)); - cards.add(new SetCardInfo("Fungal Shambler", 14, Rarity.SPECIAL, mage.cards.f.FungalShambler.class)); - cards.add(new SetCardInfo("Gaea's Revenge", 208, Rarity.RARE, mage.cards.g.GaeasRevenge.class)); - cards.add(new SetCardInfo("Gideon, Battle-Forged", 220, Rarity.MYTHIC, mage.cards.g.GideonBattleForged.class)); - cards.add(new SetCardInfo("Gideon, Ally of Zendikar", 264, Rarity.MYTHIC, mage.cards.g.GideonAllyOfZendikar.class)); - cards.add(new SetCardInfo("Gideon's Phalanx", 209, Rarity.RARE, mage.cards.g.GideonsPhalanx.class)); - cards.add(new SetCardInfo("Gilt-Leaf Winnower", 210, Rarity.RARE, mage.cards.g.GiltLeafWinnower.class)); - cards.add(new SetCardInfo("Gleancrawler", 27, Rarity.SPECIAL, mage.cards.g.Gleancrawler.class)); - cards.add(new SetCardInfo("Glissa, the Traitor", 48, Rarity.SPECIAL, mage.cards.g.GlissaTheTraitor.class)); - cards.add(new SetCardInfo("Glory", 17, Rarity.SPECIAL, mage.cards.g.Glory.class)); - cards.add(new SetCardInfo("Goblin Piledriver", 211, Rarity.RARE, mage.cards.g.GoblinPiledriver.class)); - cards.add(new SetCardInfo("Graveblade Marauder", 212, Rarity.RARE, mage.cards.g.GravebladeMarauder.class)); - cards.add(new SetCardInfo("Greenwarden of Murasa", 265, Rarity.MYTHIC, mage.cards.g.GreenwardenOfMurasa.class)); - cards.add(new SetCardInfo("Grim Haruspex", 101, Rarity.SPECIAL, mage.cards.g.GrimHaruspex.class)); - cards.add(new SetCardInfo("Grove of the Guardian", 59, Rarity.SPECIAL, mage.cards.g.GroveOfTheGuardian.class)); - cards.add(new SetCardInfo("Gruesome Slaughter", 266, Rarity.RARE, mage.cards.g.GruesomeSlaughter.class)); - cards.add(new SetCardInfo("Guardian of Tazeem", 267, Rarity.RARE, mage.cards.g.GuardianOfTazeem.class)); - cards.add(new SetCardInfo("Guul Draz Overseer", 268, Rarity.RARE, mage.cards.g.GuulDrazOverseer.class)); - cards.add(new SetCardInfo("Harbinger of the Hunt", 177, Rarity.RARE, mage.cards.h.HarbingerOfTheHunt.class)); - cards.add(new SetCardInfo("Harbinger of the Tides", 213, Rarity.RARE, mage.cards.h.HarbingerOfTheTides.class)); - cards.add(new SetCardInfo("Hardened Scales", 102, Rarity.SPECIAL, mage.cards.h.HardenedScales.class)); - cards.add(new SetCardInfo("Helm of Kaldra", 23, Rarity.SPECIAL, mage.cards.h.HelmOfKaldra.class)); - cards.add(new SetCardInfo("Herald of Anafenza", 103, Rarity.SPECIAL, mage.cards.h.HeraldOfAnafenza.class)); - cards.add(new SetCardInfo("Heroes' Bane", 82, Rarity.SPECIAL, mage.cards.h.HeroesBane.class)); - cards.add(new SetCardInfo("Hero of Bladehold", 47, Rarity.SPECIAL, mage.cards.h.HeroOfBladehold.class)); - cards.add(new SetCardInfo("Hero of Goma Fada", 269, Rarity.RARE, mage.cards.h.HeroOfGomaFada.class)); - cards.add(new SetCardInfo("Hidden Dragonslayer", 178, Rarity.RARE, mage.cards.h.HiddenDragonslayer.class)); - cards.add(new SetCardInfo("High Sentinels of Arashin", 104, Rarity.SPECIAL, mage.cards.h.HighSentinelsOfArashin.class)); - cards.add(new SetCardInfo("Hixus, Prison Warden", 214, Rarity.RARE, mage.cards.h.HixusPrisonWarden.class)); - cards.add(new SetCardInfo("Honored Hierarch", 215, Rarity.RARE, mage.cards.h.HonoredHierarch.class)); - cards.add(new SetCardInfo("Howlpack Alpha", 51, Rarity.SPECIAL, mage.cards.h.HowlpackAlpha.class)); - cards.add(new SetCardInfo("Hypersonic Dragon", 56, Rarity.SPECIAL, mage.cards.h.HypersonicDragon.class)); - cards.add(new SetCardInfo("Icefall Regent", 179, Rarity.RARE, mage.cards.i.IcefallRegent.class)); - cards.add(new SetCardInfo("Icy Blast", 105, Rarity.SPECIAL, mage.cards.i.IcyBlast.class)); - cards.add(new SetCardInfo("Indulgent Tormentor", 85, Rarity.SPECIAL, mage.cards.i.IndulgentTormentor.class)); - cards.add(new SetCardInfo("Ink-Eyes, Servant of Oni", 25, Rarity.SPECIAL, mage.cards.i.InkEyesServantOfOni.class)); - cards.add(new SetCardInfo("Ire Shaman", 180, Rarity.RARE, mage.cards.i.IreShaman.class)); - cards.add(new SetCardInfo("Ivorytusk Fortress", 106, Rarity.SPECIAL, mage.cards.i.IvorytuskFortress.class)); - cards.add(new SetCardInfo("Jace, Telepath Unbound", 216, Rarity.MYTHIC, mage.cards.j.JaceTelepathUnbound.class)); - cards.add(new SetCardInfo("Jace, Vryn's Prodigy", 216, Rarity.MYTHIC, mage.cards.j.JaceVrynsProdigy.class)); - cards.add(new SetCardInfo("Jeering Instigator", 107, Rarity.SPECIAL, mage.cards.j.JeeringInstigator.class)); - cards.add(new SetCardInfo("Jeskai Ascendancy", 108, Rarity.SPECIAL, mage.cards.j.JeskaiAscendancy.class)); - cards.add(new SetCardInfo("Jeskai Infiltrator", 138, Rarity.RARE, mage.cards.j.JeskaiInfiltrator.class)); - cards.add(new SetCardInfo("Kheru Lich Lord", 109, Rarity.SPECIAL, mage.cards.k.KheruLichLord.class)); - cards.add(new SetCardInfo("Kiora, Master of the Depths", 270, Rarity.MYTHIC, mage.cards.k.KioraMasterOfTheDepths.class)); - cards.add(new SetCardInfo("Kolaghan's Command", 181, Rarity.RARE, mage.cards.k.KolaghansCommand.class)); - cards.add(new SetCardInfo("Kolaghan, the Storm's Fury", 139, Rarity.RARE, mage.cards.k.KolaghanTheStormsFury.class)); - cards.add(new SetCardInfo("Korlash, Heir to Blackblade", 33, Rarity.SPECIAL, mage.cards.k.KorlashHeirToBlackblade.class)); - cards.add(new SetCardInfo("Kothophed, Soul Hoarder", 218, Rarity.RARE, mage.cards.k.KothophedSoulHoarder.class)); - cards.add(new SetCardInfo("Kytheon, Hero of Akros", 220, Rarity.MYTHIC, mage.cards.k.KytheonHeroOfAkros.class)); - cards.add(new SetCardInfo("Kytheon's Irregulars", 219, Rarity.RARE, mage.cards.k.KytheonsIrregulars.class)); - cards.add(new SetCardInfo("Languish", 221, Rarity.RARE, mage.cards.l.Languish.class)); - cards.add(new SetCardInfo("Lantern Scout", 271, Rarity.RARE, mage.cards.l.LanternScout.class)); - cards.add(new SetCardInfo("Laquatus's Champion", 16, Rarity.SPECIAL, mage.cards.l.LaquatussChampion.class)); - cards.add(new SetCardInfo("Liliana, Defiant Necromancer", 222, Rarity.MYTHIC, mage.cards.l.LilianaDefiantNecromancer.class)); - cards.add(new SetCardInfo("Liliana, Heretical Healer", 222, Rarity.MYTHIC, mage.cards.l.LilianaHereticalHealer.class)); - cards.add(new SetCardInfo("Living Lore", 182, Rarity.RARE, mage.cards.l.LivingLore.class)); - cards.add(new SetCardInfo("Lotus Bloom", 31, Rarity.SPECIAL, mage.cards.l.LotusBloom.class)); - cards.add(new SetCardInfo("Lu Bu, Master-at-Arms", 8, Rarity.SPECIAL, mage.cards.l.LuBuMasterAtArms.class)); - cards.add(new SetCardInfo("Lumbering Falls", 272, Rarity.RARE, mage.cards.l.LumberingFalls.class)); - cards.add(new SetCardInfo("Malfegor", 39, Rarity.SPECIAL, mage.cards.m.Malfegor.class)); - cards.add(new SetCardInfo("Managorger Hydra", 223, Rarity.RARE, mage.cards.m.ManagorgerHydra.class)); - cards.add(new SetCardInfo("March from the Tomb", 273, Rarity.RARE, mage.cards.m.MarchFromTheTomb.class)); - cards.add(new SetCardInfo("Mardu Ascendancy", 110, Rarity.SPECIAL, mage.cards.m.MarduAscendancy.class)); - cards.add(new SetCardInfo("Mardu Strike Leader", 140, Rarity.RARE, mage.cards.m.MarduStrikeLeader.class)); - cards.add(new SetCardInfo("Master of Pearls", 111, Rarity.SPECIAL, mage.cards.m.MasterOfPearls.class)); - cards.add(new SetCardInfo("Mastery of the Unseen", 141, Rarity.RARE, mage.cards.m.MasteryOfTheUnseen.class)); - cards.add(new SetCardInfo("Mayor of Avabruck", 51, Rarity.SPECIAL, mage.cards.m.MayorOfAvabruck.class)); - cards.add(new SetCardInfo("Maze's End", 65, Rarity.SPECIAL, mage.cards.m.MazesEnd.class)); - cards.add(new SetCardInfo("Megantic Sliver", 67, Rarity.SPECIAL, mage.cards.m.MeganticSliver.class)); - cards.add(new SetCardInfo("Mercurial Pretender", 84, Rarity.SPECIAL, mage.cards.m.MercurialPretender.class)); - cards.add(new SetCardInfo("Mizzium Meddler", 224, Rarity.RARE, mage.cards.m.MizziumMeddler.class)); - cards.add(new SetCardInfo("Moonsilver Spear", 53, Rarity.SPECIAL, mage.cards.m.MoonsilverSpear.class)); - cards.add(new SetCardInfo("Munda, Ambush Leader", 274, Rarity.RARE, mage.cards.m.MundaAmbushLeader.class)); - cards.add(new SetCardInfo("Myth Realized", 183, Rarity.RARE, mage.cards.m.MythRealized.class)); - cards.add(new SetCardInfo("Narset, Enlightened Master", 112, Rarity.SPECIAL, mage.cards.n.NarsetEnlightenedMaster.class)); - cards.add(new SetCardInfo("Necromaster Dragon", 184, Rarity.RARE, mage.cards.n.NecromasterDragon.class)); - cards.add(new SetCardInfo("Necropolis Fiend", 113, Rarity.SPECIAL, mage.cards.n.NecropolisFiend.class)); - cards.add(new SetCardInfo("Nessian Wilds Ravager", 77, Rarity.SPECIAL, mage.cards.n.NessianWildsRavager.class)); - cards.add(new SetCardInfo("Nissa's Renewal", 275, Rarity.RARE, mage.cards.n.NissasRenewal.class)); - cards.add(new SetCardInfo("Nissa's Revelation", 225, Rarity.RARE, mage.cards.n.NissasRevelation.class)); - cards.add(new SetCardInfo("Nissa, Sage Animist", 226, Rarity.MYTHIC, mage.cards.n.NissaSageAnimist.class)); - cards.add(new SetCardInfo("Nissa, Vastwood Seer", 226, Rarity.MYTHIC, mage.cards.n.NissaVastwoodSeer.class)); - cards.add(new SetCardInfo("Noyan Dar, Roil Shaper", 276, Rarity.RARE, mage.cards.n.NoyanDarRoilShaper.class)); - cards.add(new SetCardInfo("Oblivion Sower", 278, Rarity.MYTHIC, mage.cards.o.OblivionSower.class)); - cards.add(new SetCardInfo("Ob Nixilis Reignited", 277, Rarity.MYTHIC, mage.cards.o.ObNixilisReignited.class)); - cards.add(new SetCardInfo("Ojutai's Command", 185, Rarity.RARE, mage.cards.o.OjutaisCommand.class)); - cards.add(new SetCardInfo("Ojutai, Soul of Winter", 142, Rarity.RARE, mage.cards.o.OjutaiSoulOfWinter.class)); - cards.add(new SetCardInfo("Omnath, Locus of Rage", 279, Rarity.MYTHIC, mage.cards.o.OmnathLocusOfRage.class)); - cards.add(new SetCardInfo("Oran-Rief Hydra", 280, Rarity.RARE, mage.cards.o.OranRiefHydra.class)); - cards.add(new SetCardInfo("Oros, the Avenger", 32, Rarity.SPECIAL, mage.cards.o.OrosTheAvenger.class)); - cards.add(new SetCardInfo("Outland Colossus", 227, Rarity.RARE, mage.cards.o.OutlandColossus.class)); - cards.add(new SetCardInfo("Overbeing of Myth", 37, Rarity.SPECIAL, mage.cards.o.OverbeingOfMyth.class)); - cards.add(new SetCardInfo("Overtaker", 9, Rarity.SPECIAL, mage.cards.o.Overtaker.class)); - cards.add(new SetCardInfo("Painful Truths", 281, Rarity.RARE, mage.cards.p.PainfulTruths.class)); - cards.add(new SetCardInfo("Part the Waterveil", 282, Rarity.MYTHIC, mage.cards.p.PartTheWaterveil.class)); - cards.add(new SetCardInfo("Phytotitan", 87, Rarity.SPECIAL, mage.cards.p.Phytotitan.class)); - cards.add(new SetCardInfo("Pia and Kiran Nalaar", 228, Rarity.RARE, mage.cards.p.PiaAndKiranNalaar.class)); - cards.add(new SetCardInfo("Pitiless Horde", 186, Rarity.RARE, mage.cards.p.PitilessHorde.class)); - cards.add(new SetCardInfo("Plains", 66, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Planar Outburst", 283, Rarity.RARE, mage.cards.p.PlanarOutburst.class)); - cards.add(new SetCardInfo("Prairie Stream", 284, Rarity.RARE, mage.cards.p.PrairieStream.class)); - cards.add(new SetCardInfo("Priest of the Blood Rite", 229, Rarity.RARE, mage.cards.p.PriestOfTheBloodRite.class)); - cards.add(new SetCardInfo("Prism Array", 285, Rarity.RARE, mage.cards.p.PrismArray.class)); - cards.add(new SetCardInfo("Pristine Skywise", 187, Rarity.RARE, mage.cards.p.PristineSkywise.class)); - cards.add(new SetCardInfo("Profaner of the Dead", 188, Rarity.RARE, mage.cards.p.ProfanerOfTheDead.class)); - cards.add(new SetCardInfo("Quarantine Field", 286, Rarity.MYTHIC, mage.cards.q.QuarantineField.class)); - cards.add(new SetCardInfo("Questing Phelddagrif", 13, Rarity.SPECIAL, mage.cards.q.QuestingPhelddagrif.class)); - cards.add(new SetCardInfo("Radiant Flames", 287, Rarity.RARE, mage.cards.r.RadiantFlames.class)); - cards.add(new SetCardInfo("Raging Kavu", 12, Rarity.SPECIAL, mage.cards.r.RagingKavu.class)); - cards.add(new SetCardInfo("Rakshasa Vizier", 114, Rarity.SPECIAL, mage.cards.r.RakshasaVizier.class)); - cards.add(new SetCardInfo("Rally the Ancestors", 143, Rarity.RARE, mage.cards.r.RallyTheAncestors.class)); - cards.add(new SetCardInfo("Rampaging Baloths", 42, Rarity.SPECIAL, mage.cards.r.RampagingBaloths.class)); - cards.add(new SetCardInfo("Rathi Assassin", 10, Rarity.SPECIAL, mage.cards.r.RathiAssassin.class)); - cards.add(new SetCardInfo("Rattleclaw Mystic", 115, Rarity.SPECIAL, mage.cards.r.RattleclawMystic.class)); - cards.add(new SetCardInfo("Ravenous Demon", "52a", Rarity.SPECIAL, mage.cards.r.RavenousDemon.class)); - cards.add(new SetCardInfo("Relic Seeker", 230, Rarity.RARE, mage.cards.r.RelicSeeker.class)); - cards.add(new SetCardInfo("Resolute Archangel", 83, Rarity.SPECIAL, mage.cards.r.ResoluteArchangel.class)); - cards.add(new SetCardInfo("Revenant", 2, Rarity.SPECIAL, mage.cards.r.Revenant.class)); - cards.add(new SetCardInfo("Rubblehulk", 63, Rarity.SPECIAL, mage.cards.r.Rubblehulk.class)); - cards.add(new SetCardInfo("Ruinous Path", 288, Rarity.RARE, mage.cards.r.RuinousPath.class)); - cards.add(new SetCardInfo("Ryusei, the Falling Star", 24, Rarity.SPECIAL, mage.cards.r.RyuseiTheFallingStar.class)); - cards.add(new SetCardInfo("Sage of the Inward Eye", 116, Rarity.SPECIAL, mage.cards.s.SageOfTheInwardEye.class)); - cards.add(new SetCardInfo("Sanctum of Ugin", 289, Rarity.RARE, mage.cards.s.SanctumOfUgin.class)); - cards.add(new SetCardInfo("Sandsteppe Mastodon", 145, Rarity.RARE, mage.cards.s.SandsteppeMastodon.class)); - cards.add(new SetCardInfo("Scab-Clan Berserker", 231, Rarity.RARE, mage.cards.s.ScabClanBerserker.class)); - cards.add(new SetCardInfo("Scatter to the Winds", 290, Rarity.RARE, mage.cards.s.ScatterToTheWinds.class)); - cards.add(new SetCardInfo("Scourge of Fleets", 79, Rarity.SPECIAL, mage.cards.s.ScourgeOfFleets.class)); - cards.add(new SetCardInfo("Serpentine Spike", 291, Rarity.RARE, mage.cards.s.SerpentineSpike.class)); - cards.add(new SetCardInfo("Shamanic Revelation", 147, Rarity.RARE, mage.cards.s.ShamanicRevelation.class)); - cards.add(new SetCardInfo("Shaman of the Great Hunt", 146, Rarity.MYTHIC, mage.cards.s.ShamanOfTheGreatHunt.class)); - cards.add(new SetCardInfo("Shambling Vent", 292, Rarity.RARE, mage.cards.s.ShamblingVent.class)); - cards.add(new SetCardInfo("Sheoldred, Whispering One", 49, Rarity.SPECIAL, mage.cards.s.SheoldredWhisperingOne.class)); - cards.add(new SetCardInfo("Shield of Kaldra", 22, Rarity.SPECIAL, mage.cards.s.ShieldOfKaldra.class)); - cards.add(new SetCardInfo("Shipbreaker Kraken", 69, Rarity.SPECIAL, mage.cards.s.ShipbreakerKraken.class)); - cards.add(new SetCardInfo("Shrine of the Forsaken Gods", 293, Rarity.RARE, mage.cards.s.ShrineOfTheForsakenGods.class)); - cards.add(new SetCardInfo("Shu Yun, the Silent Tempest", 148, Rarity.RARE, mage.cards.s.ShuYunTheSilentTempest.class)); - cards.add(new SetCardInfo("Sidisi, Brood Tyrant", 117, Rarity.SPECIAL, mage.cards.s.SidisiBroodTyrant.class)); - cards.add(new SetCardInfo("Sidisi, Undead Vizier", 189, Rarity.RARE, mage.cards.s.SidisiUndeadVizier.class)); - cards.add(new SetCardInfo("Siege Dragon", 86, Rarity.SPECIAL, mage.cards.s.SiegeDragon.class)); - cards.add(new SetCardInfo("Siege Rhino", 118, Rarity.SPECIAL, mage.cards.s.SiegeRhino.class)); - cards.add(new SetCardInfo("Silent Sentinel", 73, Rarity.SPECIAL, mage.cards.s.SilentSentinel.class)); - cards.add(new SetCardInfo("Silent Specter", 18, Rarity.SPECIAL, mage.cards.s.SilentSpecter.class)); - cards.add(new SetCardInfo("Silumgar Assassin", 190, Rarity.RARE, mage.cards.s.SilumgarAssassin.class)); - cards.add(new SetCardInfo("Silumgar's Command", 191, Rarity.RARE, mage.cards.s.SilumgarsCommand.class)); - cards.add(new SetCardInfo("Silumgar, the Drifting Death", 149, Rarity.RARE, mage.cards.s.SilumgarTheDriftingDeath.class)); - cards.add(new SetCardInfo("Sire of Stagnation", 294, Rarity.MYTHIC, mage.cards.s.SireOfStagnation.class)); - cards.add(new SetCardInfo("Smoldering Marsh", 295, Rarity.RARE, mage.cards.s.SmolderingMarsh.class)); - cards.add(new SetCardInfo("Smothering Abomination", 296, Rarity.RARE, mage.cards.s.SmotheringAbomination.class)); - cards.add(new SetCardInfo("Soulblade Djinn", 232, Rarity.RARE, mage.cards.s.SoulbladeDjinn.class)); - cards.add(new SetCardInfo("Soul Collector", 20, Rarity.SPECIAL, mage.cards.s.SoulCollector.class)); - cards.add(new SetCardInfo("Soulfire Grand Master", 150, Rarity.MYTHIC, mage.cards.s.SoulfireGrandMaster.class)); - cards.add(new SetCardInfo("Soulflayer", 151, Rarity.RARE, mage.cards.s.Soulflayer.class)); - cards.add(new SetCardInfo("Spawn of Thraxes", 81, Rarity.SPECIAL, mage.cards.s.SpawnOfThraxes.class)); - cards.add(new SetCardInfo("Stratus Dancer", 192, Rarity.RARE, mage.cards.s.StratusDancer.class)); - cards.add(new SetCardInfo("Sultai Ascendancy", 119, Rarity.SPECIAL, mage.cards.s.SultaiAscendancy.class)); - cards.add(new SetCardInfo("Sunken Hollow", 297, Rarity.RARE, mage.cards.s.SunkenHollow.class)); - cards.add(new SetCardInfo("Sunscorch Regent", 193, Rarity.RARE, mage.cards.s.SunscorchRegent.class)); - cards.add(new SetCardInfo("Sun Titan", 45, Rarity.SPECIAL, mage.cards.s.SunTitan.class)); - cards.add(new SetCardInfo("Supplant Form", 152, Rarity.RARE, mage.cards.s.SupplantForm.class)); - cards.add(new SetCardInfo("Surrak Dragonclaw", 120, Rarity.SPECIAL, mage.cards.s.SurrakDragonclaw.class)); - cards.add(new SetCardInfo("Surrak, the Hunt Caller", 194, Rarity.RARE, mage.cards.s.SurrakTheHuntCaller.class)); - cards.add(new SetCardInfo("Sword of Kaldra", 21, Rarity.SPECIAL, mage.cards.s.SwordOfKaldra.class)); - cards.add(new SetCardInfo("Talent of the Telepath", 233, Rarity.RARE, mage.cards.t.TalentOfTheTelepath.class)); - cards.add(new SetCardInfo("Tasigur, the Golden Fang", 153, Rarity.RARE, mage.cards.t.TasigurTheGoldenFang.class)); - cards.add(new SetCardInfo("Temur Ascendancy", 121, Rarity.SPECIAL, mage.cards.t.TemurAscendancy.class)); - cards.add(new SetCardInfo("Thopter Spy Network", 234, Rarity.RARE, mage.cards.t.ThopterSpyNetwork.class)); - cards.add(new SetCardInfo("Thousand Winds", 122, Rarity.SPECIAL, mage.cards.t.ThousandWinds.class)); - cards.add(new SetCardInfo("Thunderbreak Regent", 195, Rarity.RARE, mage.cards.t.ThunderbreakRegent.class)); - cards.add(new SetCardInfo("Torrent Elemental", 154, Rarity.MYTHIC, mage.cards.t.TorrentElemental.class)); - cards.add(new SetCardInfo("Tragic Arrogance", 235, Rarity.RARE, mage.cards.t.TragicArrogance.class)); - cards.add(new SetCardInfo("Trail of Mystery", 123, Rarity.SPECIAL, mage.cards.t.TrailOfMystery.class)); - cards.add(new SetCardInfo("Trap Essence", 124, Rarity.SPECIAL, mage.cards.t.TrapEssence.class)); - cards.add(new SetCardInfo("Treasury Thrull", 64, Rarity.SPECIAL, mage.cards.t.TreasuryThrull.class)); - cards.add(new SetCardInfo("Ugin's Insight", 298, Rarity.RARE, mage.cards.u.UginsInsight.class)); - cards.add(new SetCardInfo("Ulamog, the Ceaseless Hunger", 299, Rarity.MYTHIC, mage.cards.u.UlamogTheCeaselessHunger.class)); - cards.add(new SetCardInfo("Undergrowth Champion", 300, Rarity.MYTHIC, mage.cards.u.UndergrowthChampion.class)); - cards.add(new SetCardInfo("Utter End", 125, Rarity.SPECIAL, mage.cards.u.UtterEnd.class)); - cards.add(new SetCardInfo("Vampire Nocturnus", 41, Rarity.SPECIAL, mage.cards.v.VampireNocturnus.class)); - cards.add(new SetCardInfo("Veteran Warleader", 301, Rarity.RARE, mage.cards.v.VeteranWarleader.class)); - cards.add(new SetCardInfo("Villainous Wealth", 126, Rarity.SPECIAL, mage.cards.v.VillainousWealth.class)); - cards.add(new SetCardInfo("Void Winnower", 302, Rarity.MYTHIC, mage.cards.v.VoidWinnower.class)); - cards.add(new SetCardInfo("Volcanic Vision", 196, Rarity.RARE, mage.cards.v.VolcanicVision.class)); - cards.add(new SetCardInfo("Vryn Wingmare", 236, Rarity.RARE, mage.cards.v.VrynWingmare.class)); - cards.add(new SetCardInfo("Warden of the First Tree", 155, Rarity.MYTHIC, mage.cards.w.WardenOfTheFirstTree.class)); - cards.add(new SetCardInfo("Wasteland Strangler", 303, Rarity.RARE, mage.cards.w.WastelandStrangler.class)); - cards.add(new SetCardInfo("Wildcall", 156, Rarity.RARE, mage.cards.w.Wildcall.class)); - cards.add(new SetCardInfo("Willbreaker", 237, Rarity.RARE, mage.cards.w.Willbreaker.class)); - cards.add(new SetCardInfo("Woodland Wanderer", 304, Rarity.RARE, mage.cards.w.WoodlandWanderer.class)); - cards.add(new SetCardInfo("Wren's Run Packmaster", 34, Rarity.SPECIAL, mage.cards.w.WrensRunPackmaster.class)); - cards.add(new SetCardInfo("Wurmcoil Engine", 46, Rarity.SPECIAL, mage.cards.w.WurmcoilEngine.class)); - cards.add(new SetCardInfo("Xathrid Gorgon", 54, Rarity.SPECIAL, mage.cards.x.XathridGorgon.class)); - cards.add(new SetCardInfo("Yasova Dragonclaw", 157, Rarity.RARE, mage.cards.y.YasovaDragonclaw.class)); - cards.add(new SetCardInfo("Zada, Hedron Grinder", 305, Rarity.RARE, mage.cards.z.ZadaHedronGrinder.class)); - cards.add(new SetCardInfo("Zurgo Bellstriker", 197, Rarity.RARE, mage.cards.z.ZurgoBellstriker.class)); - cards.add(new SetCardInfo("Zurgo Helmsmasher", 127, Rarity.SPECIAL, mage.cards.z.ZurgoHelmsmasher.class)); + // Commented cards are non-English printings + cards.add(new SetCardInfo("Ajani Vengeant", 38, Rarity.MYTHIC, mage.cards.a.AjaniVengeant.class)); + cards.add(new SetCardInfo("Allosaurus Rider", 30, Rarity.RARE, mage.cards.a.AllosaurusRider.class)); + cards.add(new SetCardInfo("Avatar of Discord", 29, Rarity.RARE, mage.cards.a.AvatarOfDiscord.class)); + cards.add(new SetCardInfo("Avatar of Hope", 11, Rarity.RARE, mage.cards.a.AvatarOfHope.class)); + cards.add(new SetCardInfo("Beast of Burden", 5, Rarity.RARE, mage.cards.b.BeastOfBurden.class)); + cards.add(new SetCardInfo("Demigod of Revenge", 36, Rarity.RARE, mage.cards.d.DemigodOfRevenge.class)); + cards.add(new SetCardInfo("Dirtcowl Wurm", 1, Rarity.RARE, mage.cards.d.DirtcowlWurm.class)); + cards.add(new SetCardInfo("Djinn Illuminatus", 28, Rarity.RARE, mage.cards.d.DjinnIlluminatus.class)); + cards.add(new SetCardInfo("Door of Destinies", 35, Rarity.RARE, mage.cards.d.DoorOfDestinies.class)); + cards.add(new SetCardInfo("Dragon Broodmother", 40, Rarity.MYTHIC, mage.cards.d.DragonBroodmother.class)); + cards.add(new SetCardInfo("False Prophet", 7, Rarity.RARE, mage.cards.f.FalseProphet.class)); + cards.add(new SetCardInfo("Feral Throwback", 19, Rarity.RARE, mage.cards.f.FeralThrowback.class)); + //cards.add(new SetCardInfo("Fungal Shambler", 14, Rarity.RARE, mage.cards.f.FungalShambler.class)); + cards.add(new SetCardInfo("Gleancrawler", 27, Rarity.RARE, mage.cards.g.Gleancrawler.class)); + //cards.add(new SetCardInfo("Glory", 17, Rarity.RARE, mage.cards.g.Glory.class)); + cards.add(new SetCardInfo("Helm of Kaldra", 23, Rarity.RARE, mage.cards.h.HelmOfKaldra.class)); + cards.add(new SetCardInfo("Ink-Eyes, Servant of Oni", 25, Rarity.RARE, mage.cards.i.InkEyesServantOfOni.class)); + cards.add(new SetCardInfo("Kiyomaro, First to Stand", 26, Rarity.RARE, mage.cards.k.KiyomaroFirstToStand.class)); + cards.add(new SetCardInfo("Korlash, Heir to Blackblade", 33, Rarity.RARE, mage.cards.k.KorlashHeirToBlackblade.class)); + //cards.add(new SetCardInfo("Laquatus's Champion", 16, Rarity.RARE, mage.cards.l.LaquatussChampion.class)); + cards.add(new SetCardInfo("Lightning Dragon", 4, Rarity.RARE, mage.cards.l.LightningDragon.class)); + cards.add(new SetCardInfo("Lotus Bloom", 31, Rarity.RARE, mage.cards.l.LotusBloom.class)); + cards.add(new SetCardInfo("Lu Bu, Master-at-Arms", 6, Rarity.RARE, mage.cards.l.LuBuMasterAtArms.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Lu Bu, Master-at-Arms", 8, Rarity.RARE, mage.cards.l.LuBuMasterAtArms.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Malfegor", 39, Rarity.RARE, mage.cards.m.Malfegor.class)); + cards.add(new SetCardInfo("Monstrous Hound", 3, Rarity.RARE, mage.cards.m.MonstrousHound.class)); + cards.add(new SetCardInfo("Oros, the Avenger", 32, Rarity.RARE, mage.cards.o.OrosTheAvenger.class)); + cards.add(new SetCardInfo("Overbeing of Myth", 37, Rarity.RARE, mage.cards.o.OverbeingOfMyth.class)); + cards.add(new SetCardInfo("Overtaker", 9, Rarity.RARE, mage.cards.o.Overtaker.class)); + //cards.add(new SetCardInfo("Questing Phelddagrif", 13, Rarity.RARE, mage.cards.q.QuestingPhelddagrif.class)); + //cards.add(new SetCardInfo("Raging Kavu", 12, Rarity.RARE, mage.cards.r.RagingKavu.class)); + cards.add(new SetCardInfo("Rathi Assassin", 10, Rarity.RARE, mage.cards.r.RathiAssassin.class)); + cards.add(new SetCardInfo("Revenant", 2, Rarity.RARE, mage.cards.r.Revenant.class)); + cards.add(new SetCardInfo("Ryusei, the Falling Star", 24, Rarity.RARE, mage.cards.r.RyuseiTheFallingStar.class)); + cards.add(new SetCardInfo("Shield of Kaldra", 22, Rarity.RARE, mage.cards.s.ShieldOfKaldra.class)); + cards.add(new SetCardInfo("Silent Specter", 18, Rarity.RARE, mage.cards.s.SilentSpecter.class)); + cards.add(new SetCardInfo("Soul Collector", 20, Rarity.RARE, mage.cards.s.SoulCollector.class)); + //cards.add(new SetCardInfo("Stone-Tongue Basilisk", 15, Rarity.RARE, mage.cards.s.StoneTongueBasilisk.class)); + cards.add(new SetCardInfo("Sword of Kaldra", 21, Rarity.RARE, mage.cards.s.SwordOfKaldra.class)); + cards.add(new SetCardInfo("Wren's Run Packmaster", 34, Rarity.RARE, mage.cards.w.WrensRunPackmaster.class)); } } \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/ProTourCollectorSet.java b/Mage.Sets/src/mage/sets/ProTourCollectorSet.java new file mode 100644 index 00000000000..bed5cf1f1ba --- /dev/null +++ b/Mage.Sets/src/mage/sets/ProTourCollectorSet.java @@ -0,0 +1,332 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/ptc + */ +public class ProTourCollectorSet extends ExpansionSet { + + private static final ProTourCollectorSet instance = new ProTourCollectorSet(); + + public static ProTourCollectorSet getInstance() { + return instance; + } + + private ProTourCollectorSet() { + super("Pro Tour Collector Set", "PTC", ExpansionSet.buildDate(1996, 5, 1), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = true; + + + cards.add(new SetCardInfo("Abbey Gargoyles", "bl1sb", Rarity.UNCOMMON, mage.cards.a.AbbeyGargoyles.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Abbey Gargoyles", "shr1sb", Rarity.UNCOMMON, mage.cards.a.AbbeyGargoyles.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Adarkar Wastes", "ml351", Rarity.RARE, mage.cards.a.AdarkarWastes.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Adarkar Wastes", "shr351", Rarity.RARE, mage.cards.a.AdarkarWastes.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Aeolipile", "ml81sb", Rarity.RARE, mage.cards.a.Aeolipile.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Aeolipile", "pp81", Rarity.RARE, mage.cards.a.Aeolipile.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("An-Zerrin Ruins", "et48sb", Rarity.RARE, mage.cards.a.AnZerrinRuins.class)); + cards.add(new SetCardInfo("Anarchy", "mj49sb", Rarity.UNCOMMON, mage.cards.a.Anarchy.class)); + cards.add(new SetCardInfo("Apocalypse Chime", "et101sb", Rarity.RARE, mage.cards.a.ApocalypseChime.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Apocalypse Chime", "ll101sb", Rarity.RARE, mage.cards.a.ApocalypseChime.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Arenson's Aura", "shr3sb", Rarity.COMMON, mage.cards.a.ArensonsAura.class)); + cards.add(new SetCardInfo("Armageddon", "bl5", Rarity.RARE, mage.cards.a.Armageddon.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Armageddon", "pp5", Rarity.RARE, mage.cards.a.Armageddon.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Armageddon", "pp5sb", Rarity.RARE, mage.cards.a.Armageddon.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Ashes to Ashes", "ll33sb", Rarity.UNCOMMON, mage.cards.a.AshesToAshes.class)); + cards.add(new SetCardInfo("Autumn Willow", "bl83", Rarity.RARE, mage.cards.a.AutumnWillow.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Autumn Willow", "et83", Rarity.RARE, mage.cards.a.AutumnWillow.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Autumn Willow", "et83sb", Rarity.RARE, mage.cards.a.AutumnWillow.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Autumn Willow", "pp83", Rarity.RARE, mage.cards.a.AutumnWillow.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Autumn Willow", "pp83sb", Rarity.RARE, mage.cards.a.AutumnWillow.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Balance", "bl6", Rarity.RARE, mage.cards.b.Balance.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Balance", "et6", Rarity.RARE, mage.cards.b.Balance.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Balance", "mj6", Rarity.RARE, mage.cards.b.Balance.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Balance", "ml6", Rarity.RARE, mage.cards.b.Balance.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Balance", "pp6", Rarity.RARE, mage.cards.b.Balance.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Balance", "shr6", Rarity.RARE, mage.cards.b.Balance.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Barbed Sextant", "gb312", Rarity.COMMON, mage.cards.b.BarbedSextant.class)); + cards.add(new SetCardInfo("Birds of Paradise", "et234", Rarity.RARE, mage.cards.b.BirdsOfParadise.class)); + cards.add(new SetCardInfo("Black Vise", "bl299sb", Rarity.UNCOMMON, mage.cards.b.BlackVise.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Black Vise", "mj299", Rarity.UNCOMMON, mage.cards.b.BlackVise.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Blinking Spirit", "et8", Rarity.RARE, mage.cards.b.BlinkingSpirit.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Blinking Spirit", "ml8", Rarity.RARE, mage.cards.b.BlinkingSpirit.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Brushland", "bl352", Rarity.RARE, mage.cards.b.Brushland.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Brushland", "et352", Rarity.RARE, mage.cards.b.Brushland.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Brushland", "pp352", Rarity.RARE, mage.cards.b.Brushland.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Circle of Protection: Black", "shr14sb", Rarity.COMMON, mage.cards.c.CircleOfProtectionBlack.class)); + cards.add(new SetCardInfo("Circle of Protection: Green", "bl14sb", Rarity.COMMON, mage.cards.c.CircleOfProtectionGreen.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Circle of Protection: Green", "bl16sb", Rarity.COMMON, mage.cards.c.CircleOfProtectionGreen.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Circle of Protection: Red", "bl15sb", Rarity.COMMON, mage.cards.c.CircleOfProtectionRed.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Circle of Protection: Red", "bl17sb", Rarity.COMMON, mage.cards.c.CircleOfProtectionRed.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Circle of Protection: Red", "et17sb", Rarity.COMMON, mage.cards.c.CircleOfProtectionRed.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Circle of Protection: Red", "ml15sb", Rarity.COMMON, mage.cards.c.CircleOfProtectionRed.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Circle of Protection: Red", "ml17sb", Rarity.COMMON, mage.cards.c.CircleOfProtectionRed.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Circle of Protection: Red", "shr15sb", Rarity.COMMON, mage.cards.c.CircleOfProtectionRed.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("City of Brass", "et112", Rarity.RARE, mage.cards.c.CityOfBrass.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("City of Brass", "gb112", Rarity.RARE, mage.cards.c.CityOfBrass.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("City of Brass", "ll112sb", Rarity.RARE, mage.cards.c.CityOfBrass.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("City of Brass", "mj112", Rarity.RARE, mage.cards.c.CityOfBrass.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("City of Brass", "shr112", Rarity.RARE, mage.cards.c.CityOfBrass.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Control Magic", "ml64", Rarity.UNCOMMON, mage.cards.c.ControlMagic.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Control Magic", "ml64sb", Rarity.UNCOMMON, mage.cards.c.ControlMagic.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Counterspell", "ml65", Rarity.UNCOMMON, mage.cards.c.Counterspell.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Counterspell", "shr65", Rarity.UNCOMMON, mage.cards.c.Counterspell.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Dance of the Dead", "ll118", Rarity.UNCOMMON, mage.cards.d.DanceOfTheDead.class)); + cards.add(new SetCardInfo("Dark Banishing", "gb119sb", Rarity.COMMON, mage.cards.d.DarkBanishing.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Dark Banishing", "ll119", Rarity.COMMON, mage.cards.d.DarkBanishing.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Dark Ritual", "gb129", Rarity.COMMON, mage.cards.d.DarkRitual.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Dark Ritual", "ll129", Rarity.COMMON, mage.cards.d.DarkRitual.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Deflection", "ml81", Rarity.RARE, mage.cards.d.Deflection.class)); + cards.add(new SetCardInfo("Detonate", "mj184", Rarity.UNCOMMON, mage.cards.d.Detonate.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Detonate", "mj184sb", Rarity.UNCOMMON, mage.cards.d.Detonate.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Disenchant", "bl22", Rarity.COMMON, mage.cards.d.Disenchant.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Disenchant", "et22", Rarity.COMMON, mage.cards.d.Disenchant.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Disenchant", "ml22", Rarity.COMMON, mage.cards.d.Disenchant.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Disenchant", "pp22", Rarity.COMMON, mage.cards.d.Disenchant.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Disenchant", "pp22sb", Rarity.COMMON, mage.cards.d.Disenchant.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Disenchant", "shr22", Rarity.COMMON, mage.cards.d.Disenchant.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Disrupting Scepter", "et316sb", Rarity.RARE, mage.cards.d.DisruptingScepter.class)); + cards.add(new SetCardInfo("Divine Offering", "bl6sb", Rarity.COMMON, mage.cards.d.DivineOffering.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Divine Offering", "et6sb", Rarity.COMMON, mage.cards.d.DivineOffering.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Divine Offering", "ml6sb", Rarity.COMMON, mage.cards.d.DivineOffering.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Divine Offering", "pp6sb", Rarity.COMMON, mage.cards.d.DivineOffering.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Divine Offering", "shr6sb", Rarity.COMMON, mage.cards.d.DivineOffering.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Drain Life", "ll132", Rarity.COMMON, mage.cards.d.DrainLife.class)); + cards.add(new SetCardInfo("Dwarven Catapult", "et51sb", Rarity.UNCOMMON, mage.cards.d.DwarvenCatapult.class)); + cards.add(new SetCardInfo("Dwarven Ruins", "mj94", Rarity.UNCOMMON, mage.cards.d.DwarvenRuins.class)); + cards.add(new SetCardInfo("Earthquake", "et189", Rarity.RARE, mage.cards.e.Earthquake.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Earthquake", "mj189", Rarity.RARE, mage.cards.e.Earthquake.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Ebon Stronghold", "ll95", Rarity.UNCOMMON, mage.cards.e.EbonStronghold.class)); + cards.add(new SetCardInfo("Elkin Bottle", "mj317", Rarity.RARE, mage.cards.e.ElkinBottle.class)); + cards.add(new SetCardInfo("Elvish Archers", "pp243", Rarity.RARE, mage.cards.e.ElvishArchers.class)); + cards.add(new SetCardInfo("Energy Storm", "et24sb", Rarity.RARE, mage.cards.e.EnergyStorm.class)); + cards.add(new SetCardInfo("Erhnam Djinn", "bl64", Rarity.UNCOMMON, mage.cards.e.ErhnamDjinn.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Erhnam Djinn", "et64", Rarity.UNCOMMON, mage.cards.e.ErhnamDjinn.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Erhnam Djinn", "gb64", Rarity.UNCOMMON, mage.cards.e.ErhnamDjinn.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Erhnam Djinn", "pp64", Rarity.UNCOMMON, mage.cards.e.ErhnamDjinn.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Eron the Relentless", "mj73sb", Rarity.UNCOMMON, mage.cards.e.EronTheRelentless.class)); + cards.add(new SetCardInfo("Essence Filter", "pp233sb", Rarity.COMMON, mage.cards.e.EssenceFilter.class)); + cards.add(new SetCardInfo("Feldon's Cane", "ll50sb", Rarity.UNCOMMON, mage.cards.f.FeldonsCane.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Feldon's Cane", "mj50", Rarity.UNCOMMON, mage.cards.f.FeldonsCane.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Feldon's Cane", "ml50", Rarity.UNCOMMON, mage.cards.f.FeldonsCane.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Feldon's Cane", "shr50sb", Rarity.UNCOMMON, mage.cards.f.FeldonsCane.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Fellwar Stone", "bl319", Rarity.UNCOMMON, mage.cards.f.FellwarStone.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Fellwar Stone", "et319", Rarity.UNCOMMON, mage.cards.f.FellwarStone.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Fellwar Stone", "mj319", Rarity.UNCOMMON, mage.cards.f.FellwarStone.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Fellwar Stone", "pp319", Rarity.UNCOMMON, mage.cards.f.FellwarStone.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Fellwar Stone", "pp319sb", Rarity.UNCOMMON, mage.cards.f.FellwarStone.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Fireball", "et192", Rarity.COMMON, mage.cards.f.Fireball.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Fireball", "gb192", Rarity.COMMON, mage.cards.f.Fireball.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Fireball", "mj192", Rarity.COMMON, mage.cards.f.Fireball.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", "bl376", Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", "bl377", Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", "bl378", Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", "pp376", Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", "pp377", Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", "pp378", Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Fountain of Youth", "mj98sb", Rarity.COMMON, mage.cards.f.FountainOfYouth.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Fountain of Youth", "ml98", Rarity.COMMON, mage.cards.f.FountainOfYouth.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Fountain of Youth", "shr98sb", Rarity.COMMON, mage.cards.f.FountainOfYouth.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Fyndhorn Elves", "bl244", Rarity.COMMON, mage.cards.f.FyndhornElves.class)); + cards.add(new SetCardInfo("Hallowed Ground", "ml29", Rarity.UNCOMMON, mage.cards.h.HallowedGround.class)); + cards.add(new SetCardInfo("Havenwood Battleground", "bl96", Rarity.UNCOMMON, mage.cards.h.HavenwoodBattleground.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Havenwood Battleground", "mj96", Rarity.UNCOMMON, mage.cards.h.HavenwoodBattleground.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Havenwood Battleground", "pp96", Rarity.UNCOMMON, mage.cards.h.HavenwoodBattleground.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Howling Mine", "mj325", Rarity.RARE, mage.cards.h.HowlingMine.class)); + cards.add(new SetCardInfo("Hurricane", "pp251", Rarity.UNCOMMON, mage.cards.h.Hurricane.class)); + cards.add(new SetCardInfo("Hydroblast", "ml72sb", Rarity.COMMON, mage.cards.h.Hydroblast.class)); + cards.add(new SetCardInfo("Hymn to Tourach", "gb38a", Rarity.COMMON, mage.cards.h.HymnToTourach.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Hymn to Tourach", "gb38b", Rarity.COMMON, mage.cards.h.HymnToTourach.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Hymn to Tourach", "gb38c", Rarity.COMMON, mage.cards.h.HymnToTourach.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Hymn to Tourach", "gb38d", Rarity.COMMON, mage.cards.h.HymnToTourach.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Hymn to Tourach", "ll38a", Rarity.COMMON, mage.cards.h.HymnToTourach.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Hymn to Tourach", "ll38b", Rarity.COMMON, mage.cards.h.HymnToTourach.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Hymn to Tourach", "ll38c", Rarity.COMMON, mage.cards.h.HymnToTourach.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Hymn to Tourach", "ll38d", Rarity.COMMON, mage.cards.h.HymnToTourach.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Hypnotic Specter", "gb142", Rarity.UNCOMMON, mage.cards.h.HypnoticSpecter.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Hypnotic Specter", "ll142", Rarity.UNCOMMON, mage.cards.h.HypnoticSpecter.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Icatian Town", "et15", Rarity.RARE, mage.cards.i.IcatianTown.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Icatian Town", "et15sb", Rarity.RARE, mage.cards.i.IcatianTown.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Icy Manipulator", "bl322", Rarity.UNCOMMON, mage.cards.i.IcyManipulator.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Icy Manipulator", "et322", Rarity.UNCOMMON, mage.cards.i.IcyManipulator.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Icy Manipulator", "mj322", Rarity.UNCOMMON, mage.cards.i.IcyManipulator.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Icy Manipulator", "ml322", Rarity.UNCOMMON, mage.cards.i.IcyManipulator.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Icy Manipulator", "pp322", Rarity.UNCOMMON, mage.cards.i.IcyManipulator.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Icy Manipulator", "shr322", Rarity.UNCOMMON, mage.cards.i.IcyManipulator.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Ihsan's Shade", "gb53", Rarity.UNCOMMON, mage.cards.i.IhsansShade.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Ihsan's Shade", "gb53sb", Rarity.UNCOMMON, mage.cards.i.IhsansShade.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Incinerate", "et194", Rarity.COMMON, mage.cards.i.Incinerate.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Incinerate", "mj194", Rarity.COMMON, mage.cards.i.Incinerate.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", "ml367", Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", "ml368", Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", "ml369", Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", "shr367", Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", "shr368", Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", "shr369", Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Ivory Tower", "bl328", Rarity.RARE, mage.cards.i.IvoryTower.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Ivory Tower", "ll328", Rarity.RARE, mage.cards.i.IvoryTower.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Ivory Tower", "mj328", Rarity.RARE, mage.cards.i.IvoryTower.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Ivory Tower", "ml328", Rarity.RARE, mage.cards.i.IvoryTower.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Ivory Tower", "pp328sb", Rarity.RARE, mage.cards.i.IvoryTower.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Ivory Tower", "shr328", Rarity.RARE, mage.cards.i.IvoryTower.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Jalum Tome", "ll54", Rarity.UNCOMMON, mage.cards.j.JalumTome.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Jalum Tome", "ll54sb", Rarity.UNCOMMON, mage.cards.j.JalumTome.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Jayemdae Tome", "et331", Rarity.RARE, mage.cards.j.JayemdaeTome.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Jayemdae Tome", "ml331", Rarity.RARE, mage.cards.j.JayemdaeTome.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Jester's Cap", "mj324", Rarity.RARE, mage.cards.j.JestersCap.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Jester's Cap", "ml324sb", Rarity.RARE, mage.cards.j.JestersCap.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Karma", "bl32sb", Rarity.UNCOMMON, mage.cards.k.Karma.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Karma", "pp32sb", Rarity.UNCOMMON, mage.cards.k.Karma.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Karplusan Forest", "et356", Rarity.RARE, mage.cards.k.KarplusanForest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Karplusan Forest", "gb356", Rarity.RARE, mage.cards.k.KarplusanForest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Karplusan Forest", "mj356", Rarity.RARE, mage.cards.k.KarplusanForest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Knight of Stromgald", "gb138", Rarity.UNCOMMON, mage.cards.k.KnightOfStromgald.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Knight of Stromgald", "ll138", Rarity.UNCOMMON, mage.cards.k.KnightOfStromgald.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Land Tax", "bl34", Rarity.RARE, mage.cards.l.LandTax.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Land Tax", "et34", Rarity.RARE, mage.cards.l.LandTax.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Land Tax", "ml34", Rarity.RARE, mage.cards.l.LandTax.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Land Tax", "pp34", Rarity.RARE, mage.cards.l.LandTax.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Land Tax", "pp34sb", Rarity.RARE, mage.cards.l.LandTax.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Land Tax", "shr34", Rarity.RARE, mage.cards.l.LandTax.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Lava Tubes", "gb358", Rarity.RARE, mage.cards.l.LavaTubes.class)); + cards.add(new SetCardInfo("Lightning Bolt", "et208", Rarity.COMMON, mage.cards.l.LightningBolt.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Lightning Bolt", "gb208", Rarity.COMMON, mage.cards.l.LightningBolt.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Lightning Bolt", "mj208", Rarity.COMMON, mage.cards.l.LightningBolt.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Llanowar Elves", "bl261", Rarity.COMMON, mage.cards.l.LlanowarElves.class)); + cards.add(new SetCardInfo("Meekstone", "ll335sb", Rarity.RARE, mage.cards.m.Meekstone.class)); + cards.add(new SetCardInfo("Memory Lapse", "shr32asb", Rarity.COMMON, mage.cards.m.MemoryLapse.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Memory Lapse", "shr32bsb", Rarity.COMMON, mage.cards.m.MemoryLapse.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Millstone", "ml336", Rarity.RARE, mage.cards.m.Millstone.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Millstone", "shr336", Rarity.RARE, mage.cards.m.Millstone.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mishra's Factory", "et361", Rarity.UNCOMMON, mage.cards.m.MishrasFactory.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mishra's Factory", "gb361", Rarity.UNCOMMON, mage.cards.m.MishrasFactory.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mishra's Factory", "mj361", Rarity.UNCOMMON, mage.cards.m.MishrasFactory.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mishra's Factory", "ml361", Rarity.UNCOMMON, mage.cards.m.MishrasFactory.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mishra's Factory", "pp361", Rarity.UNCOMMON, mage.cards.m.MishrasFactory.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mishra's Factory", "shr361", Rarity.UNCOMMON, mage.cards.m.MishrasFactory.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", "et373", Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", "et374", Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", "et375", Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", "mj373", Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", "mj374", Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", "mj375", Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Necropotence", "ll154", Rarity.RARE, mage.cards.n.Necropotence.class)); + cards.add(new SetCardInfo("Nevinyrral's Disk", "et338sb", Rarity.RARE, mage.cards.n.NevinyrralsDisk.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Nevinyrral's Disk", "gb338sb", Rarity.RARE, mage.cards.n.NevinyrralsDisk.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Nevinyrral's Disk", "ll338", Rarity.RARE, mage.cards.n.NevinyrralsDisk.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Nevinyrral's Disk", "ll338sb", Rarity.RARE, mage.cards.n.NevinyrralsDisk.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Nevinyrral's Disk", "pp338", Rarity.RARE, mage.cards.n.NevinyrralsDisk.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Order of Leitbur", "bl16a", Rarity.COMMON, mage.cards.o.OrderOfLeitbur.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Order of Leitbur", "bl16b", Rarity.COMMON, mage.cards.o.OrderOfLeitbur.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Order of Leitbur", "bl16csb", Rarity.COMMON, mage.cards.o.OrderOfLeitbur.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Order of the Ebon Hand", "gb42a", Rarity.COMMON, mage.cards.o.OrderOfTheEbonHand.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Order of the Ebon Hand", "gb42b", Rarity.COMMON, mage.cards.o.OrderOfTheEbonHand.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Order of the Ebon Hand", "gb42c", Rarity.COMMON, mage.cards.o.OrderOfTheEbonHand.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Order of the Ebon Hand", "ll42a", Rarity.COMMON, mage.cards.o.OrderOfTheEbonHand.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Order of the Ebon Hand", "ll42b", Rarity.COMMON, mage.cards.o.OrderOfTheEbonHand.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Order of the Ebon Hand", "ll42c", Rarity.COMMON, mage.cards.o.OrderOfTheEbonHand.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Orgg", "et63", Rarity.RARE, mage.cards.o.Orgg.class)); + cards.add(new SetCardInfo("Plains", "bl364", Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plains", "bl365", Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plains", "bl366", Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plains", "et364", Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plains", "et365", Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plains", "et366", Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plains", "mj364", Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plains", "mj365", Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plains", "mj366", Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plains", "ml364", Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plains", "ml365", Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plains", "ml366", Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plains", "pp364", Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plains", "pp365", Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plains", "pp366", Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plains", "shr364", Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plains", "shr365", Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plains", "shr366", Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Power Sink", "shr93", Rarity.COMMON, mage.cards.p.PowerSink.class)); + cards.add(new SetCardInfo("Pyroblast", "mj213sb", Rarity.COMMON, mage.cards.p.Pyroblast.class)); + cards.add(new SetCardInfo("Recall", "ml24", Rarity.UNCOMMON, mage.cards.r.Recall.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Recall", "shr24", Rarity.UNCOMMON, mage.cards.r.Recall.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Red Elemental Blast", "gb218sb", Rarity.COMMON, mage.cards.r.RedElementalBlast.class)); + cards.add(new SetCardInfo("Reverse Damage", "et45sb", Rarity.RARE, mage.cards.r.ReverseDamage.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Reverse Damage", "pp45sb", Rarity.RARE, mage.cards.r.ReverseDamage.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Ring of Renewal", "et89sb", Rarity.RARE, mage.cards.r.RingOfRenewal.class)); + cards.add(new SetCardInfo("Ruins of Trokair", "bl100", Rarity.UNCOMMON, mage.cards.r.RuinsOfTrokair.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Ruins of Trokair", "ml100", Rarity.UNCOMMON, mage.cards.r.RuinsOfTrokair.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Ruins of Trokair", "pp100", Rarity.UNCOMMON, mage.cards.r.RuinsOfTrokair.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Ruins of Trokair", "shr100", Rarity.UNCOMMON, mage.cards.r.RuinsOfTrokair.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Safe Haven", "ll118sb", Rarity.RARE, mage.cards.s.SafeHaven.class)); + cards.add(new SetCardInfo("Sea Sprite", "ml38sb", Rarity.UNCOMMON, mage.cards.s.SeaSprite.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Sea Sprite", "shr38sb", Rarity.UNCOMMON, mage.cards.s.SeaSprite.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Sengir Vampire", "gb160", Rarity.UNCOMMON, mage.cards.s.SengirVampire.class)); + cards.add(new SetCardInfo("Serra Angel", "bl50", Rarity.UNCOMMON, mage.cards.s.SerraAngel.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Serra Angel", "et50", Rarity.UNCOMMON, mage.cards.s.SerraAngel.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Serrated Arrows", "et110sb", Rarity.COMMON, mage.cards.s.SerratedArrows.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Serrated Arrows", "gb110sb", Rarity.COMMON, mage.cards.s.SerratedArrows.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Serrated Arrows", "ll110", Rarity.COMMON, mage.cards.s.SerratedArrows.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Serrated Arrows", "ll110sb", Rarity.COMMON, mage.cards.s.SerratedArrows.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Serrated Arrows", "mj110sb", Rarity.COMMON, mage.cards.s.SerratedArrows.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Serrated Arrows", "ml110sb", Rarity.COMMON, mage.cards.s.SerratedArrows.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Serrated Arrows", "pp110sb", Rarity.COMMON, mage.cards.s.SerratedArrows.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Shatter", "gb219sb", Rarity.COMMON, mage.cards.s.Shatter.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Shatter", "mj219", Rarity.COMMON, mage.cards.s.Shatter.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Shatter", "mj219sb", Rarity.COMMON, mage.cards.s.Shatter.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Soul Burn", "ll161", Rarity.COMMON, mage.cards.s.SoulBurn.class)); + cards.add(new SetCardInfo("Spectral Bears", "bl98", Rarity.UNCOMMON, mage.cards.s.SpectralBears.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Spectral Bears", "pp98", Rarity.UNCOMMON, mage.cards.s.SpectralBears.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Spell Blast", "shr103", Rarity.COMMON, mage.cards.s.SpellBlast.class)); + cards.add(new SetCardInfo("Steal Artifact", "ml105sb", Rarity.UNCOMMON, mage.cards.s.StealArtifact.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Steal Artifact", "shr105sb", Rarity.UNCOMMON, mage.cards.s.StealArtifact.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Stormbind", "et304", Rarity.RARE, mage.cards.s.Stormbind.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Stormbind", "mj304", Rarity.RARE, mage.cards.s.Stormbind.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Strip Mine", "bl363", Rarity.UNCOMMON, mage.cards.s.StripMine.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Strip Mine", "ll363", Rarity.UNCOMMON, mage.cards.s.StripMine.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Strip Mine", "ml363", Rarity.UNCOMMON, mage.cards.s.StripMine.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Strip Mine", "pp363", Rarity.UNCOMMON, mage.cards.s.StripMine.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Stromgald Cabal", "ll166sb", Rarity.RARE, mage.cards.s.StromgaldCabal.class)); + cards.add(new SetCardInfo("Sulfurous Springs", "gb360", Rarity.RARE, mage.cards.s.SulfurousSprings.class)); + cards.add(new SetCardInfo("Svyelunite Temple", "ml102", Rarity.UNCOMMON, mage.cards.s.SvyeluniteTemple.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Svyelunite Temple", "shr102", Rarity.UNCOMMON, mage.cards.s.SvyeluniteTemple.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", "gb370", Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", "gb371", Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", "gb372", Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", "ll370", Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", "ll371", Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", "ll372", Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swords to Plowshares", "bl52", Rarity.UNCOMMON, mage.cards.s.SwordsToPlowshares.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swords to Plowshares", "et52", Rarity.UNCOMMON, mage.cards.s.SwordsToPlowshares.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swords to Plowshares", "et52sb", Rarity.UNCOMMON, mage.cards.s.SwordsToPlowshares.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swords to Plowshares", "mj52", Rarity.UNCOMMON, mage.cards.s.SwordsToPlowshares.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swords to Plowshares", "ml52", Rarity.UNCOMMON, mage.cards.s.SwordsToPlowshares.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swords to Plowshares", "pp52", Rarity.UNCOMMON, mage.cards.s.SwordsToPlowshares.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swords to Plowshares", "shr52", Rarity.UNCOMMON, mage.cards.s.SwordsToPlowshares.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Sylvan Library", "bl273", Rarity.RARE, mage.cards.s.SylvanLibrary.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Sylvan Library", "pp273", Rarity.RARE, mage.cards.s.SylvanLibrary.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("The Rack", "ll352sb", Rarity.UNCOMMON, mage.cards.t.TheRack.class)); + cards.add(new SetCardInfo("Torture", "ll59sb", Rarity.COMMON, mage.cards.t.Torture.class)); + cards.add(new SetCardInfo("Tranquility", "gb277sb", Rarity.COMMON, mage.cards.t.Tranquility.class)); + cards.add(new SetCardInfo("Truce", "shr20sb", Rarity.RARE, mage.cards.t.Truce.class)); + cards.add(new SetCardInfo("Whirling Dervish", "bl288sb", Rarity.UNCOMMON, mage.cards.w.WhirlingDervish.class)); + cards.add(new SetCardInfo("Winter Orb", "mj358", Rarity.RARE, mage.cards.w.WinterOrb.class)); + cards.add(new SetCardInfo("Wizards' School", "ml115", Rarity.UNCOMMON, mage.cards.w.WizardsSchool.class)); + cards.add(new SetCardInfo("Wrath of God", "bl58", Rarity.RARE, mage.cards.w.WrathOfGod.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Wrath of God", "bl58sb", Rarity.RARE, mage.cards.w.WrathOfGod.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Wrath of God", "et58", Rarity.RARE, mage.cards.w.WrathOfGod.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Wrath of God", "ml58", Rarity.RARE, mage.cards.w.WrathOfGod.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Wrath of God", "pp58", Rarity.RARE, mage.cards.w.WrathOfGod.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Wrath of God", "shr58", Rarity.RARE, mage.cards.w.WrathOfGod.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Zur's Weirding", "et110", Rarity.RARE, mage.cards.z.ZursWeirding.class)); + cards.add(new SetCardInfo("Zuran Orb", "bl350", Rarity.UNCOMMON, mage.cards.z.ZuranOrb.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Zuran Orb", "et350", Rarity.UNCOMMON, mage.cards.z.ZuranOrb.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Zuran Orb", "gb350", Rarity.UNCOMMON, mage.cards.z.ZuranOrb.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Zuran Orb", "ll350", Rarity.UNCOMMON, mage.cards.z.ZuranOrb.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Zuran Orb", "mj350", Rarity.UNCOMMON, mage.cards.z.ZuranOrb.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Zuran Orb", "ml350", Rarity.UNCOMMON, mage.cards.z.ZuranOrb.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Zuran Orb", "pp350", Rarity.UNCOMMON, mage.cards.z.ZuranOrb.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Zuran Orb", "shr350", Rarity.UNCOMMON, mage.cards.z.ZuranOrb.class, NON_FULL_USE_VARIOUS)); + } +} diff --git a/Mage.Sets/src/mage/sets/ProTourPromos.java b/Mage.Sets/src/mage/sets/ProTourPromos.java index 9c38aea0ab5..5ecb5a09fbc 100644 --- a/Mage.Sets/src/mage/sets/ProTourPromos.java +++ b/Mage.Sets/src/mage/sets/ProTourPromos.java @@ -6,7 +6,8 @@ import mage.constants.Rarity; import mage.constants.SetType; /** - * + * https://scryfall.com/sets/ppro + * https://mtg.gamepedia.com/Promotional_cards#Pro_tour_cards * @author JayDi85 */ public final class ProTourPromos extends ExpansionSet { @@ -21,16 +22,27 @@ public final class ProTourPromos extends ExpansionSet { super("Pro Tour Promos", "PPRO", ExpansionSet.buildDate(2007, 2, 9), SetType.PROMOTIONAL); this.hasBoosters = false; this.hasBasicLands = false; - // https://mtg.gamepedia.com/Promotional_cards#Pro_tour_cards + /* Commented cards are Japanese-only printings. + * Stance on non-english cards: + * https://github.com/magefree/mage/pull/6190#issuecomment-582353697 + * https://github.com/magefree/mage/pull/6190#issuecomment-582354790 + */ + cards.add(new SetCardInfo("Aether Vial", "2020-3", Rarity.RARE, mage.cards.a.AetherVial.class)); cards.add(new SetCardInfo("Ajani Goldmane", 2011, Rarity.MYTHIC, mage.cards.a.AjaniGoldmane.class)); + cards.add(new SetCardInfo("Arcbound Ravager", 2019, Rarity.RARE, mage.cards.a.ArcboundRavager.class)); cards.add(new SetCardInfo("Avatar of Woe", 2010, Rarity.RARE, mage.cards.a.AvatarOfWoe.class)); + cards.add(new SetCardInfo("Cryptic Command", "2020-1", Rarity.RARE, mage.cards.c.CrypticCommand.class)); cards.add(new SetCardInfo("Emrakul, the Aeons Torn", 2017, Rarity.MYTHIC, mage.cards.e.EmrakulTheAeonsTorn.class)); cards.add(new SetCardInfo("Eternal Dragon", 2007, Rarity.RARE, mage.cards.e.EternalDragon.class)); + //cards.add(new SetCardInfo("Experimental Frenzy", "2019-2", Rarity.RARE, mage.cards.e.ExperimentalFrenzy.class)); cards.add(new SetCardInfo("Liliana of the Veil", 2015, Rarity.MYTHIC, mage.cards.l.LilianaOfTheVeil.class)); cards.add(new SetCardInfo("Mirari's Wake", 2008, Rarity.RARE, mage.cards.m.MirarisWake.class)); cards.add(new SetCardInfo("Noble Hierarch", 2018, Rarity.RARE, mage.cards.n.NobleHierarch.class)); + //cards.add(new SetCardInfo("Pteramander", "2019-1", Rarity.UNCOMMON, mage.cards.p.Pteramander.class)); cards.add(new SetCardInfo("Snapcaster Mage", 2016, Rarity.MYTHIC, mage.cards.s.SnapcasterMage.class)); + cards.add(new SetCardInfo("Surgical Extraction", "2020-2", Rarity.RARE, mage.cards.s.SurgicalExtraction.class)); cards.add(new SetCardInfo("Treva, the Renewer", 2009, Rarity.RARE, mage.cards.t.TrevaTheRenewer.class)); + //cards.add(new SetCardInfo("Vraska, Golgari Queen", "2019-3", Rarity.MYTHIC, mage.cards.v.VraskaGolgariQueen.class)); } } diff --git a/Mage.Sets/src/mage/sets/RavnicaAllegiancePromos.java b/Mage.Sets/src/mage/sets/RavnicaAllegiancePromos.java new file mode 100644 index 00000000000..2034e2cd029 --- /dev/null +++ b/Mage.Sets/src/mage/sets/RavnicaAllegiancePromos.java @@ -0,0 +1,103 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/prna + */ +public class RavnicaAllegiancePromos extends ExpansionSet { + + private static final RavnicaAllegiancePromos instance = new RavnicaAllegiancePromos(); + + public static RavnicaAllegiancePromos getInstance() { + return instance; + } + + private RavnicaAllegiancePromos() { + super("Ravnica Allegiance Promos", "PRNA", ExpansionSet.buildDate(2019, 1, 25), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Absorb", "151p", Rarity.RARE, mage.cards.a.Absorb.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Absorb", "151s", Rarity.RARE, mage.cards.a.Absorb.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Amplifire", "92s", Rarity.RARE, mage.cards.a.Amplifire.class)); + cards.add(new SetCardInfo("Awaken the Erstwhile", "61s", Rarity.RARE, mage.cards.a.AwakenTheErstwhile.class)); + cards.add(new SetCardInfo("Bedeck // Bedazzle", "221p", Rarity.RARE, mage.cards.b.BedeckBedazzle.class)); + cards.add(new SetCardInfo("Bedevil", "157p", Rarity.RARE, mage.cards.b.Bedevil.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Bedevil", "157s", Rarity.RARE, mage.cards.b.Bedevil.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Benthic Biomancer", "32p", Rarity.RARE, mage.cards.b.BenthicBiomancer.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Benthic Biomancer", "32s", Rarity.RARE, mage.cards.b.BenthicBiomancer.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Biogenic Ooze", "122p", Rarity.MYTHIC, mage.cards.b.BiogenicOoze.class)); + cards.add(new SetCardInfo("Biomancer's Familiar", "158s", Rarity.RARE, mage.cards.b.BiomancersFamiliar.class)); + cards.add(new SetCardInfo("Blood Crypt", "245p", Rarity.RARE, mage.cards.b.BloodCrypt.class)); + cards.add(new SetCardInfo("Breeding Pool", "246p", Rarity.RARE, mage.cards.b.BreedingPool.class)); + cards.add(new SetCardInfo("Cindervines", "161p", Rarity.RARE, mage.cards.c.Cindervines.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Cindervines", "161s", Rarity.RARE, mage.cards.c.Cindervines.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Consecrate // Consume", "224p", Rarity.UNCOMMON, mage.cards.c.ConsecrateConsume.class)); + cards.add(new SetCardInfo("Deputy of Detention", "165p", Rarity.RARE, mage.cards.d.DeputyOfDetention.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Deputy of Detention", "165s", Rarity.RARE, mage.cards.d.DeputyOfDetention.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Electrodominance", "99p", Rarity.RARE, mage.cards.e.Electrodominance.class)); + cards.add(new SetCardInfo("Emergency Powers", "169s", Rarity.MYTHIC, mage.cards.e.EmergencyPowers.class)); + cards.add(new SetCardInfo("End-Raze Forerunners", "124s", Rarity.RARE, mage.cards.e.EndRazeForerunners.class)); + cards.add(new SetCardInfo("Ethereal Absolution", "170s", Rarity.RARE, mage.cards.e.EtherealAbsolution.class)); + cards.add(new SetCardInfo("Font of Agonies", "74s", Rarity.RARE, mage.cards.f.FontOfAgonies.class)); + cards.add(new SetCardInfo("Gate Colossus", 232, Rarity.UNCOMMON, mage.cards.g.GateColossus.class)); + cards.add(new SetCardInfo("Godless Shrine", "248p", Rarity.RARE, mage.cards.g.GodlessShrine.class)); + cards.add(new SetCardInfo("Growth Spiral", 178, Rarity.COMMON, mage.cards.g.GrowthSpiral.class)); + cards.add(new SetCardInfo("Growth-Chamber Guardian", "128p", Rarity.RARE, mage.cards.g.GrowthChamberGuardian.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Growth-Chamber Guardian", "128s", Rarity.RARE, mage.cards.g.GrowthChamberGuardian.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Gruul Spellbreaker", "179p", Rarity.RARE, mage.cards.g.GruulSpellbreaker.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Gruul Spellbreaker", "179s", Rarity.RARE, mage.cards.g.GruulSpellbreaker.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Guardian Project", "130p", Rarity.RARE, mage.cards.g.GuardianProject.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Guardian Project", "130s", Rarity.RARE, mage.cards.g.GuardianProject.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Gutterbones", "76p", Rarity.RARE, mage.cards.g.Gutterbones.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Gutterbones", "76s", Rarity.RARE, mage.cards.g.Gutterbones.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Hallowed Fountain", "251p", Rarity.RARE, mage.cards.h.HallowedFountain.class)); + cards.add(new SetCardInfo("Hero of Precinct One", "11p", Rarity.RARE, mage.cards.h.HeroOfPrecinctOne.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Hero of Precinct One", "11s", Rarity.RARE, mage.cards.h.HeroOfPrecinctOne.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Hydroid Krasis", "183p", Rarity.MYTHIC, mage.cards.h.HydroidKrasis.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Hydroid Krasis", "183s", Rarity.MYTHIC, mage.cards.h.HydroidKrasis.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Immolation Shaman", "106s", Rarity.RARE, mage.cards.i.ImmolationShaman.class)); + cards.add(new SetCardInfo("Incubation Druid", "131p", Rarity.RARE, mage.cards.i.IncubationDruid.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Incubation Druid", "131s", Rarity.RARE, mage.cards.i.IncubationDruid.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Judith, the Scourge Diva", "185p", Rarity.RARE, mage.cards.j.JudithTheScourgeDiva.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Judith, the Scourge Diva", "185s", Rarity.RARE, mage.cards.j.JudithTheScourgeDiva.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Kaya's Wrath", "187p", Rarity.RARE, mage.cards.k.KayasWrath.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Kaya's Wrath", "187s", Rarity.RARE, mage.cards.k.KayasWrath.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Kaya, Orzhov Usurper", "186p", Rarity.MYTHIC, mage.cards.k.KayaOrzhovUsurper.class)); + cards.add(new SetCardInfo("Lavinia, Azorius Renegade", 189, Rarity.RARE, mage.cards.l.LaviniaAzoriusRenegade.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Lavinia, Azorius Renegade", "189s", Rarity.RARE, mage.cards.l.LaviniaAzoriusRenegade.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Light Up the Stage", 107, Rarity.UNCOMMON, mage.cards.l.LightUpTheStage.class)); + cards.add(new SetCardInfo("Lumbering Battlement", "15s", Rarity.RARE, mage.cards.l.LumberingBattlement.class)); + cards.add(new SetCardInfo("Mass Manipulation", "42p", Rarity.RARE, mage.cards.m.MassManipulation.class)); + cards.add(new SetCardInfo("Mirror March", "108s", Rarity.RARE, mage.cards.m.MirrorMarch.class)); + cards.add(new SetCardInfo("Mortify", 192, Rarity.UNCOMMON, mage.cards.m.Mortify.class)); + cards.add(new SetCardInfo("Nikya of the Old Ways", "193s", Rarity.RARE, mage.cards.n.NikyaOfTheOldWays.class)); + cards.add(new SetCardInfo("Plaza of Harmony", "254p", Rarity.RARE, mage.cards.p.PlazaOfHarmony.class)); + cards.add(new SetCardInfo("Precognitive Perception", "45s", Rarity.RARE, mage.cards.p.PrecognitivePerception.class)); + cards.add(new SetCardInfo("Priest of Forgotten Gods", "83p", Rarity.RARE, mage.cards.p.PriestOfForgottenGods.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Priest of Forgotten Gods", "83s", Rarity.RARE, mage.cards.p.PriestOfForgottenGods.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Rakdos Firewheeler", 197, Rarity.UNCOMMON, mage.cards.r.RakdosFirewheeler.class)); + cards.add(new SetCardInfo("Rakdos, the Showstopper", "199s", Rarity.MYTHIC, mage.cards.r.RakdosTheShowstopper.class)); + cards.add(new SetCardInfo("Rampage of the Clans", "134s", Rarity.RARE, mage.cards.r.RampageOfTheClans.class)); + cards.add(new SetCardInfo("Ravager Wurm", "200s", Rarity.MYTHIC, mage.cards.r.RavagerWurm.class)); + cards.add(new SetCardInfo("Rix Maadi Reveler", "109s", Rarity.RARE, mage.cards.r.RixMaadiReveler.class)); + cards.add(new SetCardInfo("Seraph of the Scales", "205p", Rarity.MYTHIC, mage.cards.s.SeraphOfTheScales.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Seraph of the Scales", "205s", Rarity.MYTHIC, mage.cards.s.SeraphOfTheScales.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Simic Ascendancy", 207, Rarity.RARE, mage.cards.s.SimicAscendancy.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Simic Ascendancy", "207s", Rarity.RARE, mage.cards.s.SimicAscendancy.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Skarrgan Hellkite", "114p", Rarity.MYTHIC, mage.cards.s.SkarrganHellkite.class)); + cards.add(new SetCardInfo("Smothering Tithe", "22p", Rarity.RARE, mage.cards.s.SmotheringTithe.class)); + cards.add(new SetCardInfo("Sphinx of Foresight", "55s", Rarity.RARE, mage.cards.s.SphinxOfForesight.class)); + cards.add(new SetCardInfo("Stomping Ground", "259p", Rarity.RARE, mage.cards.s.StompingGround.class)); + cards.add(new SetCardInfo("Teysa Karlov", "212p", Rarity.RARE, mage.cards.t.TeysaKarlov.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Teysa Karlov", "212s", Rarity.RARE, mage.cards.t.TeysaKarlov.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Theater of Horrors", "213s", Rarity.RARE, mage.cards.t.TheaterOfHorrors.class)); + cards.add(new SetCardInfo("Tithe Taker", "27p", Rarity.RARE, mage.cards.t.TitheTaker.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Tithe Taker", "27s", Rarity.RARE, mage.cards.t.TitheTaker.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Unbreakable Formation", "29s", Rarity.RARE, mage.cards.u.UnbreakableFormation.class)); + cards.add(new SetCardInfo("Zegana, Utopian Speaker", "214s", Rarity.RARE, mage.cards.z.ZeganaUtopianSpeaker.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/RavnicaAllegianceRavnicaWeekend.java b/Mage.Sets/src/mage/sets/RavnicaAllegianceRavnicaWeekend.java new file mode 100644 index 00000000000..11ad5554133 --- /dev/null +++ b/Mage.Sets/src/mage/sets/RavnicaAllegianceRavnicaWeekend.java @@ -0,0 +1,34 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/prw2 + */ +public class RavnicaAllegianceRavnicaWeekend extends ExpansionSet { + + private static final RavnicaAllegianceRavnicaWeekend instance = new RavnicaAllegianceRavnicaWeekend(); + + public static RavnicaAllegianceRavnicaWeekend getInstance() { + return instance; + } + + private RavnicaAllegianceRavnicaWeekend() { + super("Ravnica Allegiance Ravnica Weekend", "PRW2", ExpansionSet.buildDate(2019, 2, 16), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = true; + + cards.add(new SetCardInfo("Forest", "B08", Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", "B09", Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", "B02", Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", "B10", Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", "B06", Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", "B07", Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plains", "B01", Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plains", "B03", Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", "B04", Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", "B05", Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + } +} diff --git a/Mage.Sets/src/mage/sets/ReleaseEvents.java b/Mage.Sets/src/mage/sets/ReleaseEvents.java new file mode 100644 index 00000000000..7d9afc40b0f --- /dev/null +++ b/Mage.Sets/src/mage/sets/ReleaseEvents.java @@ -0,0 +1,39 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/prel + */ +public class ReleaseEvents extends ExpansionSet { + + private static final ReleaseEvents instance = new ReleaseEvents(); + + public static ReleaseEvents getInstance() { + return instance; + } + + private ReleaseEvents() { + super("Release Events", "PREL", ExpansionSet.buildDate(2007, 10, 12), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + // Silver-bordered card not implemented + // cards.add(new SetCardInfo("Ass Whuppin'", 2, Rarity.RARE, mage.cards.a.AssWhuppin.class)); + cards.add(new SetCardInfo("Azorius Guildmage", 9, Rarity.RARE, mage.cards.a.AzoriusGuildmage.class)); + cards.add(new SetCardInfo("Budoka Pupil", "3a", Rarity.UNCOMMON, mage.cards.b.BudokaPupil.class)); + cards.add(new SetCardInfo("Dimir Guildmage", 7, Rarity.RARE, mage.cards.d.DimirGuildmage.class)); + cards.add(new SetCardInfo("Force of Nature", 5, Rarity.RARE, mage.cards.f.ForceOfNature.class)); + cards.add(new SetCardInfo("Ghost-Lit Raider", 4, Rarity.RARE, mage.cards.g.GhostLitRaider.class)); + cards.add(new SetCardInfo("Gruul Guildmage", 8, Rarity.RARE, mage.cards.g.GruulGuildmage.class)); + cards.add(new SetCardInfo("Hedge Troll", 11, Rarity.RARE, mage.cards.h.HedgeTroll.class)); + cards.add(new SetCardInfo("Rukh Egg", 1, Rarity.RARE, mage.cards.r.RukhEgg.class)); + // Russian-only printing + //cards.add(new SetCardInfo("Shivan Dragon", 6, Rarity.RARE, mage.cards.s.ShivanDragon.class)); + cards.add(new SetCardInfo("Shriekmaw", 13, Rarity.RARE, mage.cards.s.Shriekmaw.class)); + cards.add(new SetCardInfo("Storm Entity", 12, Rarity.RARE, mage.cards.s.StormEntity.class)); + cards.add(new SetCardInfo("Sudden Shock", 10, Rarity.RARE, mage.cards.s.SuddenShock.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/ResalePromos.java b/Mage.Sets/src/mage/sets/ResalePromos.java new file mode 100644 index 00000000000..35ce780add0 --- /dev/null +++ b/Mage.Sets/src/mage/sets/ResalePromos.java @@ -0,0 +1,53 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/pres + * Stance on non-english cards: + * https://github.com/magefree/mage/pull/6190#issuecomment-582353697 + * https://github.com/magefree/mage/pull/6190#issuecomment-582354790 + */ +public class ResalePromos extends ExpansionSet { + + private static final ResalePromos instance = new ResalePromos(); + + public static ResalePromos getInstance() { + return instance; + } + + private ResalePromos() { + super("Resale Promos", "PRES", ExpansionSet.buildDate(2019, 7, 1), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Angel of Glory's Rise", "A9", Rarity.RARE, mage.cards.a.AngelOfGlorysRise.class)); + cards.add(new SetCardInfo("Angelic Skirmisher", "A11", Rarity.RARE, mage.cards.a.AngelicSkirmisher.class)); + cards.add(new SetCardInfo("Atarka, World Render", 149, Rarity.RARE, mage.cards.a.AtarkaWorldRender.class)); + cards.add(new SetCardInfo("Beast Whisperer", "123*", Rarity.RARE, mage.cards.b.BeastWhisperer.class)); + cards.add(new SetCardInfo("Brion Stoutarm", "A2", Rarity.RARE, mage.cards.b.BrionStoutarm.class)); + cards.add(new SetCardInfo("Bristling Hydra", 147, Rarity.RARE, mage.cards.b.BristlingHydra.class)); + cards.add(new SetCardInfo("Broodmate Dragon", "A3", Rarity.RARE, mage.cards.b.BroodmateDragon.class)); + cards.add(new SetCardInfo("Curator of Mysteries", "49*", Rarity.RARE, mage.cards.c.CuratorOfMysteries.class)); + cards.add(new SetCardInfo("Etali, Primal Storm", "100*", Rarity.RARE, mage.cards.e.EtaliPrimalStorm.class)); + cards.add(new SetCardInfo("Felidar Sovereign", 26, Rarity.RARE, mage.cards.f.FelidarSovereign.class)); + cards.add(new SetCardInfo("Genesis Hydra", 176, Rarity.RARE, mage.cards.g.GenesisHydra.class)); + // Japanese-only printing + //cards.add(new SetCardInfo("Goblin Chieftain", "141*", Rarity.RARE, mage.cards.g.GoblinChieftain.class)); + cards.add(new SetCardInfo("Hamletback Goliath", "A10", Rarity.RARE, mage.cards.h.HamletbackGoliath.class)); + cards.add(new SetCardInfo("Jaya Ballard, Task Mage", "A1", Rarity.RARE, mage.cards.j.JayaBallardTaskMage.class)); + cards.add(new SetCardInfo("Knight Exemplar", "A7", Rarity.RARE, mage.cards.k.KnightExemplar.class)); + cards.add(new SetCardInfo("Lathliss, Dragon Queen", "149*", Rarity.RARE, mage.cards.l.LathlissDragonQueen.class)); + // Japanese-only printings + //cards.add(new SetCardInfo("Loam Lion", "13*", Rarity.UNCOMMON, mage.cards.l.LoamLion.class)); + //cards.add(new SetCardInfo("Oran-Rief, the Vastwood", "221*", Rarity.RARE, mage.cards.o.OranRiefTheVastwood.class)); + cards.add(new SetCardInfo("Outland Colossus", 193, Rarity.RARE, mage.cards.o.OutlandColossus.class)); + cards.add(new SetCardInfo("Retaliator Griffin", "A4", Rarity.RARE, mage.cards.r.RetaliatorGriffin.class)); + cards.add(new SetCardInfo("Sunblast Angel", "A8", Rarity.RARE, mage.cards.s.SunblastAngel.class)); + cards.add(new SetCardInfo("Terastodon", "A6", Rarity.RARE, mage.cards.t.Terastodon.class)); + cards.add(new SetCardInfo("Thalia's Lancers", 47, Rarity.RARE, mage.cards.t.ThaliasLancers.class)); + cards.add(new SetCardInfo("Xathrid Necromancer", "A12", Rarity.RARE, mage.cards.x.XathridNecromancer.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/ReturnToRavnicaPromos.java b/Mage.Sets/src/mage/sets/ReturnToRavnicaPromos.java new file mode 100644 index 00000000000..ae18bd37b7f --- /dev/null +++ b/Mage.Sets/src/mage/sets/ReturnToRavnicaPromos.java @@ -0,0 +1,34 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/prtr + */ +public class ReturnToRavnicaPromos extends ExpansionSet { + + private static final ReturnToRavnicaPromos instance = new ReturnToRavnicaPromos(); + + public static ReturnToRavnicaPromos getInstance() { + return instance; + } + + private ReturnToRavnicaPromos() { + super("Return to Ravnica Promos", "PRTR", ExpansionSet.buildDate(2012, 10, 5), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Archon of the Triumvirate", 142, Rarity.RARE, mage.cards.a.ArchonOfTheTriumvirate.class)); + cards.add(new SetCardInfo("Carnival Hellsteed", 147, Rarity.RARE, mage.cards.c.CarnivalHellsteed.class)); + cards.add(new SetCardInfo("Corpsejack Menace", 152, Rarity.RARE, mage.cards.c.CorpsejackMenace.class)); + cards.add(new SetCardInfo("Cryptborn Horror", 212, Rarity.RARE, mage.cards.c.CryptbornHorror.class)); + cards.add(new SetCardInfo("Deadbridge Goliath", 120, Rarity.RARE, mage.cards.d.DeadbridgeGoliath.class)); + cards.add(new SetCardInfo("Dreg Mangler", 158, Rarity.UNCOMMON, mage.cards.d.DregMangler.class)); + cards.add(new SetCardInfo("Dryad Militant", 214, Rarity.UNCOMMON, mage.cards.d.DryadMilitant.class)); + cards.add(new SetCardInfo("Grove of the Guardian", 240, Rarity.RARE, mage.cards.g.GroveOfTheGuardian.class)); + cards.add(new SetCardInfo("Hypersonic Dragon", 170, Rarity.RARE, mage.cards.h.HypersonicDragon.class)); + cards.add(new SetCardInfo("Supreme Verdict", "*201", Rarity.RARE, mage.cards.s.SupremeVerdict.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/RiseOfTheEldraziPromos.java b/Mage.Sets/src/mage/sets/RiseOfTheEldraziPromos.java new file mode 100644 index 00000000000..7f468c39f56 --- /dev/null +++ b/Mage.Sets/src/mage/sets/RiseOfTheEldraziPromos.java @@ -0,0 +1,32 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/proe + */ +public class RiseOfTheEldraziPromos extends ExpansionSet { + + private static final RiseOfTheEldraziPromos instance = new RiseOfTheEldraziPromos(); + + public static RiseOfTheEldraziPromos getInstance() { + return instance; + } + + private RiseOfTheEldraziPromos() { + super("Rise of the Eldrazi Promos", "PROE", ExpansionSet.buildDate(2010, 7, 30), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Deathless Angel", 49, Rarity.RARE, mage.cards.d.DeathlessAngel.class)); + cards.add(new SetCardInfo("Emrakul, the Aeons Torn", "*4", Rarity.RARE, mage.cards.e.EmrakulTheAeonsTorn.class)); + // Guul Draz Assassin actually uses regular ASCII * + cards.add(new SetCardInfo("Guul Draz Assassin", "*112", Rarity.RARE, mage.cards.g.GuulDrazAssassin.class)); + cards.add(new SetCardInfo("Lord of Shatterskull Pass", "*156", Rarity.RARE, mage.cards.l.LordOfShatterskullPass.class)); + // Japanese-only printing, actually uses regular ASCII * + //cards.add(new SetCardInfo("Pestilence Demon", "*124", Rarity.RARE, mage.cards.p.PestilenceDemon.class)); + cards.add(new SetCardInfo("Staggershock", 48, Rarity.RARE, mage.cards.s.Staggershock.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/RivalsOfIxalan.java b/Mage.Sets/src/mage/sets/RivalsOfIxalan.java index e0995645d6e..d1955c54eed 100644 --- a/Mage.Sets/src/mage/sets/RivalsOfIxalan.java +++ b/Mage.Sets/src/mage/sets/RivalsOfIxalan.java @@ -39,10 +39,10 @@ public final class RivalsOfIxalan extends ExpansionSet { cards.add(new SetCardInfo("Aquatic Incursion", 32, Rarity.UNCOMMON, mage.cards.a.AquaticIncursion.class)); cards.add(new SetCardInfo("Arch of Orazca", 185, Rarity.RARE, mage.cards.a.ArchOfOrazca.class)); cards.add(new SetCardInfo("Arterial Flow", 62, Rarity.UNCOMMON, mage.cards.a.ArterialFlow.class)); - cards.add(new SetCardInfo("Atzal, Cave of Eternity", "160b", Rarity.RARE, mage.cards.a.AtzalCaveOfEternity.class)); + cards.add(new SetCardInfo("Atzal, Cave of Eternity", 160, Rarity.RARE, mage.cards.a.AtzalCaveOfEternity.class)); cards.add(new SetCardInfo("Atzocan Seer", 153, Rarity.UNCOMMON, mage.cards.a.AtzocanSeer.class)); cards.add(new SetCardInfo("Awakened Amalgam", 175, Rarity.RARE, mage.cards.a.AwakenedAmalgam.class)); - cards.add(new SetCardInfo("Azor's Gateway", "176a", Rarity.MYTHIC, mage.cards.a.AzorsGateway.class)); + cards.add(new SetCardInfo("Azor's Gateway", 176, Rarity.MYTHIC, mage.cards.a.AzorsGateway.class)); cards.add(new SetCardInfo("Azor, the Lawbringer", 154, Rarity.MYTHIC, mage.cards.a.AzorTheLawbringer.class)); cards.add(new SetCardInfo("Baffling End", 1, Rarity.UNCOMMON, mage.cards.b.BafflingEnd.class)); cards.add(new SetCardInfo("Bishop of Binding", 2, Rarity.RARE, mage.cards.b.BishopOfBinding.class)); @@ -103,11 +103,11 @@ public final class RivalsOfIxalan extends ExpansionSet { cards.add(new SetCardInfo("Gleaming Barrier", 178, Rarity.COMMON, mage.cards.g.GleamingBarrier.class)); cards.add(new SetCardInfo("Goblin Trailblazer", 105, Rarity.COMMON, mage.cards.g.GoblinTrailblazer.class)); cards.add(new SetCardInfo("Golden Demise", 73, Rarity.UNCOMMON, mage.cards.g.GoldenDemise.class)); - cards.add(new SetCardInfo("Golden Guardian", "179a", Rarity.RARE, mage.cards.g.GoldenGuardian.class)); - cards.add(new SetCardInfo("Gold-Forge Garrison", "179b", Rarity.RARE, mage.cards.g.GoldForgeGarrison.class)); + cards.add(new SetCardInfo("Golden Guardian", 179, Rarity.RARE, mage.cards.g.GoldenGuardian.class)); + cards.add(new SetCardInfo("Gold-Forge Garrison", 179, Rarity.RARE, mage.cards.g.GoldForgeGarrison.class)); cards.add(new SetCardInfo("Grasping Scoundrel", 74, Rarity.COMMON, mage.cards.g.GraspingScoundrel.class)); cards.add(new SetCardInfo("Gruesome Fate", 75, Rarity.COMMON, mage.cards.g.GruesomeFate.class)); - cards.add(new SetCardInfo("Hadana's Climb", "158a", Rarity.RARE, mage.cards.h.HadanasClimb.class)); + cards.add(new SetCardInfo("Hadana's Climb", 158, Rarity.RARE, mage.cards.h.HadanasClimb.class)); cards.add(new SetCardInfo("Hardy Veteran", 132, Rarity.COMMON, mage.cards.h.HardyVeteran.class)); cards.add(new SetCardInfo("Highland Lake", 189, Rarity.UNCOMMON, mage.cards.h.HighlandLake.class)); cards.add(new SetCardInfo("Hornswoggle", 39, Rarity.UNCOMMON, mage.cards.h.Hornswoggle.class)); @@ -120,7 +120,7 @@ public final class RivalsOfIxalan extends ExpansionSet { cards.add(new SetCardInfo("Jade Bearer", 134, Rarity.COMMON, mage.cards.j.JadeBearer.class)); cards.add(new SetCardInfo("Jadecraft Artisan", 135, Rarity.COMMON, mage.cards.j.JadecraftArtisan.class)); cards.add(new SetCardInfo("Jadelight Ranger", 136, Rarity.RARE, mage.cards.j.JadelightRanger.class)); - cards.add(new SetCardInfo("Journey to Eternity", "160a", Rarity.RARE, mage.cards.j.JourneyToEternity.class)); + cards.add(new SetCardInfo("Journey to Eternity", 160, Rarity.RARE, mage.cards.j.JourneyToEternity.class)); cards.add(new SetCardInfo("Jungle Creeper", 161, Rarity.UNCOMMON, mage.cards.j.JungleCreeper.class)); cards.add(new SetCardInfo("Jungleborn Pioneer", 137, Rarity.COMMON, mage.cards.j.JunglebornPioneer.class)); cards.add(new SetCardInfo("Kitesail Corsair", 41, Rarity.COMMON, mage.cards.k.KitesailCorsair.class)); @@ -135,7 +135,7 @@ public final class RivalsOfIxalan extends ExpansionSet { cards.add(new SetCardInfo("Mastermind's Acquisition", 77, Rarity.RARE, mage.cards.m.MastermindsAcquisition.class)); cards.add(new SetCardInfo("Mausoleum Harpy", 78, Rarity.UNCOMMON, mage.cards.m.MausoleumHarpy.class)); cards.add(new SetCardInfo("Merfolk Mistbinder", 164, Rarity.UNCOMMON, mage.cards.m.MerfolkMistbinder.class)); - cards.add(new SetCardInfo("Metzali, Tower of Triumph", "165b", Rarity.RARE, mage.cards.m.MetzaliTowerOfTriumph.class)); + cards.add(new SetCardInfo("Metzali, Tower of Triumph", 165, Rarity.RARE, mage.cards.m.MetzaliTowerOfTriumph.class)); cards.add(new SetCardInfo("Mist-Cloaked Herald", 43, Rarity.COMMON, mage.cards.m.MistCloakedHerald.class)); cards.add(new SetCardInfo("Moment of Craving", 79, Rarity.COMMON, mage.cards.m.MomentOfCraving.class)); cards.add(new SetCardInfo("Moment of Triumph", 15, Rarity.COMMON, mage.cards.m.MomentOfTriumph.class)); @@ -152,14 +152,14 @@ public final class RivalsOfIxalan extends ExpansionSet { cards.add(new SetCardInfo("Overgrown Armasaur", 141, Rarity.COMMON, mage.cards.o.OvergrownArmasaur.class)); cards.add(new SetCardInfo("Paladin of Atonement", 16, Rarity.RARE, mage.cards.p.PaladinOfAtonement.class)); cards.add(new SetCardInfo("Path of Discovery", 142, Rarity.RARE, mage.cards.p.PathOfDiscovery.class)); - cards.add(new SetCardInfo("Path of Mettle", "165a", Rarity.RARE, mage.cards.p.PathOfMettle.class)); + cards.add(new SetCardInfo("Path of Mettle", 165, Rarity.RARE, mage.cards.p.PathOfMettle.class)); cards.add(new SetCardInfo("Pirate's Pillage", 109, Rarity.UNCOMMON, mage.cards.p.PiratesPillage.class)); cards.add(new SetCardInfo("Pitiless Plunderer", 81, Rarity.UNCOMMON, mage.cards.p.PitilessPlunderer.class)); cards.add(new SetCardInfo("Plains", 192, Rarity.LAND, mage.cards.basiclands.Plains.class)); cards.add(new SetCardInfo("Plummet", 143, Rarity.COMMON, mage.cards.p.Plummet.class)); cards.add(new SetCardInfo("Polyraptor", 144, Rarity.MYTHIC, mage.cards.p.Polyraptor.class)); cards.add(new SetCardInfo("Pride of Conquerors", 17, Rarity.UNCOMMON, mage.cards.p.PrideOfConquerors.class)); - cards.add(new SetCardInfo("Profane Procession", "166a", Rarity.RARE, mage.cards.p.ProfaneProcession.class)); + cards.add(new SetCardInfo("Profane Procession", 166, Rarity.RARE, mage.cards.p.ProfaneProcession.class)); cards.add(new SetCardInfo("Protean Raider", 167, Rarity.RARE, mage.cards.p.ProteanRaider.class)); cards.add(new SetCardInfo("Radiant Destiny", 18, Rarity.RARE, mage.cards.r.RadiantDestiny.class)); cards.add(new SetCardInfo("Raging Regisaur", 168, Rarity.UNCOMMON, mage.cards.r.RagingRegisaur.class)); @@ -176,7 +176,7 @@ public final class RivalsOfIxalan extends ExpansionSet { cards.add(new SetCardInfo("Riverwise Augur", 48, Rarity.UNCOMMON, mage.cards.r.RiverwiseAugur.class)); cards.add(new SetCardInfo("Sadistic Skymarcher", 85, Rarity.UNCOMMON, mage.cards.s.SadisticSkymarcher.class)); cards.add(new SetCardInfo("Sailor of Means", 49, Rarity.COMMON, mage.cards.s.SailorOfMeans.class)); - cards.add(new SetCardInfo("Sanctum of the Sun", "176b", Rarity.MYTHIC, mage.cards.s.SanctumOfTheSun.class)); + cards.add(new SetCardInfo("Sanctum of the Sun", 176, Rarity.MYTHIC, mage.cards.s.SanctumOfTheSun.class)); cards.add(new SetCardInfo("Sanguine Glorifier", 20, Rarity.COMMON, mage.cards.s.SanguineGlorifier.class)); cards.add(new SetCardInfo("Sea Legs", 50, Rarity.COMMON, mage.cards.s.SeaLegs.class)); cards.add(new SetCardInfo("Seafloor Oracle", 51, Rarity.RARE, mage.cards.s.SeafloorOracle.class)); @@ -201,7 +201,7 @@ public final class RivalsOfIxalan extends ExpansionSet { cards.add(new SetCardInfo("Stone Quarry", 190, Rarity.UNCOMMON, mage.cards.s.StoneQuarry.class)); cards.add(new SetCardInfo("Storm Fleet Sprinter", 172, Rarity.UNCOMMON, mage.cards.s.StormFleetSprinter.class)); cards.add(new SetCardInfo("Storm Fleet Swashbuckler", 117, Rarity.UNCOMMON, mage.cards.s.StormFleetSwashbuckler.class)); - cards.add(new SetCardInfo("Storm the Vault", "173a", Rarity.RARE, mage.cards.s.StormTheVault.class)); + cards.add(new SetCardInfo("Storm the Vault", 173, Rarity.RARE, mage.cards.s.StormTheVault.class)); cards.add(new SetCardInfo("Strength of the Pack", 145, Rarity.UNCOMMON, mage.cards.s.StrengthOfThePack.class)); cards.add(new SetCardInfo("Strider Harness", 183, Rarity.COMMON, mage.cards.s.StriderHarness.class)); cards.add(new SetCardInfo("Sun Sentinel", 26, Rarity.COMMON, mage.cards.s.SunSentinel.class)); @@ -221,14 +221,14 @@ public final class RivalsOfIxalan extends ExpansionSet { cards.add(new SetCardInfo("Tilonalli's Crown", 120, Rarity.COMMON, mage.cards.t.TilonallisCrown.class)); cards.add(new SetCardInfo("Tilonalli's Summoner", 121, Rarity.RARE, mage.cards.t.TilonallisSummoner.class)); cards.add(new SetCardInfo("Timestream Navigator", 59, Rarity.MYTHIC, mage.cards.t.TimestreamNavigator.class)); - cards.add(new SetCardInfo("Tomb of the Dusk Rose", "166b", Rarity.RARE, mage.cards.t.TombOfTheDuskRose.class)); + cards.add(new SetCardInfo("Tomb of the Dusk Rose", 166, Rarity.RARE, mage.cards.t.TombOfTheDuskRose.class)); cards.add(new SetCardInfo("Tomb Robber", 87, Rarity.RARE, mage.cards.t.TombRobber.class)); cards.add(new SetCardInfo("Trapjaw Tyrant", 29, Rarity.MYTHIC, mage.cards.t.TrapjawTyrant.class)); cards.add(new SetCardInfo("Traveler's Amulet", 184, Rarity.COMMON, mage.cards.t.TravelersAmulet.class)); cards.add(new SetCardInfo("Twilight Prophet", 88, Rarity.MYTHIC, mage.cards.t.TwilightProphet.class)); cards.add(new SetCardInfo("Vampire Champion", 198, Rarity.COMMON, mage.cards.v.VampireChampion.class)); cards.add(new SetCardInfo("Vampire Revenant", 89, Rarity.COMMON, mage.cards.v.VampireRevenant.class)); - cards.add(new SetCardInfo("Vault of Catlacan", "173b", Rarity.RARE, mage.cards.v.VaultOfCatlacan.class)); + cards.add(new SetCardInfo("Vault of Catlacan", 173, Rarity.RARE, mage.cards.v.VaultOfCatlacan.class)); cards.add(new SetCardInfo("Vona's Hunger", 90, Rarity.RARE, mage.cards.v.VonasHunger.class)); cards.add(new SetCardInfo("Voracious Vampire", 91, Rarity.COMMON, mage.cards.v.VoraciousVampire.class)); cards.add(new SetCardInfo("Vraska, Scheming Gorgon", 197, Rarity.MYTHIC, mage.cards.v.VraskaSchemingGorgon.class)); @@ -237,7 +237,7 @@ public final class RivalsOfIxalan extends ExpansionSet { cards.add(new SetCardInfo("Warkite Marauder", 60, Rarity.RARE, mage.cards.w.WarkiteMarauder.class)); cards.add(new SetCardInfo("Waterknot", 61, Rarity.COMMON, mage.cards.w.Waterknot.class)); cards.add(new SetCardInfo("Wayward Swordtooth", 150, Rarity.RARE, mage.cards.w.WaywardSwordtooth.class)); - cards.add(new SetCardInfo("Winged Temple of Orazca", "158b", Rarity.RARE, mage.cards.w.WingedTempleOfOrazca.class)); + cards.add(new SetCardInfo("Winged Temple of Orazca", 158, Rarity.RARE, mage.cards.w.WingedTempleOfOrazca.class)); cards.add(new SetCardInfo("Woodland Stream", 191, Rarity.UNCOMMON, mage.cards.w.WoodlandStream.class)); cards.add(new SetCardInfo("World Shaper", 151, Rarity.RARE, mage.cards.w.WorldShaper.class)); cards.add(new SetCardInfo("Zacama, Primal Calamity", 174, Rarity.MYTHIC, mage.cards.z.ZacamaPrimalCalamity.class)); diff --git a/Mage.Sets/src/mage/sets/RivalsOfIxalanPromos.java b/Mage.Sets/src/mage/sets/RivalsOfIxalanPromos.java new file mode 100644 index 00000000000..1fa372d0e88 --- /dev/null +++ b/Mage.Sets/src/mage/sets/RivalsOfIxalanPromos.java @@ -0,0 +1,127 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/prix + */ +public class RivalsOfIxalanPromos extends ExpansionSet { + + private static final RivalsOfIxalanPromos instance = new RivalsOfIxalanPromos(); + + public static RivalsOfIxalanPromos getInstance() { + return instance; + } + + private RivalsOfIxalanPromos() { + super("Rivals of Ixalan Promos", "PRIX", ExpansionSet.buildDate(2018, 1, 19), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Admiral's Order", "31p", Rarity.RARE, mage.cards.a.AdmiralsOrder.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Admiral's Order", "31s", Rarity.RARE, mage.cards.a.AdmiralsOrder.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Angrath, the Flame-Chained", "152s", Rarity.MYTHIC, mage.cards.a.AngrathTheFlameChained.class)); + cards.add(new SetCardInfo("Arch of Orazca", "185p", Rarity.RARE, mage.cards.a.ArchOfOrazca.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Arch of Orazca", "185s", Rarity.RARE, mage.cards.a.ArchOfOrazca.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Atzal, Cave of Eternity", "160s", Rarity.RARE, mage.cards.a.AtzalCaveOfEternity.class)); + cards.add(new SetCardInfo("Awakened Amalgam", "175s", Rarity.RARE, mage.cards.a.AwakenedAmalgam.class)); + cards.add(new SetCardInfo("Azor's Gateway", "176s", Rarity.MYTHIC, mage.cards.a.AzorsGateway.class)); + cards.add(new SetCardInfo("Azor, the Lawbringer", "154s", Rarity.MYTHIC, mage.cards.a.AzorTheLawbringer.class)); + cards.add(new SetCardInfo("Bishop of Binding", "2s", Rarity.RARE, mage.cards.b.BishopOfBinding.class)); + cards.add(new SetCardInfo("Blood Sun", "92p", Rarity.RARE, mage.cards.b.BloodSun.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Blood Sun", "92s", Rarity.RARE, mage.cards.b.BloodSun.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Brass's Bounty", 94, Rarity.RARE, mage.cards.b.BrasssBounty.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Brass's Bounty", "94s", Rarity.RARE, mage.cards.b.BrasssBounty.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Captain's Hook", 177, Rarity.RARE, mage.cards.c.CaptainsHook.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Captain's Hook", "177s", Rarity.RARE, mage.cards.c.CaptainsHook.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Champion of Dusk", "64s", Rarity.RARE, mage.cards.c.ChampionOfDusk.class)); + cards.add(new SetCardInfo("Crafty Cutpurse", "33s", Rarity.RARE, mage.cards.c.CraftyCutpurse.class)); + cards.add(new SetCardInfo("Dead Man's Chest", "66s", Rarity.RARE, mage.cards.d.DeadMansChest.class)); + cards.add(new SetCardInfo("Deeproot Elite", "127p", Rarity.RARE, mage.cards.d.DeeprootElite.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Deeproot Elite", "127s", Rarity.RARE, mage.cards.d.DeeprootElite.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Dire Fleet Daredevil", "99p", Rarity.RARE, mage.cards.d.DireFleetDaredevil.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Dire Fleet Daredevil", "99s", Rarity.RARE, mage.cards.d.DireFleetDaredevil.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Dire Fleet Poisoner", "68p", Rarity.RARE, mage.cards.d.DireFleetPoisoner.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Dire Fleet Poisoner", "68s", Rarity.RARE, mage.cards.d.DireFleetPoisoner.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Elenda, the Dusk Rose", "157s", Rarity.MYTHIC, mage.cards.e.ElendaTheDuskRose.class)); + cards.add(new SetCardInfo("Etali, Primal Storm", "100p", Rarity.RARE, mage.cards.e.EtaliPrimalStorm.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Etali, Primal Storm", "100s", Rarity.RARE, mage.cards.e.EtaliPrimalStorm.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Evolving Wilds", 186, Rarity.COMMON, mage.cards.e.EvolvingWilds.class)); + cards.add(new SetCardInfo("Form of the Dinosaur", "103s", Rarity.RARE, mage.cards.f.FormOfTheDinosaur.class)); + cards.add(new SetCardInfo("Ghalta, Primal Hunger", 130, Rarity.RARE, mage.cards.g.GhaltaPrimalHunger.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Ghalta, Primal Hunger", "130p", Rarity.RARE, mage.cards.g.GhaltaPrimalHunger.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Ghalta, Primal Hunger", "130s", Rarity.RARE, mage.cards.g.GhaltaPrimalHunger.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Gold-Forge Garrison", "179s", Rarity.RARE, mage.cards.g.GoldForgeGarrison.class)); + cards.add(new SetCardInfo("Golden Guardian", "179s", Rarity.RARE, mage.cards.g.GoldenGuardian.class)); + cards.add(new SetCardInfo("Hadana's Climb", "158s", Rarity.RARE, mage.cards.h.HadanasClimb.class)); + cards.add(new SetCardInfo("Huatli, Radiant Champion", "159s", Rarity.MYTHIC, mage.cards.h.HuatliRadiantChampion.class)); + cards.add(new SetCardInfo("Induced Amnesia", "40s", Rarity.RARE, mage.cards.i.InducedAmnesia.class)); + cards.add(new SetCardInfo("Jadelight Ranger", "136p", Rarity.RARE, mage.cards.j.JadelightRanger.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Jadelight Ranger", "136s", Rarity.RARE, mage.cards.j.JadelightRanger.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Journey to Eternity", "160s", Rarity.RARE, mage.cards.j.JourneyToEternity.class)); + cards.add(new SetCardInfo("Kumena's Awakening", "42s", Rarity.RARE, mage.cards.k.KumenasAwakening.class)); + cards.add(new SetCardInfo("Kumena, Tyrant of Orazca", "162s", Rarity.MYTHIC, mage.cards.k.KumenaTyrantOfOrazca.class)); + cards.add(new SetCardInfo("Mastermind's Acquisition", "77p", Rarity.RARE, mage.cards.m.MastermindsAcquisition.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mastermind's Acquisition", "77s", Rarity.RARE, mage.cards.m.MastermindsAcquisition.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Metzali, Tower of Triumph", "165s", Rarity.RARE, mage.cards.m.MetzaliTowerOfTriumph.class)); + cards.add(new SetCardInfo("Nezahal, Primal Tide", "45p", Rarity.RARE, mage.cards.n.NezahalPrimalTide.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Nezahal, Primal Tide", "45s", Rarity.RARE, mage.cards.n.NezahalPrimalTide.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Paladin of Atonement", "16s", Rarity.RARE, mage.cards.p.PaladinOfAtonement.class)); + cards.add(new SetCardInfo("Path of Discovery", "142p", Rarity.RARE, mage.cards.p.PathOfDiscovery.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Path of Discovery", "142s", Rarity.RARE, mage.cards.p.PathOfDiscovery.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Path of Mettle", "165s", Rarity.RARE, mage.cards.p.PathOfMettle.class)); + cards.add(new SetCardInfo("Polyraptor", "144s", Rarity.MYTHIC, mage.cards.p.Polyraptor.class)); + cards.add(new SetCardInfo("Profane Procession", "166s", Rarity.RARE, mage.cards.p.ProfaneProcession.class)); + cards.add(new SetCardInfo("Protean Raider", "167s", Rarity.RARE, mage.cards.p.ProteanRaider.class)); + cards.add(new SetCardInfo("Radiant Destiny", "18p", Rarity.RARE, mage.cards.r.RadiantDestiny.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Radiant Destiny", "18s", Rarity.RARE, mage.cards.r.RadiantDestiny.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Rekindling Phoenix", "111p", Rarity.MYTHIC, mage.cards.r.RekindlingPhoenix.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Rekindling Phoenix", "111s", Rarity.MYTHIC, mage.cards.r.RekindlingPhoenix.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Release to the Wind", "46s", Rarity.RARE, mage.cards.r.ReleaseToTheWind.class)); + cards.add(new SetCardInfo("Sanctum of the Sun", "176s", Rarity.MYTHIC, mage.cards.s.SanctumOfTheSun.class)); + cards.add(new SetCardInfo("Seafloor Oracle", "51p", Rarity.RARE, mage.cards.s.SeafloorOracle.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Seafloor Oracle", "51s", Rarity.RARE, mage.cards.s.SeafloorOracle.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Siegehorn Ceratops", "171p", Rarity.RARE, mage.cards.s.SiegehornCeratops.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Siegehorn Ceratops", "171s", Rarity.RARE, mage.cards.s.SiegehornCeratops.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Silent Gravestone", "182p", Rarity.RARE, mage.cards.s.SilentGravestone.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Silent Gravestone", "182s", Rarity.RARE, mage.cards.s.SilentGravestone.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Silverclad Ferocidons", "115p", Rarity.RARE, mage.cards.s.SilvercladFerocidons.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Silverclad Ferocidons", "115s", Rarity.RARE, mage.cards.s.SilvercladFerocidons.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Silvergill Adept", 53, Rarity.UNCOMMON, mage.cards.s.SilvergillAdept.class)); + cards.add(new SetCardInfo("Slaughter the Strong", "22p", Rarity.RARE, mage.cards.s.SlaughterTheStrong.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Slaughter the Strong", "22s", Rarity.RARE, mage.cards.s.SlaughterTheStrong.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Sphinx's Decree", "24s", Rarity.RARE, mage.cards.s.SphinxsDecree.class)); + cards.add(new SetCardInfo("Storm the Vault", "173s", Rarity.RARE, mage.cards.s.StormTheVault.class)); + cards.add(new SetCardInfo("Temple Altisaur", "28s", Rarity.RARE, mage.cards.t.TempleAltisaur.class)); + cards.add(new SetCardInfo("Tendershoot Dryad", "147p", Rarity.RARE, mage.cards.t.TendershootDryad.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Tendershoot Dryad", "147s", Rarity.RARE, mage.cards.t.TendershootDryad.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Tetzimoc, Primal Death", "86p", Rarity.RARE, mage.cards.t.TetzimocPrimalDeath.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Tetzimoc, Primal Death", "86s", Rarity.RARE, mage.cards.t.TetzimocPrimalDeath.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("The Immortal Sun", "180p", Rarity.MYTHIC, mage.cards.t.TheImmortalSun.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("The Immortal Sun", "180s", Rarity.MYTHIC, mage.cards.t.TheImmortalSun.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Tilonalli's Summoner", "121p", Rarity.RARE, mage.cards.t.TilonallisSummoner.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Tilonalli's Summoner", "121s", Rarity.RARE, mage.cards.t.TilonallisSummoner.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Timestream Navigator", "59s", Rarity.MYTHIC, mage.cards.t.TimestreamNavigator.class)); + cards.add(new SetCardInfo("Tomb of the Dusk Rose", "166s", Rarity.RARE, mage.cards.t.TombOfTheDuskRose.class)); + cards.add(new SetCardInfo("Tomb Robber", "87s", Rarity.RARE, mage.cards.t.TombRobber.class)); + cards.add(new SetCardInfo("Trapjaw Tyrant", "29s", Rarity.MYTHIC, mage.cards.t.TrapjawTyrant.class)); + cards.add(new SetCardInfo("Twilight Prophet", "88s", Rarity.MYTHIC, mage.cards.t.TwilightProphet.class)); + cards.add(new SetCardInfo("Vault of Catlacan", "173s", Rarity.RARE, mage.cards.v.VaultOfCatlacan.class)); + cards.add(new SetCardInfo("Vona's Hunger", "90p", Rarity.RARE, mage.cards.v.VonasHunger.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Vona's Hunger", "90s", Rarity.RARE, mage.cards.v.VonasHunger.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Warkite Marauder", "60p", Rarity.RARE, mage.cards.w.WarkiteMarauder.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Warkite Marauder", "60s", Rarity.RARE, mage.cards.w.WarkiteMarauder.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Wayward Swordtooth", "150p", Rarity.RARE, mage.cards.w.WaywardSwordtooth.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Wayward Swordtooth", "150s", Rarity.RARE, mage.cards.w.WaywardSwordtooth.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Winged Temple of Orazca", "158s", Rarity.RARE, mage.cards.w.WingedTempleOfOrazca.class)); + cards.add(new SetCardInfo("World Shaper", "151p", Rarity.RARE, mage.cards.w.WorldShaper.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("World Shaper", "151s", Rarity.RARE, mage.cards.w.WorldShaper.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Zacama, Primal Calamity", "174p", Rarity.MYTHIC, mage.cards.z.ZacamaPrimalCalamity.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Zacama, Primal Calamity", "174s", Rarity.MYTHIC, mage.cards.z.ZacamaPrimalCalamity.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Zetalpa, Primal Dawn", "30p", Rarity.RARE, mage.cards.z.ZetalpaPrimalDawn.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Zetalpa, Primal Dawn", "30s", Rarity.RARE, mage.cards.z.ZetalpaPrimalDawn.class, NON_FULL_USE_VARIOUS)); + + } +} diff --git a/Mage.Sets/src/mage/sets/RivalsQuickStartSet.java b/Mage.Sets/src/mage/sets/RivalsQuickStartSet.java new file mode 100644 index 00000000000..ecb7a241296 --- /dev/null +++ b/Mage.Sets/src/mage/sets/RivalsQuickStartSet.java @@ -0,0 +1,89 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/rqs + */ +public class RivalsQuickStartSet extends ExpansionSet { + + private static final RivalsQuickStartSet instance = new RivalsQuickStartSet(); + + public static RivalsQuickStartSet getInstance() { + return instance; + } + + private RivalsQuickStartSet() { + super("Rivals Quick Start Set", "RQS", ExpansionSet.buildDate(1996, 7, 1), SetType.SUPPLEMENTAL); + this.hasBoosters = false; + this.hasBasicLands = true; + + cards.add(new SetCardInfo("Alabaster Potion", 1, Rarity.COMMON, mage.cards.a.AlabasterPotion.class)); + cards.add(new SetCardInfo("Battering Ram", 47, Rarity.COMMON, mage.cards.b.BatteringRam.class)); + cards.add(new SetCardInfo("Bog Imp", 15, Rarity.COMMON, mage.cards.b.BogImp.class)); + cards.add(new SetCardInfo("Bog Wraith", 16, Rarity.UNCOMMON, mage.cards.b.BogWraith.class)); + cards.add(new SetCardInfo("Circle of Protection: Black", 2, Rarity.COMMON, mage.cards.c.CircleOfProtectionBlack.class)); + cards.add(new SetCardInfo("Circle of Protection: Red", 3, Rarity.COMMON, mage.cards.c.CircleOfProtectionRed.class)); + cards.add(new SetCardInfo("Clockwork Beast", 48, Rarity.RARE, mage.cards.c.ClockworkBeast.class)); + cards.add(new SetCardInfo("Cursed Land", 17, Rarity.UNCOMMON, mage.cards.c.CursedLand.class)); + cards.add(new SetCardInfo("Dark Ritual", 18, Rarity.COMMON, mage.cards.d.DarkRitual.class)); + cards.add(new SetCardInfo("Detonate", 29, Rarity.UNCOMMON, mage.cards.d.Detonate.class)); + cards.add(new SetCardInfo("Disintegrate", 30, Rarity.COMMON, mage.cards.d.Disintegrate.class)); + cards.add(new SetCardInfo("Durkwood Boars", 38, Rarity.COMMON, mage.cards.d.DurkwoodBoars.class)); + cards.add(new SetCardInfo("Elven Riders", 39, Rarity.UNCOMMON, mage.cards.e.ElvenRiders.class)); + cards.add(new SetCardInfo("Elvish Archers", 40, Rarity.RARE, mage.cards.e.ElvishArchers.class)); + cards.add(new SetCardInfo("Energy Flux", 8, Rarity.UNCOMMON, mage.cards.e.EnergyFlux.class)); + cards.add(new SetCardInfo("Feedback", 9, Rarity.UNCOMMON, mage.cards.f.Feedback.class)); + cards.add(new SetCardInfo("Fireball", 31, Rarity.COMMON, mage.cards.f.Fireball.class)); + cards.add(new SetCardInfo("Forest", 65, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", 64, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", 63, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Glasses of Urza", 49, Rarity.UNCOMMON, mage.cards.g.GlassesOfUrza.class)); + cards.add(new SetCardInfo("Grizzly Bears", 41, Rarity.COMMON, mage.cards.g.GrizzlyBears.class)); + cards.add(new SetCardInfo("Healing Salve", 4, Rarity.COMMON, mage.cards.h.HealingSalve.class)); + cards.add(new SetCardInfo("Hill Giant", 32, Rarity.COMMON, mage.cards.h.HillGiant.class)); + cards.add(new SetCardInfo("Ironclaw Orcs", 33, Rarity.COMMON, mage.cards.i.IronclawOrcs.class)); + cards.add(new SetCardInfo("Island", 56, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", 55, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Jayemdae Tome", 50, Rarity.RARE, mage.cards.j.JayemdaeTome.class)); + cards.add(new SetCardInfo("Lost Soul", 19, Rarity.COMMON, mage.cards.l.LostSoul.class)); + cards.add(new SetCardInfo("Merfolk of the Pearl Trident", 10, Rarity.COMMON, mage.cards.m.MerfolkOfThePearlTrident.class)); + cards.add(new SetCardInfo("Mesa Pegasus", 5, Rarity.COMMON, mage.cards.m.MesaPegasus.class)); + cards.add(new SetCardInfo("Mons's Goblin Raiders", 34, Rarity.COMMON, mage.cards.m.MonssGoblinRaiders.class)); + cards.add(new SetCardInfo("Mountain", 62, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", 61, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", 60, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Murk Dwellers", 20, Rarity.COMMON, mage.cards.m.MurkDwellers.class)); + cards.add(new SetCardInfo("Orcish Artillery", 35, Rarity.UNCOMMON, mage.cards.o.OrcishArtillery.class)); + cards.add(new SetCardInfo("Orcish Oriflamme", 36, Rarity.UNCOMMON, mage.cards.o.OrcishOriflamme.class)); + cards.add(new SetCardInfo("Pearled Unicorn", 6, Rarity.COMMON, mage.cards.p.PearledUnicorn.class)); + cards.add(new SetCardInfo("Plains", 54, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plains", 53, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plains", 52, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Power Sink", 11, Rarity.COMMON, mage.cards.p.PowerSink.class)); + cards.add(new SetCardInfo("Pyrotechnics", 37, Rarity.UNCOMMON, mage.cards.p.Pyrotechnics.class)); + cards.add(new SetCardInfo("Raise Dead", 21, Rarity.COMMON, mage.cards.r.RaiseDead.class)); + cards.add(new SetCardInfo("Reverse Damage", 7, Rarity.RARE, mage.cards.r.ReverseDamage.class)); + cards.add(new SetCardInfo("Rod of Ruin", 51, Rarity.UNCOMMON, mage.cards.r.RodOfRuin.class)); + cards.add(new SetCardInfo("Scathe Zombies", 22, Rarity.COMMON, mage.cards.s.ScatheZombies.class)); + cards.add(new SetCardInfo("Scryb Sprites", 42, Rarity.COMMON, mage.cards.s.ScrybSprites.class)); + cards.add(new SetCardInfo("Sorceress Queen", 23, Rarity.RARE, mage.cards.s.SorceressQueen.class)); + cards.add(new SetCardInfo("Swamp", 59, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", 58, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", 57, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Terror", 24, Rarity.COMMON, mage.cards.t.Terror.class)); + cards.add(new SetCardInfo("Twiddle", 12, Rarity.COMMON, mage.cards.t.Twiddle.class)); + cards.add(new SetCardInfo("Unsummon", 13, Rarity.COMMON, mage.cards.u.Unsummon.class)); + cards.add(new SetCardInfo("Untamed Wilds", 43, Rarity.UNCOMMON, mage.cards.u.UntamedWilds.class)); + cards.add(new SetCardInfo("Vampire Bats", 25, Rarity.COMMON, mage.cards.v.VampireBats.class)); + cards.add(new SetCardInfo("Wall of Bone", 26, Rarity.UNCOMMON, mage.cards.w.WallOfBone.class)); + cards.add(new SetCardInfo("War Mammoth", 44, Rarity.COMMON, mage.cards.w.WarMammoth.class)); + cards.add(new SetCardInfo("Warp Artifact", 27, Rarity.RARE, mage.cards.w.WarpArtifact.class)); + cards.add(new SetCardInfo("Weakness", 28, Rarity.COMMON, mage.cards.w.Weakness.class)); + cards.add(new SetCardInfo("Whirling Dervish", 45, Rarity.UNCOMMON, mage.cards.w.WhirlingDervish.class)); + cards.add(new SetCardInfo("Winter Blast", 46, Rarity.UNCOMMON, mage.cards.w.WinterBlast.class)); + cards.add(new SetCardInfo("Zephyr Falcon", 14, Rarity.COMMON, mage.cards.z.ZephyrFalcon.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/SanDiegoComicCon2013.java b/Mage.Sets/src/mage/sets/SanDiegoComicCon2013.java new file mode 100644 index 00000000000..217024f5658 --- /dev/null +++ b/Mage.Sets/src/mage/sets/SanDiegoComicCon2013.java @@ -0,0 +1,29 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/psdc + */ +public class SanDiegoComicCon2013 extends ExpansionSet { + + private static final SanDiegoComicCon2013 instance = new SanDiegoComicCon2013(); + + public static SanDiegoComicCon2013 getInstance() { + return instance; + } + + private SanDiegoComicCon2013() { + super("San Diego Comic-Con 2013", "PSDC", ExpansionSet.buildDate(2013, 7, 18), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Ajani, Caller of the Pride", 1, Rarity.MYTHIC, mage.cards.a.AjaniCallerOfThePride.class)); + cards.add(new SetCardInfo("Chandra, Pyromaster", 132, Rarity.MYTHIC, mage.cards.c.ChandraPyromaster.class)); + cards.add(new SetCardInfo("Garruk, Caller of Beasts", 172, Rarity.MYTHIC, mage.cards.g.GarrukCallerOfBeasts.class)); + cards.add(new SetCardInfo("Jace, Memory Adept", 60, Rarity.MYTHIC, mage.cards.j.JaceMemoryAdept.class)); + cards.add(new SetCardInfo("Liliana of the Dark Realms", 102, Rarity.MYTHIC, mage.cards.l.LilianaOfTheDarkRealms.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/SanDiegoComicCon2014.java b/Mage.Sets/src/mage/sets/SanDiegoComicCon2014.java new file mode 100644 index 00000000000..fdda0c9c580 --- /dev/null +++ b/Mage.Sets/src/mage/sets/SanDiegoComicCon2014.java @@ -0,0 +1,30 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/ps14 + */ +public class SanDiegoComicCon2014 extends ExpansionSet { + + private static final SanDiegoComicCon2014 instance = new SanDiegoComicCon2014(); + + public static SanDiegoComicCon2014 getInstance() { + return instance; + } + + private SanDiegoComicCon2014() { + super("San Diego Comic-Con 2014", "PS14", ExpansionSet.buildDate(2014, 7, 8), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Ajani Steadfast", 1, Rarity.MYTHIC, mage.cards.a.AjaniSteadfast.class)); + cards.add(new SetCardInfo("Chandra, Pyromaster", 134, Rarity.MYTHIC, mage.cards.c.ChandraPyromaster.class)); + cards.add(new SetCardInfo("Garruk, Apex Predator", 210, Rarity.MYTHIC, mage.cards.g.GarrukApexPredator.class)); + cards.add(new SetCardInfo("Jace, the Living Guildpact", 62, Rarity.MYTHIC, mage.cards.j.JaceTheLivingGuildpact.class)); + cards.add(new SetCardInfo("Liliana Vess", 103, Rarity.MYTHIC, mage.cards.l.LilianaVess.class)); + cards.add(new SetCardInfo("Nissa, Worldwaker", 187, Rarity.MYTHIC, mage.cards.n.NissaWorldwaker.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/SanDiegoComicCon2015.java b/Mage.Sets/src/mage/sets/SanDiegoComicCon2015.java new file mode 100644 index 00000000000..f36f6f8a0d8 --- /dev/null +++ b/Mage.Sets/src/mage/sets/SanDiegoComicCon2015.java @@ -0,0 +1,34 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/ps15 + */ +public class SanDiegoComicCon2015 extends ExpansionSet { + + private static final SanDiegoComicCon2015 instance = new SanDiegoComicCon2015(); + + public static SanDiegoComicCon2015 getInstance() { + return instance; + } + + private SanDiegoComicCon2015() { + super("San Diego Comic-Con 2015", "PS15", ExpansionSet.buildDate(2015, 7, 9), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Chandra, Fire of Kaladesh", 135, Rarity.MYTHIC, mage.cards.c.ChandraFireOfKaladesh.class)); + cards.add(new SetCardInfo("Chandra, Roaring Flame", 135, Rarity.MYTHIC, mage.cards.c.ChandraRoaringFlame.class)); + cards.add(new SetCardInfo("Gideon, Battle-Forged", 23, Rarity.MYTHIC, mage.cards.g.GideonBattleForged.class)); + cards.add(new SetCardInfo("Jace, Telepath Unbound", 60, Rarity.MYTHIC, mage.cards.j.JaceTelepathUnbound.class)); + cards.add(new SetCardInfo("Jace, Vryn's Prodigy", 60, Rarity.MYTHIC, mage.cards.j.JaceVrynsProdigy.class)); + cards.add(new SetCardInfo("Kytheon, Hero of Akros", 23, Rarity.MYTHIC, mage.cards.k.KytheonHeroOfAkros.class)); + cards.add(new SetCardInfo("Liliana, Defiant Necromancer", 106, Rarity.MYTHIC, mage.cards.l.LilianaDefiantNecromancer.class)); + cards.add(new SetCardInfo("Liliana, Heretical Healer", 106, Rarity.MYTHIC, mage.cards.l.LilianaHereticalHealer.class)); + cards.add(new SetCardInfo("Nissa, Vastwood Seer", 189, Rarity.MYTHIC, mage.cards.n.NissaVastwoodSeer.class)); + cards.add(new SetCardInfo("Nissa, Sage Animist", 189, Rarity.MYTHIC, mage.cards.n.NissaSageAnimist.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/SanDiegoComicCon2016.java b/Mage.Sets/src/mage/sets/SanDiegoComicCon2016.java new file mode 100644 index 00000000000..959af34549c --- /dev/null +++ b/Mage.Sets/src/mage/sets/SanDiegoComicCon2016.java @@ -0,0 +1,29 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/ps16 + */ +public class SanDiegoComicCon2016 extends ExpansionSet { + + private static final SanDiegoComicCon2016 instance = new SanDiegoComicCon2016(); + + public static SanDiegoComicCon2016 getInstance() { + return instance; + } + + private SanDiegoComicCon2016() { + super("San Diego Comic-Con 2016", "PS16", ExpansionSet.buildDate(2016, 10, 1), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Chandra, Flamecaller", 104, Rarity.MYTHIC, mage.cards.c.ChandraFlamecaller.class)); + cards.add(new SetCardInfo("Gideon, Ally of Zendikar", 29, Rarity.MYTHIC, mage.cards.g.GideonAllyOfZendikar.class)); + cards.add(new SetCardInfo("Jace, Unraveler of Secrets", 69, Rarity.MYTHIC, mage.cards.j.JaceUnravelerOfSecrets.class)); + cards.add(new SetCardInfo("Liliana, the Last Hope", 93, Rarity.MYTHIC, mage.cards.l.LilianaTheLastHope.class)); + cards.add(new SetCardInfo("Nissa, Voice of Zendikar", 138, Rarity.MYTHIC, mage.cards.n.NissaVoiceOfZendikar.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/SanDiegoComicCon2017.java b/Mage.Sets/src/mage/sets/SanDiegoComicCon2017.java new file mode 100644 index 00000000000..1865c037957 --- /dev/null +++ b/Mage.Sets/src/mage/sets/SanDiegoComicCon2017.java @@ -0,0 +1,30 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/ps17 + */ +public class SanDiegoComicCon2017 extends ExpansionSet { + + private static final SanDiegoComicCon2017 instance = new SanDiegoComicCon2017(); + + public static SanDiegoComicCon2017 getInstance() { + return instance; + } + + private SanDiegoComicCon2017() { + super("San Diego Comic-Con 2017", "PS17", ExpansionSet.buildDate(2017, 7, 20), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Chandra, Torch of Defiance", 110, Rarity.MYTHIC, mage.cards.c.ChandraTorchOfDefiance.class)); + cards.add(new SetCardInfo("Gideon of the Trials", 14, Rarity.MYTHIC, mage.cards.g.GideonOfTheTrials.class)); + cards.add(new SetCardInfo("Jace, Unraveler of Secrets", 69, Rarity.MYTHIC, mage.cards.j.JaceUnravelerOfSecrets.class)); + cards.add(new SetCardInfo("Liliana, Death's Majesty", 97, Rarity.MYTHIC, mage.cards.l.LilianaDeathsMajesty.class)); + cards.add(new SetCardInfo("Nicol Bolas, God-Pharaoh", 140, Rarity.MYTHIC, mage.cards.n.NicolBolasGodPharaoh.class)); + cards.add(new SetCardInfo("Nissa, Steward of Elements", 204, Rarity.MYTHIC, mage.cards.n.NissaStewardOfElements.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/SanDiegoComicCon2018.java b/Mage.Sets/src/mage/sets/SanDiegoComicCon2018.java new file mode 100644 index 00000000000..9e86c1cfb6f --- /dev/null +++ b/Mage.Sets/src/mage/sets/SanDiegoComicCon2018.java @@ -0,0 +1,29 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/ps18 + */ +public class SanDiegoComicCon2018 extends ExpansionSet { + + private static final SanDiegoComicCon2018 instance = new SanDiegoComicCon2018(); + + public static SanDiegoComicCon2018 getInstance() { + return instance; + } + + private SanDiegoComicCon2018() { + super("San Diego Comic-Con 2018", "PS18", ExpansionSet.buildDate(2018, 7, 19), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Chandra, Torch of Defiance", 110, Rarity.MYTHIC, mage.cards.c.ChandraTorchOfDefiance.class)); + cards.add(new SetCardInfo("Gideon of the Trials", 14, Rarity.MYTHIC, mage.cards.g.GideonOfTheTrials.class)); + cards.add(new SetCardInfo("Jace, Cunning Castaway", 60, Rarity.MYTHIC, mage.cards.j.JaceCunningCastaway.class)); + cards.add(new SetCardInfo("Liliana, Untouched by Death", 106, Rarity.MYTHIC, mage.cards.l.LilianaUntouchedByDeath.class)); + cards.add(new SetCardInfo("Nissa, Vital Force", 163, Rarity.MYTHIC, mage.cards.n.NissaVitalForce.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/ScarsOfMirrodinPromos.java b/Mage.Sets/src/mage/sets/ScarsOfMirrodinPromos.java new file mode 100644 index 00000000000..a2b62b85a60 --- /dev/null +++ b/Mage.Sets/src/mage/sets/ScarsOfMirrodinPromos.java @@ -0,0 +1,29 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/psom + */ +public class ScarsOfMirrodinPromos extends ExpansionSet { + + private static final ScarsOfMirrodinPromos instance = new ScarsOfMirrodinPromos(); + + public static ScarsOfMirrodinPromos getInstance() { + return instance; + } + + private ScarsOfMirrodinPromos() { + super("Scars of Mirrodin Promos", "PSOM", ExpansionSet.buildDate(2010, 9, 30), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Memnite", 174, Rarity.UNCOMMON, mage.cards.m.Memnite.class)); + cards.add(new SetCardInfo("Memoricide", "*69", Rarity.RARE, mage.cards.m.Memoricide.class)); + cards.add(new SetCardInfo("Steel Hellkite", 205, Rarity.RARE, mage.cards.s.SteelHellkite.class)); + cards.add(new SetCardInfo("Tempered Steel", 24, Rarity.RARE, mage.cards.t.TemperedSteel.class)); + cards.add(new SetCardInfo("Wurmcoil Engine", 223, Rarity.MYTHIC, mage.cards.w.WurmcoilEngine.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/SecretLairDrop.java b/Mage.Sets/src/mage/sets/SecretLairDrop.java new file mode 100644 index 00000000000..dd852fb5d59 --- /dev/null +++ b/Mage.Sets/src/mage/sets/SecretLairDrop.java @@ -0,0 +1,78 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/sld + */ +public class SecretLairDrop extends ExpansionSet { + + private static final SecretLairDrop instance = new SecretLairDrop(); + + public static SecretLairDrop getInstance() { + return instance; + } + + private SecretLairDrop() { + super("Secret Lair Drop", "SLD", ExpansionSet.buildDate(2020, 3, 12), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = true; + + cards.add(new SetCardInfo("Arahbo, Roar of the World", 25, Rarity.MYTHIC, mage.cards.a.ArahboRoarOfTheWorld.class)); + cards.add(new SetCardInfo("Athreos, God of Passage", 76, Rarity.MYTHIC, mage.cards.a.AthreosGodOfPassage.class)); + cards.add(new SetCardInfo("Bitterblossom", 12, Rarity.MYTHIC, mage.cards.b.Bitterblossom.class)); + cards.add(new SetCardInfo("Bloodghast", 6, Rarity.RARE, mage.cards.b.Bloodghast.class)); + cards.add(new SetCardInfo("Captain Sisay", 51, Rarity.MYTHIC, mage.cards.c.CaptainSisay.class)); + cards.add(new SetCardInfo("Ephara, God of the Polis", 72, Rarity.MYTHIC, mage.cards.e.EpharaGodOfThePolis.class)); + cards.add(new SetCardInfo("Erebos, God of the Dead", 74, Rarity.MYTHIC, mage.cards.e.ErebosGodOfTheDead.class)); + cards.add(new SetCardInfo("Goblin Bushwhacker", 17, Rarity.RARE, mage.cards.g.GoblinBushwhacker.class)); + cards.add(new SetCardInfo("Goblin King", 19, Rarity.RARE, mage.cards.g.GoblinKing.class)); + cards.add(new SetCardInfo("Goblin Lackey", 20, Rarity.RARE, mage.cards.g.GoblinLackey.class)); + cards.add(new SetCardInfo("Goblin Piledriver", 21, Rarity.RARE, mage.cards.g.GoblinPiledriver.class)); + cards.add(new SetCardInfo("Goblin Sharpshooter", 18, Rarity.RARE, mage.cards.g.GoblinSharpshooter.class)); + cards.add(new SetCardInfo("Golgari Thug", 7, Rarity.RARE, mage.cards.g.GolgariThug.class)); + cards.add(new SetCardInfo("Heliod, God of the Sun", 68, Rarity.MYTHIC, mage.cards.h.HeliodGodOfTheSun.class)); + cards.add(new SetCardInfo("Ink-Eyes, Servant of Oni", 33, Rarity.RARE, mage.cards.i.InkEyesServantOfOni.class)); + cards.add(new SetCardInfo("Iroas, God of Victory", 70, Rarity.MYTHIC, mage.cards.i.IroasGodOfVictory.class)); + cards.add(new SetCardInfo("Karametra, God of Harvests", 69, Rarity.MYTHIC, mage.cards.k.KarametraGodOfHarvests.class)); + cards.add(new SetCardInfo("Keranos, God of Storms", 79, Rarity.MYTHIC, mage.cards.k.KeranosGodOfStorms.class)); + cards.add(new SetCardInfo("Kruphix, God of Horizons", 73, Rarity.MYTHIC, mage.cards.k.KruphixGodOfHorizons.class)); + cards.add(new SetCardInfo("Leonin Warleader", 22, Rarity.RARE, mage.cards.l.LeoninWarleader.class)); + cards.add(new SetCardInfo("Life from the Loam", 8, Rarity.RARE, mage.cards.l.LifeFromTheLoam.class)); + cards.add(new SetCardInfo("Marrow-Gnawer", 34, Rarity.RARE, mage.cards.m.MarrowGnawer.class)); + cards.add(new SetCardInfo("Meren of Clan Nel Toth", 52, Rarity.MYTHIC, mage.cards.m.MerenOfClanNelToth.class)); + cards.add(new SetCardInfo("Mirri, Weatherlight Duelist", 26, Rarity.MYTHIC, mage.cards.m.MirriWeatherlightDuelist.class)); + cards.add(new SetCardInfo("Mogis, God of Slaughter", 78, Rarity.MYTHIC, mage.cards.m.MogisGodOfSlaughter.class)); + cards.add(new SetCardInfo("Narset, Enlightened Master", 53, Rarity.MYTHIC, mage.cards.n.NarsetEnlightenedMaster.class)); + cards.add(new SetCardInfo("Nylea, God of the Hunt", 80, Rarity.MYTHIC, mage.cards.n.NyleaGodOfTheHunt.class)); + cards.add(new SetCardInfo("Oona, Queen of the Fae", 54, Rarity.MYTHIC, mage.cards.o.OonaQueenOfTheFae.class)); + cards.add(new SetCardInfo("Pack Rat", 35, Rarity.RARE, mage.cards.p.PackRat.class)); + cards.add(new SetCardInfo("Pharika, God of Affliction", 82, Rarity.MYTHIC, mage.cards.p.PharikaGodOfAffliction.class)); + cards.add(new SetCardInfo("Phenax, God of Deception", 75, Rarity.MYTHIC, mage.cards.p.PhenaxGodOfDeception.class)); + cards.add(new SetCardInfo("Purphoros, God of the Forge", 77, Rarity.MYTHIC, mage.cards.p.PurphorosGodOfTheForge.class)); + cards.add(new SetCardInfo("Qasali Slingers", 24, Rarity.RARE, mage.cards.q.QasaliSlingers.class)); + cards.add(new SetCardInfo("Rat Colony", 36, Rarity.RARE, mage.cards.r.RatColony.class)); + cards.add(new SetCardInfo("Reaper King", 9, Rarity.MYTHIC, mage.cards.r.ReaperKing.class)); + cards.add(new SetCardInfo("Regal Caracal", 23, Rarity.RARE, mage.cards.r.RegalCaracal.class)); + cards.add(new SetCardInfo("Saskia the Unyielding", 55, Rarity.MYTHIC, mage.cards.s.SaskiaTheUnyielding.class)); + cards.add(new SetCardInfo("Serum Visions", 29, Rarity.RARE, mage.cards.s.SerumVisions.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Serum Visions", 30, Rarity.RARE, mage.cards.s.SerumVisions.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Serum Visions", 31, Rarity.RARE, mage.cards.s.SerumVisions.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Serum Visions", 32, Rarity.RARE, mage.cards.s.SerumVisions.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Sliver Overlord", 10, Rarity.MYTHIC, mage.cards.s.SliverOverlord.class)); + cards.add(new SetCardInfo("Snow-Covered Forest", 5, Rarity.LAND, mage.cards.s.SnowCoveredForest.class)); + cards.add(new SetCardInfo("Snow-Covered Island", 2, Rarity.LAND, mage.cards.s.SnowCoveredIsland.class)); + cards.add(new SetCardInfo("Snow-Covered Mountain", 4, Rarity.LAND, mage.cards.s.SnowCoveredMountain.class)); + cards.add(new SetCardInfo("Snow-Covered Plains", 1, Rarity.LAND, mage.cards.s.SnowCoveredPlains.class)); + cards.add(new SetCardInfo("Snow-Covered Swamp", 3, Rarity.LAND, mage.cards.s.SnowCoveredSwamp.class)); + cards.add(new SetCardInfo("Thalia, Guardian of Thraben", 37, Rarity.RARE, mage.cards.t.ThaliaGuardianOfThraben.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Thalia, Guardian of Thraben", 38, Rarity.RARE, mage.cards.t.ThaliaGuardianOfThraben.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Thalia, Guardian of Thraben", 39, Rarity.RARE, mage.cards.t.ThaliaGuardianOfThraben.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Thalia, Guardian of Thraben", 40, Rarity.RARE, mage.cards.t.ThaliaGuardianOfThraben.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Thassa, God of the Sea", 71, Rarity.MYTHIC, mage.cards.t.ThassaGodOfTheSea.class)); + cards.add(new SetCardInfo("The Ur-Dragon", 11, Rarity.MYTHIC, mage.cards.t.TheUrDragon.class)); + cards.add(new SetCardInfo("Xenagos, God of Revels", 81, Rarity.MYTHIC, mage.cards.x.XenagosGodOfRevels.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/SecretLairDropPromos.java b/Mage.Sets/src/mage/sets/SecretLairDropPromos.java new file mode 100644 index 00000000000..2c13baa7745 --- /dev/null +++ b/Mage.Sets/src/mage/sets/SecretLairDropPromos.java @@ -0,0 +1,58 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/psld + */ +public class SecretLairDropPromos extends ExpansionSet { + + private static final SecretLairDropPromos instance = new SecretLairDropPromos(); + + public static SecretLairDropPromos getInstance() { + return instance; + } + + private SecretLairDropPromos() { + super("Secret Lair Drop Promos", "PSLD", ExpansionSet.buildDate(2020, 2, 18), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Ajani, the Greathearted", 520, Rarity.RARE, mage.cards.a.AjaniTheGreathearted.class)); + cards.add(new SetCardInfo("Angrath, Captain of Chaos", 527, Rarity.UNCOMMON, mage.cards.a.AngrathCaptainOfChaos.class)); + cards.add(new SetCardInfo("Arlinn, Voice of the Pack", 516, Rarity.UNCOMMON, mage.cards.a.ArlinnVoiceOfThePack.class)); + cards.add(new SetCardInfo("Ashiok, Dream Render", 528, Rarity.UNCOMMON, mage.cards.a.AshiokDreamRender.class)); + cards.add(new SetCardInfo("Chandra, Fire Artisan", 512, Rarity.RARE, mage.cards.c.ChandraFireArtisan.class)); + cards.add(new SetCardInfo("Davriel, Rogue Shadowmage", 509, Rarity.UNCOMMON, mage.cards.d.DavrielRogueShadowmage.class)); + cards.add(new SetCardInfo("Domri, Anarch of Bolas", 521, Rarity.RARE, mage.cards.d.DomriAnarchOfBolas.class)); + cards.add(new SetCardInfo("Dovin, Hand of Control", 529, Rarity.UNCOMMON, mage.cards.d.DovinHandOfControl.class)); + cards.add(new SetCardInfo("Gideon Blackblade", 503, Rarity.MYTHIC, mage.cards.g.GideonBlackblade.class)); + cards.add(new SetCardInfo("Huatli, the Sun's Heart", 530, Rarity.UNCOMMON, mage.cards.h.HuatliTheSunsHeart.class)); + cards.add(new SetCardInfo("Jace, Wielder of Mysteries", 506, Rarity.RARE, mage.cards.j.JaceWielderOfMysteries.class)); + cards.add(new SetCardInfo("Jaya, Venerated Firemage", 513, Rarity.UNCOMMON, mage.cards.j.JayaVeneratedFiremage.class)); + cards.add(new SetCardInfo("Jiang Yanggu, Wildcrafter", 517, Rarity.UNCOMMON, mage.cards.j.JiangYangguWildcrafter.class)); + cards.add(new SetCardInfo("Kasmina, Enigmatic Mentor", 507, Rarity.UNCOMMON, mage.cards.k.KasminaEnigmaticMentor.class)); + cards.add(new SetCardInfo("Kaya, Bane of the Dead", 531, Rarity.UNCOMMON, mage.cards.k.KayaBaneOfTheDead.class)); + cards.add(new SetCardInfo("Kiora, Behemoth Beckoner", 532, Rarity.UNCOMMON, mage.cards.k.KioraBehemothBeckoner.class)); + cards.add(new SetCardInfo("Liliana, Dreadhorde General", 510, Rarity.MYTHIC, mage.cards.l.LilianaDreadhordeGeneral.class)); + cards.add(new SetCardInfo("Nahiri, Storm of Stone", 533, Rarity.UNCOMMON, mage.cards.n.NahiriStormOfStone.class)); + cards.add(new SetCardInfo("Narset, Parter of Veils", 508, Rarity.UNCOMMON, mage.cards.n.NarsetParterOfVeils.class)); + cards.add(new SetCardInfo("Nicol Bolas, Dragon-God", 522, Rarity.MYTHIC, mage.cards.n.NicolBolasDragonGod.class)); + cards.add(new SetCardInfo("Nissa, Who Shakes the World", 518, Rarity.RARE, mage.cards.n.NissaWhoShakesTheWorld.class)); + cards.add(new SetCardInfo("Ob Nixilis, the Hate-Twisted", 511, Rarity.UNCOMMON, mage.cards.o.ObNixilisTheHateTwisted.class)); + cards.add(new SetCardInfo("Ral, Storm Conduit", 523, Rarity.RARE, mage.cards.r.RalStormConduit.class)); + cards.add(new SetCardInfo("Saheeli, Sublime Artificer", 534, Rarity.UNCOMMON, mage.cards.s.SaheeliSublimeArtificer.class)); + cards.add(new SetCardInfo("Samut, Tyrant Smasher", 535, Rarity.UNCOMMON, mage.cards.s.SamutTyrantSmasher.class)); + cards.add(new SetCardInfo("Sarkhan the Masterless", 514, Rarity.RARE, mage.cards.s.SarkhanTheMasterless.class)); + cards.add(new SetCardInfo("Sorin, Vengeful Bloodlord", 524, Rarity.RARE, mage.cards.s.SorinVengefulBloodlord.class)); + cards.add(new SetCardInfo("Tamiyo, Collector of Tales", 525, Rarity.RARE, mage.cards.t.TamiyoCollectorOfTales.class)); + cards.add(new SetCardInfo("Teferi, Time Raveler", 526, Rarity.RARE, mage.cards.t.TeferiTimeRaveler.class)); + cards.add(new SetCardInfo("Teyo, the Shieldmage", 504, Rarity.UNCOMMON, mage.cards.t.TeyoTheShieldmage.class)); + cards.add(new SetCardInfo("The Wanderer", 505, Rarity.UNCOMMON, mage.cards.t.TheWanderer.class)); + cards.add(new SetCardInfo("Tibalt, Rakish Instigator", 515, Rarity.UNCOMMON, mage.cards.t.TibaltRakishInstigator.class)); + cards.add(new SetCardInfo("Vivien, Champion of the Wilds", 519, Rarity.RARE, mage.cards.v.VivienChampionOfTheWilds.class)); + cards.add(new SetCardInfo("Vraska, Swarm's Eminence", 536, Rarity.UNCOMMON, mage.cards.v.VraskaSwarmsEminence.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/SecretLairUltimateEdition.java b/Mage.Sets/src/mage/sets/SecretLairUltimateEdition.java new file mode 100644 index 00000000000..edb3b4e22b9 --- /dev/null +++ b/Mage.Sets/src/mage/sets/SecretLairUltimateEdition.java @@ -0,0 +1,29 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/slu + */ +public class SecretLairUltimateEdition extends ExpansionSet { + + private static final SecretLairUltimateEdition instance = new SecretLairUltimateEdition(); + + public static SecretLairUltimateEdition getInstance() { + return instance; + } + + private SecretLairUltimateEdition() { + super("Secret Lair: Ultimate Edition", "SLU", ExpansionSet.buildDate(2020, 5, 29), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Arid Mesa", 4, Rarity.RARE, mage.cards.a.AridMesa.class)); + cards.add(new SetCardInfo("Marsh Flats", 1, Rarity.RARE, mage.cards.m.MarshFlats.class)); + cards.add(new SetCardInfo("Misty Rainforest", 5, Rarity.RARE, mage.cards.m.MistyRainforest.class)); + cards.add(new SetCardInfo("Scalding Tarn", 2, Rarity.RARE, mage.cards.s.ScaldingTarn.class)); + cards.add(new SetCardInfo("Verdant Catacombs", 3, Rarity.RARE, mage.cards.v.VerdantCatacombs.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/ShadowsOverInnistrad.java b/Mage.Sets/src/mage/sets/ShadowsOverInnistrad.java index e988c73cec8..3d67e316806 100644 --- a/Mage.Sets/src/mage/sets/ShadowsOverInnistrad.java +++ b/Mage.Sets/src/mage/sets/ShadowsOverInnistrad.java @@ -110,7 +110,7 @@ public final class ShadowsOverInnistrad extends ExpansionSet { cards.add(new SetCardInfo("Dual Shot", 153, Rarity.COMMON, mage.cards.d.DualShot.class)); cards.add(new SetCardInfo("Duskwatch Recruiter", 203, Rarity.UNCOMMON, mage.cards.d.DuskwatchRecruiter.class)); cards.add(new SetCardInfo("Eerie Interlude", 16, Rarity.RARE, mage.cards.e.EerieInterlude.class)); - cards.add(new SetCardInfo("Elusive Tormentor", "108a", Rarity.RARE, mage.cards.e.ElusiveTormentor.class)); + cards.add(new SetCardInfo("Elusive Tormentor", 108, Rarity.RARE, mage.cards.e.ElusiveTormentor.class)); cards.add(new SetCardInfo("Ember-Eye Wolf", 154, Rarity.COMMON, mage.cards.e.EmberEyeWolf.class)); cards.add(new SetCardInfo("Emissary of the Sleepless", 17, Rarity.COMMON, mage.cards.e.EmissaryOfTheSleepless.class)); cards.add(new SetCardInfo("Engulf the Shore", 58, Rarity.RARE, mage.cards.e.EngulfTheShore.class)); @@ -181,7 +181,7 @@ public final class ShadowsOverInnistrad extends ExpansionSet { cards.add(new SetCardInfo("Infectious Curse", 97, Rarity.UNCOMMON, mage.cards.i.InfectiousCurse.class)); cards.add(new SetCardInfo("Inner Struggle", 167, Rarity.UNCOMMON, mage.cards.i.InnerStruggle.class)); cards.add(new SetCardInfo("Inquisitor's Ox", 24, Rarity.COMMON, mage.cards.i.InquisitorsOx.class)); - cards.add(new SetCardInfo("Insidious Mist", "108b", Rarity.RARE, mage.cards.i.InsidiousMist.class)); + cards.add(new SetCardInfo("Insidious Mist", 108, Rarity.RARE, mage.cards.i.InsidiousMist.class)); cards.add(new SetCardInfo("Insolent Neonate", 168, Rarity.COMMON, mage.cards.i.InsolentNeonate.class)); cards.add(new SetCardInfo("Inspiring Captain", 25, Rarity.COMMON, mage.cards.i.InspiringCaptain.class)); cards.add(new SetCardInfo("Intrepid Provisioner", 213, Rarity.COMMON, mage.cards.i.IntrepidProvisioner.class)); diff --git a/Mage.Sets/src/mage/sets/ShadowsOverInnistradPromos.java b/Mage.Sets/src/mage/sets/ShadowsOverInnistradPromos.java new file mode 100644 index 00000000000..32a652d493b --- /dev/null +++ b/Mage.Sets/src/mage/sets/ShadowsOverInnistradPromos.java @@ -0,0 +1,122 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/psoi + */ +public class ShadowsOverInnistradPromos extends ExpansionSet { + + private static final ShadowsOverInnistradPromos instance = new ShadowsOverInnistradPromos(); + + public static ShadowsOverInnistradPromos getInstance() { + return instance; + } + + private ShadowsOverInnistradPromos() { + super("Shadows over Innistrad Promos", "PSOI", ExpansionSet.buildDate(2016, 4, 9), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Altered Ego", "241s", Rarity.RARE, mage.cards.a.AlteredEgo.class)); + cards.add(new SetCardInfo("Always Watching", "1s", Rarity.RARE, mage.cards.a.AlwaysWatching.class)); + cards.add(new SetCardInfo("Angel of Deliverance", 2, Rarity.RARE, mage.cards.a.AngelOfDeliverance.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Angel of Deliverance", "2s", Rarity.RARE, mage.cards.a.AngelOfDeliverance.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Anguished Unmaking", 242, Rarity.RARE, mage.cards.a.AnguishedUnmaking.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Anguished Unmaking", "242s", Rarity.RARE, mage.cards.a.AnguishedUnmaking.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Archangel Avacyn", "5s", Rarity.MYTHIC, mage.cards.a.ArchangelAvacyn.class)); + cards.add(new SetCardInfo("Arlinn Kord", "243s", Rarity.MYTHIC, mage.cards.a.ArlinnKord.class)); + cards.add(new SetCardInfo("Arlinn, Embraced by the Moon", "243s", Rarity.MYTHIC, mage.cards.a.ArlinnEmbracedByTheMoon.class)); + cards.add(new SetCardInfo("Asylum Visitor", "99s", Rarity.RARE, mage.cards.a.AsylumVisitor.class)); + cards.add(new SetCardInfo("Avacyn's Judgment", "145s", Rarity.RARE, mage.cards.a.AvacynsJudgment.class)); + cards.add(new SetCardInfo("Avacyn, the Purifier", "5s", Rarity.MYTHIC, mage.cards.a.AvacynThePurifier.class)); + cards.add(new SetCardInfo("Awoken Horror", "92s", Rarity.RARE, mage.cards.a.AwokenHorror.class)); + cards.add(new SetCardInfo("Behold the Beyond", "101s", Rarity.MYTHIC, mage.cards.b.BeholdTheBeyond.class)); + cards.add(new SetCardInfo("Brain in a Jar", "252s", Rarity.RARE, mage.cards.b.BrainInAJar.class)); + cards.add(new SetCardInfo("Burn from Within", "148s", Rarity.RARE, mage.cards.b.BurnFromWithin.class)); + cards.add(new SetCardInfo("Bygone Bishop", "8s", Rarity.RARE, mage.cards.b.BygoneBishop.class)); + cards.add(new SetCardInfo("Choked Estuary", "270s", Rarity.RARE, mage.cards.c.ChokedEstuary.class)); + cards.add(new SetCardInfo("Confirm Suspicions", "53s", Rarity.RARE, mage.cards.c.ConfirmSuspicions.class)); + cards.add(new SetCardInfo("Corrupted Grafstone", "253s", Rarity.RARE, mage.cards.c.CorruptedGrafstone.class)); + cards.add(new SetCardInfo("Cryptolith Rite", "200s", Rarity.RARE, mage.cards.c.CryptolithRite.class)); + cards.add(new SetCardInfo("Deathcap Cultivator", "202s", Rarity.RARE, mage.cards.d.DeathcapCultivator.class)); + cards.add(new SetCardInfo("Declaration in Stone", "12s", Rarity.RARE, mage.cards.d.DeclarationInStone.class)); + cards.add(new SetCardInfo("Descend upon the Sinful", "13s", Rarity.MYTHIC, mage.cards.d.DescendUponTheSinful.class)); + cards.add(new SetCardInfo("Devils' Playground", "151s", Rarity.RARE, mage.cards.d.DevilsPlayground.class)); + cards.add(new SetCardInfo("Diregraf Colossus", "107s", Rarity.RARE, mage.cards.d.DiregrafColossus.class)); + cards.add(new SetCardInfo("Drogskol Cavalry", 15, Rarity.RARE, mage.cards.d.DrogskolCavalry.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Drogskol Cavalry", "15s", Rarity.RARE, mage.cards.d.DrogskolCavalry.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Drownyard Temple", "271s", Rarity.RARE, mage.cards.d.DrownyardTemple.class)); + cards.add(new SetCardInfo("Eerie Interlude", "16s", Rarity.RARE, mage.cards.e.EerieInterlude.class)); + cards.add(new SetCardInfo("Elusive Tormentor", 108, Rarity.RARE, mage.cards.e.ElusiveTormentor.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Elusive Tormentor", "108s", Rarity.RARE, mage.cards.e.ElusiveTormentor.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Engulf the Shore", "58s", Rarity.RARE, mage.cards.e.EngulfTheShore.class)); + cards.add(new SetCardInfo("Epiphany at the Drownyard", "59s", Rarity.RARE, mage.cards.e.EpiphanyAtTheDrownyard.class)); + cards.add(new SetCardInfo("Ever After", "109s", Rarity.RARE, mage.cards.e.EverAfter.class)); + cards.add(new SetCardInfo("Falkenrath Gorger", "155s", Rarity.RARE, mage.cards.f.FalkenrathGorger.class)); + cards.add(new SetCardInfo("Fevered Visions", "244s", Rarity.RARE, mage.cards.f.FeveredVisions.class)); + cards.add(new SetCardInfo("Flameblade Angel", 157, Rarity.RARE, mage.cards.f.FlamebladeAngel.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Flameblade Angel", "157s", Rarity.RARE, mage.cards.f.FlamebladeAngel.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Foreboding Ruins", "272s", Rarity.RARE, mage.cards.f.ForebodingRuins.class)); + cards.add(new SetCardInfo("Forgotten Creation", "63s", Rarity.RARE, mage.cards.f.ForgottenCreation.class)); + cards.add(new SetCardInfo("Fortified Village", "274s", Rarity.RARE, mage.cards.f.FortifiedVillage.class)); + cards.add(new SetCardInfo("From Under the Floorboards", "111s", Rarity.RARE, mage.cards.f.FromUnderTheFloorboards.class)); + cards.add(new SetCardInfo("Game Trail", "276s", Rarity.RARE, mage.cards.g.GameTrail.class)); + cards.add(new SetCardInfo("Geier Reach Bandit", "159s", Rarity.RARE, mage.cards.g.GeierReachBandit.class)); + cards.add(new SetCardInfo("Geralf's Masterpiece", "65s", Rarity.MYTHIC, mage.cards.g.GeralfsMasterpiece.class)); + cards.add(new SetCardInfo("Goldnight Castigator", "162s", Rarity.MYTHIC, mage.cards.g.GoldnightCastigator.class)); + cards.add(new SetCardInfo("Hanweir Militia Captain", "21s", Rarity.RARE, mage.cards.h.HanweirMilitiaCaptain.class)); + cards.add(new SetCardInfo("Harness the Storm", "163s", Rarity.RARE, mage.cards.h.HarnessTheStorm.class)); + cards.add(new SetCardInfo("Incorrigible Youths", 166, Rarity.UNCOMMON, mage.cards.i.IncorrigibleYouths.class)); + cards.add(new SetCardInfo("Inexorable Blob", "212s", Rarity.RARE, mage.cards.i.InexorableBlob.class)); + cards.add(new SetCardInfo("Insidious Mist", 108, Rarity.RARE, mage.cards.i.InsidiousMist.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Insidious Mist", "108s", Rarity.RARE, mage.cards.i.InsidiousMist.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Invocation of Saint Traft", "246s", Rarity.RARE, mage.cards.i.InvocationOfSaintTraft.class)); + cards.add(new SetCardInfo("Jace, Unraveler of Secrets", "69s", Rarity.MYTHIC, mage.cards.j.JaceUnravelerOfSecrets.class)); + cards.add(new SetCardInfo("Markov Dreadknight", 122, Rarity.RARE, mage.cards.m.MarkovDreadknight.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Markov Dreadknight", "122s", Rarity.RARE, mage.cards.m.MarkovDreadknight.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mindwrack Demon", "124s", Rarity.MYTHIC, mage.cards.m.MindwrackDemon.class)); + cards.add(new SetCardInfo("Nahiri, the Harbinger", "247s", Rarity.MYTHIC, mage.cards.n.NahiriTheHarbinger.class)); + cards.add(new SetCardInfo("Nephalia Moondrakes", 75, Rarity.RARE, mage.cards.n.NephaliaMoondrakes.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Nephalia Moondrakes", "75s", Rarity.RARE, mage.cards.n.NephaliaMoondrakes.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Odric, Lunarch Marshal", "31s", Rarity.RARE, mage.cards.o.OdricLunarchMarshal.class)); + cards.add(new SetCardInfo("Olivia, Mobilized for War", "248s", Rarity.MYTHIC, mage.cards.o.OliviaMobilizedForWar.class)); + cards.add(new SetCardInfo("Ormendahl, Profane Prince", "281s", Rarity.RARE, mage.cards.o.OrmendahlProfanePrince.class)); + cards.add(new SetCardInfo("Persistent Nightmare", "88s", Rarity.MYTHIC, mage.cards.p.PersistentNightmare.class)); + cards.add(new SetCardInfo("Port Town", "278s", Rarity.RARE, mage.cards.p.PortTown.class)); + cards.add(new SetCardInfo("Prized Amalgam", "249s", Rarity.RARE, mage.cards.p.PrizedAmalgam.class)); + cards.add(new SetCardInfo("Rattlechains", "81s", Rarity.RARE, mage.cards.r.Rattlechains.class)); + cards.add(new SetCardInfo("Ravenous Bloodseeker", 175, Rarity.UNCOMMON, mage.cards.r.RavenousBloodseeker.class)); + cards.add(new SetCardInfo("Relentless Dead", "131s", Rarity.MYTHIC, mage.cards.r.RelentlessDead.class)); + cards.add(new SetCardInfo("Sage of Ancient Lore", "225s", Rarity.RARE, mage.cards.s.SageOfAncientLore.class)); + cards.add(new SetCardInfo("Scourge Wolf", "179s", Rarity.RARE, mage.cards.s.ScourgeWolf.class)); + cards.add(new SetCardInfo("Seasons Past", "226s", Rarity.MYTHIC, mage.cards.s.SeasonsPast.class)); + cards.add(new SetCardInfo("Second Harvest", "227s", Rarity.RARE, mage.cards.s.SecondHarvest.class)); + cards.add(new SetCardInfo("Sigarda, Heron's Grace", "250s", Rarity.MYTHIC, mage.cards.s.SigardaHeronsGrace.class)); + cards.add(new SetCardInfo("Silverfur Partisan", "228s", Rarity.RARE, mage.cards.s.SilverfurPartisan.class)); + cards.add(new SetCardInfo("Sin Prodder", "181s", Rarity.RARE, mage.cards.s.SinProdder.class)); + cards.add(new SetCardInfo("Slayer's Plate", "264s", Rarity.RARE, mage.cards.s.SlayersPlate.class)); + cards.add(new SetCardInfo("Sorin, Grim Nemesis", "251s", Rarity.MYTHIC, mage.cards.s.SorinGrimNemesis.class)); + cards.add(new SetCardInfo("Soul Swallower", 230, Rarity.RARE, mage.cards.s.SoulSwallower.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Soul Swallower", "230s", Rarity.RARE, mage.cards.s.SoulSwallower.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Startled Awake", "88s", Rarity.MYTHIC, mage.cards.s.StartledAwake.class)); + cards.add(new SetCardInfo("Tamiyo's Journal", "265s", Rarity.RARE, mage.cards.t.TamiyosJournal.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Tamiyo's Journal", "265s+", Rarity.RARE, mage.cards.t.TamiyosJournal.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Thalia's Lieutenant", "43s", Rarity.RARE, mage.cards.t.ThaliasLieutenant.class)); + cards.add(new SetCardInfo("The Gitrog Monster", "245s", Rarity.MYTHIC, mage.cards.t.TheGitrogMonster.class)); + cards.add(new SetCardInfo("Thing in the Ice", "92s", Rarity.RARE, mage.cards.t.ThingInTheIce.class)); + cards.add(new SetCardInfo("Tireless Tracker", "233s", Rarity.RARE, mage.cards.t.TirelessTracker.class)); + cards.add(new SetCardInfo("To the Slaughter", "139s", Rarity.RARE, mage.cards.t.ToTheSlaughter.class)); + cards.add(new SetCardInfo("Traverse the Ulvenwald", "234s", Rarity.RARE, mage.cards.t.TraverseTheUlvenwald.class)); + cards.add(new SetCardInfo("Triskaidekaphobia", "141s", Rarity.RARE, mage.cards.t.Triskaidekaphobia.class)); + cards.add(new SetCardInfo("Ulvenwald Hydra", "235s", Rarity.MYTHIC, mage.cards.u.UlvenwaldHydra.class)); + cards.add(new SetCardInfo("Vildin-Pack Alpha", "159s", Rarity.RARE, mage.cards.v.VildinPackAlpha.class)); + cards.add(new SetCardInfo("Welcome to the Fold", "96s", Rarity.RARE, mage.cards.w.WelcomeToTheFold.class)); + cards.add(new SetCardInfo("Westvale Abbey", "281s", Rarity.RARE, mage.cards.w.WestvaleAbbey.class)); + cards.add(new SetCardInfo("Westvale Cult Leader", "21s", Rarity.RARE, mage.cards.w.WestvaleCultLeader.class)); + cards.add(new SetCardInfo("Werewolf of Ancient Hunger", "225s", Rarity.RARE, mage.cards.w.WerewolfOfAncientHunger.class)); + cards.add(new SetCardInfo("Wolf of Devil's Breach", "192s", Rarity.MYTHIC, mage.cards.w.WolfOfDevilsBreach.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/Starter2000.java b/Mage.Sets/src/mage/sets/Starter2000.java index ef18ba34486..089428d8b92 100644 --- a/Mage.Sets/src/mage/sets/Starter2000.java +++ b/Mage.Sets/src/mage/sets/Starter2000.java @@ -6,7 +6,7 @@ import mage.constants.Rarity; import mage.constants.SetType; /** - * + * https://scryfall.com/sets/s00 * @author LevelX2 */ public final class Starter2000 extends ExpansionSet { @@ -20,70 +20,29 @@ public final class Starter2000 extends ExpansionSet { private Starter2000() { super("Starter 2000", "S00", ExpansionSet.buildDate(2000, 7, 1), SetType.SUPPLEMENTAL); this.blockName = "Beginner"; - this.hasBasicLands = true; + this.hasBasicLands = false; this.hasBoosters = false; - this.numBoosterLands = 1; - this.numBoosterCommon = 10; - this.numBoosterUncommon = 3; - this.numBoosterRare = 1; - this.ratioBoosterMythic = 0; + cards.add(new SetCardInfo("Angelic Blessing", 1, Rarity.COMMON, mage.cards.a.AngelicBlessing.class)); - cards.add(new SetCardInfo("Armored Pegasus", 2, Rarity.COMMON, mage.cards.a.ArmoredPegasus.class)); - cards.add(new SetCardInfo("Bog Imp", 22, Rarity.COMMON, mage.cards.b.BogImp.class)); cards.add(new SetCardInfo("Breath of Life", 3, Rarity.UNCOMMON, mage.cards.b.BreathOfLife.class)); - cards.add(new SetCardInfo("Coercion", 23, Rarity.COMMON, mage.cards.c.Coercion.class)); - cards.add(new SetCardInfo("Counterspell", 12, Rarity.COMMON, mage.cards.c.Counterspell.class)); - cards.add(new SetCardInfo("Disenchant", 4, Rarity.COMMON, mage.cards.d.Disenchant.class)); - cards.add(new SetCardInfo("Drudge Skeletons", 24, Rarity.COMMON, mage.cards.d.DrudgeSkeletons.class)); cards.add(new SetCardInfo("Durkwood Boars", 38, Rarity.COMMON, mage.cards.d.DurkwoodBoars.class)); cards.add(new SetCardInfo("Eager Cadet", 5, Rarity.COMMON, mage.cards.e.EagerCadet.class)); - cards.add(new SetCardInfo("Flame Spirit", 29, Rarity.COMMON, mage.cards.f.FlameSpirit.class)); - cards.add(new SetCardInfo("Flight", 13, Rarity.COMMON, mage.cards.f.Flight.class)); - cards.add(new SetCardInfo("Forest", 49, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Forest", 50, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Giant Growth", 39, Rarity.COMMON, mage.cards.g.GiantGrowth.class)); cards.add(new SetCardInfo("Giant Octopus", 14, Rarity.COMMON, mage.cards.g.GiantOctopus.class)); - cards.add(new SetCardInfo("Goblin Hero", 30, Rarity.COMMON, mage.cards.g.GoblinHero.class)); cards.add(new SetCardInfo("Hand of Death", 25, Rarity.COMMON, mage.cards.h.HandOfDeath.class)); - cards.add(new SetCardInfo("Hero's Resolve", 6, Rarity.COMMON, mage.cards.h.HerosResolve.class)); - cards.add(new SetCardInfo("Inspiration", 15, Rarity.COMMON, mage.cards.i.Inspiration.class)); - cards.add(new SetCardInfo("Island", 51, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Island", 52, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Knight Errant", 7, Rarity.COMMON, mage.cards.k.KnightErrant.class)); cards.add(new SetCardInfo("Lava Axe", 31, Rarity.COMMON, mage.cards.l.LavaAxe.class)); - cards.add(new SetCardInfo("Llanowar Elves", 40, Rarity.COMMON, mage.cards.l.LlanowarElves.class)); - cards.add(new SetCardInfo("Merfolk of the Pearl Trident", 16, Rarity.COMMON, mage.cards.m.MerfolkOfThePearlTrident.class)); cards.add(new SetCardInfo("Mons's Goblin Raiders", 32, Rarity.COMMON, mage.cards.m.MonssGoblinRaiders.class)); cards.add(new SetCardInfo("Monstrous Growth", 41, Rarity.COMMON, mage.cards.m.MonstrousGrowth.class)); cards.add(new SetCardInfo("Moon Sprite", 42, Rarity.UNCOMMON, mage.cards.m.MoonSprite.class)); - cards.add(new SetCardInfo("Mountain", 53, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Mountain", 54, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Obsianus Golem", 46, Rarity.UNCOMMON, mage.cards.o.ObsianusGolem.class)); cards.add(new SetCardInfo("Ogre Warrior", 33, Rarity.COMMON, mage.cards.o.OgreWarrior.class)); - cards.add(new SetCardInfo("Orcish Oriflamme", 34, Rarity.UNCOMMON, mage.cards.o.OrcishOriflamme.class)); - cards.add(new SetCardInfo("Plains", 55, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Plains", 56, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Prodigal Sorcerer", 17, Rarity.COMMON, mage.cards.p.ProdigalSorcerer.class)); - cards.add(new SetCardInfo("Python", 26, Rarity.COMMON, mage.cards.p.Python.class)); cards.add(new SetCardInfo("Rhox", 43, Rarity.RARE, mage.cards.r.Rhox.class)); - cards.add(new SetCardInfo("Rod of Ruin", 47, Rarity.UNCOMMON, mage.cards.r.RodOfRuin.class)); cards.add(new SetCardInfo("Royal Falcon", 8, Rarity.COMMON, mage.cards.r.RoyalFalcon.class)); - cards.add(new SetCardInfo("Samite Healer", 9, Rarity.COMMON, mage.cards.s.SamiteHealer.class)); - cards.add(new SetCardInfo("Scathe Zombies", 27, Rarity.COMMON, mage.cards.s.ScatheZombies.class)); cards.add(new SetCardInfo("Sea Eagle", 18, Rarity.COMMON, mage.cards.s.SeaEagle.class)); - cards.add(new SetCardInfo("Shock", 35, Rarity.COMMON, mage.cards.s.Shock.class)); - cards.add(new SetCardInfo("Soul Net", 48, Rarity.UNCOMMON, mage.cards.s.SoulNet.class)); - cards.add(new SetCardInfo("Spined Wurm", 44, Rarity.COMMON, mage.cards.s.SpinedWurm.class)); - cards.add(new SetCardInfo("Stone Rain", 36, Rarity.COMMON, mage.cards.s.StoneRain.class)); - cards.add(new SetCardInfo("Swamp", 57, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Swamp", 58, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Terror", 28, Rarity.COMMON, mage.cards.t.Terror.class)); cards.add(new SetCardInfo("Time Ebb", 19, Rarity.COMMON, mage.cards.t.TimeEbb.class)); cards.add(new SetCardInfo("Trained Orgg", 37, Rarity.RARE, mage.cards.t.TrainedOrgg.class)); - cards.add(new SetCardInfo("Venerable Monk", 10, Rarity.COMMON, mage.cards.v.VenerableMonk.class)); cards.add(new SetCardInfo("Vizzerdrix", 20, Rarity.RARE, mage.cards.v.Vizzerdrix.class)); cards.add(new SetCardInfo("Wild Griffin", 11, Rarity.COMMON, mage.cards.w.WildGriffin.class)); cards.add(new SetCardInfo("Willow Elf", 45, Rarity.COMMON, mage.cards.w.WillowElf.class)); - cards.add(new SetCardInfo("Wind Drake", 21, Rarity.COMMON, mage.cards.w.WindDrake.class)); + } } diff --git a/Mage.Sets/src/mage/sets/SummerMagic.java b/Mage.Sets/src/mage/sets/SummerMagic.java new file mode 100644 index 00000000000..ec6e0d56991 --- /dev/null +++ b/Mage.Sets/src/mage/sets/SummerMagic.java @@ -0,0 +1,334 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/sum + */ +public class SummerMagic extends ExpansionSet { + + private static final SummerMagic instance = new SummerMagic(); + + public static SummerMagic getInstance() { + return instance; + } + + private SummerMagic() { + super("Summer Magic", "SUM", ExpansionSet.buildDate(1994, 6, 21), SetType.CORE); + this.hasBoosters = true; + this.numBoosterLands = 0; + this.numBoosterCommon = 11; + this.numBoosterUncommon = 3; + this.numBoosterRare = 1; + this.ratioBoosterMythic = 0; + + cards.add(new SetCardInfo("Air Elemental", 47, Rarity.UNCOMMON, mage.cards.a.AirElemental.class)); + cards.add(new SetCardInfo("Aladdin's Lamp", 231, Rarity.RARE, mage.cards.a.AladdinsLamp.class)); + cards.add(new SetCardInfo("Aladdin's Ring", 232, Rarity.RARE, mage.cards.a.AladdinsRing.class)); + cards.add(new SetCardInfo("Animate Artifact", 48, Rarity.UNCOMMON, mage.cards.a.AnimateArtifact.class)); + cards.add(new SetCardInfo("Animate Dead", 93, Rarity.UNCOMMON, mage.cards.a.AnimateDead.class)); + cards.add(new SetCardInfo("Animate Wall", 1, Rarity.RARE, mage.cards.a.AnimateWall.class)); + cards.add(new SetCardInfo("Ankh of Mishra", 233, Rarity.RARE, mage.cards.a.AnkhOfMishra.class)); + cards.add(new SetCardInfo("Armageddon", 2, Rarity.RARE, mage.cards.a.Armageddon.class)); + cards.add(new SetCardInfo("Armageddon Clock", 234, Rarity.RARE, mage.cards.a.ArmageddonClock.class)); + cards.add(new SetCardInfo("Aspect of Wolf", 186, Rarity.RARE, mage.cards.a.AspectOfWolf.class)); + cards.add(new SetCardInfo("Atog", 139, Rarity.COMMON, mage.cards.a.Atog.class)); + cards.add(new SetCardInfo("Bad Moon", 94, Rarity.RARE, mage.cards.b.BadMoon.class)); + cards.add(new SetCardInfo("Badlands", 282, Rarity.RARE, mage.cards.b.Badlands.class)); + cards.add(new SetCardInfo("Balance", 3, Rarity.RARE, mage.cards.b.Balance.class)); + cards.add(new SetCardInfo("Basalt Monolith", 235, Rarity.UNCOMMON, mage.cards.b.BasaltMonolith.class)); + cards.add(new SetCardInfo("Bayou", 283, Rarity.RARE, mage.cards.b.Bayou.class)); + cards.add(new SetCardInfo("Benalish Hero", 4, Rarity.COMMON, mage.cards.b.BenalishHero.class)); + cards.add(new SetCardInfo("Birds of Paradise", 187, Rarity.RARE, mage.cards.b.BirdsOfParadise.class)); + cards.add(new SetCardInfo("Black Knight", 95, Rarity.UNCOMMON, mage.cards.b.BlackKnight.class)); + cards.add(new SetCardInfo("Black Vise", 236, Rarity.UNCOMMON, mage.cards.b.BlackVise.class)); + cards.add(new SetCardInfo("Black Ward", 5, Rarity.UNCOMMON, mage.cards.b.BlackWard.class)); + cards.add(new SetCardInfo("Blessing", 6, Rarity.RARE, mage.cards.b.Blessing.class)); + cards.add(new SetCardInfo("Blue Elemental Blast", 49, Rarity.COMMON, mage.cards.b.BlueElementalBlast.class)); + cards.add(new SetCardInfo("Blue Ward", 7, Rarity.UNCOMMON, mage.cards.b.BlueWard.class)); + cards.add(new SetCardInfo("Bog Wraith", 96, Rarity.UNCOMMON, mage.cards.b.BogWraith.class)); + cards.add(new SetCardInfo("Bottle of Suleiman", 237, Rarity.RARE, mage.cards.b.BottleOfSuleiman.class)); + cards.add(new SetCardInfo("Braingeyser", 50, Rarity.RARE, mage.cards.b.Braingeyser.class)); + cards.add(new SetCardInfo("Brass Man", 238, Rarity.UNCOMMON, mage.cards.b.BrassMan.class)); + cards.add(new SetCardInfo("Burrowing", 140, Rarity.UNCOMMON, mage.cards.b.Burrowing.class)); + cards.add(new SetCardInfo("Castle", 8, Rarity.UNCOMMON, mage.cards.c.Castle.class)); + cards.add(new SetCardInfo("Celestial Prism", 239, Rarity.UNCOMMON, mage.cards.c.CelestialPrism.class)); + cards.add(new SetCardInfo("Channel", 188, Rarity.UNCOMMON, mage.cards.c.Channel.class)); + cards.add(new SetCardInfo("Chaoslace", 141, Rarity.RARE, mage.cards.c.Chaoslace.class)); + cards.add(new SetCardInfo("Circle of Protection: Black", 9, Rarity.COMMON, mage.cards.c.CircleOfProtectionBlack.class)); + cards.add(new SetCardInfo("Circle of Protection: Blue", 10, Rarity.COMMON, mage.cards.c.CircleOfProtectionBlue.class)); + cards.add(new SetCardInfo("Circle of Protection: Green", 11, Rarity.COMMON, mage.cards.c.CircleOfProtectionGreen.class)); + cards.add(new SetCardInfo("Circle of Protection: Red", 12, Rarity.COMMON, mage.cards.c.CircleOfProtectionRed.class)); + cards.add(new SetCardInfo("Circle of Protection: White", 13, Rarity.COMMON, mage.cards.c.CircleOfProtectionWhite.class)); + cards.add(new SetCardInfo("Clockwork Beast", 240, Rarity.RARE, mage.cards.c.ClockworkBeast.class)); + cards.add(new SetCardInfo("Clone", 51, Rarity.UNCOMMON, mage.cards.c.Clone.class)); + cards.add(new SetCardInfo("Cockatrice", 189, Rarity.RARE, mage.cards.c.Cockatrice.class)); + cards.add(new SetCardInfo("Conservator", 241, Rarity.UNCOMMON, mage.cards.c.Conservator.class)); + //cards.add(new SetCardInfo("Contract from Below", 97, Rarity.RARE, mage.cards.c.ContractFromBelow.class)); + cards.add(new SetCardInfo("Control Magic", 52, Rarity.UNCOMMON, mage.cards.c.ControlMagic.class)); + cards.add(new SetCardInfo("Conversion", 14, Rarity.UNCOMMON, mage.cards.c.Conversion.class)); + cards.add(new SetCardInfo("Copy Artifact", 53, Rarity.RARE, mage.cards.c.CopyArtifact.class)); + cards.add(new SetCardInfo("Counterspell", 54, Rarity.UNCOMMON, mage.cards.c.Counterspell.class)); + cards.add(new SetCardInfo("Craw Wurm", 190, Rarity.COMMON, mage.cards.c.CrawWurm.class)); + cards.add(new SetCardInfo("Creature Bond", 55, Rarity.COMMON, mage.cards.c.CreatureBond.class)); + cards.add(new SetCardInfo("Crumble", 191, Rarity.UNCOMMON, mage.cards.c.Crumble.class)); + cards.add(new SetCardInfo("Crusade", 15, Rarity.RARE, mage.cards.c.Crusade.class)); + cards.add(new SetCardInfo("Crystal Rod", 242, Rarity.UNCOMMON, mage.cards.c.CrystalRod.class)); + cards.add(new SetCardInfo("Cursed Land", 98, Rarity.UNCOMMON, mage.cards.c.CursedLand.class)); + cards.add(new SetCardInfo("Dancing Scimitar", 243, Rarity.RARE, mage.cards.d.DancingScimitar.class)); + cards.add(new SetCardInfo("Dark Ritual", 99, Rarity.COMMON, mage.cards.d.DarkRitual.class)); + //cards.add(new SetCardInfo("Darkpact", 100, Rarity.RARE, mage.cards.d.Darkpact.class)); + cards.add(new SetCardInfo("Death Ward", 16, Rarity.COMMON, mage.cards.d.DeathWard.class)); + cards.add(new SetCardInfo("Deathgrip", 101, Rarity.UNCOMMON, mage.cards.d.Deathgrip.class)); + cards.add(new SetCardInfo("Deathlace", 102, Rarity.RARE, mage.cards.d.Deathlace.class)); + //cards.add(new SetCardInfo("Demonic Attorney", 103, Rarity.RARE, mage.cards.d.DemonicAttorney.class)); + cards.add(new SetCardInfo("Demonic Hordes", 104, Rarity.RARE, mage.cards.d.DemonicHordes.class)); + cards.add(new SetCardInfo("Demonic Tutor", 105, Rarity.UNCOMMON, mage.cards.d.DemonicTutor.class)); + cards.add(new SetCardInfo("Desert Twister", 192, Rarity.UNCOMMON, mage.cards.d.DesertTwister.class)); + cards.add(new SetCardInfo("Dingus Egg", 244, Rarity.RARE, mage.cards.d.DingusEgg.class)); + cards.add(new SetCardInfo("Disenchant", 17, Rarity.COMMON, mage.cards.d.Disenchant.class)); + cards.add(new SetCardInfo("Disintegrate", 142, Rarity.COMMON, mage.cards.d.Disintegrate.class)); + cards.add(new SetCardInfo("Disrupting Scepter", 245, Rarity.RARE, mage.cards.d.DisruptingScepter.class)); + cards.add(new SetCardInfo("Dragon Engine", 246, Rarity.RARE, mage.cards.d.DragonEngine.class)); + cards.add(new SetCardInfo("Dragon Whelp", 143, Rarity.UNCOMMON, mage.cards.d.DragonWhelp.class)); + cards.add(new SetCardInfo("Drain Life", 106, Rarity.COMMON, mage.cards.d.DrainLife.class)); + cards.add(new SetCardInfo("Drain Power", 56, Rarity.RARE, mage.cards.d.DrainPower.class)); + cards.add(new SetCardInfo("Drudge Skeletons", 107, Rarity.COMMON, mage.cards.d.DrudgeSkeletons.class)); + cards.add(new SetCardInfo("Dwarven Warriors", 144, Rarity.COMMON, mage.cards.d.DwarvenWarriors.class)); + cards.add(new SetCardInfo("Dwarven Weaponsmith", 145, Rarity.UNCOMMON, mage.cards.d.DwarvenWeaponsmith.class)); + cards.add(new SetCardInfo("Earth Elemental", 146, Rarity.UNCOMMON, mage.cards.e.EarthElemental.class)); + cards.add(new SetCardInfo("Earthbind", 147, Rarity.COMMON, mage.cards.e.Earthbind.class)); + cards.add(new SetCardInfo("Earthquake", 148, Rarity.RARE, mage.cards.e.Earthquake.class)); + cards.add(new SetCardInfo("Ebony Horse", 247, Rarity.RARE, mage.cards.e.EbonyHorse.class)); + cards.add(new SetCardInfo("El-Hajjaj", 108, Rarity.RARE, mage.cards.e.ElHajjaj.class)); + cards.add(new SetCardInfo("Elvish Archers", 193, Rarity.RARE, mage.cards.e.ElvishArchers.class)); + cards.add(new SetCardInfo("Energy Flux", 57, Rarity.UNCOMMON, mage.cards.e.EnergyFlux.class)); + cards.add(new SetCardInfo("Erg Raiders", 109, Rarity.COMMON, mage.cards.e.ErgRaiders.class)); + cards.add(new SetCardInfo("Evil Presence", 110, Rarity.UNCOMMON, mage.cards.e.EvilPresence.class)); + cards.add(new SetCardInfo("Eye for an Eye", 18, Rarity.RARE, mage.cards.e.EyeForAnEye.class)); + cards.add(new SetCardInfo("Farmstead", 19, Rarity.RARE, mage.cards.f.Farmstead.class)); + cards.add(new SetCardInfo("Fastbond", 194, Rarity.RARE, mage.cards.f.Fastbond.class)); + cards.add(new SetCardInfo("Fear", 111, Rarity.COMMON, mage.cards.f.Fear.class)); + cards.add(new SetCardInfo("Feedback", 58, Rarity.UNCOMMON, mage.cards.f.Feedback.class)); + cards.add(new SetCardInfo("Fire Elemental", 149, Rarity.UNCOMMON, mage.cards.f.FireElemental.class)); + cards.add(new SetCardInfo("Fireball", 150, Rarity.COMMON, mage.cards.f.Fireball.class)); + cards.add(new SetCardInfo("Firebreathing", 151, Rarity.COMMON, mage.cards.f.Firebreathing.class)); + cards.add(new SetCardInfo("Flashfires", 152, Rarity.UNCOMMON, mage.cards.f.Flashfires.class)); + cards.add(new SetCardInfo("Flight", 59, Rarity.COMMON, mage.cards.f.Flight.class)); + cards.add(new SetCardInfo("Flying Carpet", 248, Rarity.RARE, mage.cards.f.FlyingCarpet.class)); + cards.add(new SetCardInfo("Fog", 195, Rarity.COMMON, mage.cards.f.Fog.class)); + cards.add(new SetCardInfo("Force of Nature", 196, Rarity.RARE, mage.cards.f.ForceOfNature.class)); + cards.add(new SetCardInfo("Forest", 306, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", 305, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", 304, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Fork", 153, Rarity.RARE, mage.cards.f.Fork.class)); + cards.add(new SetCardInfo("Frozen Shade", 112, Rarity.COMMON, mage.cards.f.FrozenShade.class)); + cards.add(new SetCardInfo("Fungusaur", 197, Rarity.RARE, mage.cards.f.Fungusaur.class)); + cards.add(new SetCardInfo("Gaea's Liege", 198, Rarity.RARE, mage.cards.g.GaeasLiege.class)); + cards.add(new SetCardInfo("Giant Growth", 199, Rarity.COMMON, mage.cards.g.GiantGrowth.class)); + cards.add(new SetCardInfo("Giant Spider", 200, Rarity.COMMON, mage.cards.g.GiantSpider.class)); + cards.add(new SetCardInfo("Glasses of Urza", 249, Rarity.UNCOMMON, mage.cards.g.GlassesOfUrza.class)); + cards.add(new SetCardInfo("Gloom", 113, Rarity.UNCOMMON, mage.cards.g.Gloom.class)); + cards.add(new SetCardInfo("Goblin Balloon Brigade", 154, Rarity.UNCOMMON, mage.cards.g.GoblinBalloonBrigade.class)); + cards.add(new SetCardInfo("Goblin King", 155, Rarity.RARE, mage.cards.g.GoblinKing.class)); + cards.add(new SetCardInfo("Granite Gargoyle", 156, Rarity.RARE, mage.cards.g.GraniteGargoyle.class)); + cards.add(new SetCardInfo("Gray Ogre", 157, Rarity.COMMON, mage.cards.g.GrayOgre.class)); + cards.add(new SetCardInfo("Green Ward", 20, Rarity.UNCOMMON, mage.cards.g.GreenWard.class)); + cards.add(new SetCardInfo("Grizzly Bears", 201, Rarity.COMMON, mage.cards.g.GrizzlyBears.class)); + cards.add(new SetCardInfo("Guardian Angel", 21, Rarity.COMMON, mage.cards.g.GuardianAngel.class)); + cards.add(new SetCardInfo("Healing Salve", 22, Rarity.COMMON, mage.cards.h.HealingSalve.class)); + cards.add(new SetCardInfo("Helm of Chatzuk", 250, Rarity.RARE, mage.cards.h.HelmOfChatzuk.class)); + cards.add(new SetCardInfo("Hill Giant", 158, Rarity.COMMON, mage.cards.h.HillGiant.class)); + cards.add(new SetCardInfo("Holy Armor", 23, Rarity.COMMON, mage.cards.h.HolyArmor.class)); + cards.add(new SetCardInfo("Holy Strength", 24, Rarity.COMMON, mage.cards.h.HolyStrength.class)); + cards.add(new SetCardInfo("Howl from Beyond", 114, Rarity.COMMON, mage.cards.h.HowlFromBeyond.class)); + cards.add(new SetCardInfo("Howling Mine", 251, Rarity.RARE, mage.cards.h.HowlingMine.class)); + cards.add(new SetCardInfo("Hurkyl's Recall", 60, Rarity.RARE, mage.cards.h.HurkylsRecall.class)); + cards.add(new SetCardInfo("Hurloon Minotaur", 159, Rarity.COMMON, mage.cards.h.HurloonMinotaur.class)); + cards.add(new SetCardInfo("Hurricane", 202, Rarity.UNCOMMON, mage.cards.h.Hurricane.class)); + cards.add(new SetCardInfo("Hypnotic Specter", 115, Rarity.UNCOMMON, mage.cards.h.HypnoticSpecter.class)); + cards.add(new SetCardInfo("Instill Energy", 203, Rarity.UNCOMMON, mage.cards.i.InstillEnergy.class)); + cards.add(new SetCardInfo("Iron Star", 252, Rarity.UNCOMMON, mage.cards.i.IronStar.class)); + cards.add(new SetCardInfo("Ironroot Treefolk", 204, Rarity.COMMON, mage.cards.i.IronrootTreefolk.class)); + cards.add(new SetCardInfo("Island", 297, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", 296, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", 295, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island Fish Jasconius", 61, Rarity.RARE, mage.cards.i.IslandFishJasconius.class)); + cards.add(new SetCardInfo("Island Sanctuary", 25, Rarity.RARE, mage.cards.i.IslandSanctuary.class)); + cards.add(new SetCardInfo("Ivory Cup", 253, Rarity.UNCOMMON, mage.cards.i.IvoryCup.class)); + cards.add(new SetCardInfo("Ivory Tower", 254, Rarity.RARE, mage.cards.i.IvoryTower.class)); + cards.add(new SetCardInfo("Jade Monolith", 255, Rarity.RARE, mage.cards.j.JadeMonolith.class)); + cards.add(new SetCardInfo("Jandor's Ring", 256, Rarity.RARE, mage.cards.j.JandorsRing.class)); + cards.add(new SetCardInfo("Jandor's Saddlebags", 257, Rarity.RARE, mage.cards.j.JandorsSaddlebags.class)); + cards.add(new SetCardInfo("Jayemdae Tome", 258, Rarity.RARE, mage.cards.j.JayemdaeTome.class)); + cards.add(new SetCardInfo("Juggernaut", 259, Rarity.UNCOMMON, mage.cards.j.Juggernaut.class)); + cards.add(new SetCardInfo("Jump", 62, Rarity.COMMON, mage.cards.j.Jump.class)); + cards.add(new SetCardInfo("Karma", 26, Rarity.UNCOMMON, mage.cards.k.Karma.class)); + cards.add(new SetCardInfo("Keldon Warlord", 160, Rarity.UNCOMMON, mage.cards.k.KeldonWarlord.class)); + cards.add(new SetCardInfo("Kird Ape", 161, Rarity.COMMON, mage.cards.k.KirdApe.class)); + cards.add(new SetCardInfo("Kormus Bell", 260, Rarity.RARE, mage.cards.k.KormusBell.class)); + cards.add(new SetCardInfo("Kudzu", 205, Rarity.RARE, mage.cards.k.Kudzu.class)); + cards.add(new SetCardInfo("Lance", 27, Rarity.UNCOMMON, mage.cards.l.Lance.class)); + cards.add(new SetCardInfo("Ley Druid", 206, Rarity.UNCOMMON, mage.cards.l.LeyDruid.class)); + cards.add(new SetCardInfo("Library of Leng", 261, Rarity.UNCOMMON, mage.cards.l.LibraryOfLeng.class)); + cards.add(new SetCardInfo("Lifeforce", 207, Rarity.UNCOMMON, mage.cards.l.Lifeforce.class)); + cards.add(new SetCardInfo("Lifelace", 208, Rarity.RARE, mage.cards.l.Lifelace.class)); + cards.add(new SetCardInfo("Lifetap", 63, Rarity.UNCOMMON, mage.cards.l.Lifetap.class)); + cards.add(new SetCardInfo("Lightning Bolt", 162, Rarity.COMMON, mage.cards.l.LightningBolt.class)); + cards.add(new SetCardInfo("Living Artifact", 209, Rarity.RARE, mage.cards.l.LivingArtifact.class)); + cards.add(new SetCardInfo("Living Lands", 210, Rarity.RARE, mage.cards.l.LivingLands.class)); + cards.add(new SetCardInfo("Living Wall", 262, Rarity.UNCOMMON, mage.cards.l.LivingWall.class)); + cards.add(new SetCardInfo("Llanowar Elves", 211, Rarity.COMMON, mage.cards.l.LlanowarElves.class)); + cards.add(new SetCardInfo("Lord of Atlantis", 64, Rarity.RARE, mage.cards.l.LordOfAtlantis.class)); + cards.add(new SetCardInfo("Lord of the Pit", 116, Rarity.RARE, mage.cards.l.LordOfThePit.class)); + cards.add(new SetCardInfo("Lure", 212, Rarity.UNCOMMON, mage.cards.l.Lure.class)); + //cards.add(new SetCardInfo("Magical Hack", 65, Rarity.RARE, mage.cards.m.MagicalHack.class)); + cards.add(new SetCardInfo("Magnetic Mountain", 163, Rarity.RARE, mage.cards.m.MagneticMountain.class)); + cards.add(new SetCardInfo("Mahamoti Djinn", 66, Rarity.RARE, mage.cards.m.MahamotiDjinn.class)); + cards.add(new SetCardInfo("Mana Flare", 164, Rarity.RARE, mage.cards.m.ManaFlare.class)); + cards.add(new SetCardInfo("Mana Short", 67, Rarity.RARE, mage.cards.m.ManaShort.class)); + cards.add(new SetCardInfo("Mana Vault", 263, Rarity.RARE, mage.cards.m.ManaVault.class)); + cards.add(new SetCardInfo("Manabarbs", 165, Rarity.RARE, mage.cards.m.Manabarbs.class)); + cards.add(new SetCardInfo("Meekstone", 264, Rarity.RARE, mage.cards.m.Meekstone.class)); + cards.add(new SetCardInfo("Merfolk of the Pearl Trident", 68, Rarity.COMMON, mage.cards.m.MerfolkOfThePearlTrident.class)); + cards.add(new SetCardInfo("Mesa Pegasus", 28, Rarity.COMMON, mage.cards.m.MesaPegasus.class)); + cards.add(new SetCardInfo("Mijae Djinn", 166, Rarity.RARE, mage.cards.m.MijaeDjinn.class)); + cards.add(new SetCardInfo("Millstone", 265, Rarity.RARE, mage.cards.m.Millstone.class)); + cards.add(new SetCardInfo("Mind Twist", 117, Rarity.RARE, mage.cards.m.MindTwist.class)); + cards.add(new SetCardInfo("Mishra's War Machine", 266, Rarity.RARE, mage.cards.m.MishrasWarMachine.class)); + cards.add(new SetCardInfo("Mons's Goblin Raiders", 167, Rarity.COMMON, mage.cards.m.MonssGoblinRaiders.class)); + cards.add(new SetCardInfo("Mountain", 303, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", 302, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", 301, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Nether Shadow", 118, Rarity.RARE, mage.cards.n.NetherShadow.class)); + cards.add(new SetCardInfo("Nettling Imp", 119, Rarity.UNCOMMON, mage.cards.n.NettlingImp.class)); + cards.add(new SetCardInfo("Nevinyrral's Disk", 267, Rarity.RARE, mage.cards.n.NevinyrralsDisk.class)); + cards.add(new SetCardInfo("Nightmare", 120, Rarity.RARE, mage.cards.n.Nightmare.class)); + cards.add(new SetCardInfo("Northern Paladin", 29, Rarity.RARE, mage.cards.n.NorthernPaladin.class)); + cards.add(new SetCardInfo("Obsianus Golem", 268, Rarity.UNCOMMON, mage.cards.o.ObsianusGolem.class)); + cards.add(new SetCardInfo("Onulet", 269, Rarity.RARE, mage.cards.o.Onulet.class)); + cards.add(new SetCardInfo("Orcish Artillery", 168, Rarity.UNCOMMON, mage.cards.o.OrcishArtillery.class)); + cards.add(new SetCardInfo("Orcish Oriflamme", 169, Rarity.UNCOMMON, mage.cards.o.OrcishOriflamme.class)); + cards.add(new SetCardInfo("Ornithopter", 270, Rarity.UNCOMMON, mage.cards.o.Ornithopter.class)); + cards.add(new SetCardInfo("Paralyze", 121, Rarity.COMMON, mage.cards.p.Paralyze.class)); + cards.add(new SetCardInfo("Pearled Unicorn", 30, Rarity.COMMON, mage.cards.p.PearledUnicorn.class)); + cards.add(new SetCardInfo("Personal Incarnation", 31, Rarity.RARE, mage.cards.p.PersonalIncarnation.class)); + cards.add(new SetCardInfo("Pestilence", 122, Rarity.COMMON, mage.cards.p.Pestilence.class)); + cards.add(new SetCardInfo("Phantasmal Forces", 69, Rarity.UNCOMMON, mage.cards.p.PhantasmalForces.class)); + cards.add(new SetCardInfo("Phantasmal Terrain", 70, Rarity.COMMON, mage.cards.p.PhantasmalTerrain.class)); + cards.add(new SetCardInfo("Phantom Monster", 71, Rarity.UNCOMMON, mage.cards.p.PhantomMonster.class)); + cards.add(new SetCardInfo("Pirate Ship", 72, Rarity.RARE, mage.cards.p.PirateShip.class)); + cards.add(new SetCardInfo("Plague Rats", 123, Rarity.COMMON, mage.cards.p.PlagueRats.class)); + cards.add(new SetCardInfo("Plains", 294, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plains", 293, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plains", 292, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plateau", 284, Rarity.RARE, mage.cards.p.Plateau.class)); + cards.add(new SetCardInfo("Power Leak", 73, Rarity.COMMON, mage.cards.p.PowerLeak.class)); + cards.add(new SetCardInfo("Power Sink", 74, Rarity.COMMON, mage.cards.p.PowerSink.class)); + cards.add(new SetCardInfo("Power Surge", 170, Rarity.RARE, mage.cards.p.PowerSurge.class)); + cards.add(new SetCardInfo("Primal Clay", 271, Rarity.RARE, mage.cards.p.PrimalClay.class)); + cards.add(new SetCardInfo("Prodigal Sorcerer", 75, Rarity.COMMON, mage.cards.p.ProdigalSorcerer.class)); + cards.add(new SetCardInfo("Psychic Venom", 76, Rarity.COMMON, mage.cards.p.PsychicVenom.class)); + cards.add(new SetCardInfo("Purelace", 32, Rarity.RARE, mage.cards.p.Purelace.class)); + cards.add(new SetCardInfo("Raise Dead", 124, Rarity.COMMON, mage.cards.r.RaiseDead.class)); + cards.add(new SetCardInfo("Reconstruction", 77, Rarity.COMMON, mage.cards.r.Reconstruction.class)); + cards.add(new SetCardInfo("Red Elemental Blast", 171, Rarity.COMMON, mage.cards.r.RedElementalBlast.class)); + cards.add(new SetCardInfo("Red Ward", 33, Rarity.UNCOMMON, mage.cards.r.RedWard.class)); + cards.add(new SetCardInfo("Regeneration", 213, Rarity.COMMON, mage.cards.r.Regeneration.class)); + cards.add(new SetCardInfo("Regrowth", 214, Rarity.UNCOMMON, mage.cards.r.Regrowth.class)); + cards.add(new SetCardInfo("Resurrection", 34, Rarity.UNCOMMON, mage.cards.r.Resurrection.class)); + cards.add(new SetCardInfo("Reverse Damage", 35, Rarity.RARE, mage.cards.r.ReverseDamage.class)); + cards.add(new SetCardInfo("Reverse Polarity", 36, Rarity.UNCOMMON, mage.cards.r.ReversePolarity.class)); + cards.add(new SetCardInfo("Righteousness", 37, Rarity.RARE, mage.cards.r.Righteousness.class)); + cards.add(new SetCardInfo("Roc of Kher Ridges", 172, Rarity.RARE, mage.cards.r.RocOfKherRidges.class)); + cards.add(new SetCardInfo("Rock Hydra", 173, Rarity.RARE, mage.cards.r.RockHydra.class)); + cards.add(new SetCardInfo("Rocket Launcher", 272, Rarity.RARE, mage.cards.r.RocketLauncher.class)); + cards.add(new SetCardInfo("Rod of Ruin", 273, Rarity.UNCOMMON, mage.cards.r.RodOfRuin.class)); + cards.add(new SetCardInfo("Royal Assassin", 125, Rarity.RARE, mage.cards.r.RoyalAssassin.class)); + cards.add(new SetCardInfo("Sacrifice", 126, Rarity.UNCOMMON, mage.cards.s.Sacrifice.class)); + cards.add(new SetCardInfo("Samite Healer", 38, Rarity.COMMON, mage.cards.s.SamiteHealer.class)); + cards.add(new SetCardInfo("Savannah", 285, Rarity.RARE, mage.cards.s.Savannah.class)); + cards.add(new SetCardInfo("Savannah Lions", 39, Rarity.RARE, mage.cards.s.SavannahLions.class)); + cards.add(new SetCardInfo("Scathe Zombies", 127, Rarity.COMMON, mage.cards.s.ScatheZombies.class)); + cards.add(new SetCardInfo("Scavenging Ghoul", 128, Rarity.UNCOMMON, mage.cards.s.ScavengingGhoul.class)); + cards.add(new SetCardInfo("Scrubland", 286, Rarity.RARE, mage.cards.s.Scrubland.class)); + cards.add(new SetCardInfo("Scryb Sprites", 215, Rarity.COMMON, mage.cards.s.ScrybSprites.class)); + cards.add(new SetCardInfo("Sea Serpent", 78, Rarity.COMMON, mage.cards.s.SeaSerpent.class)); + cards.add(new SetCardInfo("Sedge Troll", 174, Rarity.RARE, mage.cards.s.SedgeTroll.class)); + cards.add(new SetCardInfo("Sengir Vampire", 129, Rarity.UNCOMMON, mage.cards.s.SengirVampire.class)); + cards.add(new SetCardInfo("Serendib Efreet", 79, Rarity.RARE, mage.cards.s.SerendibEfreet.class)); + cards.add(new SetCardInfo("Serra Angel", 40, Rarity.UNCOMMON, mage.cards.s.SerraAngel.class)); + cards.add(new SetCardInfo("Shanodin Dryads", 216, Rarity.COMMON, mage.cards.s.ShanodinDryads.class)); + cards.add(new SetCardInfo("Shatter", 175, Rarity.COMMON, mage.cards.s.Shatter.class)); + cards.add(new SetCardInfo("Shatterstorm", 176, Rarity.UNCOMMON, mage.cards.s.Shatterstorm.class)); + cards.add(new SetCardInfo("Shivan Dragon", 177, Rarity.RARE, mage.cards.s.ShivanDragon.class)); + cards.add(new SetCardInfo("Simulacrum", 130, Rarity.UNCOMMON, mage.cards.s.Simulacrum.class)); + cards.add(new SetCardInfo("Siren's Call", 80, Rarity.UNCOMMON, mage.cards.s.SirensCall.class)); + //cards.add(new SetCardInfo("Sleight of Mind", 81, Rarity.RARE, mage.cards.s.SleightOfMind.class)); + cards.add(new SetCardInfo("Smoke", 178, Rarity.RARE, mage.cards.s.Smoke.class)); + cards.add(new SetCardInfo("Sol Ring", 274, Rarity.UNCOMMON, mage.cards.s.SolRing.class)); + cards.add(new SetCardInfo("Sorceress Queen", 131, Rarity.RARE, mage.cards.s.SorceressQueen.class)); + cards.add(new SetCardInfo("Soul Net", 275, Rarity.UNCOMMON, mage.cards.s.SoulNet.class)); + cards.add(new SetCardInfo("Spell Blast", 82, Rarity.COMMON, mage.cards.s.SpellBlast.class)); + cards.add(new SetCardInfo("Stasis", 83, Rarity.RARE, mage.cards.s.Stasis.class)); + cards.add(new SetCardInfo("Steal Artifact", 84, Rarity.UNCOMMON, mage.cards.s.StealArtifact.class)); + cards.add(new SetCardInfo("Stone Giant", 179, Rarity.UNCOMMON, mage.cards.s.StoneGiant.class)); + cards.add(new SetCardInfo("Stone Rain", 180, Rarity.COMMON, mage.cards.s.StoneRain.class)); + cards.add(new SetCardInfo("Stream of Life", 217, Rarity.COMMON, mage.cards.s.StreamOfLife.class)); + cards.add(new SetCardInfo("Sunglasses of Urza", 276, Rarity.RARE, mage.cards.s.SunglassesOfUrza.class)); + cards.add(new SetCardInfo("Swamp", 300, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", 299, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", 298, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swords to Plowshares", 41, Rarity.UNCOMMON, mage.cards.s.SwordsToPlowshares.class)); + cards.add(new SetCardInfo("Taiga", 287, Rarity.RARE, mage.cards.t.Taiga.class)); + cards.add(new SetCardInfo("Terror", 132, Rarity.COMMON, mage.cards.t.Terror.class)); + cards.add(new SetCardInfo("The Hive", 277, Rarity.RARE, mage.cards.t.TheHive.class)); + cards.add(new SetCardInfo("The Rack", 278, Rarity.UNCOMMON, mage.cards.t.TheRack.class)); + cards.add(new SetCardInfo("Thicket Basilisk", 218, Rarity.UNCOMMON, mage.cards.t.ThicketBasilisk.class)); + cards.add(new SetCardInfo("Thoughtlace", 85, Rarity.RARE, mage.cards.t.Thoughtlace.class)); + cards.add(new SetCardInfo("Throne of Bone", 279, Rarity.UNCOMMON, mage.cards.t.ThroneOfBone.class)); + cards.add(new SetCardInfo("Timber Wolves", 219, Rarity.RARE, mage.cards.t.TimberWolves.class)); + cards.add(new SetCardInfo("Titania's Song", 220, Rarity.RARE, mage.cards.t.TitaniasSong.class)); + cards.add(new SetCardInfo("Tranquility", 221, Rarity.COMMON, mage.cards.t.Tranquility.class)); + cards.add(new SetCardInfo("Tropical Island", 288, Rarity.RARE, mage.cards.t.TropicalIsland.class)); + cards.add(new SetCardInfo("Tsunami", 222, Rarity.UNCOMMON, mage.cards.t.Tsunami.class)); + cards.add(new SetCardInfo("Tundra", 289, Rarity.RARE, mage.cards.t.Tundra.class)); + cards.add(new SetCardInfo("Tunnel", 181, Rarity.UNCOMMON, mage.cards.t.Tunnel.class)); + cards.add(new SetCardInfo("Underground Sea", 290, Rarity.RARE, mage.cards.u.UndergroundSea.class)); + cards.add(new SetCardInfo("Unholy Strength", 133, Rarity.COMMON, mage.cards.u.UnholyStrength.class)); + cards.add(new SetCardInfo("Unstable Mutation", 86, Rarity.COMMON, mage.cards.u.UnstableMutation.class)); + cards.add(new SetCardInfo("Unsummon", 87, Rarity.COMMON, mage.cards.u.Unsummon.class)); + cards.add(new SetCardInfo("Uthden Troll", 182, Rarity.UNCOMMON, mage.cards.u.UthdenTroll.class)); + cards.add(new SetCardInfo("Verduran Enchantress", 223, Rarity.RARE, mage.cards.v.VerduranEnchantress.class)); + cards.add(new SetCardInfo("Vesuvan Doppelganger", 88, Rarity.RARE, mage.cards.v.VesuvanDoppelganger.class)); + cards.add(new SetCardInfo("Veteran Bodyguard", 42, Rarity.RARE, mage.cards.v.VeteranBodyguard.class)); + cards.add(new SetCardInfo("Volcanic Eruption", 89, Rarity.RARE, mage.cards.v.VolcanicEruption.class)); + cards.add(new SetCardInfo("Volcanic Island", 291, Rarity.RARE, mage.cards.v.VolcanicIsland.class)); + cards.add(new SetCardInfo("Wall of Air", 90, Rarity.UNCOMMON, mage.cards.w.WallOfAir.class)); + cards.add(new SetCardInfo("Wall of Bone", 134, Rarity.UNCOMMON, mage.cards.w.WallOfBone.class)); + cards.add(new SetCardInfo("Wall of Brambles", 224, Rarity.UNCOMMON, mage.cards.w.WallOfBrambles.class)); + cards.add(new SetCardInfo("Wall of Fire", 183, Rarity.UNCOMMON, mage.cards.w.WallOfFire.class)); + cards.add(new SetCardInfo("Wall of Ice", 225, Rarity.UNCOMMON, mage.cards.w.WallOfIce.class)); + cards.add(new SetCardInfo("Wall of Stone", 184, Rarity.UNCOMMON, mage.cards.w.WallOfStone.class)); + cards.add(new SetCardInfo("Wall of Swords", 43, Rarity.UNCOMMON, mage.cards.w.WallOfSwords.class)); + cards.add(new SetCardInfo("Wall of Water", 91, Rarity.UNCOMMON, mage.cards.w.WallOfWater.class)); + cards.add(new SetCardInfo("Wall of Wood", 226, Rarity.COMMON, mage.cards.w.WallOfWood.class)); + cards.add(new SetCardInfo("Wanderlust", 227, Rarity.UNCOMMON, mage.cards.w.Wanderlust.class)); + cards.add(new SetCardInfo("War Mammoth", 228, Rarity.COMMON, mage.cards.w.WarMammoth.class)); + cards.add(new SetCardInfo("Warp Artifact", 135, Rarity.RARE, mage.cards.w.WarpArtifact.class)); + cards.add(new SetCardInfo("Water Elemental", 92, Rarity.UNCOMMON, mage.cards.w.WaterElemental.class)); + cards.add(new SetCardInfo("Weakness", 136, Rarity.COMMON, mage.cards.w.Weakness.class)); + cards.add(new SetCardInfo("Web", 229, Rarity.RARE, mage.cards.w.Web.class)); + cards.add(new SetCardInfo("Wheel of Fortune", 185, Rarity.RARE, mage.cards.w.WheelOfFortune.class)); + cards.add(new SetCardInfo("White Knight", 44, Rarity.UNCOMMON, mage.cards.w.WhiteKnight.class)); + cards.add(new SetCardInfo("White Ward", 45, Rarity.UNCOMMON, mage.cards.w.WhiteWard.class)); + cards.add(new SetCardInfo("Wild Growth", 230, Rarity.COMMON, mage.cards.w.WildGrowth.class)); + cards.add(new SetCardInfo("Will-o'-the-Wisp", 137, Rarity.RARE, mage.cards.w.WillOTheWisp.class)); + cards.add(new SetCardInfo("Winter Orb", 280, Rarity.RARE, mage.cards.w.WinterOrb.class)); + cards.add(new SetCardInfo("Wooden Sphere", 281, Rarity.UNCOMMON, mage.cards.w.WoodenSphere.class)); + cards.add(new SetCardInfo("Wrath of God", 46, Rarity.RARE, mage.cards.w.WrathOfGod.class)); + cards.add(new SetCardInfo("Zombie Master", 138, Rarity.RARE, mage.cards.z.ZombieMaster.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/SummerOfMagic.java b/Mage.Sets/src/mage/sets/SummerOfMagic.java new file mode 100644 index 00000000000..54320f5e435 --- /dev/null +++ b/Mage.Sets/src/mage/sets/SummerOfMagic.java @@ -0,0 +1,27 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/psum + * This is not the "Summer Magic" Revised printing. + */ +public class SummerOfMagic extends ExpansionSet { + + private static final SummerOfMagic instance = new SummerOfMagic(); + + public static SummerOfMagic getInstance() { + return instance; + } + + private SummerOfMagic() { + super("Summer of Magic", "PSUM", ExpansionSet.buildDate(2007, 7, 21), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Faerie Conclave", 1, Rarity.RARE, mage.cards.f.FaerieConclave.class)); + cards.add(new SetCardInfo("Treetop Village", 2, Rarity.RARE, mage.cards.t.TreetopVillage.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/SuperSeries.java b/Mage.Sets/src/mage/sets/SuperSeries.java deleted file mode 100644 index c50c19245e2..00000000000 --- a/Mage.Sets/src/mage/sets/SuperSeries.java +++ /dev/null @@ -1,55 +0,0 @@ - -package mage.sets; - -import mage.cards.ExpansionSet; -import mage.constants.Rarity; -import mage.constants.SetType; - -/** - * @author fireshoes - */ -public final class SuperSeries extends ExpansionSet { - - private static final SuperSeries instance = new SuperSeries(); - - public static SuperSeries getInstance() { - return instance; - } - - private SuperSeries() { - super("Super Series", "SUS", ExpansionSet.buildDate(1996, 1, 1), SetType.PROMOTIONAL); - this.hasBoosters = false; - this.hasBasicLands = false; - - cards.add(new SetCardInfo("City of Brass", 6, Rarity.SPECIAL, mage.cards.c.CityOfBrass.class)); - cards.add(new SetCardInfo("Crusade", 4, Rarity.SPECIAL, mage.cards.c.Crusade.class)); - cards.add(new SetCardInfo("Elvish Champion", 17, Rarity.SPECIAL, mage.cards.e.ElvishChampion.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Elvish Champion", 26, Rarity.SPECIAL, mage.cards.e.ElvishChampion.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Elvish Champion", 32, Rarity.SPECIAL, mage.cards.e.ElvishChampion.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Elvish Lyrist", 5, Rarity.COMMON, mage.cards.e.ElvishLyrist.class)); - cards.add(new SetCardInfo("Giant Growth", 8, Rarity.COMMON, mage.cards.g.GiantGrowth.class)); - cards.add(new SetCardInfo("Glorious Anthem", 16, Rarity.SPECIAL, mage.cards.g.GloriousAnthem.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Glorious Anthem", 25, Rarity.SPECIAL, mage.cards.g.GloriousAnthem.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Glorious Anthem", 31, Rarity.SPECIAL, mage.cards.g.GloriousAnthem.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Lord of Atlantis", 3, Rarity.SPECIAL, mage.cards.l.LordOfAtlantis.class)); - cards.add(new SetCardInfo("Mad Auntie", 18, Rarity.SPECIAL, mage.cards.m.MadAuntie.class)); - cards.add(new SetCardInfo("Royal Assassin", 20, Rarity.SPECIAL, mage.cards.r.RoyalAssassin.class)); - cards.add(new SetCardInfo("Sakura-Tribe Elder", 12, Rarity.COMMON, mage.cards.s.SakuraTribeElder.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Sakura-Tribe Elder", 21, Rarity.COMMON, mage.cards.s.SakuraTribeElder.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Sakura-Tribe Elder", 27, Rarity.COMMON, mage.cards.s.SakuraTribeElder.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Serra Avatar", 2, Rarity.SPECIAL, mage.cards.s.SerraAvatar.class)); - cards.add(new SetCardInfo("Shard Phoenix", 13, Rarity.SPECIAL, mage.cards.s.ShardPhoenix.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Shard Phoenix", 22, Rarity.SPECIAL, mage.cards.s.ShardPhoenix.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Shard Phoenix", 28, Rarity.SPECIAL, mage.cards.s.ShardPhoenix.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Slith Firewalker", 19, Rarity.SPECIAL, mage.cards.s.SlithFirewalker.class)); - cards.add(new SetCardInfo("Soltari Priest", 14, Rarity.SPECIAL, mage.cards.s.SoltariPriest.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Soltari Priest", 23, Rarity.SPECIAL, mage.cards.s.SoltariPriest.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Soltari Priest", 29, Rarity.SPECIAL, mage.cards.s.SoltariPriest.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Thran Quarry", 1, Rarity.SPECIAL, mage.cards.t.ThranQuarry.class)); - cards.add(new SetCardInfo("Two-Headed Dragon", 9, Rarity.SPECIAL, mage.cards.t.TwoHeadedDragon.class)); - cards.add(new SetCardInfo("Volcanic Hammer", 7, Rarity.COMMON, mage.cards.v.VolcanicHammer.class)); - cards.add(new SetCardInfo("Whirling Dervish", 15, Rarity.COMMON, mage.cards.w.WhirlingDervish.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Whirling Dervish", 24, Rarity.COMMON, mage.cards.w.WhirlingDervish.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Whirling Dervish", 30, Rarity.COMMON, mage.cards.w.WhirlingDervish.class, NON_FULL_USE_VARIOUS)); - } -} diff --git a/Mage.Sets/src/mage/sets/TarkirDragonfury.java b/Mage.Sets/src/mage/sets/TarkirDragonfury.java new file mode 100644 index 00000000000..95bd896427d --- /dev/null +++ b/Mage.Sets/src/mage/sets/TarkirDragonfury.java @@ -0,0 +1,28 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/ptkdf + */ +public class TarkirDragonfury extends ExpansionSet { + + private static final TarkirDragonfury instance = new TarkirDragonfury(); + + public static TarkirDragonfury getInstance() { + return instance; + } + + private TarkirDragonfury() { + super("Tarkir Dragonfury", "PTKDF", ExpansionSet.buildDate(2015, 4, 3), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Dragon Fodder", 135, Rarity.COMMON, mage.cards.d.DragonFodder.class)); + cards.add(new SetCardInfo("Dragonlord's Servant", 138, Rarity.UNCOMMON, mage.cards.d.DragonlordsServant.class)); + cards.add(new SetCardInfo("Evolving Wilds", 248, Rarity.COMMON, mage.cards.e.EvolvingWilds.class)); + cards.add(new SetCardInfo("Foe-Razer Regent", 187, Rarity.RARE, mage.cards.f.FoeRazerRegent.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/TenthEditionPromos.java b/Mage.Sets/src/mage/sets/TenthEditionPromos.java new file mode 100644 index 00000000000..665c4df14af --- /dev/null +++ b/Mage.Sets/src/mage/sets/TenthEditionPromos.java @@ -0,0 +1,25 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/p10e + */ +public class TenthEditionPromos extends ExpansionSet { + + private static final TenthEditionPromos instance = new TenthEditionPromos(); + + public static TenthEditionPromos getInstance() { + return instance; + } + + private TenthEditionPromos() { + super("Tenth Edition Promos", "P10E", ExpansionSet.buildDate(2007, 7, 13), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Reya Dawnbringer", 35, Rarity.RARE, mage.cards.r.ReyaDawnbringer.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/TherosBeyondDeathPromos.java b/Mage.Sets/src/mage/sets/TherosBeyondDeathPromos.java new file mode 100644 index 00000000000..3c8252c57f2 --- /dev/null +++ b/Mage.Sets/src/mage/sets/TherosBeyondDeathPromos.java @@ -0,0 +1,160 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/pthb + */ +public class TherosBeyondDeathPromos extends ExpansionSet { + + private static final TherosBeyondDeathPromos instance = new TherosBeyondDeathPromos(); + + public static TherosBeyondDeathPromos getInstance() { + return instance; + } + + private TherosBeyondDeathPromos() { + super("Theros Beyond Death Promos", "PTHB", ExpansionSet.buildDate(2020, 1, 24), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Allure of the Unknown", "207p", Rarity.RARE, mage.cards.a.AllureOfTheUnknown.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Allure of the Unknown", "207s", Rarity.RARE, mage.cards.a.AllureOfTheUnknown.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Aphemia, the Cacophony", "84p", Rarity.RARE, mage.cards.a.AphemiaTheCacophony.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Aphemia, the Cacophony", "84s", Rarity.RARE, mage.cards.a.AphemiaTheCacophony.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Arasta of the Endless Web", "165p", Rarity.RARE, mage.cards.a.ArastaOfTheEndlessWeb.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Arasta of the Endless Web", "165s", Rarity.RARE, mage.cards.a.ArastaOfTheEndlessWeb.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Archon of Sun's Grace", "3p", Rarity.RARE, mage.cards.a.ArchonOfSunsGrace.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Archon of Sun's Grace", "3s", Rarity.RARE, mage.cards.a.ArchonOfSunsGrace.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Ashiok's Erasure", "43p", Rarity.RARE, mage.cards.a.AshioksErasure.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Ashiok's Erasure", "43s", Rarity.RARE, mage.cards.a.AshioksErasure.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Ashiok, Nightmare Muse", "208p", Rarity.MYTHIC, mage.cards.a.AshiokNightmareMuse.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Ashiok, Nightmare Muse", "208s", Rarity.MYTHIC, mage.cards.a.AshiokNightmareMuse.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Atris, Oracle of Half-Truths", "209p", Rarity.RARE, mage.cards.a.AtrisOracleOfHalfTruths.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Atris, Oracle of Half-Truths", "209s", Rarity.RARE, mage.cards.a.AtrisOracleOfHalfTruths.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Bronzehide Lion", "210p", Rarity.RARE, mage.cards.b.BronzehideLion.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Bronzehide Lion", "210s", Rarity.RARE, mage.cards.b.BronzehideLion.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Calix, Destiny's Hand", "211p", Rarity.MYTHIC, mage.cards.c.CalixDestinysHand.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Calix, Destiny's Hand", "211s", Rarity.MYTHIC, mage.cards.c.CalixDestinysHand.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Dalakos, Crafter of Wonders", "212p", Rarity.RARE, mage.cards.d.DalakosCrafterOfWonders.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Dalakos, Crafter of Wonders", "212s", Rarity.RARE, mage.cards.d.DalakosCrafterOfWonders.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Dream Trawler", "214p", Rarity.RARE, mage.cards.d.DreamTrawler.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Dream Trawler", "214s", Rarity.RARE, mage.cards.d.DreamTrawler.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Dryad of the Ilysian Grove", "169p", Rarity.RARE, mage.cards.d.DryadOfTheIlysianGrove.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Dryad of the Ilysian Grove", "169s", Rarity.RARE, mage.cards.d.DryadOfTheIlysianGrove.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Eat to Extinction", "90p", Rarity.RARE, mage.cards.e.EatToExtinction.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Eat to Extinction", "90s", Rarity.RARE, mage.cards.e.EatToExtinction.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Eidolon of Obstruction", "12p", Rarity.RARE, mage.cards.e.EidolonOfObstruction.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Eidolon of Obstruction", "12s", Rarity.RARE, mage.cards.e.EidolonOfObstruction.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Elspeth Conquers Death", "13p", Rarity.RARE, mage.cards.e.ElspethConquersDeath.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Elspeth Conquers Death", "13s", Rarity.RARE, mage.cards.e.ElspethConquersDeath.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Elspeth, Sun's Nemesis", "14p", Rarity.MYTHIC, mage.cards.e.ElspethSunsNemesis.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Elspeth, Sun's Nemesis", "14s", Rarity.MYTHIC, mage.cards.e.ElspethSunsNemesis.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Enigmatic Incarnation", "215p", Rarity.RARE, mage.cards.e.EnigmaticIncarnation.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Enigmatic Incarnation", "215s", Rarity.RARE, mage.cards.e.EnigmaticIncarnation.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Erebos's Intervention", "94p", Rarity.RARE, mage.cards.e.ErebossIntervention.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Erebos's Intervention", "94s", Rarity.RARE, mage.cards.e.ErebossIntervention.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Erebos, Bleak-Hearted", "93p", Rarity.MYTHIC, mage.cards.e.ErebosBleakHearted.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Erebos, Bleak-Hearted", "93s", Rarity.MYTHIC, mage.cards.e.ErebosBleakHearted.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Gallia of the Endless Dance", "217p", Rarity.RARE, mage.cards.g.GalliaOfTheEndlessDance.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Gallia of the Endless Dance", "217s", Rarity.RARE, mage.cards.g.GalliaOfTheEndlessDance.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Gravebreaker Lamia", "98p", Rarity.RARE, mage.cards.g.GravebreakerLamia.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Gravebreaker Lamia", "98s", Rarity.RARE, mage.cards.g.GravebreakerLamia.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Haktos the Unscarred", "218p", Rarity.RARE, mage.cards.h.HaktosTheUnscarred.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Haktos the Unscarred", "218s", Rarity.RARE, mage.cards.h.HaktosTheUnscarred.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Heliod's Intervention", "19p", Rarity.RARE, mage.cards.h.HeliodsIntervention.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Heliod's Intervention", "19s", Rarity.RARE, mage.cards.h.HeliodsIntervention.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Heliod, Sun-Crowned", "18p", Rarity.MYTHIC, mage.cards.h.HeliodSunCrowned.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Heliod, Sun-Crowned", "18s", Rarity.MYTHIC, mage.cards.h.HeliodSunCrowned.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Idyllic Tutor", "24p", Rarity.RARE, mage.cards.i.IdyllicTutor.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Idyllic Tutor", "24s", Rarity.RARE, mage.cards.i.IdyllicTutor.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Kiora Bests the Sea God", "52p", Rarity.MYTHIC, mage.cards.k.KioraBestsTheSeaGod.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Kiora Bests the Sea God", "52s", Rarity.MYTHIC, mage.cards.k.KioraBestsTheSeaGod.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Klothys, God of Destiny", "220p", Rarity.MYTHIC, mage.cards.k.KlothysGodOfDestiny.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Klothys, God of Destiny", "220s", Rarity.MYTHIC, mage.cards.k.KlothysGodOfDestiny.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Kroxa, Titan of Death's Hunger", "221p", Rarity.MYTHIC, mage.cards.k.KroxaTitanOfDeathsHunger.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Kroxa, Titan of Death's Hunger", "221s", Rarity.MYTHIC, mage.cards.k.KroxaTitanOfDeathsHunger.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Kunoros, Hound of Athreos", "222p", Rarity.RARE, mage.cards.k.KunorosHoundOfAthreos.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Kunoros, Hound of Athreos", "222s", Rarity.RARE, mage.cards.k.KunorosHoundOfAthreos.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Labyrinth of Skophos", "243p", Rarity.RARE, mage.cards.l.LabyrinthOfSkophos.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Labyrinth of Skophos", "243s", Rarity.RARE, mage.cards.l.LabyrinthOfSkophos.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mantle of the Wolf", "178p", Rarity.RARE, mage.cards.m.MantleOfTheWolf.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mantle of the Wolf", "178s", Rarity.RARE, mage.cards.m.MantleOfTheWolf.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Nadir Kraken", "55p", Rarity.RARE, mage.cards.n.NadirKraken.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Nadir Kraken", "55s", Rarity.RARE, mage.cards.n.NadirKraken.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Nessian Boar", "181p", Rarity.RARE, mage.cards.n.NessianBoar.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Nessian Boar", "181s", Rarity.RARE, mage.cards.n.NessianBoar.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Nightmare Shepherd", "108p", Rarity.RARE, mage.cards.n.NightmareShepherd.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Nightmare Shepherd", "108s", Rarity.RARE, mage.cards.n.NightmareShepherd.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Nylea's Intervention", "188p", Rarity.RARE, mage.cards.n.NyleasIntervention.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Nylea's Intervention", "188s", Rarity.RARE, mage.cards.n.NyleasIntervention.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Nylea, Keen-Eyed", "185p", Rarity.MYTHIC, mage.cards.n.NyleaKeenEyed.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Nylea, Keen-Eyed", "185s", Rarity.MYTHIC, mage.cards.n.NyleaKeenEyed.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Nyx Lotus", "235p", Rarity.RARE, mage.cards.n.NyxLotus.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Nyx Lotus", "235s", Rarity.RARE, mage.cards.n.NyxLotus.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Nyxbloom Ancient", "190p", Rarity.MYTHIC, mage.cards.n.NyxbloomAncient.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Nyxbloom Ancient", "190s", Rarity.MYTHIC, mage.cards.n.NyxbloomAncient.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Ox of Agonas", "147p", Rarity.MYTHIC, mage.cards.o.OxOfAgonas.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Ox of Agonas", "147s", Rarity.MYTHIC, mage.cards.o.OxOfAgonas.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Phoenix of Ash", "148p", Rarity.RARE, mage.cards.p.PhoenixOfAsh.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Phoenix of Ash", "148s", Rarity.RARE, mage.cards.p.PhoenixOfAsh.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Polukranos, Unchained", "224p", Rarity.MYTHIC, mage.cards.p.PolukranosUnchained.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Polukranos, Unchained", "224s", Rarity.MYTHIC, mage.cards.p.PolukranosUnchained.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Protean Thaumaturge", "60p", Rarity.RARE, mage.cards.p.ProteanThaumaturge.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Protean Thaumaturge", "60s", Rarity.RARE, mage.cards.p.ProteanThaumaturge.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Purphoros's Intervention", "151p", Rarity.RARE, mage.cards.p.PurphorossIntervention.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Purphoros's Intervention", "151s", Rarity.RARE, mage.cards.p.PurphorossIntervention.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Purphoros, Bronze-Blooded", "150p", Rarity.MYTHIC, mage.cards.p.PurphorosBronzeBlooded.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Purphoros, Bronze-Blooded", "150s", Rarity.MYTHIC, mage.cards.p.PurphorosBronzeBlooded.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Setessan Champion", "198p", Rarity.RARE, mage.cards.s.SetessanChampion.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Setessan Champion", "198s", Rarity.RARE, mage.cards.s.SetessanChampion.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Shadowspear", "236p", Rarity.RARE, mage.cards.s.Shadowspear.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Shadowspear", "236s", Rarity.RARE, mage.cards.s.Shadowspear.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Shatter the Sky", "37p", Rarity.RARE, mage.cards.s.ShatterTheSky.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Shatter the Sky", "37s", Rarity.RARE, mage.cards.s.ShatterTheSky.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Storm Herald", "156p", Rarity.RARE, mage.cards.s.StormHerald.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Storm Herald", "156s", Rarity.RARE, mage.cards.s.StormHerald.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Storm's Wrath", "157p", Rarity.RARE, mage.cards.s.StormsWrath.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Storm's Wrath", "157s", Rarity.RARE, mage.cards.s.StormsWrath.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Taranika, Akroan Veteran", "39p", Rarity.RARE, mage.cards.t.TaranikaAkroanVeteran.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Taranika, Akroan Veteran", "39s", Rarity.RARE, mage.cards.t.TaranikaAkroanVeteran.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Tectonic Giant", "158p", Rarity.RARE, mage.cards.t.TectonicGiant.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Tectonic Giant", "158s", Rarity.RARE, mage.cards.t.TectonicGiant.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Temple of Abandon", "244p", Rarity.RARE, mage.cards.t.TempleOfAbandon.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Temple of Abandon", "244s", Rarity.RARE, mage.cards.t.TempleOfAbandon.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Temple of Deceit", "245p", Rarity.RARE, mage.cards.t.TempleOfDeceit.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Temple of Deceit", "245s", Rarity.RARE, mage.cards.t.TempleOfDeceit.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Temple of Enlightenment", "246p", Rarity.RARE, mage.cards.t.TempleOfEnlightenment.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Temple of Enlightenment", "246s", Rarity.RARE, mage.cards.t.TempleOfEnlightenment.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Temple of Malice", "247p", Rarity.RARE, mage.cards.t.TempleOfMalice.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Temple of Malice", "247s", Rarity.RARE, mage.cards.t.TempleOfMalice.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Temple of Plenty", "248p", Rarity.RARE, mage.cards.t.TempleOfPlenty.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Temple of Plenty", "248s", Rarity.RARE, mage.cards.t.TempleOfPlenty.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Thassa's Intervention", "72p", Rarity.RARE, mage.cards.t.ThassasIntervention.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Thassa's Intervention", "72s", Rarity.RARE, mage.cards.t.ThassasIntervention.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Thassa's Oracle", "73p", Rarity.RARE, mage.cards.t.ThassasOracle.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Thassa's Oracle", "73s", Rarity.RARE, mage.cards.t.ThassasOracle.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Thassa, Deep-Dwelling", "71p", Rarity.MYTHIC, mage.cards.t.ThassaDeepDwelling.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Thassa, Deep-Dwelling", "71s", Rarity.MYTHIC, mage.cards.t.ThassaDeepDwelling.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("The Akroan War", "124p", Rarity.RARE, mage.cards.t.TheAkroanWar.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("The Akroan War", "124s", Rarity.RARE, mage.cards.t.TheAkroanWar.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("The First Iroan Games", "170p", Rarity.RARE, mage.cards.t.TheFirstIroanGames.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("The First Iroan Games", "170s", Rarity.RARE, mage.cards.t.TheFirstIroanGames.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Thryx, the Sudden Storm", "76p", Rarity.RARE, mage.cards.t.ThryxTheSuddenStorm.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Thryx, the Sudden Storm", "76s", Rarity.RARE, mage.cards.t.ThryxTheSuddenStorm.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Treacherous Blessing", "117p", Rarity.RARE, mage.cards.t.TreacherousBlessing.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Treacherous Blessing", "117s", Rarity.RARE, mage.cards.t.TreacherousBlessing.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Tymaret Calls the Dead", "118p", Rarity.RARE, mage.cards.t.TymaretCallsTheDead.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Tymaret Calls the Dead", "118s", Rarity.RARE, mage.cards.t.TymaretCallsTheDead.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Underworld Breach", "161p", Rarity.RARE, mage.cards.u.UnderworldBreach.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Underworld Breach", "161s", Rarity.RARE, mage.cards.u.UnderworldBreach.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Uro, Titan of Nature's Wrath", "229p", Rarity.MYTHIC, mage.cards.u.UroTitanOfNaturesWrath.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Uro, Titan of Nature's Wrath", "229s", Rarity.MYTHIC, mage.cards.u.UroTitanOfNaturesWrath.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Wavebreak Hippocamp", "80p", Rarity.RARE, mage.cards.w.WavebreakHippocamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Wavebreak Hippocamp", "80s", Rarity.RARE, mage.cards.w.WavebreakHippocamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Woe Strider", "123p", Rarity.RARE, mage.cards.w.WoeStrider.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Woe Strider", "123s", Rarity.RARE, mage.cards.w.WoeStrider.class, NON_FULL_USE_VARIOUS)); + } +} diff --git a/Mage.Sets/src/mage/sets/TherosPromos.java b/Mage.Sets/src/mage/sets/TherosPromos.java new file mode 100644 index 00000000000..a0f7b13c1c1 --- /dev/null +++ b/Mage.Sets/src/mage/sets/TherosPromos.java @@ -0,0 +1,34 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/pths + */ +public class TherosPromos extends ExpansionSet { + + private static final TherosPromos instance = new TherosPromos(); + + public static TherosPromos getInstance() { + return instance; + } + + private TherosPromos() { + super("Theros Promos", "PTHS", ExpansionSet.buildDate(2013, 9, 21), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Abhorrent Overlord", 75, Rarity.RARE, mage.cards.a.AbhorrentOverlord.class)); + cards.add(new SetCardInfo("Anthousa, Setessan Hero", 149, Rarity.RARE, mage.cards.a.AnthousaSetessanHero.class)); + cards.add(new SetCardInfo("Bident of Thassa", 42, Rarity.RARE, mage.cards.b.BidentOfThassa.class)); + cards.add(new SetCardInfo("Celestial Archon", 3, Rarity.RARE, mage.cards.c.CelestialArchon.class)); + cards.add(new SetCardInfo("Ember Swallower", 120, Rarity.RARE, mage.cards.e.EmberSwallower.class)); + cards.add(new SetCardInfo("Karametra's Acolyte", 160, Rarity.UNCOMMON, mage.cards.k.KarametrasAcolyte.class)); + cards.add(new SetCardInfo("Nighthowler", 98, Rarity.RARE, mage.cards.n.Nighthowler.class)); + cards.add(new SetCardInfo("Phalanx Leader", 26, Rarity.UNCOMMON, mage.cards.p.PhalanxLeader.class)); + cards.add(new SetCardInfo("Shipbreaker Kraken", 63, Rarity.RARE, mage.cards.s.ShipbreakerKraken.class)); + cards.add(new SetCardInfo("Sylvan Caryatid", "*180", Rarity.RARE, mage.cards.s.SylvanCaryatid.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/ThroneOfEldrainePromos.java b/Mage.Sets/src/mage/sets/ThroneOfEldrainePromos.java new file mode 100644 index 00000000000..9fb6b76e0d3 --- /dev/null +++ b/Mage.Sets/src/mage/sets/ThroneOfEldrainePromos.java @@ -0,0 +1,160 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/peld + */ +public class ThroneOfEldrainePromos extends ExpansionSet { + + private static final ThroneOfEldrainePromos instance = new ThroneOfEldrainePromos(); + + public static ThroneOfEldrainePromos getInstance() { + return instance; + } + + private ThroneOfEldrainePromos() { + super("Throne of Eldraine Promos", "PELD", ExpansionSet.buildDate(2019, 10, 4), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Acclaimed Contender", "1p", Rarity.RARE, mage.cards.a.AcclaimedContender.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Acclaimed Contender", "1s", Rarity.RARE, mage.cards.a.AcclaimedContender.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Ayara, First of Locthwain", "75p", Rarity.RARE, mage.cards.a.AyaraFirstOfLocthwain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Ayara, First of Locthwain", "75s", Rarity.RARE, mage.cards.a.AyaraFirstOfLocthwain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Blacklance Paragon", "79p", Rarity.RARE, mage.cards.b.BlacklanceParagon.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Blacklance Paragon", "79s", Rarity.RARE, mage.cards.b.BlacklanceParagon.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Bonecrusher Giant", "115p", Rarity.RARE, mage.cards.b.BonecrusherGiant.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Bonecrusher Giant", "115s", Rarity.RARE, mage.cards.b.BonecrusherGiant.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Brazen Borrower", "39p", Rarity.MYTHIC, mage.cards.b.BrazenBorrower.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Brazen Borrower", "39s", Rarity.MYTHIC, mage.cards.b.BrazenBorrower.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Castle Ardenvale", "238p", Rarity.RARE, mage.cards.c.CastleArdenvale.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Castle Ardenvale", "238s", Rarity.RARE, mage.cards.c.CastleArdenvale.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Castle Embereth", "239p", Rarity.RARE, mage.cards.c.CastleEmbereth.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Castle Embereth", "239s", Rarity.RARE, mage.cards.c.CastleEmbereth.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Castle Garenbrig", "240p", Rarity.RARE, mage.cards.c.CastleGarenbrig.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Castle Garenbrig", "240s", Rarity.RARE, mage.cards.c.CastleGarenbrig.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Castle Locthwain", "241p", Rarity.RARE, mage.cards.c.CastleLocthwain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Castle Locthwain", "241s", Rarity.RARE, mage.cards.c.CastleLocthwain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Castle Vantress", "242p", Rarity.RARE, mage.cards.c.CastleVantress.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Castle Vantress", "242s", Rarity.RARE, mage.cards.c.CastleVantress.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Charming Prince", "8p", Rarity.RARE, mage.cards.c.CharmingPrince.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Charming Prince", "8s", Rarity.RARE, mage.cards.c.CharmingPrince.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Clackbridge Troll", "84p", Rarity.RARE, mage.cards.c.ClackbridgeTroll.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Clackbridge Troll", "84s", Rarity.RARE, mage.cards.c.ClackbridgeTroll.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Dance of the Manse", "186p", Rarity.RARE, mage.cards.d.DanceOfTheManse.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Dance of the Manse", "186s", Rarity.RARE, mage.cards.d.DanceOfTheManse.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Doom Foretold", "187p", Rarity.RARE, mage.cards.d.DoomForetold.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Doom Foretold", "187s", Rarity.RARE, mage.cards.d.DoomForetold.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Embercleave", "120p", Rarity.MYTHIC, mage.cards.e.Embercleave.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Embercleave", "120s", Rarity.MYTHIC, mage.cards.e.Embercleave.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Emry, Lurker of the Loch", "43p", Rarity.RARE, mage.cards.e.EmryLurkerOfTheLoch.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Emry, Lurker of the Loch", "43s", Rarity.RARE, mage.cards.e.EmryLurkerOfTheLoch.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Escape to the Wilds", "189p", Rarity.RARE, mage.cards.e.EscapeToTheWilds.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Escape to the Wilds", "189s", Rarity.RARE, mage.cards.e.EscapeToTheWilds.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Fabled Passage", "244p", Rarity.RARE, mage.cards.f.FabledPassage.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Fabled Passage", "244s", Rarity.RARE, mage.cards.f.FabledPassage.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Fae of Wishes", "44p", Rarity.RARE, mage.cards.f.FaeOfWishes.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Fae of Wishes", "44s", Rarity.RARE, mage.cards.f.FaeOfWishes.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Faeburrow Elder", "190p", Rarity.RARE, mage.cards.f.FaeburrowElder.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Faeburrow Elder", "190s", Rarity.RARE, mage.cards.f.FaeburrowElder.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Feasting Troll King", "152p", Rarity.RARE, mage.cards.f.FeastingTrollKing.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Feasting Troll King", "152s", Rarity.RARE, mage.cards.f.FeastingTrollKing.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Fervent Champion", "124p", Rarity.RARE, mage.cards.f.FerventChampion.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Fervent Champion", "124s", Rarity.RARE, mage.cards.f.FerventChampion.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Fires of Invention", "125p", Rarity.RARE, mage.cards.f.FiresOfInvention.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Fires of Invention", "125s", Rarity.RARE, mage.cards.f.FiresOfInvention.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Folio of Fancies", "46p", Rarity.RARE, mage.cards.f.FolioOfFancies.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Folio of Fancies", "46s", Rarity.RARE, mage.cards.f.FolioOfFancies.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Gadwick, the Wizened", "48p", Rarity.RARE, mage.cards.g.GadwickTheWizened.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Gadwick, the Wizened", "48s", Rarity.RARE, mage.cards.g.GadwickTheWizened.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Garruk, Cursed Huntsman", "191p", Rarity.MYTHIC, mage.cards.g.GarrukCursedHuntsman.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Garruk, Cursed Huntsman", "191s", Rarity.MYTHIC, mage.cards.g.GarrukCursedHuntsman.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Giant Killer", "14p", Rarity.RARE, mage.cards.g.GiantKiller.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Giant Killer", "14s", Rarity.RARE, mage.cards.g.GiantKiller.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Gilded Goose", "160p", Rarity.RARE, mage.cards.g.GildedGoose.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Gilded Goose", "160s", Rarity.RARE, mage.cards.g.GildedGoose.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Happily Ever After", "16p", Rarity.RARE, mage.cards.h.HappilyEverAfter.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Happily Ever After", "16s", Rarity.RARE, mage.cards.h.HappilyEverAfter.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Harmonious Archon", "17p", Rarity.MYTHIC, mage.cards.h.HarmoniousArchon.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Harmonious Archon", "17s", Rarity.MYTHIC, mage.cards.h.HarmoniousArchon.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Hushbringer", "18p", Rarity.RARE, mage.cards.h.Hushbringer.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Hushbringer", "18s", Rarity.RARE, mage.cards.h.Hushbringer.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Irencrag Feat", "127p", Rarity.RARE, mage.cards.i.IrencragFeat.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Irencrag Feat", "127s", Rarity.RARE, mage.cards.i.IrencragFeat.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Irencrag Pyromancer", "128p", Rarity.RARE, mage.cards.i.IrencragPyromancer.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Irencrag Pyromancer", "128s", Rarity.RARE, mage.cards.i.IrencragPyromancer.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Linden, the Steadfast Queen", "20p", Rarity.RARE, mage.cards.l.LindenTheSteadfastQueen.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Linden, the Steadfast Queen", "20s", Rarity.RARE, mage.cards.l.LindenTheSteadfastQueen.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Lochmere Serpent", "195p", Rarity.RARE, mage.cards.l.LochmereSerpent.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Lochmere Serpent", "195s", Rarity.RARE, mage.cards.l.LochmereSerpent.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Lovestruck Beast", "165p", Rarity.RARE, mage.cards.l.LovestruckBeast.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Lovestruck Beast", "165s", Rarity.RARE, mage.cards.l.LovestruckBeast.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Midnight Clock", "54p", Rarity.RARE, mage.cards.m.MidnightClock.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Midnight Clock", "54s", Rarity.RARE, mage.cards.m.MidnightClock.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mirrormade", "55p", Rarity.RARE, mage.cards.m.Mirrormade.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mirrormade", "55s", Rarity.RARE, mage.cards.m.Mirrormade.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Murderous Rider", "97p", Rarity.RARE, mage.cards.m.MurderousRider.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Murderous Rider", "97s", Rarity.RARE, mage.cards.m.MurderousRider.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Oathsworn Knight", "98p", Rarity.RARE, mage.cards.o.OathswornKnight.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Oathsworn Knight", "98s", Rarity.RARE, mage.cards.o.OathswornKnight.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Oko, Thief of Crowns", "197p", Rarity.MYTHIC, mage.cards.o.OkoThiefOfCrowns.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Oko, Thief of Crowns", "197s", Rarity.MYTHIC, mage.cards.o.OkoThiefOfCrowns.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Once Upon a Time", "169p", Rarity.RARE, mage.cards.o.OnceUponATime.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Once Upon a Time", "169s", Rarity.RARE, mage.cards.o.OnceUponATime.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Opportunistic Dragon", "133p", Rarity.RARE, mage.cards.o.OpportunisticDragon.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Opportunistic Dragon", "133s", Rarity.RARE, mage.cards.o.OpportunisticDragon.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Outlaws' Merriment", "198p", Rarity.MYTHIC, mage.cards.o.OutlawsMerriment.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Outlaws' Merriment", "198s", Rarity.MYTHIC, mage.cards.o.OutlawsMerriment.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Piper of the Swarm", "100p", Rarity.RARE, mage.cards.p.PiperOfTheSwarm.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Piper of the Swarm", "100s", Rarity.RARE, mage.cards.p.PiperOfTheSwarm.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Questing Beast", "171p", Rarity.MYTHIC, mage.cards.q.QuestingBeast.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Questing Beast", "171s", Rarity.MYTHIC, mage.cards.q.QuestingBeast.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Rankle, Master of Pranks", "101p", Rarity.MYTHIC, mage.cards.r.RankleMasterOfPranks.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Rankle, Master of Pranks", "101s", Rarity.MYTHIC, mage.cards.r.RankleMasterOfPranks.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Realm-Cloaked Giant", "26p", Rarity.MYTHIC, mage.cards.r.RealmCloakedGiant.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Realm-Cloaked Giant", "26s", Rarity.MYTHIC, mage.cards.r.RealmCloakedGiant.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Return of the Wildspeaker", "172p", Rarity.RARE, mage.cards.r.ReturnOfTheWildspeaker.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Return of the Wildspeaker", "172s", Rarity.RARE, mage.cards.r.ReturnOfTheWildspeaker.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Robber of the Rich", "138p", Rarity.MYTHIC, mage.cards.r.RobberOfTheRich.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Robber of the Rich", "138s", Rarity.MYTHIC, mage.cards.r.RobberOfTheRich.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Sorcerous Spyglass", "233p", Rarity.RARE, mage.cards.s.SorcerousSpyglass.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Sorcerous Spyglass", "233s", Rarity.RARE, mage.cards.s.SorcerousSpyglass.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Stolen by the Fae", "66p", Rarity.RARE, mage.cards.s.StolenByTheFae.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Stolen by the Fae", "66s", Rarity.RARE, mage.cards.s.StolenByTheFae.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Stonecoil Serpent", "235p", Rarity.RARE, mage.cards.s.StonecoilSerpent.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Stonecoil Serpent", "235s", Rarity.RARE, mage.cards.s.StonecoilSerpent.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Stormfist Crusader", "203p", Rarity.RARE, mage.cards.s.StormfistCrusader.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Stormfist Crusader", "203s", Rarity.RARE, mage.cards.s.StormfistCrusader.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Sundering Stroke", "144p", Rarity.RARE, mage.cards.s.SunderingStroke.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Sundering Stroke", "144s", Rarity.RARE, mage.cards.s.SunderingStroke.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("The Cauldron of Eternity", "82p", Rarity.MYTHIC, mage.cards.t.TheCauldronOfEternity.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("The Cauldron of Eternity", "82s", Rarity.MYTHIC, mage.cards.t.TheCauldronOfEternity.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("The Circle of Loyalty", "9p", Rarity.MYTHIC, mage.cards.t.TheCircleOfLoyalty.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("The Circle of Loyalty", "9s", Rarity.MYTHIC, mage.cards.t.TheCircleOfLoyalty.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("The Great Henge", "161p", Rarity.MYTHIC, mage.cards.t.TheGreatHenge.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("The Great Henge", "161s", Rarity.MYTHIC, mage.cards.t.TheGreatHenge.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("The Magic Mirror", "51p", Rarity.MYTHIC, mage.cards.t.TheMagicMirror.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("The Magic Mirror", "51s", Rarity.MYTHIC, mage.cards.t.TheMagicMirror.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("The Royal Scions", "199p", Rarity.MYTHIC, mage.cards.t.TheRoyalScions.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("The Royal Scions", "199s", Rarity.MYTHIC, mage.cards.t.TheRoyalScions.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Torbran, Thane of Red Fell", "147p", Rarity.RARE, mage.cards.t.TorbranThaneOfRedFell.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Torbran, Thane of Red Fell", "147s", Rarity.RARE, mage.cards.t.TorbranThaneOfRedFell.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Vantress Gargoyle", "71p", Rarity.RARE, mage.cards.v.VantressGargoyle.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Vantress Gargoyle", "71s", Rarity.RARE, mage.cards.v.VantressGargoyle.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Wicked Wolf", "181p", Rarity.RARE, mage.cards.w.WickedWolf.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Wicked Wolf", "181s", Rarity.RARE, mage.cards.w.WickedWolf.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Wildborn Preserver", "182p", Rarity.RARE, mage.cards.w.WildbornPreserver.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Wildborn Preserver", "182s", Rarity.RARE, mage.cards.w.WildbornPreserver.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Wishclaw Talisman", "110p", Rarity.RARE, mage.cards.w.WishclawTalisman.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Wishclaw Talisman", "110s", Rarity.RARE, mage.cards.w.WishclawTalisman.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Witch's Vengeance", "111p", Rarity.RARE, mage.cards.w.WitchsVengeance.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Witch's Vengeance", "111s", Rarity.RARE, mage.cards.w.WitchsVengeance.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Worthy Knight", "36p", Rarity.RARE, mage.cards.w.WorthyKnight.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Worthy Knight", "36s", Rarity.RARE, mage.cards.w.WorthyKnight.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Yorvo, Lord of Garenbrig", "185p", Rarity.RARE, mage.cards.y.YorvoLordOfGarenbrig.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Yorvo, Lord of Garenbrig", "185s", Rarity.RARE, mage.cards.y.YorvoLordOfGarenbrig.class, NON_FULL_USE_VARIOUS)); + } +} diff --git a/Mage.Sets/src/mage/sets/TreasureChest.java b/Mage.Sets/src/mage/sets/TreasureChest.java new file mode 100644 index 00000000000..33dda8a3051 --- /dev/null +++ b/Mage.Sets/src/mage/sets/TreasureChest.java @@ -0,0 +1,307 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://mtg.gamepedia.com/Treasure_Chests + * https://scryfall.com/sets/pz2 + */ +public class TreasureChest extends ExpansionSet { + + private static final TreasureChest instance = new TreasureChest(); + + public static TreasureChest getInstance() { + return instance; + } + + private TreasureChest() { + super("Treasure Chest", "PZ2", ExpansionSet.buildDate(2018, 12, 6), SetType.MAGIC_ONLINE); + this.hasBoosters = false; + this.hasBasicLands = true; + + cards.add(new SetCardInfo("Adriana, Captain of the Guard", 45, Rarity.RARE, mage.cards.a.AdrianaCaptainOfTheGuard.class)); + cards.add(new SetCardInfo("Aggressive Instinct", 70855, Rarity.COMMON, mage.cards.a.AggressiveInstinct.class)); + cards.add(new SetCardInfo("Akiri, Line-Slinger", 48, Rarity.RARE, mage.cards.a.AkiriLineSlinger.class)); + cards.add(new SetCardInfo("Alms Collector", 65677, Rarity.RARE, mage.cards.a.AlmsCollector.class)); + cards.add(new SetCardInfo("Aminatou's Augury", 70745, Rarity.RARE, mage.cards.a.AminatousAugury.class)); + cards.add(new SetCardInfo("Aminatou, the Fateshifter", 70763, Rarity.MYTHIC, mage.cards.a.AminatouTheFateshifter.class)); + cards.add(new SetCardInfo("Ancestor Dragon", 70829, Rarity.RARE, mage.cards.a.AncestorDragon.class)); + cards.add(new SetCardInfo("Ancient Excavation", 38, Rarity.UNCOMMON, mage.cards.a.AncientExcavation.class)); + cards.add(new SetCardInfo("Ancient Stone Idol", 70755, Rarity.RARE, mage.cards.a.AncientStoneIdol.class)); + cards.add(new SetCardInfo("Angelic Guardian", 70767, Rarity.RARE, mage.cards.a.AngelicGuardian.class)); + cards.add(new SetCardInfo("Angler Turtle", 70769, Rarity.RARE, mage.cards.a.AnglerTurtle.class)); + cards.add(new SetCardInfo("Aquitect's Will", 65865, Rarity.COMMON, mage.cards.a.AquitectsWill.class)); + cards.add(new SetCardInfo("Arahbo, Roar of the World", 65735, Rarity.MYTHIC, mage.cards.a.ArahboRoarOfTheWorld.class)); + cards.add(new SetCardInfo("Arixmethes, Slumbering Isle", 70715, Rarity.RARE, mage.cards.a.ArixmethesSlumberingIsle.class)); + cards.add(new SetCardInfo("Armored Whirl Turtle", 70809, Rarity.COMMON, mage.cards.a.ArmoredWhirlTurtle.class)); + cards.add(new SetCardInfo("Armory Automaton", 68, Rarity.RARE, mage.cards.a.ArmoryAutomaton.class)); + cards.add(new SetCardInfo("Ash Barrens", 72, Rarity.COMMON, mage.cards.a.AshBarrens.class)); + cards.add(new SetCardInfo("Aspect of Wolf", 65819, Rarity.RARE, mage.cards.a.AspectOfWolf.class)); + cards.add(new SetCardInfo("Atraxa, Praetors' Voice", 62, Rarity.MYTHIC, mage.cards.a.AtraxaPraetorsVoice.class)); + cards.add(new SetCardInfo("Avatar of Growth", 70785, Rarity.MYTHIC, mage.cards.a.AvatarOfGrowth.class)); + cards.add(new SetCardInfo("Balan, Wandering Knight", 65757, Rarity.RARE, mage.cards.b.BalanWanderingKnight.class)); + cards.add(new SetCardInfo("Benefactor's Draught", 36, Rarity.RARE, mage.cards.b.BenefactorsDraught.class)); + cards.add(new SetCardInfo("Bloodforged Battle-Axe", 65713, Rarity.RARE, mage.cards.b.BloodforgedBattleAxe.class)); + cards.add(new SetCardInfo("Bloodline Necromancer", 65753, Rarity.UNCOMMON, mage.cards.b.BloodlineNecromancer.class)); + cards.add(new SetCardInfo("Bloodsworn Steward", 65699, Rarity.RARE, mage.cards.b.BloodswornSteward.class)); + cards.add(new SetCardInfo("Bloodtracker", 70689, Rarity.RARE, mage.cards.b.Bloodtracker.class)); + cards.add(new SetCardInfo("Boneyard Scourge", 65687, Rarity.RARE, mage.cards.b.BoneyardScourge.class)); + cards.add(new SetCardInfo("Boompile", 70, Rarity.RARE, mage.cards.b.Boompile.class)); + cards.add(new SetCardInfo("Borderland Explorer", 65775, Rarity.COMMON, mage.cards.b.BorderlandExplorer.class)); + cards.add(new SetCardInfo("Boreas Charger", 70717, Rarity.RARE, mage.cards.b.BoreasCharger.class)); + cards.add(new SetCardInfo("Brainwash", 65795, Rarity.COMMON, mage.cards.b.Brainwash.class)); + cards.add(new SetCardInfo("Breath of Fire", 70859, Rarity.COMMON, mage.cards.b.BreathOfFire.class)); + cards.add(new SetCardInfo("Breya, Etherium Shaper", 65, Rarity.MYTHIC, mage.cards.b.BreyaEtheriumShaper.class)); + cards.add(new SetCardInfo("Brilliant Plan", 70833, Rarity.UNCOMMON, mage.cards.b.BrilliantPlan.class)); + cards.add(new SetCardInfo("Brudiclad, Telchor Engineer", 70709, Rarity.MYTHIC, mage.cards.b.BrudicladTelchorEngineer.class)); + cards.add(new SetCardInfo("Bruse Tarl, Boorish Herder", 56, Rarity.MYTHIC, mage.cards.b.BruseTarlBoorishHerder.class)); + cards.add(new SetCardInfo("Burnt Offering", 65833, Rarity.COMMON, mage.cards.b.BurntOffering.class)); + cards.add(new SetCardInfo("Cao Ren, Wei Commander", 65817, Rarity.RARE, mage.cards.c.CaoRenWeiCommander.class)); + cards.add(new SetCardInfo("Cemetery Gate", 65835, Rarity.COMMON, mage.cards.c.CemeteryGate.class)); + cards.add(new SetCardInfo("Charging Cinderhorn", 26, Rarity.RARE, mage.cards.c.ChargingCinderhorn.class)); + cards.add(new SetCardInfo("Cleansing Screech", 70865, Rarity.COMMON, mage.cards.c.CleansingScreech.class)); + cards.add(new SetCardInfo("Cloak of Mists", 70835, Rarity.COMMON, mage.cards.c.CloakOfMists.class)); + cards.add(new SetCardInfo("Colorful Feiyi Sparrow", 70811, Rarity.COMMON, mage.cards.c.ColorfulFeiyiSparrow.class)); + cards.add(new SetCardInfo("Confidence from Strength", 70857, Rarity.COMMON, mage.cards.c.ConfidenceFromStrength.class)); + cards.add(new SetCardInfo("Conqueror's Flail", 65791, Rarity.RARE, mage.cards.c.ConquerorsFlail.class)); + cards.add(new SetCardInfo("Coveted Jewel", 70673, Rarity.RARE, mage.cards.c.CovetedJewel.class)); + cards.add(new SetCardInfo("Crash of Rhino Beetles", 70693, Rarity.RARE, mage.cards.c.CrashOfRhinoBeetles.class)); + cards.add(new SetCardInfo("Crimson Honor Guard", 65697, Rarity.RARE, mage.cards.c.CrimsonHonorGuard.class)); + cards.add(new SetCardInfo("Cruel Tutor", 65797, Rarity.RARE, mage.cards.c.CruelTutor.class)); + cards.add(new SetCardInfo("Crystalline Crawler", 69, Rarity.RARE, mage.cards.c.CrystallineCrawler.class)); + cards.add(new SetCardInfo("Curse of Bounty", 65747, Rarity.UNCOMMON, mage.cards.c.CurseOfBounty.class)); + cards.add(new SetCardInfo("Curse of Disturbance", 65743, Rarity.UNCOMMON, mage.cards.c.CurseOfDisturbance.class)); + cards.add(new SetCardInfo("Curse of Opulence", 65745, Rarity.UNCOMMON, mage.cards.c.CurseOfOpulence.class)); + cards.add(new SetCardInfo("Curse of Vengeance", 23, Rarity.RARE, mage.cards.c.CurseOfVengeance.class)); + cards.add(new SetCardInfo("Curse of Verbosity", 65767, Rarity.UNCOMMON, mage.cards.c.CurseOfVerbosity.class)); + cards.add(new SetCardInfo("Curse of Vitality", 65765, Rarity.UNCOMMON, mage.cards.c.CurseOfVitality.class)); + cards.add(new SetCardInfo("Custodi Lich", 22, Rarity.RARE, mage.cards.c.CustodiLich.class)); + cards.add(new SetCardInfo("Custodi Soulbinders", 6, Rarity.RARE, mage.cards.c.CustodiSoulbinders.class)); + cards.add(new SetCardInfo("Custodi Squire", 65781, Rarity.COMMON, mage.cards.c.CustodiSquire.class)); + cards.add(new SetCardInfo("Daretti, Ingenious Iconoclast", 66, Rarity.MYTHIC, mage.cards.d.DarettiIngeniousIconoclast.class)); + cards.add(new SetCardInfo("Deepglow Skate", 16, Rarity.RARE, mage.cards.d.DeepglowSkate.class)); + cards.add(new SetCardInfo("Desperate Ritual", 65851, Rarity.UNCOMMON, mage.cards.d.DesperateRitual.class)); + cards.add(new SetCardInfo("Disrupt Decorum", 65695, Rarity.RARE, mage.cards.d.DisruptDecorum.class)); + cards.add(new SetCardInfo("Domesticated Hydra", 31, Rarity.UNCOMMON, mage.cards.d.DomesticatedHydra.class)); + cards.add(new SetCardInfo("Drafna's Restoration", 65827, Rarity.COMMON, mage.cards.d.DrafnasRestoration.class)); + cards.add(new SetCardInfo("Dragon's Presence", 70831, Rarity.COMMON, mage.cards.d.DragonsPresence.class)); + cards.add(new SetCardInfo("Drown in Shapelessness", 70837, Rarity.COMMON, mage.cards.d.DrownInShapelessness.class)); + cards.add(new SetCardInfo("Duelist's Heritage", 9, Rarity.RARE, mage.cards.d.DuelistsHeritage.class)); + cards.add(new SetCardInfo("Earth-Origin Yak", 70821, Rarity.COMMON, mage.cards.e.EarthOriginYak.class)); + cards.add(new SetCardInfo("Earthshaking Si", 70853, Rarity.COMMON, mage.cards.e.EarthshakingSi.class)); + cards.add(new SetCardInfo("Echo Storm", 70695, Rarity.RARE, mage.cards.e.EchoStorm.class)); + cards.add(new SetCardInfo("Edgar Markov", 65693, Rarity.MYTHIC, mage.cards.e.EdgarMarkov.class)); + cards.add(new SetCardInfo("Emissary of Grudges", 70761, Rarity.RARE, mage.cards.e.EmissaryOfGrudges.class)); + cards.add(new SetCardInfo("Empyrial Storm", 70701, Rarity.RARE, mage.cards.e.EmpyrialStorm.class)); + cards.add(new SetCardInfo("Enchanter's Bane", 70703, Rarity.RARE, mage.cards.e.EnchantersBane.class)); + cards.add(new SetCardInfo("Endless Atlas", 70683, Rarity.RARE, mage.cards.e.EndlessAtlas.class)); + cards.add(new SetCardInfo("Energy Tap", 65837, Rarity.COMMON, mage.cards.e.EnergyTap.class)); + cards.add(new SetCardInfo("Entourage of Trest", 65783, Rarity.COMMON, mage.cards.e.EntourageOfTrest.class)); + cards.add(new SetCardInfo("Entrapment Maneuver", 10, Rarity.RARE, mage.cards.e.EntrapmentManeuver.class)); + cards.add(new SetCardInfo("Entreat the Dead", 70743, Rarity.RARE, mage.cards.e.EntreatTheDead.class)); + cards.add(new SetCardInfo("Estrid's Invocation", 70765, Rarity.RARE, mage.cards.e.EstridsInvocation.class)); + cards.add(new SetCardInfo("Estrid, the Masked", 70739, Rarity.MYTHIC, mage.cards.e.EstridTheMasked.class)); + cards.add(new SetCardInfo("Ever-Watching Threshold", 70665, Rarity.RARE, mage.cards.e.EverWatchingThreshold.class)); + cards.add(new SetCardInfo("Evolutionary Escalation", 32, Rarity.UNCOMMON, mage.cards.e.EvolutionaryEscalation.class)); + cards.add(new SetCardInfo("Expropriate", 65785, Rarity.MYTHIC, mage.cards.e.Expropriate.class)); + cards.add(new SetCardInfo("Faerie Artisans", 14, Rarity.RARE, mage.cards.f.FaerieArtisans.class)); + cards.add(new SetCardInfo("Feiyi Snake", 70791, Rarity.COMMON, mage.cards.f.FeiyiSnake.class)); + cards.add(new SetCardInfo("Ferocious Zheng", 70847, Rarity.COMMON, mage.cards.f.FerociousZheng.class)); + cards.add(new SetCardInfo("Field of Dreams", 65831, Rarity.RARE, mage.cards.f.FieldOfDreams.class)); + cards.add(new SetCardInfo("Fire-Omen Crane", 70851, Rarity.UNCOMMON, mage.cards.f.FireOmenCrane.class)); + cards.add(new SetCardInfo("Firesong and Sunspeaker", 68076, Rarity.RARE, mage.cards.f.FiresongAndSunspeaker.class)); + cards.add(new SetCardInfo("Flood", 65829, Rarity.COMMON, mage.cards.f.Flood.class)); + cards.add(new SetCardInfo("Forest", 70807, Rarity.LAND, mage.cards.basiclands.Forest.class)); + cards.add(new SetCardInfo("Forge of Heroes", 70679, Rarity.COMMON, mage.cards.f.ForgeOfHeroes.class)); + cards.add(new SetCardInfo("Fortunate Few", 65673, Rarity.RARE, mage.cards.f.FortunateFew.class)); + cards.add(new SetCardInfo("Fractured Identity", 65681, Rarity.RARE, mage.cards.f.FracturedIdentity.class)); + cards.add(new SetCardInfo("Frenzied Fugue", 24, Rarity.UNCOMMON, mage.cards.f.FrenziedFugue.class)); + cards.add(new SetCardInfo("Fury Storm", 70751, Rarity.RARE, mage.cards.f.FuryStorm.class)); + cards.add(new SetCardInfo("Galecaster Colossus", 65755, Rarity.RARE, mage.cards.g.GalecasterColossus.class)); + cards.add(new SetCardInfo("Game of Chaos", 65821, Rarity.RARE, mage.cards.g.GameOfChaos.class)); + cards.add(new SetCardInfo("Garrulous Sycophant", 17, Rarity.COMMON, mage.cards.g.GarrulousSycophant.class)); + cards.add(new SetCardInfo("Gempalm Incinerator", 65855, Rarity.UNCOMMON, mage.cards.g.GempalmIncinerator.class)); + cards.add(new SetCardInfo("Genesis Storm", 70681, Rarity.RARE, mage.cards.g.GenesisStorm.class)); + cards.add(new SetCardInfo("Geode Golem", 70727, Rarity.UNCOMMON, mage.cards.g.GeodeGolem.class)); + cards.add(new SetCardInfo("Giant Spider", 70849, Rarity.COMMON, mage.cards.g.GiantSpider.class)); + cards.add(new SetCardInfo("Goblin Goliath", 70783, Rarity.MYTHIC, mage.cards.g.GoblinGoliath.class)); + cards.add(new SetCardInfo("Goblin Goon", 65857, Rarity.RARE, mage.cards.g.GoblinGoon.class)); + cards.add(new SetCardInfo("Goblin Spymaster", 25, Rarity.RARE, mage.cards.g.GoblinSpymaster.class)); + cards.add(new SetCardInfo("Grave Upheaval", 41, Rarity.UNCOMMON, mage.cards.g.GraveUpheaval.class)); + cards.add(new SetCardInfo("Grenzo, Havoc Raiser", 29, Rarity.RARE, mage.cards.g.GrenzoHavocRaiser.class)); + cards.add(new SetCardInfo("Grip of Phyresis", 12, Rarity.UNCOMMON, mage.cards.g.GripOfPhyresis.class)); + cards.add(new SetCardInfo("Guttural Response", 65845, Rarity.UNCOMMON, mage.cards.g.GutturalResponse.class)); + cards.add(new SetCardInfo("Gyrus, Waker of Corpses", 70661, Rarity.MYTHIC, mage.cards.g.GyrusWakerOfCorpses.class)); + cards.add(new SetCardInfo("Hammer of Nazahn", 65669, Rarity.RARE, mage.cards.h.HammerOfNazahn.class)); + cards.add(new SetCardInfo("Hardened-Scale Armor", 70787, Rarity.COMMON, mage.cards.h.HardenedScaleArmor.class)); + cards.add(new SetCardInfo("Heavenly Blademaster", 70705, Rarity.RARE, mage.cards.h.HeavenlyBlademaster.class)); + cards.add(new SetCardInfo("Heavenly Qilin", 70827, Rarity.COMMON, mage.cards.h.HeavenlyQilin.class)); + cards.add(new SetCardInfo("Heirloom Blade", 65683, Rarity.UNCOMMON, mage.cards.h.HeirloomBlade.class)); + cards.add(new SetCardInfo("Herald's Horn", 65731, Rarity.UNCOMMON, mage.cards.h.HeraldsHorn.class)); + cards.add(new SetCardInfo("Huang Zhong, Shu General", 65801, Rarity.RARE, mage.cards.h.HuangZhongShuGeneral.class)); + cards.add(new SetCardInfo("Hungry Lynx", 65711, Rarity.RARE, mage.cards.h.HungryLynx.class)); + cards.add(new SetCardInfo("Ikra Shidiqi, the Usurper", 58, Rarity.MYTHIC, mage.cards.i.IkraShidiqiTheUsurper.class)); + cards.add(new SetCardInfo("Immortal Phoenix", 70773, Rarity.RARE, mage.cards.i.ImmortalPhoenix.class)); + cards.add(new SetCardInfo("Inalla, Archmage Ritualist", 65737, Rarity.MYTHIC, mage.cards.i.InallaArchmageRitualist.class)); + cards.add(new SetCardInfo("Inspired Sphinx", 70779, Rarity.MYTHIC, mage.cards.i.InspiredSphinx.class)); + cards.add(new SetCardInfo("Ishai, Ojutai Dragonspeaker", 57, Rarity.MYTHIC, mage.cards.i.IshaiOjutaiDragonspeaker.class)); + cards.add(new SetCardInfo("Island", 70803, Rarity.LAND, mage.cards.basiclands.Island.class)); + cards.add(new SetCardInfo("Isolated Watchtower", 70707, Rarity.RARE, mage.cards.i.IsolatedWatchtower.class)); + cards.add(new SetCardInfo("Izzet Chemister", 65741, Rarity.RARE, mage.cards.i.IzzetChemister.class)); + cards.add(new SetCardInfo("Jhoira of the Ghitu", 65847, Rarity.MYTHIC, mage.cards.j.JhoiraOfTheGhitu.class)); + cards.add(new SetCardInfo("Jiang Yanggu", 70793, Rarity.MYTHIC, mage.cards.j.JiangYanggu.class)); + cards.add(new SetCardInfo("Journey for the Elixir", 70861, Rarity.RARE, mage.cards.j.JourneyForTheElixir.class)); + cards.add(new SetCardInfo("Kaya, Ghost Assassin", 67, Rarity.MYTHIC, mage.cards.k.KayaGhostAssassin.class)); + cards.add(new SetCardInfo("Keeper of Keys", 15, Rarity.RARE, mage.cards.k.KeeperOfKeys.class)); + cards.add(new SetCardInfo("Kess, Dissident Mage", 65763, Rarity.MYTHIC, mage.cards.k.KessDissidentMage.class)); + cards.add(new SetCardInfo("Kestia, the Cultivator", 70699, Rarity.MYTHIC, mage.cards.k.KestiaTheCultivator.class)); + cards.add(new SetCardInfo("Kheru Mind-Eater", 65761, Rarity.RARE, mage.cards.k.KheruMindEater.class)); + cards.add(new SetCardInfo("Kindred Boon", 65717, Rarity.RARE, mage.cards.k.KindredBoon.class)); + cards.add(new SetCardInfo("Kindred Charge", 65721, Rarity.RARE, mage.cards.k.KindredCharge.class)); + cards.add(new SetCardInfo("Kindred Discovery", 65725, Rarity.RARE, mage.cards.k.KindredDiscovery.class)); + cards.add(new SetCardInfo("Kindred Dominance", 65723, Rarity.RARE, mage.cards.k.KindredDominance.class)); + cards.add(new SetCardInfo("Kindred Summons", 65719, Rarity.RARE, mage.cards.k.KindredSummons.class)); + cards.add(new SetCardInfo("Kraum, Ludevic's Opus", 46, Rarity.RARE, mage.cards.k.KraumLudevicsOpus.class)); + cards.add(new SetCardInfo("Kydele, Chosen of Kruphix", 53, Rarity.MYTHIC, mage.cards.k.KydeleChosenOfKruphix.class)); + cards.add(new SetCardInfo("Kynaios and Tiro of Meletis", 63, Rarity.MYTHIC, mage.cards.k.KynaiosAndTiroOfMeletis.class)); + cards.add(new SetCardInfo("Lady Sun", 65803, Rarity.RARE, mage.cards.l.LadySun.class)); + cards.add(new SetCardInfo("Lady Zhurong, Warrior Queen", 65811, Rarity.RARE, mage.cards.l.LadyZhurongWarriorQueen.class)); + cards.add(new SetCardInfo("Leopard-Spotted Jiao", 70789, Rarity.COMMON, mage.cards.l.LeopardSpottedJiao.class)); + cards.add(new SetCardInfo("Leovold, Emissary of Trest", 60, Rarity.MYTHIC, mage.cards.l.LeovoldEmissaryOfTrest.class)); + cards.add(new SetCardInfo("Licia, Sanguine Tribune", 65729, Rarity.MYTHIC, mage.cards.l.LiciaSanguineTribune.class)); + cards.add(new SetCardInfo("Lonely Sandbar", 65863, Rarity.COMMON, mage.cards.l.LonelySandbar.class)); + cards.add(new SetCardInfo("Lord Windgrace", 70667, Rarity.MYTHIC, mage.cards.l.LordWindgrace.class)); + cards.add(new SetCardInfo("Lovisa Coldeyes", 65849, Rarity.MYTHIC, mage.cards.l.LovisaColdeyes.class)); + cards.add(new SetCardInfo("Loyal Apprentice", 70753, Rarity.UNCOMMON, mage.cards.l.LoyalApprentice.class)); + cards.add(new SetCardInfo("Loyal Drake", 70757, Rarity.UNCOMMON, mage.cards.l.LoyalDrake.class)); + cards.add(new SetCardInfo("Loyal Guardian", 70721, Rarity.UNCOMMON, mage.cards.l.LoyalGuardian.class)); + cards.add(new SetCardInfo("Loyal Subordinate", 70735, Rarity.UNCOMMON, mage.cards.l.LoyalSubordinate.class)); + cards.add(new SetCardInfo("Loyal Unicorn", 70729, Rarity.UNCOMMON, mage.cards.l.LoyalUnicorn.class)); + cards.add(new SetCardInfo("Lu Su, Wu Advisor", 65809, Rarity.RARE, mage.cards.l.LuSuWuAdvisor.class)); + cards.add(new SetCardInfo("Ludevic, Necro-Alchemist", 52, Rarity.MYTHIC, mage.cards.l.LudevicNecroAlchemist.class)); + cards.add(new SetCardInfo("Ma Chao, Western Warrior", 65807, Rarity.RARE, mage.cards.m.MaChaoWesternWarrior.class)); + cards.add(new SetCardInfo("Magus of the Balance", 70677, Rarity.RARE, mage.cards.m.MagusOfTheBalance.class)); + cards.add(new SetCardInfo("Magus of the Mind", 65685, Rarity.RARE, mage.cards.m.MagusOfTheMind.class)); + cards.add(new SetCardInfo("Magus of the Will", 21, Rarity.RARE, mage.cards.m.MagusOfTheWill.class)); + cards.add(new SetCardInfo("Marchesa's Decree", 20, Rarity.UNCOMMON, mage.cards.m.MarchesasDecree.class)); + cards.add(new SetCardInfo("Master of Waves", 65859, Rarity.MYTHIC, mage.cards.m.MasterOfWaves.class)); + cards.add(new SetCardInfo("Mathas, Fiend Seeker", 65759, Rarity.MYTHIC, mage.cards.m.MathasFiendSeeker.class)); + cards.add(new SetCardInfo("Meandering River", 70799, Rarity.COMMON, mage.cards.m.MeanderingRiver.class)); + cards.add(new SetCardInfo("Metamorphosis", 65839, Rarity.COMMON, mage.cards.m.Metamorphosis.class)); + cards.add(new SetCardInfo("Migratory Route", 40, Rarity.UNCOMMON, mage.cards.m.MigratoryRoute.class)); + cards.add(new SetCardInfo("Militant Angel", 70777, Rarity.MYTHIC, mage.cards.m.MilitantAngel.class)); + cards.add(new SetCardInfo("Mirri, Weatherlight Duelist", 65707, Rarity.MYTHIC, mage.cards.m.MirriWeatherlightDuelist.class)); + cards.add(new SetCardInfo("Mirror of the Forebears", 65751, Rarity.UNCOMMON, mage.cards.m.MirrorOfTheForebears.class)); + cards.add(new SetCardInfo("Moon-Eating Dog", 70823, Rarity.UNCOMMON, mage.cards.m.MoonEatingDog.class)); + cards.add(new SetCardInfo("Mountain", 70805, Rarity.LAND, mage.cards.basiclands.Mountain.class)); + cards.add(new SetCardInfo("Mu Yanling", 70795, Rarity.MYTHIC, mage.cards.m.MuYanling.class)); + cards.add(new SetCardInfo("Myth Unbound", 70663, Rarity.RARE, mage.cards.m.MythUnbound.class)); + cards.add(new SetCardInfo("Nazahn, Revered Bladesmith", 65771, Rarity.MYTHIC, mage.cards.n.NazahnReveredBladesmith.class)); + cards.add(new SetCardInfo("Nesting Dragon", 70649, Rarity.RARE, mage.cards.n.NestingDragon.class)); + cards.add(new SetCardInfo("Night Incarnate", 70749, Rarity.RARE, mage.cards.n.NightIncarnate.class)); + cards.add(new SetCardInfo("Nine-Tail White Fox", 70819, Rarity.COMMON, mage.cards.n.NineTailWhiteFox.class)); + cards.add(new SetCardInfo("Nylea's Colossus", 70655, Rarity.RARE, mage.cards.n.NyleasColossus.class)); + cards.add(new SetCardInfo("O-Kagachi, Vengeful Kami", 65733, Rarity.MYTHIC, mage.cards.o.OKagachiVengefulKami.class)); + cards.add(new SetCardInfo("Octopus Umbra", 70725, Rarity.RARE, mage.cards.o.OctopusUmbra.class)); + cards.add(new SetCardInfo("Orzhov Advokist", 3, Rarity.UNCOMMON, mage.cards.o.OrzhovAdvokist.class)); + cards.add(new SetCardInfo("Palace Jailer", 4, Rarity.UNCOMMON, mage.cards.p.PalaceJailer.class)); + cards.add(new SetCardInfo("Palace Sentinels", 2, Rarity.COMMON, mage.cards.p.PalaceSentinels.class)); + cards.add(new SetCardInfo("Pang Tong, \"Young Phoenix\"", 65813, Rarity.RARE, mage.cards.p.PangTongYoungPhoenix.class)); + cards.add(new SetCardInfo("Parting Thoughts", 19, Rarity.UNCOMMON, mage.cards.p.PartingThoughts.class)); + cards.add(new SetCardInfo("Path of Ancestry", 65679, Rarity.COMMON, mage.cards.p.PathOfAncestry.class)); + cards.add(new SetCardInfo("Patron of the Vein", 65727, Rarity.RARE, mage.cards.p.PatronOfTheVein.class)); + cards.add(new SetCardInfo("Pit Scorpion", 65823, Rarity.COMMON, mage.cards.p.PitScorpion.class)); + cards.add(new SetCardInfo("Plains", 70801, Rarity.LAND, mage.cards.basiclands.Plains.class)); + cards.add(new SetCardInfo("Plant Elemental", 65825, Rarity.UNCOMMON, mage.cards.p.PlantElemental.class)); + cards.add(new SetCardInfo("Primeval Protector", 33, Rarity.RARE, mage.cards.p.PrimevalProtector.class)); + cards.add(new SetCardInfo("Primordial Mist", 70733, Rarity.RARE, mage.cards.p.PrimordialMist.class)); + cards.add(new SetCardInfo("Prismatic Geoscope", 71, Rarity.RARE, mage.cards.p.PrismaticGeoscope.class)); + cards.add(new SetCardInfo("Protector of the Crown", 8, Rarity.RARE, mage.cards.p.ProtectorOfTheCrown.class)); + cards.add(new SetCardInfo("Purple-Crystal Crab", 70813, Rarity.COMMON, mage.cards.p.PurpleCrystalCrab.class)); + cards.add(new SetCardInfo("Qasali Slingers", 65709, Rarity.RARE, mage.cards.q.QasaliSlingers.class)); + cards.add(new SetCardInfo("Qilin's Blessing", 70841, Rarity.COMMON, mage.cards.q.QilinsBlessing.class)); + cards.add(new SetCardInfo("Queen Marchesa", 50, Rarity.MYTHIC, mage.cards.q.QueenMarchesa.class)); + cards.add(new SetCardInfo("Ramos, Dragon Engine", 65749, Rarity.MYTHIC, mage.cards.r.RamosDragonEngine.class)); + cards.add(new SetCardInfo("Rampaging Brontodon", 70775, Rarity.RARE, mage.cards.r.RampagingBrontodon.class)); + cards.add(new SetCardInfo("Ravenous Slime", 70737, Rarity.RARE, mage.cards.r.RavenousSlime.class)); + cards.add(new SetCardInfo("Ravos, Soultender", 59, Rarity.MYTHIC, mage.cards.r.RavosSoultender.class)); + cards.add(new SetCardInfo("Reality Scramble", 70723, Rarity.RARE, mage.cards.r.RealityScramble.class)); + cards.add(new SetCardInfo("Reckless Pangolin", 70845, Rarity.COMMON, mage.cards.r.RecklessPangolin.class)); + cards.add(new SetCardInfo("Recruiter of the Guard", 5, Rarity.RARE, mage.cards.r.RecruiterOfTheGuard.class)); + cards.add(new SetCardInfo("Retrofitter Foundry", 70697, Rarity.RARE, mage.cards.r.RetrofitterFoundry.class)); + cards.add(new SetCardInfo("Reyhan, Last of the Abzan", 43, Rarity.RARE, mage.cards.r.ReyhanLastOfTheAbzan.class)); + cards.add(new SetCardInfo("Rhythmic Water Vortex", 70839, Rarity.RARE, mage.cards.r.RhythmicWaterVortex.class)); + cards.add(new SetCardInfo("Rot Hulk", 70781, Rarity.MYTHIC, mage.cards.r.RotHulk.class)); + cards.add(new SetCardInfo("Runehorn Hellkite", 27, Rarity.RARE, mage.cards.r.RunehornHellkite.class)); + cards.add(new SetCardInfo("Sacred White Deer", 70843, Rarity.UNCOMMON, mage.cards.s.SacredWhiteDeer.class)); + cards.add(new SetCardInfo("Saheeli's Directive", 70675, Rarity.RARE, mage.cards.s.SaheelisDirective.class)); + cards.add(new SetCardInfo("Saheeli, the Gifted", 70685, Rarity.MYTHIC, mage.cards.s.SaheeliTheGifted.class)); + cards.add(new SetCardInfo("Salvage", 65789, Rarity.COMMON, mage.cards.s.Salvage.class)); + cards.add(new SetCardInfo("Sanctum Prelate", 11, Rarity.MYTHIC, mage.cards.s.SanctumPrelate.class)); + cards.add(new SetCardInfo("Saskia the Unyielding", 61, Rarity.MYTHIC, mage.cards.s.SaskiaTheUnyielding.class)); + cards.add(new SetCardInfo("Scalelord Reckoner", 65689, Rarity.RARE, mage.cards.s.ScalelordReckoner.class)); + cards.add(new SetCardInfo("Screeching Phoenix", 70863, Rarity.RARE, mage.cards.s.ScreechingPhoenix.class)); + cards.add(new SetCardInfo("Selfless Squire", 7, Rarity.RARE, mage.cards.s.SelflessSquire.class)); + cards.add(new SetCardInfo("Selvala's Stampede", 65787, Rarity.RARE, mage.cards.s.SelvalasStampede.class)); + cards.add(new SetCardInfo("Selvala, Heart of the Wilds", 37, Rarity.MYTHIC, mage.cards.s.SelvalaHeartOfTheWilds.class)); + cards.add(new SetCardInfo("Shifting Shadow", 65703, Rarity.RARE, mage.cards.s.ShiftingShadow.class)); + cards.add(new SetCardInfo("Sidar Kondo of Jamuraa", 54, Rarity.MYTHIC, mage.cards.s.SidarKondoOfJamuraa.class)); + cards.add(new SetCardInfo("Silas Renn, Seeker Adept", 51, Rarity.MYTHIC, mage.cards.s.SilasRennSeekerAdept.class)); + cards.add(new SetCardInfo("Sima Yi, Wei Field Marshal", 65815, Rarity.RARE, mage.cards.s.SimaYiWeiFieldMarshal.class)); + cards.add(new SetCardInfo("Sinuous Vermin", 65773, Rarity.COMMON, mage.cards.s.SinuousVermin.class)); + cards.add(new SetCardInfo("Skittering Crustacean", 65777, Rarity.COMMON, mage.cards.s.SkitteringCrustacean.class)); + cards.add(new SetCardInfo("Skull Storm", 70713, Rarity.RARE, mage.cards.s.SkullStorm.class)); + cards.add(new SetCardInfo("Skyline Despot", 28, Rarity.RARE, mage.cards.s.SkylineDespot.class)); + cards.add(new SetCardInfo("Sower of Discord", 70659, Rarity.RARE, mage.cards.s.SowerOfDiscord.class)); + cards.add(new SetCardInfo("Splitting Slime", 34, Rarity.RARE, mage.cards.s.SplittingSlime.class)); + cards.add(new SetCardInfo("Stalking Leonin", 65769, Rarity.RARE, mage.cards.s.StalkingLeonin.class)); + cards.add(new SetCardInfo("Stonehoof Chieftain", 35, Rarity.RARE, mage.cards.s.StonehoofChieftain.class)); + cards.add(new SetCardInfo("Stormcloud Spirit", 70825, Rarity.UNCOMMON, mage.cards.s.StormcloudSpirit.class)); + cards.add(new SetCardInfo("Stream of Acid", 65793, Rarity.UNCOMMON, mage.cards.s.StreamOfAcid.class)); + cards.add(new SetCardInfo("Stunt Double", 13, Rarity.RARE, mage.cards.s.StuntDouble.class)); + cards.add(new SetCardInfo("Subterranean Tremors", 30, Rarity.MYTHIC, mage.cards.s.SubterraneanTremors.class)); + cards.add(new SetCardInfo("Sylvan Reclamation", 39, Rarity.UNCOMMON, mage.cards.s.SylvanReclamation.class)); + cards.add(new SetCardInfo("Taigam, Ojutai Master", 65739, Rarity.RARE, mage.cards.t.TaigamOjutaiMaster.class)); + cards.add(new SetCardInfo("Taigam, Sidisi's Hand", 65715, Rarity.RARE, mage.cards.t.TaigamSidisisHand.class)); + cards.add(new SetCardInfo("Tana, the Bloodsower", 55, Rarity.MYTHIC, mage.cards.t.TanaTheBloodsower.class)); + cards.add(new SetCardInfo("Tawnos, Urza's Apprentice", 70687, Rarity.MYTHIC, mage.cards.t.TawnosUrzasApprentice.class)); + cards.add(new SetCardInfo("Teferi's Protection", 65701, Rarity.RARE, mage.cards.t.TeferisProtection.class)); + cards.add(new SetCardInfo("Territorial Hellkite", 65691, Rarity.RARE, mage.cards.t.TerritorialHellkite.class)); + cards.add(new SetCardInfo("Thantis, the Warweaver", 70671, Rarity.MYTHIC, mage.cards.t.ThantisTheWarweaver.class)); + cards.add(new SetCardInfo("The Unspeakable", 65841, Rarity.RARE, mage.cards.t.TheUnspeakable.class)); + cards.add(new SetCardInfo("The Ur-Dragon", 65675, Rarity.MYTHIC, mage.cards.t.TheUrDragon.class)); + cards.add(new SetCardInfo("Thorn of the Black Rose", 18, Rarity.COMMON, mage.cards.t.ThornOfTheBlackRose.class)); + cards.add(new SetCardInfo("Thrasios, Triton Hero", 47, Rarity.RARE, mage.cards.t.ThrasiosTritonHero.class)); + cards.add(new SetCardInfo("Throne Warden", 1, Rarity.COMMON, mage.cards.t.ThroneWarden.class)); + cards.add(new SetCardInfo("Throne of the High City", 73, Rarity.RARE, mage.cards.t.ThroneOfTheHighCity.class)); + cards.add(new SetCardInfo("Tidal Courier", 65861, Rarity.UNCOMMON, mage.cards.t.TidalCourier.class)); + cards.add(new SetCardInfo("Timber Gorge", 70797, Rarity.COMMON, mage.cards.t.TimberGorge.class)); + cards.add(new SetCardInfo("Traverse the Outlands", 65671, Rarity.RARE, mage.cards.t.TraverseTheOutlands.class)); + cards.add(new SetCardInfo("Treacherous Terrain", 42, Rarity.UNCOMMON, mage.cards.t.TreacherousTerrain.class)); + cards.add(new SetCardInfo("Treasonous Ogre", 65779, Rarity.UNCOMMON, mage.cards.t.TreasonousOgre.class)); + cards.add(new SetCardInfo("Treasure Nabber", 70653, Rarity.RARE, mage.cards.t.TreasureNabber.class)); + cards.add(new SetCardInfo("Turntimber Sower", 70711, Rarity.RARE, mage.cards.t.TurntimberSower.class)); + cards.add(new SetCardInfo("Tuvasa the Sunlit", 70691, Rarity.MYTHIC, mage.cards.t.TuvasaTheSunlit.class)); + cards.add(new SetCardInfo("Tymna the Weaver", 44, Rarity.RARE, mage.cards.t.TymnaTheWeaver.class)); + cards.add(new SetCardInfo("Varchild, Betrayer of Kjeldor", 70759, Rarity.RARE, mage.cards.v.VarchildBetrayerOfKjeldor.class)); + cards.add(new SetCardInfo("Varina, Lich Queen", 70741, Rarity.MYTHIC, mage.cards.v.VarinaLichQueen.class)); + cards.add(new SetCardInfo("Vedalken Humiliator", 70731, Rarity.RARE, mage.cards.v.VedalkenHumiliator.class)); + cards.add(new SetCardInfo("Vengeant Vampire", 70771, Rarity.RARE, mage.cards.v.VengeantVampire.class)); + cards.add(new SetCardInfo("Vial Smasher the Fierce", 49, Rarity.MYTHIC, mage.cards.v.VialSmasherTheFierce.class)); + cards.add(new SetCardInfo("Vivid Flying Fish", 70817, Rarity.COMMON, mage.cards.v.VividFlyingFish.class)); + cards.add(new SetCardInfo("Warren Instigator", 65853, Rarity.MYTHIC, mage.cards.w.WarrenInstigator.class)); + cards.add(new SetCardInfo("Wasitora, Nekoru Queen", 65705, Rarity.RARE, mage.cards.w.WasitoraNekoruQueen.class)); + cards.add(new SetCardInfo("Welkin Tern", 70815, Rarity.COMMON, mage.cards.w.WelkinTern.class)); + cards.add(new SetCardInfo("Whiptongue Hydra", 70657, Rarity.RARE, mage.cards.w.WhiptongueHydra.class)); + cards.add(new SetCardInfo("Windgrace's Judgment", 70669, Rarity.RARE, mage.cards.w.WindgracesJudgment.class)); + cards.add(new SetCardInfo("Xantcha, Sleeper Agent", 70719, Rarity.RARE, mage.cards.x.XantchaSleeperAgent.class)); + cards.add(new SetCardInfo("Xun Yu, Wei Advisor", 65799, Rarity.RARE, mage.cards.x.XunYuWeiAdvisor.class)); + cards.add(new SetCardInfo("Yennett, Cryptic Sovereign", 70747, Rarity.MYTHIC, mage.cards.y.YennettCrypticSovereign.class)); + cards.add(new SetCardInfo("Yidris, Maelstrom Wielder", 64, Rarity.MYTHIC, mage.cards.y.YidrisMaelstromWielder.class)); + cards.add(new SetCardInfo("Yuriko, the Tiger's Shadow", 70651, Rarity.RARE, mage.cards.y.YurikoTheTigersShadow.class)); + cards.add(new SetCardInfo("Zo-Zu the Punisher", 65843, Rarity.RARE, mage.cards.z.ZoZuThePunisher.class)); + cards.add(new SetCardInfo("Zuo Ci, the Mocking Sage", 65805, Rarity.RARE, mage.cards.z.ZuoCiTheMockingSage.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/TwoHeadedGiantTournament.java b/Mage.Sets/src/mage/sets/TwoHeadedGiantTournament.java new file mode 100644 index 00000000000..4a37f2bda0d --- /dev/null +++ b/Mage.Sets/src/mage/sets/TwoHeadedGiantTournament.java @@ -0,0 +1,25 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/p2hg + */ +public class TwoHeadedGiantTournament extends ExpansionSet { + + private static final TwoHeadedGiantTournament instance = new TwoHeadedGiantTournament(); + + public static TwoHeadedGiantTournament getInstance() { + return instance; + } + + private TwoHeadedGiantTournament() { + super("Two-Headed Giant Tournament", "P2HG", ExpansionSet.buildDate(2005, 12, 9), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Underworld Dreams", 1, Rarity.RARE, mage.cards.u.UnderworldDreams.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/URLConventionPromos.java b/Mage.Sets/src/mage/sets/URLConventionPromos.java new file mode 100644 index 00000000000..8f10cb5898c --- /dev/null +++ b/Mage.Sets/src/mage/sets/URLConventionPromos.java @@ -0,0 +1,35 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/purl + */ +public class URLConventionPromos extends ExpansionSet { + + private static final URLConventionPromos instance = new URLConventionPromos(); + + public static URLConventionPromos getInstance() { + return instance; + } + + private URLConventionPromos() { + super("URL/Convention Promos", "PURL", ExpansionSet.buildDate(2015, 1, 23), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Aeronaut Tinkerer", 8, Rarity.COMMON, mage.cards.a.AeronautTinkerer.class)); + cards.add(new SetCardInfo("Bloodthrone Vampire", 3, Rarity.RARE, mage.cards.b.BloodthroneVampire.class)); + cards.add(new SetCardInfo("Chandra's Fury", 5, Rarity.RARE, mage.cards.c.ChandrasFury.class)); + cards.add(new SetCardInfo("Kor Skyfisher", 2, Rarity.RARE, mage.cards.k.KorSkyfisher.class)); + cards.add(new SetCardInfo("Merfolk Mesmerist", 4, Rarity.RARE, mage.cards.m.MerfolkMesmerist.class)); + // Italian-only printing + //cards.add(new SetCardInfo("Relentless Rats", 9, Rarity.RARE, mage.cards.r.RelentlessRats.class)); + // Japanese-only printing + //cards.add(new SetCardInfo("Shepherd of the Lost", "34*", Rarity.UNCOMMON, mage.cards.s.ShepherdOfTheLost.class)); + cards.add(new SetCardInfo("Stealer of Secrets", 7, Rarity.RARE, mage.cards.s.StealerOfSecrets.class)); + cards.add(new SetCardInfo("Steward of Valeron", 1, Rarity.RARE, mage.cards.s.StewardOfValeron.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/Unsanctioned.java b/Mage.Sets/src/mage/sets/Unsanctioned.java new file mode 100644 index 00000000000..7f725f4ffa9 --- /dev/null +++ b/Mage.Sets/src/mage/sets/Unsanctioned.java @@ -0,0 +1,120 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/und + */ +public class Unsanctioned extends ExpansionSet { + + private static final Unsanctioned instance = new Unsanctioned(); + + public static Unsanctioned getInstance() { + return instance; + } + + private Unsanctioned() { + super("Unsanctioned", "UND", ExpansionSet.buildDate(2020, 2, 29), SetType.JOKESET); + this.hasBoosters = false; + this.hasBasicLands = true; + + //cards.add(new SetCardInfo("AWOL", 2, Rarity.COMMON, mage.cards.a.AWOL.class)); + //cards.add(new SetCardInfo("Abstract Iguanart", 47, Rarity.UNCOMMON, mage.cards.a.AbstractIguanart.class)); + //cards.add(new SetCardInfo("Acornelia, Fashionable Filcher", 31, Rarity.RARE, mage.cards.a.AcorneliaFashionableFilcher.class)); + //cards.add(new SetCardInfo("Adorable Kitten", 1, Rarity.COMMON, mage.cards.a.AdorableKitten.class)); + //cards.add(new SetCardInfo("Alexander Clamilton", 16, Rarity.RARE, mage.cards.a.AlexanderClamilton.class)); + //cards.add(new SetCardInfo("Avatar of Me", 17, Rarity.RARE, mage.cards.a.AvatarOfMe.class)); + cards.add(new SetCardInfo("B-I-N-G-O", 61, Rarity.RARE, mage.cards.b.BINGO.class)); + //cards.add(new SetCardInfo("B.O.B. (Bevy of Beebles)", 18, Rarity.MYTHIC, mage.cards.b.BOBBevyOfBeebles.class)); + //cards.add(new SetCardInfo("Bat-", 32, Rarity.UNCOMMON, mage.cards.b.Bat.class)); + cards.add(new SetCardInfo("Blast from the Past", 48, Rarity.RARE, mage.cards.b.BlastFromThePast.class)); + //cards.add(new SetCardInfo("Boomstacker", 49, Rarity.RARE, mage.cards.b.Boomstacker.class)); + cards.add(new SetCardInfo("Booster Tutor", 33, Rarity.UNCOMMON, mage.cards.b.BoosterTutor.class)); + //cards.add(new SetCardInfo("Bronze Calendar", 76, Rarity.UNCOMMON, mage.cards.b.BronzeCalendar.class)); + //cards.add(new SetCardInfo("Carnivorous Death-Parrot", 19, Rarity.COMMON, mage.cards.c.CarnivorousDeathParrot.class)); + //cards.add(new SetCardInfo("Cheatyface", 20, Rarity.UNCOMMON, mage.cards.c.Cheatyface.class)); + //cards.add(new SetCardInfo("Chicken à la King", 21, Rarity.RARE, mage.cards.c.ChickenLaKing.class)); + //cards.add(new SetCardInfo("Common Courtesy", 22, Rarity.UNCOMMON, mage.cards.c.CommonCourtesy.class)); + //cards.add(new SetCardInfo("Common Iguana", 50, Rarity.COMMON, mage.cards.c.CommonIguana.class)); + //cards.add(new SetCardInfo("Dirty Rat", 34, Rarity.COMMON, mage.cards.d.DirtyRat.class)); + //cards.add(new SetCardInfo("Duh", 35, Rarity.COMMON, mage.cards.d.Duh.class)); + cards.add(new SetCardInfo("Elvish Impersonators", 62, Rarity.COMMON, mage.cards.e.ElvishImpersonators.class)); + //cards.add(new SetCardInfo("Emcee", 3, Rarity.UNCOMMON, mage.cards.e.Emcee.class)); + //cards.add(new SetCardInfo("Enter the Dungeon", 36, Rarity.RARE, mage.cards.e.EnterTheDungeon.class)); + //cards.add(new SetCardInfo("Entirely Normal Armchair", 77, Rarity.UNCOMMON, mage.cards.e.EntirelyNormalArmchair.class)); + //cards.add(new SetCardInfo("Flavor Judge", 4, Rarity.RARE, mage.cards.f.FlavorJudge.class)); + cards.add(new SetCardInfo("Forest", 95, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", 96, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + //cards.add(new SetCardInfo("Frankie Peanuts", 5, Rarity.RARE, mage.cards.f.FrankiePeanuts.class)); + cards.add(new SetCardInfo("Free-Range Chicken", 63, Rarity.COMMON, mage.cards.f.FreeRangeChicken.class)); + //cards.add(new SetCardInfo("GO TO JAIL", 6, Rarity.COMMON, mage.cards.g.GoToJail.class)); + //cards.add(new SetCardInfo("Goblin Haberdasher", 51, Rarity.UNCOMMON, mage.cards.g.GoblinHaberdasher.class)); + //cards.add(new SetCardInfo("Goblin S.W.A.T. Team", 52, Rarity.COMMON, mage.cards.g.GoblinSWATTeam.class)); + cards.add(new SetCardInfo("Goblin Tutor", 53, Rarity.UNCOMMON, mage.cards.g.GoblinTutor.class)); + cards.add(new SetCardInfo("Growth Spurt", 64, Rarity.COMMON, mage.cards.g.GrowthSpurt.class)); + //cards.add(new SetCardInfo("Half-Squirrel, Half-", 65, Rarity.UNCOMMON, mage.cards.h.HalfSquirrelHalf.class)); + //cards.add(new SetCardInfo("Hoisted Hireling", 37, Rarity.COMMON, mage.cards.h.HoistedHireling.class)); + //cards.add(new SetCardInfo("Humming-", 7, Rarity.COMMON, mage.cards.h.Humming.class)); + cards.add(new SetCardInfo("Infernal Spawn of Evil", 38, Rarity.RARE, mage.cards.i.InfernalSpawnOfEvil.class)); + //cards.add(new SetCardInfo("Infernal Spawn of Infernal Spawn of Evil", 39, Rarity.RARE, mage.cards.i.InfernalSpawnOfInfernalSpawnOfEvil.class)); + //cards.add(new SetCardInfo("Infernius Spawnington III, Esq.", 40, Rarity.RARE, mage.cards.i.InferniusSpawningtonIIIEsq.class)); + //cards.add(new SetCardInfo("Infinity Elemental", 54, Rarity.MYTHIC, mage.cards.i.InfinityElemental.class)); + cards.add(new SetCardInfo("Inhumaniac", 41, Rarity.UNCOMMON, mage.cards.i.Inhumaniac.class)); + cards.add(new SetCardInfo("Island", 89, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", 90, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Jack-in-the-Mox", 78, Rarity.RARE, mage.cards.j.JackInTheMox.class)); + cards.add(new SetCardInfo("Johnny, Combo Player", 23, Rarity.RARE, mage.cards.j.JohnnyComboPlayer.class)); + cards.add(new SetCardInfo("Jumbo Imp", 42, Rarity.UNCOMMON, mage.cards.j.JumboImp.class)); + //cards.add(new SetCardInfo("Knight of the Hokey Pokey", 8, Rarity.COMMON, mage.cards.k.KnightOfTheHokeyPokey.class)); + cards.add(new SetCardInfo("Krark's Other Thumb", 79, Rarity.UNCOMMON, mage.cards.k.KrarksOtherThumb.class)); + //cards.add(new SetCardInfo("Look at Me, I'm R&D", 9, Rarity.RARE, mage.cards.l.LookAtMeImRD.class)); + //cards.add(new SetCardInfo("Look at Me, I'm the DCI", 10, Rarity.RARE, mage.cards.l.LookAtMeImTheDci.class)); + //cards.add(new SetCardInfo("Magic Word", 24, Rarity.COMMON, mage.cards.m.MagicWord.class)); + //cards.add(new SetCardInfo("Mer Man", 25, Rarity.COMMON, mage.cards.m.MerMan.class)); + //cards.add(new SetCardInfo("Mother Kangaroo", 66, Rarity.COMMON, mage.cards.m.MotherKangaroo.class)); + cards.add(new SetCardInfo("Mountain", 93, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", 94, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Old Fogey", 67, Rarity.RARE, mage.cards.o.OldFogey.class)); + //cards.add(new SetCardInfo("Old Guard", 11, Rarity.COMMON, mage.cards.o.OldGuard.class)); + //cards.add(new SetCardInfo("Ordinary Pony", 12, Rarity.COMMON, mage.cards.o.OrdinaryPony.class)); + cards.add(new SetCardInfo("Painiac", 55, Rarity.COMMON, mage.cards.p.Painiac.class)); + cards.add(new SetCardInfo("Paper Tiger", 80, Rarity.COMMON, mage.cards.p.PaperTiger.class)); + //cards.add(new SetCardInfo("Pippa, Duchess of Dice", 68, Rarity.RARE, mage.cards.p.PippaDuchessOfDice.class)); + cards.add(new SetCardInfo("Plains", 87, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plains", 88, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + //cards.add(new SetCardInfo("Pointy Finger of Doom", 81, Rarity.RARE, mage.cards.p.PointyFingerOfDoom.class)); + cards.add(new SetCardInfo("Poultrygeist", 43, Rarity.COMMON, mage.cards.p.Poultrygeist.class)); + //cards.add(new SetCardInfo("Richard Garfield, Ph.D.", 26, Rarity.RARE, mage.cards.r.RichardGarfieldPhD.class)); + //cards.add(new SetCardInfo("Rings a Bell", 27, Rarity.UNCOMMON, mage.cards.r.RingsaBell.class)); + cards.add(new SetCardInfo("Rock Lobster", 82, Rarity.COMMON, mage.cards.r.RockLobster.class)); + cards.add(new SetCardInfo("Scissors Lizard", 83, Rarity.COMMON, mage.cards.s.ScissorsLizard.class)); + cards.add(new SetCardInfo("Six-y Beast", 56, Rarity.UNCOMMON, mage.cards.s.SixyBeast.class)); + //cards.add(new SetCardInfo("Skull Saucer", 44, Rarity.UNCOMMON, mage.cards.s.SkullSaucer.class)); + //cards.add(new SetCardInfo("Slaying Mantis", 69, Rarity.UNCOMMON, mage.cards.s.SlayingMantis.class)); + cards.add(new SetCardInfo("Snickering Squirrel", 45, Rarity.COMMON, mage.cards.s.SnickeringSquirrel.class)); + //cards.add(new SetCardInfo("Spirit of the Season", 70, Rarity.UNCOMMON, mage.cards.s.SpiritOfTheSeason.class)); + //cards.add(new SetCardInfo("Squirrel Farm", 71, Rarity.RARE, mage.cards.s.SquirrelFarm.class)); + //cards.add(new SetCardInfo("Staying Power", 13, Rarity.RARE, mage.cards.s.StayingPower.class)); + //cards.add(new SetCardInfo("Stet, Draconic Proofreader", 57, Rarity.RARE, mage.cards.s.StetDraconicProofreader.class)); + //cards.add(new SetCardInfo("Stinging Scorpion", 46, Rarity.COMMON, mage.cards.s.StingingScorpion.class)); + cards.add(new SetCardInfo("Strategy, Schmategy", 58, Rarity.RARE, mage.cards.s.StrategySchmategy.class)); + //cards.add(new SetCardInfo("Strutting Turkey", 14, Rarity.UNCOMMON, mage.cards.s.StruttingTurkey.class)); + //cards.add(new SetCardInfo("Super-Duper Death Ray", 59, Rarity.UNCOMMON, mage.cards.s.SuperDuperDeathRay.class)); + //cards.add(new SetCardInfo("Surgeon General Commander", 72, Rarity.MYTHIC, mage.cards.s.SurgeonGeneralCommander.class)); + cards.add(new SetCardInfo("Swamp", 91, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", 92, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + //cards.add(new SetCardInfo("Sword of Dungeons & Dragons", 84, Rarity.MYTHIC, mage.cards.s.SwordOfDungeonsDragons.class)); + //cards.add(new SetCardInfo("Syr Cadian, Knight Owl", 15, Rarity.RARE, mage.cards.s.SyrCadianKnightOwl.class)); + cards.add(new SetCardInfo("Time Out", 28, Rarity.COMMON, mage.cards.t.TimeOut.class)); + cards.add(new SetCardInfo("Timmy, Power Gamer", 73, Rarity.RARE, mage.cards.t.TimmyPowerGamer.class)); + //cards.add(new SetCardInfo("Topsy Turvy", 29, Rarity.UNCOMMON, mage.cards.t.TopsyTurvy.class)); + //cards.add(new SetCardInfo("Underdome", 86, Rarity.COMMON, mage.cards.u.Underdome.class)); + //cards.add(new SetCardInfo("Wall of Fortune", 30, Rarity.COMMON, mage.cards.w.WallOfFortune.class)); + //cards.add(new SetCardInfo("Water Gun Balloon Game", 85, Rarity.RARE, mage.cards.w.WaterGunBalloonGame.class)); + //cards.add(new SetCardInfo("Who // What // When // Where // Why", 75, Rarity.RARE, mage.cards.w.WhoWhatWhenWhereWhy.class)); + //cards.add(new SetCardInfo("Wild Crocodile", 74, Rarity.COMMON, mage.cards.w.WildCrocodile.class)); + //cards.add(new SetCardInfo("Yet Another Aether Vortex", 60, Rarity.RARE, mage.cards.y.YetAnotherAetherVortex.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/UnstablePromos.java b/Mage.Sets/src/mage/sets/UnstablePromos.java new file mode 100644 index 00000000000..80779ead409 --- /dev/null +++ b/Mage.Sets/src/mage/sets/UnstablePromos.java @@ -0,0 +1,25 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/pust + */ +public class UnstablePromos extends ExpansionSet { + + private static final UnstablePromos instance = new UnstablePromos(); + + public static UnstablePromos getInstance() { + return instance; + } + + private UnstablePromos() { + super("Unstable Promos", "PUST", ExpansionSet.buildDate(2017, 11, 13), SetType.JOKESET); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Earl of Squirrel", 108, Rarity.RARE, mage.cards.e.EarlOfSquirrel.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/VintageChampionship.java b/Mage.Sets/src/mage/sets/VintageChampionship.java new file mode 100644 index 00000000000..bc54680a6b8 --- /dev/null +++ b/Mage.Sets/src/mage/sets/VintageChampionship.java @@ -0,0 +1,46 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/ovnt + */ +public class VintageChampionship extends ExpansionSet { + + private static final VintageChampionship instance = new VintageChampionship(); + + public static VintageChampionship getInstance() { + return instance; + } + + private VintageChampionship() { + super("Vintage Championship", "OVNT", ExpansionSet.buildDate(2019, 11, 3), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Ancestral Recall", 2005, Rarity.RARE, mage.cards.a.AncestralRecall.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Ancestral Recall", 2013, Rarity.RARE, mage.cards.a.AncestralRecall.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Ancestral Recall", 2018, Rarity.MYTHIC, mage.cards.a.AncestralRecall.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Black Lotus", 2003, Rarity.RARE, mage.cards.b.BlackLotus.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Black Lotus", "2017NA", Rarity.MYTHIC, mage.cards.b.BlackLotus.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mox Emerald", 2009, Rarity.RARE, mage.cards.m.MoxEmerald.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mox Emerald", 2015, Rarity.MYTHIC, mage.cards.m.MoxEmerald.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mox Jet", 2007, Rarity.RARE, mage.cards.m.MoxJet.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mox Jet", "2016EU", Rarity.MYTHIC, mage.cards.m.MoxJet.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mox Jet", "2019NA", Rarity.MYTHIC, mage.cards.m.MoxJet.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mox Pearl", 2006, Rarity.RARE, mage.cards.m.MoxPearl.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mox Pearl", 2014, Rarity.MYTHIC, mage.cards.m.MoxPearl.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mox Ruby", 2008, Rarity.RARE, mage.cards.m.MoxRuby.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mox Ruby", "2017EU", Rarity.MYTHIC, mage.cards.m.MoxRuby.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mox Sapphire", 2010, Rarity.RARE, mage.cards.m.MoxSapphire.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mox Sapphire", "2016NA", Rarity.MYTHIC, mage.cards.m.MoxSapphire.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mox Sapphire", "2019A", Rarity.MYTHIC, mage.cards.m.MoxSapphire.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Time Walk", 2011, Rarity.RARE, mage.cards.t.TimeWalk.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Time Walk", "2018NA", Rarity.MYTHIC, mage.cards.t.TimeWalk.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Timetwister", 2004, Rarity.RARE, mage.cards.t.Timetwister.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Timetwister", 2012, Rarity.RARE, mage.cards.t.Timetwister.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Timetwister", "2018A", Rarity.MYTHIC, mage.cards.t.Timetwister.class, NON_FULL_USE_VARIOUS)); + } +} diff --git a/Mage.Sets/src/mage/sets/WPNAndGatewayPromos.java b/Mage.Sets/src/mage/sets/WPNAndGatewayPromos.java deleted file mode 100644 index 2ca40ffc6bd..00000000000 --- a/Mage.Sets/src/mage/sets/WPNAndGatewayPromos.java +++ /dev/null @@ -1,95 +0,0 @@ -package mage.sets; - -import mage.cards.ExpansionSet; -import mage.constants.Rarity; -import mage.constants.SetType; - -/** - * @author fireshoes, JayDi85 - */ -public final class WPNAndGatewayPromos extends ExpansionSet { - - private static final WPNAndGatewayPromos instance = new WPNAndGatewayPromos(); - - public static WPNAndGatewayPromos getInstance() { - return instance; - } - - private WPNAndGatewayPromos() { - super("WPN and Gateway Promos", "GRC", ExpansionSet.buildDate(2011, 6, 17), SetType.PROMOTIONAL); - this.hasBoosters = false; - this.hasBasicLands = false; - - // one inner set for many promos by years (Gameway + Wizards Play Network promos by years) - // https://mtg.gamepedia.com/Gateway_cards - - // Gateway Promos -- xmage uses one set (GRC), but scryfall store it by years - // 2006 - https://scryfall.com/sets/pgtw - cards.add(new SetCardInfo("Fiery Temper", 3, Rarity.RARE, mage.cards.f.FieryTemper.class)); - cards.add(new SetCardInfo("Icatian Javelineers", 2, Rarity.RARE, mage.cards.i.IcatianJavelineers.class)); - cards.add(new SetCardInfo("Wood Elves", 1, Rarity.RARE, mage.cards.w.WoodElves.class)); - // 2007 - https://scryfall.com/sets/pg07 - cards.add(new SetCardInfo("Boomerang", 4, Rarity.RARE, mage.cards.b.Boomerang.class)); - cards.add(new SetCardInfo("Calciderm", 5, Rarity.RARE, mage.cards.c.Calciderm.class)); - cards.add(new SetCardInfo("Dauntless Dourbark", 12, Rarity.RARE, mage.cards.d.DauntlessDourbark.class)); - cards.add(new SetCardInfo("Llanowar Elves", 9, Rarity.RARE, mage.cards.l.LlanowarElves.class)); - cards.add(new SetCardInfo("Mind Stone", 11, Rarity.RARE, mage.cards.m.MindStone.class)); - cards.add(new SetCardInfo("Mogg Fanatic", 10, Rarity.RARE, mage.cards.m.MoggFanatic.class)); - cards.add(new SetCardInfo("Reckless Wurm", 6, Rarity.RARE, mage.cards.r.RecklessWurm.class)); - cards.add(new SetCardInfo("Yixlid Jailer", 7, Rarity.RARE, mage.cards.y.YixlidJailer.class)); - cards.add(new SetCardInfo("Zoetic Cavern", 8, Rarity.RARE, mage.cards.z.ZoeticCavern.class)); - // 2008a - https://scryfall.com/sets/pg08 - cards.add(new SetCardInfo("Boggart Ram-Gang", 17, Rarity.RARE, mage.cards.b.BoggartRamGang.class)); - cards.add(new SetCardInfo("Cenn's Tactician", 14, Rarity.RARE, mage.cards.c.CennsTactician.class)); - cards.add(new SetCardInfo("Duergar Hedge-Mage", 19, Rarity.RARE, mage.cards.d.DuergarHedgeMage.class)); - cards.add(new SetCardInfo("Gravedigger", 16, Rarity.RARE, mage.cards.g.Gravedigger.class)); - cards.add(new SetCardInfo("Lava Axe", 13, Rarity.RARE, mage.cards.l.LavaAxe.class)); - cards.add(new SetCardInfo("Oona's Blackguard", 15, Rarity.RARE, mage.cards.o.OonasBlackguard.class)); - cards.add(new SetCardInfo("Selkie Hedge-Mage", 20, Rarity.RARE, mage.cards.s.SelkieHedgeMage.class)); - cards.add(new SetCardInfo("Wilt-Leaf Cavaliers", 18, Rarity.RARE, mage.cards.w.WiltLeafCavaliers.class)); - - // Wizards Play Network Promos -- xmage uses one set (GRC), but scryfall store it by years - // 2008b - https://scryfall.com/sets/pwpn - cards.add(new SetCardInfo("Sprouting Thrinax", 21, Rarity.RARE, mage.cards.s.SproutingThrinax.class)); - cards.add(new SetCardInfo("Woolly Thoctar", 22, Rarity.RARE, mage.cards.w.WoollyThoctar.class)); - // 2009 - https://scryfall.com/sets/pwp09 - cards.add(new SetCardInfo("Hellspark Elemental", 25, Rarity.RARE, mage.cards.h.HellsparkElemental.class)); - cards.add(new SetCardInfo("Kor Duelist", 32, Rarity.RARE, mage.cards.k.KorDuelist.class)); - cards.add(new SetCardInfo("Marisi's Twinclaws", 26, Rarity.RARE, mage.cards.m.MarisisTwinclaws.class)); - cards.add(new SetCardInfo("Mind Control", 30, Rarity.RARE, mage.cards.m.MindControl.class)); - cards.add(new SetCardInfo("Path to Exile", 24, Rarity.RARE, mage.cards.p.PathToExile.class)); - cards.add(new SetCardInfo("Rise from the Grave", 31, Rarity.RARE, mage.cards.r.RiseFromTheGrave.class)); - cards.add(new SetCardInfo("Slave of Bolas", 27, Rarity.RARE, mage.cards.s.SlaveOfBolas.class)); - cards.add(new SetCardInfo("Vampire Nighthawk", 33, Rarity.RARE, mage.cards.v.VampireNighthawk.class)); - // 2010 - https://scryfall.com/sets/pwp10 - cards.add(new SetCardInfo("Curse of Wizardry", 47, Rarity.RARE, mage.cards.c.CurseOfWizardry.class)); - cards.add(new SetCardInfo("Fling", 50, Rarity.RARE, mage.cards.f.Fling.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Golem's Heart", 60, Rarity.RARE, mage.cards.g.GolemsHeart.class)); - cards.add(new SetCardInfo("Kor Firewalker", 36, Rarity.RARE, mage.cards.k.KorFirewalker.class)); - cards.add(new SetCardInfo("Leatherback Baloth", 37, Rarity.RARE, mage.cards.l.LeatherbackBaloth.class)); - cards.add(new SetCardInfo("Pathrazer of Ulamog", 46, Rarity.RARE, mage.cards.p.PathrazerOfUlamog.class)); - cards.add(new SetCardInfo("Plague Stinger", 59, Rarity.RARE, mage.cards.p.PlagueStinger.class)); - cards.add(new SetCardInfo("Skinrender", 63, Rarity.RARE, mage.cards.s.Skinrender.class)); - cards.add(new SetCardInfo("Sylvan Ranger", 51, Rarity.RARE, mage.cards.s.SylvanRanger.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Syphon Mind", 40, Rarity.RARE, mage.cards.s.SyphonMind.class)); - // 2011 - https://scryfall.com/sets/pwp11 - cards.add(new SetCardInfo("Auramancer", 77, Rarity.RARE, mage.cards.a.Auramancer.class)); - cards.add(new SetCardInfo("Bloodcrazed Neonate", 83, Rarity.RARE, mage.cards.b.BloodcrazedNeonate.class)); - cards.add(new SetCardInfo("Boneyard Wurm", 84, Rarity.RARE, mage.cards.b.BoneyardWurm.class)); - cards.add(new SetCardInfo("Circle of Flame", 78, Rarity.RARE, mage.cards.c.CircleOfFlame.class)); - cards.add(new SetCardInfo("Curse of the Bloody Tome", 80, Rarity.RARE, mage.cards.c.CurseOfTheBloodyTome.class)); - cards.add(new SetCardInfo("Fling", 69, Rarity.RARE, mage.cards.f.Fling.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Master's Call", 64, Rarity.RARE, mage.cards.m.MastersCall.class)); - cards.add(new SetCardInfo("Maul Splicer", 72, Rarity.RARE, mage.cards.m.MaulSplicer.class)); - cards.add(new SetCardInfo("Plague Myr", 65, Rarity.RARE, mage.cards.p.PlagueMyr.class)); - cards.add(new SetCardInfo("Shrine of Burning Rage", 73, Rarity.RARE, mage.cards.s.ShrineOfBurningRage.class)); - cards.add(new SetCardInfo("Signal Pest", 66, Rarity.RARE, mage.cards.s.SignalPest.class)); - cards.add(new SetCardInfo("Sylvan Ranger", 70, Rarity.RARE, mage.cards.s.SylvanRanger.class, NON_FULL_USE_VARIOUS)); - cards.add(new SetCardInfo("Tormented Soul", 76, Rarity.RARE, mage.cards.t.TormentedSoul.class)); - cards.add(new SetCardInfo("Vault Skirge", 71, Rarity.RARE, mage.cards.v.VaultSkirge.class)); - // 2012 - https://scryfall.com/sets/pwp12 - cards.add(new SetCardInfo("Curse of Thirst", 81, Rarity.RARE, mage.cards.c.CurseOfThirst.class)); - cards.add(new SetCardInfo("Gather the Townsfolk", 79, Rarity.RARE, mage.cards.g.GatherTheTownsfolk.class)); - cards.add(new SetCardInfo("Nearheath Stalker", 82, Rarity.RARE, mage.cards.n.NearheathStalker.class)); - } -} \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/WarOfTheSparkPromos.java b/Mage.Sets/src/mage/sets/WarOfTheSparkPromos.java new file mode 100644 index 00000000000..4800fe6de4f --- /dev/null +++ b/Mage.Sets/src/mage/sets/WarOfTheSparkPromos.java @@ -0,0 +1,198 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/pwar + */ +public class WarOfTheSparkPromos extends ExpansionSet { + + private static final WarOfTheSparkPromos instance = new WarOfTheSparkPromos(); + + public static WarOfTheSparkPromos getInstance() { + return instance; + } + + private WarOfTheSparkPromos() { + super("War of the Spark Promos", "PWAR", ExpansionSet.buildDate(2019, 5, 4), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Ajani, the Greathearted", "184p", Rarity.RARE, mage.cards.a.AjaniTheGreathearted.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Ajani, the Greathearted", "184s", Rarity.RARE, mage.cards.a.AjaniTheGreathearted.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Ajani, the Greathearted", "184s*", Rarity.RARE, mage.cards.a.AjaniTheGreathearted.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Angrath, Captain of Chaos", "227s", Rarity.UNCOMMON, mage.cards.a.AngrathCaptainOfChaos.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Angrath, Captain of Chaos", "227s*", Rarity.UNCOMMON, mage.cards.a.AngrathCaptainOfChaos.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Arlinn, Voice of the Pack", "150s", Rarity.UNCOMMON, mage.cards.a.ArlinnVoiceOfThePack.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Arlinn, Voice of the Pack", "150s*", Rarity.UNCOMMON, mage.cards.a.ArlinnVoiceOfThePack.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Ashiok, Dream Render", "228s", Rarity.UNCOMMON, mage.cards.a.AshiokDreamRender.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Ashiok, Dream Render", "228s*", Rarity.UNCOMMON, mage.cards.a.AshiokDreamRender.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Augur of Bolas", 41, Rarity.UNCOMMON, mage.cards.a.AugurOfBolas.class)); + cards.add(new SetCardInfo("Awakening of Vitu-Ghazi", "152s", Rarity.RARE, mage.cards.a.AwakeningOfVituGhazi.class)); + cards.add(new SetCardInfo("Bioessence Hydra", "186s", Rarity.RARE, mage.cards.b.BioessenceHydra.class)); + cards.add(new SetCardInfo("Blast Zone", "244p", Rarity.RARE, mage.cards.b.BlastZone.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Blast Zone", "244s", Rarity.RARE, mage.cards.b.BlastZone.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Bolas's Citadel", "79p", Rarity.RARE, mage.cards.b.BolassCitadel.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Bolas's Citadel", "79s", Rarity.RARE, mage.cards.b.BolassCitadel.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Bolas's Citadel", 79, Rarity.RARE, mage.cards.b.BolassCitadel.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Casualties of War", "187s", Rarity.RARE, mage.cards.c.CasualtiesOfWar.class)); + cards.add(new SetCardInfo("Chandra, Fire Artisan", "119p", Rarity.RARE, mage.cards.c.ChandraFireArtisan.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Chandra, Fire Artisan", "119s", Rarity.RARE, mage.cards.c.ChandraFireArtisan.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Chandra, Fire Artisan", "119s*", Rarity.RARE, mage.cards.c.ChandraFireArtisan.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Command the Dreadhorde", "82s", Rarity.RARE, mage.cards.c.CommandTheDreadhorde.class)); + cards.add(new SetCardInfo("Commence the Endgame", "45p", Rarity.RARE, mage.cards.c.CommenceTheEndgame.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Commence the Endgame", "45s", Rarity.RARE, mage.cards.c.CommenceTheEndgame.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Davriel, Rogue Shadowmage", "83s", Rarity.UNCOMMON, mage.cards.d.DavrielRogueShadowmage.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Davriel, Rogue Shadowmage", "83s*", Rarity.UNCOMMON, mage.cards.d.DavrielRogueShadowmage.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Deliver Unto Evil", "85s", Rarity.RARE, mage.cards.d.DeliverUntoEvil.class)); + cards.add(new SetCardInfo("Domri, Anarch of Bolas", "191p", Rarity.RARE, mage.cards.d.DomriAnarchOfBolas.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Domri, Anarch of Bolas", "191s", Rarity.RARE, mage.cards.d.DomriAnarchOfBolas.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Domri, Anarch of Bolas", "191s*", Rarity.RARE, mage.cards.d.DomriAnarchOfBolas.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Dovin's Veto", 193, Rarity.UNCOMMON, mage.cards.d.DovinsVeto.class)); + cards.add(new SetCardInfo("Dovin, Hand of Control", "229s", Rarity.UNCOMMON, mage.cards.d.DovinHandOfControl.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Dovin, Hand of Control", "229s*", Rarity.UNCOMMON, mage.cards.d.DovinHandOfControl.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Dreadhorde Arcanist", "125p", Rarity.RARE, mage.cards.d.DreadhordeArcanist.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Dreadhorde Arcanist", "125s", Rarity.RARE, mage.cards.d.DreadhordeArcanist.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Dreadhorde Butcher", "194p", Rarity.RARE, mage.cards.d.DreadhordeButcher.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Dreadhorde Butcher", "194s", Rarity.RARE, mage.cards.d.DreadhordeButcher.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Dreadhorde Invasion", "86p", Rarity.RARE, mage.cards.d.DreadhordeInvasion.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Dreadhorde Invasion", "86s", Rarity.RARE, mage.cards.d.DreadhordeInvasion.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Enter the God-Eternals", "196p", Rarity.RARE, mage.cards.e.EnterTheGodEternals.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Enter the God-Eternals", "196s", Rarity.RARE, mage.cards.e.EnterTheGodEternals.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Fblthp, the Lost", "50p", Rarity.RARE, mage.cards.f.FblthpTheLost.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Fblthp, the Lost", "50s", Rarity.RARE, mage.cards.f.FblthpTheLost.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Feather, the Redeemed", "197p", Rarity.RARE, mage.cards.f.FeatherTheRedeemed.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Feather, the Redeemed", "197s", Rarity.RARE, mage.cards.f.FeatherTheRedeemed.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Finale of Devastation", "160p", Rarity.MYTHIC, mage.cards.f.FinaleOfDevastation.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Finale of Devastation", "160s", Rarity.MYTHIC, mage.cards.f.FinaleOfDevastation.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Finale of Eternity", "91p", Rarity.MYTHIC, mage.cards.f.FinaleOfEternity.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Finale of Eternity", "91s", Rarity.MYTHIC, mage.cards.f.FinaleOfEternity.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Finale of Glory", "12s", Rarity.MYTHIC, mage.cards.f.FinaleOfGlory.class)); + cards.add(new SetCardInfo("Finale of Promise", "127s", Rarity.MYTHIC, mage.cards.f.FinaleOfPromise.class)); + cards.add(new SetCardInfo("Finale of Revelation", "51p", Rarity.MYTHIC, mage.cards.f.FinaleOfRevelation.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Finale of Revelation", "51s", Rarity.MYTHIC, mage.cards.f.FinaleOfRevelation.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Gideon Blackblade", "13p", Rarity.MYTHIC, mage.cards.g.GideonBlackblade.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Gideon Blackblade", "13s", Rarity.MYTHIC, mage.cards.g.GideonBlackblade.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Gideon Blackblade", "13s*", Rarity.MYTHIC, mage.cards.g.GideonBlackblade.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("God-Eternal Bontu", "92s", Rarity.MYTHIC, mage.cards.g.GodEternalBontu.class)); + cards.add(new SetCardInfo("God-Eternal Kefnet", "53s", Rarity.MYTHIC, mage.cards.g.GodEternalKefnet.class)); + cards.add(new SetCardInfo("God-Eternal Oketra", "16s", Rarity.MYTHIC, mage.cards.g.GodEternalOketra.class)); + cards.add(new SetCardInfo("God-Eternal Rhonas", "163s", Rarity.MYTHIC, mage.cards.g.GodEternalRhonas.class)); + cards.add(new SetCardInfo("Huatli, the Sun's Heart", "230s", Rarity.UNCOMMON, mage.cards.h.HuatliTheSunsHeart.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Huatli, the Sun's Heart", "230s*", Rarity.UNCOMMON, mage.cards.h.HuatliTheSunsHeart.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Ignite the Beacon", "18s", Rarity.RARE, mage.cards.i.IgniteTheBeacon.class)); + cards.add(new SetCardInfo("Ilharg, the Raze-Boar", "133s", Rarity.MYTHIC, mage.cards.i.IlhargTheRazeBoar.class)); + cards.add(new SetCardInfo("Jace, Wielder of Mysteries", "54p", Rarity.RARE, mage.cards.j.JaceWielderOfMysteries.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Jace, Wielder of Mysteries", "54s", Rarity.RARE, mage.cards.j.JaceWielderOfMysteries.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Jace, Wielder of Mysteries", "54s*", Rarity.RARE, mage.cards.j.JaceWielderOfMysteries.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Jaya, Venerated Firemage", "135s", Rarity.UNCOMMON, mage.cards.j.JayaVeneratedFiremage.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Jaya, Venerated Firemage", "135s*", Rarity.UNCOMMON, mage.cards.j.JayaVeneratedFiremage.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Jiang Yanggu, Wildcrafter", "164s", Rarity.UNCOMMON, mage.cards.j.JiangYangguWildcrafter.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Jiang Yanggu, Wildcrafter", "164s*", Rarity.UNCOMMON, mage.cards.j.JiangYangguWildcrafter.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Karn's Bastion", "248p", Rarity.RARE, mage.cards.k.KarnsBastion.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Karn's Bastion", "248s", Rarity.RARE, mage.cards.k.KarnsBastion.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Karn's Bastion", 248, Rarity.RARE, mage.cards.k.KarnsBastion.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Karn, the Great Creator", "1p", Rarity.RARE, mage.cards.k.KarnTheGreatCreator.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Karn, the Great Creator", "1s", Rarity.RARE, mage.cards.k.KarnTheGreatCreator.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Karn, the Great Creator", "1s*", Rarity.RARE, mage.cards.k.KarnTheGreatCreator.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Kasmina, Enigmatic Mentor", "56s", Rarity.UNCOMMON, mage.cards.k.KasminaEnigmaticMentor.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Kasmina, Enigmatic Mentor", "56s*", Rarity.UNCOMMON, mage.cards.k.KasminaEnigmaticMentor.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Kaya, Bane of the Dead", "231s", Rarity.UNCOMMON, mage.cards.k.KayaBaneOfTheDead.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Kaya, Bane of the Dead", "231s*", Rarity.UNCOMMON, mage.cards.k.KayaBaneOfTheDead.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Kiora, Behemoth Beckoner", "232s", Rarity.UNCOMMON, mage.cards.k.KioraBehemothBeckoner.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Kiora, Behemoth Beckoner", "232s*", Rarity.UNCOMMON, mage.cards.k.KioraBehemothBeckoner.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Krenko, Tin Street Kingpin", "137p", Rarity.RARE, mage.cards.k.KrenkoTinStreetKingpin.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Krenko, Tin Street Kingpin", "137s", Rarity.RARE, mage.cards.k.KrenkoTinStreetKingpin.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Liliana's Triumph", 98, Rarity.UNCOMMON, mage.cards.l.LilianasTriumph.class)); + cards.add(new SetCardInfo("Liliana, Dreadhorde General", "97p", Rarity.MYTHIC, mage.cards.l.LilianaDreadhordeGeneral.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Liliana, Dreadhorde General", "97s", Rarity.MYTHIC, mage.cards.l.LilianaDreadhordeGeneral.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Liliana, Dreadhorde General", "97s*", Rarity.MYTHIC, mage.cards.l.LilianaDreadhordeGeneral.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Living Twister", "203p", Rarity.RARE, mage.cards.l.LivingTwister.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Living Twister", "203s", Rarity.RARE, mage.cards.l.LivingTwister.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Massacre Girl", "99s", Rarity.RARE, mage.cards.m.MassacreGirl.class)); + cards.add(new SetCardInfo("Mizzium Tank", "138p", Rarity.RARE, mage.cards.m.MizziumTank.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mizzium Tank", "138s", Rarity.RARE, mage.cards.m.MizziumTank.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mobilized District", "249p", Rarity.RARE, mage.cards.m.MobilizedDistrict.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mobilized District", "249s", Rarity.RARE, mage.cards.m.MobilizedDistrict.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Nahiri, Storm of Stone", "233s", Rarity.UNCOMMON, mage.cards.n.NahiriStormOfStone.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Nahiri, Storm of Stone", "233s*", Rarity.UNCOMMON, mage.cards.n.NahiriStormOfStone.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Narset's Reversal", "62p", Rarity.RARE, mage.cards.n.NarsetsReversal.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Narset's Reversal", "62s", Rarity.RARE, mage.cards.n.NarsetsReversal.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Narset, Parter of Veils", "61s", Rarity.UNCOMMON, mage.cards.n.NarsetParterOfVeils.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Narset, Parter of Veils", "61s*", Rarity.UNCOMMON, mage.cards.n.NarsetParterOfVeils.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Neheb, Dreadhorde Champion", "140s", Rarity.RARE, mage.cards.n.NehebDreadhordeChampion.class)); + cards.add(new SetCardInfo("Nicol Bolas, Dragon-God", "207p", Rarity.MYTHIC, mage.cards.n.NicolBolasDragonGod.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Nicol Bolas, Dragon-God", "207s", Rarity.MYTHIC, mage.cards.n.NicolBolasDragonGod.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Nicol Bolas, Dragon-God", "207s*", Rarity.MYTHIC, mage.cards.n.NicolBolasDragonGod.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Nissa, Who Shakes the World", "169p", Rarity.RARE, mage.cards.n.NissaWhoShakesTheWorld.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Nissa, Who Shakes the World", "169s", Rarity.RARE, mage.cards.n.NissaWhoShakesTheWorld.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Nissa, Who Shakes the World", "169s*", Rarity.RARE, mage.cards.n.NissaWhoShakesTheWorld.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Niv-Mizzet Reborn", "208s", Rarity.MYTHIC, mage.cards.n.NivMizzetReborn.class)); + cards.add(new SetCardInfo("Oath of Kaya", "209p", Rarity.RARE, mage.cards.o.OathOfKaya.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Oath of Kaya", "209s", Rarity.RARE, mage.cards.o.OathOfKaya.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Ob Nixilis, the Hate-Twisted", "100s", Rarity.UNCOMMON, mage.cards.o.ObNixilisTheHateTwisted.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Ob Nixilis, the Hate-Twisted", "100s*", Rarity.UNCOMMON, mage.cards.o.ObNixilisTheHateTwisted.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Paradise Druid", 171, Rarity.UNCOMMON, mage.cards.p.ParadiseDruid.class)); + cards.add(new SetCardInfo("Parhelion II", "24s", Rarity.RARE, mage.cards.p.ParhelionII.class)); + cards.add(new SetCardInfo("Planewide Celebration", "172s", Rarity.RARE, mage.cards.p.PlanewideCelebration.class)); + cards.add(new SetCardInfo("Ral, Storm Conduit", "211p", Rarity.RARE, mage.cards.r.RalStormConduit.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Ral, Storm Conduit", "211s", Rarity.RARE, mage.cards.r.RalStormConduit.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Ral, Storm Conduit", "211s*", Rarity.RARE, mage.cards.r.RalStormConduit.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Ravnica at War", "28s", Rarity.RARE, mage.cards.r.RavnicaAtWar.class)); + cards.add(new SetCardInfo("Roalesk, Apex Hybrid", "213s", Rarity.MYTHIC, mage.cards.r.RoaleskApexHybrid.class)); + cards.add(new SetCardInfo("Role Reversal", "214s", Rarity.RARE, mage.cards.r.RoleReversal.class)); + cards.add(new SetCardInfo("Saheeli, Sublime Artificer", "234s", Rarity.UNCOMMON, mage.cards.s.SaheeliSublimeArtificer.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Saheeli, Sublime Artificer", "234s*", Rarity.UNCOMMON, mage.cards.s.SaheeliSublimeArtificer.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Samut, Tyrant Smasher", "235s", Rarity.UNCOMMON, mage.cards.s.SamutTyrantSmasher.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Samut, Tyrant Smasher", "235s*", Rarity.UNCOMMON, mage.cards.s.SamutTyrantSmasher.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Sarkhan the Masterless", "143s", Rarity.RARE, mage.cards.s.SarkhanTheMasterless.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Sarkhan the Masterless", "143s*", Rarity.RARE, mage.cards.s.SarkhanTheMasterless.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Silent Submersible", "66s", Rarity.RARE, mage.cards.s.SilentSubmersible.class)); + cards.add(new SetCardInfo("Single Combat", "30s", Rarity.RARE, mage.cards.s.SingleCombat.class)); + cards.add(new SetCardInfo("Solar Blaze", "216p", Rarity.RARE, mage.cards.s.SolarBlaze.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Solar Blaze", "216s", Rarity.RARE, mage.cards.s.SolarBlaze.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Sorin, Vengeful Bloodlord", "217p", Rarity.RARE, mage.cards.s.SorinVengefulBloodlord.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Sorin, Vengeful Bloodlord", "217s", Rarity.RARE, mage.cards.s.SorinVengefulBloodlord.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Sorin, Vengeful Bloodlord", "217s*", Rarity.RARE, mage.cards.s.SorinVengefulBloodlord.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Soul Diviner", "218p", Rarity.RARE, mage.cards.s.SoulDiviner.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Soul Diviner", "218s", Rarity.RARE, mage.cards.s.SoulDiviner.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Spark Double", "68p", Rarity.RARE, mage.cards.s.SparkDouble.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Spark Double", "68s", Rarity.RARE, mage.cards.s.SparkDouble.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Storrev, Devkarin Lich", "219p", Rarity.RARE, mage.cards.s.StorrevDevkarinLich.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Storrev, Devkarin Lich", "219s", Rarity.RARE, mage.cards.s.StorrevDevkarinLich.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Tamiyo, Collector of Tales", "220p", Rarity.RARE, mage.cards.t.TamiyoCollectorOfTales.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Tamiyo, Collector of Tales", "220s", Rarity.RARE, mage.cards.t.TamiyoCollectorOfTales.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Tamiyo, Collector of Tales", "220s*", Rarity.RARE, mage.cards.t.TamiyoCollectorOfTales.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Teferi, Time Raveler", "221p", Rarity.RARE, mage.cards.t.TeferiTimeRaveler.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Teferi, Time Raveler", "221s", Rarity.RARE, mage.cards.t.TeferiTimeRaveler.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Teferi, Time Raveler", "221s*", Rarity.RARE, mage.cards.t.TeferiTimeRaveler.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Teyo, the Shieldmage", "32s", Rarity.UNCOMMON, mage.cards.t.TeyoTheShieldmage.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Teyo, the Shieldmage", "32s*", Rarity.UNCOMMON, mage.cards.t.TeyoTheShieldmage.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("The Elderspell", "89p", Rarity.RARE, mage.cards.t.TheElderspell.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("The Elderspell", "89s", Rarity.RARE, mage.cards.t.TheElderspell.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("The Wanderer", "37s", Rarity.UNCOMMON, mage.cards.t.TheWanderer.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("The Wanderer", "37s*", Rarity.UNCOMMON, mage.cards.t.TheWanderer.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Tibalt, Rakish Instigator", "146s", Rarity.UNCOMMON, mage.cards.t.TibaltRakishInstigator.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Tibalt, Rakish Instigator", "146s*", Rarity.UNCOMMON, mage.cards.t.TibaltRakishInstigator.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Time Wipe", "223p", Rarity.RARE, mage.cards.t.TimeWipe.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Time Wipe", "223s", Rarity.RARE, mage.cards.t.TimeWipe.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Time Wipe", 223, Rarity.RARE, mage.cards.t.TimeWipe.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Tolsimir, Friend to Wolves", "224p", Rarity.RARE, mage.cards.t.TolsimirFriendToWolves.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Tolsimir, Friend to Wolves", "224s", Rarity.RARE, mage.cards.t.TolsimirFriendToWolves.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Tomik, Distinguished Advokist", "34p", Rarity.RARE, mage.cards.t.TomikDistinguishedAdvokist.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Tomik, Distinguished Advokist", "34s", Rarity.RARE, mage.cards.t.TomikDistinguishedAdvokist.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Ugin, the Ineffable", "2p", Rarity.RARE, mage.cards.u.UginTheIneffable.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Ugin, the Ineffable", "2s", Rarity.RARE, mage.cards.u.UginTheIneffable.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Ugin, the Ineffable", "2s*", Rarity.RARE, mage.cards.u.UginTheIneffable.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Vivien's Arkbow", "181s", Rarity.RARE, mage.cards.v.ViviensArkbow.class)); + cards.add(new SetCardInfo("Vivien, Champion of the Wilds", "180p", Rarity.RARE, mage.cards.v.VivienChampionOfTheWilds.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Vivien, Champion of the Wilds", "180s", Rarity.RARE, mage.cards.v.VivienChampionOfTheWilds.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Vivien, Champion of the Wilds", "180s*", Rarity.RARE, mage.cards.v.VivienChampionOfTheWilds.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Vraska, Swarm's Eminence", "236s", Rarity.UNCOMMON, mage.cards.v.VraskaSwarmsEminence.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Vraska, Swarm's Eminence", "236s*", Rarity.UNCOMMON, mage.cards.v.VraskaSwarmsEminence.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Widespread Brutality", "226p", Rarity.RARE, mage.cards.w.WidespreadBrutality.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Widespread Brutality", "226s", Rarity.RARE, mage.cards.w.WidespreadBrutality.class, NON_FULL_USE_VARIOUS)); + } +} diff --git a/Mage.Sets/src/mage/sets/WizardsOfTheCoastOnlineStore.java b/Mage.Sets/src/mage/sets/WizardsOfTheCoastOnlineStore.java new file mode 100644 index 00000000000..c117c01d714 --- /dev/null +++ b/Mage.Sets/src/mage/sets/WizardsOfTheCoastOnlineStore.java @@ -0,0 +1,25 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/pwos + */ +public class WizardsOfTheCoastOnlineStore extends ExpansionSet { + + private static final WizardsOfTheCoastOnlineStore instance = new WizardsOfTheCoastOnlineStore(); + + public static WizardsOfTheCoastOnlineStore getInstance() { + return instance; + } + + private WizardsOfTheCoastOnlineStore() { + super("Wizards of the Coast Online Store", "PWOS", ExpansionSet.buildDate(1999, 9, 4), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Serra Angel", 1, Rarity.RARE, mage.cards.s.SerraAngel.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/WizardsPlayNetwork2008.java b/Mage.Sets/src/mage/sets/WizardsPlayNetwork2008.java new file mode 100644 index 00000000000..f192ec8322e --- /dev/null +++ b/Mage.Sets/src/mage/sets/WizardsPlayNetwork2008.java @@ -0,0 +1,26 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/pwpn + */ +public class WizardsPlayNetwork2008 extends ExpansionSet { + + private static final WizardsPlayNetwork2008 instance = new WizardsPlayNetwork2008(); + + public static WizardsPlayNetwork2008 getInstance() { + return instance; + } + + private WizardsPlayNetwork2008() { + super("Wizards Play Network 2008", "PWPN", ExpansionSet.buildDate(2008, 10, 1), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Sprouting Thrinax", 21, Rarity.RARE, mage.cards.s.SproutingThrinax.class)); + cards.add(new SetCardInfo("Woolly Thoctar", 22, Rarity.RARE, mage.cards.w.WoollyThoctar.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/WizardsPlayNetwork2009.java b/Mage.Sets/src/mage/sets/WizardsPlayNetwork2009.java new file mode 100644 index 00000000000..52ca5d02dd0 --- /dev/null +++ b/Mage.Sets/src/mage/sets/WizardsPlayNetwork2009.java @@ -0,0 +1,32 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/pwp09 + */ +public class WizardsPlayNetwork2009 extends ExpansionSet { + + private static final WizardsPlayNetwork2009 instance = new WizardsPlayNetwork2009(); + + public static WizardsPlayNetwork2009 getInstance() { + return instance; + } + + private WizardsPlayNetwork2009() { + super("Wizards Play Network 2009", "PWP09", ExpansionSet.buildDate(2009, 1, 1), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Hellspark Elemental", 25, Rarity.RARE, mage.cards.h.HellsparkElemental.class)); + cards.add(new SetCardInfo("Kor Duelist", 32, Rarity.RARE, mage.cards.k.KorDuelist.class)); + cards.add(new SetCardInfo("Marisi's Twinclaws", 26, Rarity.RARE, mage.cards.m.MarisisTwinclaws.class)); + cards.add(new SetCardInfo("Mind Control", 30, Rarity.RARE, mage.cards.m.MindControl.class)); + cards.add(new SetCardInfo("Path to Exile", 24, Rarity.RARE, mage.cards.p.PathToExile.class)); + cards.add(new SetCardInfo("Rise from the Grave", 31, Rarity.RARE, mage.cards.r.RiseFromTheGrave.class)); + cards.add(new SetCardInfo("Slave of Bolas", 27, Rarity.RARE, mage.cards.s.SlaveOfBolas.class)); + cards.add(new SetCardInfo("Vampire Nighthawk", 33, Rarity.RARE, mage.cards.v.VampireNighthawk.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/WizardsPlayNetwork2010.java b/Mage.Sets/src/mage/sets/WizardsPlayNetwork2010.java new file mode 100644 index 00000000000..e76290fd14c --- /dev/null +++ b/Mage.Sets/src/mage/sets/WizardsPlayNetwork2010.java @@ -0,0 +1,34 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/pwp10 + */ +public class WizardsPlayNetwork2010 extends ExpansionSet { + + private static final WizardsPlayNetwork2010 instance = new WizardsPlayNetwork2010(); + + public static WizardsPlayNetwork2010 getInstance() { + return instance; + } + + private WizardsPlayNetwork2010() { + super("Wizards Play Network 2010", "PWP10", ExpansionSet.buildDate(2010, 1, 1), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Curse of Wizardry", 47, Rarity.RARE, mage.cards.c.CurseOfWizardry.class)); + cards.add(new SetCardInfo("Fling", 50, Rarity.RARE, mage.cards.f.Fling.class)); + cards.add(new SetCardInfo("Golem's Heart", 60, Rarity.RARE, mage.cards.g.GolemsHeart.class)); + cards.add(new SetCardInfo("Kor Firewalker", 36, Rarity.RARE, mage.cards.k.KorFirewalker.class)); + cards.add(new SetCardInfo("Leatherback Baloth", 37, Rarity.RARE, mage.cards.l.LeatherbackBaloth.class)); + cards.add(new SetCardInfo("Pathrazer of Ulamog", 46, Rarity.RARE, mage.cards.p.PathrazerOfUlamog.class)); + cards.add(new SetCardInfo("Plague Stinger", 59, Rarity.RARE, mage.cards.p.PlagueStinger.class)); + cards.add(new SetCardInfo("Skinrender", 63, Rarity.RARE, mage.cards.s.Skinrender.class)); + cards.add(new SetCardInfo("Sylvan Ranger", 51, Rarity.RARE, mage.cards.s.SylvanRanger.class)); + cards.add(new SetCardInfo("Syphon Mind", 40, Rarity.RARE, mage.cards.s.SyphonMind.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/WizardsPlayNetwork2011.java b/Mage.Sets/src/mage/sets/WizardsPlayNetwork2011.java new file mode 100644 index 00000000000..e628de4527e --- /dev/null +++ b/Mage.Sets/src/mage/sets/WizardsPlayNetwork2011.java @@ -0,0 +1,38 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/pwp11 + */ +public class WizardsPlayNetwork2011 extends ExpansionSet { + + private static final WizardsPlayNetwork2011 instance = new WizardsPlayNetwork2011(); + + public static WizardsPlayNetwork2011 getInstance() { + return instance; + } + + private WizardsPlayNetwork2011() { + super("Wizards Play Network 2011", "PWP11", ExpansionSet.buildDate(2011, 1, 1), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Auramancer", 77, Rarity.RARE, mage.cards.a.Auramancer.class)); + cards.add(new SetCardInfo("Bloodcrazed Neonate", 83, Rarity.RARE, mage.cards.b.BloodcrazedNeonate.class)); + cards.add(new SetCardInfo("Boneyard Wurm", 84, Rarity.RARE, mage.cards.b.BoneyardWurm.class)); + cards.add(new SetCardInfo("Circle of Flame", 78, Rarity.RARE, mage.cards.c.CircleOfFlame.class)); + cards.add(new SetCardInfo("Curse of the Bloody Tome", 80, Rarity.RARE, mage.cards.c.CurseOfTheBloodyTome.class)); + cards.add(new SetCardInfo("Fling", 69, Rarity.RARE, mage.cards.f.Fling.class)); + cards.add(new SetCardInfo("Master's Call", 64, Rarity.RARE, mage.cards.m.MastersCall.class)); + cards.add(new SetCardInfo("Maul Splicer", 72, Rarity.RARE, mage.cards.m.MaulSplicer.class)); + cards.add(new SetCardInfo("Plague Myr", 65, Rarity.RARE, mage.cards.p.PlagueMyr.class)); + cards.add(new SetCardInfo("Shrine of Burning Rage", 73, Rarity.RARE, mage.cards.s.ShrineOfBurningRage.class)); + cards.add(new SetCardInfo("Signal Pest", 66, Rarity.RARE, mage.cards.s.SignalPest.class)); + cards.add(new SetCardInfo("Sylvan Ranger", 70, Rarity.RARE, mage.cards.s.SylvanRanger.class)); + cards.add(new SetCardInfo("Tormented Soul", 76, Rarity.RARE, mage.cards.t.TormentedSoul.class)); + cards.add(new SetCardInfo("Vault Skirge", 71, Rarity.RARE, mage.cards.v.VaultSkirge.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/WizardsPlayNetwork2012.java b/Mage.Sets/src/mage/sets/WizardsPlayNetwork2012.java new file mode 100644 index 00000000000..2c732534d8d --- /dev/null +++ b/Mage.Sets/src/mage/sets/WizardsPlayNetwork2012.java @@ -0,0 +1,27 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/pwp12 + */ +public class WizardsPlayNetwork2012 extends ExpansionSet { + + private static final WizardsPlayNetwork2012 instance = new WizardsPlayNetwork2012(); + + public static WizardsPlayNetwork2012 getInstance() { + return instance; + } + + private WizardsPlayNetwork2012() { + super("Wizards Play Network 2012", "PWP12", ExpansionSet.buildDate(2012, 1, 1), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Curse of Thirst", 81, Rarity.RARE, mage.cards.c.CurseOfThirst.class)); + cards.add(new SetCardInfo("Gather the Townsfolk", 79, Rarity.RARE, mage.cards.g.GatherTheTownsfolk.class)); + cards.add(new SetCardInfo("Nearheath Stalker", 82, Rarity.RARE, mage.cards.n.NearheathStalker.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/WorldChampionshipDecks1997.java b/Mage.Sets/src/mage/sets/WorldChampionshipDecks1997.java new file mode 100644 index 00000000000..741ae62a98d --- /dev/null +++ b/Mage.Sets/src/mage/sets/WorldChampionshipDecks1997.java @@ -0,0 +1,145 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/wc97 + */ +public class WorldChampionshipDecks1997 extends ExpansionSet { + + private static final WorldChampionshipDecks1997 instance = new WorldChampionshipDecks1997(); + + public static WorldChampionshipDecks1997 getInstance() { + return instance; + } + + private WorldChampionshipDecks1997() { + super("World Championship Decks 1997", "WC97", ExpansionSet.buildDate(1997, 8, 13), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = true; + + cards.add(new SetCardInfo("Abduction", "pm30", Rarity.UNCOMMON, mage.cards.a.Abduction.class)); + cards.add(new SetCardInfo("Abeyance", "jk1", Rarity.RARE, mage.cards.a.Abeyance.class)); + cards.add(new SetCardInfo("Black Knight", "js143", Rarity.UNCOMMON, mage.cards.b.BlackKnight.class)); + cards.add(new SetCardInfo("Bounty of the Hunt", "sg85sb", Rarity.UNCOMMON, mage.cards.b.BountyOfTheHunt.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Bounty of the Hunt", "sg85", Rarity.UNCOMMON, mage.cards.b.BountyOfTheHunt.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Choking Sands", "js113", Rarity.COMMON, mage.cards.c.ChokingSands.class)); + cards.add(new SetCardInfo("Circle of Protection: Black", "jk17sb", Rarity.COMMON, mage.cards.c.CircleOfProtectionBlack.class)); + cards.add(new SetCardInfo("Circle of Protection: Red", "jk20sb", Rarity.COMMON, mage.cards.c.CircleOfProtectionRed.class)); + cards.add(new SetCardInfo("City of Brass", "pm413", Rarity.RARE, mage.cards.c.CityOfBrass.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("City of Brass", "js413", Rarity.RARE, mage.cards.c.CityOfBrass.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("City of Brass", "jk413", Rarity.RARE, mage.cards.c.CityOfBrass.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("City of Solitude", "sg102sb", Rarity.RARE, mage.cards.c.CityOfSolitude.class)); + cards.add(new SetCardInfo("Cloud Elemental", "pm29", Rarity.COMMON, mage.cards.c.CloudElemental.class)); + cards.add(new SetCardInfo("Contagion", "js45", Rarity.UNCOMMON, mage.cards.c.Contagion.class)); + cards.add(new SetCardInfo("Counterspell", "pm77", Rarity.COMMON, mage.cards.c.Counterspell.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Counterspell", "jk77", Rarity.COMMON, mage.cards.c.Counterspell.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Crumble", "sg287sb", Rarity.UNCOMMON, mage.cards.c.Crumble.class)); + cards.add(new SetCardInfo("Disenchant", "js26sb", Rarity.COMMON, mage.cards.d.Disenchant.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Disenchant", "jk26sb", Rarity.COMMON, mage.cards.d.Disenchant.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Disenchant", "jk26", Rarity.COMMON, mage.cards.d.Disenchant.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Disintegrate", "pm219", Rarity.COMMON, mage.cards.d.Disintegrate.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Disintegrate", "jk219", Rarity.COMMON, mage.cards.d.Disintegrate.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Disrupt", "pm37a", Rarity.COMMON, mage.cards.d.Disrupt.class)); + cards.add(new SetCardInfo("Dissipate", "pm61sb", Rarity.UNCOMMON, mage.cards.d.Dissipate.class)); + cards.add(new SetCardInfo("Dystopia", "js47sb", Rarity.RARE, mage.cards.d.Dystopia.class)); + cards.add(new SetCardInfo("Earthquake", "js223", Rarity.RARE, mage.cards.e.Earthquake.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Earthquake", "jk223sb", Rarity.RARE, mage.cards.e.Earthquake.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Ebony Charm", "js120sb", Rarity.COMMON, mage.cards.e.EbonyCharm.class)); + cards.add(new SetCardInfo("Emerald Charm", "sg106sb", Rarity.COMMON, mage.cards.e.EmeraldCharm.class)); + cards.add(new SetCardInfo("Exile", "js3sb", Rarity.RARE, mage.cards.e.Exile.class)); + cards.add(new SetCardInfo("Fallen Askari", "js59", Rarity.COMMON, mage.cards.f.FallenAskari.class)); + cards.add(new SetCardInfo("Force of Will", "pm28", Rarity.UNCOMMON, mage.cards.f.ForceOfWill.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Force of Will", "jk28", Rarity.UNCOMMON, mage.cards.f.ForceOfWill.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", "sg449", Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", "sg448", Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", "sg447", Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", "sg446", Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forsaken Wastes", "js125sb", Rarity.RARE, mage.cards.f.ForsakenWastes.class)); + cards.add(new SetCardInfo("Frenetic Efreet", "pm264", Rarity.RARE, mage.cards.f.FreneticEfreet.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Frenetic Efreet", "jk264", Rarity.RARE, mage.cards.f.FreneticEfreet.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Fyndhorn Elves", "sg244", Rarity.COMMON, mage.cards.f.FyndhornElves.class)); + cards.add(new SetCardInfo("Gemstone Mine", "js164", Rarity.UNCOMMON, mage.cards.g.GemstoneMine.class)); + cards.add(new SetCardInfo("Ghazban Ogre", "sg298", Rarity.COMMON, mage.cards.g.GhazbanOgre.class)); + cards.add(new SetCardInfo("Giant Growth", "sg299", Rarity.COMMON, mage.cards.g.GiantGrowth.class)); + cards.add(new SetCardInfo("Hammer of Bogardan", "jk181", Rarity.RARE, mage.cards.h.HammerOfBogardan.class)); + cards.add(new SetCardInfo("Harvest Wurm", "sg130", Rarity.COMMON, mage.cards.h.HarvestWurm.class)); + cards.add(new SetCardInfo("Heart of Yavimaya", "sg138", Rarity.RARE, mage.cards.h.HeartOfYavimaya.class)); + cards.add(new SetCardInfo("Honorable Passage", "js7sb", Rarity.UNCOMMON, mage.cards.h.HonorablePassage.class)); + cards.add(new SetCardInfo("Hydroblast", "pm94sb", Rarity.UNCOMMON, mage.cards.h.Hydroblast.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Hydroblast", "js94sb", Rarity.UNCOMMON, mage.cards.h.Hydroblast.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Impulse", "jk34", Rarity.COMMON, mage.cards.i.Impulse.class)); + cards.add(new SetCardInfo("Incinerate", "pm242", Rarity.COMMON, mage.cards.i.Incinerate.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Incinerate", "js242", Rarity.COMMON, mage.cards.i.Incinerate.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Incinerate", "jk242", Rarity.COMMON, mage.cards.i.Incinerate.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", "pm437", Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", "jk437", Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", "pm436", Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", "jk436", Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", "pm435", Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", "jk435", Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", "pm434", Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", "jk434", Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Jolrael's Centaur", "sg222", Rarity.COMMON, mage.cards.j.JolraelsCentaur.class)); + cards.add(new SetCardInfo("Kjeldoran Outpost", "jk139sb", Rarity.RARE, mage.cards.k.KjeldoranOutpost.class)); + cards.add(new SetCardInfo("Knight of Stromgald", "js171", Rarity.UNCOMMON, mage.cards.k.KnightOfStromgald.class)); + cards.add(new SetCardInfo("Knight of the Mists", "pm36sb", Rarity.COMMON, mage.cards.k.KnightOfTheMists.class)); + cards.add(new SetCardInfo("Lhurgoyf", "sg309", Rarity.RARE, mage.cards.l.Lhurgoyf.class)); + cards.add(new SetCardInfo("Man-o'-War", "pm37b", Rarity.COMMON, mage.cards.m.ManOWar.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Man-o'-War", "js37", Rarity.COMMON, mage.cards.m.ManOWar.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mind Stone", "pm153", Rarity.COMMON, mage.cards.m.MindStone.class)); + cards.add(new SetCardInfo("Mountain", "pm445", Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", "jk445", Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", "pm444", Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", "jk444", Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", "pm443", Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", "jk443", Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", "pm442", Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", "jk442", Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Necratog", "js76", Rarity.UNCOMMON, mage.cards.n.Necratog.class)); + cards.add(new SetCardInfo("Nekrataal", "js66", Rarity.UNCOMMON, mage.cards.n.Nekrataal.class)); + cards.add(new SetCardInfo("Nevinyrral's Disk", "pm391sb", Rarity.RARE, mage.cards.n.NevinyrralsDisk.class)); + cards.add(new SetCardInfo("Ophidian", "pm45", Rarity.COMMON, mage.cards.o.Ophidian.class)); + cards.add(new SetCardInfo("Phyrexian Furnace", "pm155sb", Rarity.UNCOMMON, mage.cards.p.PhyrexianFurnace.class)); + cards.add(new SetCardInfo("Pillage", "pm76sb", Rarity.UNCOMMON, mage.cards.p.Pillage.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Pillage", "jk76", Rarity.UNCOMMON, mage.cards.p.Pillage.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plains", "jk433", Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plains", "jk432", Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plains", "jk431", Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plains", "jk430", Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Political Trickery", "jk81sb", Rarity.RARE, mage.cards.p.PoliticalTrickery.class)); + cards.add(new SetCardInfo("Pyroblast", "pm262sb", Rarity.UNCOMMON, mage.cards.p.Pyroblast.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Pyroblast", "js262sb", Rarity.UNCOMMON, mage.cards.p.Pyroblast.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Pyroblast", "jk262sb", Rarity.UNCOMMON, mage.cards.p.Pyroblast.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Pyrokinesis", "pm78sb", Rarity.UNCOMMON, mage.cards.p.Pyrokinesis.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Pyrokinesis", "pm78", Rarity.UNCOMMON, mage.cards.p.Pyrokinesis.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Quirion Ranger", "sg117", Rarity.COMMON, mage.cards.q.QuirionRanger.class)); + cards.add(new SetCardInfo("River Boa", "sg118sb", Rarity.COMMON, mage.cards.r.RiverBoa.class)); + cards.add(new SetCardInfo("Rogue Elephant", "sg139", Rarity.COMMON, mage.cards.r.RogueElephant.class)); + cards.add(new SetCardInfo("Serrated Arrows", "pm110sb", Rarity.COMMON, mage.cards.s.SerratedArrows.class)); + cards.add(new SetCardInfo("Shadow Guildmage", "js140", Rarity.COMMON, mage.cards.s.ShadowGuildmage.class)); + cards.add(new SetCardInfo("Spectral Bears", "sg98", Rarity.UNCOMMON, mage.cards.s.SpectralBears.class)); + cards.add(new SetCardInfo("Sulfurous Springs", "js424", Rarity.RARE, mage.cards.s.SulfurousSprings.class)); + cards.add(new SetCardInfo("Suq'Ata Lancer", "pm96", Rarity.COMMON, mage.cards.s.SuqAtaLancer.class)); + cards.add(new SetCardInfo("Swamp", "js441", Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", "js440", Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", "js439", Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", "js438", Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swords to Plowshares", "jk54", Rarity.UNCOMMON, mage.cards.s.SwordsToPlowshares.class)); + cards.add(new SetCardInfo("Thawing Glaciers", "jk144", Rarity.RARE, mage.cards.t.ThawingGlaciers.class)); + cards.add(new SetCardInfo("Uktabi Orangutan", "sg123sb", Rarity.UNCOMMON, mage.cards.u.UktabiOrangutan.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Uktabi Orangutan", "sg123", Rarity.UNCOMMON, mage.cards.u.UktabiOrangutan.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Uktabi Orangutan", "js123", Rarity.UNCOMMON, mage.cards.u.UktabiOrangutan.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Underground River", "js426", Rarity.RARE, mage.cards.u.UndergroundRiver.class)); + cards.add(new SetCardInfo("Undiscovered Paradise", "pm167", Rarity.RARE, mage.cards.u.UndiscoveredParadise.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Undiscovered Paradise", "js167", Rarity.RARE, mage.cards.u.UndiscoveredParadise.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Undiscovered Paradise", "jk167", Rarity.RARE, mage.cards.u.UndiscoveredParadise.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Whirling Dervish", "sg341sb", Rarity.UNCOMMON, mage.cards.w.WhirlingDervish.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Whirling Dervish", "sg341", Rarity.UNCOMMON, mage.cards.w.WhirlingDervish.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Wildfire Emissary", "pm203", Rarity.UNCOMMON, mage.cards.w.WildfireEmissary.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Wildfire Emissary", "jk203", Rarity.UNCOMMON, mage.cards.w.WildfireEmissary.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Winter Orb", "sg408", Rarity.RARE, mage.cards.w.WinterOrb.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/WorldChampionshipDecks1998.java b/Mage.Sets/src/mage/sets/WorldChampionshipDecks1998.java new file mode 100644 index 00000000000..cd8507352e9 --- /dev/null +++ b/Mage.Sets/src/mage/sets/WorldChampionshipDecks1998.java @@ -0,0 +1,131 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/wc98 + */ +public class WorldChampionshipDecks1998 extends ExpansionSet { + + private static final WorldChampionshipDecks1998 instance = new WorldChampionshipDecks1998(); + + public static WorldChampionshipDecks1998 getInstance() { + return instance; + } + + private WorldChampionshipDecks1998() { + super("World Championship Decks 1998", "WC98", ExpansionSet.buildDate(1998, 8, 12), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = true; + + cards.add(new SetCardInfo("Abeyance", "bh1sb", Rarity.RARE, mage.cards.a.Abeyance.class)); + cards.add(new SetCardInfo("Armageddon", "bh7asb", Rarity.RARE, mage.cards.a.Armageddon.class)); + cards.add(new SetCardInfo("Aura of Silence", "bh7b", Rarity.UNCOMMON, mage.cards.a.AuraOfSilence.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Aura of Silence", "bh7bsb", Rarity.UNCOMMON, mage.cards.a.AuraOfSilence.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Ball Lightning", "br210", Rarity.RARE, mage.cards.b.BallLightning.class)); + cards.add(new SetCardInfo("Birds of Paradise", "bs280", Rarity.RARE, mage.cards.b.BirdsOfParadise.class)); + cards.add(new SetCardInfo("Boil", "bs165sb", Rarity.UNCOMMON, mage.cards.b.Boil.class)); + cards.add(new SetCardInfo("Bottle Gnomes", "br278sb", Rarity.UNCOMMON, mage.cards.b.BottleGnomes.class)); + cards.add(new SetCardInfo("Capsize", "rb55sb", Rarity.COMMON, mage.cards.c.Capsize.class)); + cards.add(new SetCardInfo("Cataclysm", "bh3", Rarity.RARE, mage.cards.c.Cataclysm.class)); + cards.add(new SetCardInfo("City of Brass", "bs112a", Rarity.RARE, mage.cards.c.CityOfBrass.class)); + cards.add(new SetCardInfo("Cloudchaser Eagle", "bs15", Rarity.COMMON, mage.cards.c.CloudchaserEagle.class)); + cards.add(new SetCardInfo("Counterspell", "rb57", Rarity.COMMON, mage.cards.c.Counterspell.class)); + cards.add(new SetCardInfo("Cursed Scroll", "bh281sb", Rarity.RARE, mage.cards.c.CursedScroll.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Cursed Scroll", "br281", Rarity.RARE, mage.cards.c.CursedScroll.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Disenchant", "bh16", Rarity.COMMON, mage.cards.d.Disenchant.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Disenchant", "bh16sb", Rarity.COMMON, mage.cards.d.Disenchant.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Dismiss", "rb58a", Rarity.UNCOMMON, mage.cards.d.Dismiss.class)); + cards.add(new SetCardInfo("Dissipate", "rb61", Rarity.UNCOMMON, mage.cards.d.Dissipate.class)); + cards.add(new SetCardInfo("Dread of Night", "bs130sb", Rarity.UNCOMMON, mage.cards.d.DreadOfNight.class)); + cards.add(new SetCardInfo("Dwarven Miner", "br169sb", Rarity.UNCOMMON, mage.cards.d.DwarvenMiner.class)); + cards.add(new SetCardInfo("Dwarven Thaumaturgist", "br98sba", Rarity.RARE, mage.cards.d.DwarvenThaumaturgist.class)); + cards.add(new SetCardInfo("Emerald Charm", "bs106sb", Rarity.COMMON, mage.cards.e.EmeraldCharm.class)); + cards.add(new SetCardInfo("Empyrial Armor", "bh13", Rarity.COMMON, mage.cards.e.EmpyrialArmor.class)); + cards.add(new SetCardInfo("Final Fortune", "br174sb", Rarity.RARE, mage.cards.f.FinalFortune.class)); + cards.add(new SetCardInfo("Fireblast", "br79", Rarity.COMMON, mage.cards.f.Fireblast.class)); + cards.add(new SetCardInfo("Firestorm", "br101sb", Rarity.RARE, mage.cards.f.Firestorm.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Firestorm", "bs101", Rarity.RARE, mage.cards.f.Firestorm.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forbid", "rb35", Rarity.UNCOMMON, mage.cards.f.Forbid.class)); + cards.add(new SetCardInfo("Force Spike", "rb58b", Rarity.COMMON, mage.cards.f.ForceSpike.class)); + cards.add(new SetCardInfo("Forest", "bs347", Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", "bs348", Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", "bs349", Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", "bs350", Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Gemstone Mine", "bs164", Rarity.UNCOMMON, mage.cards.g.GemstoneMine.class)); + cards.add(new SetCardInfo("Goblin Vandal", "br105", Rarity.COMMON, mage.cards.g.GoblinVandal.class)); + cards.add(new SetCardInfo("Grindstone", "rb290sb", Rarity.RARE, mage.cards.g.Grindstone.class)); + cards.add(new SetCardInfo("Hall of Gemstone", "bs221sb", Rarity.RARE, mage.cards.h.HallOfGemstone.class)); + cards.add(new SetCardInfo("Hammer of Bogardan", "br181", Rarity.RARE, mage.cards.h.HammerOfBogardan.class)); + cards.add(new SetCardInfo("Hydroblast", "rb72sb", Rarity.COMMON, mage.cards.h.Hydroblast.class)); + cards.add(new SetCardInfo("Impulse", "rb34", Rarity.COMMON, mage.cards.i.Impulse.class)); + cards.add(new SetCardInfo("Incinerate", "br184", Rarity.COMMON, mage.cards.i.Incinerate.class)); + cards.add(new SetCardInfo("Ironclaw Orcs", "br245", Rarity.COMMON, mage.cards.i.IronclawOrcs.class)); + cards.add(new SetCardInfo("Island", "rb335", Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", "rb336", Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", "rb337", Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", "rb338", Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Jackal Pup", "br183", Rarity.UNCOMMON, mage.cards.j.JackalPup.class)); + cards.add(new SetCardInfo("Karplusan Forest", "bs356", Rarity.RARE, mage.cards.k.KarplusanForest.class)); + cards.add(new SetCardInfo("Lobotomy", "bs267", Rarity.UNCOMMON, mage.cards.l.Lobotomy.class)); + cards.add(new SetCardInfo("Man-o'-War", "bs37", Rarity.COMMON, mage.cards.m.ManOWar.class)); + cards.add(new SetCardInfo("Mana Leak", "rb36", Rarity.COMMON, mage.cards.m.ManaLeak.class)); + cards.add(new SetCardInfo("Memory Lapse", "rb32", Rarity.COMMON, mage.cards.m.MemoryLapse.class)); + cards.add(new SetCardInfo("Mogg Fanatic", "br190", Rarity.COMMON, mage.cards.m.MoggFanatic.class)); + cards.add(new SetCardInfo("Mogg Flunkies", "br92", Rarity.COMMON, mage.cards.m.MoggFlunkies.class)); + cards.add(new SetCardInfo("Mountain", "br343", Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", "br344", Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", "br345", Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", "br346", Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Nekrataal", "bs66", Rarity.UNCOMMON, mage.cards.n.Nekrataal.class)); + cards.add(new SetCardInfo("Nevinyrral's Disk", "rb391", Rarity.RARE, mage.cards.n.NevinyrralsDisk.class)); + cards.add(new SetCardInfo("Nomads en-Kor", "bh9", Rarity.COMMON, mage.cards.n.NomadsEnKor.class)); + cards.add(new SetCardInfo("Orcish Settlers", "bs112b", Rarity.UNCOMMON, mage.cards.o.OrcishSettlers.class)); + cards.add(new SetCardInfo("Paladin en-Vec", "bh12", Rarity.RARE, mage.cards.p.PaladinEnVec.class)); + cards.add(new SetCardInfo("Phyrexian Furnace", "bs155sb", Rarity.UNCOMMON, mage.cards.p.PhyrexianFurnace.class)); + cards.add(new SetCardInfo("Plains", "bh331", Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plains", "bh332", Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plains", "bh333", Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plains", "bh334", Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Pyroblast", "br213sb", Rarity.COMMON, mage.cards.p.Pyroblast.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Pyroblast", "bs213sb", Rarity.COMMON, mage.cards.p.Pyroblast.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Quicksand", "rb166", Rarity.UNCOMMON, mage.cards.q.Quicksand.class)); + cards.add(new SetCardInfo("Rainbow Efreet", "rb41", Rarity.RARE, mage.cards.r.RainbowEfreet.class)); + cards.add(new SetCardInfo("Recurring Nightmare", "bs72", Rarity.RARE, mage.cards.r.RecurringNightmare.class)); + cards.add(new SetCardInfo("Reflecting Pool", "bs322", Rarity.RARE, mage.cards.r.ReflectingPool.class)); + cards.add(new SetCardInfo("Scroll Rack", "bs308", Rarity.RARE, mage.cards.s.ScrollRack.class)); + cards.add(new SetCardInfo("Sea Sprite", "rb38sb", Rarity.UNCOMMON, mage.cards.s.SeaSprite.class)); + cards.add(new SetCardInfo("Shattering Pulse", "br102sb", Rarity.COMMON, mage.cards.s.ShatteringPulse.class)); + cards.add(new SetCardInfo("Shock", "br98b", Rarity.COMMON, mage.cards.s.Shock.class)); + cards.add(new SetCardInfo("Soltari Monk", "bh45", Rarity.UNCOMMON, mage.cards.s.SoltariMonk.class)); + cards.add(new SetCardInfo("Soltari Priest", "bh46", Rarity.UNCOMMON, mage.cards.s.SoltariPriest.class)); + cards.add(new SetCardInfo("Soltari Visionary", "bh20", Rarity.COMMON, mage.cards.s.SoltariVisionary.class)); + cards.add(new SetCardInfo("Soul Warden", "bh21", Rarity.COMMON, mage.cards.s.SoulWarden.class)); + cards.add(new SetCardInfo("Spike Feeder", "bs118", Rarity.UNCOMMON, mage.cards.s.SpikeFeeder.class)); + cards.add(new SetCardInfo("Spike Weaver", "bs128", Rarity.RARE, mage.cards.s.SpikeWeaver.class)); + cards.add(new SetCardInfo("Spirit Link", "bh64sb", Rarity.UNCOMMON, mage.cards.s.SpiritLink.class)); + cards.add(new SetCardInfo("Spirit of the Night", "bs146", Rarity.RARE, mage.cards.s.SpiritOfTheNight.class)); + cards.add(new SetCardInfo("Stalking Stones", "rb327", Rarity.UNCOMMON, mage.cards.s.StalkingStones.class)); + cards.add(new SetCardInfo("Staunch Defenders", "bs49sb", Rarity.UNCOMMON, mage.cards.s.StaunchDefenders.class)); + cards.add(new SetCardInfo("Survival of the Fittest", "bs129", Rarity.RARE, mage.cards.s.SurvivalOfTheFittest.class)); + cards.add(new SetCardInfo("Swamp", "bs340", Rarity.LAND, mage.cards.basiclands.Swamp.class)); + cards.add(new SetCardInfo("Thrull Surgeon", "bs76", Rarity.COMMON, mage.cards.t.ThrullSurgeon.class)); + cards.add(new SetCardInfo("Tithe", "bh23a", Rarity.RARE, mage.cards.t.Tithe.class)); + cards.add(new SetCardInfo("Tradewind Rider", "bs98", Rarity.RARE, mage.cards.t.TradewindRider.class)); + cards.add(new SetCardInfo("Uktabi Orangutan", "bs123", Rarity.UNCOMMON, mage.cards.u.UktabiOrangutan.class)); + cards.add(new SetCardInfo("Underground River", "bs362", Rarity.RARE, mage.cards.u.UndergroundRiver.class)); + cards.add(new SetCardInfo("Undiscovered Paradise", "bs167", Rarity.RARE, mage.cards.u.UndiscoveredParadise.class)); + cards.add(new SetCardInfo("Verdant Force", "bs263", Rarity.RARE, mage.cards.v.VerdantForce.class)); + cards.add(new SetCardInfo("Viashino Sandstalker", "br100", Rarity.UNCOMMON, mage.cards.v.ViashinoSandstalker.class)); + cards.add(new SetCardInfo("Volrath's Stronghold", "bs143", Rarity.RARE, mage.cards.v.VolrathsStronghold.class)); + cards.add(new SetCardInfo("Wall of Blossoms", "bs125", Rarity.UNCOMMON, mage.cards.w.WallOfBlossoms.class)); + cards.add(new SetCardInfo("Wall of Roots", "bs253", Rarity.COMMON, mage.cards.w.WallOfRoots.class)); + cards.add(new SetCardInfo("Warrior en-Kor", "bh23b", Rarity.UNCOMMON, mage.cards.w.WarriorEnKor.class)); + cards.add(new SetCardInfo("Wasteland", "br330", Rarity.UNCOMMON, mage.cards.w.Wasteland.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Wasteland", "rb330sb", Rarity.UNCOMMON, mage.cards.w.Wasteland.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Whispers of the Muse", "rb103", Rarity.UNCOMMON, mage.cards.w.WhispersOfTheMuse.class)); + cards.add(new SetCardInfo("White Knight", "bh68", Rarity.UNCOMMON, mage.cards.w.WhiteKnight.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/WorldChampionshipDecks1999.java b/Mage.Sets/src/mage/sets/WorldChampionshipDecks1999.java new file mode 100644 index 00000000000..6dcc0221d2e --- /dev/null +++ b/Mage.Sets/src/mage/sets/WorldChampionshipDecks1999.java @@ -0,0 +1,124 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/wc99 + */ +public class WorldChampionshipDecks1999 extends ExpansionSet { + + private static final WorldChampionshipDecks1999 instance = new WorldChampionshipDecks1999(); + + public static WorldChampionshipDecks1999 getInstance() { + return instance; + } + + private WorldChampionshipDecks1999() { + super("World Championship Decks 1999", "WC99", ExpansionSet.buildDate(1999, 8, 4), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = true; + + cards.add(new SetCardInfo("Albino Troll", "ml231", Rarity.UNCOMMON, mage.cards.a.AlbinoTroll.class)); + cards.add(new SetCardInfo("Ancient Tomb", "mlp315", Rarity.UNCOMMON, mage.cards.a.AncientTomb.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Ancient Tomb", "kb315", Rarity.UNCOMMON, mage.cards.a.AncientTomb.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Arc Lightning", "mlp174sb", Rarity.COMMON, mage.cards.a.ArcLightning.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Arc Lightning", "mlp174", Rarity.COMMON, mage.cards.a.ArcLightning.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Avalanche Riders", "mlp74", Rarity.UNCOMMON, mage.cards.a.AvalancheRiders.class)); + cards.add(new SetCardInfo("Boil", "kb165sb", Rarity.UNCOMMON, mage.cards.b.Boil.class)); + cards.add(new SetCardInfo("Bottle Gnomes", "js278sb", Rarity.UNCOMMON, mage.cards.b.BottleGnomes.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Bottle Gnomes", "js278", Rarity.UNCOMMON, mage.cards.b.BottleGnomes.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Carrion Beetles", "js122sb", Rarity.COMMON, mage.cards.c.CarrionBeetles.class)); + cards.add(new SetCardInfo("Choke", "ml219sb", Rarity.UNCOMMON, mage.cards.c.Choke.class)); + cards.add(new SetCardInfo("City of Traitors", "kb143a", Rarity.RARE, mage.cards.c.CityOfTraitors.class)); + cards.add(new SetCardInfo("Constant Mists", "ml104sb", Rarity.UNCOMMON, mage.cards.c.ConstantMists.class)); + cards.add(new SetCardInfo("Corpse Dance", "js116", Rarity.RARE, mage.cards.c.CorpseDance.class)); + cards.add(new SetCardInfo("Covetous Dragon", "kb80", Rarity.RARE, mage.cards.c.CovetousDragon.class)); + cards.add(new SetCardInfo("Cursed Scroll", "mlp281", Rarity.RARE, mage.cards.c.CursedScroll.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Cursed Scroll", "ml281", Rarity.RARE, mage.cards.c.CursedScroll.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Cursed Scroll", "kb281", Rarity.RARE, mage.cards.c.CursedScroll.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Cursed Scroll", "js281", Rarity.RARE, mage.cards.c.CursedScroll.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Dark Ritual", "js127", Rarity.COMMON, mage.cards.d.DarkRitual.class)); + cards.add(new SetCardInfo("Diabolic Edict", "js128", Rarity.COMMON, mage.cards.d.DiabolicEdict.class)); + cards.add(new SetCardInfo("Duress", "js132", Rarity.COMMON, mage.cards.d.Duress.class)); + cards.add(new SetCardInfo("Earthquake", "kb173sb", Rarity.RARE, mage.cards.e.Earthquake.class)); + cards.add(new SetCardInfo("Elvish Lyrist", "ml248", Rarity.COMMON, mage.cards.e.ElvishLyrist.class)); + cards.add(new SetCardInfo("Evincar's Justice", "js134sb", Rarity.COMMON, mage.cards.e.EvincarsJustice.class)); + cards.add(new SetCardInfo("Fire Diamond", "kb284", Rarity.UNCOMMON, mage.cards.f.FireDiamond.class)); + cards.add(new SetCardInfo("Fireslinger", "mlp173sb", Rarity.COMMON, mage.cards.f.Fireslinger.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Fireslinger", "mlp173", Rarity.COMMON, mage.cards.f.Fireslinger.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Flowstone Flood", "mlp83sb", Rarity.UNCOMMON, mage.cards.f.FlowstoneFlood.class)); + cards.add(new SetCardInfo("Forest", "ml349", Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", "ml347b", Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", "ml347a", Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Gaea's Cradle", "ml321", Rarity.RARE, mage.cards.g.GaeasCradle.class)); + cards.add(new SetCardInfo("Ghitu Encampment", "mlp141", Rarity.UNCOMMON, mage.cards.g.GhituEncampment.class)); + cards.add(new SetCardInfo("Giant Growth", "ml233", Rarity.COMMON, mage.cards.g.GiantGrowth.class)); + cards.add(new SetCardInfo("Grim Monolith", "kb126", Rarity.RARE, mage.cards.g.GrimMonolith.class)); + cards.add(new SetCardInfo("Hammer of Bogardan", "mlp188", Rarity.RARE, mage.cards.h.HammerOfBogardan.class)); + cards.add(new SetCardInfo("Hatred", "js64sb", Rarity.RARE, mage.cards.h.Hatred.class)); + cards.add(new SetCardInfo("Hurricane", "ml237sb", Rarity.RARE, mage.cards.h.Hurricane.class)); + cards.add(new SetCardInfo("Jackal Pup", "mlp183", Rarity.UNCOMMON, mage.cards.j.JackalPup.class)); + cards.add(new SetCardInfo("Karn, Silver Golem", "kb298", Rarity.RARE, mage.cards.k.KarnSilverGolem.class)); + cards.add(new SetCardInfo("Llanowar Elves", "ml239", Rarity.COMMON, mage.cards.l.LlanowarElves.class)); + cards.add(new SetCardInfo("Masticore", "kb143b", Rarity.RARE, mage.cards.m.Masticore.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Masticore", "mlp134sb", Rarity.RARE, mage.cards.m.Masticore.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mishra's Helix", "kb302sb", Rarity.RARE, mage.cards.m.MishrasHelix.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mishra's Helix", "kb302", Rarity.RARE, mage.cards.m.MishrasHelix.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mogg Fanatic", "mlp190", Rarity.COMMON, mage.cards.m.MoggFanatic.class)); + cards.add(new SetCardInfo("Mountain", "mlp346b", Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", "mlp346a", Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", "kb346", Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", "mlp344", Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", "kb344", Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", "kb343", Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Overrun", "ml243sb", Rarity.UNCOMMON, mage.cards.o.Overrun.class)); + cards.add(new SetCardInfo("Perish", "js147sb", Rarity.UNCOMMON, mage.cards.p.Perish.class)); + cards.add(new SetCardInfo("Persecute", "js146sb", Rarity.RARE, mage.cards.p.Persecute.class)); + cards.add(new SetCardInfo("Phyrexian Negator", "js65sb", Rarity.RARE, mage.cards.p.PhyrexianNegator.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Phyrexian Negator", "js65", Rarity.RARE, mage.cards.p.PhyrexianNegator.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Phyrexian Plaguelord", "js62", Rarity.RARE, mage.cards.p.PhyrexianPlaguelord.class)); + cards.add(new SetCardInfo("Phyrexian Processor", "kb306sb", Rarity.RARE, mage.cards.p.PhyrexianProcessor.class)); + cards.add(new SetCardInfo("Pillage", "mlp198", Rarity.UNCOMMON, mage.cards.p.Pillage.class)); + cards.add(new SetCardInfo("Pouncing Jaguar", "ml269", Rarity.COMMON, mage.cards.p.PouncingJaguar.class)); + cards.add(new SetCardInfo("Powder Keg", "js136a", Rarity.RARE, mage.cards.p.PowderKeg.class)); + cards.add(new SetCardInfo("Rack and Ruin", "kb89sb", Rarity.UNCOMMON, mage.cards.r.RackAndRuin.class)); + cards.add(new SetCardInfo("Rancor", "ml110", Rarity.COMMON, mage.cards.r.Rancor.class)); + cards.add(new SetCardInfo("Rapid Decay", "js67sb", Rarity.RARE, mage.cards.r.RapidDecay.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Rapid Decay", "js67", Rarity.RARE, mage.cards.r.RapidDecay.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Ravenous Rats", "js68", Rarity.COMMON, mage.cards.r.RavenousRats.class)); + cards.add(new SetCardInfo("River Boa", "ml249", Rarity.UNCOMMON, mage.cards.r.RiverBoa.class)); + cards.add(new SetCardInfo("Scald", "mlp211sb", Rarity.UNCOMMON, mage.cards.s.Scald.class)); + cards.add(new SetCardInfo("Shattering Pulse", "mlp102sb", Rarity.COMMON, mage.cards.s.ShatteringPulse.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Shattering Pulse", "kb102sb", Rarity.COMMON, mage.cards.s.ShatteringPulse.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Shock", "mlp98", Rarity.COMMON, mage.cards.s.Shock.class)); + cards.add(new SetCardInfo("Spawning Pool", "js142", Rarity.UNCOMMON, mage.cards.s.SpawningPool.class)); + cards.add(new SetCardInfo("Spellshock", "kb104sb", Rarity.UNCOMMON, mage.cards.s.Spellshock.class)); + cards.add(new SetCardInfo("Sphere of Resistance", "js139sb", Rarity.RARE, mage.cards.s.SphereOfResistance.class)); + cards.add(new SetCardInfo("Stone Rain", "mlp209", Rarity.COMMON, mage.cards.s.StoneRain.class)); + cards.add(new SetCardInfo("Stromgald Cabal", "js157sb", Rarity.RARE, mage.cards.s.StromgaldCabal.class)); + cards.add(new SetCardInfo("Stupor", "js158", Rarity.UNCOMMON, mage.cards.s.Stupor.class)); + cards.add(new SetCardInfo("Swamp", "js340b", Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", "js340a", Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", "js339", Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Temporal Aperture", "kb310", Rarity.RARE, mage.cards.t.TemporalAperture.class)); + cards.add(new SetCardInfo("Thran Dynamo", "kb139", Rarity.UNCOMMON, mage.cards.t.ThranDynamo.class)); + cards.add(new SetCardInfo("Thran Foundry", "mlp140sb", Rarity.UNCOMMON, mage.cards.t.ThranFoundry.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Thran Foundry", "ml140sb", Rarity.UNCOMMON, mage.cards.t.ThranFoundry.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Ticking Gnomes", "js136b", Rarity.UNCOMMON, mage.cards.t.TickingGnomes.class)); + cards.add(new SetCardInfo("Treetop Village", "ml143", Rarity.UNCOMMON, mage.cards.t.TreetopVillage.class)); + cards.add(new SetCardInfo("Uktabi Orangutan", "ml260sb", Rarity.UNCOMMON, mage.cards.u.UktabiOrangutan.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Uktabi Orangutan", "ml260", Rarity.UNCOMMON, mage.cards.u.UktabiOrangutan.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Vampiric Tutor", "js161", Rarity.RARE, mage.cards.v.VampiricTutor.class)); + cards.add(new SetCardInfo("Volrath's Stronghold", "js143", Rarity.RARE, mage.cards.v.VolrathsStronghold.class)); + cards.add(new SetCardInfo("Voltaic Key", "kb314", Rarity.UNCOMMON, mage.cards.v.VoltaicKey.class)); + cards.add(new SetCardInfo("Wasteland", "mlp330", Rarity.UNCOMMON, mage.cards.w.Wasteland.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Wasteland", "js330", Rarity.UNCOMMON, mage.cards.w.Wasteland.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Weatherseed Treefolk", "ml116sb", Rarity.RARE, mage.cards.w.WeatherseedTreefolk.class)); + cards.add(new SetCardInfo("Wild Dogs", "ml284", Rarity.COMMON, mage.cards.w.WildDogs.class)); + cards.add(new SetCardInfo("Wildfire", "kb228", Rarity.RARE, mage.cards.w.Wildfire.class)); + cards.add(new SetCardInfo("Worn Powerstone", "kb318", Rarity.UNCOMMON, mage.cards.w.WornPowerstone.class)); + cards.add(new SetCardInfo("Yawgmoth's Will", "js171", Rarity.RARE, mage.cards.y.YawgmothsWill.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/WorldChampionshipDecks2000.java b/Mage.Sets/src/mage/sets/WorldChampionshipDecks2000.java new file mode 100644 index 00000000000..03f9859ff17 --- /dev/null +++ b/Mage.Sets/src/mage/sets/WorldChampionshipDecks2000.java @@ -0,0 +1,131 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/wc00 + */ +public class WorldChampionshipDecks2000 extends ExpansionSet { + + private static final WorldChampionshipDecks2000 instance = new WorldChampionshipDecks2000(); + + public static WorldChampionshipDecks2000 getInstance() { + return instance; + } + + private WorldChampionshipDecks2000() { + super("World Championship Decks 2000", "WC00", ExpansionSet.buildDate(2000, 8, 2), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = true; + + cards.add(new SetCardInfo("Absolute Law", "nl2sba", Rarity.UNCOMMON, mage.cards.a.AbsoluteLaw.class)); + cards.add(new SetCardInfo("Academy Rector", "nl1", Rarity.RARE, mage.cards.a.AcademyRector.class)); + cards.add(new SetCardInfo("Adarkar Wastes", "tvdl319", Rarity.RARE, mage.cards.a.AdarkarWastes.class)); + cards.add(new SetCardInfo("Annul", "jf59sb", Rarity.COMMON, mage.cards.a.Annul.class)); + cards.add(new SetCardInfo("Arc Lightning", "jk174", Rarity.COMMON, mage.cards.a.ArcLightning.class)); + cards.add(new SetCardInfo("Armageddon", "nl4sb", Rarity.RARE, mage.cards.a.Armageddon.class)); + cards.add(new SetCardInfo("Ashnod's Altar", "nl274", Rarity.UNCOMMON, mage.cards.a.AshnodsAltar.class)); + cards.add(new SetCardInfo("Attunement", "tvdl61", Rarity.RARE, mage.cards.a.Attunement.class)); + cards.add(new SetCardInfo("Aura Fracture", "nl2sbb", Rarity.COMMON, mage.cards.a.AuraFracture.class)); + cards.add(new SetCardInfo("Avalanche Riders", "jk74", Rarity.UNCOMMON, mage.cards.a.AvalancheRiders.class)); + cards.add(new SetCardInfo("Birds of Paradise", "nl217", Rarity.RARE, mage.cards.b.BirdsOfParadise.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Birds of Paradise", "jk217", Rarity.RARE, mage.cards.b.BirdsOfParadise.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Blastoderm", "jk102", Rarity.COMMON, mage.cards.b.Blastoderm.class)); + cards.add(new SetCardInfo("Blaze", "nl168sb", Rarity.UNCOMMON, mage.cards.b.Blaze.class)); + cards.add(new SetCardInfo("Boil", "jk169sb", Rarity.UNCOMMON, mage.cards.b.Boil.class)); + cards.add(new SetCardInfo("Brainstorm", "jf61", Rarity.COMMON, mage.cards.b.Brainstorm.class)); + cards.add(new SetCardInfo("Brushland", "nl320", Rarity.RARE, mage.cards.b.Brushland.class)); + cards.add(new SetCardInfo("Chill", "tvdl60sb", Rarity.UNCOMMON, mage.cards.c.Chill.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Chill", "jf60sb", Rarity.UNCOMMON, mage.cards.c.Chill.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Circle of Protection: Black", "tvdl8sb", Rarity.COMMON, mage.cards.c.CircleOfProtectionBlack.class)); + cards.add(new SetCardInfo("City of Brass", "nl321", Rarity.RARE, mage.cards.c.CityOfBrass.class)); + cards.add(new SetCardInfo("Confiscate", "nl66", Rarity.UNCOMMON, mage.cards.c.Confiscate.class)); + cards.add(new SetCardInfo("Counterspell", "tvdl61b", Rarity.COMMON, mage.cards.c.Counterspell.class)); + cards.add(new SetCardInfo("Creeping Mold", "jk220sb", Rarity.UNCOMMON, mage.cards.c.CreepingMold.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Creeping Mold", "jk220", Rarity.UNCOMMON, mage.cards.c.CreepingMold.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Crumbling Sanctuary", "jf292", Rarity.RARE, mage.cards.c.CrumblingSanctuary.class)); + cards.add(new SetCardInfo("Crystal Vein", "jf322", Rarity.UNCOMMON, mage.cards.c.CrystalVein.class)); + cards.add(new SetCardInfo("Cursed Totem", "tvdl278sb", Rarity.RARE, mage.cards.c.CursedTotem.class)); + cards.add(new SetCardInfo("Daze", "tvdl30sb", Rarity.COMMON, mage.cards.d.Daze.class)); + cards.add(new SetCardInfo("Defense Grid", "nl125sb", Rarity.RARE, mage.cards.d.DefenseGrid.class)); + cards.add(new SetCardInfo("Dust Bowl", "jk316", Rarity.RARE, mage.cards.d.DustBowl.class)); + cards.add(new SetCardInfo("Energy Field", "tvdl73", Rarity.RARE, mage.cards.e.EnergyField.class)); + cards.add(new SetCardInfo("Energy Flux", "nl78sb", Rarity.UNCOMMON, mage.cards.e.EnergyFlux.class)); + cards.add(new SetCardInfo("Enlightened Tutor", "tvdl19", Rarity.UNCOMMON, mage.cards.e.EnlightenedTutor.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Enlightened Tutor", "nl19", Rarity.UNCOMMON, mage.cards.e.EnlightenedTutor.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Erase", "tvdl7sb", Rarity.COMMON, mage.cards.e.Erase.class)); + cards.add(new SetCardInfo("Fecundity", "nl251", Rarity.UNCOMMON, mage.cards.f.Fecundity.class)); + cards.add(new SetCardInfo("Flameshot", "jk90sb", Rarity.UNCOMMON, mage.cards.f.Flameshot.class)); + cards.add(new SetCardInfo("Forest", "nl347", Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", "jk347", Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Frantic Search", "tvdl32", Rarity.COMMON, mage.cards.f.FranticSearch.class)); + cards.add(new SetCardInfo("Grim Monolith", "jf126", Rarity.RARE, mage.cards.g.GrimMonolith.class)); + cards.add(new SetCardInfo("Heart of Ramos", "nl296sb", Rarity.RARE, mage.cards.h.HeartOfRamos.class)); + cards.add(new SetCardInfo("High Market", "nl320b", Rarity.RARE, mage.cards.h.HighMarket.class)); + cards.add(new SetCardInfo("Island", "tvdl335", Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", "jf335", Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Karplusan Forest", "jk326", Rarity.RARE, mage.cards.k.KarplusanForest.class)); + cards.add(new SetCardInfo("Light of Day", "nl29sb", Rarity.UNCOMMON, mage.cards.l.LightOfDay.class)); + cards.add(new SetCardInfo("Lilting Refrain", "tvdl83sb", Rarity.UNCOMMON, mage.cards.l.LiltingRefrain.class)); + cards.add(new SetCardInfo("Llanowar Elves", "nl239", Rarity.COMMON, mage.cards.l.LlanowarElves.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Llanowar Elves", "jk239", Rarity.COMMON, mage.cards.l.LlanowarElves.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Masticore", "jk134sb", Rarity.RARE, mage.cards.m.Masticore.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Masticore", "jk134", Rarity.RARE, mage.cards.m.Masticore.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Masticore", "jf134", Rarity.RARE, mage.cards.m.Masticore.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Meekstone", "nl299sb", Rarity.RARE, mage.cards.m.Meekstone.class)); + cards.add(new SetCardInfo("Metalworker", "jf135", Rarity.RARE, mage.cards.m.Metalworker.class)); + cards.add(new SetCardInfo("Miscalculation", "jf36sb", Rarity.COMMON, mage.cards.m.Miscalculation.class)); + cards.add(new SetCardInfo("Mishra's Helix", "jf302sb", Rarity.RARE, mage.cards.m.MishrasHelix.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mishra's Helix", "jf302", Rarity.RARE, mage.cards.m.MishrasHelix.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", "jk343", Rarity.LAND, mage.cards.basiclands.Mountain.class)); + cards.add(new SetCardInfo("Mystical Tutor", "tvdl83", Rarity.UNCOMMON, mage.cards.m.MysticalTutor.class)); + cards.add(new SetCardInfo("Opalescence", "tvdl13", Rarity.RARE, mage.cards.o.Opalescence.class)); + cards.add(new SetCardInfo("Parallax Tide", "tvdl37", Rarity.RARE, mage.cards.p.ParallaxTide.class)); + cards.add(new SetCardInfo("Parallax Wave", "tvdl17", Rarity.RARE, mage.cards.p.ParallaxWave.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Parallax Wave", "nl17sb", Rarity.RARE, mage.cards.p.ParallaxWave.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Pattern of Rebirth", "nl115", Rarity.RARE, mage.cards.p.PatternOfRebirth.class)); + cards.add(new SetCardInfo("Phyrexian Colossus", "jf305", Rarity.RARE, mage.cards.p.PhyrexianColossus.class)); + cards.add(new SetCardInfo("Phyrexian Processor", "nl306sb", Rarity.RARE, mage.cards.p.PhyrexianProcessor.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Phyrexian Processor", "jk306sb", Rarity.RARE, mage.cards.p.PhyrexianProcessor.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Phyrexian Processor", "jk306", Rarity.RARE, mage.cards.p.PhyrexianProcessor.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Phyrexian Processor", "jf306b", Rarity.RARE, mage.cards.p.PhyrexianProcessor.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Phyrexian Tower", "nl322", Rarity.RARE, mage.cards.p.PhyrexianTower.class)); + cards.add(new SetCardInfo("Plains", "tvdl331", Rarity.LAND, mage.cards.basiclands.Plains.class)); + cards.add(new SetCardInfo("Plow Under", "jk117", Rarity.RARE, mage.cards.p.PlowUnder.class)); + cards.add(new SetCardInfo("Priest of Titania", "nl270", Rarity.COMMON, mage.cards.p.PriestOfTitania.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Priest of Titania", "jk270", Rarity.COMMON, mage.cards.p.PriestOfTitania.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Rack and Ruin", "jk89sb", Rarity.UNCOMMON, mage.cards.r.RackAndRuin.class)); + cards.add(new SetCardInfo("Replenish", "tvdl15", Rarity.RARE, mage.cards.r.Replenish.class)); + cards.add(new SetCardInfo("Rishadan Port", "tvdl324", Rarity.RARE, mage.cards.r.RishadanPort.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Rishadan Port", "jk324", Rarity.RARE, mage.cards.r.RishadanPort.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Rishadan Port", "jf324", Rarity.RARE, mage.cards.r.RishadanPort.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Rising Waters", "jf38sb", Rarity.RARE, mage.cards.r.RisingWaters.class)); + cards.add(new SetCardInfo("Saprazzan Skerry", "jf328", Rarity.COMMON, mage.cards.s.SaprazzanSkerry.class)); + cards.add(new SetCardInfo("Saproling Burst", "jk113", Rarity.RARE, mage.cards.s.SaprolingBurst.class)); + cards.add(new SetCardInfo("Saproling Cluster", "nl114", Rarity.RARE, mage.cards.s.SaprolingCluster.class)); + cards.add(new SetCardInfo("Seal of Cleansing", "tvdl18sb", Rarity.COMMON, mage.cards.s.SealOfCleansing.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Seal of Cleansing", "tvdl18", Rarity.COMMON, mage.cards.s.SealOfCleansing.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Seal of Cleansing", "nl18sb", Rarity.COMMON, mage.cards.s.SealOfCleansing.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Seal of Removal", "tvdl42", Rarity.COMMON, mage.cards.s.SealOfRemoval.class)); + cards.add(new SetCardInfo("Serra Avatar", "nl45", Rarity.RARE, mage.cards.s.SerraAvatar.class)); + cards.add(new SetCardInfo("Sky Diamond", "tvdl311", Rarity.UNCOMMON, mage.cards.s.SkyDiamond.class)); + cards.add(new SetCardInfo("Snake Basket", "nl312", Rarity.RARE, mage.cards.s.SnakeBasket.class)); + cards.add(new SetCardInfo("Splinter", "jk121sb", Rarity.UNCOMMON, mage.cards.s.Splinter.class)); + cards.add(new SetCardInfo("Stone Rain", "jk209", Rarity.COMMON, mage.cards.s.StoneRain.class)); + cards.add(new SetCardInfo("Submerge", "tvdl48sb", Rarity.UNCOMMON, mage.cards.s.Submerge.class)); + cards.add(new SetCardInfo("Tangle Wire", "jf139a", Rarity.RARE, mage.cards.t.TangleWire.class)); + cards.add(new SetCardInfo("Thran Dynamo", "jf139b", Rarity.UNCOMMON, mage.cards.t.ThranDynamo.class)); + cards.add(new SetCardInfo("Thran Quarry", "nl329", Rarity.RARE, mage.cards.t.ThranQuarry.class)); + cards.add(new SetCardInfo("Tinker", "jf45", Rarity.UNCOMMON, mage.cards.t.Tinker.class)); + cards.add(new SetCardInfo("Uktabi Orangutan", "jk260sb", Rarity.UNCOMMON, mage.cards.u.UktabiOrangutan.class)); + cards.add(new SetCardInfo("Voltaic Key", "jf314", Rarity.UNCOMMON, mage.cards.v.VoltaicKey.class)); + cards.add(new SetCardInfo("Whetstone", "nl316", Rarity.RARE, mage.cards.w.Whetstone.class)); + cards.add(new SetCardInfo("Worship", "nl57sb", Rarity.RARE, mage.cards.w.Worship.class)); + cards.add(new SetCardInfo("Wrath of God", "tvdl54sb", Rarity.RARE, mage.cards.w.WrathOfGod.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Wrath of God", "tvdl54", Rarity.RARE, mage.cards.w.WrathOfGod.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Yawgmoth's Bargain", "nl75", Rarity.RARE, mage.cards.y.YawgmothsBargain.class)); + cards.add(new SetCardInfo("Yawgmoth's Will", "nl171", Rarity.RARE, mage.cards.y.YawgmothsWill.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/WorldChampionshipDecks2001.java b/Mage.Sets/src/mage/sets/WorldChampionshipDecks2001.java new file mode 100644 index 00000000000..622ad7e3817 --- /dev/null +++ b/Mage.Sets/src/mage/sets/WorldChampionshipDecks2001.java @@ -0,0 +1,152 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/wc01 + */ +public class WorldChampionshipDecks2001 extends ExpansionSet { + + private static final WorldChampionshipDecks2001 instance = new WorldChampionshipDecks2001(); + + public static WorldChampionshipDecks2001 getInstance() { + return instance; + } + + private WorldChampionshipDecks2001() { + super("World Championship Decks 2001", "WC01", ExpansionSet.buildDate(2001, 8, 8), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = true; + + cards.add(new SetCardInfo("Accumulated Knowledge", "ar26", Rarity.COMMON, mage.cards.a.AccumulatedKnowledge.class)); + cards.add(new SetCardInfo("Addle", "tvdl91sb", Rarity.UNCOMMON, mage.cards.a.Addle.class)); + cards.add(new SetCardInfo("Birds of Paradise", "jt231", Rarity.RARE, mage.cards.b.BirdsOfParadise.class)); + cards.add(new SetCardInfo("Blastoderm", "jt102", Rarity.COMMON, mage.cards.b.Blastoderm.class)); + cards.add(new SetCardInfo("Blazing Specter", "tvdl236", Rarity.RARE, mage.cards.b.BlazingSpecter.class)); + cards.add(new SetCardInfo("Blood Oath", "jt177sb", Rarity.RARE, mage.cards.b.BloodOath.class)); + cards.add(new SetCardInfo("Boil", "jt177sba", Rarity.COMMON, mage.cards.b.Boil.class)); + cards.add(new SetCardInfo("City of Brass", "jt327", Rarity.RARE, mage.cards.c.CityOfBrass.class)); + cards.add(new SetCardInfo("Counterspell", "ar69", Rarity.COMMON, mage.cards.c.Counterspell.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Counterspell", "ab69", Rarity.COMMON, mage.cards.c.Counterspell.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Counterspell", "ar67", Rarity.COMMON, mage.cards.c.Counterspell.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Counterspell", "ab67", Rarity.COMMON, mage.cards.c.Counterspell.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Crosis's Charm", "ar99", Rarity.COMMON, mage.cards.c.CrosissCharm.class)); + cards.add(new SetCardInfo("Crypt Angel", "tvdl97sb", Rarity.RARE, mage.cards.c.CryptAngel.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Crypt Angel", "tvdl97", Rarity.RARE, mage.cards.c.CryptAngel.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Dark Ritual", "tvdl129", Rarity.COMMON, mage.cards.d.DarkRitual.class)); + cards.add(new SetCardInfo("Darting Merfolk", "ab72", Rarity.COMMON, mage.cards.d.DartingMerfolk.class)); + cards.add(new SetCardInfo("Duress", "tvdl131", Rarity.COMMON, mage.cards.d.Duress.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Duress", "ar131sb", Rarity.COMMON, mage.cards.d.Duress.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Duress", "ar131", Rarity.COMMON, mage.cards.d.Duress.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Engineered Plague", "ar133sb", Rarity.UNCOMMON, mage.cards.e.EngineeredPlague.class)); + cards.add(new SetCardInfo("Fact or Fiction", "ar57", Rarity.UNCOMMON, mage.cards.f.FactOrFiction.class)); + cards.add(new SetCardInfo("Fire // Ice", "jt128", Rarity.UNCOMMON, mage.cards.f.FireIce.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Fire // Ice", "ar128", Rarity.UNCOMMON, mage.cards.f.FireIce.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Fires of Yavimaya", "jt246", Rarity.UNCOMMON, mage.cards.f.FiresOfYavimaya.class)); + cards.add(new SetCardInfo("Flametongue Kavu", "tvdl60sb", Rarity.UNCOMMON, mage.cards.f.FlametongueKavu.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Flametongue Kavu", "tvdl60", Rarity.UNCOMMON, mage.cards.f.FlametongueKavu.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Flametongue Kavu", "jt60", Rarity.UNCOMMON, mage.cards.f.FlametongueKavu.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", "jt349a", Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", "jt349", Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", "jt348a", Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", "jt348", Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", "jt347a", Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", "jt347", Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", "jt329", Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", "jt328", Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Gush", "ab82", Rarity.COMMON, mage.cards.g.Gush.class)); + cards.add(new SetCardInfo("Hibernation", "ab79sb", Rarity.UNCOMMON, mage.cards.h.Hibernation.class)); + cards.add(new SetCardInfo("Island", "ar338", Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", "ab338a", Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", "ab338", Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", "ar337", Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", "ab337a", Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", "ab337", Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", "ar336a", Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", "ar336", Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", "ab336a", Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", "ab336", Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", "ar335b", Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", "ar335a", Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", "ar335", Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", "ab335b", Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", "ab335a", Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", "ab335", Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", "ar334", Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", "ab334", Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", "ab333", Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", "ab332", Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Karplusan Forest", "jt336", Rarity.RARE, mage.cards.k.KarplusanForest.class)); + cards.add(new SetCardInfo("Kavu Chameleon", "jt191sb", Rarity.UNCOMMON, mage.cards.k.KavuChameleon.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Kavu Chameleon", "jt191", Rarity.UNCOMMON, mage.cards.k.KavuChameleon.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Llanowar Elves", "jt253", Rarity.COMMON, mage.cards.l.LlanowarElves.class)); + cards.add(new SetCardInfo("Llanowar Wastes", "jt141", Rarity.RARE, mage.cards.l.LlanowarWastes.class)); + cards.add(new SetCardInfo("Lobotomy", "ar255sb", Rarity.UNCOMMON, mage.cards.l.Lobotomy.class)); + cards.add(new SetCardInfo("Lord of Atlantis", "ab83", Rarity.RARE, mage.cards.l.LordOfAtlantis.class)); + cards.add(new SetCardInfo("Mana Maze", "ab59sb", Rarity.RARE, mage.cards.m.ManaMaze.class)); + cards.add(new SetCardInfo("Meekstone", "ar307sb", Rarity.COMMON, mage.cards.m.Meekstone.class)); + cards.add(new SetCardInfo("Merfolk Looter", "ab89", Rarity.UNCOMMON, mage.cards.m.MerfolkLooter.class)); + cards.add(new SetCardInfo("Merfolk of the Pearl Trident", "ab90", Rarity.COMMON, mage.cards.m.MerfolkOfThePearlTrident.class)); + cards.add(new SetCardInfo("Misdirection", "ab87sb", Rarity.RARE, mage.cards.m.Misdirection.class)); + cards.add(new SetCardInfo("Mountain", "tvdl343b", Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", "tvdl343", Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", "jt343a", Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", "jt343", Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", "tvdl337", Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", "jt337", Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Nether Spirit", "ar149", Rarity.RARE, mage.cards.n.NetherSpirit.class)); + cards.add(new SetCardInfo("Obliterate", "jt156sb", Rarity.RARE, mage.cards.o.Obliterate.class)); + cards.add(new SetCardInfo("Opposition", "ab92", Rarity.RARE, mage.cards.o.Opposition.class)); + cards.add(new SetCardInfo("Opt", "ar64", Rarity.COMMON, mage.cards.o.Opt.class)); + cards.add(new SetCardInfo("Persecute", "tvdl154sb", Rarity.RARE, mage.cards.p.Persecute.class)); + cards.add(new SetCardInfo("Phyrexian Arena", "tvdl47sb", Rarity.RARE, mage.cards.p.PhyrexianArena.class)); + cards.add(new SetCardInfo("Phyrexian Scuta", "tvdl51", Rarity.RARE, mage.cards.p.PhyrexianScuta.class)); + cards.add(new SetCardInfo("Plague Spitter", "tvdl119", Rarity.UNCOMMON, mage.cards.p.PlagueSpitter.class)); + cards.add(new SetCardInfo("Prodigal Sorcerer", "ab94sb", Rarity.COMMON, mage.cards.p.ProdigalSorcerer.class)); + cards.add(new SetCardInfo("Pyroclasm", "tvdl209sb", Rarity.UNCOMMON, mage.cards.p.Pyroclasm.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Pyroclasm", "ar209sb", Rarity.UNCOMMON, mage.cards.p.Pyroclasm.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Rishadan Port", "tvdl324", Rarity.RARE, mage.cards.r.RishadanPort.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Rishadan Port", "jt324", Rarity.RARE, mage.cards.r.RishadanPort.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Rushing River", "ab30sb", Rarity.COMMON, mage.cards.r.RushingRiver.class)); + cards.add(new SetCardInfo("Salt Marsh", "ar326", Rarity.UNCOMMON, mage.cards.s.SaltMarsh.class)); + cards.add(new SetCardInfo("Saproling Burst", "jt113", Rarity.RARE, mage.cards.s.SaprolingBurst.class)); + cards.add(new SetCardInfo("Scoria Cat", "tvdl101sb", Rarity.UNCOMMON, mage.cards.s.ScoriaCat.class)); + cards.add(new SetCardInfo("Shivan Reef", "ar142", Rarity.RARE, mage.cards.s.ShivanReef.class)); + cards.add(new SetCardInfo("Skizzik", "tvdl169", Rarity.RARE, mage.cards.s.Skizzik.class)); + cards.add(new SetCardInfo("Spiritmonger", "jt121", Rarity.RARE, mage.cards.s.Spiritmonger.class)); + cards.add(new SetCardInfo("Spite // Malice", "ar293", Rarity.UNCOMMON, mage.cards.s.SpiteMalice.class)); + cards.add(new SetCardInfo("Static Orb", "ab319", Rarity.RARE, mage.cards.s.StaticOrb.class)); + cards.add(new SetCardInfo("Sulfurous Springs", "tvdl345", Rarity.RARE, mage.cards.s.SulfurousSprings.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Sulfurous Springs", "jt345", Rarity.RARE, mage.cards.s.SulfurousSprings.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Sulfurous Springs", "ar345", Rarity.RARE, mage.cards.s.SulfurousSprings.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", "tvdl348", Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", "tvdl347", Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", "tvdl342", Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", "tvdl341", Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", "tvdl339a", Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", "tvdl339", Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Tangle", "jt213sb", Rarity.UNCOMMON, mage.cards.t.Tangle.class)); + cards.add(new SetCardInfo("Teferi's Response", "ar78sb", Rarity.RARE, mage.cards.t.TeferisResponse.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Teferi's Response", "ab78sb", Rarity.COMMON, mage.cards.t.TeferisResponse.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Terminate", "tvdl128", Rarity.COMMON, mage.cards.t.Terminate.class)); + cards.add(new SetCardInfo("Thornscape Battlemage", "jt94", Rarity.UNCOMMON, mage.cards.t.ThornscapeBattlemage.class)); + cards.add(new SetCardInfo("Thunderscape Battlemage", "jt75sb", Rarity.UNCOMMON, mage.cards.t.ThunderscapeBattlemage.class)); + cards.add(new SetCardInfo("Thwart", "ab108", Rarity.UNCOMMON, mage.cards.t.Thwart.class)); + cards.add(new SetCardInfo("Tsabo's Assassin", "ar128sb", Rarity.RARE, mage.cards.t.TsabosAssassin.class)); + cards.add(new SetCardInfo("Tsabo's Decree", "ar129", Rarity.RARE, mage.cards.t.TsabosDecree.class)); + cards.add(new SetCardInfo("Tsabo's Web", "ar317", Rarity.RARE, mage.cards.t.TsabosWeb.class)); + cards.add(new SetCardInfo("Underground River", "ar350", Rarity.RARE, mage.cards.u.UndergroundRiver.class)); + cards.add(new SetCardInfo("Undermine", "ar282", Rarity.RARE, mage.cards.u.Undermine.class)); + cards.add(new SetCardInfo("Urborg Volcano", "tvdl330", Rarity.COMMON, mage.cards.u.UrborgVolcano.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Urborg Volcano", "ar330", Rarity.UNCOMMON, mage.cards.u.UrborgVolcano.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Urza's Rage", "tvdl178", Rarity.RARE, mage.cards.u.UrzasRage.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Urza's Rage", "jt178", Rarity.RARE, mage.cards.u.UrzasRage.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Urza's Rage", "ar178", Rarity.RARE, mage.cards.u.UrzasRage.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Vendetta", "tvdl170", Rarity.COMMON, mage.cards.v.Vendetta.class)); + cards.add(new SetCardInfo("Vodalian Merchant", "ab85", Rarity.COMMON, mage.cards.v.VodalianMerchant.class)); + cards.add(new SetCardInfo("Wash Out", "ab87bsb", Rarity.UNCOMMON, mage.cards.w.WashOut.class)); + cards.add(new SetCardInfo("Waterfront Bouncer", "ab114", Rarity.COMMON, mage.cards.w.WaterfrontBouncer.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/WorldChampionshipDecks2002.java b/Mage.Sets/src/mage/sets/WorldChampionshipDecks2002.java new file mode 100644 index 00000000000..fad20fe3df5 --- /dev/null +++ b/Mage.Sets/src/mage/sets/WorldChampionshipDecks2002.java @@ -0,0 +1,167 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/wc02 + */ +public class WorldChampionshipDecks2002 extends ExpansionSet { + + private static final WorldChampionshipDecks2002 instance = new WorldChampionshipDecks2002(); + + public static WorldChampionshipDecks2002 getInstance() { + return instance; + } + + private WorldChampionshipDecks2002() { + super("World Championship Decks 2002", "WC02", ExpansionSet.buildDate(2002, 8, 14), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = true; + + cards.add(new SetCardInfo("Anurid Brushhopper", "bk137", Rarity.RARE, mage.cards.a.AnuridBrushhopper.class)); + cards.add(new SetCardInfo("Birds of Paradise", "shh231", Rarity.RARE, mage.cards.b.BirdsOfParadise.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Birds of Paradise", "bk231", Rarity.RARE, mage.cards.b.BirdsOfParadise.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Breakthrough", "rl26", Rarity.UNCOMMON, mage.cards.b.Breakthrough.class)); + cards.add(new SetCardInfo("Brushland", "bk326", Rarity.RARE, mage.cards.b.Brushland.class)); + cards.add(new SetCardInfo("Call of the Herd", "bk231a", Rarity.RARE, mage.cards.c.CallOfTheHerd.class)); + cards.add(new SetCardInfo("Careful Study", "rl70", Rarity.COMMON, mage.cards.c.CarefulStudy.class)); + cards.add(new SetCardInfo("Cephalid Coliseum", "cr317", Rarity.UNCOMMON, mage.cards.c.CephalidColiseum.class)); + cards.add(new SetCardInfo("Chainer's Edict", "cr57", Rarity.UNCOMMON, mage.cards.c.ChainersEdict.class)); + cards.add(new SetCardInfo("Circular Logic", "shh33", Rarity.UNCOMMON, mage.cards.c.CircularLogic.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Circular Logic", "cr33", Rarity.UNCOMMON, mage.cards.c.CircularLogic.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("City of Brass", "bk327sb", Rarity.RARE, mage.cards.c.CityOfBrass.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("City of Brass", "bk327", Rarity.RARE, mage.cards.c.CityOfBrass.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Coffin Purge", "cr124sb", Rarity.COMMON, mage.cards.c.CoffinPurge.class)); + cards.add(new SetCardInfo("Compost", "rl235sb", Rarity.UNCOMMON, mage.cards.c.Compost.class)); + cards.add(new SetCardInfo("Counterspell", "cr67", Rarity.COMMON, mage.cards.c.Counterspell.class)); + cards.add(new SetCardInfo("Cunning Wish", "cr37", Rarity.RARE, mage.cards.c.CunningWish.class)); + cards.add(new SetCardInfo("Darkwater Catacombs", "cr319", Rarity.RARE, mage.cards.d.DarkwaterCatacombs.class)); + cards.add(new SetCardInfo("Deep Analysis", "shh36", Rarity.COMMON, mage.cards.d.DeepAnalysis.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Deep Analysis", "cr36", Rarity.COMMON, mage.cards.d.DeepAnalysis.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Disrupt", "rl51sb", Rarity.UNCOMMON, mage.cards.d.Disrupt.class)); + cards.add(new SetCardInfo("Duress", "cr131sb", Rarity.COMMON, mage.cards.d.Duress.class)); + cards.add(new SetCardInfo("Fact or Fiction", "cr57sb", Rarity.UNCOMMON, mage.cards.f.FactOrFiction.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Fact or Fiction", "cr57a", Rarity.UNCOMMON, mage.cards.f.FactOrFiction.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Fire // Ice", "shh128", Rarity.UNCOMMON, mage.cards.f.FireIce.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Fire // Ice", "bk128", Rarity.UNCOMMON, mage.cards.f.FireIce.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Flametongue Kavu", "shh60sb", Rarity.UNCOMMON, mage.cards.f.FlametongueKavu.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Flametongue Kavu", "shh60", Rarity.UNCOMMON, mage.cards.f.FlametongueKavu.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Flametongue Kavu", "bk60", Rarity.UNCOMMON, mage.cards.f.FlametongueKavu.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", "shh350", Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", "rl350", Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", "shh349", Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", "rl349", Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", "bk349", Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", "shh348", Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", "rl348", Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", "bk348", Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", "shh347", Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", "rl347", Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", "bk347", Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", "shh331", Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", "rl331", Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", "bk331", Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", "shh330", Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", "rl330", Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", "bk330", Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", "shh329", Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", "rl329", Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", "bk329", Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", "shh328", Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", "rl328", Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", "bk328", Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Gainsay", "shh26sb", Rarity.UNCOMMON, mage.cards.g.Gainsay.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Gainsay", "cr26sb", Rarity.UNCOMMON, mage.cards.g.Gainsay.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Genesis", "rl117", Rarity.RARE, mage.cards.g.Genesis.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Genesis", "bk117sb", Rarity.RARE, mage.cards.g.Genesis.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Ghastly Demise", "cr139sb", Rarity.COMMON, mage.cards.g.GhastlyDemise.class)); + cards.add(new SetCardInfo("Global Ruin", "bk18sb", Rarity.RARE, mage.cards.g.GlobalRuin.class)); + cards.add(new SetCardInfo("Glory", "bk11sb", Rarity.RARE, mage.cards.g.Glory.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Glory", "bk11", Rarity.RARE, mage.cards.g.Glory.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Hibernation", "cr79sb", Rarity.UNCOMMON, mage.cards.h.Hibernation.class)); + cards.add(new SetCardInfo("Intrepid Hero", "bk22sb", Rarity.RARE, mage.cards.i.IntrepidHero.class)); + cards.add(new SetCardInfo("Island", "shh338", Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", "rl338", Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", "cr338", Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", "shh337", Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", "rl337a", Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", "rl337", Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", "cr337a", Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", "cr337", Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", "shh336a", Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", "rl336a", Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", "rl336", Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", "cr336", Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", "shh335", Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", "rl335", Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", "cr335b", Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", "cr335a", Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", "cr335", Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", "shh334", Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", "rl334", Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", "cr334", Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", "rl333", Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", "cr333", Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", "rl332", Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", "cr332", Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Karplusan Forest", "shh336", Rarity.RARE, mage.cards.k.KarplusanForest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Karplusan Forest", "bk336", Rarity.RARE, mage.cards.k.KarplusanForest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Living Wish", "bk124", Rarity.RARE, mage.cards.l.LivingWish.class)); + cards.add(new SetCardInfo("Llanowar Elves", "shh253", Rarity.COMMON, mage.cards.l.LlanowarElves.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Llanowar Elves", "bk253", Rarity.COMMON, mage.cards.l.LlanowarElves.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mana Short", "cr86sb", Rarity.RARE, mage.cards.m.ManaShort.class)); + cards.add(new SetCardInfo("Memory Lapse", "cr88", Rarity.COMMON, mage.cards.m.MemoryLapse.class)); + cards.add(new SetCardInfo("Mental Note", "rl46", Rarity.COMMON, mage.cards.m.MentalNote.class)); + cards.add(new SetCardInfo("Merfolk Looter", "shh89", Rarity.UNCOMMON, mage.cards.m.MerfolkLooter.class)); + cards.add(new SetCardInfo("Mountain", "bk346", Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", "bk343", Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Nightscape Familiar", "cr48", Rarity.COMMON, mage.cards.n.NightscapeFamiliar.class)); + cards.add(new SetCardInfo("Nimble Mongoose", "rl258", Rarity.UNCOMMON, mage.cards.n.NimbleMongoose.class)); + cards.add(new SetCardInfo("Opposition", "shh92", Rarity.RARE, mage.cards.o.Opposition.class)); + cards.add(new SetCardInfo("Phantom Centaur", "shh127", Rarity.UNCOMMON, mage.cards.p.PhantomCentaur.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Phantom Centaur", "rl127sb", Rarity.UNCOMMON, mage.cards.p.PhantomCentaur.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Phantom Centaur", "bk127", Rarity.UNCOMMON, mage.cards.p.PhantomCentaur.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Phantom Nishoba", "bk140sb", Rarity.RARE, mage.cards.p.PhantomNishoba.class)); + cards.add(new SetCardInfo("Plains", "bk341", Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plains", "bk333", Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plains", "bk331a", Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Psychatog", "cr292", Rarity.UNCOMMON, mage.cards.p.Psychatog.class)); + cards.add(new SetCardInfo("Quiet Speculation", "shh49sb", Rarity.UNCOMMON, mage.cards.q.QuietSpeculation.class)); + cards.add(new SetCardInfo("Ray of Revelation", "shh20sb", Rarity.COMMON, mage.cards.r.RayOfRevelation.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Ray of Revelation", "rl20sb", Rarity.COMMON, mage.cards.r.RayOfRevelation.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Recoil", "cr264sb", Rarity.COMMON, mage.cards.r.Recoil.class)); + cards.add(new SetCardInfo("Reprisal", "bk33sb", Rarity.UNCOMMON, mage.cards.r.Reprisal.class)); + cards.add(new SetCardInfo("Repulse", "rl70sb", Rarity.COMMON, mage.cards.r.Repulse.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Repulse", "cr70", Rarity.COMMON, mage.cards.r.Repulse.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Roar of the Wurm", "shh266sb", Rarity.UNCOMMON, mage.cards.r.RoarOfTheWurm.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Roar of the Wurm", "rl266", Rarity.UNCOMMON, mage.cards.r.RoarOfTheWurm.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Rushing River", "rl30sb", Rarity.COMMON, mage.cards.r.RushingRiver.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Rushing River", "rl30", Rarity.COMMON, mage.cards.r.RushingRiver.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Salt Marsh", "cr326", Rarity.UNCOMMON, mage.cards.s.SaltMarsh.class)); + cards.add(new SetCardInfo("Seton's Scout", "rl138", Rarity.UNCOMMON, mage.cards.s.SetonsScout.class)); + cards.add(new SetCardInfo("Shivan Reef", "shh142", Rarity.RARE, mage.cards.s.ShivanReef.class)); + cards.add(new SetCardInfo("Simoon", "shh272sb", Rarity.UNCOMMON, mage.cards.s.Simoon.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Simoon", "bk272sb", Rarity.UNCOMMON, mage.cards.s.Simoon.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Slay", "cr55sb", Rarity.UNCOMMON, mage.cards.s.Slay.class)); + cards.add(new SetCardInfo("Squirrel Nest", "shh274", Rarity.UNCOMMON, mage.cards.s.SquirrelNest.class)); + cards.add(new SetCardInfo("Swamp", "cr342", Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", "cr341", Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", "cr340", Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Sylvan Safekeeper", "bk133sb", Rarity.RARE, mage.cards.s.SylvanSafekeeper.class)); + cards.add(new SetCardInfo("Teferi's Response", "cr78sb", Rarity.RARE, mage.cards.t.TeferisResponse.class)); + cards.add(new SetCardInfo("Thornscape Battlemage", "bk94sb", Rarity.UNCOMMON, mage.cards.t.ThornscapeBattlemage.class)); + cards.add(new SetCardInfo("Thunderscape Battlemage", "bk75sb", Rarity.UNCOMMON, mage.cards.t.ThunderscapeBattlemage.class)); + cards.add(new SetCardInfo("Underground River", "cr350", Rarity.RARE, mage.cards.u.UndergroundRiver.class)); + cards.add(new SetCardInfo("Upheaval", "cr113", Rarity.RARE, mage.cards.u.Upheaval.class)); + cards.add(new SetCardInfo("Wax // Wane", "bk296", Rarity.UNCOMMON, mage.cards.w.WaxWane.class)); + cards.add(new SetCardInfo("Werebear", "rl282", Rarity.COMMON, mage.cards.w.Werebear.class)); + cards.add(new SetCardInfo("Wild Mongrel", "shh283", Rarity.COMMON, mage.cards.w.WildMongrel.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Wild Mongrel", "rl283", Rarity.COMMON, mage.cards.w.WildMongrel.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Wild Mongrel", "bk283", Rarity.COMMON, mage.cards.w.WildMongrel.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Wonder", "rl54", Rarity.UNCOMMON, mage.cards.w.Wonder.class)); + cards.add(new SetCardInfo("Yavimaya Coast", "shh143", Rarity.RARE, mage.cards.y.YavimayaCoast.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Yavimaya Coast", "rl143", Rarity.RARE, mage.cards.y.YavimayaCoast.class, NON_FULL_USE_VARIOUS)); + } +} diff --git a/Mage.Sets/src/mage/sets/WorldChampionshipDecks2003.java b/Mage.Sets/src/mage/sets/WorldChampionshipDecks2003.java new file mode 100644 index 00000000000..88feb7a3791 --- /dev/null +++ b/Mage.Sets/src/mage/sets/WorldChampionshipDecks2003.java @@ -0,0 +1,156 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/wc03 + */ +public class WorldChampionshipDecks2003 extends ExpansionSet { + + private static final WorldChampionshipDecks2003 instance = new WorldChampionshipDecks2003(); + + public static WorldChampionshipDecks2003 getInstance() { + return instance; + } + + private WorldChampionshipDecks2003() { + super("World Championship Decks 2003", "WC03", ExpansionSet.buildDate(2003, 8, 6), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = true; + + cards.add(new SetCardInfo("Anger", "pk77", Rarity.UNCOMMON, mage.cards.a.Anger.class)); + cards.add(new SetCardInfo("Anurid Brushhopper", "dz137sb", Rarity.RARE, mage.cards.a.AnuridBrushhopper.class)); + cards.add(new SetCardInfo("Aquamoeba", "dh24", Rarity.COMMON, mage.cards.a.Aquamoeba.class)); + cards.add(new SetCardInfo("Arcanis the Omnipotent", "pk66", Rarity.RARE, mage.cards.a.ArcanisTheOmnipotent.class)); + cards.add(new SetCardInfo("Arrogant Wurm", "dh120", Rarity.UNCOMMON, mage.cards.a.ArrogantWurm.class)); + cards.add(new SetCardInfo("Barren Moor", "pk312", Rarity.COMMON, mage.cards.b.BarrenMoor.class)); + cards.add(new SetCardInfo("Basking Rootwalla", "dh121", Rarity.COMMON, mage.cards.b.BaskingRootwalla.class)); + cards.add(new SetCardInfo("Bloodstained Mire", "pk313", Rarity.RARE, mage.cards.b.BloodstainedMire.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Bloodstained Mire", "we313", Rarity.RARE, mage.cards.b.BloodstainedMire.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Buried Alive", "pk118", Rarity.UNCOMMON, mage.cards.b.BuriedAlive.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Buried Alive", "pk118sb", Rarity.UNCOMMON, mage.cards.b.BuriedAlive.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Burning Wish", "pk83", Rarity.RARE, mage.cards.b.BurningWish.class)); + cards.add(new SetCardInfo("Cabal Therapy", "pk62", Rarity.UNCOMMON, mage.cards.c.CabalTherapy.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Cabal Therapy", "pk62sb", Rarity.UNCOMMON, mage.cards.c.CabalTherapy.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Cabal Therapy", "we62sb", Rarity.UNCOMMON, mage.cards.c.CabalTherapy.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Careful Study", "dh70", Rarity.COMMON, mage.cards.c.CarefulStudy.class)); + cards.add(new SetCardInfo("Centaur Garden", "dh316", Rarity.UNCOMMON, mage.cards.c.CentaurGarden.class)); + cards.add(new SetCardInfo("Chainer's Edict", "pk57", Rarity.UNCOMMON, mage.cards.c.ChainersEdict.class)); + cards.add(new SetCardInfo("Circular Logic", "dh33", Rarity.UNCOMMON, mage.cards.c.CircularLogic.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Circular Logic", "dz33", Rarity.UNCOMMON, mage.cards.c.CircularLogic.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Circular Logic", "dz33sb", Rarity.UNCOMMON, mage.cards.c.CircularLogic.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("City of Brass", "dh322", Rarity.RARE, mage.cards.c.CityOfBrass.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("City of Brass", "we322", Rarity.RARE, mage.cards.c.CityOfBrass.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Compulsion", "dz34", Rarity.UNCOMMON, mage.cards.c.Compulsion.class)); + cards.add(new SetCardInfo("Cunning Wish", "dz37", Rarity.RARE, mage.cards.c.CunningWish.class)); + cards.add(new SetCardInfo("Dark Banishing", "we123sb", Rarity.COMMON, mage.cards.d.DarkBanishing.class)); + cards.add(new SetCardInfo("Decompose", "pk128sb", Rarity.UNCOMMON, mage.cards.d.Decompose.class)); + cards.add(new SetCardInfo("Decree of Justice", "dz8", Rarity.RARE, mage.cards.d.DecreeOfJustice.class)); + cards.add(new SetCardInfo("Deep Analysis", "dh36", Rarity.COMMON, mage.cards.d.DeepAnalysis.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Deep Analysis", "dh36sb", Rarity.COMMON, mage.cards.d.DeepAnalysis.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Deep Analysis", "dz36", Rarity.COMMON, mage.cards.d.DeepAnalysis.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Demolish", "pk183sb", Rarity.UNCOMMON, mage.cards.d.Demolish.class)); + cards.add(new SetCardInfo("Doomed Necromancer", "pk140", Rarity.RARE, mage.cards.d.DoomedNecromancer.class)); + cards.add(new SetCardInfo("Elfhame Palace", "dz324", Rarity.UNCOMMON, mage.cards.e.ElfhamePalace.class)); + cards.add(new SetCardInfo("Entomb", "pk132", Rarity.RARE, mage.cards.e.Entomb.class)); + cards.add(new SetCardInfo("Envelop", "dh39sb", Rarity.COMMON, mage.cards.e.Envelop.class)); + cards.add(new SetCardInfo("Exalted Angel", "dz28sb", Rarity.RARE, mage.cards.e.ExaltedAngel.class)); + cards.add(new SetCardInfo("Flaring Pain", "we89sb", Rarity.COMMON, mage.cards.f.FlaringPain.class)); + cards.add(new SetCardInfo("Flooded Strand", "dz316", Rarity.RARE, mage.cards.f.FloodedStrand.class)); + cards.add(new SetCardInfo("Forest", "dh348", Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", "dh349", Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", "dh350", Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", "dz347", Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", "dz348", Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", "dz349", Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Gempalm Incinerator", "we94", Rarity.UNCOMMON, mage.cards.g.GempalmIncinerator.class)); + cards.add(new SetCardInfo("Goblin Grappler", "we100", Rarity.COMMON, mage.cards.g.GoblinGrappler.class)); + cards.add(new SetCardInfo("Goblin Piledriver", "we205", Rarity.RARE, mage.cards.g.GoblinPiledriver.class)); + cards.add(new SetCardInfo("Goblin Sharpshooter", "we207", Rarity.RARE, mage.cards.g.GoblinSharpshooter.class)); + cards.add(new SetCardInfo("Goblin Sledder", "we209", Rarity.COMMON, mage.cards.g.GoblinSledder.class)); + cards.add(new SetCardInfo("Goblin Taskmaster", "we210", Rarity.COMMON, mage.cards.g.GoblinTaskmaster.class)); + cards.add(new SetCardInfo("Goblin Warchief", "we97", Rarity.UNCOMMON, mage.cards.g.GoblinWarchief.class)); + cards.add(new SetCardInfo("Guiltfeeder", "pk68sb", Rarity.RARE, mage.cards.g.Guiltfeeder.class)); + cards.add(new SetCardInfo("Haunting Echoes", "pk142sb", Rarity.RARE, mage.cards.h.HauntingEchoes.class)); + cards.add(new SetCardInfo("Hunting Pack", "dz121sb", Rarity.UNCOMMON, mage.cards.h.HuntingPack.class)); + cards.add(new SetCardInfo("Innocent Blood", "pk145", Rarity.COMMON, mage.cards.i.InnocentBlood.class)); + cards.add(new SetCardInfo("Island", "dh336", Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", "dh337", Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", "dh338", Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", "dz335", Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", "dz336", Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", "dz337", Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Krosan Reclamation", "dh122", Rarity.UNCOMMON, mage.cards.k.KrosanReclamation.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Krosan Reclamation", "dh122sb", Rarity.UNCOMMON, mage.cards.k.KrosanReclamation.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Krosan Reclamation", "dz122sb", Rarity.UNCOMMON, mage.cards.k.KrosanReclamation.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Krosan Verge", "dz141", Rarity.UNCOMMON, mage.cards.k.KrosanVerge.class)); + cards.add(new SetCardInfo("Last Rites", "pk146sb", Rarity.COMMON, mage.cards.l.LastRites.class)); + cards.add(new SetCardInfo("Mana Leak", "dh89sb", Rarity.COMMON, mage.cards.m.ManaLeak.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mana Leak", "dz89", Rarity.COMMON, mage.cards.m.ManaLeak.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mirari", "dz303", Rarity.RARE, mage.cards.m.Mirari.class)); + cards.add(new SetCardInfo("Mirari's Wake", "dz139", Rarity.RARE, mage.cards.m.MirarisWake.class)); + cards.add(new SetCardInfo("Moment's Peace", "dz251", Rarity.COMMON, mage.cards.m.MomentsPeace.class)); + cards.add(new SetCardInfo("Mountain", "pk344", Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", "pk345", Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", "pk346", Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", "we343", Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", "we344", Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mountain", "we346", Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Nantuko Vigilante", "dh132sb", Rarity.COMMON, mage.cards.n.NantukoVigilante.class)); + cards.add(new SetCardInfo("Patriarch's Bidding", "pk161sb", Rarity.RARE, mage.cards.p.PatriarchsBidding.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Patriarch's Bidding", "we161", Rarity.RARE, mage.cards.p.PatriarchsBidding.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Phantom Centaur", "dh127sb", Rarity.UNCOMMON, mage.cards.p.PhantomCentaur.class)); + cards.add(new SetCardInfo("Phantom Nishoba", "pk190", Rarity.RARE, mage.cards.p.PhantomNishoba.class)); + cards.add(new SetCardInfo("Plains", "dz331", Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plains", "dz332", Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plains", "dz333", Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Pyroclasm", "pk210sb", Rarity.UNCOMMON, mage.cards.p.Pyroclasm.class)); + cards.add(new SetCardInfo("Quiet Speculation", "dh49", Rarity.UNCOMMON, mage.cards.q.QuietSpeculation.class)); + cards.add(new SetCardInfo("Ray of Distortion", "dz42sb", Rarity.COMMON, mage.cards.r.RayOfDistortion.class)); + cards.add(new SetCardInfo("Ray of Revelation", "dh20", Rarity.COMMON, mage.cards.r.RayOfRevelation.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Ray of Revelation", "dh20sb", Rarity.COMMON, mage.cards.r.RayOfRevelation.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Ray of Revelation", "dz20sb", Rarity.COMMON, mage.cards.r.RayOfRevelation.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Recoup", "pk216", Rarity.UNCOMMON, mage.cards.r.Recoup.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Recoup", "pk216sb", Rarity.UNCOMMON, mage.cards.r.Recoup.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Renewed Faith", "dz50", Rarity.COMMON, mage.cards.r.RenewedFaith.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Renewed Faith", "dz50sb", Rarity.COMMON, mage.cards.r.RenewedFaith.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Roar of the Wurm", "dh266", Rarity.UNCOMMON, mage.cards.r.RoarOfTheWurm.class)); + cards.add(new SetCardInfo("Shadowblood Ridge", "pk326", Rarity.RARE, mage.cards.s.ShadowbloodRidge.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Shadowblood Ridge", "we326", Rarity.RARE, mage.cards.s.ShadowbloodRidge.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Sickening Dreams", "pk83sb", Rarity.UNCOMMON, mage.cards.s.SickeningDreams.class)); + cards.add(new SetCardInfo("Siege-Gang Commander", "we103", Rarity.RARE, mage.cards.s.SiegeGangCommander.class)); + cards.add(new SetCardInfo("Skirk Prospector", "we230", Rarity.COMMON, mage.cards.s.SkirkProspector.class)); + cards.add(new SetCardInfo("Skycloud Expanse", "dz327", Rarity.RARE, mage.cards.s.SkycloudExpanse.class)); + cards.add(new SetCardInfo("Smother", "pk170", Rarity.UNCOMMON, mage.cards.s.Smother.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Smother", "we170", Rarity.UNCOMMON, mage.cards.s.Smother.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Smother", "we170sb", Rarity.UNCOMMON, mage.cards.s.Smother.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Soul Feast", "pk165sb", Rarity.UNCOMMON, mage.cards.s.SoulFeast.class)); + cards.add(new SetCardInfo("Sparksmith", "we235", Rarity.COMMON, mage.cards.s.Sparksmith.class)); + cards.add(new SetCardInfo("Starstorm", "we328sb", Rarity.RARE, mage.cards.s.Starstorm.class)); + cards.add(new SetCardInfo("Stitch Together", "pk72", Rarity.UNCOMMON, mage.cards.s.StitchTogether.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Stitch Together", "pk72sb", Rarity.UNCOMMON, mage.cards.s.StitchTogether.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Stupefying Touch", "dh48sb", Rarity.UNCOMMON, mage.cards.s.StupefyingTouch.class)); + cards.add(new SetCardInfo("Sulfuric Vortex", "we106sb", Rarity.RARE, mage.cards.s.SulfuricVortex.class)); + cards.add(new SetCardInfo("Swamp", "pk339", Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", "pk340", Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", "pk341", Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", "we339", Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", "we340", Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Swamp", "we342", Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Symbiotic Wurm", "pk289", Rarity.RARE, mage.cards.s.SymbioticWurm.class)); + cards.add(new SetCardInfo("Undead Gladiator", "pk178", Rarity.RARE, mage.cards.u.UndeadGladiator.class)); + cards.add(new SetCardInfo("Unsummon", "dh112", Rarity.COMMON, mage.cards.u.Unsummon.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Unsummon", "dh112sb", Rarity.COMMON, mage.cards.u.Unsummon.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Vengeful Dreams", "dz21", Rarity.RARE, mage.cards.v.VengefulDreams.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Vengeful Dreams", "dz21sb", Rarity.RARE, mage.cards.v.VengefulDreams.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Visara the Dreadful", "pk179", Rarity.RARE, mage.cards.v.VisaraTheDreadful.class)); + cards.add(new SetCardInfo("Wild Mongrel", "dh283", Rarity.COMMON, mage.cards.w.WildMongrel.class)); + cards.add(new SetCardInfo("Wing Shards", "dz25sb", Rarity.UNCOMMON, mage.cards.w.WingShards.class)); + cards.add(new SetCardInfo("Wonder", "dh54", Rarity.UNCOMMON, mage.cards.w.Wonder.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Wonder", "dh54sb", Rarity.UNCOMMON, mage.cards.w.Wonder.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Wrath of God", "dz58", Rarity.RARE, mage.cards.w.WrathOfGod.class)); + cards.add(new SetCardInfo("Zombify", "pk174", Rarity.UNCOMMON, mage.cards.z.Zombify.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/WorldChampionshipDecks2004.java b/Mage.Sets/src/mage/sets/WorldChampionshipDecks2004.java new file mode 100644 index 00000000000..27cbc3c4e29 --- /dev/null +++ b/Mage.Sets/src/mage/sets/WorldChampionshipDecks2004.java @@ -0,0 +1,117 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/wc04 + */ +public class WorldChampionshipDecks2004 extends ExpansionSet { + + private static final WorldChampionshipDecks2004 instance = new WorldChampionshipDecks2004(); + + public static WorldChampionshipDecks2004 getInstance() { + return instance; + } + + private WorldChampionshipDecks2004() { + super("World Championship Decks 2004", "WC04", ExpansionSet.buildDate(2004, 9, 1), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = true; + + cards.add(new SetCardInfo("Akroma's Vengeance", "gn2", Rarity.RARE, mage.cards.a.AkromasVengeance.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Akroma's Vengeance", "jn2", Rarity.RARE, mage.cards.a.AkromasVengeance.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Ancient Den", "mb278", Rarity.COMMON, mage.cards.a.AncientDen.class)); + cards.add(new SetCardInfo("Annul", "ap29sb", Rarity.COMMON, mage.cards.a.Annul.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Annul", "gn29", Rarity.COMMON, mage.cards.a.Annul.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Arcbound Ravager", "ap100", Rarity.RARE, mage.cards.a.ArcboundRavager.class)); + cards.add(new SetCardInfo("Arcbound Worker", "ap104a", Rarity.COMMON, mage.cards.a.ArcboundWorker.class)); + cards.add(new SetCardInfo("Astral Slide", "jn4", Rarity.UNCOMMON, mage.cards.a.AstralSlide.class)); + cards.add(new SetCardInfo("Blinkmoth Nexus", "ap163", Rarity.RARE, mage.cards.b.BlinkmothNexus.class)); + cards.add(new SetCardInfo("Chrome Mox", "ap152", Rarity.RARE, mage.cards.c.ChromeMox.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Chrome Mox", "mb152", Rarity.RARE, mage.cards.c.ChromeMox.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Circle of Protection: Red", "jn13sb", Rarity.COMMON, mage.cards.c.CircleOfProtectionRed.class)); + cards.add(new SetCardInfo("Cloudpost", "gn280", Rarity.COMMON, mage.cards.c.Cloudpost.class)); + cards.add(new SetCardInfo("Condescend", "gn27", Rarity.COMMON, mage.cards.c.Condescend.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Condescend", "mb27", Rarity.COMMON, mage.cards.c.Condescend.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Cranial Plating", "ap113", Rarity.COMMON, mage.cards.c.CranialPlating.class)); + cards.add(new SetCardInfo("Darksteel Citadel", "mb164", Rarity.COMMON, mage.cards.d.DarksteelCitadel.class)); + cards.add(new SetCardInfo("Decree of Justice", "gn8", Rarity.RARE, mage.cards.d.DecreeOfJustice.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Decree of Justice", "jn8", Rarity.RARE, mage.cards.d.DecreeOfJustice.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Disciple of the Vault", "ap62a", Rarity.COMMON, mage.cards.d.DiscipleOfTheVault.class)); + cards.add(new SetCardInfo("Eternal Dragon", "gn12a", Rarity.RARE, mage.cards.e.EternalDragon.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Eternal Dragon", "jn12", Rarity.RARE, mage.cards.e.EternalDragon.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Eternal Witness", "jn86", Rarity.UNCOMMON, mage.cards.e.EternalWitness.class)); + cards.add(new SetCardInfo("Exalted Angel", "gn28", Rarity.RARE, mage.cards.e.ExaltedAngel.class)); + cards.add(new SetCardInfo("Fabricate", "mb35", Rarity.UNCOMMON, mage.cards.f.Fabricate.class)); + cards.add(new SetCardInfo("Fireball", "mb60", Rarity.UNCOMMON, mage.cards.f.Fireball.class)); + cards.add(new SetCardInfo("Flooded Strand", "gn316", Rarity.RARE, mage.cards.f.FloodedStrand.class)); + cards.add(new SetCardInfo("Forest", "jn347", Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", "jn348", Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Forest", "jn350", Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Frogmite", "ap172", Rarity.COMMON, mage.cards.f.Frogmite.class)); + cards.add(new SetCardInfo("Furnace Dragon", "ap62sb", Rarity.RARE, mage.cards.f.FurnaceDragon.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Furnace Dragon", "mb62sb", Rarity.RARE, mage.cards.f.FurnaceDragon.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Glimmervoid", "ap281", Rarity.RARE, mage.cards.g.Glimmervoid.class)); + cards.add(new SetCardInfo("Goblin Charbelcher", "mb176", Rarity.RARE, mage.cards.g.GoblinCharbelcher.class)); + cards.add(new SetCardInfo("Great Furnace", "ap282", Rarity.COMMON, mage.cards.g.GreatFurnace.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Great Furnace", "mb282", Rarity.COMMON, mage.cards.g.GreatFurnace.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", "gn335", Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", "gn336", Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Island", "gn337", Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Krark-Clan Ironworks", "mb134", Rarity.RARE, mage.cards.k.KrarkClanIronworks.class)); + cards.add(new SetCardInfo("Mana Leak", "gn89", Rarity.COMMON, mage.cards.m.ManaLeak.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mana Leak", "mb89sb", Rarity.COMMON, mage.cards.m.ManaLeak.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Myr Incubator", "mb212", Rarity.RARE, mage.cards.m.MyrIncubator.class)); + cards.add(new SetCardInfo("Ornithopter", "ap224", Rarity.UNCOMMON, mage.cards.o.Ornithopter.class)); + cards.add(new SetCardInfo("Oxidize", "jn79sb", Rarity.COMMON, mage.cards.o.Oxidize.class)); + cards.add(new SetCardInfo("Pacifism", "gn33sb", Rarity.COMMON, mage.cards.p.Pacifism.class)); + cards.add(new SetCardInfo("Pentad Prism", "mb143", Rarity.COMMON, mage.cards.p.PentadPrism.class)); + cards.add(new SetCardInfo("Plains", "gn331", Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plains", "gn332", Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plains", "gn333", Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plains", "jn332", Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plains", "jn333", Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plains", "jn334", Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plow Under", "jn272", Rarity.RARE, mage.cards.p.PlowUnder.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Plow Under", "jn272sb", Rarity.RARE, mage.cards.p.PlowUnder.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Purge", "gn12sbb", Rarity.UNCOMMON, mage.cards.p.Purge.class)); + cards.add(new SetCardInfo("Pyroclasm", "mb210sb", Rarity.UNCOMMON, mage.cards.p.Pyroclasm.class)); + cards.add(new SetCardInfo("Rampant Growth", "jn274", Rarity.COMMON, mage.cards.r.RampantGrowth.class)); + cards.add(new SetCardInfo("Relic Barrier", "gn147sb", Rarity.UNCOMMON, mage.cards.r.RelicBarrier.class)); + cards.add(new SetCardInfo("Renewed Faith", "jn50", Rarity.COMMON, mage.cards.r.RenewedFaith.class)); + cards.add(new SetCardInfo("Rewind", "gn96", Rarity.UNCOMMON, mage.cards.r.Rewind.class)); + cards.add(new SetCardInfo("Rude Awakening", "jn92sb", Rarity.RARE, mage.cards.r.RudeAwakening.class)); + cards.add(new SetCardInfo("Scrabbling Claws", "gn237sb", Rarity.UNCOMMON, mage.cards.s.ScrabblingClaws.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Scrabbling Claws", "jn237sb", Rarity.UNCOMMON, mage.cards.s.ScrabblingClaws.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Seat of the Synod", "ap283", Rarity.COMMON, mage.cards.s.SeatOfTheSynod.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Seat of the Synod", "mb283", Rarity.COMMON, mage.cards.s.SeatOfTheSynod.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Secluded Steppe", "jn324", Rarity.COMMON, mage.cards.s.SecludedSteppe.class)); + cards.add(new SetCardInfo("Seething Song", "ap104sb", Rarity.COMMON, mage.cards.s.SeethingSong.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Seething Song", "mb104sb", Rarity.COMMON, mage.cards.s.SeethingSong.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Serum Visions", "ap36sb", Rarity.COMMON, mage.cards.s.SerumVisions.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Serum Visions", "mb36", Rarity.COMMON, mage.cards.s.SerumVisions.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Shrapnel Blast", "ap106", Rarity.UNCOMMON, mage.cards.s.ShrapnelBlast.class)); + cards.add(new SetCardInfo("Somber Hoverguard", "ap51", Rarity.COMMON, mage.cards.s.SomberHoverguard.class)); + cards.add(new SetCardInfo("Stifle", "gn52sb", Rarity.RARE, mage.cards.s.Stifle.class)); + cards.add(new SetCardInfo("Talisman of Dominance", "mb253", Rarity.UNCOMMON, mage.cards.t.TalismanOfDominance.class)); + cards.add(new SetCardInfo("Talisman of Progress", "mb256", Rarity.UNCOMMON, mage.cards.t.TalismanOfProgress.class)); + cards.add(new SetCardInfo("Temple of the False God", "gn143", Rarity.UNCOMMON, mage.cards.t.TempleOfTheFalseGod.class)); + cards.add(new SetCardInfo("Thirst for Knowledge", "gn53", Rarity.UNCOMMON, mage.cards.t.ThirstForKnowledge.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Thirst for Knowledge", "mb53", Rarity.UNCOMMON, mage.cards.t.ThirstForKnowledge.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Thoughtcast", "ap54", Rarity.COMMON, mage.cards.t.Thoughtcast.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Thoughtcast", "mb54", Rarity.COMMON, mage.cards.t.Thoughtcast.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Tranquil Thicket", "jn326", Rarity.COMMON, mage.cards.t.TranquilThicket.class)); + cards.add(new SetCardInfo("Tree of Tales", "mb285", Rarity.COMMON, mage.cards.t.TreeOfTales.class)); + cards.add(new SetCardInfo("Vault of Whispers", "ap286", Rarity.COMMON, mage.cards.v.VaultOfWhispers.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Vault of Whispers", "mb286", Rarity.COMMON, mage.cards.v.VaultOfWhispers.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Viridian Shaman", "jn139", Rarity.UNCOMMON, mage.cards.v.ViridianShaman.class)); + cards.add(new SetCardInfo("Wayfarer's Bauble", "gn165", Rarity.COMMON, mage.cards.w.WayfarersBauble.class)); + cards.add(new SetCardInfo("Welding Jar", "ap274", Rarity.COMMON, mage.cards.w.WeldingJar.class)); + cards.add(new SetCardInfo("Windswept Heath", "jn328", Rarity.RARE, mage.cards.w.WindsweptHeath.class)); + cards.add(new SetCardInfo("Wing Shards", "jn25", Rarity.UNCOMMON, mage.cards.w.WingShards.class)); + cards.add(new SetCardInfo("Wrath of God", "gn58", Rarity.RARE, mage.cards.w.WrathOfGod.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Wrath of God", "jn58", Rarity.RARE, mage.cards.w.WrathOfGod.class, NON_FULL_USE_VARIOUS)); + } +} diff --git a/Mage.Sets/src/mage/sets/WorldMagicCupQualifier.java b/Mage.Sets/src/mage/sets/WorldMagicCupQualifier.java index b482fb9ba8c..e4bcb8363d7 100644 --- a/Mage.Sets/src/mage/sets/WorldMagicCupQualifier.java +++ b/Mage.Sets/src/mage/sets/WorldMagicCupQualifier.java @@ -6,7 +6,8 @@ import mage.constants.Rarity; import mage.constants.SetType; /** - * + * https://scryfall.com/sets/pwcq + * https://mtg.gamepedia.com/World_Magic_Cup_Qualifiers * @author fireshoes */ public final class WorldMagicCupQualifier extends ExpansionSet { @@ -18,10 +19,10 @@ public final class WorldMagicCupQualifier extends ExpansionSet { } private WorldMagicCupQualifier() { - super("World Magic Cup Qualifier", "WMCQ", ExpansionSet.buildDate(2011, 6, 17), SetType.PROMOTIONAL); + super("World Magic Cup Qualifier", "PWCQ", ExpansionSet.buildDate(2011, 6, 17), SetType.PROMOTIONAL); this.hasBoosters = false; this.hasBasicLands = false; - // https://mtg.gamepedia.com/World_Magic_Cup_Qualifiers + cards.add(new SetCardInfo("Abrupt Decay", 2016, Rarity.RARE, mage.cards.a.AbruptDecay.class)); cards.add(new SetCardInfo("Geist of Saint Traft", 2014, Rarity.MYTHIC, mage.cards.g.GeistOfSaintTraft.class)); cards.add(new SetCardInfo("Inkmoth Nexus", 2017, Rarity.SPECIAL, mage.cards.i.InkmothNexus.class)); diff --git a/Mage.Sets/src/mage/sets/Worlds.java b/Mage.Sets/src/mage/sets/Worlds.java new file mode 100644 index 00000000000..677eeaf2325 --- /dev/null +++ b/Mage.Sets/src/mage/sets/Worlds.java @@ -0,0 +1,25 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/pwor + */ +public class Worlds extends ExpansionSet { + + private static final Worlds instance = new Worlds(); + + public static Worlds getInstance() { + return instance; + } + + private Worlds() { + super("Worlds", "PWOR", ExpansionSet.buildDate(1999, 8, 4), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Balduvian Horde", 1, Rarity.RARE, mage.cards.b.BalduvianHorde.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/WorldwakePromos.java b/Mage.Sets/src/mage/sets/WorldwakePromos.java new file mode 100644 index 00000000000..fb6fceeb3e7 --- /dev/null +++ b/Mage.Sets/src/mage/sets/WorldwakePromos.java @@ -0,0 +1,31 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/pwwk + */ +public class WorldwakePromos extends ExpansionSet { + + private static final WorldwakePromos instance = new WorldwakePromos(); + + public static WorldwakePromos getInstance() { + return instance; + } + + private WorldwakePromos() { + super("Worldwake Promos", "PWWK", ExpansionSet.buildDate(2010, 7, 30), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Celestial Colonnade", 133, Rarity.RARE, mage.cards.c.CelestialColonnade.class)); + cards.add(new SetCardInfo("Comet Storm", 76, Rarity.MYTHIC, mage.cards.c.CometStorm.class)); + cards.add(new SetCardInfo("Hada Freeblade", 38, Rarity.RARE, mage.cards.h.HadaFreeblade.class)); + cards.add(new SetCardInfo("Joraga Warcaller", 106, Rarity.RARE, mage.cards.j.JoragaWarcaller.class)); + cards.add(new SetCardInfo("Kalastria Highborn", 39, Rarity.RARE, mage.cards.k.KalastriaHighborn.class)); + // Japanese-only printing + //cards.add(new SetCardInfo("Ruthless Cullblade", "65*", Rarity.COMMON, mage.cards.r.RuthlessCullblade.class)); + } +} diff --git a/Mage.Sets/src/mage/sets/ZendikarExpeditions.java b/Mage.Sets/src/mage/sets/ZendikarExpeditions.java index e9557894686..dfea6c17dd2 100644 --- a/Mage.Sets/src/mage/sets/ZendikarExpeditions.java +++ b/Mage.Sets/src/mage/sets/ZendikarExpeditions.java @@ -1,4 +1,3 @@ - package mage.sets; import mage.cards.ExpansionSet; @@ -19,8 +18,10 @@ public final class ZendikarExpeditions extends ExpansionSet { private ZendikarExpeditions() { super("Zendikar Expeditions", "EXP", ExpansionSet.buildDate(2015, 10, 2), SetType.PROMOTIONAL); + this.blockName = "Masterpiece Series"; this.hasBoosters = false; this.hasBasicLands = false; + cards.add(new SetCardInfo("Ancient Tomb", 36, Rarity.MYTHIC, mage.cards.a.AncientTomb.class, FULL_ART_BFZ_VARIOUS)); cards.add(new SetCardInfo("Arid Mesa", 24, Rarity.MYTHIC, mage.cards.a.AridMesa.class, FULL_ART_BFZ_VARIOUS)); cards.add(new SetCardInfo("Blood Crypt", 8, Rarity.MYTHIC, mage.cards.b.BloodCrypt.class, FULL_ART_BFZ_VARIOUS)); diff --git a/Mage.Sets/src/mage/sets/ZendikarPromos.java b/Mage.Sets/src/mage/sets/ZendikarPromos.java new file mode 100644 index 00000000000..08887fa91de --- /dev/null +++ b/Mage.Sets/src/mage/sets/ZendikarPromos.java @@ -0,0 +1,29 @@ +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * https://scryfall.com/sets/pzen + */ +public class ZendikarPromos extends ExpansionSet { + + private static final ZendikarPromos instance = new ZendikarPromos(); + + public static ZendikarPromos getInstance() { + return instance; + } + + private ZendikarPromos() { + super("Zendikar Promos", "PZEN", ExpansionSet.buildDate(2009, 10, 2), SetType.PROMOTIONAL); + this.hasBoosters = false; + this.hasBasicLands = false; + + cards.add(new SetCardInfo("Day of Judgment", "*9", Rarity.RARE, mage.cards.d.DayOfJudgment.class)); + cards.add(new SetCardInfo("Emeria Angel", 35, Rarity.RARE, mage.cards.e.EmeriaAngel.class)); + cards.add(new SetCardInfo("Nissa's Chosen", 34, Rarity.RARE, mage.cards.n.NissasChosen.class)); + cards.add(new SetCardInfo("Rampaging Baloths", "*178", Rarity.MYTHIC, mage.cards.r.RampagingBaloths.class)); + cards.add(new SetCardInfo("Valakut, the Molten Pinnacle", "*228", Rarity.RARE, mage.cards.v.ValakutTheMoltenPinnacle.class)); + } +} diff --git a/Mage.Tests/RB Aggro.dck b/Mage.Tests/RB Aggro.dck index 649d436fe18..36ad5af29b3 100644 --- a/Mage.Tests/RB Aggro.dck +++ b/Mage.Tests/RB Aggro.dck @@ -2,12 +2,12 @@ NAME:RB Aggro 1 [SOM:242] Mountain 1 [INV:344] Mountain 1 [INV:345] Mountain -1 [ZEN:263] Mountain +1 [ZEN:242a] Mountain 1 [SHM:294] Mountain -1 [ZEN:264] Mountain +1 [ZEN:242a] Mountain 1 [SHM:295] Mountain 1 [SHM:296] Mountain -1 [ZEN:262] Mountain +1 [ZEN:242a] Mountain 1 [ISD:261] Mountain 1 [ISD:260] Mountain 1 [AVR:240] Mountain @@ -19,7 +19,7 @@ NAME:RB Aggro 1 [M10:245] Mountain 1 [M10:242] Mountain 1 [M10:243] Mountain -1 [GUR:3] Mountain +1 [PGRU:4] Mountain 1 [MRD:299] Mountain 1 [SOM:245] Mountain 1 [SOM:244] Mountain @@ -67,5 +67,5 @@ NAME:RB Aggro 1 [TSP:295] Mountain 1 [TSP:294] Mountain 1 [ISD:259] Mountain -LAYOUT MAIN:(2,1)(CMC,true,5)|()([GUR:3],[SHM:296],[AVR:240],[SHM:295],[SHM:294],[TSP:295],[TSP:294],[10E:379],[SOM:245],[ZEN:262],[ZEN:245],[10E:378],[SOM:244],[SOM:243],[ZEN:244],[SOM:242],[ZEN:243],[ZEN:242],[ALA:243],[ALA:242],[M12:245],[CHK:299],[M12:243],[M12:244],[CHK:300],[CHK:301],[M12:242],[CHK:302],[10E:376],[M11:243],[M11:242],[M11:245],[M11:244],[MBS:152],[ALA:244],[ALA:245],[ZEN:263],[ZEN:264],[RAV:301],[RAV:300],[RAV:299],[USG:345],[USG:346],[M10:242],[RAV:302],[USG:343],[USG:344],[ISD:259],[ROE:244],[ISD:261],[ISD:260],[ROE:241],[ROE:242],[ROE:243],[MRD:301],[MRD:300],[MRD:299],[M10:244],[M10:243],[M10:245],[LRW:294],[TMP:343],[LRW:295],[LRW:296],[LRW:297],[TMP:343],[MRD:302],[TMP:343],[TMP:343],[INV:345],[INV:344]) +LAYOUT MAIN:(2,1)(CMC,true,5)|()([PGRU:4],[SHM:296],[AVR:240],[SHM:295],[SHM:294],[TSP:295],[TSP:294],[10E:379],[SOM:245],[ZEN:242a],[ZEN:245],[10E:378],[SOM:244],[SOM:243],[ZEN:244],[SOM:242],[ZEN:243],[ZEN:242],[ALA:243],[ALA:242],[M12:245],[CHK:299],[M12:243],[M12:244],[CHK:300],[CHK:301],[M12:242],[CHK:302],[10E:376],[M11:243],[M11:242],[M11:245],[M11:244],[MBS:152],[ALA:244],[ALA:245],[ZEN:242a],[ZEN:242a],[RAV:301],[RAV:300],[RAV:299],[USG:345],[USG:346],[M10:242],[RAV:302],[USG:343],[USG:344],[ISD:259],[ROE:244],[ISD:261],[ISD:260],[ROE:241],[ROE:242],[ROE:243],[MRD:301],[MRD:300],[MRD:299],[M10:244],[M10:243],[M10:245],[LRW:294],[TMP:343],[LRW:295],[LRW:296],[LRW:297],[TMP:343],[MRD:302],[TMP:343],[TMP:343],[INV:345],[INV:344]) LAYOUT SIDEBOARD:(0,0)(COLOR_IDENTITY,true,5)| diff --git a/Mage.Tests/src/test/java/org/mage/test/decks/importer/TxtDeckImporterTest.java b/Mage.Tests/src/test/java/org/mage/test/decks/importer/TxtDeckImporterTest.java index c4b1dbd4685..50180ee3d34 100644 --- a/Mage.Tests/src/test/java/org/mage/test/decks/importer/TxtDeckImporterTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/decks/importer/TxtDeckImporterTest.java @@ -35,7 +35,7 @@ public class TxtDeckImporterTest { Assert.assertEquals("Deck does not contain 3 cards, found " + deck.getCards().size(), 3, deck.getCards().size()); Assert.assertEquals("Sideboard does not contain 2 cards, found " + deck.getSideboard().size(), 2, deck.getSideboard().size()); - DeckCardLists imported = importer.importDeck("JustLands.txt"); + DeckCardLists imported = importer.importDeck("JustLands.txt", false); Assert.assertEquals("Imported deck does not contain 3 cards, found " + imported.getCards().size(), 3, imported.getCards().size()); Assert.assertEquals("Imported sideboard does not contain 2 cards, found " + imported.getSideboard().size(), 2, imported.getSideboard().size()); diff --git a/Mage.Tests/src/test/java/org/mage/test/load/LoadTest.java b/Mage.Tests/src/test/java/org/mage/test/load/LoadTest.java index 2cb55d3994d..d1e77dad433 100644 --- a/Mage.Tests/src/test/java/org/mage/test/load/LoadTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/load/LoadTest.java @@ -59,46 +59,60 @@ public class LoadTest { Deck deck; deck = DeckTestUtils.buildRandomDeck("G", false); + Assert.assertNotNull(deck); for (Card card : deck.getCards()) { + Assert.assertNotNull(card); Assert.assertTrue("card " + card.getName() + " color " + card.getColorIdentity().toString() + " must be in G", card.getColorIdentity().isGreen()); } deck = DeckTestUtils.buildRandomDeck("U", false); + Assert.assertNotNull(deck); for (Card card : deck.getCards()) { + Assert.assertNotNull(card); Assert.assertTrue("card " + card.getName() + " color " + card.getColorIdentity().toString() + " must be in U", card.getColorIdentity().isBlue()); } deck = DeckTestUtils.buildRandomDeck("BR", false); + Assert.assertNotNull(deck); for (Card card : deck.getCards()) { + Assert.assertNotNull(card); Assert.assertTrue("card " + card.getName() + " color " + card.getColorIdentity().toString() + " must be in BR", card.getColorIdentity().isBlack() || card.getColorIdentity().isRed()); } deck = DeckTestUtils.buildRandomDeck("BUG", false); + Assert.assertNotNull(deck); for (Card card : deck.getCards()) { + Assert.assertNotNull(card); Assert.assertTrue("card " + card.getName() + " color " + card.getColorIdentity().toString() + " must be in BUG", card.getColorIdentity().isBlack() || card.getColorIdentity().isBlue() || card.getColorIdentity().isGreen()); } // lands deck = DeckTestUtils.buildRandomDeck("UR", true); + Assert.assertNotNull(deck); for (Card card : deck.getCards()) { + Assert.assertNotNull(card); Assert.assertTrue("card " + card.getName() + " color " + card.getColorIdentity().toString() + " must be in UR", card.getColorIdentity().isBlue() || card.getColorIdentity().isRed()); Assert.assertEquals("card " + card.getName() + " must be basic land ", Rarity.LAND, card.getRarity()); } deck = DeckTestUtils.buildRandomDeck("B", true); + Assert.assertNotNull(deck); for (Card card : deck.getCards()) { + Assert.assertNotNull(card); Assert.assertTrue("card " + card.getName() + " color " + card.getColorIdentity().toString() + " must be in B", card.getColorIdentity().isBlack()); Assert.assertEquals("card " + card.getName() + " must be basic land ", Rarity.LAND, card.getRarity()); } // allowed sets deck = DeckTestUtils.buildRandomDeck("B", true, "GRN"); + Assert.assertNotNull(deck); for (Card card : deck.getCards()) { + Assert.assertNotNull(card); Assert.assertTrue("card " + card.getName() + " color " + card.getColorIdentity().toString() + " must be in B", card.getColorIdentity().isBlack()); Assert.assertEquals("card " + card.getName() + " have wrong set code " + card.getExpansionSetCode(), "GRN", card.getExpansionSetCode()); } diff --git a/Mage.Tests/src/test/java/org/mage/test/serverside/base/impl/CardTestPlayerAPIImpl.java b/Mage.Tests/src/test/java/org/mage/test/serverside/base/impl/CardTestPlayerAPIImpl.java index 506afe2b164..8eb95b20894 100644 --- a/Mage.Tests/src/test/java/org/mage/test/serverside/base/impl/CardTestPlayerAPIImpl.java +++ b/Mage.Tests/src/test/java/org/mage/test/serverside/base/impl/CardTestPlayerAPIImpl.java @@ -248,7 +248,7 @@ public abstract class CardTestPlayerAPIImpl extends MageTestPlayerBase implement if (loadedDeckCardLists.containsKey(deckName)) { list = loadedDeckCardLists.get(deckName); } else { - list = DeckImporter.importDeckFromFile(deckName); + list = DeckImporter.importDeckFromFile(deckName, true); loadedDeckCardLists.put(deckName, list); } Deck deck = Deck.load(list, false, false); 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 f6e9f6ac399..06a1251441e 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 @@ -114,7 +114,7 @@ public class DeckValidatorTest extends MageTestBase { @Test public void testModernCounterspell1() { ArrayList deckList = new ArrayList<>(); - deckList.add(new CardNameAmount("DD3JVC", 24, 4)); + deckList.add(new CardNameAmount("JVC", 24, 4)); deckList.add(new CardNameAmount("Mountain", 56)); Assert.assertFalse("Counterspell not allowed in modern", testDeckValid(new Modern(), deckList)); @@ -134,7 +134,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)); @@ -149,7 +149,7 @@ public class DeckValidatorTest extends MageTestBase { Assert.assertFalse("Counterspell not allowed in modern", testDeckValid(new Modern(), deckList)); deckList.clear(); - deckList.add(new CardNameAmount("FNMP", 66, 4)); + deckList.add(new CardNameAmount("F05", 11, 4)); deckList.add(new CardNameAmount("Mountain", 56)); Assert.assertFalse("Counterspell not allowed in modern", testDeckValid(new Modern(), deckList)); @@ -213,11 +213,6 @@ public class DeckValidatorTest extends MageTestBase { deckList.add(new CardNameAmount("Mountain", 56)); Assert.assertFalse("Counterspell not allowed in modern", testDeckValid(new Modern(), deckList)); - deckList.clear(); - deckList.add(new CardNameAmount("S00", 12, 4)); - deckList.add(new CardNameAmount("Mountain", 56)); - Assert.assertFalse("Counterspell not allowed in modern", testDeckValid(new Modern(), deckList)); - } @Test diff --git a/Mage.Verify/src/main/java/mage/verify/MtgJson.java b/Mage.Verify/src/main/java/mage/verify/MtgJson.java index af284491bc0..705564689bb 100644 --- a/Mage.Verify/src/main/java/mage/verify/MtgJson.java +++ b/Mage.Verify/src/main/java/mage/verify/MtgJson.java @@ -25,30 +25,23 @@ public final class MtgJson { public static final boolean MTGJSON_IGNORE_NEW_PROPERTIES = true; // set it to false for full mtgjson checks and research (new fields finds or mtgjson updates) + // TODO: MtgJson now seems to use upper case set codes only. + // Review the ones beginning with a lower case "p" and remove the redundant entries. static { - mtgJsonToXMageCodes.put("pWCQ", "WMCQ"); - mtgJsonToXMageCodes.put("pSUS", "SUS"); - mtgJsonToXMageCodes.put("pPRE", "PTC"); - mtgJsonToXMageCodes.put("pMPR", "MPRP"); - mtgJsonToXMageCodes.put("pMEI", "MBP"); - mtgJsonToXMageCodes.put("pGTW", "GRC"); // pGTW - Gateway = GRC (WPN + Gateway in one inner set) - mtgJsonToXMageCodes.put("pWPN", "GRC"); // pWPN - Wizards Play Network = GRC (WPN + Gateway in one inner set) - mtgJsonToXMageCodes.put("pGRU", "GUR"); - mtgJsonToXMageCodes.put("pGPX", "GPX"); + mtgJsonToXMageCodes.put("pPRE", "PPRE"); + // mtgJsonToXMageCodes.put("pMPR", "MPRP"); // TODO: The set was split into the individual sets + mtgJsonToXMageCodes.put("pGRU", "PGRU"); mtgJsonToXMageCodes.put("pFNM", "FNMP"); - mtgJsonToXMageCodes.put("pELP", "EURO"); - mtgJsonToXMageCodes.put("pARL", "ARENA"); - mtgJsonToXMageCodes.put("pALP", "APAC"); + mtgJsonToXMageCodes.put("pELP", "PELP"); + mtgJsonToXMageCodes.put("pARL", "PARL"); // TODO: What about the other Arena League sets (1999-2006)? + mtgJsonToXMageCodes.put("pALP", "PALP"); mtgJsonToXMageCodes.put("PO2", "P02"); - mtgJsonToXMageCodes.put("DD3_JVC", "DD3JVC"); + mtgJsonToXMageCodes.put("DD3_JVC", "JVC"); mtgJsonToXMageCodes.put("DD3_GVL", "DDD"); - mtgJsonToXMageCodes.put("DD3_EVG", "DD3EVG"); + mtgJsonToXMageCodes.put("DD3_EVG", "EVG"); mtgJsonToXMageCodes.put("DD3_DVD", "DDC"); mtgJsonToXMageCodes.put("NMS", "NEM"); - mtgJsonToXMageCodes.put("MPS_AKH", "MPS-AKH"); mtgJsonToXMageCodes.put("FRF_UGIN", "UGIN"); - mtgJsonToXMageCodes.put("pCMP", "CP"); - // revert search for (Map.Entry entry : mtgJsonToXMageCodes.entrySet()) { @@ -122,11 +115,12 @@ public final class MtgJson { if (stream == null) { File file = new File(filename); if (!file.exists()) { + System.out.println("Downloading " + filename + " to " + file.getAbsolutePath()); URLConnection connection = new URL("https://mtgjson.com/files/" + filename).openConnection(); connection.setRequestProperty("user-agent", "xmage"); InputStream download = connection.getInputStream(); Files.copy(download, file.toPath(), StandardCopyOption.REPLACE_EXISTING); - System.out.println("Downloaded " + filename + " to " + file.getAbsolutePath()); + System.out.println("Downloading DONE"); } else { System.out.println("Using " + filename + " from " + file.getAbsolutePath()); } diff --git a/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java b/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java index 9b438421917..cbe19b2bb1a 100644 --- a/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java +++ b/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java @@ -1,5 +1,6 @@ package mage.verify; +import com.google.common.base.CharMatcher; import mage.ObjectColor; import mage.abilities.Ability; import mage.abilities.effects.keyword.ScryEffect; @@ -26,6 +27,7 @@ import org.apache.log4j.Logger; import org.junit.Assert; import org.junit.Ignore; import org.junit.Test; +import org.mage.plugins.card.dl.sources.ScryfallImageSupportCards; import org.mage.plugins.card.images.CardDownloadData; import org.mage.plugins.card.images.DownloadPicturesService; import org.reflections.Reflections; @@ -51,12 +53,154 @@ public class VerifyCardDataTest { private static final Logger logger = Logger.getLogger(VerifyCardDataTest.class); private static final String FULL_ABILITIES_CHECK_SET_CODE = "THB"; // check all abilities and output cards with wrong abilities texts; + private static final boolean AUTO_FIX_SAMPLE_DECKS = false; // debug only: fix sample decks if it contains errors like wrong card numbers // right now this is very noisy, and not useful enough to make any assertions on private static final boolean CHECK_SOURCE_TOKENS = false; private static final HashMap> skipCheckLists = new HashMap<>(); private static final Set subtypesToIgnore = new HashSet<>(); + private static final String SKIP_LIST_PT = "PT"; + private static final String SKIP_LIST_COLOR = "COLOR"; + private static final String SKIP_LIST_COST = "COST"; + private static final String SKIP_LIST_SUPERTYPE = "SUPERTYPE"; + private static final String SKIP_LIST_TYPE = "TYPE"; + private static final String SKIP_LIST_SUBTYPE = "SUBTYPE"; + private static final String SKIP_LIST_NUMBER = "NUMBER"; + private static final String SKIP_LIST_MISSING_ABILITIES = "MISSING_ABILITIES"; + private static final String SKIP_LIST_DOUBLE_RARE = "DOUBLE_RARE"; + private static final String SKIP_LIST_UNSUPPORTED_SETS = "UNSUPPORTED_SETS"; + private static final String SKIP_LIST_SCRYFALL_DOWNLOAD_SETS = "SCRYFALL_DOWNLOAD_SETS"; + private static final String SKIP_LIST_SAMPLE_DECKS = "SAMPLE_DECKS"; + private static final Pattern SHORT_JAVA_STRING = Pattern.compile("(?<=\")[A-Z][a-z]+(?=\")"); + + static { + // skip lists for checks (example: unstable cards with same name may have different stats) + // can be full set ignore list or set + cardname + + // power-toughness + skipListCreate(SKIP_LIST_PT); + skipListAddName(SKIP_LIST_PT, "UST", "Garbage Elemental"); + skipListAddName(SKIP_LIST_PT, "UST", "Infinity Elemental"); + + // color + skipListCreate(SKIP_LIST_COLOR); + + // cost + skipListCreate(SKIP_LIST_COST); + skipListAddName(SKIP_LIST_COST, "KTK", "Erase"); + skipListAddName(SKIP_LIST_COST, "M13", "Erase"); + skipListAddName(SKIP_LIST_COST, "ULG", "Erase"); + skipListAddName(SKIP_LIST_COST, "WC00", "Erase"); + skipListAddName(SKIP_LIST_COST, "H17", "Grimlock, Dinobot Leader"); + skipListAddName(SKIP_LIST_COST, "UST", "Everythingamajig"); + + // supertype + skipListCreate(SKIP_LIST_SUPERTYPE); + + // type + skipListCreate(SKIP_LIST_TYPE); + skipListAddName(SKIP_LIST_TYPE, "UNH", "Old Fogey"); + skipListAddName(SKIP_LIST_TYPE, "UND", "Old Fogey"); + skipListAddName(SKIP_LIST_TYPE, "UST", "capital offense"); + + // subtype + skipListCreate(SKIP_LIST_SUBTYPE); + skipListAddName(SKIP_LIST_SUBTYPE, "UGL", "Miss Demeanor"); + + // number + skipListCreate(SKIP_LIST_NUMBER); + + // missing abilities + skipListCreate(SKIP_LIST_MISSING_ABILITIES); + + // double rare cards + skipListCreate(SKIP_LIST_DOUBLE_RARE); + + // Un-supported sets (mtgjson/scryfall contains that set but xmage don't implement it) + // Example: Non-English or empty sets: Token sets, Archenemy Schemes, Plane-Chase Planes, etc. + skipListCreate(SKIP_LIST_UNSUPPORTED_SETS); + // + // Non-English-only sets should not be added. https://github.com/magefree/mage/pull/6190#issuecomment-582354790 + skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "4BB"); // 4th Edition Foreign black border. + skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "FBB"); // Foreign Black Border. Not on Scryfall, but other sources use this to distinguish non-English Revised cards + skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "PHJ"); // Hobby Japan Promos + skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "PJJT"); // Japan Junior Tournament + skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "PRED"); // Redemption Program + skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "PSAL"); // Salvat 2005 + skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "PS11"); // Salvat 2011 + skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "PMPS"); // Magic Premiere Shop 2005, Japanese Basic lands + skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "PMPS06"); // Magic Premiere Shop 2006, Japanese Basic lands + skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "PMPS07"); // Magic Premiere Shop 2007, Japanese Basic lands + skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "PMPS08"); // Magic Premiere Shop 2008, Japanese Basic lands + skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "PMPS09"); // Magic Premiere Shop 2009, Japanese Basic lands + skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "PMPS10"); // Magic Premiere Shop 2010, Japanese Basic lands + skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "PMPS11"); // Magic Premiere Shop 2011, Japanese Basic lands + skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "REN"); // Renaissance + skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "RIN"); // Rinascimento + // + // Archenemy Schemes + skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "OARC"); // Archenemy Schemes + skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "OE01"); // Archenemy: Nicol Bolas Schemes + skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "PARC"); // Promotional Schemes + // + // Plane-chase Planes + skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "OHOP"); // Planechase Planes + skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "OPC2"); // Planechase 2012 Plane + skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "OPCA"); // Planechase Anthology Planes + skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "PHOP"); // Promotional Planes + // + // Token sets TODO: implement tokens only sets + skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "L12"); // League Tokens 2012 + skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "L13"); // League Tokens 2013 + skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "L14"); // League Tokens 2014 + skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "L15"); // League Tokens 2015 + skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "L16"); // League Tokens 2016 + skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "L17"); // League Tokens 2017 + skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "PLNY"); // 2018 Lunar New Year + skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "F18"); // Friday Night Magic 2018 + skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "PR2"); // Magic Player Rewards 2002 + // + // PvE sets containing non-traditional cards. These enable casual PvE battles against a "random AI"-driven opponent. + skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "PPC1"); // M15 Prerelease Challenge + skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "TBTH"); // Battle the Horde + skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "TDAG"); // Defeat a God + skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "TFTH"); // Face the Hydra + skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "THP1"); // Theros Hero's Path + skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "THP2"); // Born of the Gods Hero's Path + skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "THP3"); // Journey into Nyx Hero's Path + // + // Commander Oversized cards. + skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "OCMD"); // Commander 2011 Oversized + skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "OC13"); // Commander 2013 Oversized + skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "OC14"); // Commander 2014 Oversized + skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "OC15"); // Commander 2015 Oversized + skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "OC16"); // Commander 2016 Oversized + skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "OC17"); // Commander 2017 Oversized + skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "OC18"); // Commander 2018 Oversized + skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "OC19"); // Commander 2019 Oversized + skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "OCM1"); // Commander's Arsenal Oversized + // + // Other + skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "PCEL"); // Celebration Cards + skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "PMOA"); // Magic Online Avatar + skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "PVAN"); // Vanguard Series + skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "AMH1"); // Modern Horizons Art Series + skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "PTG"); // Ponies: The Galloping + + // scryfall download sets (missing from scryfall website) + skipListCreate(SKIP_LIST_SCRYFALL_DOWNLOAD_SETS); + skipListAddName(SKIP_LIST_SCRYFALL_DOWNLOAD_SETS, "SWS"); // Star Wars + + // sample decks checking - some decks can contains unimplemented cards, so ignore it + // file name must be related to sample-decks folder + // for linux/windows build system use paths constructor + skipListCreate(SKIP_LIST_SAMPLE_DECKS); + skipListAddName(SKIP_LIST_SAMPLE_DECKS, Paths.get("Commander", "Commander 2019", "Merciless Rage.dck").toString()); // TODO: delete after Aeon Engine implemented + } + + private final ArrayList outputMessages = new ArrayList<>(); + private int failed = 0; private static void skipListCreate(String listName) { skipCheckLists.put(listName, new LinkedHashSet<>()); @@ -79,57 +223,11 @@ public class VerifyCardDataTest { return skipCheckLists.get(listName).contains(set); } - private static final String SKIP_LIST_PT = "PT"; - private static final String SKIP_LIST_COLOR = "COLOR"; - private static final String SKIP_LIST_COST = "COST"; - private static final String SKIP_LIST_SUPERTYPE = "SUPERTYPE"; - private static final String SKIP_LIST_TYPE = "TYPE"; - private static final String SKIP_LIST_SUBTYPE = "SUBTYPE"; - private static final String SKIP_LIST_NUMBER = "NUMBER"; - private static final String SKIP_LIST_MISSING_ABILITIES = "MISSING_ABILITIES"; - private static final String SKIP_LIST_DOUBLE_RARE = "DOUBLE_RARE"; - - static { - // skip lists for checks (example: unstable cards with same name may have different stats) - // can be full set ignore list or set + cardname - - // power-toughness - skipListCreate(SKIP_LIST_PT); - skipListAddName(SKIP_LIST_PT, "UST", "Garbage Elemental"); - skipListAddName(SKIP_LIST_PT, "UST", "Infinity Elemental"); - skipListAddName(SKIP_LIST_PT, "UNH", "Old Fogey"); - - // color - skipListCreate(SKIP_LIST_COLOR); - - // cost - skipListCreate(SKIP_LIST_COST); - skipListAddName(SKIP_LIST_COST, "KTK", "Erase"); - skipListAddName(SKIP_LIST_COST, "M13", "Erase"); - skipListAddName(SKIP_LIST_COST, "ULG", "Erase"); - skipListAddName(SKIP_LIST_COST, "H17", "Grimlock, Dinobot Leader"); - skipListAddName(SKIP_LIST_COST, "UST", "Everythingamajig"); - - // supertype - skipListCreate(SKIP_LIST_SUPERTYPE); - - // type - skipListCreate(SKIP_LIST_TYPE); - skipListAddName(SKIP_LIST_TYPE, "UNH", "Old Fogey"); - skipListAddName(SKIP_LIST_TYPE, "UST", "capital offense"); - - // subtype - skipListCreate(SKIP_LIST_SUBTYPE); - skipListAddName(SKIP_LIST_SUBTYPE, "UGL", "Miss Demeanor"); - - // number - skipListCreate(SKIP_LIST_NUMBER); - - // missing abilities - skipListCreate(SKIP_LIST_MISSING_ABILITIES); - - // double rare cards - skipListCreate(SKIP_LIST_DOUBLE_RARE); + private static boolean eqSet(Collection a, Collection b) { + if (a == null || a.isEmpty()) { + return b == null || b.isEmpty(); + } + return b != null && a.size() == b.size() && a.containsAll(b); } private void warn(Card card, String message) { @@ -141,9 +239,6 @@ public class VerifyCardDataTest { outputMessages.add("Error: (" + category + ") " + message + " for " + card.getExpansionSetCode() + " - " + card.getName() + " - " + card.getCardNumber()); } - private int failed = 0; - private final ArrayList outputMessages = new ArrayList<>(); - @Test public void test_verifyCards() throws IOException { int cardIndex = 0; @@ -304,9 +399,7 @@ public class VerifyCardDataTest { } } - for (String error : errorsList) { - System.out.println(error); - } + printMessages(errorsList); // unique cards stats System.out.println("Total unique cards: " + classesIndex.size() + ", total non unique cards (reprints): " + totalCards); @@ -318,44 +411,90 @@ public class VerifyCardDataTest { @Test public void test_checkMissingSets() { - Collection errorsList = new ArrayList<>(); + // generate unimplemented sets list + Collection info = new ArrayList<>(); - int totalMissingSets = 0; - int totalMissingCards = 0; + int missingSets = 0; + int missingCards = 0; + int unsupportedSets = 0; + int unsupportedCards = 0; + int mtgCards = 0; + int mtgSets = 0; + int xmageCards = 0; + int xmageUnofficialSets = 0; + int xmageUnofficialCards = 0; Collection sets = Sets.getInstance().values(); + + // official sets for (Map.Entry refEntry : MtgJson.sets().entrySet()) { JsonSet refSet = refEntry.getValue(); + mtgCards += refSet.totalSetSize; // replace codes for aliases String searchSet = MtgJson.mtgJsonToXMageCodes.getOrDefault(refSet.code, refSet.code); + if (skipListHaveName(SKIP_LIST_UNSUPPORTED_SETS, searchSet)) { + unsupportedSets++; + unsupportedCards += refSet.totalSetSize; + continue; + } ExpansionSet mageSet = Sets.findSet(searchSet.toUpperCase(Locale.ENGLISH)); if (mageSet == null) { - totalMissingSets = totalMissingSets + 1; - totalMissingCards = totalMissingCards + refSet.cards.size(); - errorsList.add("Warning: missing set " + refSet.code + " - " + refSet.name + " (cards: " + refSet.cards.size() + ")"); + missingSets = missingSets + 1; + missingCards = missingCards + refSet.cards.size(); + info.add("Warning: missing set " + refSet.code + " - " + refSet.name + " (cards: " + refSet.cards.size() + ", date: " + refSet.releaseDate + ")"); + continue; } + + mtgSets++; + xmageCards += mageSet.getSetCardInfo().size(); } - if (errorsList.size() > 0) { - errorsList.add("Warning: total missing sets: " + totalMissingSets + ", with missing cards: " + totalMissingCards); + if (info.size() > 0) { + info.add("Warning: total missing sets: " + missingSets + ", with missing cards: " + missingCards); } - // only warnings - for (String error : errorsList) { - System.out.println(error); + // unofficial sets info + for (ExpansionSet set : sets) { + if (MtgJson.sets().containsKey(set.getCode())) { + continue; + } + + // TODO: 8EB and 9EB uses workaround to split from main set, so it will be in unofficial list until booster cards improve + xmageUnofficialSets++; + xmageUnofficialCards += set.getSetCardInfo().size(); + info.add("Unofficial set: " + set.getCode() + " - " + set.getName() + ", cards: " + set.getSetCardInfo().size() + ", year: " + set.getReleaseYear()); } + + printMessages(info); + System.out.println(); + System.out.println("Official sets implementation stats:"); + System.out.println("* MTG sets: " + MtgJson.sets().size() + ", cards: " + mtgCards); + System.out.println("* Implemented sets: " + mtgSets + ", cards: " + xmageCards); + System.out.println("* Unsupported sets: " + unsupportedSets + ", cards: " + unsupportedCards); + System.out.println("* TODO: " + (MtgJson.sets().size() - mtgSets - unsupportedSets) + ", cards: " + (mtgCards - xmageCards - unsupportedCards)); + System.out.println(); + System.out.println("Unofficial sets implementation stats:"); + System.out.println("* Implemented sets: " + xmageUnofficialSets + ", cards: " + xmageUnofficialCards); + System.out.println(); } @Test - @Ignore // TODO: enable and fix broken decks after promo sets merge https://github.com/magefree/mage/pull/6190 public void test_checkSampleDecks() { Collection errorsList = new ArrayList<>(); - // collect all files - final String rootPath = "..\\Mage.Client\\release\\sample-decks\\"; + // workaround to run verify test from IDE or from maven's project root folder + Path rootPath = Paths.get("Mage.Client", "release", "sample-decks"); + if (!Files.exists(rootPath)) { + rootPath = Paths.get("..", "Mage.Client", "release", "sample-decks"); + } + if (!Files.exists(rootPath)) { + Assert.fail("Sample decks: unknown root folder " + rootPath.toAbsolutePath().toString()); + } + + // collect all files in all root's folders Collection filesList = new ArrayList<>(); try { - Files.walkFileTree(Paths.get(rootPath), new SimpleFileVisitor() { + Files.walkFileTree(rootPath, new SimpleFileVisitor() { @Override public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException { filesList.add(file); @@ -366,24 +505,28 @@ public class VerifyCardDataTest { e.printStackTrace(); errorsList.add("Error: sample deck - can't get folder content - " + e.getMessage()); } - Assert.assertTrue("Sample decks: can't find any deck files", filesList.size() > 0); + Assert.assertTrue("Sample decks: can't find any deck files in " + rootPath.toAbsolutePath().toString(), filesList.size() > 0); // try to open deck files int totalErrorFiles = 0; for (Path deckFile : filesList) { - String deckName = deckFile.toString().replace(rootPath, ""); + String deckName = rootPath.relativize(deckFile).toString(); + if (skipListHaveName(SKIP_LIST_SAMPLE_DECKS, deckName)) { + continue; + } + StringBuilder deckErrors = new StringBuilder(); - DeckCardLists deckCards = DeckImporter.importDeckFromFile(deckFile.toString(), deckErrors); + DeckCardLists deckCards = DeckImporter.importDeckFromFile(deckFile.toString(), deckErrors, AUTO_FIX_SAMPLE_DECKS); if (!deckErrors.toString().isEmpty()) { - errorsList.add("Error: sample contains errors " + deckName); - System.out.println("Errors in sample file " + deckName + ":\n" + deckErrors.toString()); + errorsList.add("Error: sample deck contains errors " + deckName); + System.out.println("Errors in sample deck " + deckName + ":\n" + deckErrors.toString()); totalErrorFiles++; continue; } if ((deckCards.getCards().size() + deckCards.getSideboard().size()) < 10) { - errorsList.add("Error: sample deck contains too little cards " + deckName); + errorsList.add("Error: sample deck contains too little cards (" + deckCards.getSideboard().size() + ") " + deckName); totalErrorFiles++; continue; } @@ -395,6 +538,36 @@ public class VerifyCardDataTest { } } + @Test + public void test_checkMissingScryfallSettings() { + Collection errorsList = new ArrayList<>(); + + Collection xmageSets = Sets.getInstance().values(); + Set scryfallSets = ScryfallImageSupportCards.getSupportedSets(); + + // missing + for (ExpansionSet set : xmageSets) { + if (skipListHaveName(SKIP_LIST_SCRYFALL_DOWNLOAD_SETS, set.getCode())) + continue; + + if (!scryfallSets.contains(set.getCode())) { + errorsList.add("Error: scryfall download missing setting: " + set.getCode() + " - " + set.getName()); + } + } + + // unknown + for (String scryfallCode : scryfallSets) { + if (xmageSets.stream().noneMatch(e -> e.getCode().equals(scryfallCode))) { + errorsList.add("Error: scryfall download unknown setting: " + scryfallCode); + } + } + + printMessages(errorsList); + if (errorsList.size() > 0) { + Assert.fail("Found scryfall download errors: " + errorsList.size()); + } + } + private Object createNewObject(Class clazz) { try { Constructor cons = clazz.getConstructor(); @@ -531,17 +704,15 @@ public class VerifyCardDataTest { Collection sets = Sets.getInstance().values(); - // 1. wrong UsesVariousArt settings (set have duplicated card name without that setting -- e.g. cards will have same image) + // CHECK: wrong UsesVariousArt settings (set have duplicated card name without that setting -- e.g. cards will have same image) for (ExpansionSet set : sets) { - // double names Map doubleNames = new HashMap<>(); for (ExpansionSet.SetCardInfo card : set.getSetCardInfo()) { int count = doubleNames.getOrDefault(card.getName(), 0); doubleNames.put(card.getName(), count + 1); } - // check double names for (ExpansionSet.SetCardInfo card : set.getSetCardInfo()) { boolean cardHaveDoubleName = (doubleNames.getOrDefault(card.getName(), 0) > 1); boolean cardHaveVariousSetting = card.getGraphicInfo() != null && card.getGraphicInfo().getUsesVariousArt(); @@ -559,14 +730,19 @@ public class VerifyCardDataTest { cardInfo.getCardNumber(), cardInfo.getRarity(), cardInfo.getGraphicInfo())); Assert.assertNotNull(card); - // 2. all planeswalkers must be legendary + // CHECK: all planeswalkers must be legendary if (card.getCardType().contains(CardType.PLANESWALKER) && !card.getSuperType().contains(SuperType.LEGENDARY)) { errorsList.add("error, planeswalker must have legendary type: " + set.getCode() + " - " + set.getName() + " - " + card.getName() + " - " + card.getCardNumber()); } - // 3. check that getMana works without NPE errors (it uses getNetMana with empty game param for AI score calcs) + // CHECK: getMana must works without NPE errors (it uses getNetMana with empty game param for AI score calcs) // https://github.com/magefree/mage/issues/6300 card.getMana(); + + // CHECK: non ascii symbols in card numbers + if (!CharMatcher.ascii().matchesAllOf(card.getName()) || !CharMatcher.ascii().matchesAllOf(card.getCardNumber())) { + errorsList.add("error, card name or number contains non-ascii symbols: " + set.getCode() + " - " + set.getName() + " - " + card.getName() + " - " + card.getCardNumber()); + } } } @@ -802,8 +978,6 @@ public class VerifyCardDataTest { } } - private static final Pattern SHORT_JAVA_STRING = Pattern.compile("(?<=\")[A-Z][a-z]+(?=\")"); - private Set findSourceTokens(Class c) throws IOException { if (!CHECK_SOURCE_TOKENS || BasicLand.class.isAssignableFrom(c)) { return null; @@ -1067,6 +1241,62 @@ public class VerifyCardDataTest { System.out.println(text); } + + /* + for(String rule : card.getRules()) { + rule = rule.replaceAll("(?i).+", ""); // Ignoring reminder text in italic + // TODO: add Equip {3} checks + // TODO: add Raid and other words checks + String[] sl = rule.split(":"); + if (sl.length == 2 && !sl[0].isEmpty()) { + String cardCost = sl[0] + .replace("{this}", card.getName()) + //.replace("", "") + //.replace("", "") + .replace("—", "—"); + String cardAbility = sl[1] + .trim() + .replace("{this}", card.getName()) + //.replace("", "") + //.replace("", "") + .replace("—", "—");; + + boolean found = false; + for (String refRule : refRules) { + refRule = refRule.replaceAll("(?i).+", ""); // Ignoring reminder text in italic + + // fix for ref mana: ref card have xxx instead {T}: Add {xxx}, example: W + if (refRule.length() == 1) { + refRule = "{T}: Add {" + refRule + "}"; + } + refRule = refRule + .trim() + //.replace("", "") + //.replace("", "") + .replace("—", "—"); + + // normal + if (refRule.startsWith(cardCost)) { + found = true; + break; + } + + // ref card have (xxx) instead xxx, example: ({T}: Add {G}.) + // ref card have (xxx) instead xxx, example: ({T}: Add {G}.) + // TODO: delete? + if (refRule.startsWith("(" + cardCost)) { + found = true; + break; + } + } + if (!found) { + fail(card, "abilities", "card ability have cost, but can't find in ref [" + cardCost + ": " + cardAbility + "]"); + } + } + + } + }*/ + private void checkWrongAbilitiesText(Card card, JsonCard ref, int cardIndex) { // checks missing or wrong text if (!card.getExpansionSetCode().equals(FULL_ABILITIES_CHECK_SET_CODE)) { @@ -1135,63 +1365,6 @@ public class VerifyCardDataTest { } } - - /* - for(String rule : card.getRules()) { - rule = rule.replaceAll("(?i).+", ""); // Ignoring reminder text in italic - // TODO: add Equip {3} checks - // TODO: add Raid and other words checks - String[] sl = rule.split(":"); - if (sl.length == 2 && !sl[0].isEmpty()) { - String cardCost = sl[0] - .replace("{this}", card.getName()) - //.replace("", "") - //.replace("", "") - .replace("—", "—"); - String cardAbility = sl[1] - .trim() - .replace("{this}", card.getName()) - //.replace("", "") - //.replace("", "") - .replace("—", "—");; - - boolean found = false; - for (String refRule : refRules) { - refRule = refRule.replaceAll("(?i).+", ""); // Ignoring reminder text in italic - - // fix for ref mana: ref card have xxx instead {T}: Add {xxx}, example: W - if (refRule.length() == 1) { - refRule = "{T}: Add {" + refRule + "}"; - } - refRule = refRule - .trim() - //.replace("", "") - //.replace("", "") - .replace("—", "—"); - - // normal - if (refRule.startsWith(cardCost)) { - found = true; - break; - } - - // ref card have (xxx) instead xxx, example: ({T}: Add {G}.) - // ref card have (xxx) instead xxx, example: ({T}: Add {G}.) - // TODO: delete? - if (refRule.startsWith("(" + cardCost)) { - found = true; - break; - } - } - if (!found) { - fail(card, "abilities", "card ability have cost, but can't find in ref [" + cardCost + ": " + cardAbility + "]"); - } - } - - } - }*/ - - private void checkTypes(Card card, JsonCard ref) { if (skipListHaveName(SKIP_LIST_TYPE, card.getExpansionSetCode(), card.getName())) { return; @@ -1207,13 +1380,6 @@ public class VerifyCardDataTest { } } - private static boolean eqSet(Collection a, Collection b) { - if (a == null || a.isEmpty()) { - return b == null || b.isEmpty(); - } - return b != null && a.size() == b.size() && a.containsAll(b); - } - private void checkPT(Card card, JsonCard ref) { if (skipListHaveName(SKIP_LIST_PT, card.getExpansionSetCode(), card.getName())) { return; diff --git a/Mage/src/main/java/mage/cards/ExpansionSet.java b/Mage/src/main/java/mage/cards/ExpansionSet.java index f1879539936..1f26c9a428a 100644 --- a/Mage/src/main/java/mage/cards/ExpansionSet.java +++ b/Mage/src/main/java/mage/cards/ExpansionSet.java @@ -1,8 +1,5 @@ package mage.cards; -import java.io.Serializable; -import java.util.*; -import java.util.stream.Collectors; import mage.ObjectColor; import mage.abilities.Ability; import mage.abilities.keyword.PartnerWithAbility; @@ -15,6 +12,10 @@ import mage.util.CardUtil; import mage.util.RandomUtil; import org.apache.log4j.Logger; +import java.io.Serializable; +import java.util.*; +import java.util.stream.Collectors; + /** * @author BetaSteward_at_googlemail.com */ @@ -135,6 +136,12 @@ public abstract class ExpansionSet implements Serializable { return releaseDate; } + public int getReleaseYear() { + Calendar cal = Calendar.getInstance(); + cal.setTime(this.getReleaseDate()); + return cal.get(Calendar.YEAR); + } + public ExpansionSet getParentSet() { return parentSet; } diff --git a/Mage/src/main/java/mage/cards/decks/importer/CodDeckImporter.java b/Mage/src/main/java/mage/cards/decks/importer/CodDeckImporter.java index a79a6beeb5b..e518e5ea79b 100644 --- a/Mage/src/main/java/mage/cards/decks/importer/CodDeckImporter.java +++ b/Mage/src/main/java/mage/cards/decks/importer/CodDeckImporter.java @@ -1,5 +1,11 @@ package mage.cards.decks.importer; +import mage.cards.decks.DeckCardInfo; +import mage.cards.decks.DeckCardLists; +import mage.cards.repository.CardInfo; +import org.w3c.dom.Document; +import org.w3c.dom.Node; + import java.util.Collections; import java.util.List; import java.util.Optional; @@ -7,68 +13,67 @@ import java.util.function.Function; import java.util.stream.Collectors; import java.util.stream.Stream; -import org.w3c.dom.Document; -import org.w3c.dom.Node; - -import mage.cards.decks.DeckCardInfo; -import mage.cards.decks.DeckCardLists; -import mage.cards.repository.CardInfo; - public class CodDeckImporter extends XmlDeckImporter { - @Override - public DeckCardLists importDeck(String filename, StringBuilder errorMessages) { - try { - Document doc = getXmlDocument(filename); - DeckCardLists decklist = new DeckCardLists(); + /** + * @param filename + * @param errorMessages + * @param saveAutoFixedFile do not supported for current format + * @return + */ + @Override + public DeckCardLists importDeck(String filename, StringBuilder errorMessages, boolean saveAutoFixedFile) { + try { + Document doc = getXmlDocument(filename); + DeckCardLists decklist = new DeckCardLists(); - List mainCards = getNodes(doc, "/cockatrice_deck/zone[@name='main']/card"); - decklist.setCards(mainCards.stream() - .flatMap(toDeckCardInfo(getCardLookup(), errorMessages)) - .collect(Collectors.toList())); + List mainCards = getNodes(doc, "/cockatrice_deck/zone[@name='main']/card"); + decklist.setCards(mainCards.stream() + .flatMap(toDeckCardInfo(getCardLookup(), errorMessages)) + .collect(Collectors.toList())); - List sideboardCards = getNodes(doc, "/cockatrice_deck/zone[@name='side']/card"); - decklist.setSideboard(sideboardCards.stream() - .flatMap(toDeckCardInfo(getCardLookup(), errorMessages)) - .collect(Collectors.toList())); + List sideboardCards = getNodes(doc, "/cockatrice_deck/zone[@name='side']/card"); + decklist.setSideboard(sideboardCards.stream() + .flatMap(toDeckCardInfo(getCardLookup(), errorMessages)) + .collect(Collectors.toList())); - getNodes(doc, "/cockatrice_deck/deckname") - .forEach(n -> decklist.setName(n.getTextContent().trim())); + getNodes(doc, "/cockatrice_deck/deckname") + .forEach(n -> decklist.setName(n.getTextContent().trim())); - return decklist; - } catch (Exception e) { - logger.error("Error loading deck", e); - errorMessages.append("There was an error loading the deck."); - return new DeckCardLists(); + return decklist; + } catch (Exception e) { + logger.error("Error loading deck", e); + errorMessages.append("There was an error loading the deck."); + return new DeckCardLists(); + } } - } - private static int getQuantityFromNode(Node node) { - Node numberNode = node.getAttributes().getNamedItem("number"); - if (numberNode == null) { - return 1; + private static int getQuantityFromNode(Node node) { + Node numberNode = node.getAttributes().getNamedItem("number"); + if (numberNode == null) { + return 1; + } + try { + return Math.min(100, Math.max(1, Integer.parseInt(numberNode.getNodeValue()))); + } catch (NumberFormatException e) { + return 1; + } } - try { - return Math.min(100, Math.max(1, Integer.parseInt(numberNode.getNodeValue()))); - } catch (NumberFormatException e) { - return 1; - } - } - private static Function> toDeckCardInfo(CardLookup lookup, StringBuilder errors) { - return node -> { - String name = node.getAttributes().getNamedItem("name").getNodeValue().trim(); - Optional cardInfo = lookup.lookupCardInfo(name); - if (cardInfo.isPresent()) { - CardInfo info = cardInfo.get(); - return Collections.nCopies( - getQuantityFromNode(node), - new DeckCardInfo(info.getName(), info.getCardNumber(), info.getSetCode())).stream(); - } else { - errors.append("Could not find card: '").append(name).append("'\n"); - return Stream.empty(); - } - }; - } + private static Function> toDeckCardInfo(CardLookup lookup, StringBuilder errors) { + return node -> { + String name = node.getAttributes().getNamedItem("name").getNodeValue().trim(); + Optional cardInfo = lookup.lookupCardInfo(name); + if (cardInfo.isPresent()) { + CardInfo info = cardInfo.get(); + return Collections.nCopies( + getQuantityFromNode(node), + new DeckCardInfo(info.getName(), info.getCardNumber(), info.getSetCode())).stream(); + } else { + errors.append("Could not find card: '").append(name).append("'\n"); + return Stream.empty(); + } + }; + } } diff --git a/Mage/src/main/java/mage/cards/decks/importer/DckDeckImporter.java b/Mage/src/main/java/mage/cards/decks/importer/DckDeckImporter.java index f7d874f0410..834aaf0ef8b 100644 --- a/Mage/src/main/java/mage/cards/decks/importer/DckDeckImporter.java +++ b/Mage/src/main/java/mage/cards/decks/importer/DckDeckImporter.java @@ -7,11 +7,15 @@ import mage.cards.repository.CardInfo; import mage.cards.repository.CardRepository; import java.util.ArrayList; +import java.util.LinkedHashMap; import java.util.List; +import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; /** + * Original xmage's deck format (uses by deck editor) + * * @author North */ public class DckDeckImporter extends PlainTextDeckImporter { @@ -24,13 +28,25 @@ public class DckDeckImporter extends PlainTextDeckImporter { private static final Pattern layoutStackEntryPattern = Pattern.compile("\\[(\\w+[^:]*\\w*):(\\w+\\w*)]"); // test cases: [JR:64ab],[JR:64],[MPSAK1321:43],[MPSAKH:9],[MPS123-AKH:32],[MPS-13AKH:30],[MPS-AKH:49],[MPS-AKH:11], [PUMA:U16] + // possible fixes for card numbers: [code:123] -> [code:456] + // possible fixes for card numbers with name: [code:123] card1 -> [code:456] card2 + private final Map possibleFixes = new LinkedHashMap<>(); + @Override - protected void readLine(String line, DeckCardLists deckList) { + protected void readLine(String line, DeckCardLists deckList, FixedInfo fixedInfo) { if (line.isEmpty() || line.startsWith("#")) { return; } + // AUTO-FIX apply (if card number was fixed before then it can be replaced in layout or other lines too) + for (Map.Entry fix : this.possibleFixes.entrySet()) { + if (line.contains(fix.getKey())) { + line = line.replace(fix.getKey(), fix.getValue()); + } + } + fixedInfo.setFixedLine(line); + Matcher m = pattern.matcher(line); if (m.matches()) { boolean sideboard = false; @@ -46,13 +62,22 @@ public class DckDeckImporter extends PlainTextDeckImporter { setCode = setCode == null ? "" : setCode.trim(); cardName = cardName == null ? "" : cardName.trim(); - // search priority: set/code -> name + // text for auto-fix (don't work on extra spaces between numbers and name -- it's ok) + String originalNumbers = ""; + String originalNumbersWithName = ""; + if (!setCode.isEmpty() && !cardNum.isEmpty()) { + // [ISD:144] card_name + originalNumbers = "[" + setCode + ":" + cardNum + "]"; + originalNumbersWithName = originalNumbers + " " + cardName; + } + + // search priority: set/number -> name // with bulletproof on card number or name changes DeckCardInfo deckCardInfo = null; - // search by number - CardInfo foundedCard = CardRepository.instance.findCard(setCode, cardNum); + // search by set/number + CardInfo foundedCard = CardRepository.instance.findCard(setCode, cardNum, true); boolean wasOutdated = false; if ((foundedCard != null) && !foundedCard.getName().equals(cardName)) { sbMessage.append("Line ").append(lineCount).append(": ").append("found outdated card number or name, will try to replace: ").append(line).append('\n'); @@ -63,7 +88,7 @@ public class DckDeckImporter extends PlainTextDeckImporter { // search by name if (foundedCard == null) { if (!wasOutdated) { - sbMessage.append("Line ").append(lineCount).append(": ").append("can't find card by number, will try ro replace: ").append(line).append('\n'); + sbMessage.append("Line ").append(lineCount).append(": ").append("can't find card by number, will try to replace: ").append(line).append('\n'); } if (!cardName.equals("")) { @@ -71,9 +96,24 @@ public class DckDeckImporter extends PlainTextDeckImporter { } if (foundedCard != null) { - sbMessage.append("Line ").append(lineCount).append(": ") - .append("replaced to [").append(foundedCard.getSetCode()).append(":").append(foundedCard.getCardNumberAsInt()).append("] ") - .append(foundedCard.getName()).append('\n'); + if (foundedCard.isNightCard()) { + sbMessage.append("Line ").append(lineCount).append(": ").append("ERROR, you can't use night card in deck [").append(foundedCard.getName()).append("]").append('\n'); + } else { + sbMessage.append("Line ").append(lineCount).append(": ") + .append("replaced to [").append(foundedCard.getSetCode()).append(":").append(foundedCard.getCardNumberAsInt()).append("] ") + .append(foundedCard.getName()).append('\n'); + + // AUTO-FIX POSSIBLE (apply and save it for another lines like layout) + // [ISD:144] card + String fixNumbers = "[" + foundedCard.getSetCode() + ":" + foundedCard.getCardNumber() + "]"; + String fixNumbersWithName = fixNumbers + " " + foundedCard.getName(); + this.possibleFixes.put(originalNumbersWithName, fixNumbersWithName); // name fix must goes first + this.possibleFixes.put(originalNumbers, fixNumbers); + String fixedLine = fixedInfo.getOriginalLine() + .replace(originalNumbersWithName, fixNumbersWithName) + .replace(originalNumbers, fixNumbers); + fixedInfo.setFixedLine(fixedLine); + } } else { sbMessage.append("Line ").append(lineCount).append(": ").append("ERROR, can't find card [").append(cardName).append("]").append('\n'); } diff --git a/Mage/src/main/java/mage/cards/decks/importer/DecDeckImporter.java b/Mage/src/main/java/mage/cards/decks/importer/DecDeckImporter.java index 5ab07af1de4..d39befaf380 100644 --- a/Mage/src/main/java/mage/cards/decks/importer/DecDeckImporter.java +++ b/Mage/src/main/java/mage/cards/decks/importer/DecDeckImporter.java @@ -1,21 +1,19 @@ - package mage.cards.decks.importer; -import java.util.Optional; - import mage.cards.decks.DeckCardInfo; import mage.cards.decks.DeckCardLists; import mage.cards.repository.CardInfo; -import mage.cards.repository.CardRepository; + +import java.util.Optional; /** - * * @author BetaSteward_at_googlemail.com */ public class DecDeckImporter extends PlainTextDeckImporter { @Override - protected void readLine(String line, DeckCardLists deckList) { + protected void readLine(String line, DeckCardLists deckList, FixedInfo fixedInfo) { + if (line.isEmpty() || line.startsWith("//")) { return; } diff --git a/Mage/src/main/java/mage/cards/decks/importer/DeckImporter.java b/Mage/src/main/java/mage/cards/decks/importer/DeckImporter.java index cabf599b23d..26785c1909b 100644 --- a/Mage/src/main/java/mage/cards/decks/importer/DeckImporter.java +++ b/Mage/src/main/java/mage/cards/decks/importer/DeckImporter.java @@ -1,95 +1,122 @@ package mage.cards.decks.importer; +import mage.cards.decks.DeckCardLists; import org.apache.log4j.Logger; + import java.io.File; import java.util.Locale; -import java.util.Optional; import java.util.Scanner; - -import mage.cards.decks.DeckCardLists; -import mage.cards.repository.CardInfo; -import mage.cards.repository.CardRepository; - public abstract class DeckImporter { - protected static final Logger logger = Logger.getLogger(DeckImporter.class); + public class FixedInfo { + private final String originalLine; + private String fixedLine; + private Boolean canFix = true; // set false if deck have critical error and can't be auto-fixed - private static final String[] SIDEBOARD_MARKS = new String[]{"//sideboard", "sb: "}; - - public static DeckImporter getDeckImporter(String file) { - if (file == null) { - return null; - } if (file.toLowerCase(Locale.ENGLISH).endsWith("dec")) { - return new DecDeckImporter(); - } else if (file.toLowerCase(Locale.ENGLISH).endsWith("mwdeck")) { - return new MWSDeckImporter(); - } else if (file.toLowerCase(Locale.ENGLISH).endsWith("txt")) { - return new TxtDeckImporter(haveSideboardSection(file)); - } else if (file.toLowerCase(Locale.ENGLISH).endsWith("dck")) { - return new DckDeckImporter(); - } else if (file.toLowerCase(Locale.ENGLISH).endsWith("dek")) { - return new DekDeckImporter(); - } else if (file.toLowerCase(Locale.ENGLISH).endsWith("cod")) { - return new CodDeckImporter(); - } else if (file.toLowerCase(Locale.ENGLISH).endsWith("o8d")) { - return new O8dDeckImporter(); - } else if (file.toLowerCase(Locale.ENGLISH).endsWith("json")) { - return new MtgjsonDeckImporter(); - } else if (file.toLowerCase(Locale.ENGLISH).endsWith("draft")) { - return new DraftLogImporter(); - } else if (file.toLowerCase(Locale.ENGLISH).endsWith("mtga")) { - return new MtgaImporter(); - } else { - return null; - } - } - - public static DeckCardLists importDeckFromFile(String file) { - return importDeckFromFile(file, new StringBuilder()); - } - - public static DeckCardLists importDeckFromFile(String file, StringBuilder errorMessages) { - DeckImporter deckImporter = getDeckImporter(file); - if (deckImporter != null) { - return deckImporter.importDeck(file, errorMessages); - } else { - return new DeckCardLists(); - } - } - - public abstract DeckCardLists importDeck(String file, StringBuilder errorMessages); - - public DeckCardLists importDeck(String file) { - return importDeck(file, new StringBuilder()); - } - - public CardLookup getCardLookup() { - return CardLookup.instance; - } - - private static boolean haveSideboardSection(String file) { - // search for sideboard section: - // or //sideboard - // or SB: 1 card name -- special deckstats.net - - File f = new File(file); - try (Scanner scanner = new Scanner(f)) { - while (scanner.hasNextLine()) { - String line = scanner.nextLine().trim().toLowerCase(Locale.ENGLISH); - - for (String mark : SIDEBOARD_MARKS) { - if (line.startsWith(mark)) { - return true; - } + FixedInfo(String originalLine) { + this.originalLine = originalLine; + this.fixedLine = originalLine; + } + + public String getOriginalLine() { + return originalLine; + } + + public Boolean getCanFix() { + return canFix; + } + + public void setCanFix(Boolean canFix) { + this.canFix = canFix; + } + + public String getFixedLine() { + return fixedLine; + } + + public void setFixedLine(String fixedLine) { + this.fixedLine = fixedLine; } - } - } catch (Exception e) { - // ignore error, deckimporter will process it } - // not found - return false; - } + protected static final Logger logger = Logger.getLogger(DeckImporter.class); + private static final String[] SIDEBOARD_MARKS = new String[]{"//sideboard", "sb: "}; + + public static DeckImporter getDeckImporter(String file) { + if (file == null) { + return null; + } + if (file.toLowerCase(Locale.ENGLISH).endsWith("dec")) { + return new DecDeckImporter(); + } else if (file.toLowerCase(Locale.ENGLISH).endsWith("mwdeck")) { + return new MWSDeckImporter(); + } else if (file.toLowerCase(Locale.ENGLISH).endsWith("txt")) { + return new TxtDeckImporter(haveSideboardSection(file)); + } else if (file.toLowerCase(Locale.ENGLISH).endsWith("dck")) { + return new DckDeckImporter(); + } else if (file.toLowerCase(Locale.ENGLISH).endsWith("dek")) { + return new DekDeckImporter(); + } else if (file.toLowerCase(Locale.ENGLISH).endsWith("cod")) { + return new CodDeckImporter(); + } else if (file.toLowerCase(Locale.ENGLISH).endsWith("o8d")) { + return new O8dDeckImporter(); + } else if (file.toLowerCase(Locale.ENGLISH).endsWith("json")) { + return new MtgjsonDeckImporter(); + } else if (file.toLowerCase(Locale.ENGLISH).endsWith("draft")) { + return new DraftLogImporter(); + } else if (file.toLowerCase(Locale.ENGLISH).endsWith("mtga")) { + return new MtgaImporter(); + } else { + return null; + } + } + + public static DeckCardLists importDeckFromFile(String file, boolean saveAutoFixedFile) { + return importDeckFromFile(file, new StringBuilder(), saveAutoFixedFile); + } + + public static DeckCardLists importDeckFromFile(String file, StringBuilder errorMessages, boolean saveAutoFixedFile) { + DeckImporter deckImporter = getDeckImporter(file); + if (deckImporter != null) { + return deckImporter.importDeck(file, errorMessages, saveAutoFixedFile); + } else { + return new DeckCardLists(); + } + } + + public abstract DeckCardLists importDeck(String file, StringBuilder errorMessages, boolean saveAutoFixedFile); + + public DeckCardLists importDeck(String file, boolean saveAutoFixedFile) { + return importDeck(file, new StringBuilder(), saveAutoFixedFile); + } + + public CardLookup getCardLookup() { + return CardLookup.instance; + } + + private static boolean haveSideboardSection(String file) { + // search for sideboard section: + // or //sideboard + // or SB: 1 card name -- special deckstats.net + + File f = new File(file); + try (Scanner scanner = new Scanner(f)) { + while (scanner.hasNextLine()) { + String line = scanner.nextLine().trim().toLowerCase(Locale.ENGLISH); + + for (String mark : SIDEBOARD_MARKS) { + if (line.startsWith(mark)) { + return true; + } + } + } + } catch (Exception e) { + // ignore error, deckimporter will process it + } + + // not found + return false; + } } diff --git a/Mage/src/main/java/mage/cards/decks/importer/DekDeckImporter.java b/Mage/src/main/java/mage/cards/decks/importer/DekDeckImporter.java index 2672ff9d3ef..2bb529ce896 100644 --- a/Mage/src/main/java/mage/cards/decks/importer/DekDeckImporter.java +++ b/Mage/src/main/java/mage/cards/decks/importer/DekDeckImporter.java @@ -11,7 +11,7 @@ import mage.cards.repository.CardRepository; public class DekDeckImporter extends PlainTextDeckImporter { @Override - protected void readLine(String line, DeckCardLists deckList) { + protected void readLine(String line, DeckCardLists deckList, FixedInfo fixedInfo) { if (line.isEmpty() || line.startsWith("#") || !line.contains(" (.+)$"); + private static final Pattern SET_PATTERN = Pattern.compile("------ (\\p{Alnum}+) ------$"); + private static final Pattern PICK_PATTERN = Pattern.compile("--> (.+)$"); private String currentSet = null; @Override - protected void readLine(String line, DeckCardLists deckList) { + protected void readLine(String line, DeckCardLists deckList, FixedInfo fixedInfo) { + Matcher setMatcher = SET_PATTERN.matcher(line); if (setMatcher.matches()) { currentSet = setMatcher.group(1); diff --git a/Mage/src/main/java/mage/cards/decks/importer/JsonDeckImporter.java b/Mage/src/main/java/mage/cards/decks/importer/JsonDeckImporter.java index c754fd04e09..dd1179d69f1 100644 --- a/Mage/src/main/java/mage/cards/decks/importer/JsonDeckImporter.java +++ b/Mage/src/main/java/mage/cards/decks/importer/JsonDeckImporter.java @@ -1,14 +1,12 @@ package mage.cards.decks.importer; -import java.io.File; -import java.io.FileReader; - -import org.json.simple.JSONArray; +import mage.cards.decks.DeckCardLists; import org.json.simple.JSONObject; import org.json.simple.parser.JSONParser; import org.json.simple.parser.ParseException; -import mage.cards.decks.DeckCardLists; +import java.io.File; +import java.io.FileReader; /** * @author github: timhae @@ -18,12 +16,12 @@ public abstract class JsonDeckImporter extends DeckImporter { protected StringBuilder sbMessage = new StringBuilder(); /** - * - * @param file file to import - * @param errorMessages you can setup output messages to showup to user + * @param file file to import + * @param errorMessages you can setup output messages to showup to user + * @param saveAutoFixedFile do not supported for that format * @return decks list */ - public DeckCardLists importDeck(String file, StringBuilder errorMessages) { + public DeckCardLists importDeck(String file, StringBuilder errorMessages, boolean saveAutoFixedFile) { File f = new File(file); DeckCardLists deckList = new DeckCardLists(); if (!f.exists()) { @@ -62,8 +60,8 @@ public abstract class JsonDeckImporter extends DeckImporter { } @Override - public DeckCardLists importDeck(String file) { - return importDeck(file, null); + public DeckCardLists importDeck(String file, boolean saveAutoFixedFile) { + return importDeck(file, null, saveAutoFixedFile); } protected abstract void readJson(JSONObject line, DeckCardLists decklist); diff --git a/Mage/src/main/java/mage/cards/decks/importer/MWSDeckImporter.java b/Mage/src/main/java/mage/cards/decks/importer/MWSDeckImporter.java index 7c23d28c60b..9d34750afbe 100644 --- a/Mage/src/main/java/mage/cards/decks/importer/MWSDeckImporter.java +++ b/Mage/src/main/java/mage/cards/decks/importer/MWSDeckImporter.java @@ -1,23 +1,21 @@ - package mage.cards.decks.importer; -import java.util.List; - import mage.cards.decks.DeckCardInfo; import mage.cards.decks.DeckCardLists; import mage.cards.repository.CardCriteria; import mage.cards.repository.CardInfo; -import mage.cards.repository.CardRepository; import mage.util.RandomUtil; +import java.util.List; + /** - * * @author BetaSteward_at_googlemail.com */ public class MWSDeckImporter extends PlainTextDeckImporter { @Override - protected void readLine(String line, DeckCardLists deckList) { + protected void readLine(String line, DeckCardLists deckList, FixedInfo fixedInfo) { + if (line.isEmpty() || line.startsWith("//")) { return; } @@ -47,7 +45,7 @@ public class MWSDeckImporter extends PlainTextDeckImporter { if (!cards.isEmpty()) { cardInfo = cards.get(RandomUtil.nextInt(cards.size())); } - } + } if (cardInfo == null) { cardInfo = getCardLookup().lookupCardInfo(lineName).orElse(null); } diff --git a/Mage/src/main/java/mage/cards/decks/importer/MtgaImporter.java b/Mage/src/main/java/mage/cards/decks/importer/MtgaImporter.java index 4949690873e..2606456e895 100644 --- a/Mage/src/main/java/mage/cards/decks/importer/MtgaImporter.java +++ b/Mage/src/main/java/mage/cards/decks/importer/MtgaImporter.java @@ -4,7 +4,6 @@ import com.google.common.collect.ImmutableMap; import mage.cards.decks.CardNameUtil; import mage.cards.decks.DeckCardInfo; import mage.cards.decks.DeckCardLists; -import mage.cards.repository.CardCriteria; import mage.cards.repository.CardInfo; import java.util.Collections; @@ -21,18 +20,19 @@ public class MtgaImporter extends PlainTextDeckImporter { private static final Map SET_REMAPPING = ImmutableMap.of("DAR", "DOM"); private static final Pattern MTGA_PATTERN = Pattern.compile( "(\\p{Digit}+)" + - "\\p{javaWhitespace}+" + - "(" + CARD_NAME_PATTERN.pattern() + ")" + - "\\p{javaWhitespace}+" + - "\\((\\p{Alnum}+)\\)" + - "\\p{javaWhitespace}+" + - "(\\p{Digit}+)"); + "\\p{javaWhitespace}+" + + "(" + CARD_NAME_PATTERN.pattern() + ")" + + "\\p{javaWhitespace}+" + + "\\((\\p{Alnum}+)\\)" + + "\\p{javaWhitespace}+" + + "(\\p{Digit}+)"); private final CardLookup lookup = getCardLookup(); private boolean sideboard = false; @Override - protected void readLine(String line, DeckCardLists deckList) { + protected void readLine(String line, DeckCardLists deckList, FixedInfo fixedInfo) { + if (line.trim().equals("")) { sideboard = true; return; diff --git a/Mage/src/main/java/mage/cards/decks/importer/O8dDeckImporter.java b/Mage/src/main/java/mage/cards/decks/importer/O8dDeckImporter.java index cefc64e9616..3426f57c6f8 100644 --- a/Mage/src/main/java/mage/cards/decks/importer/O8dDeckImporter.java +++ b/Mage/src/main/java/mage/cards/decks/importer/O8dDeckImporter.java @@ -1,5 +1,11 @@ package mage.cards.decks.importer; +import mage.cards.decks.DeckCardInfo; +import mage.cards.decks.DeckCardLists; +import mage.cards.repository.CardInfo; +import org.w3c.dom.Document; +import org.w3c.dom.Node; + import java.util.Collections; import java.util.List; import java.util.Optional; @@ -7,65 +13,64 @@ import java.util.function.Function; import java.util.stream.Collectors; import java.util.stream.Stream; -import org.w3c.dom.Document; -import org.w3c.dom.Node; - -import mage.cards.decks.DeckCardInfo; -import mage.cards.decks.DeckCardLists; -import mage.cards.repository.CardInfo; - public class O8dDeckImporter extends XmlDeckImporter { - @Override - public DeckCardLists importDeck(String filename, StringBuilder errorMessages) { - try { - Document doc = getXmlDocument(filename); - DeckCardLists decklist = new DeckCardLists(); + /** + * @param filename + * @param errorMessages + * @param saveAutoFixedFile do not supported for current format + * @return + */ + @Override + public DeckCardLists importDeck(String filename, StringBuilder errorMessages, boolean saveAutoFixedFile) { + try { + Document doc = getXmlDocument(filename); + DeckCardLists decklist = new DeckCardLists(); - List mainCards = getNodes(doc, "/deck/section[@name='Main']/card"); - decklist.setCards(mainCards.stream() - .flatMap(toDeckCardInfo(getCardLookup(), errorMessages)) - .collect(Collectors.toList())); + List mainCards = getNodes(doc, "/deck/section[@name='Main']/card"); + decklist.setCards(mainCards.stream() + .flatMap(toDeckCardInfo(getCardLookup(), errorMessages)) + .collect(Collectors.toList())); - List sideboardCards = getNodes(doc, "/deck/section[@name='Sideboard']/card"); - decklist.setSideboard(sideboardCards.stream() - .flatMap(toDeckCardInfo(getCardLookup(), errorMessages)) - .collect(Collectors.toList())); + List sideboardCards = getNodes(doc, "/deck/section[@name='Sideboard']/card"); + decklist.setSideboard(sideboardCards.stream() + .flatMap(toDeckCardInfo(getCardLookup(), errorMessages)) + .collect(Collectors.toList())); - return decklist; - } catch (Exception e) { - logger.error("Error loading deck", e); - errorMessages.append("There was an error loading the deck."); - return new DeckCardLists(); + return decklist; + } catch (Exception e) { + logger.error("Error loading deck", e); + errorMessages.append("There was an error loading the deck."); + return new DeckCardLists(); + } } - } - private static int getQuantityFromNode(Node node) { - Node numberNode = node.getAttributes().getNamedItem("qty"); - if (numberNode == null) { - return 1; + private static int getQuantityFromNode(Node node) { + Node numberNode = node.getAttributes().getNamedItem("qty"); + if (numberNode == null) { + return 1; + } + try { + return Math.min(100, Math.max(1, Integer.parseInt(numberNode.getNodeValue()))); + } catch (NumberFormatException e) { + return 1; + } } - try { - return Math.min(100, Math.max(1, Integer.parseInt(numberNode.getNodeValue()))); - } catch (NumberFormatException e) { - return 1; - } - } - private static Function> toDeckCardInfo(CardLookup lookup, StringBuilder errors) { - return node -> { - String name = node.getTextContent(); - Optional cardInfo = lookup.lookupCardInfo(name); - if (cardInfo.isPresent()) { - CardInfo info = cardInfo.get(); - return Collections.nCopies( - getQuantityFromNode(node), - new DeckCardInfo(info.getName(), info.getCardNumber(), info.getSetCode())).stream(); - } else { - errors.append("Could not find card: '").append(name).append("'\n"); - return Stream.empty(); - } - }; - } + private static Function> toDeckCardInfo(CardLookup lookup, StringBuilder errors) { + return node -> { + String name = node.getTextContent(); + Optional cardInfo = lookup.lookupCardInfo(name); + if (cardInfo.isPresent()) { + CardInfo info = cardInfo.get(); + return Collections.nCopies( + getQuantityFromNode(node), + new DeckCardInfo(info.getName(), info.getCardNumber(), info.getSetCode())).stream(); + } else { + errors.append("Could not find card: '").append(name).append("'\n"); + return Stream.empty(); + } + }; + } } diff --git a/Mage/src/main/java/mage/cards/decks/importer/PlainTextDeckImporter.java b/Mage/src/main/java/mage/cards/decks/importer/PlainTextDeckImporter.java index 14683d66ab8..c6b9600d17c 100644 --- a/Mage/src/main/java/mage/cards/decks/importer/PlainTextDeckImporter.java +++ b/Mage/src/main/java/mage/cards/decks/importer/PlainTextDeckImporter.java @@ -1,14 +1,15 @@ - - package mage.cards.decks.importer; -import java.io.File; -import java.util.Scanner; - import mage.cards.decks.DeckCardLists; +import java.io.File; +import java.io.FileOutputStream; +import java.io.PrintWriter; +import java.util.ArrayList; +import java.util.List; +import java.util.Scanner; + /** - * * @author BetaSteward_at_googlemail.com */ public abstract class PlainTextDeckImporter extends DeckImporter { @@ -18,13 +19,17 @@ public abstract class PlainTextDeckImporter extends DeckImporter { /** + * Import deck from text file * - * @param file file to import - * @param errorMessages you can setup output messages to showup to user (set null for fatal exception on messages.count > 0) + * @param file file to import + * @param errorMessages you can setup output messages to showup to user (set null for fatal exception on messages.count > 0) + * @param saveAutoFixedFile save fixed deck file (if any fixes applied) * @return decks list */ - public DeckCardLists importDeck(String file, StringBuilder errorMessages) { + public DeckCardLists importDeck(String file, StringBuilder errorMessages, boolean saveAutoFixedFile) { File f = new File(file); + List originalFile = new ArrayList<>(); + List fixedFile = new ArrayList<>(); DeckCardLists deckList = new DeckCardLists(); if (!f.exists()) { logger.warn("Deckfile " + file + " not found."); @@ -35,17 +40,33 @@ public abstract class PlainTextDeckImporter extends DeckImporter { sbMessage.setLength(0); try { try (Scanner scanner = new Scanner(f)) { + Boolean canFix = true; while (scanner.hasNextLine()) { String line = scanner.nextLine().trim(); + FixedInfo fixedInfo = new FixedInfo(line); lineCount++; - readLine(line, deckList); + readLine(line, deckList, fixedInfo); + + originalFile.add(line); + fixedFile.add(fixedInfo.getFixedLine()); + canFix = canFix && fixedInfo.getCanFix(); + } + + // auto-fix + if (saveAutoFixedFile && canFix && !originalFile.equals(fixedFile)) { + logger.warn("WARNING, deck file contains errors, try to apply auto-fix and save: " + f.getAbsolutePath()); + saveFixedDeckFile(fixedFile, f); + } + + if (deckList.getCards().isEmpty() && deckList.getSideboard().isEmpty()) { + sbMessage.append("ERROR, unknown deck format, can't find any cards").append("\n"); } if (sbMessage.length() > 0) { - if(errorMessages != null) { + if (errorMessages != null) { // normal output for user errorMessages.append(sbMessage); - }else{ + } else { // fatal error logger.fatal(sbMessage); } @@ -59,11 +80,30 @@ public abstract class PlainTextDeckImporter extends DeckImporter { return deckList; } - - @Override - public DeckCardLists importDeck(String file) { - return importDeck(file, null); + private void saveFixedDeckFile(List fixedfile, File file) { + try (FileOutputStream stream = new FileOutputStream(file)) { + PrintWriter out = new PrintWriter(stream); + for (String line : fixedfile) { + out.println(line); + } + out.close(); + } catch (Exception e) { + logger.error("Can't save fixed deck file: " + file.getAbsolutePath() + ", reason: " + e.getMessage()); + } } - protected abstract void readLine(String line, DeckCardLists deckList); + + @Override + public DeckCardLists importDeck(String file, boolean saveAutoFixedFile) { + return importDeck(file, null, saveAutoFixedFile); + } + + /** + * Read one text line from file and convert it to card + * + * @param line original text line + * @param deckList deck list for new card + * @param fixedInfo fixed info that contains fixed line (if converter can auto-fix deck file, e.g. replace one card to another) + */ + protected abstract void readLine(String line, DeckCardLists deckList, FixedInfo fixedInfo); } diff --git a/Mage/src/main/java/mage/cards/decks/importer/TxtDeckImporter.java b/Mage/src/main/java/mage/cards/decks/importer/TxtDeckImporter.java index 831b09f3649..002c7711a84 100644 --- a/Mage/src/main/java/mage/cards/decks/importer/TxtDeckImporter.java +++ b/Mage/src/main/java/mage/cards/decks/importer/TxtDeckImporter.java @@ -31,7 +31,7 @@ public class TxtDeckImporter extends PlainTextDeckImporter { } @Override - protected void readLine(String line, DeckCardLists deckList) { + protected void readLine(String line, DeckCardLists deckList, FixedInfo fixedInfo) { line = line.trim(); diff --git a/Mage/src/main/java/mage/cards/repository/CardRepository.java b/Mage/src/main/java/mage/cards/repository/CardRepository.java index 550ca8d2191..f92a1b20e88 100644 --- a/Mage/src/main/java/mage/cards/repository/CardRepository.java +++ b/Mage/src/main/java/mage/cards/repository/CardRepository.java @@ -39,7 +39,7 @@ public enum CardRepository { private static final long CARD_CONTENT_VERSION = 231; private Dao cardDao; private Set classNames; - private RepositoryEventSource eventSource = new RepositoryEventSource(); + private final RepositoryEventSource eventSource = new RepositoryEventSource(); CardRepository() { File file = new File("db"); @@ -180,6 +180,7 @@ public enum CardRepository { public Boolean haveSnowLands(String setCode) { return setCode.equals("CSP") || setCode.equals("MH1") + || setCode.equals("SLD") || setCode.equals("ME2") || setCode.equals("ICE"); } @@ -334,11 +335,22 @@ public enum CardRepository { } public CardInfo findCard(String setCode, String cardNumber) { + return findCard(setCode, cardNumber, true); + } + + public CardInfo findCard(String setCode, String cardNumber, boolean ignoreNightCards) { try { QueryBuilder queryBuilder = cardDao.queryBuilder(); - queryBuilder.limit(1L).where().eq("setCode", new SelectArg(setCode)) - .and().eq("cardNumber", new SelectArg(cardNumber)) - .and().eq("nightCard", new SelectArg(false)); + if (ignoreNightCards) { + queryBuilder.limit(1L).where() + .eq("setCode", new SelectArg(setCode)) + .and().eq("cardNumber", new SelectArg(cardNumber)) + .and().eq("nightCard", new SelectArg(false)); + } else { + queryBuilder.limit(1L).where() + .eq("setCode", new SelectArg(setCode)) + .and().eq("cardNumber", new SelectArg(cardNumber)); + } List result = cardDao.query(queryBuilder.prepare()); if (!result.isEmpty()) { return result.get(0); diff --git a/Mage/src/main/java/mage/game/permanent/token/BeastToken.java b/Mage/src/main/java/mage/game/permanent/token/BeastToken.java index b1da78bd397..be61632bf18 100644 --- a/Mage/src/main/java/mage/game/permanent/token/BeastToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/BeastToken.java @@ -35,7 +35,7 @@ public final class BeastToken extends TokenImpl { if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("CMD")) { this.setTokenType(2); } - if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("DD3GVL")) { + if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("GVL")) { this.setTokenType(2); } diff --git a/Mage/src/main/java/mage/game/permanent/token/BeastToken2.java b/Mage/src/main/java/mage/game/permanent/token/BeastToken2.java index a1d9745f62d..8425d40c953 100644 --- a/Mage/src/main/java/mage/game/permanent/token/BeastToken2.java +++ b/Mage/src/main/java/mage/game/permanent/token/BeastToken2.java @@ -16,7 +16,7 @@ public final class BeastToken2 extends TokenImpl { static final private List tokenImageSets = new ArrayList<>(); static { - tokenImageSets.addAll(Arrays.asList("ZEN", "C14", "DDD", "C15", "DD3GVL", "MM3", "CMA", "E01", "C19", "C20")); + tokenImageSets.addAll(Arrays.asList("ZEN", "C14", "DDD", "C15", "GVL", "MM3", "CMA", "E01", "C19", "C20")); } public BeastToken2() { @@ -50,7 +50,7 @@ public final class BeastToken2 extends TokenImpl { @Override public void setExpansionSetCodeForImage(String code) { super.setExpansionSetCodeForImage(code); - if (getOriginalExpansionSetCode().equals("C14") || getOriginalExpansionSetCode().equals("DDD") || getOriginalExpansionSetCode().equals("DD3GVL") || getOriginalExpansionSetCode().equals("MM3")) { + if (getOriginalExpansionSetCode().equals("C14") || getOriginalExpansionSetCode().equals("DDD") || getOriginalExpansionSetCode().equals("GVL") || getOriginalExpansionSetCode().equals("MM3")) { this.setTokenType(2); } } diff --git a/Mage/src/main/java/mage/game/permanent/token/CatToken.java b/Mage/src/main/java/mage/game/permanent/token/CatToken.java index 7848d6cff87..9611029dff1 100644 --- a/Mage/src/main/java/mage/game/permanent/token/CatToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/CatToken.java @@ -19,7 +19,7 @@ public final class CatToken extends TokenImpl { power = new MageInt(2); toughness = new MageInt(2); - availableImageSetCodes = Arrays.asList("MBP", "C14", "C15", "C17", "C18", "M13", "M14", "MBS", "SOM"); + availableImageSetCodes = Arrays.asList("PMEI", "C14", "C15", "C17", "C18", "M13", "M14", "MBS", "SOM"); } public CatToken(final CatToken token) { diff --git a/Mage/src/main/java/mage/game/permanent/token/ElementalShamanToken.java b/Mage/src/main/java/mage/game/permanent/token/ElementalShamanToken.java index 88637b7b67d..0ebe90174f1 100644 --- a/Mage/src/main/java/mage/game/permanent/token/ElementalShamanToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/ElementalShamanToken.java @@ -18,7 +18,7 @@ public final class ElementalShamanToken extends TokenImpl { static final private List tokenImageSets = new ArrayList<>(); static { - tokenImageSets.addAll(Arrays.asList("C15", "DD3JVC", "DD2", "LRW")); + tokenImageSets.addAll(Arrays.asList("C15", "JVC", "DD2", "LRW")); } public ElementalShamanToken(boolean withHaste) { diff --git a/Mage/src/main/java/mage/game/permanent/token/ElementalTokenWithHaste.java b/Mage/src/main/java/mage/game/permanent/token/ElementalTokenWithHaste.java index b01be1d5489..a37a3ce7734 100644 --- a/Mage/src/main/java/mage/game/permanent/token/ElementalTokenWithHaste.java +++ b/Mage/src/main/java/mage/game/permanent/token/ElementalTokenWithHaste.java @@ -21,7 +21,7 @@ public final class ElementalTokenWithHaste extends TokenImpl { toughness = new MageInt(1); this.addAbility(HasteAbility.getInstance()); - availableImageSetCodes = Arrays.asList("C20", "MBP", "OGW", "SOK", "MRD"); + availableImageSetCodes = Arrays.asList("C20", "PMEI", "OGW", "SOK", "MRD"); } public ElementalTokenWithHaste(final ElementalTokenWithHaste token) { diff --git a/Mage/src/main/java/mage/game/permanent/token/ElephantToken.java b/Mage/src/main/java/mage/game/permanent/token/ElephantToken.java index 71ae36fa8be..e98809db1cf 100644 --- a/Mage/src/main/java/mage/game/permanent/token/ElephantToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/ElephantToken.java @@ -16,7 +16,7 @@ public final class ElephantToken extends TokenImpl { static final private List tokenImageSets = new ArrayList<>(); static { - tokenImageSets.addAll(Arrays.asList("C14", "CNS", "DDD", "MM2", "WWK", "OGW", "C15", "DD3GVL", "MM3", "CMA", "MH1")); + tokenImageSets.addAll(Arrays.asList("C14", "CNS", "DDD", "MM2", "WWK", "OGW", "C15", "GVL", "MM3", "CMA", "MH1")); } public ElephantToken() { diff --git a/Mage/src/main/java/mage/game/permanent/token/GoblinToken.java b/Mage/src/main/java/mage/game/permanent/token/GoblinToken.java index da279757c1b..5eae26f2d38 100644 --- a/Mage/src/main/java/mage/game/permanent/token/GoblinToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/GoblinToken.java @@ -18,7 +18,7 @@ public final class GoblinToken extends TokenImpl { static { tokenImageSets.addAll(Arrays.asList("10E", "ALA", "SOM", "M10", "NPH", "M13", "RTR", - "MMA", "M15", "C14", "KTK", "EVG", "DTK", "ORI", "DDG", "DDN", "DD3EVG", "MM2", + "MMA", "M15", "C14", "KTK", "EVG", "DTK", "ORI", "DDG", "DDN", "EVG", "MM2", "MM3", "EMA", "C16", "DOM", "ANA", "RNA", "WAR", "MH1")); } diff --git a/Mage/src/test/java/mage/cards/decks/importer/CodDeckImportTest.java b/Mage/src/test/java/mage/cards/decks/importer/CodDeckImportTest.java index 9dd94dfdb88..c6ccb497143 100644 --- a/Mage/src/test/java/mage/cards/decks/importer/CodDeckImportTest.java +++ b/Mage/src/test/java/mage/cards/decks/importer/CodDeckImportTest.java @@ -1,40 +1,39 @@ package mage.cards.decks.importer; +import mage.cards.decks.DeckCardLists; +import org.junit.Test; + import static org.junit.Assert.assertEquals; -import org.junit.Test; - -import mage.cards.decks.DeckCardLists; - public class CodDeckImportTest { - private static final FakeCardLookup LOOKUP = new FakeCardLookup(false) - .addCard("Forest") - .addCard("Razorverge Thicket") - .addCard("Avacyn's Pilgrim") - .addCard("War Priest of Thune"); + private static final FakeCardLookup LOOKUP = new FakeCardLookup(false) + .addCard("Forest") + .addCard("Razorverge Thicket") + .addCard("Avacyn's Pilgrim") + .addCard("War Priest of Thune"); - @Test - public void testImport() { - CodDeckImporter importer = new CodDeckImporter() { - @Override - public CardLookup getCardLookup() { - return LOOKUP; - } - }; - StringBuilder errors = new StringBuilder(); - DeckCardLists deck = importer.importDeck( - "src/test/java/mage/cards/decks/importer/samples/testdeck.cod", errors); - assertEquals("Deck Name", deck.getName()); + @Test + public void testImport() { + CodDeckImporter importer = new CodDeckImporter() { + @Override + public CardLookup getCardLookup() { + return LOOKUP; + } + }; + StringBuilder errors = new StringBuilder(); + DeckCardLists deck = importer.importDeck( + "src/test/java/mage/cards/decks/importer/samples/testdeck.cod", errors, false); + assertEquals("Deck Name", deck.getName()); - TestDeckChecker.checker() - .addMain("Forest", 12) - .addMain("Razorverge Thicket", 100) - .addMain("Avacyn's Pilgrim", 1) - .addSide("War Priest of Thune", 3) - .verify(deck, 113, 3); + TestDeckChecker.checker() + .addMain("Forest", 12) + .addMain("Razorverge Thicket", 100) + .addMain("Avacyn's Pilgrim", 1) + .addSide("War Priest of Thune", 3) + .verify(deck, 113, 3); - assertEquals("Could not find card: '@#$NOT A REAL CARD NAME@#$'\n", errors.toString()); - } + assertEquals("Could not find card: '@#$NOT A REAL CARD NAME@#$'\n", errors.toString()); + } } diff --git a/Mage/src/test/java/mage/cards/decks/importer/DecDeckImportTest.java b/Mage/src/test/java/mage/cards/decks/importer/DecDeckImportTest.java index 65803c884b4..1c7078d6ef0 100644 --- a/Mage/src/test/java/mage/cards/decks/importer/DecDeckImportTest.java +++ b/Mage/src/test/java/mage/cards/decks/importer/DecDeckImportTest.java @@ -1,52 +1,51 @@ package mage.cards.decks.importer; +import mage.cards.decks.DeckCardLists; +import org.junit.Test; + import static org.junit.Assert.assertEquals; -import org.junit.Test; - -import mage.cards.decks.DeckCardLists; - public class DecDeckImportTest { - private static final FakeCardLookup LOOKUP = new FakeCardLookup(); + private static final FakeCardLookup LOOKUP = new FakeCardLookup(); - @Test - public void testImport() { - StringBuilder errors = new StringBuilder(); - DecDeckImporter importer = new DecDeckImporter() { - @Override - public CardLookup getCardLookup() { - return LOOKUP; - } - }; - DeckCardLists deck = importer.importDeck( - "src/test/java/mage/cards/decks/importer/samples/testdeck.dec", errors); + @Test + public void testImport() { + StringBuilder errors = new StringBuilder(); + DecDeckImporter importer = new DecDeckImporter() { + @Override + public CardLookup getCardLookup() { + return LOOKUP; + } + }; + DeckCardLists deck = importer.importDeck( + "src/test/java/mage/cards/decks/importer/samples/testdeck.dec", errors, false); - TestDeckChecker.checker() - .addMain("Masticore", 4) - .addMain("Metalworker", 4) - .addMain("Phyrexian Colossus", 1) - .addMain("Crumbling Sanctuary", 1) - .addMain("Grim Monolith", 4) - .addMain("Mishra's Helix", 1) - .addMain("Phyrexian Processor", 4) - .addMain("Tangle Wire", 4) - .addMain("Thran Dynamo", 4) - .addMain("Voltaic Key", 4) - .addMain("Tinker", 4) - .addMain("Brainstorm", 4) - .addMain("Crystal Vein", 4) - .addMain("Island", 9) - .addMain("Rishadan Port", 4) - .addMain("Saprazzan Skerry", 4) - .addSide("Annul", 4) - .addSide("Chill", 4) - .addSide("Miscalculation", 4) - .addSide("Mishra's Helix", 1) - .addSide("Rising Waters", 2) - .verify(deck, 60, 15); + TestDeckChecker.checker() + .addMain("Masticore", 4) + .addMain("Metalworker", 4) + .addMain("Phyrexian Colossus", 1) + .addMain("Crumbling Sanctuary", 1) + .addMain("Grim Monolith", 4) + .addMain("Mishra's Helix", 1) + .addMain("Phyrexian Processor", 4) + .addMain("Tangle Wire", 4) + .addMain("Thran Dynamo", 4) + .addMain("Voltaic Key", 4) + .addMain("Tinker", 4) + .addMain("Brainstorm", 4) + .addMain("Crystal Vein", 4) + .addMain("Island", 9) + .addMain("Rishadan Port", 4) + .addMain("Saprazzan Skerry", 4) + .addSide("Annul", 4) + .addSide("Chill", 4) + .addSide("Miscalculation", 4) + .addSide("Mishra's Helix", 1) + .addSide("Rising Waters", 2) + .verify(deck, 60, 15); - assertEquals("", errors.toString()); - } + assertEquals("", errors.toString()); + } } diff --git a/Mage/src/test/java/mage/cards/decks/importer/DraftLogImporterTest.java b/Mage/src/test/java/mage/cards/decks/importer/DraftLogImporterTest.java index 7c64308dd40..80a2ea9309e 100644 --- a/Mage/src/test/java/mage/cards/decks/importer/DraftLogImporterTest.java +++ b/Mage/src/test/java/mage/cards/decks/importer/DraftLogImporterTest.java @@ -3,7 +3,7 @@ package mage.cards.decks.importer; import mage.cards.decks.DeckCardLists; import org.junit.Test; -import static org.junit.Assert.*; +import static org.junit.Assert.assertEquals; public class DraftLogImporterTest { @@ -19,7 +19,7 @@ public class DraftLogImporterTest { } }; DeckCardLists deck = importer.importDeck( - "src/test/java/mage/cards/decks/importer/samples/testdeck.draft", errors); + "src/test/java/mage/cards/decks/importer/samples/testdeck.draft", errors, false); TestDeckChecker.checker() .addMain("Raging Ravine", 1) diff --git a/Mage/src/test/java/mage/cards/decks/importer/MtgaImporterTest.java b/Mage/src/test/java/mage/cards/decks/importer/MtgaImporterTest.java index 2db8dea4047..f4d186ac5c3 100644 --- a/Mage/src/test/java/mage/cards/decks/importer/MtgaImporterTest.java +++ b/Mage/src/test/java/mage/cards/decks/importer/MtgaImporterTest.java @@ -3,9 +3,7 @@ package mage.cards.decks.importer; import mage.cards.decks.DeckCardLists; import org.junit.Test; -import java.io.File; - -import static org.junit.Assert.*; +import static org.junit.Assert.assertEquals; public class MtgaImporterTest { @@ -21,7 +19,7 @@ public class MtgaImporterTest { }; StringBuilder errors = new StringBuilder(); DeckCardLists deck = importer.importDeck( - "src/test/java/mage/cards/decks/importer/samples/testdeck.mtga", errors); + "src/test/java/mage/cards/decks/importer/samples/testdeck.mtga", errors, false); TestDeckChecker.checker() .addMain("Niv-Mizzet Reborn", 1) diff --git a/Mage/src/test/java/mage/cards/decks/importer/MtgjsonDeckImportTest.java b/Mage/src/test/java/mage/cards/decks/importer/MtgjsonDeckImportTest.java index 1395f4bf16d..77f8834c622 100644 --- a/Mage/src/test/java/mage/cards/decks/importer/MtgjsonDeckImportTest.java +++ b/Mage/src/test/java/mage/cards/decks/importer/MtgjsonDeckImportTest.java @@ -1,57 +1,56 @@ package mage.cards.decks.importer; +import mage.cards.decks.DeckCardLists; +import org.junit.Test; + import static org.junit.Assert.assertEquals; -import org.junit.Test; - -import mage.cards.decks.DeckCardLists; - public class MtgjsonDeckImportTest { - private static final FakeCardLookup LOOKUP = new FakeCardLookup(); + private static final FakeCardLookup LOOKUP = new FakeCardLookup(); - @Test - public void testImport() { - StringBuilder errors = new StringBuilder(); - MtgjsonDeckImporter importer = new MtgjsonDeckImporter() { - @Override - public CardLookup getCardLookup() { - return LOOKUP; - } - }; - DeckCardLists deck = importer.importDeck( - "src/test/java/mage/cards/decks/importer/samples/testdeck.json", errors); - assertEquals("Arcane Tempo", deck.getName()); + @Test + public void testImport() { + StringBuilder errors = new StringBuilder(); + MtgjsonDeckImporter importer = new MtgjsonDeckImporter() { + @Override + public CardLookup getCardLookup() { + return LOOKUP; + } + }; + DeckCardLists deck = importer.importDeck( + "src/test/java/mage/cards/decks/importer/samples/testdeck.json", errors, false); + assertEquals("Arcane Tempo", deck.getName()); - TestDeckChecker.checker() - .addMain("Goblin Electromancer", 4) - .addMain("Crackling Drake", 4) - .addMain("Murmuring Mystic", 2) - .addMain("Arclight Phoenix", 1) - .addMain("Niv-Mizzet, Parun", 2) - .addMain("Chart a Course", 4) - .addMain("Lava Coil", 4) - .addMain("Beacon Bolt", 1) - .addMain("Opt", 4) - .addMain("Radical Idea", 4) - .addMain("Shock", 4) - .addMain("Dive Down", 2) - .addMain("Blink of an Eye", 1) - .addMain("The Mirari Conjecture", 1) - .addMain("Sulfur Falls", 3) - .addMain("Izzet Guildgate", 4) - .addMain("Island", 8) - .addMain("Mountain", 7) - .addSide("The Mirari Conjecture", 1) - .addSide("Beacon Bolt", 1) - .addSide("Negate", 3) - .addSide("Entrancing Melody", 3) - .addSide("Fiery Cannonade", 3) - .addSide("Shivan Fire", 2) - .addSide("Disdainful Stroke", 2) - .verify(deck, 60, 15); + TestDeckChecker.checker() + .addMain("Goblin Electromancer", 4) + .addMain("Crackling Drake", 4) + .addMain("Murmuring Mystic", 2) + .addMain("Arclight Phoenix", 1) + .addMain("Niv-Mizzet, Parun", 2) + .addMain("Chart a Course", 4) + .addMain("Lava Coil", 4) + .addMain("Beacon Bolt", 1) + .addMain("Opt", 4) + .addMain("Radical Idea", 4) + .addMain("Shock", 4) + .addMain("Dive Down", 2) + .addMain("Blink of an Eye", 1) + .addMain("The Mirari Conjecture", 1) + .addMain("Sulfur Falls", 3) + .addMain("Izzet Guildgate", 4) + .addMain("Island", 8) + .addMain("Mountain", 7) + .addSide("The Mirari Conjecture", 1) + .addSide("Beacon Bolt", 1) + .addSide("Negate", 3) + .addSide("Entrancing Melody", 3) + .addSide("Fiery Cannonade", 3) + .addSide("Shivan Fire", 2) + .addSide("Disdainful Stroke", 2) + .verify(deck, 60, 15); - assertEquals("", errors.toString()); - } + assertEquals("", errors.toString()); + } } diff --git a/Mage/src/test/java/mage/cards/decks/importer/MwsDeckImportTest.java b/Mage/src/test/java/mage/cards/decks/importer/MwsDeckImportTest.java index cf364d81080..ef2b1a96bae 100644 --- a/Mage/src/test/java/mage/cards/decks/importer/MwsDeckImportTest.java +++ b/Mage/src/test/java/mage/cards/decks/importer/MwsDeckImportTest.java @@ -1,57 +1,51 @@ package mage.cards.decks.importer; +import mage.cards.decks.DeckCardLists; +import org.junit.Test; + import static org.junit.Assert.assertEquals; -import java.util.Collections; -import java.util.List; - -import org.junit.Test; - -import mage.cards.decks.DeckCardLists; -import mage.cards.repository.CardCriteria; -import mage.cards.repository.CardInfo; - public class MwsDeckImportTest { - private static final FakeCardLookup LOOKUP = new FakeCardLookup(); + private static final FakeCardLookup LOOKUP = new FakeCardLookup(); - @Test - public void testImport() { - MWSDeckImporter importer = new MWSDeckImporter() { - @Override - public CardLookup getCardLookup() { - return LOOKUP; - } - }; - StringBuilder errors = new StringBuilder(); - DeckCardLists deck = importer.importDeck( - "src/test/java/mage/cards/decks/importer/samples/testdeck.mwDeck", errors); + @Test + public void testImport() { + MWSDeckImporter importer = new MWSDeckImporter() { + @Override + public CardLookup getCardLookup() { + return LOOKUP; + } + }; + StringBuilder errors = new StringBuilder(); + DeckCardLists deck = importer.importDeck( + "src/test/java/mage/cards/decks/importer/samples/testdeck.mwDeck", errors, false); - TestDeckChecker.checker() - .addMain("Mutavault", 4) - .addMain("Plains", 18) - .addMain("Daring Skyjek", 2) - .addMain("Azorius Arrester", 4) - .addMain("Banisher Priest", 4) - .addMain("Boros Elite", 4) - .addMain("Dryad Militant", 4) - .addMain("Imposing Sovereign", 4) - .addMain("Precinct Captain", 4) - .addMain("Soldier of the Pantheon", 4) - .addMain("Spear of Heliod", 3) - .addMain("Rootborn Defenses", 1) - .addMain("Brave the Elements", 4) + TestDeckChecker.checker() + .addMain("Mutavault", 4) + .addMain("Plains", 18) + .addMain("Daring Skyjek", 2) + .addMain("Azorius Arrester", 4) + .addMain("Banisher Priest", 4) + .addMain("Boros Elite", 4) + .addMain("Dryad Militant", 4) + .addMain("Imposing Sovereign", 4) + .addMain("Precinct Captain", 4) + .addMain("Soldier of the Pantheon", 4) + .addMain("Spear of Heliod", 3) + .addMain("Rootborn Defenses", 1) + .addMain("Brave the Elements", 4) - .addSide("Wear/Tear", 1) - .addSide("Glare of Heresy", 2) - .addSide("Fiendslayer Paladin", 3) - .addSide("Riot Control", 3) - .addSide("Ajani, Caller of the Pride", 3) - .addSide("Rootborn Defenses", 3) + .addSide("Wear/Tear", 1) + .addSide("Glare of Heresy", 2) + .addSide("Fiendslayer Paladin", 3) + .addSide("Riot Control", 3) + .addSide("Ajani, Caller of the Pride", 3) + .addSide("Rootborn Defenses", 3) - .verify(deck, 60, 15); + .verify(deck, 60, 15); - assertEquals("", errors.toString()); - } + assertEquals("", errors.toString()); + } } diff --git a/Mage/src/test/java/mage/cards/decks/importer/O8dDeckImportTest.java b/Mage/src/test/java/mage/cards/decks/importer/O8dDeckImportTest.java index 4eade3abd73..be230c36bac 100644 --- a/Mage/src/test/java/mage/cards/decks/importer/O8dDeckImportTest.java +++ b/Mage/src/test/java/mage/cards/decks/importer/O8dDeckImportTest.java @@ -1,33 +1,32 @@ package mage.cards.decks.importer; +import mage.cards.decks.DeckCardLists; +import org.junit.Test; + import static org.junit.Assert.assertEquals; -import org.junit.Test; - -import mage.cards.decks.DeckCardLists; - public class O8dDeckImportTest { - private static final FakeCardLookup LOOKUP = new FakeCardLookup(); + private static final FakeCardLookup LOOKUP = new FakeCardLookup(); - @Test - public void testImport() { - O8dDeckImporter importer = new O8dDeckImporter() { - @Override - public CardLookup getCardLookup() { - return LOOKUP; - } - }; - StringBuilder errors = new StringBuilder(); - DeckCardLists deck = importer.importDeck( - "src/test/java/mage/cards/decks/importer/samples/testdeck.o8d", errors); + @Test + public void testImport() { + O8dDeckImporter importer = new O8dDeckImporter() { + @Override + public CardLookup getCardLookup() { + return LOOKUP; + } + }; + StringBuilder errors = new StringBuilder(); + DeckCardLists deck = importer.importDeck( + "src/test/java/mage/cards/decks/importer/samples/testdeck.o8d", errors, false); - TestDeckChecker.checker() - .addMain("Forest", 1) - .addSide("Island", 2) - .verify(deck, 1, 2); + TestDeckChecker.checker() + .addMain("Forest", 1) + .addSide("Island", 2) + .verify(deck, 1, 2); - assertEquals("", errors.toString()); - } + assertEquals("", errors.toString()); + } } diff --git a/Utils/get_modo_artids.pl b/Utils/get_modo_artids.pl index 287ce363dd0..6eea0494025 100644 --- a/Utils/get_modo_artids.pl +++ b/Utils/get_modo_artids.pl @@ -34,10 +34,10 @@ $fix_set_codes {"AP"} = "APC"; $fix_set_codes {"AN"} = "ARN"; $fix_set_codes {"AQ"} = "ATQ"; $fix_set_codes {"CM1"} = "CMA"; -$fix_set_codes {"DD3_DVD"} = "DD3DVD"; -$fix_set_codes {"DD3_EVG"} = "DD3EVG"; -$fix_set_codes {"DD3_GLV"} = "DD3GLV"; -$fix_set_codes {"DD3_JVC"} = "DD3JVC"; +$fix_set_codes {"DD3_DVD"} = "DVD"; +$fix_set_codes {"DD3_EVG"} = "EVG"; +$fix_set_codes {"DD3_GLV"} = "GLV"; +$fix_set_codes {"DD3_JVC"} = "JVC"; $fix_set_codes {"DK"} = "DRK"; $fix_set_codes {"EX"} = "EXO"; $fix_set_codes {"FE"} = "FEM"; diff --git a/Utils/mtg-sets-data.txt b/Utils/mtg-sets-data.txt index 6653e085907..92be3f28fcf 100644 --- a/Utils/mtg-sets-data.txt +++ b/Utils/mtg-sets-data.txt @@ -45,13 +45,12 @@ Commander|CMD| Conspiracy|CNS| Conspiracy: Take the Crown|CN2| Conflux|CON| -Champs|CP| Coldsnap|CSP| Duel Decks: Jace vs. Chandra|DD2| -Duel Decks: Anthology, Divine vs. Demonic|DD3DVD| -Duel Decks: Anthology, Elves vs. Goblins|DD3EVG| -Duel Decks: Anthology, Garruk vs. Liliana|DD3GVL| -Duel Decks: Anthology, Jace vs. Chandra|DD3JVC| +Duel Decks: Anthology, Divine vs. Demonic|DVD| +Duel Decks: Anthology, Elves vs. Goblins|EVG| +Duel Decks: Anthology, Garruk vs. Liliana|GVL| +Duel Decks: Anthology, Jace vs. Chandra|JVC| Duel Decks: Divine vs. Demonic|DDC| Duel Decks: Garruk vs. Liliana|DDD| Duel Decks: Phyrexia vs. the Coalition|DDE| @@ -88,7 +87,6 @@ European Land Program|EURO| Eventide|EVE| Duel Decks: Elves vs. Goblins|EVG| Duel Decks: Elves vs. Inventors|DDU| -Duels of the Planeswalkers Promos|DPAP| Pro Tour Promos|PPRO| Exodus|EXO| Zendikar Expeditions|EXP| @@ -99,10 +97,10 @@ Future Sight|FUT| Global Series: Jiang Yanggu & Mu Yanling|GS1| Guildpact|GPT| Guilds of Ravnica|GRN| -Grand Prix|GPX| +Grand Prix|PGPX| WPN Gateway|GRC| Gatecrash|GTC| -Guru|GUR| +Guru|PGRU| Premium Deck Series: Slivers|H09| Homelands|HML| Heroes of the Realm|HOTR| @@ -155,7 +153,6 @@ Mercadian Masques|MMQ| Morningtide|MOR| Magic Player Rewards|MPRP| Masterpiece Series|MPS| -Masterpiece Series Amonkhet|MPS-AKH| Mirrodin|MRD| Nemesis|NEM| New Phyrexia|NPH| @@ -172,7 +169,7 @@ Premium Deck Series: Graveborn|PD3| Planar Chaos|PLC| Planeshift|PLS| Portal|POR| -Prerelease Events|PTC| +Prerelease Events|PPRE| Portal Three Kingdoms|PTK| Ravnica Allegiance|RNA| Ravnica: City of Guilds|RAV| @@ -223,7 +220,6 @@ Vintage Masters|VMA| War of the Spark|WAR| Welcome Deck 2016|W16| Welcome Deck 2017|W17| -World Magic Cup Qualifier|WMCQ| Weatherlight|WTH| Worldwake|WWK| Ixalan|XLN|