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 1d01f9f7707..38b5ff2b434 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 @@ -6,22 +6,20 @@ import java.util.Calendar; import java.util.Date; import java.util.HashMap; import java.util.Iterator; - import mage.cards.ExpansionSet; import mage.cards.Sets; import mage.client.constants.Constants; import mage.constants.Rarity; +import org.apache.log4j.Logger; import org.mage.plugins.card.dl.DownloadJob; - 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; -import org.apache.log4j.Logger; - public class GathererSets implements Iterable { private class CheckResult { + String code; ExpansionSet set; boolean haveCommon; @@ -69,12 +67,12 @@ public class GathererSets implements Iterable { //"ARENA" -- is't many set with different codes, not one "CLASH", "CP", "DD3GVL", "DPA", "EURO", "FNMP", "GPX", "GRC", "GUR", "H17", "JR", "MBP", "MGDC", "MLP", "MPRP", "MPS-AKH", "PTC", "S00", "S99", "SUS", "SWS", "UGIN", "UGL", "V10", "V17", "WMCQ", // need to fix "H09", "PD2", "PD3", "UNH", "CM1", "E02", "V11", "M25", "UST", "IMA", "DD2", "EVG", "DDC", "DDE", "DDD", "DDT", "8EB", "9EB", "CHR" // ok - // current testing + // 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", + "DD3DVD", "DD3JVC", "DDO", "DDP", "DDQ", "DDR", "DDS", "DDT", "ALA", "CON", "ARB", "ZEN", "WWK", "ROE", "SOM", "MBS", "NPH", @@ -155,7 +153,7 @@ public class GathererSets implements Iterable { outDir = new File(getImagesDir() + Constants.RESOURCE_PATH_SYMBOLS); - if (!outDir.exists()){ + if (!outDir.exists()) { outDir.mkdirs(); } } @@ -163,6 +161,7 @@ public class GathererSets implements Iterable { // checks for wrong card settings and support (easy to control what all good) private static final HashMap setsToDownload = new HashMap<>(); private static final HashMap codesToIgnoreCheck = new HashMap<>(); + static { // xMage have inner sets for 8th and 9th Edition for booster workaround (cards from core game do not include in boosters) // see https://mtg.gamepedia.com/8th_Edition/Core_Game @@ -172,7 +171,7 @@ public class GathererSets implements Iterable { } private void CheckSearchResult(String searchCode, ExpansionSet foundedExp, boolean canDownloadTask, - boolean haveCommon, boolean haveUncommon, boolean haveRare, boolean haveMyth){ + boolean haveCommon, boolean haveUncommon, boolean haveRare, boolean haveMyth) { // duplicated in settings CheckResult res = setsToDownload.get(searchCode); @@ -190,9 +189,8 @@ public class GathererSets implements Iterable { } // checks for founded sets only - // to early to download - if (!canDownloadTask){ + if (!canDownloadTask) { Calendar c = Calendar.getInstance(); c.setTime(foundedExp.getReleaseDate()); c.add(Calendar.DATE, -1 * DAYS_BEFORE_RELEASE_TO_DOWNLOAD); @@ -201,14 +199,14 @@ public class GathererSets implements Iterable { } } - private void AnalyseSearchResult(){ + private void AnalyseSearchResult() { // analyze supported sets and show wrong settings Date startedDate = new Date(); for (ExpansionSet set : Sets.getInstance().values()) { // ignore some inner sets - if (codesToIgnoreCheck.get(set.getCode()) != null){ + if (codesToIgnoreCheck.get(set.getCode()) != null) { continue; } @@ -239,21 +237,20 @@ public class GathererSets implements Iterable { //*/ // 3. info: sets with alternative numbers - for(ExpansionSet.SetCardInfo card: set.getSetCardInfo()){ - if (String.valueOf(card.getCardNumberAsInt()).length() != card.getCardNumber().length()){ + for (ExpansionSet.SetCardInfo card : set.getSetCardInfo()) { + if (String.valueOf(card.getCardNumberAsInt()).length() != card.getCardNumber().length()) { logger.info(String.format("Symbols: set have alternative card but do not config to it: %s (%s)", set.getCode(), set.getName())); break; } } // 4. info: sets with missing cards for boosters (todo: what about +20 number for alternative land arts?) - if (set.getMaxCardNumberInBooster() != Integer.MAX_VALUE) - { - for(ExpansionSet.SetCardInfo card: set.getSetCardInfo()){ - if (card.getCardNumberAsInt() > set.getMaxCardNumberInBooster()){ + if (set.getMaxCardNumberInBooster() != Integer.MAX_VALUE) { + for (ExpansionSet.SetCardInfo card : set.getSetCardInfo()) { + if (card.getCardNumberAsInt() > set.getMaxCardNumberInBooster()) { if (card.getRarity() == Rarity.LAND) { logger.info(String.format("Symbols: set's booster have land above max card number: %s (%s), %s - %s", set.getCode(), set.getName(), card.getCardNumber(), card.getName())); - }else { + } else { logger.info(String.format("Symbols: set's booster missing nonland card:: %s (%s), %s - %s", set.getCode(), set.getName(), card.getCardNumber(), card.getName())); } } @@ -337,4 +334,4 @@ public class GathererSets implements Iterable { String url = "http://gatherer.wizards.com/Handlers/Image.ashx?type=symbol&set=" + set + "&size=small&rarity=" + urlRarity; return new DownloadJob(set + '-' + rarity, fromURL(url), toFile(dst)); } -} \ No newline at end of file +} diff --git a/Mage.Sets/src/mage/sets/MerfolkVsGoblins.java b/Mage.Sets/src/mage/sets/MerfolkVsGoblins.java index caab14c36ca..de3ef4866ae 100644 --- a/Mage.Sets/src/mage/sets/MerfolkVsGoblins.java +++ b/Mage.Sets/src/mage/sets/MerfolkVsGoblins.java @@ -28,6 +28,7 @@ package mage.sets; import mage.cards.ExpansionSet; +import mage.constants.Rarity; import mage.constants.SetType; /** @@ -46,5 +47,69 @@ public class MerfolkVsGoblins extends ExpansionSet { super("Duel Decks: Merfolk vs. Goblins", "DDT", ExpansionSet.buildDate(2017, 11, 10), SetType.SUPPLEMENTAL); this.blockName = "Duel Decks"; this.hasBasicLands = false; + + cards.add(new SetCardInfo("Aquitect's Will", 2, Rarity.COMMON, mage.cards.a.AquitectsWill.class)); + cards.add(new SetCardInfo("Battle Squadron", 33, Rarity.UNCOMMON, mage.cards.b.BattleSquadron.class)); + cards.add(new SetCardInfo("Blighted Cataract", 26, Rarity.UNCOMMON, mage.cards.b.BlightedCataract.class)); + cards.add(new SetCardInfo("Blighted Gorge", 58, Rarity.UNCOMMON, mage.cards.b.BlightedGorge.class)); + cards.add(new SetCardInfo("Boggart Brute", 34, Rarity.COMMON, mage.cards.b.BoggartBrute.class)); + cards.add(new SetCardInfo("Brittle Effigy", 56, Rarity.RARE, mage.cards.b.BrittleEffigy.class)); + cards.add(new SetCardInfo("Brute Strength", 35, Rarity.COMMON, mage.cards.b.BruteStrength.class)); + cards.add(new SetCardInfo("Claustrophobia", 3, Rarity.COMMON, mage.cards.c.Claustrophobia.class)); + cards.add(new SetCardInfo("Cleaver Riot", 36, Rarity.UNCOMMON, mage.cards.c.CleaverRiot.class)); + cards.add(new SetCardInfo("Cold-Eyed Selkie", 25, Rarity.RARE, mage.cards.c.ColdEyedSelkie.class)); + cards.add(new SetCardInfo("Concentrate", 4, Rarity.UNCOMMON, mage.cards.c.Concentrate.class)); + cards.add(new SetCardInfo("Ember Hauler", 37, Rarity.UNCOMMON, mage.cards.e.EmberHauler.class)); + cards.add(new SetCardInfo("Engulf the Shore", 5, Rarity.RARE, mage.cards.e.EngulfTheShore.class)); + cards.add(new SetCardInfo("Essence Scatter", 6, Rarity.COMMON, mage.cards.e.EssenceScatter.class)); + cards.add(new SetCardInfo("Forgotten Cave", 59, Rarity.COMMON, mage.cards.f.ForgottenCave.class)); + cards.add(new SetCardInfo("Foundry Street Denizen", 38, Rarity.COMMON, mage.cards.f.FoundryStreetDenizen.class)); + cards.add(new SetCardInfo("Gempalm Incinerator", 39, Rarity.UNCOMMON, mage.cards.g.GempalmIncinerator.class)); + cards.add(new SetCardInfo("Ghostfire", 40, Rarity.COMMON, mage.cards.g.Ghostfire.class)); + cards.add(new SetCardInfo("Goblin Charbelcher", 57, Rarity.RARE, mage.cards.g.GoblinCharbelcher.class)); + cards.add(new SetCardInfo("Goblin Chieftain", 41, Rarity.RARE, mage.cards.g.GoblinChieftain.class)); + cards.add(new SetCardInfo("Goblin Diplomats", 42, Rarity.RARE, mage.cards.g.GoblinDiplomats.class)); + cards.add(new SetCardInfo("Goblin Glory Chaser", 43, Rarity.UNCOMMON, mage.cards.g.GoblinGloryChaser.class)); + cards.add(new SetCardInfo("Goblin Goon", 44, Rarity.RARE, mage.cards.g.GoblinGoon.class)); + cards.add(new SetCardInfo("Goblin Grenade", 45, Rarity.UNCOMMON, mage.cards.g.GoblinGrenade.class)); + cards.add(new SetCardInfo("Goblin Rabblemaster", 46, Rarity.RARE, mage.cards.g.GoblinRabblemaster.class)); + cards.add(new SetCardInfo("Goblin Razerunners", 47, Rarity.RARE, mage.cards.g.GoblinRazerunners.class)); + cards.add(new SetCardInfo("Goblin Ringleader", 48, Rarity.UNCOMMON, mage.cards.g.GoblinRingleader.class)); + cards.add(new SetCardInfo("Goblin Tunneler", 49, Rarity.COMMON, mage.cards.g.GoblinTunneler.class)); + cards.add(new SetCardInfo("Goblin Wardriver", 50, Rarity.UNCOMMON, mage.cards.g.GoblinWardriver.class)); + cards.add(new SetCardInfo("Harbinger of the Tides", 7, Rarity.RARE, mage.cards.h.HarbingerOfTheTides.class)); + cards.add(new SetCardInfo("Hordeling Outburst", 51, Rarity.UNCOMMON, mage.cards.h.HordelingOutburst.class)); + cards.add(new SetCardInfo("Inkfathom Divers", 8, Rarity.COMMON, mage.cards.i.InkfathomDivers.class)); + cards.add(new SetCardInfo("Island", 28, Rarity.LAND, mage.cards.basiclands.Island.class)); + cards.add(new SetCardInfo("Island", 29, Rarity.LAND, mage.cards.basiclands.Island.class)); + cards.add(new SetCardInfo("Island", 30, Rarity.LAND, mage.cards.basiclands.Island.class)); + cards.add(new SetCardInfo("Island", 31, Rarity.LAND, mage.cards.basiclands.Island.class)); + cards.add(new SetCardInfo("Krenko's Command", 53, Rarity.COMMON, mage.cards.k.KrenkosCommand.class)); + cards.add(new SetCardInfo("Krenko, Mob Boss", 52, Rarity.RARE, mage.cards.k.KrenkoMobBoss.class)); + cards.add(new SetCardInfo("Lonely Sandbar", 27, Rarity.COMMON, mage.cards.l.LonelySandbar.class)); + cards.add(new SetCardInfo("Master of Waves", 1, Rarity.MYTHIC, mage.cards.m.MasterOfWaves.class)); + cards.add(new SetCardInfo("Master of the Pearl Trident", 9, Rarity.RARE, mage.cards.m.MasterOfThePearlTrident.class)); + cards.add(new SetCardInfo("Merfolk Looter", 10, Rarity.UNCOMMON, mage.cards.m.MerfolkLooter.class)); + cards.add(new SetCardInfo("Merfolk Sovereign", 11, Rarity.RARE, mage.cards.m.MerfolkSovereign.class)); + cards.add(new SetCardInfo("Merfolk Wayfinder", 12, Rarity.UNCOMMON, mage.cards.m.MerfolkWayfinder.class)); + cards.add(new SetCardInfo("Merrow Reejerey", 13, Rarity.UNCOMMON, mage.cards.m.MerrowReejerey.class)); + cards.add(new SetCardInfo("Mind Spring", 14, Rarity.RARE, mage.cards.m.MindSpring.class)); + cards.add(new SetCardInfo("Misdirection", 15, Rarity.RARE, mage.cards.m.Misdirection.class)); + cards.add(new SetCardInfo("Mountain", 60, Rarity.LAND, mage.cards.basiclands.Mountain.class)); + cards.add(new SetCardInfo("Mountain", 61, Rarity.LAND, mage.cards.basiclands.Mountain.class)); + cards.add(new SetCardInfo("Mountain", 62, Rarity.LAND, mage.cards.basiclands.Mountain.class)); + cards.add(new SetCardInfo("Mountain", 63, Rarity.LAND, mage.cards.basiclands.Mountain.class)); + cards.add(new SetCardInfo("Relentless Assault", 54, Rarity.RARE, mage.cards.r.RelentlessAssault.class)); + cards.add(new SetCardInfo("Rootwater Hunter", 16, Rarity.UNCOMMON, mage.cards.r.RootwaterHunter.class)); + cards.add(new SetCardInfo("Scroll Thief", 17, Rarity.COMMON, mage.cards.s.ScrollThief.class)); + cards.add(new SetCardInfo("Streambed Aquitects", 18, Rarity.COMMON, mage.cards.s.StreambedAquitects.class)); + cards.add(new SetCardInfo("Tarfire", 55, Rarity.COMMON, mage.cards.t.Tarfire.class)); + cards.add(new SetCardInfo("Tidal Courier", 19, Rarity.UNCOMMON, mage.cards.t.TidalCourier.class)); + cards.add(new SetCardInfo("Tidal Warrior", 20, Rarity.COMMON, mage.cards.t.TidalWarrior.class)); + cards.add(new SetCardInfo("Tidal Wave", 21, Rarity.COMMON, mage.cards.t.TidalWave.class)); + cards.add(new SetCardInfo("Tidebinder Mage", 22, Rarity.RARE, mage.cards.t.TidebinderMage.class)); + cards.add(new SetCardInfo("Triton Tactics", 23, Rarity.UNCOMMON, mage.cards.t.TritonTactics.class)); + cards.add(new SetCardInfo("Wake Thrasher", 24, Rarity.RARE, mage.cards.w.WakeThrasher.class)); + cards.add(new SetCardInfo("Warren Instigator", 32, Rarity.MYTHIC, mage.cards.w.WarrenInstigator.class)); } } diff --git a/Utils/mtg-cards-data.txt b/Utils/mtg-cards-data.txt index ac93f55efac..2013cd36113 100644 --- a/Utils/mtg-cards-data.txt +++ b/Utils/mtg-cards-data.txt @@ -32781,6 +32781,14 @@ Oddly Uneven|Unstable|15|R|{3}{W}{W}|Sorcery|||Choose one --$* Destroy each crea capital offense|Unstable|52|C|{2}{B}{B}|Instant|||target creature gets -x/-x until end of turn, where x is the number of times a capital letter appears in its rules text. (ignore reminder text and flavor text.) Very Cryptic Command|Unstable|49|R|{1}{U}{U}{U}|Instant|||Choose two - Return target permanent to its controller�s hand.; Draw two cards, then discard a card.; Change the target of target spell with a single target.; Turn over target nontoken creature.| Master of Waves|Duel Decks: Merfolk vs. Goblins|1|M|{3}{U}|Creature - Merfolk Wizard|2|1|Protection from red$Elemental creatures you control get +1/+1.$When Master of Waves enters the battlefield, create a number of 1/0 blue Elemental creature tokens equal to your devotion to blue. (Each {U} in the mana costs of permanents you control counts toward your devotion to blue.)| +Aquitect's Will|Duel Decks: Merfolk vs. Goblins|2|C|{U}|Tribal Sorcery - Merfolk|||Put a flood counter on target land. That land is an Island in addition to its other types for as long as it has a flood counter on it. If you control a Merfolk, draw a card.| +Claustrophobia|Duel Decks: Merfolk vs. Goblins|3|C|{1}{U}{U}|Enchantment - Aura|||Enchant creature$When Claustrophobia enters the battlefield, tap enchanted creature.$Enchanted creature doesn't untap during its controller's untap step.| +Concentrate|Duel Decks: Merfolk vs. Goblins|4|U|{2}{U}{U}|Sorcery|||Draw three cards.| +Engulf the Shore|Duel Decks: Merfolk vs. Goblins|5|R|{3}{U}|Instant|||Return to their owners' hands all creatures with toughness less than or equal to the number of Islands you control.| +Essence Scatter|Duel Decks: Merfolk vs. Goblins|6|C|{1}{U}|Instant|||Counter target creature spell.| +Harbinger of the Tides|Duel Decks: Merfolk vs. Goblins|7|R|{U}{U}|Creature - Merfolk Wizard|2|2|You may cast Harbinger of the Tides as though it had flash if you pay {2} more to cast it. (You may cast it any time you could cast an instant.)$When Harbinger of the Tides enters the battlefield, you may return target tapped creature an opponent controls to its owner's hand.| +Inkfathom Divers|Duel Decks: Merfolk vs. Goblins|8|C|{3}{U}{U}|Creature - Merfolk Soldier|3|3|Islandwalk (This creature can't be blocked as long as defending player controls an Island.)$When Inkfathom Divers enters the battlefield, look at the top four cards of your library, then put them back in any order.| +Master of the Pearl Trident|Duel Decks: Merfolk vs. Goblins|9|R|{U}{U}|Creature - Merfolk|2|2|Other Merfolk creatures you control get +1/+1 and have islandwalk. (They can't be blocked as long as defending player controls an Island.)| Merfolk Looter|Duel Decks: Merfolk vs. Goblins|10|U|{1}{U}|Creature - Merfolk Rogue|1|1|{tap}: Draw a card, then discard a card.| Merfolk Sovereign|Duel Decks: Merfolk vs. Goblins|11|R|{1}{U}{U}|Creature - Merfolk|2|2|Other Merfolk creatures you control get +1/+1.${tap}: Target Merfolk creature can't be blocked this turn.| Merfolk Wayfinder|Duel Decks: Merfolk vs. Goblins|12|U|{2}{U}|Creature - Merfolk Scout|1|2|Flying$When Merfolk Wayfinder enters the battlefield, reveal the top three cards of your library. Put all Island cards revealed this way into your hand and the rest on the bottom of your library in any order.| @@ -32791,7 +32799,6 @@ Rootwater Hunter|Duel Decks: Merfolk vs. Goblins|16|U|{2}{U}|Creature - Merfolk| Scroll Thief|Duel Decks: Merfolk vs. Goblins|17|C|{2}{U}|Creature - Merfolk Rogue|1|3|Whenever Scroll Thief deals combat damage to a player, draw a card.| Streambed Aquitects|Duel Decks: Merfolk vs. Goblins|18|C|{1}{U}{U}|Creature - Merfolk Scout|2|3|{tap}: Target Merfolk creature gets +1/+1 and gains islandwalk until end of turn. (It can't be blocked as long as defending player controls an Island.)${tap}: Target land becomes an Island until end of turn.| Tidal Courier|Duel Decks: Merfolk vs. Goblins|19|U|{3}{U}|Creature - Merfolk|1|2|When Tidal Courier enters the battlefield, reveal the top four cards of your library. Put all Merfolk cards revealed this way into your hand and the rest on the bottom of your library in any order.${3}{U}: Tidal Courier gains flying until end of turn.| -Aquitect's Will|Duel Decks: Merfolk vs. Goblins|2|C|{U}|Tribal Sorcery - Merfolk|||Put a flood counter on target land. That land is an Island in addition to its other types for as long as it has a flood counter on it. If you control a Merfolk, draw a card.| Tidal Warrior|Duel Decks: Merfolk vs. Goblins|20|C|{U}|Creature - Merfolk Warrior|1|1|{tap}: Target land becomes an Island until end of turn.| Tidal Wave|Duel Decks: Merfolk vs. Goblins|21|C|{2}{U}|Instant|||Create a 5/5 blue Wall creature token with defender. Sacrifice it at the beginning of the next end step.| Tidebinder Mage|Duel Decks: Merfolk vs. Goblins|22|R|{U}{U}|Creature - Merfolk Wizard|2|2|When Tidebinder Mage enters the battlefield, tap target red or green creature an opponent controls. That creature doesn't untap during its controller's untap step for as long as you control Tidebinder Mage.| @@ -32802,7 +32809,6 @@ Blighted Cataract|Duel Decks: Merfolk vs. Goblins|26|U||Land|||{tap}: Add {C} to Lonely Sandbar|Duel Decks: Merfolk vs. Goblins|27|C||Land|||Lonely Sandbar enters the battlefield tapped.${tap}: Add {U} to your mana pool.$Cycling {U} ({U}, Discard this card: Draw a card.)| Island|Duel Decks: Merfolk vs. Goblins|28|L||Basic Land - Island|||| Island|Duel Decks: Merfolk vs. Goblins|29|L||Basic Land - Island|||| -Claustrophobia|Duel Decks: Merfolk vs. Goblins|3|C|{1}{U}{U}|Enchantment - Aura|||Enchant creature$When Claustrophobia enters the battlefield, tap enchanted creature.$Enchanted creature doesn't untap during its controller's untap step.| Warren Instigator|Duel Decks: Merfolk vs. Goblins|32|M|{R}{R}|Creature - Goblin Berserker|1|1|Double strike$Whenever Warren Instigator deals damage to an opponent, you may put a Goblin creature card from your hand onto the battlefield.| Battle Squadron|Duel Decks: Merfolk vs. Goblins|33|U|{3}{R}{R}|Creature - Goblin|*|*|Flying$Battle Squadron's power and toughness are each equal to the number of creatures you control.| Boggart Brute|Duel Decks: Merfolk vs. Goblins|34|C|{2}{R}|Creature - Goblin Warrior|3|2|Menace (This creature can't be blocked except by two or more creatures.)| @@ -32811,7 +32817,6 @@ Cleaver Riot|Duel Decks: Merfolk vs. Goblins|36|U|{4}{R}|Sorcery|||Creatures you Ember Hauler|Duel Decks: Merfolk vs. Goblins|37|U|{R}{R}|Creature - Goblin|2|2|{1}, Sacrifice Ember Hauler: Ember Hauler deals 2 damage to target creature or player.| Foundry Street Denizen|Duel Decks: Merfolk vs. Goblins|38|C|{R}|Creature - Goblin Warrior|1|1|Whenever another red creature enters the battlefield under your control, Foundry Street Denizen gets +1/+0 until end of turn.| Gempalm Incinerator|Duel Decks: Merfolk vs. Goblins|39|U|{2}{R}|Creature - Goblin|2|1|Cycling {1}{R} ({1}{R}, Discard this card: Draw a card.)$When you cycle Gempalm Incinerator, you may have it deal X damage to target creature, where X is the number of Goblins on the battlefield.| -Concentrate|Duel Decks: Merfolk vs. Goblins|4|U|{2}{U}{U}|Sorcery|||Draw three cards.| Ghostfire|Duel Decks: Merfolk vs. Goblins|40|C|{2}{R}|Instant|||Ghostfire is colorless.$Ghostfire deals 3 damage to target creature or player.| Goblin Chieftain|Duel Decks: Merfolk vs. Goblins|41|R|{1}{R}{R}|Creature - Goblin|2|2|Haste (This creature can attack and {tap} as soon as it comes under your control.)$Other Goblin creatures you control get +1/+1 and have haste.| Goblin Diplomats|Duel Decks: Merfolk vs. Goblins|42|R|{1}{R}|Creature - Goblin|2|1|{tap}: Each creature attacks this turn if able.| @@ -32822,7 +32827,6 @@ Goblin Rabblemaster|Duel Decks: Merfolk vs. Goblins|46|R|{2}{R}|Creature - Gobli Goblin Razerunners|Duel Decks: Merfolk vs. Goblins|47|R|{2}{R}{R}|Creature - Goblin Warrior|3|4|{1}{R}, Sacrifice a land: Put a +1/+1 counter on Goblin Razerunners.$At the beginning of your end step, you may have Goblin Razerunners deal damage equal to the number of +1/+1 counters on it to target player.| Goblin Ringleader|Duel Decks: Merfolk vs. Goblins|48|U|{3}{R}|Creature - Goblin|2|2|Haste$When Goblin Ringleader enters the battlefield, reveal the top four cards of your library. Put all Goblin cards revealed this way into your hand and the rest on the bottom of your library in any order.| Goblin Tunneler|Duel Decks: Merfolk vs. Goblins|49|C|{1}{R}|Creature - Goblin Rogue|1|1|{tap}: Target creature with power 2 or less can't be blocked this turn.| -Engulf the Shore|Duel Decks: Merfolk vs. Goblins|5|R|{3}{U}|Instant|||Return to their owners' hands all creatures with toughness less than or equal to the number of Islands you control.| Goblin Wardriver|Duel Decks: Merfolk vs. Goblins|50|U|{R}{R}|Creature - Goblin Warrior|2|2|Battle cry (Whenever this creature attacks, each other attacking creature gets +1/+0 until end of turn.)| Hordeling Outburst|Duel Decks: Merfolk vs. Goblins|51|U|{1}{R}{R}|Sorcery|||Create three 1/1 red Goblin creature tokens.| Krenko, Mob Boss|Duel Decks: Merfolk vs. Goblins|52|R|{2}{R}{R}|Legendary Creature - Goblin Warrior|3|3|{tap}: Create X 1/1 red Goblin creature tokens, where X is the number of Goblins you control.| @@ -32833,9 +32837,5 @@ Brittle Effigy|Duel Decks: Merfolk vs. Goblins|56|R|{1}|Artifact|||{4}, {tap}, E Goblin Charbelcher|Duel Decks: Merfolk vs. Goblins|57|R|{4}|Artifact|||{3}, {tap}: Reveal cards from the top of your library until you reveal a land card. Goblin Charbelcher deals damage equal to the number of nonland cards revealed this way to target creature or player. If the revealed land card was a Mountain, Goblin Charbelcher deals double that damage instead. Put the revealed cards on the bottom of your library in any order.| Blighted Gorge|Duel Decks: Merfolk vs. Goblins|58|U||Land|||{tap}: Add {C} to your mana pool.${4}{R}, {tap}, Sacrifice Blighted Gorge: Blighted Gorge deals 2 damage to target creature or player.| Forgotten Cave|Duel Decks: Merfolk vs. Goblins|59|C||Land|||Forgotten Cave enters the battlefield tapped.${tap}: Add {R} to your mana pool.$Cycling {R} ({R}, Discard this card: Draw a card.)| -Essence Scatter|Duel Decks: Merfolk vs. Goblins|6|C|{1}{U}|Instant|||Counter target creature spell.| Mountain|Duel Decks: Merfolk vs. Goblins|60|L||Basic Land - Mountain|||| Mountain|Duel Decks: Merfolk vs. Goblins|61|L||Basic Land - Mountain|||| -Harbinger of the Tides|Duel Decks: Merfolk vs. Goblins|7|R|{U}{U}|Creature - Merfolk Wizard|2|2|You may cast Harbinger of the Tides as though it had flash if you pay {2} more to cast it. (You may cast it any time you could cast an instant.)$When Harbinger of the Tides enters the battlefield, you may return target tapped creature an opponent controls to its owner's hand.| -Inkfathom Divers|Duel Decks: Merfolk vs. Goblins|8|C|{3}{U}{U}|Creature - Merfolk Soldier|3|3|Islandwalk (This creature can't be blocked as long as defending player controls an Island.)$When Inkfathom Divers enters the battlefield, look at the top four cards of your library, then put them back in any order.| -Master of the Pearl Trident|Duel Decks: Merfolk vs. Goblins|9|R|{U}{U}|Creature - Merfolk|2|2|Other Merfolk creatures you control get +1/+1 and have islandwalk. (They can't be blocked as long as defending player controls an Island.)|