From 7e75b0cc03e3ab2e294361cbcaa6b505f13f4574 Mon Sep 17 00:00:00 2001 From: ingmargoudt Date: Mon, 20 Mar 2017 10:39:28 +0100 Subject: [PATCH 01/16] change map for list --- Mage.Sets/src/mage/cards/k/KynaiosAndTiroOfMeletis.java | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/Mage.Sets/src/mage/cards/k/KynaiosAndTiroOfMeletis.java b/Mage.Sets/src/mage/cards/k/KynaiosAndTiroOfMeletis.java index 3b0beda3b7..d56c6acce5 100644 --- a/Mage.Sets/src/mage/cards/k/KynaiosAndTiroOfMeletis.java +++ b/Mage.Sets/src/mage/cards/k/KynaiosAndTiroOfMeletis.java @@ -47,12 +47,12 @@ import mage.players.PlayerList; import mage.target.Target; import mage.target.common.TargetCardInHand; +import java.util.ArrayList; import java.util.HashMap; import java.util.Objects; import java.util.UUID; /** - * * @author spjspj */ public class KynaiosAndTiroOfMeletis extends CardImpl { @@ -100,7 +100,6 @@ class KynaiosAndTirosEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { Player controller = game.getPlayer(source.getControllerId()); - Permanent permanent = game.getPermanent(source.getSourceId()); if (controller != null) { controller.drawCards(1, game); PlayerList playerList = game.getState().getPlayerList().copy(); @@ -111,7 +110,7 @@ class KynaiosAndTirosEffect extends OneShotEffect { Player currentPlayer = game.getPlayer(playerList.get()); UUID firstInactivePlayer = null; Target target = new TargetCardInHand(filter); - HashMap noLandPlayers = new HashMap<>(); + ArrayList noLandPlayers = new ArrayList<>(); while (controller.canRespond()) { if (currentPlayer != null && currentPlayer.canRespond() && game.getState().getPlayersInRange(controller.getId(), game).contains(currentPlayer.getId())) { @@ -130,7 +129,7 @@ class KynaiosAndTirosEffect extends OneShotEffect { } } if (!playedLand && !Objects.equals(currentPlayer, controller)) { - noLandPlayers.put(currentPlayer.getId(), playedLand); + noLandPlayers.add(currentPlayer.getId()); } } // get next player @@ -142,7 +141,7 @@ class KynaiosAndTirosEffect extends OneShotEffect { } } - for (UUID playerId : noLandPlayers.keySet()) { + for (UUID playerId : noLandPlayers) { Player player = game.getPlayer(playerId); if (player != null) { if (player.chooseUse(outcome.DrawCard, "Draw a card?", source, game)) { From dc7e9318af44fc5c99ed70629912dc78c687afe5 Mon Sep 17 00:00:00 2001 From: Achilles Date: Mon, 20 Mar 2017 08:24:28 -0500 Subject: [PATCH 02/16] - getPlayersInRange() added to All Hallow's Eve --- Mage.Sets/src/mage/cards/a/AllHallowsEve.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Mage.Sets/src/mage/cards/a/AllHallowsEve.java b/Mage.Sets/src/mage/cards/a/AllHallowsEve.java index 05834d9dfc..a9f7270a0d 100644 --- a/Mage.Sets/src/mage/cards/a/AllHallowsEve.java +++ b/Mage.Sets/src/mage/cards/a/AllHallowsEve.java @@ -106,7 +106,8 @@ class AllHallowsEveEffect extends OneShotEffect { if (allHallowsEve.getCounters(game).getCount(CounterType.SCREAM) == 0) { allHallowsEve.moveToZone(Zone.GRAVEYARD, source.getId(), game, false); Cards creatures = new CardsImpl(); - for (Player player : game.getPlayers().values()) { + for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) { + Player player = game.getPlayer(playerId); if (player != null) { for (Card creatureCard : player.getGraveyard().getCards(new FilterCreatureCard(), game)) { creatures.add(creatureCard); From 696272b328879bb11f58286a9ac4a755b162e384 Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Mon, 20 Mar 2017 23:09:14 +0100 Subject: [PATCH 03/16] * Misthollow Griffin - Fixed a bug that sometimes a not owning player could play the card from exile. --- Mage.Sets/src/mage/cards/m/MisthollowGriffin.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Mage.Sets/src/mage/cards/m/MisthollowGriffin.java b/Mage.Sets/src/mage/cards/m/MisthollowGriffin.java index 7b6c40b915..30079adb55 100644 --- a/Mage.Sets/src/mage/cards/m/MisthollowGriffin.java +++ b/Mage.Sets/src/mage/cards/m/MisthollowGriffin.java @@ -50,7 +50,7 @@ import mage.game.Game; public class MisthollowGriffin extends CardImpl { public MisthollowGriffin(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}{U}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}{U}"); this.subtype.add("Griffin"); this.power = new MageInt(3); @@ -97,10 +97,11 @@ class MisthollowGriffinPlayEffect extends AsThoughEffectImpl { public boolean applies(UUID sourceId, Ability source, UUID affectedControllerId, Game game) { if (sourceId.equals(source.getSourceId())) { Card card = game.getCard(source.getSourceId()); - if (card != null && card.getOwnerId().equals(source.getControllerId()) && game.getState().getZone(source.getSourceId()) == Zone.EXILED) { + if (card != null && card.getOwnerId().equals(affectedControllerId) + && game.getState().getZone(source.getSourceId()) == Zone.EXILED) { return true; } } return false; } -} \ No newline at end of file +} From a8f42de901c9cf861239741ad22fadfd167f0920 Mon Sep 17 00:00:00 2001 From: drmDev Date: Mon, 20 Mar 2017 21:30:48 -0400 Subject: [PATCH 04/16] First set of cards updated to simplifed token creation and exile at end step --- .../src/mage/cards/e/ElementalMastery.java | 20 +++-------- .../src/mage/cards/f/FeralLightning.java | 36 +++---------------- Mage.Sets/src/mage/cards/g/Giantbaiting.java | 19 +++------- .../src/mage/cards/r/RakdosGuildmage.java | 19 +++------- Mage.Sets/src/mage/cards/t/Thunderheads.java | 18 +++------- 5 files changed, 23 insertions(+), 89 deletions(-) diff --git a/Mage.Sets/src/mage/cards/e/ElementalMastery.java b/Mage.Sets/src/mage/cards/e/ElementalMastery.java index 76a92b7d97..914b39854e 100644 --- a/Mage.Sets/src/mage/cards/e/ElementalMastery.java +++ b/Mage.Sets/src/mage/cards/e/ElementalMastery.java @@ -32,11 +32,10 @@ import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.common.SimpleStaticAbility; -import mage.abilities.common.delayed.AtTheBeginOfNextEndStepDelayedTriggeredAbility; import mage.abilities.costs.common.TapSourceCost; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.AttachEffect; -import mage.abilities.effects.common.ExileTargetEffect; +import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.continuous.GainAbilityAttachedEffect; import mage.abilities.keyword.EnchantAbility; import mage.abilities.keyword.HasteAbility; @@ -51,7 +50,6 @@ import mage.game.permanent.Permanent; import mage.game.permanent.token.Token; import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; -import mage.target.targetpointer.FixedTarget; /** * @@ -73,7 +71,6 @@ public class ElementalMastery extends CardImpl { // Enchanted creature has "{tap}: create X 1/1 red Elemental creature tokens with haste, where X is this creature's power. Exile them at the beginning of the next end step." Ability ability2 = new SimpleActivatedAbility(Zone.BATTLEFIELD, new ElementalMasteryEffect(), new TapSourceCost()); this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(ability2, AttachmentType.AURA))); - } public ElementalMastery(final ElementalMastery card) { @@ -108,18 +105,11 @@ class ElementalMasteryEffect extends OneShotEffect { if (creatureAttached != null) { int power = creatureAttached.getPower().getValue(); if (power > 0) { - ElementalToken token = new ElementalToken(); - token.putOntoBattlefield(power, game, creatureAttached.getId(), creatureAttached.getControllerId()); - for (UUID tokenId : token.getLastAddedTokenIds()) { - Permanent tokenPermanent = game.getPermanent(tokenId); - if (tokenPermanent != null) { - ExileTargetEffect exileEffect = new ExileTargetEffect(); - exileEffect.setTargetPointer(new FixedTarget(tokenPermanent, game)); - game.addDelayedTriggeredAbility(new AtTheBeginOfNextEndStepDelayedTriggeredAbility(exileEffect), source); - } - } + CreateTokenEffect effect = new CreateTokenEffect(new ElementalToken(), power); + effect.apply(game, source); + effect.exileTokensCreatedAtNextEndStep(game, source); + return true; } - return true; } return false; } diff --git a/Mage.Sets/src/mage/cards/f/FeralLightning.java b/Mage.Sets/src/mage/cards/f/FeralLightning.java index aab267a017..2d159954f5 100644 --- a/Mage.Sets/src/mage/cards/f/FeralLightning.java +++ b/Mage.Sets/src/mage/cards/f/FeralLightning.java @@ -28,23 +28,16 @@ package mage.cards.f; import java.util.UUID; -import mage.MageInt; import mage.abilities.Ability; -import mage.abilities.common.delayed.AtTheBeginOfNextEndStepDelayedTriggeredAbility; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.CreateTokenEffect; -import mage.abilities.effects.common.ExileTargetEffect; -import mage.abilities.keyword.HasteAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Outcome; -import mage.constants.Zone; import mage.game.Game; -import mage.game.permanent.Permanent; -import mage.game.permanent.token.Token; +import mage.game.permanent.token.ElementalToken; import mage.players.Player; -import mage.target.targetpointer.FixedTarget; /** * @@ -90,33 +83,12 @@ class FeralLightningEffect extends OneShotEffect { public boolean apply(Game game, Ability source) { Player controller = game.getPlayer(source.getControllerId()); if (controller != null) { - CreateTokenEffect effect = new CreateTokenEffect(new FeralLightningElementalToken(), 3); + CreateTokenEffect effect = new CreateTokenEffect(new ElementalToken("CON", 1, true), 3); effect.apply(game, source); - for (UUID tokenId : effect.getLastAddedTokenIds()) { - Permanent tokenPermanent = game.getPermanent(tokenId); - if (tokenPermanent != null) { - ExileTargetEffect exileEffect = new ExileTargetEffect(null, "", Zone.BATTLEFIELD); - exileEffect.setTargetPointer(new FixedTarget(tokenPermanent, game)); - game.addDelayedTriggeredAbility(new AtTheBeginOfNextEndStepDelayedTriggeredAbility(exileEffect), source); - } - } + effect.exileTokensCreatedAtNextEndStep(game, source); return true; } return false; } -} - -class FeralLightningElementalToken extends Token { - - public FeralLightningElementalToken() { - super("Elemental", "3/1 red Elemental creature tokens with haste"); - cardType.add(CardType.CREATURE); - color.setRed(true); - subtype.add("Elemental"); - power = new MageInt(3); - toughness = new MageInt(1); - - this.addAbility(HasteAbility.getInstance()); - } -} +} \ No newline at end of file diff --git a/Mage.Sets/src/mage/cards/g/Giantbaiting.java b/Mage.Sets/src/mage/cards/g/Giantbaiting.java index 2bf9df6ad2..6e741d2ccc 100644 --- a/Mage.Sets/src/mage/cards/g/Giantbaiting.java +++ b/Mage.Sets/src/mage/cards/g/Giantbaiting.java @@ -30,9 +30,8 @@ package mage.cards.g; import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; -import mage.abilities.common.delayed.AtTheBeginOfNextEndStepDelayedTriggeredAbility; import mage.abilities.effects.OneShotEffect; -import mage.abilities.effects.common.ExileTargetEffect; +import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.keyword.ConspireAbility; import mage.abilities.keyword.HasteAbility; import mage.cards.CardImpl; @@ -40,9 +39,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Outcome; import mage.game.Game; -import mage.game.permanent.Permanent; import mage.game.permanent.token.Token; -import mage.target.targetpointer.FixedTarget; /** * @@ -89,16 +86,10 @@ class GiantbaitingEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - Token token = new GiantWarriorToken(); - if (token.putOntoBattlefield(1, game, source.getSourceId(), source.getControllerId())) { - for (UUID tokenId : token.getLastAddedTokenIds()) { - Permanent tokenPermanent = game.getPermanent(tokenId); - if (tokenPermanent != null) { - ExileTargetEffect exileEffect = new ExileTargetEffect(); - exileEffect.setTargetPointer(new FixedTarget(tokenPermanent, game)); - game.addDelayedTriggeredAbility(new AtTheBeginOfNextEndStepDelayedTriggeredAbility(exileEffect), source); - } - } + CreateTokenEffect effect = new CreateTokenEffect(new GiantWarriorToken()); + if(effect.apply(game, source)) + { + effect.exileTokensCreatedAtNextEndStep(game, source); return true; } return false; diff --git a/Mage.Sets/src/mage/cards/r/RakdosGuildmage.java b/Mage.Sets/src/mage/cards/r/RakdosGuildmage.java index 8a41605e11..1a8046b53c 100644 --- a/Mage.Sets/src/mage/cards/r/RakdosGuildmage.java +++ b/Mage.Sets/src/mage/cards/r/RakdosGuildmage.java @@ -31,11 +31,10 @@ import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; -import mage.abilities.common.delayed.AtTheBeginOfNextEndStepDelayedTriggeredAbility; import mage.abilities.costs.common.DiscardCardCost; import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.OneShotEffect; -import mage.abilities.effects.common.ExileTargetEffect; +import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.continuous.BoostTargetEffect; import mage.abilities.keyword.HasteAbility; import mage.cards.CardImpl; @@ -45,10 +44,8 @@ import mage.constants.Duration; import mage.constants.Outcome; import mage.constants.Zone; import mage.game.Game; -import mage.game.permanent.Permanent; import mage.game.permanent.token.Token; import mage.target.common.TargetCreaturePermanent; -import mage.target.targetpointer.FixedTarget; /** * @@ -103,16 +100,10 @@ class RakdosGuildmageEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - Token token = new RakdosGuildmageGoblinToken(); - if (token.putOntoBattlefield(1, game, source.getSourceId(), source.getControllerId())) { - for (UUID tokenId : token.getLastAddedTokenIds()) { - Permanent tokenPermanent = game.getPermanent(tokenId); - if (tokenPermanent != null) { - ExileTargetEffect exileEffect = new ExileTargetEffect(); - exileEffect.setTargetPointer(new FixedTarget(tokenPermanent, game)); - game.addDelayedTriggeredAbility(new AtTheBeginOfNextEndStepDelayedTriggeredAbility(exileEffect), source); - } - } + CreateTokenEffect effect = new CreateTokenEffect(new RakdosGuildmageGoblinToken()); + if (effect.apply(game, source)) + { + effect.exileTokensCreatedAtNextEndStep(game, source); return true; } return false; diff --git a/Mage.Sets/src/mage/cards/t/Thunderheads.java b/Mage.Sets/src/mage/cards/t/Thunderheads.java index 5893fecb60..c9c33c5d0c 100644 --- a/Mage.Sets/src/mage/cards/t/Thunderheads.java +++ b/Mage.Sets/src/mage/cards/t/Thunderheads.java @@ -30,9 +30,8 @@ package mage.cards.t; import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; -import mage.abilities.common.delayed.AtTheBeginOfNextEndStepDelayedTriggeredAbility; import mage.abilities.effects.OneShotEffect; -import mage.abilities.effects.common.ExileTargetEffect; +import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.keyword.DefenderAbility; import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.ReplicateAbility; @@ -41,9 +40,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Outcome; import mage.game.Game; -import mage.game.permanent.Permanent; import mage.game.permanent.token.Token; -import mage.target.targetpointer.FixedTarget; /** * @@ -88,16 +85,9 @@ class ThunderheadsEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - Token token = new WeirdToken(); - if (token.putOntoBattlefield(1, game, source.getSourceId(), source.getControllerId())) { - for (UUID tokenId : token.getLastAddedTokenIds()) { - Permanent tokenPermanent = game.getPermanent(tokenId); - if (tokenPermanent != null) { - ExileTargetEffect exileEffect = new ExileTargetEffect(); - exileEffect.setTargetPointer(new FixedTarget(tokenPermanent, game)); - game.addDelayedTriggeredAbility(new AtTheBeginOfNextEndStepDelayedTriggeredAbility(exileEffect), source); - } - } + CreateTokenEffect effect = new CreateTokenEffect(new WeirdToken()); + if (effect.apply(game, source)) { + effect.exileTokensCreatedAtNextEndStep(game, source); return true; } return false; From 5c34022175744ce73a8aab9e2406828da38a8c3c Mon Sep 17 00:00:00 2001 From: drmDev Date: Mon, 20 Mar 2017 21:57:26 -0400 Subject: [PATCH 05/16] second set using refactored createtokeneffect for exiling at end step --- .../src/mage/cards/a/AkoumStonewaker.java | 19 +++------- .../src/mage/cards/c/ChandraFlamecaller.java | 36 ++----------------- .../src/mage/cards/e/ElementalAppeal.java | 34 +++++++----------- Mage.Sets/src/mage/cards/f/FirecatBlitz.java | 14 +------- .../src/mage/cards/g/GeistOfSaintTraft.java | 21 ++++------- .../mage/cards/i/InvocationOfSaintTraft.java | 20 +++-------- .../mage/cards/k/KariZevSkyshipRaider.java | 18 +++------- Mage.Sets/src/mage/cards/s/StoneIdolTrap.java | 24 +++++-------- .../mage/cards/z/ZektarShrineExpedition.java | 25 +++++-------- 9 files changed, 54 insertions(+), 157 deletions(-) diff --git a/Mage.Sets/src/mage/cards/a/AkoumStonewaker.java b/Mage.Sets/src/mage/cards/a/AkoumStonewaker.java index d1132285fe..0f87c37022 100644 --- a/Mage.Sets/src/mage/cards/a/AkoumStonewaker.java +++ b/Mage.Sets/src/mage/cards/a/AkoumStonewaker.java @@ -31,11 +31,10 @@ import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.LandfallAbility; -import mage.abilities.common.delayed.AtTheBeginOfNextEndStepDelayedTriggeredAbility; import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.OneShotEffect; +import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.DoIfCostPaid; -import mage.abilities.effects.common.ExileTargetEffect; import mage.abilities.keyword.HasteAbility; import mage.abilities.keyword.TrampleAbility; import mage.cards.CardImpl; @@ -43,9 +42,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Outcome; import mage.game.Game; -import mage.game.permanent.Permanent; import mage.game.permanent.token.Token; -import mage.target.targetpointer.FixedTarget; /** * @@ -94,16 +91,10 @@ class AkoumStonewakerEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - Token token = new AkoumStonewakerElementalToken(); - if (token.putOntoBattlefield(1, game, source.getSourceId(), source.getControllerId())) { - for (UUID tokenId : token.getLastAddedTokenIds()) { - Permanent tokenPermanent = game.getPermanent(tokenId); - if (tokenPermanent != null) { - ExileTargetEffect exileEffect = new ExileTargetEffect(); - exileEffect.setTargetPointer(new FixedTarget(tokenPermanent, game)); - game.addDelayedTriggeredAbility(new AtTheBeginOfNextEndStepDelayedTriggeredAbility(exileEffect), source); - } - } + + CreateTokenEffect effect = new CreateTokenEffect(new AkoumStonewakerElementalToken()); + if(effect.apply(game, source)) { + effect.exileTokensCreatedAtNextEndStep(game, source); return true; } return false; diff --git a/Mage.Sets/src/mage/cards/c/ChandraFlamecaller.java b/Mage.Sets/src/mage/cards/c/ChandraFlamecaller.java index 3a59ff65eb..6da4abe223 100644 --- a/Mage.Sets/src/mage/cards/c/ChandraFlamecaller.java +++ b/Mage.Sets/src/mage/cards/c/ChandraFlamecaller.java @@ -29,11 +29,9 @@ package mage.cards.c; import java.util.Set; import java.util.UUID; -import mage.MageInt; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; import mage.abilities.common.PlanswalkerEntersWithLoyalityCountersAbility; -import mage.abilities.common.delayed.AtTheBeginOfNextEndStepDelayedTriggeredAbility; import mage.abilities.costs.Cost; import mage.abilities.costs.common.PayVariableLoyaltyCost; import mage.abilities.dynamicvalue.DynamicValue; @@ -41,20 +39,15 @@ import mage.abilities.effects.Effect; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.DamageAllEffect; -import mage.abilities.effects.common.ExileTargetEffect; -import mage.abilities.keyword.HasteAbility; import mage.cards.Card; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Outcome; -import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.game.Game; -import mage.game.permanent.Permanent; -import mage.game.permanent.token.Token; +import mage.game.permanent.token.ElementalToken; import mage.players.Player; -import mage.target.targetpointer.FixedTarget; /** * @@ -108,16 +101,9 @@ class ChandraElementalEffect extends OneShotEffect { public boolean apply(Game game, Ability source) { Player controller = game.getPlayer(source.getControllerId()); if (controller != null) { - CreateTokenEffect effect = new CreateTokenEffect(new ChandraElementalElementalToken(), 2); + CreateTokenEffect effect = new CreateTokenEffect(new ElementalToken("OGW", 1, true), 2); effect.apply(game, source); - for (UUID tokenId : effect.getLastAddedTokenIds()) { - Permanent tokenPermanent = game.getPermanent(tokenId); - if (tokenPermanent != null) { - ExileTargetEffect exileEffect = new ExileTargetEffect(null, "", Zone.BATTLEFIELD); - exileEffect.setTargetPointer(new FixedTarget(tokenPermanent, game)); - game.addDelayedTriggeredAbility(new AtTheBeginOfNextEndStepDelayedTriggeredAbility(exileEffect), source); - } - } + effect.exileTokensCreatedAtNextEndStep(game, source); return true; } @@ -125,22 +111,6 @@ class ChandraElementalEffect extends OneShotEffect { } } -class ChandraElementalElementalToken extends Token { - - public ChandraElementalElementalToken() { - super("Elemental", "3/1 red Elemental creature tokens with haste"); - setTokenType(1); - setOriginalExpansionSetCode("OGW"); - cardType.add(CardType.CREATURE); - color.setRed(true); - subtype.add("Elemental"); - power = new MageInt(3); - toughness = new MageInt(1); - - this.addAbility(HasteAbility.getInstance()); - } -} - class ChandraDrawEffect extends OneShotEffect { ChandraDrawEffect() { diff --git a/Mage.Sets/src/mage/cards/e/ElementalAppeal.java b/Mage.Sets/src/mage/cards/e/ElementalAppeal.java index 1c6b468ff7..3313e9e046 100644 --- a/Mage.Sets/src/mage/cards/e/ElementalAppeal.java +++ b/Mage.Sets/src/mage/cards/e/ElementalAppeal.java @@ -28,28 +28,24 @@ package mage.cards.e; import java.util.UUID; - import mage.MageInt; -import mage.abilities.keyword.HasteAbility; -import mage.abilities.keyword.TrampleAbility; -import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.Outcome; import mage.abilities.Ability; -import mage.abilities.common.delayed.AtTheBeginOfNextEndStepDelayedTriggeredAbility; import mage.abilities.condition.LockedInCondition; import mage.abilities.condition.common.KickedCondition; import mage.abilities.decorator.ConditionalContinuousEffect; import mage.abilities.effects.OneShotEffect; -import mage.abilities.effects.common.ExileTargetEffect; +import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.continuous.BoostTargetEffect; +import mage.abilities.keyword.HasteAbility; import mage.abilities.keyword.KickerAbility; +import mage.abilities.keyword.TrampleAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.Outcome; import mage.game.Game; -import mage.game.permanent.Permanent; import mage.game.permanent.token.Token; -import mage.target.targetpointer.FixedTarget; /** * @@ -100,18 +96,14 @@ class ElementalAppealEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - ElementalToken token = new ElementalToken(); - token.putOntoBattlefield(1, game, source.getSourceId(), source.getControllerId()); - - for (UUID tokenId : token.getLastAddedTokenIds()) { - Permanent tokenPermanent = game.getPermanent(tokenId); - if (tokenPermanent != null) { - ExileTargetEffect exileEffect = new ExileTargetEffect(); - exileEffect.setTargetPointer(new FixedTarget(tokenPermanent, game)); - game.addDelayedTriggeredAbility(new AtTheBeginOfNextEndStepDelayedTriggeredAbility(exileEffect), source); - } + + CreateTokenEffect effect = new CreateTokenEffect(new ElementalToken()); + if(effect.apply(game, source)) + { + effect.exileTokensCreatedAtNextEndStep(game, source); + return true; } - return true; + return false; } class ElementalToken extends Token { diff --git a/Mage.Sets/src/mage/cards/f/FirecatBlitz.java b/Mage.Sets/src/mage/cards/f/FirecatBlitz.java index 6b4f904b6f..708b71d5c1 100644 --- a/Mage.Sets/src/mage/cards/f/FirecatBlitz.java +++ b/Mage.Sets/src/mage/cards/f/FirecatBlitz.java @@ -30,14 +30,12 @@ package mage.cards.f; import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; -import mage.abilities.common.delayed.AtTheBeginOfNextEndStepDelayedTriggeredAbility; import mage.abilities.costs.Cost; import mage.abilities.costs.common.SacrificeTargetCost; import mage.abilities.costs.common.SacrificeXTargetCost; import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.CreateTokenEffect; -import mage.abilities.effects.common.ExileTargetEffect; import mage.abilities.keyword.FlashbackAbility; import mage.abilities.keyword.HasteAbility; import mage.cards.CardImpl; @@ -45,14 +43,11 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Outcome; import mage.constants.TimingRule; -import mage.constants.Zone; import mage.filter.common.FilterControlledLandPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; -import mage.game.permanent.Permanent; import mage.game.permanent.token.Token; import mage.players.Player; -import mage.target.targetpointer.FixedTarget; /** * @@ -116,14 +111,7 @@ class FirecatBlitzEffect extends OneShotEffect { } CreateTokenEffect effect = new CreateTokenEffect(new ElementalCatToken(), xValue); effect.apply(game, source); - for (UUID tokenId : effect.getLastAddedTokenIds()) { - Permanent tokenPermanent = game.getPermanent(tokenId); - if (tokenPermanent != null) { - ExileTargetEffect exileEffect = new ExileTargetEffect(null, "", Zone.BATTLEFIELD); - exileEffect.setTargetPointer(new FixedTarget(tokenPermanent, game)); - game.addDelayedTriggeredAbility(new AtTheBeginOfNextEndStepDelayedTriggeredAbility(exileEffect), source); - } - } + effect.exileTokensCreatedAtNextEndStep(game, source); return true; } diff --git a/Mage.Sets/src/mage/cards/g/GeistOfSaintTraft.java b/Mage.Sets/src/mage/cards/g/GeistOfSaintTraft.java index 8f247bd337..deb7333d84 100644 --- a/Mage.Sets/src/mage/cards/g/GeistOfSaintTraft.java +++ b/Mage.Sets/src/mage/cards/g/GeistOfSaintTraft.java @@ -31,19 +31,16 @@ import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.AttacksTriggeredAbility; -import mage.abilities.common.delayed.AtTheEndOfCombatDelayedTriggeredAbility; import mage.abilities.effects.OneShotEffect; -import mage.abilities.effects.common.ExileTargetEffect; +import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.keyword.HexproofAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Outcome; import mage.game.Game; -import mage.game.permanent.Permanent; import mage.game.permanent.token.AngelToken; import mage.players.Player; -import mage.target.targetpointer.FixedTarget; /** * @author Loki @@ -87,18 +84,12 @@ class GeistOfSaintTraftEffect extends OneShotEffect { } @Override - public boolean apply(Game game, Ability source) { - AngelToken token = new AngelToken(); + public boolean apply(Game game, Ability source) { + CreateTokenEffect effect = new CreateTokenEffect(new AngelToken()); Player controller = game.getPlayer(source.getControllerId()); - if (controller != null && token.putOntoBattlefield(1, game, source.getSourceId(), source.getControllerId(), true, true)) { - for (UUID tokenId : token.getLastAddedTokenIds()) { - Permanent tokenPermanent = game.getPermanent(tokenId); - if (tokenPermanent != null) { - ExileTargetEffect exileEffect = new ExileTargetEffect(); - exileEffect.setTargetPointer(new FixedTarget(tokenPermanent, game)); - game.addDelayedTriggeredAbility(new AtTheEndOfCombatDelayedTriggeredAbility(exileEffect), source); - } - } + + if (controller != null && effect.apply(game, source)) { + effect.exileTokensCreatedAtNextEndStep(game, source); return true; } return false; diff --git a/Mage.Sets/src/mage/cards/i/InvocationOfSaintTraft.java b/Mage.Sets/src/mage/cards/i/InvocationOfSaintTraft.java index ceceff93e7..0980fbb172 100644 --- a/Mage.Sets/src/mage/cards/i/InvocationOfSaintTraft.java +++ b/Mage.Sets/src/mage/cards/i/InvocationOfSaintTraft.java @@ -31,10 +31,9 @@ import java.util.UUID; import mage.abilities.Ability; import mage.abilities.common.AttacksTriggeredAbility; import mage.abilities.common.SimpleStaticAbility; -import mage.abilities.common.delayed.AtTheEndOfCombatDelayedTriggeredAbility; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.AttachEffect; -import mage.abilities.effects.common.ExileTargetEffect; +import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.continuous.GainAbilityAttachedEffect; import mage.abilities.keyword.EnchantAbility; import mage.cards.CardImpl; @@ -44,12 +43,10 @@ import mage.constants.CardType; import mage.constants.Outcome; import mage.constants.Zone; import mage.game.Game; -import mage.game.permanent.Permanent; import mage.game.permanent.token.AngelToken; import mage.players.Player; import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; -import mage.target.targetpointer.FixedTarget; /** * @@ -96,18 +93,11 @@ class InvocationOfSaintTraftEffect extends OneShotEffect { } @Override - public boolean apply(Game game, Ability source) { - AngelToken token = new AngelToken(); + public boolean apply(Game game, Ability source) { + CreateTokenEffect effect = new CreateTokenEffect(new AngelToken()); Player controller = game.getPlayer(source.getControllerId()); - if (controller != null && token.putOntoBattlefield(1, game, source.getSourceId(), source.getControllerId(), true, true)) { - for (UUID tokenId : token.getLastAddedTokenIds()) { - Permanent tokenPermanent = game.getPermanent(tokenId); - if (tokenPermanent != null) { - ExileTargetEffect exileEffect = new ExileTargetEffect(); - exileEffect.setTargetPointer(new FixedTarget(tokenPermanent, game)); - game.addDelayedTriggeredAbility(new AtTheEndOfCombatDelayedTriggeredAbility(exileEffect), source); - } - } + if (controller != null && (effect.apply(game, source))) { + effect.exileTokensCreatedAtNextEndStep(game, source); return true; } return false; diff --git a/Mage.Sets/src/mage/cards/k/KariZevSkyshipRaider.java b/Mage.Sets/src/mage/cards/k/KariZevSkyshipRaider.java index 29b30a410c..5117712f4b 100644 --- a/Mage.Sets/src/mage/cards/k/KariZevSkyshipRaider.java +++ b/Mage.Sets/src/mage/cards/k/KariZevSkyshipRaider.java @@ -31,9 +31,8 @@ import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.AttacksTriggeredAbility; -import mage.abilities.common.delayed.AtTheEndOfCombatDelayedTriggeredAbility; import mage.abilities.effects.OneShotEffect; -import mage.abilities.effects.common.ExileTargetEffect; +import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.keyword.FirstStrikeAbility; import mage.abilities.keyword.MenaceAbility; import mage.cards.CardImpl; @@ -41,10 +40,8 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Outcome; import mage.game.Game; -import mage.game.permanent.Permanent; import mage.game.permanent.token.Token; import mage.players.Player; -import mage.target.targetpointer.FixedTarget; /** * @@ -94,17 +91,10 @@ class KariZevSkyshipRaiderEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - RagavanToken token = new RagavanToken(); + CreateTokenEffect effect = new CreateTokenEffect(new RagavanToken()); Player controller = game.getPlayer(source.getControllerId()); - if (controller != null && token.putOntoBattlefield(1, game, source.getSourceId(), source.getControllerId(), true, true)) { - for (UUID tokenId : token.getLastAddedTokenIds()) { - Permanent tokenPermanent = game.getPermanent(tokenId); - if (tokenPermanent != null) { - ExileTargetEffect exileEffect = new ExileTargetEffect(); - exileEffect.setTargetPointer(new FixedTarget(tokenPermanent, game)); - game.addDelayedTriggeredAbility(new AtTheEndOfCombatDelayedTriggeredAbility(exileEffect), source); - } - } + if (controller != null && effect.apply(game, source)) { + effect.exileTokensCreatedAtNextEndStep(game, source); return true; } return false; diff --git a/Mage.Sets/src/mage/cards/s/StoneIdolTrap.java b/Mage.Sets/src/mage/cards/s/StoneIdolTrap.java index aafa296687..b7614c51a3 100644 --- a/Mage.Sets/src/mage/cards/s/StoneIdolTrap.java +++ b/Mage.Sets/src/mage/cards/s/StoneIdolTrap.java @@ -32,9 +32,8 @@ import mage.MageInt; import mage.abilities.Ability; import mage.abilities.SpellAbility; import mage.abilities.common.SimpleStaticAbility; -import mage.abilities.common.delayed.AtTheBeginOfNextEndStepDelayedTriggeredAbility; import mage.abilities.effects.OneShotEffect; -import mage.abilities.effects.common.ExileTargetEffect; +import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.cost.CostModificationEffectImpl; import mage.abilities.keyword.TrampleAbility; import mage.cards.CardImpl; @@ -43,14 +42,11 @@ import mage.constants.CardType; import mage.constants.CostModificationType; import mage.constants.Duration; import mage.constants.Outcome; -import mage.constants.TargetController; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.permanent.AttackingPredicate; import mage.game.Game; -import mage.game.permanent.Permanent; import mage.game.permanent.token.Token; -import mage.target.targetpointer.FixedTarget; import mage.util.CardUtil; /** @@ -137,18 +133,14 @@ class StoneIdolTrapEffect extends OneShotEffect { } @Override - public boolean apply(Game game, Ability source) { - StoneTrapIdolToken token = new StoneTrapIdolToken(); - token.putOntoBattlefield(1, game, source.getSourceId(), source.getControllerId()); - for (UUID tokenId : token.getLastAddedTokenIds()) { - Permanent tokenPermanent = game.getPermanent(tokenId); - if (tokenPermanent != null) { - ExileTargetEffect exileEffect = new ExileTargetEffect(); - exileEffect.setTargetPointer(new FixedTarget(tokenPermanent, game)); - game.addDelayedTriggeredAbility(new AtTheBeginOfNextEndStepDelayedTriggeredAbility(Zone.ALL, exileEffect, TargetController.YOU), source); - } + public boolean apply(Game game, Ability source) { + CreateTokenEffect effect = new CreateTokenEffect(new StoneTrapIdolToken()); + if(effect.apply(game, source)) + { + effect.exileTokensCreatedAtNextEndStep(game, source); + return true; } - return true; + return false; } } diff --git a/Mage.Sets/src/mage/cards/z/ZektarShrineExpedition.java b/Mage.Sets/src/mage/cards/z/ZektarShrineExpedition.java index fb61ce0e0c..4227a03fee 100644 --- a/Mage.Sets/src/mage/cards/z/ZektarShrineExpedition.java +++ b/Mage.Sets/src/mage/cards/z/ZektarShrineExpedition.java @@ -27,15 +27,15 @@ */ package mage.cards.z; +import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.LandfallAbility; import mage.abilities.common.SimpleActivatedAbility; -import mage.abilities.common.delayed.AtTheBeginOfNextEndStepDelayedTriggeredAbility; import mage.abilities.costs.common.RemoveCountersSourceCost; import mage.abilities.costs.common.SacrificeSourceCost; import mage.abilities.effects.OneShotEffect; -import mage.abilities.effects.common.ExileTargetEffect; +import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.abilities.keyword.HasteAbility; import mage.abilities.keyword.TrampleAbility; @@ -46,11 +46,7 @@ import mage.constants.Outcome; import mage.constants.Zone; import mage.counters.CounterType; import mage.game.Game; -import mage.game.permanent.Permanent; import mage.game.permanent.token.Token; -import mage.target.targetpointer.FixedTarget; - -import java.util.UUID; /** * @@ -97,17 +93,14 @@ class ZektarShrineExpeditionEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - ElementalToken token = new ElementalToken(); - token.putOntoBattlefield(1, game, source.getSourceId(), source.getControllerId()); - for (UUID tokenId : token.getLastAddedTokenIds()) { - Permanent tokenPermanent = game.getPermanent(tokenId); - if (tokenPermanent != null) { - ExileTargetEffect exileEffect = new ExileTargetEffect(); - exileEffect.setTargetPointer(new FixedTarget(tokenPermanent, game)); - game.addDelayedTriggeredAbility(new AtTheBeginOfNextEndStepDelayedTriggeredAbility(exileEffect), source); - } + + CreateTokenEffect effect = new CreateTokenEffect(new ElementalToken()); + if(effect.apply(game, source)) + { + effect.exileTokensCreatedAtNextEndStep(game, source); + return true; } - return true; + return false; } static class ElementalToken extends Token { From 462d2db8ffbdcbd6e360f66fdc255c8b35c520c3 Mon Sep 17 00:00:00 2001 From: Max Lebedev Date: Tue, 21 Mar 2017 02:24:38 -0400 Subject: [PATCH 06/16] added Divining Witch --- Mage.Sets/src/mage/cards/d/DiviningWitch.java | 138 ++++++++++++++++++ Mage.Sets/src/mage/sets/Nemesis.java | 1 + 2 files changed, 139 insertions(+) create mode 100644 Mage.Sets/src/mage/cards/d/DiviningWitch.java diff --git a/Mage.Sets/src/mage/cards/d/DiviningWitch.java b/Mage.Sets/src/mage/cards/d/DiviningWitch.java new file mode 100644 index 0000000000..baed1a0d79 --- /dev/null +++ b/Mage.Sets/src/mage/cards/d/DiviningWitch.java @@ -0,0 +1,138 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package mage.cards.d; + +import java.util.UUID; +import mage.MageInt; +import mage.MageObject; +import mage.abilities.Ability; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.costs.common.DiscardTargetCost; +import mage.abilities.costs.common.TapSourceCost; +import mage.abilities.costs.mana.ManaCostsImpl; +import mage.abilities.effects.OneShotEffect; +import mage.cards.*; +import mage.cards.repository.CardRepository; +import mage.choices.Choice; +import mage.choices.ChoiceImpl; +import mage.constants.CardType; +import mage.constants.Outcome; +import mage.constants.Zone; +import mage.game.Game; +import mage.players.Player; +import mage.target.common.TargetCardInHand; + +/** + * + * @author anonymous + */ +public class DiviningWitch extends CardImpl { + + public DiviningWitch(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}"); + + this.subtype.add("Human"); + this.subtype.add("Spellshaper"); + this.power = new MageInt(1); + this.toughness = new MageInt(1); + + // {1}{B}, {tap}, Discard a card: Name a card. Exile the top six cards of your library. Reveal cards from the top of your library until you reveal the named card, then put that card into your hand. Exile all other cards revealed this way. + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DiviningWitchEffect(), new ManaCostsImpl("{1}{B}")); + ability.addCost(new TapSourceCost()); + ability.addCost(new DiscardTargetCost(new TargetCardInHand())); + this.addAbility(ability); + } + + public DiviningWitch(final DiviningWitch card) { + super(card); + } + + @Override + public DiviningWitch copy() { + return new DiviningWitch(this); + } +} + +class DiviningWitchEffect extends OneShotEffect { + + DiviningWitchEffect() { + super(Outcome.Benefit); + this.staticText = "Name a card. Exile the top six cards of your library. Reveal cards from the top of your library until you reveal the named card, then put that card into your hand. Exile all other cards revealed this way"; + } + + DiviningWitchEffect(final DiviningWitchEffect effect) { + super(effect); + } + + @Override + public DiviningWitchEffect copy() { + return new DiviningWitchEffect(this); + } + + @Override + public boolean apply(Game game, Ability source) { + Player controller = game.getPlayer(source.getControllerId()); + MageObject sourceObject = game.getObject(source.getSourceId()); + if (controller != null && sourceObject != null) { + // Name a card. + Choice choice = new ChoiceImpl(); + choice.setChoices(CardRepository.instance.getNames()); + while (!controller.choose(Outcome.Benefit, choice, game)) { + if (!controller.canRespond()) { + return false; + } + } + String name = choice.getChoice(); + game.informPlayers("Card named: " + name); + + // Exile the top six cards of your library, + controller.moveCards(controller.getLibrary().getTopCards(game, 6), Zone.EXILED, source, game); + + // then reveal cards from the top of your library until you reveal the named card. + Cards cardsToReaveal = new CardsImpl(); + Card cardToHand = null; + while (controller.getLibrary().hasCards()) { + Card card = controller.getLibrary().removeFromTop(game); + if (card != null) { + cardsToReaveal.add(card); + // Put that card into your hand + if (card.getName().equals(name)) { + cardToHand = card; + break; + } + } + } + controller.moveCards(cardToHand, Zone.HAND, source, game); + controller.revealCards(sourceObject.getIdName(), cardsToReaveal, game); + cardsToReaveal.remove(cardToHand); + controller.moveCards(cardsToReaveal, Zone.EXILED, source, game); + return true; + } + return false; + } +} diff --git a/Mage.Sets/src/mage/sets/Nemesis.java b/Mage.Sets/src/mage/sets/Nemesis.java index 2a01e357a0..1a84b91e6e 100644 --- a/Mage.Sets/src/mage/sets/Nemesis.java +++ b/Mage.Sets/src/mage/sets/Nemesis.java @@ -72,6 +72,7 @@ public class Nemesis extends ExpansionSet { cards.add(new SetCardInfo("Death Pit Offering", 56, Rarity.RARE, mage.cards.d.DeathPitOffering.class)); cards.add(new SetCardInfo("Defender en-Vec", 5, Rarity.COMMON, mage.cards.d.DefenderEnVec.class)); cards.add(new SetCardInfo("Defiant Falcon", 6, Rarity.COMMON, mage.cards.d.DefiantFalcon.class)); + cards.add(new SetCardInfo("Divining Witch", 57, Rarity.RARE, mage.cards.d.DiviningWitch.class)); cards.add(new SetCardInfo("Dominate", 31, Rarity.UNCOMMON, mage.cards.d.Dominate.class)); cards.add(new SetCardInfo("Downhill Charge", 79, Rarity.COMMON, mage.cards.d.DownhillCharge.class)); cards.add(new SetCardInfo("Ensnare", 32, Rarity.UNCOMMON, mage.cards.e.Ensnare.class)); From f6e6d806e0e2fec3a86a1ff1808d884f55065215 Mon Sep 17 00:00:00 2001 From: Max Lebedev Date: Tue, 21 Mar 2017 02:30:33 -0400 Subject: [PATCH 07/16] updated author --- Mage.Sets/src/mage/cards/d/DiviningWitch.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Mage.Sets/src/mage/cards/d/DiviningWitch.java b/Mage.Sets/src/mage/cards/d/DiviningWitch.java index baed1a0d79..09a05685f1 100644 --- a/Mage.Sets/src/mage/cards/d/DiviningWitch.java +++ b/Mage.Sets/src/mage/cards/d/DiviningWitch.java @@ -49,7 +49,7 @@ import mage.target.common.TargetCardInHand; /** * - * @author anonymous + * @author maxlebedev */ public class DiviningWitch extends CardImpl { From 7693f3fd5924069b4d9bc31e42a3f024dc97d226 Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Tue, 21 Mar 2017 11:37:22 +0100 Subject: [PATCH 08/16] Added Ogre Leadfoot. --- Mage.Sets/src/mage/cards/o/OgreLeadfoot.java | 64 ++ Mage.Sets/src/mage/sets/Mirrodin.java | 629 +++++++++--------- ...omesBlockedByCreatureTriggeredAbility.java | 4 +- 3 files changed, 382 insertions(+), 315 deletions(-) create mode 100644 Mage.Sets/src/mage/cards/o/OgreLeadfoot.java diff --git a/Mage.Sets/src/mage/cards/o/OgreLeadfoot.java b/Mage.Sets/src/mage/cards/o/OgreLeadfoot.java new file mode 100644 index 0000000000..b782730b2a --- /dev/null +++ b/Mage.Sets/src/mage/cards/o/OgreLeadfoot.java @@ -0,0 +1,64 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package mage.cards.o; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.common.BecomesBlockedByCreatureTriggeredAbility; +import mage.abilities.effects.common.DestroyTargetEffect; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.filter.common.FilterArtifactCreaturePermanent; + +/** + * + * @author LevelX2 + */ +public class OgreLeadfoot extends CardImpl { + + public OgreLeadfoot(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{R}"); + + this.subtype.add("Ogre"); + this.power = new MageInt(3); + this.toughness = new MageInt(3); + + // Whenever Ogre Leadfoot becomes blocked by an artifact creature, destroy that creature. + this.addAbility(new BecomesBlockedByCreatureTriggeredAbility(new DestroyTargetEffect(), new FilterArtifactCreaturePermanent("an artifact creature"), false)); + } + + public OgreLeadfoot(final OgreLeadfoot card) { + super(card); + } + + @Override + public OgreLeadfoot copy() { + return new OgreLeadfoot(this); + } +} diff --git a/Mage.Sets/src/mage/sets/Mirrodin.java b/Mage.Sets/src/mage/sets/Mirrodin.java index a5692d782f..d35973de0a 100644 --- a/Mage.Sets/src/mage/sets/Mirrodin.java +++ b/Mage.Sets/src/mage/sets/Mirrodin.java @@ -1,314 +1,315 @@ -package mage.sets; - -import mage.cards.ExpansionSet; -import mage.constants.SetType; - -import mage.constants.Rarity; -import mage.cards.CardGraphicInfo; - -public class Mirrodin extends ExpansionSet { - private static final Mirrodin instance = new Mirrodin(); - - public static Mirrodin getInstance() { - return instance; - } - - private Mirrodin() { - super("Mirrodin", "MRD", ExpansionSet.buildDate(2003, 9, 2), SetType.EXPANSION); - this.blockName = "Mirrodin"; - this.hasBoosters = true; - this.numBoosterLands = 0; - this.numBoosterCommon = 11; - this.numBoosterUncommon = 3; - this.numBoosterRare = 1; - this.ratioBoosterMythic = 0; - cards.add(new SetCardInfo("Aether Spellbomb", 141, Rarity.COMMON, mage.cards.a.AetherSpellbomb.class)); - cards.add(new SetCardInfo("Alpha Myr", 142, Rarity.COMMON, mage.cards.a.AlphaMyr.class)); - cards.add(new SetCardInfo("Altar of Shadows", 143, Rarity.RARE, mage.cards.a.AltarOfShadows.class)); - cards.add(new SetCardInfo("Altar's Light", 1, Rarity.UNCOMMON, mage.cards.a.AltarsLight.class)); - cards.add(new SetCardInfo("Ancient Den", 278, Rarity.COMMON, mage.cards.a.AncientDen.class)); - cards.add(new SetCardInfo("Annul", 29, Rarity.COMMON, mage.cards.a.Annul.class)); - cards.add(new SetCardInfo("Arc-Slogger", 85, Rarity.RARE, mage.cards.a.ArcSlogger.class)); - cards.add(new SetCardInfo("Arrest", 2, Rarity.COMMON, mage.cards.a.Arrest.class)); - cards.add(new SetCardInfo("Assert Authority", 30, Rarity.UNCOMMON, mage.cards.a.AssertAuthority.class)); - cards.add(new SetCardInfo("Atog", 86, Rarity.UNCOMMON, mage.cards.a.Atog.class)); - cards.add(new SetCardInfo("Auriok Bladewarden", 3, Rarity.UNCOMMON, mage.cards.a.AuriokBladewarden.class)); - cards.add(new SetCardInfo("Auriok Steelshaper", 4, Rarity.RARE, mage.cards.a.AuriokSteelshaper.class)); - cards.add(new SetCardInfo("Auriok Transfixer", 5, Rarity.COMMON, mage.cards.a.AuriokTransfixer.class)); - cards.add(new SetCardInfo("Awe Strike", 6, Rarity.COMMON, mage.cards.a.AweStrike.class)); - cards.add(new SetCardInfo("Banshee's Blade", 144, Rarity.UNCOMMON, mage.cards.b.BansheesBlade.class)); - cards.add(new SetCardInfo("Barter in Blood", 57, Rarity.UNCOMMON, mage.cards.b.BarterInBlood.class)); - cards.add(new SetCardInfo("Battlegrowth", 113, Rarity.COMMON, mage.cards.b.Battlegrowth.class)); - cards.add(new SetCardInfo("Betrayal of Flesh", 58, Rarity.UNCOMMON, mage.cards.b.BetrayalOfFlesh.class)); - cards.add(new SetCardInfo("Blinding Beam", 7, Rarity.COMMON, mage.cards.b.BlindingBeam.class)); - cards.add(new SetCardInfo("Blinkmoth Urn", 145, Rarity.RARE, mage.cards.b.BlinkmothUrn.class)); - cards.add(new SetCardInfo("Blinkmoth Well", 279, Rarity.UNCOMMON, mage.cards.b.BlinkmothWell.class)); - cards.add(new SetCardInfo("Bloodscent", 114, Rarity.UNCOMMON, mage.cards.b.Bloodscent.class)); - cards.add(new SetCardInfo("Bonesplitter", 146, Rarity.COMMON, mage.cards.b.Bonesplitter.class)); - cards.add(new SetCardInfo("Bosh, Iron Golem", 147, Rarity.RARE, mage.cards.b.BoshIronGolem.class)); - cards.add(new SetCardInfo("Bottle Gnomes", 148, Rarity.UNCOMMON, mage.cards.b.BottleGnomes.class)); - cards.add(new SetCardInfo("Broodstar", 31, Rarity.RARE, mage.cards.b.Broodstar.class)); - cards.add(new SetCardInfo("Cathodion", 149, Rarity.UNCOMMON, mage.cards.c.Cathodion.class)); - cards.add(new SetCardInfo("Chalice of the Void", 150, Rarity.RARE, mage.cards.c.ChaliceOfTheVoid.class)); - cards.add(new SetCardInfo("Chimney Imp", 59, Rarity.COMMON, mage.cards.c.ChimneyImp.class)); - cards.add(new SetCardInfo("Chromatic Sphere", 151, Rarity.COMMON, mage.cards.c.ChromaticSphere.class)); - cards.add(new SetCardInfo("Chrome Mox", 152, Rarity.RARE, mage.cards.c.ChromeMox.class)); - cards.add(new SetCardInfo("Clockwork Beetle", 153, Rarity.COMMON, mage.cards.c.ClockworkBeetle.class)); - cards.add(new SetCardInfo("Clockwork Condor", 154, Rarity.COMMON, mage.cards.c.ClockworkCondor.class)); - cards.add(new SetCardInfo("Clockwork Dragon", 155, Rarity.RARE, mage.cards.c.ClockworkDragon.class)); - cards.add(new SetCardInfo("Clockwork Vorrac", 156, Rarity.UNCOMMON, mage.cards.c.ClockworkVorrac.class)); - cards.add(new SetCardInfo("Cloudpost", 280, Rarity.COMMON, mage.cards.c.Cloudpost.class)); - cards.add(new SetCardInfo("Cobalt Golem", 157, Rarity.COMMON, mage.cards.c.CobaltGolem.class)); - cards.add(new SetCardInfo("Confusion in the Ranks", 87, Rarity.RARE, mage.cards.c.ConfusionInTheRanks.class)); - cards.add(new SetCardInfo("Consume Spirit", 60, Rarity.COMMON, mage.cards.c.ConsumeSpirit.class)); - cards.add(new SetCardInfo("Contaminated Bond", 61, Rarity.COMMON, mage.cards.c.ContaminatedBond.class)); - cards.add(new SetCardInfo("Copperhoof Vorrac", 116, Rarity.RARE, mage.cards.c.CopperhoofVorrac.class)); - cards.add(new SetCardInfo("Copper Myr", 158, Rarity.COMMON, mage.cards.c.CopperMyr.class)); - cards.add(new SetCardInfo("Creeping Mold", 117, Rarity.UNCOMMON, mage.cards.c.CreepingMold.class)); - cards.add(new SetCardInfo("Crystal Shard", 159, Rarity.UNCOMMON, mage.cards.c.CrystalShard.class)); - cards.add(new SetCardInfo("Culling Scales", 160, Rarity.RARE, mage.cards.c.CullingScales.class)); - cards.add(new SetCardInfo("Damping Matrix", 161, Rarity.RARE, mage.cards.d.DampingMatrix.class)); - cards.add(new SetCardInfo("Deconstruct", 118, Rarity.COMMON, mage.cards.d.Deconstruct.class)); - cards.add(new SetCardInfo("Detonate", 88, Rarity.UNCOMMON, mage.cards.d.Detonate.class)); - cards.add(new SetCardInfo("Disarm", 32, Rarity.COMMON, mage.cards.d.Disarm.class)); - cards.add(new SetCardInfo("Disciple of the Vault", 62, Rarity.COMMON, mage.cards.d.DiscipleOfTheVault.class)); - cards.add(new SetCardInfo("Domineer", 33, Rarity.UNCOMMON, mage.cards.d.Domineer.class)); - cards.add(new SetCardInfo("Dragon Blood", 163, Rarity.UNCOMMON, mage.cards.d.DragonBlood.class)); - cards.add(new SetCardInfo("Dream's Grip", 34, Rarity.COMMON, mage.cards.d.DreamsGrip.class)); - cards.add(new SetCardInfo("Dross Harvester", 63, Rarity.RARE, mage.cards.d.DrossHarvester.class)); - cards.add(new SetCardInfo("Dross Prowler", 64, Rarity.COMMON, mage.cards.d.DrossProwler.class)); - cards.add(new SetCardInfo("Dross Scorpion", 164, Rarity.COMMON, mage.cards.d.DrossScorpion.class)); - cards.add(new SetCardInfo("Duplicant", 165, Rarity.RARE, mage.cards.d.Duplicant.class)); - cards.add(new SetCardInfo("Duskworker", 166, Rarity.UNCOMMON, mage.cards.d.Duskworker.class)); - cards.add(new SetCardInfo("Electrostatic Bolt", 89, Rarity.COMMON, mage.cards.e.ElectrostaticBolt.class)); - cards.add(new SetCardInfo("Elf Replica", 167, Rarity.COMMON, mage.cards.e.ElfReplica.class)); - cards.add(new SetCardInfo("Empyrial Plate", 168, Rarity.RARE, mage.cards.e.EmpyrialPlate.class)); - cards.add(new SetCardInfo("Extraplanar Lens", 169, Rarity.RARE, mage.cards.e.ExtraplanarLens.class)); - cards.add(new SetCardInfo("Fabricate", 35, Rarity.UNCOMMON, mage.cards.f.Fabricate.class)); - cards.add(new SetCardInfo("Fangren Hunter", 119, Rarity.COMMON, mage.cards.f.FangrenHunter.class)); - cards.add(new SetCardInfo("Farsight Mask", 170, Rarity.UNCOMMON, mage.cards.f.FarsightMask.class)); - cards.add(new SetCardInfo("Fatespinner", 36, Rarity.RARE, mage.cards.f.Fatespinner.class)); - cards.add(new SetCardInfo("Fiery Gambit", 90, Rarity.RARE, mage.cards.f.FieryGambit.class)); - cards.add(new SetCardInfo("Fireshrieker", 171, Rarity.UNCOMMON, mage.cards.f.Fireshrieker.class)); - cards.add(new SetCardInfo("Fists of the Anvil", 91, Rarity.COMMON, mage.cards.f.FistsOfTheAnvil.class)); - cards.add(new SetCardInfo("Forest", 303, Rarity.LAND, mage.cards.basiclands.Forest.class, new CardGraphicInfo(null, true))); - cards.add(new SetCardInfo("Forest", 304, Rarity.LAND, mage.cards.basiclands.Forest.class, new CardGraphicInfo(null, true))); - cards.add(new SetCardInfo("Forest", 305, Rarity.LAND, mage.cards.basiclands.Forest.class, new CardGraphicInfo(null, true))); - cards.add(new SetCardInfo("Forest", 306, Rarity.LAND, mage.cards.basiclands.Forest.class, new CardGraphicInfo(null, true))); - cards.add(new SetCardInfo("Forge Armor", 92, Rarity.UNCOMMON, mage.cards.f.ForgeArmor.class)); - cards.add(new SetCardInfo("Frogmite", 172, Rarity.COMMON, mage.cards.f.Frogmite.class)); - cards.add(new SetCardInfo("Galvanic Key", 173, Rarity.COMMON, mage.cards.g.GalvanicKey.class)); - cards.add(new SetCardInfo("Gate to the Aether", 174, Rarity.RARE, mage.cards.g.GateToTheAether.class)); - cards.add(new SetCardInfo("Gilded Lotus", 175, Rarity.RARE, mage.cards.g.GildedLotus.class)); - cards.add(new SetCardInfo("Glimmervoid", 281, Rarity.RARE, mage.cards.g.Glimmervoid.class)); - cards.add(new SetCardInfo("Glissa Sunseeker", 120, Rarity.RARE, mage.cards.g.GlissaSunseeker.class)); - cards.add(new SetCardInfo("Goblin Charbelcher", 176, Rarity.RARE, mage.cards.g.GoblinCharbelcher.class)); - cards.add(new SetCardInfo("Goblin Dirigible", 177, Rarity.UNCOMMON, mage.cards.g.GoblinDirigible.class)); - cards.add(new SetCardInfo("Goblin Replica", 178, Rarity.COMMON, mage.cards.g.GoblinReplica.class)); - cards.add(new SetCardInfo("Goblin Striker", 94, Rarity.COMMON, mage.cards.g.GoblinStriker.class)); - cards.add(new SetCardInfo("Goblin War Wagon", 179, Rarity.COMMON, mage.cards.g.GoblinWarWagon.class)); - cards.add(new SetCardInfo("Gold Myr", 180, Rarity.COMMON, mage.cards.g.GoldMyr.class)); - cards.add(new SetCardInfo("Golem-Skin Gauntlets", 181, Rarity.UNCOMMON, mage.cards.g.GolemSkinGauntlets.class)); - cards.add(new SetCardInfo("Grab the Reins", 95, Rarity.UNCOMMON, mage.cards.g.GrabTheReins.class)); - cards.add(new SetCardInfo("Granite Shard", 182, Rarity.UNCOMMON, mage.cards.g.GraniteShard.class)); - cards.add(new SetCardInfo("Great Furnace", 282, Rarity.COMMON, mage.cards.g.GreatFurnace.class)); - cards.add(new SetCardInfo("Grid Monitor", 183, Rarity.RARE, mage.cards.g.GridMonitor.class)); - cards.add(new SetCardInfo("Groffskithur", 121, Rarity.COMMON, mage.cards.g.Groffskithur.class)); - cards.add(new SetCardInfo("Heartwood Shard", 184, Rarity.UNCOMMON, mage.cards.h.HeartwoodShard.class)); - cards.add(new SetCardInfo("Hematite Golem", 185, Rarity.COMMON, mage.cards.h.HematiteGolem.class)); - cards.add(new SetCardInfo("Hum of the Radix", 122, Rarity.RARE, mage.cards.h.HumOfTheRadix.class)); - cards.add(new SetCardInfo("Icy Manipulator", 186, Rarity.UNCOMMON, mage.cards.i.IcyManipulator.class)); - cards.add(new SetCardInfo("Incite War", 96, Rarity.COMMON, mage.cards.i.InciteWar.class)); - cards.add(new SetCardInfo("Inertia Bubble", 37, Rarity.COMMON, mage.cards.i.InertiaBubble.class)); - cards.add(new SetCardInfo("Iron Myr", 187, Rarity.COMMON, mage.cards.i.IronMyr.class)); - cards.add(new SetCardInfo("Irradiate", 67, Rarity.COMMON, mage.cards.i.Irradiate.class)); - cards.add(new SetCardInfo("Island", 291, Rarity.LAND, mage.cards.basiclands.Island.class, new CardGraphicInfo(null, true))); - cards.add(new SetCardInfo("Island", 292, Rarity.LAND, mage.cards.basiclands.Island.class, new CardGraphicInfo(null, true))); - cards.add(new SetCardInfo("Island", 293, Rarity.LAND, mage.cards.basiclands.Island.class, new CardGraphicInfo(null, true))); - cards.add(new SetCardInfo("Island", 294, Rarity.LAND, mage.cards.basiclands.Island.class, new CardGraphicInfo(null, true))); - cards.add(new SetCardInfo("Isochron Scepter", 188, Rarity.UNCOMMON, mage.cards.i.IsochronScepter.class)); - cards.add(new SetCardInfo("Jinxed Choker", 189, Rarity.RARE, mage.cards.j.JinxedChoker.class)); - cards.add(new SetCardInfo("Journey of Discovery", 123, Rarity.COMMON, mage.cards.j.JourneyOfDiscovery.class)); - cards.add(new SetCardInfo("Krark-Clan Grunt", 97, Rarity.COMMON, mage.cards.k.KrarkClanGrunt.class)); - cards.add(new SetCardInfo("Krark-Clan Shaman", 98, Rarity.COMMON, mage.cards.k.KrarkClanShaman.class)); - cards.add(new SetCardInfo("Krark's Thumb", 190, Rarity.RARE, mage.cards.k.KrarksThumb.class)); - cards.add(new SetCardInfo("Leaden Myr", 191, Rarity.COMMON, mage.cards.l.LeadenMyr.class)); - cards.add(new SetCardInfo("Leonin Abunas", 8, Rarity.RARE, mage.cards.l.LeoninAbunas.class)); - cards.add(new SetCardInfo("Leonin Bladetrap", 192, Rarity.UNCOMMON, mage.cards.l.LeoninBladetrap.class)); - cards.add(new SetCardInfo("Leonin Den-Guard", 9, Rarity.COMMON, mage.cards.l.LeoninDenGuard.class)); - cards.add(new SetCardInfo("Leonin Elder", 10, Rarity.COMMON, mage.cards.l.LeoninElder.class)); - cards.add(new SetCardInfo("Leonin Scimitar", 193, Rarity.COMMON, mage.cards.l.LeoninScimitar.class)); - cards.add(new SetCardInfo("Leonin Skyhunter", 11, Rarity.UNCOMMON, mage.cards.l.LeoninSkyhunter.class)); - cards.add(new SetCardInfo("Leonin Sun Standard", 194, Rarity.RARE, mage.cards.l.LeoninSunStandard.class)); - cards.add(new SetCardInfo("Leveler", 195, Rarity.RARE, mage.cards.l.Leveler.class)); - cards.add(new SetCardInfo("Lifespark Spellbomb", 197, Rarity.COMMON, mage.cards.l.LifesparkSpellbomb.class)); - cards.add(new SetCardInfo("Lightning Coils", 198, Rarity.RARE, mage.cards.l.LightningCoils.class)); - cards.add(new SetCardInfo("Lightning Greaves", 199, Rarity.UNCOMMON, mage.cards.l.LightningGreaves.class)); - cards.add(new SetCardInfo("Living Hive", 124, Rarity.RARE, mage.cards.l.LivingHive.class)); - cards.add(new SetCardInfo("Lodestone Myr", 200, Rarity.RARE, mage.cards.l.LodestoneMyr.class)); - cards.add(new SetCardInfo("Looming Hoverguard", 38, Rarity.UNCOMMON, mage.cards.l.LoomingHoverguard.class)); - cards.add(new SetCardInfo("Loxodon Mender", 12, Rarity.COMMON, mage.cards.l.LoxodonMender.class)); - cards.add(new SetCardInfo("Loxodon Punisher", 14, Rarity.RARE, mage.cards.l.LoxodonPunisher.class)); - cards.add(new SetCardInfo("Loxodon Warhammer", 201, Rarity.UNCOMMON, mage.cards.l.LoxodonWarhammer.class)); - cards.add(new SetCardInfo("Lumengrid Sentinel", 40, Rarity.UNCOMMON, mage.cards.l.LumengridSentinel.class)); - cards.add(new SetCardInfo("Lumengrid Warden", 41, Rarity.COMMON, mage.cards.l.LumengridWarden.class)); - cards.add(new SetCardInfo("Luminous Angel", 15, Rarity.RARE, mage.cards.l.LuminousAngel.class)); - cards.add(new SetCardInfo("Malachite Golem", 202, Rarity.COMMON, mage.cards.m.MalachiteGolem.class)); - cards.add(new SetCardInfo("March of the Machines", 42, Rarity.RARE, mage.cards.m.MarchOfTheMachines.class)); - cards.add(new SetCardInfo("Mask of Memory", 203, Rarity.UNCOMMON, mage.cards.m.MaskOfMemory.class)); - cards.add(new SetCardInfo("Mass Hysteria", 99, Rarity.RARE, mage.cards.m.MassHysteria.class)); - cards.add(new SetCardInfo("Megatog", 100, Rarity.RARE, mage.cards.m.Megatog.class)); - cards.add(new SetCardInfo("Mesmeric Orb", 204, Rarity.RARE, mage.cards.m.MesmericOrb.class)); - cards.add(new SetCardInfo("Mind's Eye", 205, Rarity.RARE, mage.cards.m.MindsEye.class)); - cards.add(new SetCardInfo("Mindslaver", 206, Rarity.RARE, mage.cards.m.Mindslaver.class)); - cards.add(new SetCardInfo("Molder Slug", 125, Rarity.RARE, mage.cards.m.MolderSlug.class)); - cards.add(new SetCardInfo("Molten Rain", 101, Rarity.COMMON, mage.cards.m.MoltenRain.class)); - cards.add(new SetCardInfo("Moriok Scavenger", 68, Rarity.COMMON, mage.cards.m.MoriokScavenger.class)); - cards.add(new SetCardInfo("Mountain", 299, Rarity.LAND, mage.cards.basiclands.Mountain.class, new CardGraphicInfo(null, true))); - cards.add(new SetCardInfo("Mountain", 300, Rarity.LAND, mage.cards.basiclands.Mountain.class, new CardGraphicInfo(null, true))); - cards.add(new SetCardInfo("Mountain", 301, Rarity.LAND, mage.cards.basiclands.Mountain.class, new CardGraphicInfo(null, true))); - cards.add(new SetCardInfo("Mountain", 302, Rarity.LAND, mage.cards.basiclands.Mountain.class, new CardGraphicInfo(null, true))); - cards.add(new SetCardInfo("Myr Adapter", 210, Rarity.COMMON, mage.cards.m.MyrAdapter.class)); - cards.add(new SetCardInfo("Myr Enforcer", 211, Rarity.COMMON, mage.cards.m.MyrEnforcer.class)); - cards.add(new SetCardInfo("Myr Mindservant", 213, Rarity.UNCOMMON, mage.cards.m.MyrMindservant.class)); - cards.add(new SetCardInfo("Myr Retriever", 215, Rarity.UNCOMMON, mage.cards.m.MyrRetriever.class)); - cards.add(new SetCardInfo("Necrogen Mists", 69, Rarity.RARE, mage.cards.n.NecrogenMists.class)); - cards.add(new SetCardInfo("Necrogen Spellbomb", 216, Rarity.COMMON, mage.cards.n.NecrogenSpellbomb.class)); - cards.add(new SetCardInfo("Needlebug", 217, Rarity.UNCOMMON, mage.cards.n.Needlebug.class)); - cards.add(new SetCardInfo("Neurok Familiar", 43, Rarity.COMMON, mage.cards.n.NeurokFamiliar.class)); - cards.add(new SetCardInfo("Neurok Hoversail", 218, Rarity.COMMON, mage.cards.n.NeurokHoversail.class)); - cards.add(new SetCardInfo("Neurok Spy", 44, Rarity.COMMON, mage.cards.n.NeurokSpy.class)); - cards.add(new SetCardInfo("Nightmare Lash", 219, Rarity.RARE, mage.cards.n.NightmareLash.class)); - cards.add(new SetCardInfo("Nim Devourer", 70, Rarity.RARE, mage.cards.n.NimDevourer.class)); - cards.add(new SetCardInfo("Nim Lasher", 71, Rarity.COMMON, mage.cards.n.NimLasher.class)); - cards.add(new SetCardInfo("Nim Replica", 220, Rarity.COMMON, mage.cards.n.NimReplica.class)); - cards.add(new SetCardInfo("Nim Shambler", 72, Rarity.UNCOMMON, mage.cards.n.NimShambler.class)); - cards.add(new SetCardInfo("Nim Shrieker", 73, Rarity.COMMON, mage.cards.n.NimShrieker.class)); - cards.add(new SetCardInfo("Nuisance Engine", 221, Rarity.UNCOMMON, mage.cards.n.NuisanceEngine.class)); - cards.add(new SetCardInfo("Oblivion Stone", 222, Rarity.RARE, mage.cards.o.OblivionStone.class)); - cards.add(new SetCardInfo("Omega Myr", 223, Rarity.COMMON, mage.cards.o.OmegaMyr.class)); - cards.add(new SetCardInfo("One Dozen Eyes", 126, Rarity.UNCOMMON, mage.cards.o.OneDozenEyes.class)); - cards.add(new SetCardInfo("Ornithopter", 224, Rarity.UNCOMMON, mage.cards.o.Ornithopter.class)); - cards.add(new SetCardInfo("Override", 45, Rarity.COMMON, mage.cards.o.OverrideCard.class)); - cards.add(new SetCardInfo("Pearl Shard", 225, Rarity.UNCOMMON, mage.cards.p.PearlShard.class)); - cards.add(new SetCardInfo("Pentavus", 226, Rarity.RARE, mage.cards.p.Pentavus.class)); - cards.add(new SetCardInfo("Pewter Golem", 227, Rarity.COMMON, mage.cards.p.PewterGolem.class)); - cards.add(new SetCardInfo("Plains", 287, Rarity.LAND, mage.cards.basiclands.Plains.class, new CardGraphicInfo(null, true))); - cards.add(new SetCardInfo("Plains", 288, Rarity.LAND, mage.cards.basiclands.Plains.class, new CardGraphicInfo(null, true))); - cards.add(new SetCardInfo("Plains", 289, Rarity.LAND, mage.cards.basiclands.Plains.class, new CardGraphicInfo(null, true))); - cards.add(new SetCardInfo("Plains", 290, Rarity.LAND, mage.cards.basiclands.Plains.class, new CardGraphicInfo(null, true))); - cards.add(new SetCardInfo("Plated Slagwurm", 127, Rarity.RARE, mage.cards.p.PlatedSlagwurm.class)); - cards.add(new SetCardInfo("Platinum Angel", 228, Rarity.RARE, mage.cards.p.PlatinumAngel.class)); - cards.add(new SetCardInfo("Power Conduit", 229, Rarity.UNCOMMON, mage.cards.p.PowerConduit.class)); - cards.add(new SetCardInfo("Predator's Strike", 128, Rarity.COMMON, mage.cards.p.PredatorsStrike.class)); - cards.add(new SetCardInfo("Promise of Power", 74, Rarity.RARE, mage.cards.p.PromiseOfPower.class)); - cards.add(new SetCardInfo("Proteus Staff", 230, Rarity.RARE, mage.cards.p.ProteusStaff.class)); - cards.add(new SetCardInfo("Psychic Membrane", 46, Rarity.UNCOMMON, mage.cards.p.PsychicMembrane.class)); - cards.add(new SetCardInfo("Psychogenic Probe", 231, Rarity.RARE, mage.cards.p.PsychogenicProbe.class)); - cards.add(new SetCardInfo("Pyrite Spellbomb", 232, Rarity.COMMON, mage.cards.p.PyriteSpellbomb.class)); - cards.add(new SetCardInfo("Quicksilver Elemental", 47, Rarity.RARE, mage.cards.q.QuicksilverElemental.class)); - cards.add(new SetCardInfo("Raise the Alarm", 16, Rarity.COMMON, mage.cards.r.RaiseTheAlarm.class)); - cards.add(new SetCardInfo("Razor Barrier", 17, Rarity.COMMON, mage.cards.r.RazorBarrier.class)); - cards.add(new SetCardInfo("Regress", 48, Rarity.COMMON, mage.cards.r.Regress.class)); - cards.add(new SetCardInfo("Reiver Demon", 75, Rarity.RARE, mage.cards.r.ReiverDemon.class)); - cards.add(new SetCardInfo("Relic Bane", 76, Rarity.UNCOMMON, mage.cards.r.RelicBane.class)); - cards.add(new SetCardInfo("Roar of the Kha", 18, Rarity.UNCOMMON, mage.cards.r.RoarOfTheKha.class)); - cards.add(new SetCardInfo("Rule of Law", 19, Rarity.RARE, mage.cards.r.RuleOfLaw.class)); - cards.add(new SetCardInfo("Rust Elemental", 234, Rarity.UNCOMMON, mage.cards.r.RustElemental.class)); - cards.add(new SetCardInfo("Rustmouth Ogre", 103, Rarity.UNCOMMON, mage.cards.r.RustmouthOgre.class)); - cards.add(new SetCardInfo("Rustspore Ram", 235, Rarity.UNCOMMON, mage.cards.r.RustsporeRam.class)); - cards.add(new SetCardInfo("Scale of Chiss-Goria", 236, Rarity.COMMON, mage.cards.s.ScaleOfChissGoria.class)); - cards.add(new SetCardInfo("Scrabbling Claws", 237, Rarity.UNCOMMON, mage.cards.s.ScrabblingClaws.class)); - cards.add(new SetCardInfo("Sculpting Steel", 238, Rarity.RARE, mage.cards.s.SculptingSteel.class)); - cards.add(new SetCardInfo("Scythe of the Wretched", 239, Rarity.RARE, mage.cards.s.ScytheOfTheWretched.class)); - cards.add(new SetCardInfo("Seat of the Synod", 283, Rarity.COMMON, mage.cards.s.SeatOfTheSynod.class)); - cards.add(new SetCardInfo("Second Sunrise", 20, Rarity.RARE, mage.cards.s.SecondSunrise.class)); - cards.add(new SetCardInfo("Seething Song", 104, Rarity.COMMON, mage.cards.s.SeethingSong.class)); - cards.add(new SetCardInfo("Serum Tank", 240, Rarity.UNCOMMON, mage.cards.s.SerumTank.class)); - cards.add(new SetCardInfo("Shared Fate", 49, Rarity.RARE, mage.cards.s.SharedFate.class)); - cards.add(new SetCardInfo("Shatter", 105, Rarity.COMMON, mage.cards.s.Shatter.class)); - cards.add(new SetCardInfo("Shrapnel Blast", 106, Rarity.UNCOMMON, mage.cards.s.ShrapnelBlast.class)); - cards.add(new SetCardInfo("Silver Myr", 241, Rarity.COMMON, mage.cards.s.SilverMyr.class)); - cards.add(new SetCardInfo("Skeleton Shard", 242, Rarity.UNCOMMON, mage.cards.s.SkeletonShard.class)); - cards.add(new SetCardInfo("Skyhunter Cub", 21, Rarity.COMMON, mage.cards.s.SkyhunterCub.class)); - cards.add(new SetCardInfo("Skyhunter Patrol", 22, Rarity.COMMON, mage.cards.s.SkyhunterPatrol.class)); - cards.add(new SetCardInfo("Slagwurm Armor", 243, Rarity.COMMON, mage.cards.s.SlagwurmArmor.class)); - cards.add(new SetCardInfo("Slith Ascendant", 23, Rarity.UNCOMMON, mage.cards.s.SlithAscendant.class)); - cards.add(new SetCardInfo("Slith Bloodletter", 77, Rarity.UNCOMMON, mage.cards.s.SlithBloodletter.class)); - cards.add(new SetCardInfo("Slith Firewalker", 107, Rarity.UNCOMMON, mage.cards.s.SlithFirewalker.class)); - cards.add(new SetCardInfo("Slith Predator", 129, Rarity.UNCOMMON, mage.cards.s.SlithPredator.class)); - cards.add(new SetCardInfo("Slith Strider", 50, Rarity.UNCOMMON, mage.cards.s.SlithStrider.class)); - cards.add(new SetCardInfo("Solar Tide", 24, Rarity.RARE, mage.cards.s.SolarTide.class)); - cards.add(new SetCardInfo("Soldier Replica", 244, Rarity.COMMON, mage.cards.s.SoldierReplica.class)); - cards.add(new SetCardInfo("Solemn Simulacrum", 245, Rarity.RARE, mage.cards.s.SolemnSimulacrum.class)); - cards.add(new SetCardInfo("Somber Hoverguard", 51, Rarity.COMMON, mage.cards.s.SomberHoverguard.class)); - cards.add(new SetCardInfo("Soul Foundry", 246, Rarity.RARE, mage.cards.s.SoulFoundry.class)); - cards.add(new SetCardInfo("Spellweaver Helix", 247, Rarity.RARE, mage.cards.s.SpellweaverHelix.class)); - cards.add(new SetCardInfo("Spikeshot Goblin", 108, Rarity.COMMON, mage.cards.s.SpikeshotGoblin.class)); - cards.add(new SetCardInfo("Spoils of the Vault", 78, Rarity.RARE, mage.cards.s.SpoilsOfTheVault.class)); - cards.add(new SetCardInfo("Stalking Stones", 284, Rarity.UNCOMMON, mage.cards.s.StalkingStones.class)); - cards.add(new SetCardInfo("Steel Wall", 248, Rarity.COMMON, mage.cards.s.SteelWall.class)); - cards.add(new SetCardInfo("Sunbeam Spellbomb", 250, Rarity.COMMON, mage.cards.s.SunbeamSpellbomb.class)); - cards.add(new SetCardInfo("Sun Droplet", 249, Rarity.UNCOMMON, mage.cards.s.SunDroplet.class)); - cards.add(new SetCardInfo("Swamp", 295, Rarity.LAND, mage.cards.basiclands.Swamp.class, new CardGraphicInfo(null, true))); - cards.add(new SetCardInfo("Swamp", 296, Rarity.LAND, mage.cards.basiclands.Swamp.class, new CardGraphicInfo(null, true))); - cards.add(new SetCardInfo("Swamp", 297, Rarity.LAND, mage.cards.basiclands.Swamp.class, new CardGraphicInfo(null, true))); - cards.add(new SetCardInfo("Swamp", 298, Rarity.LAND, mage.cards.basiclands.Swamp.class, new CardGraphicInfo(null, true))); - cards.add(new SetCardInfo("Sword of Kaldra", 251, Rarity.RARE, mage.cards.s.SwordOfKaldra.class)); - cards.add(new SetCardInfo("Sylvan Scrying", 130, Rarity.UNCOMMON, mage.cards.s.SylvanScrying.class)); - cards.add(new SetCardInfo("Synod Sanctum", 252, Rarity.UNCOMMON, mage.cards.s.SynodSanctum.class)); - cards.add(new SetCardInfo("Taj-Nar Swordsmith", 27, Rarity.UNCOMMON, mage.cards.t.TajNarSwordsmith.class)); - cards.add(new SetCardInfo("Talisman of Dominance", 253, Rarity.UNCOMMON, mage.cards.t.TalismanOfDominance.class)); - cards.add(new SetCardInfo("Talisman of Impulse", 254, Rarity.UNCOMMON, mage.cards.t.TalismanOfImpulse.class)); - cards.add(new SetCardInfo("Talisman of Indulgence", 255, Rarity.UNCOMMON, mage.cards.t.TalismanOfIndulgence.class)); - cards.add(new SetCardInfo("Talisman of Progress", 256, Rarity.UNCOMMON, mage.cards.t.TalismanOfProgress.class)); - cards.add(new SetCardInfo("Talisman of Unity", 257, Rarity.UNCOMMON, mage.cards.t.TalismanOfUnity.class)); - cards.add(new SetCardInfo("Tanglebloom", 258, Rarity.COMMON, mage.cards.t.Tanglebloom.class)); - cards.add(new SetCardInfo("Tangleroot", 259, Rarity.RARE, mage.cards.t.Tangleroot.class)); - cards.add(new SetCardInfo("Tel-Jilad Archers", 131, Rarity.COMMON, mage.cards.t.TelJiladArchers.class)); - cards.add(new SetCardInfo("Tel-Jilad Chosen", 132, Rarity.COMMON, mage.cards.t.TelJiladChosen.class)); - cards.add(new SetCardInfo("Tel-Jilad Exile", 133, Rarity.COMMON, mage.cards.t.TelJiladExile.class)); - cards.add(new SetCardInfo("Tel-Jilad Stylus", 260, Rarity.UNCOMMON, mage.cards.t.TelJiladStylus.class)); - cards.add(new SetCardInfo("Tempest of Light", 28, Rarity.UNCOMMON, mage.cards.t.TempestOfLight.class)); - cards.add(new SetCardInfo("Temporal Cascade", 52, Rarity.RARE, mage.cards.t.TemporalCascade.class)); - cards.add(new SetCardInfo("Terror", 79, Rarity.COMMON, mage.cards.t.Terror.class)); - cards.add(new SetCardInfo("Thirst for Knowledge", 53, Rarity.UNCOMMON, mage.cards.t.ThirstForKnowledge.class)); - cards.add(new SetCardInfo("Thoughtcast", 54, Rarity.COMMON, mage.cards.t.Thoughtcast.class)); - cards.add(new SetCardInfo("Thought Prison", 261, Rarity.UNCOMMON, mage.cards.t.ThoughtPrison.class)); - cards.add(new SetCardInfo("Timesifter", 262, Rarity.RARE, mage.cards.t.Timesifter.class)); - cards.add(new SetCardInfo("Titanium Golem", 263, Rarity.COMMON, mage.cards.t.TitaniumGolem.class)); - cards.add(new SetCardInfo("Tooth and Nail", 134, Rarity.RARE, mage.cards.t.ToothAndNail.class)); - cards.add(new SetCardInfo("Tooth of Chiss-Goria", 264, Rarity.COMMON, mage.cards.t.ToothOfChissGoria.class)); - cards.add(new SetCardInfo("Tower of Champions", 265, Rarity.RARE, mage.cards.t.TowerOfChampions.class)); - cards.add(new SetCardInfo("Tower of Eons", 266, Rarity.RARE, mage.cards.t.TowerOfEons.class)); - cards.add(new SetCardInfo("Tower of Fortunes", 267, Rarity.RARE, mage.cards.t.TowerOfFortunes.class)); - cards.add(new SetCardInfo("Tower of Murmurs", 268, Rarity.RARE, mage.cards.t.TowerOfMurmurs.class)); - cards.add(new SetCardInfo("Trash for Treasure", 109, Rarity.RARE, mage.cards.t.TrashForTreasure.class)); - cards.add(new SetCardInfo("Tree of Tales", 285, Rarity.COMMON, mage.cards.t.TreeOfTales.class)); - cards.add(new SetCardInfo("Triskelion", 269, Rarity.RARE, mage.cards.t.Triskelion.class)); - cards.add(new SetCardInfo("Troll Ascetic", 135, Rarity.RARE, mage.cards.t.TrollAscetic.class)); - cards.add(new SetCardInfo("Trolls of Tel-Jilad", 136, Rarity.UNCOMMON, mage.cards.t.TrollsOfTelJilad.class)); - cards.add(new SetCardInfo("Turn to Dust", 137, Rarity.COMMON, mage.cards.t.TurnToDust.class)); - cards.add(new SetCardInfo("Vault of Whispers", 286, Rarity.COMMON, mage.cards.v.VaultOfWhispers.class)); - cards.add(new SetCardInfo("Vedalken Archmage", 55, Rarity.RARE, mage.cards.v.VedalkenArchmage.class)); - cards.add(new SetCardInfo("Vermiculos", 80, Rarity.RARE, mage.cards.v.Vermiculos.class)); - cards.add(new SetCardInfo("Viridian Joiner", 138, Rarity.COMMON, mage.cards.v.ViridianJoiner.class)); - cards.add(new SetCardInfo("Viridian Longbow", 270, Rarity.COMMON, mage.cards.v.ViridianLongbow.class)); - cards.add(new SetCardInfo("Viridian Shaman", 139, Rarity.UNCOMMON, mage.cards.v.ViridianShaman.class)); - cards.add(new SetCardInfo("Vorrac Battlehorns", 271, Rarity.COMMON, mage.cards.v.VorracBattlehorns.class)); - cards.add(new SetCardInfo("Vulshok Battlegear", 272, Rarity.UNCOMMON, mage.cards.v.VulshokBattlegear.class)); - cards.add(new SetCardInfo("Vulshok Battlemaster", 110, Rarity.RARE, mage.cards.v.VulshokBattlemaster.class)); - cards.add(new SetCardInfo("Vulshok Berserker", 111, Rarity.COMMON, mage.cards.v.VulshokBerserker.class)); - cards.add(new SetCardInfo("Vulshok Gauntlets", 273, Rarity.COMMON, mage.cards.v.VulshokGauntlets.class)); - cards.add(new SetCardInfo("Wail of the Nim", 81, Rarity.COMMON, mage.cards.w.WailOfTheNim.class)); - cards.add(new SetCardInfo("Wall of Blood", 82, Rarity.UNCOMMON, mage.cards.w.WallOfBlood.class)); - cards.add(new SetCardInfo("Wanderguard Sentry", 56, Rarity.COMMON, mage.cards.w.WanderguardSentry.class)); - cards.add(new SetCardInfo("Welding Jar", 274, Rarity.COMMON, mage.cards.w.WeldingJar.class)); - cards.add(new SetCardInfo("Wizard Replica", 275, Rarity.COMMON, mage.cards.w.WizardReplica.class)); - cards.add(new SetCardInfo("Woebearer", 83, Rarity.UNCOMMON, mage.cards.w.Woebearer.class)); - cards.add(new SetCardInfo("Worldslayer", 276, Rarity.RARE, mage.cards.w.Worldslayer.class)); - cards.add(new SetCardInfo("Wrench Mind", 84, Rarity.COMMON, mage.cards.w.WrenchMind.class)); - cards.add(new SetCardInfo("Wurmskin Forger", 140, Rarity.COMMON, mage.cards.w.WurmskinForger.class)); - cards.add(new SetCardInfo("Yotian Soldier", 277, Rarity.COMMON, mage.cards.y.YotianSoldier.class)); - } -} +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.SetType; + +import mage.constants.Rarity; +import mage.cards.CardGraphicInfo; + +public class Mirrodin extends ExpansionSet { + private static final Mirrodin instance = new Mirrodin(); + + public static Mirrodin getInstance() { + return instance; + } + + private Mirrodin() { + super("Mirrodin", "MRD", ExpansionSet.buildDate(2003, 9, 2), SetType.EXPANSION); + this.blockName = "Mirrodin"; + this.hasBoosters = true; + this.numBoosterLands = 0; + this.numBoosterCommon = 11; + this.numBoosterUncommon = 3; + this.numBoosterRare = 1; + this.ratioBoosterMythic = 0; + cards.add(new SetCardInfo("Aether Spellbomb", 141, Rarity.COMMON, mage.cards.a.AetherSpellbomb.class)); + cards.add(new SetCardInfo("Alpha Myr", 142, Rarity.COMMON, mage.cards.a.AlphaMyr.class)); + cards.add(new SetCardInfo("Altar of Shadows", 143, Rarity.RARE, mage.cards.a.AltarOfShadows.class)); + cards.add(new SetCardInfo("Altar's Light", 1, Rarity.UNCOMMON, mage.cards.a.AltarsLight.class)); + cards.add(new SetCardInfo("Ancient Den", 278, Rarity.COMMON, mage.cards.a.AncientDen.class)); + cards.add(new SetCardInfo("Annul", 29, Rarity.COMMON, mage.cards.a.Annul.class)); + cards.add(new SetCardInfo("Arc-Slogger", 85, Rarity.RARE, mage.cards.a.ArcSlogger.class)); + cards.add(new SetCardInfo("Arrest", 2, Rarity.COMMON, mage.cards.a.Arrest.class)); + cards.add(new SetCardInfo("Assert Authority", 30, Rarity.UNCOMMON, mage.cards.a.AssertAuthority.class)); + cards.add(new SetCardInfo("Atog", 86, Rarity.UNCOMMON, mage.cards.a.Atog.class)); + cards.add(new SetCardInfo("Auriok Bladewarden", 3, Rarity.UNCOMMON, mage.cards.a.AuriokBladewarden.class)); + cards.add(new SetCardInfo("Auriok Steelshaper", 4, Rarity.RARE, mage.cards.a.AuriokSteelshaper.class)); + cards.add(new SetCardInfo("Auriok Transfixer", 5, Rarity.COMMON, mage.cards.a.AuriokTransfixer.class)); + cards.add(new SetCardInfo("Awe Strike", 6, Rarity.COMMON, mage.cards.a.AweStrike.class)); + cards.add(new SetCardInfo("Banshee's Blade", 144, Rarity.UNCOMMON, mage.cards.b.BansheesBlade.class)); + cards.add(new SetCardInfo("Barter in Blood", 57, Rarity.UNCOMMON, mage.cards.b.BarterInBlood.class)); + cards.add(new SetCardInfo("Battlegrowth", 113, Rarity.COMMON, mage.cards.b.Battlegrowth.class)); + cards.add(new SetCardInfo("Betrayal of Flesh", 58, Rarity.UNCOMMON, mage.cards.b.BetrayalOfFlesh.class)); + cards.add(new SetCardInfo("Blinding Beam", 7, Rarity.COMMON, mage.cards.b.BlindingBeam.class)); + cards.add(new SetCardInfo("Blinkmoth Urn", 145, Rarity.RARE, mage.cards.b.BlinkmothUrn.class)); + cards.add(new SetCardInfo("Blinkmoth Well", 279, Rarity.UNCOMMON, mage.cards.b.BlinkmothWell.class)); + cards.add(new SetCardInfo("Bloodscent", 114, Rarity.UNCOMMON, mage.cards.b.Bloodscent.class)); + cards.add(new SetCardInfo("Bonesplitter", 146, Rarity.COMMON, mage.cards.b.Bonesplitter.class)); + cards.add(new SetCardInfo("Bosh, Iron Golem", 147, Rarity.RARE, mage.cards.b.BoshIronGolem.class)); + cards.add(new SetCardInfo("Bottle Gnomes", 148, Rarity.UNCOMMON, mage.cards.b.BottleGnomes.class)); + cards.add(new SetCardInfo("Broodstar", 31, Rarity.RARE, mage.cards.b.Broodstar.class)); + cards.add(new SetCardInfo("Cathodion", 149, Rarity.UNCOMMON, mage.cards.c.Cathodion.class)); + cards.add(new SetCardInfo("Chalice of the Void", 150, Rarity.RARE, mage.cards.c.ChaliceOfTheVoid.class)); + cards.add(new SetCardInfo("Chimney Imp", 59, Rarity.COMMON, mage.cards.c.ChimneyImp.class)); + cards.add(new SetCardInfo("Chromatic Sphere", 151, Rarity.COMMON, mage.cards.c.ChromaticSphere.class)); + cards.add(new SetCardInfo("Chrome Mox", 152, Rarity.RARE, mage.cards.c.ChromeMox.class)); + cards.add(new SetCardInfo("Clockwork Beetle", 153, Rarity.COMMON, mage.cards.c.ClockworkBeetle.class)); + cards.add(new SetCardInfo("Clockwork Condor", 154, Rarity.COMMON, mage.cards.c.ClockworkCondor.class)); + cards.add(new SetCardInfo("Clockwork Dragon", 155, Rarity.RARE, mage.cards.c.ClockworkDragon.class)); + cards.add(new SetCardInfo("Clockwork Vorrac", 156, Rarity.UNCOMMON, mage.cards.c.ClockworkVorrac.class)); + cards.add(new SetCardInfo("Cloudpost", 280, Rarity.COMMON, mage.cards.c.Cloudpost.class)); + cards.add(new SetCardInfo("Cobalt Golem", 157, Rarity.COMMON, mage.cards.c.CobaltGolem.class)); + cards.add(new SetCardInfo("Confusion in the Ranks", 87, Rarity.RARE, mage.cards.c.ConfusionInTheRanks.class)); + cards.add(new SetCardInfo("Consume Spirit", 60, Rarity.COMMON, mage.cards.c.ConsumeSpirit.class)); + cards.add(new SetCardInfo("Contaminated Bond", 61, Rarity.COMMON, mage.cards.c.ContaminatedBond.class)); + cards.add(new SetCardInfo("Copperhoof Vorrac", 116, Rarity.RARE, mage.cards.c.CopperhoofVorrac.class)); + cards.add(new SetCardInfo("Copper Myr", 158, Rarity.COMMON, mage.cards.c.CopperMyr.class)); + cards.add(new SetCardInfo("Creeping Mold", 117, Rarity.UNCOMMON, mage.cards.c.CreepingMold.class)); + cards.add(new SetCardInfo("Crystal Shard", 159, Rarity.UNCOMMON, mage.cards.c.CrystalShard.class)); + cards.add(new SetCardInfo("Culling Scales", 160, Rarity.RARE, mage.cards.c.CullingScales.class)); + cards.add(new SetCardInfo("Damping Matrix", 161, Rarity.RARE, mage.cards.d.DampingMatrix.class)); + cards.add(new SetCardInfo("Deconstruct", 118, Rarity.COMMON, mage.cards.d.Deconstruct.class)); + cards.add(new SetCardInfo("Detonate", 88, Rarity.UNCOMMON, mage.cards.d.Detonate.class)); + cards.add(new SetCardInfo("Disarm", 32, Rarity.COMMON, mage.cards.d.Disarm.class)); + cards.add(new SetCardInfo("Disciple of the Vault", 62, Rarity.COMMON, mage.cards.d.DiscipleOfTheVault.class)); + cards.add(new SetCardInfo("Domineer", 33, Rarity.UNCOMMON, mage.cards.d.Domineer.class)); + cards.add(new SetCardInfo("Dragon Blood", 163, Rarity.UNCOMMON, mage.cards.d.DragonBlood.class)); + cards.add(new SetCardInfo("Dream's Grip", 34, Rarity.COMMON, mage.cards.d.DreamsGrip.class)); + cards.add(new SetCardInfo("Dross Harvester", 63, Rarity.RARE, mage.cards.d.DrossHarvester.class)); + cards.add(new SetCardInfo("Dross Prowler", 64, Rarity.COMMON, mage.cards.d.DrossProwler.class)); + cards.add(new SetCardInfo("Dross Scorpion", 164, Rarity.COMMON, mage.cards.d.DrossScorpion.class)); + cards.add(new SetCardInfo("Duplicant", 165, Rarity.RARE, mage.cards.d.Duplicant.class)); + cards.add(new SetCardInfo("Duskworker", 166, Rarity.UNCOMMON, mage.cards.d.Duskworker.class)); + cards.add(new SetCardInfo("Electrostatic Bolt", 89, Rarity.COMMON, mage.cards.e.ElectrostaticBolt.class)); + cards.add(new SetCardInfo("Elf Replica", 167, Rarity.COMMON, mage.cards.e.ElfReplica.class)); + cards.add(new SetCardInfo("Empyrial Plate", 168, Rarity.RARE, mage.cards.e.EmpyrialPlate.class)); + cards.add(new SetCardInfo("Extraplanar Lens", 169, Rarity.RARE, mage.cards.e.ExtraplanarLens.class)); + cards.add(new SetCardInfo("Fabricate", 35, Rarity.UNCOMMON, mage.cards.f.Fabricate.class)); + cards.add(new SetCardInfo("Fangren Hunter", 119, Rarity.COMMON, mage.cards.f.FangrenHunter.class)); + cards.add(new SetCardInfo("Farsight Mask", 170, Rarity.UNCOMMON, mage.cards.f.FarsightMask.class)); + cards.add(new SetCardInfo("Fatespinner", 36, Rarity.RARE, mage.cards.f.Fatespinner.class)); + cards.add(new SetCardInfo("Fiery Gambit", 90, Rarity.RARE, mage.cards.f.FieryGambit.class)); + cards.add(new SetCardInfo("Fireshrieker", 171, Rarity.UNCOMMON, mage.cards.f.Fireshrieker.class)); + cards.add(new SetCardInfo("Fists of the Anvil", 91, Rarity.COMMON, mage.cards.f.FistsOfTheAnvil.class)); + cards.add(new SetCardInfo("Forest", 303, Rarity.LAND, mage.cards.basiclands.Forest.class, new CardGraphicInfo(null, true))); + cards.add(new SetCardInfo("Forest", 304, Rarity.LAND, mage.cards.basiclands.Forest.class, new CardGraphicInfo(null, true))); + cards.add(new SetCardInfo("Forest", 305, Rarity.LAND, mage.cards.basiclands.Forest.class, new CardGraphicInfo(null, true))); + cards.add(new SetCardInfo("Forest", 306, Rarity.LAND, mage.cards.basiclands.Forest.class, new CardGraphicInfo(null, true))); + cards.add(new SetCardInfo("Forge Armor", 92, Rarity.UNCOMMON, mage.cards.f.ForgeArmor.class)); + cards.add(new SetCardInfo("Frogmite", 172, Rarity.COMMON, mage.cards.f.Frogmite.class)); + cards.add(new SetCardInfo("Galvanic Key", 173, Rarity.COMMON, mage.cards.g.GalvanicKey.class)); + cards.add(new SetCardInfo("Gate to the Aether", 174, Rarity.RARE, mage.cards.g.GateToTheAether.class)); + cards.add(new SetCardInfo("Gilded Lotus", 175, Rarity.RARE, mage.cards.g.GildedLotus.class)); + cards.add(new SetCardInfo("Glimmervoid", 281, Rarity.RARE, mage.cards.g.Glimmervoid.class)); + cards.add(new SetCardInfo("Glissa Sunseeker", 120, Rarity.RARE, mage.cards.g.GlissaSunseeker.class)); + cards.add(new SetCardInfo("Goblin Charbelcher", 176, Rarity.RARE, mage.cards.g.GoblinCharbelcher.class)); + cards.add(new SetCardInfo("Goblin Dirigible", 177, Rarity.UNCOMMON, mage.cards.g.GoblinDirigible.class)); + cards.add(new SetCardInfo("Goblin Replica", 178, Rarity.COMMON, mage.cards.g.GoblinReplica.class)); + cards.add(new SetCardInfo("Goblin Striker", 94, Rarity.COMMON, mage.cards.g.GoblinStriker.class)); + cards.add(new SetCardInfo("Goblin War Wagon", 179, Rarity.COMMON, mage.cards.g.GoblinWarWagon.class)); + cards.add(new SetCardInfo("Gold Myr", 180, Rarity.COMMON, mage.cards.g.GoldMyr.class)); + cards.add(new SetCardInfo("Golem-Skin Gauntlets", 181, Rarity.UNCOMMON, mage.cards.g.GolemSkinGauntlets.class)); + cards.add(new SetCardInfo("Grab the Reins", 95, Rarity.UNCOMMON, mage.cards.g.GrabTheReins.class)); + cards.add(new SetCardInfo("Granite Shard", 182, Rarity.UNCOMMON, mage.cards.g.GraniteShard.class)); + cards.add(new SetCardInfo("Great Furnace", 282, Rarity.COMMON, mage.cards.g.GreatFurnace.class)); + cards.add(new SetCardInfo("Grid Monitor", 183, Rarity.RARE, mage.cards.g.GridMonitor.class)); + cards.add(new SetCardInfo("Groffskithur", 121, Rarity.COMMON, mage.cards.g.Groffskithur.class)); + cards.add(new SetCardInfo("Heartwood Shard", 184, Rarity.UNCOMMON, mage.cards.h.HeartwoodShard.class)); + cards.add(new SetCardInfo("Hematite Golem", 185, Rarity.COMMON, mage.cards.h.HematiteGolem.class)); + cards.add(new SetCardInfo("Hum of the Radix", 122, Rarity.RARE, mage.cards.h.HumOfTheRadix.class)); + cards.add(new SetCardInfo("Icy Manipulator", 186, Rarity.UNCOMMON, mage.cards.i.IcyManipulator.class)); + cards.add(new SetCardInfo("Incite War", 96, Rarity.COMMON, mage.cards.i.InciteWar.class)); + cards.add(new SetCardInfo("Inertia Bubble", 37, Rarity.COMMON, mage.cards.i.InertiaBubble.class)); + cards.add(new SetCardInfo("Iron Myr", 187, Rarity.COMMON, mage.cards.i.IronMyr.class)); + cards.add(new SetCardInfo("Irradiate", 67, Rarity.COMMON, mage.cards.i.Irradiate.class)); + cards.add(new SetCardInfo("Island", 291, Rarity.LAND, mage.cards.basiclands.Island.class, new CardGraphicInfo(null, true))); + cards.add(new SetCardInfo("Island", 292, Rarity.LAND, mage.cards.basiclands.Island.class, new CardGraphicInfo(null, true))); + cards.add(new SetCardInfo("Island", 293, Rarity.LAND, mage.cards.basiclands.Island.class, new CardGraphicInfo(null, true))); + cards.add(new SetCardInfo("Island", 294, Rarity.LAND, mage.cards.basiclands.Island.class, new CardGraphicInfo(null, true))); + cards.add(new SetCardInfo("Isochron Scepter", 188, Rarity.UNCOMMON, mage.cards.i.IsochronScepter.class)); + cards.add(new SetCardInfo("Jinxed Choker", 189, Rarity.RARE, mage.cards.j.JinxedChoker.class)); + cards.add(new SetCardInfo("Journey of Discovery", 123, Rarity.COMMON, mage.cards.j.JourneyOfDiscovery.class)); + cards.add(new SetCardInfo("Krark-Clan Grunt", 97, Rarity.COMMON, mage.cards.k.KrarkClanGrunt.class)); + cards.add(new SetCardInfo("Krark-Clan Shaman", 98, Rarity.COMMON, mage.cards.k.KrarkClanShaman.class)); + cards.add(new SetCardInfo("Krark's Thumb", 190, Rarity.RARE, mage.cards.k.KrarksThumb.class)); + cards.add(new SetCardInfo("Leaden Myr", 191, Rarity.COMMON, mage.cards.l.LeadenMyr.class)); + cards.add(new SetCardInfo("Leonin Abunas", 8, Rarity.RARE, mage.cards.l.LeoninAbunas.class)); + cards.add(new SetCardInfo("Leonin Bladetrap", 192, Rarity.UNCOMMON, mage.cards.l.LeoninBladetrap.class)); + cards.add(new SetCardInfo("Leonin Den-Guard", 9, Rarity.COMMON, mage.cards.l.LeoninDenGuard.class)); + cards.add(new SetCardInfo("Leonin Elder", 10, Rarity.COMMON, mage.cards.l.LeoninElder.class)); + cards.add(new SetCardInfo("Leonin Scimitar", 193, Rarity.COMMON, mage.cards.l.LeoninScimitar.class)); + cards.add(new SetCardInfo("Leonin Skyhunter", 11, Rarity.UNCOMMON, mage.cards.l.LeoninSkyhunter.class)); + cards.add(new SetCardInfo("Leonin Sun Standard", 194, Rarity.RARE, mage.cards.l.LeoninSunStandard.class)); + cards.add(new SetCardInfo("Leveler", 195, Rarity.RARE, mage.cards.l.Leveler.class)); + cards.add(new SetCardInfo("Lifespark Spellbomb", 197, Rarity.COMMON, mage.cards.l.LifesparkSpellbomb.class)); + cards.add(new SetCardInfo("Lightning Coils", 198, Rarity.RARE, mage.cards.l.LightningCoils.class)); + cards.add(new SetCardInfo("Lightning Greaves", 199, Rarity.UNCOMMON, mage.cards.l.LightningGreaves.class)); + cards.add(new SetCardInfo("Living Hive", 124, Rarity.RARE, mage.cards.l.LivingHive.class)); + cards.add(new SetCardInfo("Lodestone Myr", 200, Rarity.RARE, mage.cards.l.LodestoneMyr.class)); + cards.add(new SetCardInfo("Looming Hoverguard", 38, Rarity.UNCOMMON, mage.cards.l.LoomingHoverguard.class)); + cards.add(new SetCardInfo("Loxodon Mender", 12, Rarity.COMMON, mage.cards.l.LoxodonMender.class)); + cards.add(new SetCardInfo("Loxodon Punisher", 14, Rarity.RARE, mage.cards.l.LoxodonPunisher.class)); + cards.add(new SetCardInfo("Loxodon Warhammer", 201, Rarity.UNCOMMON, mage.cards.l.LoxodonWarhammer.class)); + cards.add(new SetCardInfo("Lumengrid Sentinel", 40, Rarity.UNCOMMON, mage.cards.l.LumengridSentinel.class)); + cards.add(new SetCardInfo("Lumengrid Warden", 41, Rarity.COMMON, mage.cards.l.LumengridWarden.class)); + cards.add(new SetCardInfo("Luminous Angel", 15, Rarity.RARE, mage.cards.l.LuminousAngel.class)); + cards.add(new SetCardInfo("Malachite Golem", 202, Rarity.COMMON, mage.cards.m.MalachiteGolem.class)); + cards.add(new SetCardInfo("March of the Machines", 42, Rarity.RARE, mage.cards.m.MarchOfTheMachines.class)); + cards.add(new SetCardInfo("Mask of Memory", 203, Rarity.UNCOMMON, mage.cards.m.MaskOfMemory.class)); + cards.add(new SetCardInfo("Mass Hysteria", 99, Rarity.RARE, mage.cards.m.MassHysteria.class)); + cards.add(new SetCardInfo("Megatog", 100, Rarity.RARE, mage.cards.m.Megatog.class)); + cards.add(new SetCardInfo("Mesmeric Orb", 204, Rarity.RARE, mage.cards.m.MesmericOrb.class)); + cards.add(new SetCardInfo("Mind's Eye", 205, Rarity.RARE, mage.cards.m.MindsEye.class)); + cards.add(new SetCardInfo("Mindslaver", 206, Rarity.RARE, mage.cards.m.Mindslaver.class)); + cards.add(new SetCardInfo("Molder Slug", 125, Rarity.RARE, mage.cards.m.MolderSlug.class)); + cards.add(new SetCardInfo("Molten Rain", 101, Rarity.COMMON, mage.cards.m.MoltenRain.class)); + cards.add(new SetCardInfo("Moriok Scavenger", 68, Rarity.COMMON, mage.cards.m.MoriokScavenger.class)); + cards.add(new SetCardInfo("Mountain", 299, Rarity.LAND, mage.cards.basiclands.Mountain.class, new CardGraphicInfo(null, true))); + cards.add(new SetCardInfo("Mountain", 300, Rarity.LAND, mage.cards.basiclands.Mountain.class, new CardGraphicInfo(null, true))); + cards.add(new SetCardInfo("Mountain", 301, Rarity.LAND, mage.cards.basiclands.Mountain.class, new CardGraphicInfo(null, true))); + cards.add(new SetCardInfo("Mountain", 302, Rarity.LAND, mage.cards.basiclands.Mountain.class, new CardGraphicInfo(null, true))); + cards.add(new SetCardInfo("Myr Adapter", 210, Rarity.COMMON, mage.cards.m.MyrAdapter.class)); + cards.add(new SetCardInfo("Myr Enforcer", 211, Rarity.COMMON, mage.cards.m.MyrEnforcer.class)); + cards.add(new SetCardInfo("Myr Mindservant", 213, Rarity.UNCOMMON, mage.cards.m.MyrMindservant.class)); + cards.add(new SetCardInfo("Myr Retriever", 215, Rarity.UNCOMMON, mage.cards.m.MyrRetriever.class)); + cards.add(new SetCardInfo("Necrogen Mists", 69, Rarity.RARE, mage.cards.n.NecrogenMists.class)); + cards.add(new SetCardInfo("Necrogen Spellbomb", 216, Rarity.COMMON, mage.cards.n.NecrogenSpellbomb.class)); + cards.add(new SetCardInfo("Needlebug", 217, Rarity.UNCOMMON, mage.cards.n.Needlebug.class)); + cards.add(new SetCardInfo("Neurok Familiar", 43, Rarity.COMMON, mage.cards.n.NeurokFamiliar.class)); + cards.add(new SetCardInfo("Neurok Hoversail", 218, Rarity.COMMON, mage.cards.n.NeurokHoversail.class)); + cards.add(new SetCardInfo("Neurok Spy", 44, Rarity.COMMON, mage.cards.n.NeurokSpy.class)); + cards.add(new SetCardInfo("Nightmare Lash", 219, Rarity.RARE, mage.cards.n.NightmareLash.class)); + cards.add(new SetCardInfo("Nim Devourer", 70, Rarity.RARE, mage.cards.n.NimDevourer.class)); + cards.add(new SetCardInfo("Nim Lasher", 71, Rarity.COMMON, mage.cards.n.NimLasher.class)); + cards.add(new SetCardInfo("Nim Replica", 220, Rarity.COMMON, mage.cards.n.NimReplica.class)); + cards.add(new SetCardInfo("Nim Shambler", 72, Rarity.UNCOMMON, mage.cards.n.NimShambler.class)); + cards.add(new SetCardInfo("Nim Shrieker", 73, Rarity.COMMON, mage.cards.n.NimShrieker.class)); + cards.add(new SetCardInfo("Nuisance Engine", 221, Rarity.UNCOMMON, mage.cards.n.NuisanceEngine.class)); + cards.add(new SetCardInfo("Oblivion Stone", 222, Rarity.RARE, mage.cards.o.OblivionStone.class)); + cards.add(new SetCardInfo("Ogre Leadfoot", 102, Rarity.COMMON, mage.cards.o.OgreLeadfoot.class)); + cards.add(new SetCardInfo("Omega Myr", 223, Rarity.COMMON, mage.cards.o.OmegaMyr.class)); + cards.add(new SetCardInfo("One Dozen Eyes", 126, Rarity.UNCOMMON, mage.cards.o.OneDozenEyes.class)); + cards.add(new SetCardInfo("Ornithopter", 224, Rarity.UNCOMMON, mage.cards.o.Ornithopter.class)); + cards.add(new SetCardInfo("Override", 45, Rarity.COMMON, mage.cards.o.OverrideCard.class)); + cards.add(new SetCardInfo("Pearl Shard", 225, Rarity.UNCOMMON, mage.cards.p.PearlShard.class)); + cards.add(new SetCardInfo("Pentavus", 226, Rarity.RARE, mage.cards.p.Pentavus.class)); + cards.add(new SetCardInfo("Pewter Golem", 227, Rarity.COMMON, mage.cards.p.PewterGolem.class)); + cards.add(new SetCardInfo("Plains", 287, Rarity.LAND, mage.cards.basiclands.Plains.class, new CardGraphicInfo(null, true))); + cards.add(new SetCardInfo("Plains", 288, Rarity.LAND, mage.cards.basiclands.Plains.class, new CardGraphicInfo(null, true))); + cards.add(new SetCardInfo("Plains", 289, Rarity.LAND, mage.cards.basiclands.Plains.class, new CardGraphicInfo(null, true))); + cards.add(new SetCardInfo("Plains", 290, Rarity.LAND, mage.cards.basiclands.Plains.class, new CardGraphicInfo(null, true))); + cards.add(new SetCardInfo("Plated Slagwurm", 127, Rarity.RARE, mage.cards.p.PlatedSlagwurm.class)); + cards.add(new SetCardInfo("Platinum Angel", 228, Rarity.RARE, mage.cards.p.PlatinumAngel.class)); + cards.add(new SetCardInfo("Power Conduit", 229, Rarity.UNCOMMON, mage.cards.p.PowerConduit.class)); + cards.add(new SetCardInfo("Predator's Strike", 128, Rarity.COMMON, mage.cards.p.PredatorsStrike.class)); + cards.add(new SetCardInfo("Promise of Power", 74, Rarity.RARE, mage.cards.p.PromiseOfPower.class)); + cards.add(new SetCardInfo("Proteus Staff", 230, Rarity.RARE, mage.cards.p.ProteusStaff.class)); + cards.add(new SetCardInfo("Psychic Membrane", 46, Rarity.UNCOMMON, mage.cards.p.PsychicMembrane.class)); + cards.add(new SetCardInfo("Psychogenic Probe", 231, Rarity.RARE, mage.cards.p.PsychogenicProbe.class)); + cards.add(new SetCardInfo("Pyrite Spellbomb", 232, Rarity.COMMON, mage.cards.p.PyriteSpellbomb.class)); + cards.add(new SetCardInfo("Quicksilver Elemental", 47, Rarity.RARE, mage.cards.q.QuicksilverElemental.class)); + cards.add(new SetCardInfo("Raise the Alarm", 16, Rarity.COMMON, mage.cards.r.RaiseTheAlarm.class)); + cards.add(new SetCardInfo("Razor Barrier", 17, Rarity.COMMON, mage.cards.r.RazorBarrier.class)); + cards.add(new SetCardInfo("Regress", 48, Rarity.COMMON, mage.cards.r.Regress.class)); + cards.add(new SetCardInfo("Reiver Demon", 75, Rarity.RARE, mage.cards.r.ReiverDemon.class)); + cards.add(new SetCardInfo("Relic Bane", 76, Rarity.UNCOMMON, mage.cards.r.RelicBane.class)); + cards.add(new SetCardInfo("Roar of the Kha", 18, Rarity.UNCOMMON, mage.cards.r.RoarOfTheKha.class)); + cards.add(new SetCardInfo("Rule of Law", 19, Rarity.RARE, mage.cards.r.RuleOfLaw.class)); + cards.add(new SetCardInfo("Rust Elemental", 234, Rarity.UNCOMMON, mage.cards.r.RustElemental.class)); + cards.add(new SetCardInfo("Rustmouth Ogre", 103, Rarity.UNCOMMON, mage.cards.r.RustmouthOgre.class)); + cards.add(new SetCardInfo("Rustspore Ram", 235, Rarity.UNCOMMON, mage.cards.r.RustsporeRam.class)); + cards.add(new SetCardInfo("Scale of Chiss-Goria", 236, Rarity.COMMON, mage.cards.s.ScaleOfChissGoria.class)); + cards.add(new SetCardInfo("Scrabbling Claws", 237, Rarity.UNCOMMON, mage.cards.s.ScrabblingClaws.class)); + cards.add(new SetCardInfo("Sculpting Steel", 238, Rarity.RARE, mage.cards.s.SculptingSteel.class)); + cards.add(new SetCardInfo("Scythe of the Wretched", 239, Rarity.RARE, mage.cards.s.ScytheOfTheWretched.class)); + cards.add(new SetCardInfo("Seat of the Synod", 283, Rarity.COMMON, mage.cards.s.SeatOfTheSynod.class)); + cards.add(new SetCardInfo("Second Sunrise", 20, Rarity.RARE, mage.cards.s.SecondSunrise.class)); + cards.add(new SetCardInfo("Seething Song", 104, Rarity.COMMON, mage.cards.s.SeethingSong.class)); + cards.add(new SetCardInfo("Serum Tank", 240, Rarity.UNCOMMON, mage.cards.s.SerumTank.class)); + cards.add(new SetCardInfo("Shared Fate", 49, Rarity.RARE, mage.cards.s.SharedFate.class)); + cards.add(new SetCardInfo("Shatter", 105, Rarity.COMMON, mage.cards.s.Shatter.class)); + cards.add(new SetCardInfo("Shrapnel Blast", 106, Rarity.UNCOMMON, mage.cards.s.ShrapnelBlast.class)); + cards.add(new SetCardInfo("Silver Myr", 241, Rarity.COMMON, mage.cards.s.SilverMyr.class)); + cards.add(new SetCardInfo("Skeleton Shard", 242, Rarity.UNCOMMON, mage.cards.s.SkeletonShard.class)); + cards.add(new SetCardInfo("Skyhunter Cub", 21, Rarity.COMMON, mage.cards.s.SkyhunterCub.class)); + cards.add(new SetCardInfo("Skyhunter Patrol", 22, Rarity.COMMON, mage.cards.s.SkyhunterPatrol.class)); + cards.add(new SetCardInfo("Slagwurm Armor", 243, Rarity.COMMON, mage.cards.s.SlagwurmArmor.class)); + cards.add(new SetCardInfo("Slith Ascendant", 23, Rarity.UNCOMMON, mage.cards.s.SlithAscendant.class)); + cards.add(new SetCardInfo("Slith Bloodletter", 77, Rarity.UNCOMMON, mage.cards.s.SlithBloodletter.class)); + cards.add(new SetCardInfo("Slith Firewalker", 107, Rarity.UNCOMMON, mage.cards.s.SlithFirewalker.class)); + cards.add(new SetCardInfo("Slith Predator", 129, Rarity.UNCOMMON, mage.cards.s.SlithPredator.class)); + cards.add(new SetCardInfo("Slith Strider", 50, Rarity.UNCOMMON, mage.cards.s.SlithStrider.class)); + cards.add(new SetCardInfo("Solar Tide", 24, Rarity.RARE, mage.cards.s.SolarTide.class)); + cards.add(new SetCardInfo("Soldier Replica", 244, Rarity.COMMON, mage.cards.s.SoldierReplica.class)); + cards.add(new SetCardInfo("Solemn Simulacrum", 245, Rarity.RARE, mage.cards.s.SolemnSimulacrum.class)); + cards.add(new SetCardInfo("Somber Hoverguard", 51, Rarity.COMMON, mage.cards.s.SomberHoverguard.class)); + cards.add(new SetCardInfo("Soul Foundry", 246, Rarity.RARE, mage.cards.s.SoulFoundry.class)); + cards.add(new SetCardInfo("Spellweaver Helix", 247, Rarity.RARE, mage.cards.s.SpellweaverHelix.class)); + cards.add(new SetCardInfo("Spikeshot Goblin", 108, Rarity.COMMON, mage.cards.s.SpikeshotGoblin.class)); + cards.add(new SetCardInfo("Spoils of the Vault", 78, Rarity.RARE, mage.cards.s.SpoilsOfTheVault.class)); + cards.add(new SetCardInfo("Stalking Stones", 284, Rarity.UNCOMMON, mage.cards.s.StalkingStones.class)); + cards.add(new SetCardInfo("Steel Wall", 248, Rarity.COMMON, mage.cards.s.SteelWall.class)); + cards.add(new SetCardInfo("Sunbeam Spellbomb", 250, Rarity.COMMON, mage.cards.s.SunbeamSpellbomb.class)); + cards.add(new SetCardInfo("Sun Droplet", 249, Rarity.UNCOMMON, mage.cards.s.SunDroplet.class)); + cards.add(new SetCardInfo("Swamp", 295, Rarity.LAND, mage.cards.basiclands.Swamp.class, new CardGraphicInfo(null, true))); + cards.add(new SetCardInfo("Swamp", 296, Rarity.LAND, mage.cards.basiclands.Swamp.class, new CardGraphicInfo(null, true))); + cards.add(new SetCardInfo("Swamp", 297, Rarity.LAND, mage.cards.basiclands.Swamp.class, new CardGraphicInfo(null, true))); + cards.add(new SetCardInfo("Swamp", 298, Rarity.LAND, mage.cards.basiclands.Swamp.class, new CardGraphicInfo(null, true))); + cards.add(new SetCardInfo("Sword of Kaldra", 251, Rarity.RARE, mage.cards.s.SwordOfKaldra.class)); + cards.add(new SetCardInfo("Sylvan Scrying", 130, Rarity.UNCOMMON, mage.cards.s.SylvanScrying.class)); + cards.add(new SetCardInfo("Synod Sanctum", 252, Rarity.UNCOMMON, mage.cards.s.SynodSanctum.class)); + cards.add(new SetCardInfo("Taj-Nar Swordsmith", 27, Rarity.UNCOMMON, mage.cards.t.TajNarSwordsmith.class)); + cards.add(new SetCardInfo("Talisman of Dominance", 253, Rarity.UNCOMMON, mage.cards.t.TalismanOfDominance.class)); + cards.add(new SetCardInfo("Talisman of Impulse", 254, Rarity.UNCOMMON, mage.cards.t.TalismanOfImpulse.class)); + cards.add(new SetCardInfo("Talisman of Indulgence", 255, Rarity.UNCOMMON, mage.cards.t.TalismanOfIndulgence.class)); + cards.add(new SetCardInfo("Talisman of Progress", 256, Rarity.UNCOMMON, mage.cards.t.TalismanOfProgress.class)); + cards.add(new SetCardInfo("Talisman of Unity", 257, Rarity.UNCOMMON, mage.cards.t.TalismanOfUnity.class)); + cards.add(new SetCardInfo("Tanglebloom", 258, Rarity.COMMON, mage.cards.t.Tanglebloom.class)); + cards.add(new SetCardInfo("Tangleroot", 259, Rarity.RARE, mage.cards.t.Tangleroot.class)); + cards.add(new SetCardInfo("Tel-Jilad Archers", 131, Rarity.COMMON, mage.cards.t.TelJiladArchers.class)); + cards.add(new SetCardInfo("Tel-Jilad Chosen", 132, Rarity.COMMON, mage.cards.t.TelJiladChosen.class)); + cards.add(new SetCardInfo("Tel-Jilad Exile", 133, Rarity.COMMON, mage.cards.t.TelJiladExile.class)); + cards.add(new SetCardInfo("Tel-Jilad Stylus", 260, Rarity.UNCOMMON, mage.cards.t.TelJiladStylus.class)); + cards.add(new SetCardInfo("Tempest of Light", 28, Rarity.UNCOMMON, mage.cards.t.TempestOfLight.class)); + cards.add(new SetCardInfo("Temporal Cascade", 52, Rarity.RARE, mage.cards.t.TemporalCascade.class)); + cards.add(new SetCardInfo("Terror", 79, Rarity.COMMON, mage.cards.t.Terror.class)); + cards.add(new SetCardInfo("Thirst for Knowledge", 53, Rarity.UNCOMMON, mage.cards.t.ThirstForKnowledge.class)); + cards.add(new SetCardInfo("Thoughtcast", 54, Rarity.COMMON, mage.cards.t.Thoughtcast.class)); + cards.add(new SetCardInfo("Thought Prison", 261, Rarity.UNCOMMON, mage.cards.t.ThoughtPrison.class)); + cards.add(new SetCardInfo("Timesifter", 262, Rarity.RARE, mage.cards.t.Timesifter.class)); + cards.add(new SetCardInfo("Titanium Golem", 263, Rarity.COMMON, mage.cards.t.TitaniumGolem.class)); + cards.add(new SetCardInfo("Tooth and Nail", 134, Rarity.RARE, mage.cards.t.ToothAndNail.class)); + cards.add(new SetCardInfo("Tooth of Chiss-Goria", 264, Rarity.COMMON, mage.cards.t.ToothOfChissGoria.class)); + cards.add(new SetCardInfo("Tower of Champions", 265, Rarity.RARE, mage.cards.t.TowerOfChampions.class)); + cards.add(new SetCardInfo("Tower of Eons", 266, Rarity.RARE, mage.cards.t.TowerOfEons.class)); + cards.add(new SetCardInfo("Tower of Fortunes", 267, Rarity.RARE, mage.cards.t.TowerOfFortunes.class)); + cards.add(new SetCardInfo("Tower of Murmurs", 268, Rarity.RARE, mage.cards.t.TowerOfMurmurs.class)); + cards.add(new SetCardInfo("Trash for Treasure", 109, Rarity.RARE, mage.cards.t.TrashForTreasure.class)); + cards.add(new SetCardInfo("Tree of Tales", 285, Rarity.COMMON, mage.cards.t.TreeOfTales.class)); + cards.add(new SetCardInfo("Triskelion", 269, Rarity.RARE, mage.cards.t.Triskelion.class)); + cards.add(new SetCardInfo("Troll Ascetic", 135, Rarity.RARE, mage.cards.t.TrollAscetic.class)); + cards.add(new SetCardInfo("Trolls of Tel-Jilad", 136, Rarity.UNCOMMON, mage.cards.t.TrollsOfTelJilad.class)); + cards.add(new SetCardInfo("Turn to Dust", 137, Rarity.COMMON, mage.cards.t.TurnToDust.class)); + cards.add(new SetCardInfo("Vault of Whispers", 286, Rarity.COMMON, mage.cards.v.VaultOfWhispers.class)); + cards.add(new SetCardInfo("Vedalken Archmage", 55, Rarity.RARE, mage.cards.v.VedalkenArchmage.class)); + cards.add(new SetCardInfo("Vermiculos", 80, Rarity.RARE, mage.cards.v.Vermiculos.class)); + cards.add(new SetCardInfo("Viridian Joiner", 138, Rarity.COMMON, mage.cards.v.ViridianJoiner.class)); + cards.add(new SetCardInfo("Viridian Longbow", 270, Rarity.COMMON, mage.cards.v.ViridianLongbow.class)); + cards.add(new SetCardInfo("Viridian Shaman", 139, Rarity.UNCOMMON, mage.cards.v.ViridianShaman.class)); + cards.add(new SetCardInfo("Vorrac Battlehorns", 271, Rarity.COMMON, mage.cards.v.VorracBattlehorns.class)); + cards.add(new SetCardInfo("Vulshok Battlegear", 272, Rarity.UNCOMMON, mage.cards.v.VulshokBattlegear.class)); + cards.add(new SetCardInfo("Vulshok Battlemaster", 110, Rarity.RARE, mage.cards.v.VulshokBattlemaster.class)); + cards.add(new SetCardInfo("Vulshok Berserker", 111, Rarity.COMMON, mage.cards.v.VulshokBerserker.class)); + cards.add(new SetCardInfo("Vulshok Gauntlets", 273, Rarity.COMMON, mage.cards.v.VulshokGauntlets.class)); + cards.add(new SetCardInfo("Wail of the Nim", 81, Rarity.COMMON, mage.cards.w.WailOfTheNim.class)); + cards.add(new SetCardInfo("Wall of Blood", 82, Rarity.UNCOMMON, mage.cards.w.WallOfBlood.class)); + cards.add(new SetCardInfo("Wanderguard Sentry", 56, Rarity.COMMON, mage.cards.w.WanderguardSentry.class)); + cards.add(new SetCardInfo("Welding Jar", 274, Rarity.COMMON, mage.cards.w.WeldingJar.class)); + cards.add(new SetCardInfo("Wizard Replica", 275, Rarity.COMMON, mage.cards.w.WizardReplica.class)); + cards.add(new SetCardInfo("Woebearer", 83, Rarity.UNCOMMON, mage.cards.w.Woebearer.class)); + cards.add(new SetCardInfo("Worldslayer", 276, Rarity.RARE, mage.cards.w.Worldslayer.class)); + cards.add(new SetCardInfo("Wrench Mind", 84, Rarity.COMMON, mage.cards.w.WrenchMind.class)); + cards.add(new SetCardInfo("Wurmskin Forger", 140, Rarity.COMMON, mage.cards.w.WurmskinForger.class)); + cards.add(new SetCardInfo("Yotian Soldier", 277, Rarity.COMMON, mage.cards.y.YotianSoldier.class)); + } +} diff --git a/Mage/src/main/java/mage/abilities/common/BecomesBlockedByCreatureTriggeredAbility.java b/Mage/src/main/java/mage/abilities/common/BecomesBlockedByCreatureTriggeredAbility.java index ee2b42f7d0..8fbb14821a 100644 --- a/Mage/src/main/java/mage/abilities/common/BecomesBlockedByCreatureTriggeredAbility.java +++ b/Mage/src/main/java/mage/abilities/common/BecomesBlockedByCreatureTriggeredAbility.java @@ -79,7 +79,9 @@ public class BecomesBlockedByCreatureTriggeredAbility extends TriggeredAbilityIm @Override public String getRule() { - return "Whenever {this} becomes blocked by a " + filter.getMessage() + ", " + super.getRule(); + return "Whenever {this} becomes blocked by " + + (filter.getMessage().startsWith("an ") ? "" : "a ") + + filter.getMessage() + ", " + super.getRule(); } @Override From 59eb2ed56865dc6f5e835edaa1289ec6729548c3 Mon Sep 17 00:00:00 2001 From: ingmargoudt Date: Mon, 20 Mar 2017 10:39:28 +0100 Subject: [PATCH 09/16] change map for list --- Mage.Sets/src/mage/cards/k/KynaiosAndTiroOfMeletis.java | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/Mage.Sets/src/mage/cards/k/KynaiosAndTiroOfMeletis.java b/Mage.Sets/src/mage/cards/k/KynaiosAndTiroOfMeletis.java index 3b0beda3b7..d56c6acce5 100644 --- a/Mage.Sets/src/mage/cards/k/KynaiosAndTiroOfMeletis.java +++ b/Mage.Sets/src/mage/cards/k/KynaiosAndTiroOfMeletis.java @@ -47,12 +47,12 @@ import mage.players.PlayerList; import mage.target.Target; import mage.target.common.TargetCardInHand; +import java.util.ArrayList; import java.util.HashMap; import java.util.Objects; import java.util.UUID; /** - * * @author spjspj */ public class KynaiosAndTiroOfMeletis extends CardImpl { @@ -100,7 +100,6 @@ class KynaiosAndTirosEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { Player controller = game.getPlayer(source.getControllerId()); - Permanent permanent = game.getPermanent(source.getSourceId()); if (controller != null) { controller.drawCards(1, game); PlayerList playerList = game.getState().getPlayerList().copy(); @@ -111,7 +110,7 @@ class KynaiosAndTirosEffect extends OneShotEffect { Player currentPlayer = game.getPlayer(playerList.get()); UUID firstInactivePlayer = null; Target target = new TargetCardInHand(filter); - HashMap noLandPlayers = new HashMap<>(); + ArrayList noLandPlayers = new ArrayList<>(); while (controller.canRespond()) { if (currentPlayer != null && currentPlayer.canRespond() && game.getState().getPlayersInRange(controller.getId(), game).contains(currentPlayer.getId())) { @@ -130,7 +129,7 @@ class KynaiosAndTirosEffect extends OneShotEffect { } } if (!playedLand && !Objects.equals(currentPlayer, controller)) { - noLandPlayers.put(currentPlayer.getId(), playedLand); + noLandPlayers.add(currentPlayer.getId()); } } // get next player @@ -142,7 +141,7 @@ class KynaiosAndTirosEffect extends OneShotEffect { } } - for (UUID playerId : noLandPlayers.keySet()) { + for (UUID playerId : noLandPlayers) { Player player = game.getPlayer(playerId); if (player != null) { if (player.chooseUse(outcome.DrawCard, "Draw a card?", source, game)) { From 2f031f883c3dd8e9512a5eacfe6864c954438572 Mon Sep 17 00:00:00 2001 From: Max Lebedev Date: Tue, 21 Mar 2017 02:24:38 -0400 Subject: [PATCH 10/16] added Divining Witch --- Mage.Sets/src/mage/cards/d/DiviningWitch.java | 138 ++++++++++++++++++ Mage.Sets/src/mage/sets/Nemesis.java | 1 + 2 files changed, 139 insertions(+) create mode 100644 Mage.Sets/src/mage/cards/d/DiviningWitch.java diff --git a/Mage.Sets/src/mage/cards/d/DiviningWitch.java b/Mage.Sets/src/mage/cards/d/DiviningWitch.java new file mode 100644 index 0000000000..baed1a0d79 --- /dev/null +++ b/Mage.Sets/src/mage/cards/d/DiviningWitch.java @@ -0,0 +1,138 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package mage.cards.d; + +import java.util.UUID; +import mage.MageInt; +import mage.MageObject; +import mage.abilities.Ability; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.costs.common.DiscardTargetCost; +import mage.abilities.costs.common.TapSourceCost; +import mage.abilities.costs.mana.ManaCostsImpl; +import mage.abilities.effects.OneShotEffect; +import mage.cards.*; +import mage.cards.repository.CardRepository; +import mage.choices.Choice; +import mage.choices.ChoiceImpl; +import mage.constants.CardType; +import mage.constants.Outcome; +import mage.constants.Zone; +import mage.game.Game; +import mage.players.Player; +import mage.target.common.TargetCardInHand; + +/** + * + * @author anonymous + */ +public class DiviningWitch extends CardImpl { + + public DiviningWitch(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}"); + + this.subtype.add("Human"); + this.subtype.add("Spellshaper"); + this.power = new MageInt(1); + this.toughness = new MageInt(1); + + // {1}{B}, {tap}, Discard a card: Name a card. Exile the top six cards of your library. Reveal cards from the top of your library until you reveal the named card, then put that card into your hand. Exile all other cards revealed this way. + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DiviningWitchEffect(), new ManaCostsImpl("{1}{B}")); + ability.addCost(new TapSourceCost()); + ability.addCost(new DiscardTargetCost(new TargetCardInHand())); + this.addAbility(ability); + } + + public DiviningWitch(final DiviningWitch card) { + super(card); + } + + @Override + public DiviningWitch copy() { + return new DiviningWitch(this); + } +} + +class DiviningWitchEffect extends OneShotEffect { + + DiviningWitchEffect() { + super(Outcome.Benefit); + this.staticText = "Name a card. Exile the top six cards of your library. Reveal cards from the top of your library until you reveal the named card, then put that card into your hand. Exile all other cards revealed this way"; + } + + DiviningWitchEffect(final DiviningWitchEffect effect) { + super(effect); + } + + @Override + public DiviningWitchEffect copy() { + return new DiviningWitchEffect(this); + } + + @Override + public boolean apply(Game game, Ability source) { + Player controller = game.getPlayer(source.getControllerId()); + MageObject sourceObject = game.getObject(source.getSourceId()); + if (controller != null && sourceObject != null) { + // Name a card. + Choice choice = new ChoiceImpl(); + choice.setChoices(CardRepository.instance.getNames()); + while (!controller.choose(Outcome.Benefit, choice, game)) { + if (!controller.canRespond()) { + return false; + } + } + String name = choice.getChoice(); + game.informPlayers("Card named: " + name); + + // Exile the top six cards of your library, + controller.moveCards(controller.getLibrary().getTopCards(game, 6), Zone.EXILED, source, game); + + // then reveal cards from the top of your library until you reveal the named card. + Cards cardsToReaveal = new CardsImpl(); + Card cardToHand = null; + while (controller.getLibrary().hasCards()) { + Card card = controller.getLibrary().removeFromTop(game); + if (card != null) { + cardsToReaveal.add(card); + // Put that card into your hand + if (card.getName().equals(name)) { + cardToHand = card; + break; + } + } + } + controller.moveCards(cardToHand, Zone.HAND, source, game); + controller.revealCards(sourceObject.getIdName(), cardsToReaveal, game); + cardsToReaveal.remove(cardToHand); + controller.moveCards(cardsToReaveal, Zone.EXILED, source, game); + return true; + } + return false; + } +} diff --git a/Mage.Sets/src/mage/sets/Nemesis.java b/Mage.Sets/src/mage/sets/Nemesis.java index 2a01e357a0..1a84b91e6e 100644 --- a/Mage.Sets/src/mage/sets/Nemesis.java +++ b/Mage.Sets/src/mage/sets/Nemesis.java @@ -72,6 +72,7 @@ public class Nemesis extends ExpansionSet { cards.add(new SetCardInfo("Death Pit Offering", 56, Rarity.RARE, mage.cards.d.DeathPitOffering.class)); cards.add(new SetCardInfo("Defender en-Vec", 5, Rarity.COMMON, mage.cards.d.DefenderEnVec.class)); cards.add(new SetCardInfo("Defiant Falcon", 6, Rarity.COMMON, mage.cards.d.DefiantFalcon.class)); + cards.add(new SetCardInfo("Divining Witch", 57, Rarity.RARE, mage.cards.d.DiviningWitch.class)); cards.add(new SetCardInfo("Dominate", 31, Rarity.UNCOMMON, mage.cards.d.Dominate.class)); cards.add(new SetCardInfo("Downhill Charge", 79, Rarity.COMMON, mage.cards.d.DownhillCharge.class)); cards.add(new SetCardInfo("Ensnare", 32, Rarity.UNCOMMON, mage.cards.e.Ensnare.class)); From 338d032a8b942cf352b837c45e003254554c9ac6 Mon Sep 17 00:00:00 2001 From: Max Lebedev Date: Tue, 21 Mar 2017 02:30:33 -0400 Subject: [PATCH 11/16] updated author --- Mage.Sets/src/mage/cards/d/DiviningWitch.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Mage.Sets/src/mage/cards/d/DiviningWitch.java b/Mage.Sets/src/mage/cards/d/DiviningWitch.java index baed1a0d79..09a05685f1 100644 --- a/Mage.Sets/src/mage/cards/d/DiviningWitch.java +++ b/Mage.Sets/src/mage/cards/d/DiviningWitch.java @@ -49,7 +49,7 @@ import mage.target.common.TargetCardInHand; /** * - * @author anonymous + * @author maxlebedev */ public class DiviningWitch extends CardImpl { From 4b8c2d19ad2324a84fe376610914f2fba46fc9ed Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Tue, 21 Mar 2017 11:37:22 +0100 Subject: [PATCH 12/16] Added Ogre Leadfoot. --- Mage.Sets/src/mage/cards/o/OgreLeadfoot.java | 64 ++ Mage.Sets/src/mage/sets/Mirrodin.java | 629 +++++++++--------- ...omesBlockedByCreatureTriggeredAbility.java | 4 +- 3 files changed, 382 insertions(+), 315 deletions(-) create mode 100644 Mage.Sets/src/mage/cards/o/OgreLeadfoot.java diff --git a/Mage.Sets/src/mage/cards/o/OgreLeadfoot.java b/Mage.Sets/src/mage/cards/o/OgreLeadfoot.java new file mode 100644 index 0000000000..b782730b2a --- /dev/null +++ b/Mage.Sets/src/mage/cards/o/OgreLeadfoot.java @@ -0,0 +1,64 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package mage.cards.o; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.common.BecomesBlockedByCreatureTriggeredAbility; +import mage.abilities.effects.common.DestroyTargetEffect; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.filter.common.FilterArtifactCreaturePermanent; + +/** + * + * @author LevelX2 + */ +public class OgreLeadfoot extends CardImpl { + + public OgreLeadfoot(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{R}"); + + this.subtype.add("Ogre"); + this.power = new MageInt(3); + this.toughness = new MageInt(3); + + // Whenever Ogre Leadfoot becomes blocked by an artifact creature, destroy that creature. + this.addAbility(new BecomesBlockedByCreatureTriggeredAbility(new DestroyTargetEffect(), new FilterArtifactCreaturePermanent("an artifact creature"), false)); + } + + public OgreLeadfoot(final OgreLeadfoot card) { + super(card); + } + + @Override + public OgreLeadfoot copy() { + return new OgreLeadfoot(this); + } +} diff --git a/Mage.Sets/src/mage/sets/Mirrodin.java b/Mage.Sets/src/mage/sets/Mirrodin.java index a5692d782f..d35973de0a 100644 --- a/Mage.Sets/src/mage/sets/Mirrodin.java +++ b/Mage.Sets/src/mage/sets/Mirrodin.java @@ -1,314 +1,315 @@ -package mage.sets; - -import mage.cards.ExpansionSet; -import mage.constants.SetType; - -import mage.constants.Rarity; -import mage.cards.CardGraphicInfo; - -public class Mirrodin extends ExpansionSet { - private static final Mirrodin instance = new Mirrodin(); - - public static Mirrodin getInstance() { - return instance; - } - - private Mirrodin() { - super("Mirrodin", "MRD", ExpansionSet.buildDate(2003, 9, 2), SetType.EXPANSION); - this.blockName = "Mirrodin"; - this.hasBoosters = true; - this.numBoosterLands = 0; - this.numBoosterCommon = 11; - this.numBoosterUncommon = 3; - this.numBoosterRare = 1; - this.ratioBoosterMythic = 0; - cards.add(new SetCardInfo("Aether Spellbomb", 141, Rarity.COMMON, mage.cards.a.AetherSpellbomb.class)); - cards.add(new SetCardInfo("Alpha Myr", 142, Rarity.COMMON, mage.cards.a.AlphaMyr.class)); - cards.add(new SetCardInfo("Altar of Shadows", 143, Rarity.RARE, mage.cards.a.AltarOfShadows.class)); - cards.add(new SetCardInfo("Altar's Light", 1, Rarity.UNCOMMON, mage.cards.a.AltarsLight.class)); - cards.add(new SetCardInfo("Ancient Den", 278, Rarity.COMMON, mage.cards.a.AncientDen.class)); - cards.add(new SetCardInfo("Annul", 29, Rarity.COMMON, mage.cards.a.Annul.class)); - cards.add(new SetCardInfo("Arc-Slogger", 85, Rarity.RARE, mage.cards.a.ArcSlogger.class)); - cards.add(new SetCardInfo("Arrest", 2, Rarity.COMMON, mage.cards.a.Arrest.class)); - cards.add(new SetCardInfo("Assert Authority", 30, Rarity.UNCOMMON, mage.cards.a.AssertAuthority.class)); - cards.add(new SetCardInfo("Atog", 86, Rarity.UNCOMMON, mage.cards.a.Atog.class)); - cards.add(new SetCardInfo("Auriok Bladewarden", 3, Rarity.UNCOMMON, mage.cards.a.AuriokBladewarden.class)); - cards.add(new SetCardInfo("Auriok Steelshaper", 4, Rarity.RARE, mage.cards.a.AuriokSteelshaper.class)); - cards.add(new SetCardInfo("Auriok Transfixer", 5, Rarity.COMMON, mage.cards.a.AuriokTransfixer.class)); - cards.add(new SetCardInfo("Awe Strike", 6, Rarity.COMMON, mage.cards.a.AweStrike.class)); - cards.add(new SetCardInfo("Banshee's Blade", 144, Rarity.UNCOMMON, mage.cards.b.BansheesBlade.class)); - cards.add(new SetCardInfo("Barter in Blood", 57, Rarity.UNCOMMON, mage.cards.b.BarterInBlood.class)); - cards.add(new SetCardInfo("Battlegrowth", 113, Rarity.COMMON, mage.cards.b.Battlegrowth.class)); - cards.add(new SetCardInfo("Betrayal of Flesh", 58, Rarity.UNCOMMON, mage.cards.b.BetrayalOfFlesh.class)); - cards.add(new SetCardInfo("Blinding Beam", 7, Rarity.COMMON, mage.cards.b.BlindingBeam.class)); - cards.add(new SetCardInfo("Blinkmoth Urn", 145, Rarity.RARE, mage.cards.b.BlinkmothUrn.class)); - cards.add(new SetCardInfo("Blinkmoth Well", 279, Rarity.UNCOMMON, mage.cards.b.BlinkmothWell.class)); - cards.add(new SetCardInfo("Bloodscent", 114, Rarity.UNCOMMON, mage.cards.b.Bloodscent.class)); - cards.add(new SetCardInfo("Bonesplitter", 146, Rarity.COMMON, mage.cards.b.Bonesplitter.class)); - cards.add(new SetCardInfo("Bosh, Iron Golem", 147, Rarity.RARE, mage.cards.b.BoshIronGolem.class)); - cards.add(new SetCardInfo("Bottle Gnomes", 148, Rarity.UNCOMMON, mage.cards.b.BottleGnomes.class)); - cards.add(new SetCardInfo("Broodstar", 31, Rarity.RARE, mage.cards.b.Broodstar.class)); - cards.add(new SetCardInfo("Cathodion", 149, Rarity.UNCOMMON, mage.cards.c.Cathodion.class)); - cards.add(new SetCardInfo("Chalice of the Void", 150, Rarity.RARE, mage.cards.c.ChaliceOfTheVoid.class)); - cards.add(new SetCardInfo("Chimney Imp", 59, Rarity.COMMON, mage.cards.c.ChimneyImp.class)); - cards.add(new SetCardInfo("Chromatic Sphere", 151, Rarity.COMMON, mage.cards.c.ChromaticSphere.class)); - cards.add(new SetCardInfo("Chrome Mox", 152, Rarity.RARE, mage.cards.c.ChromeMox.class)); - cards.add(new SetCardInfo("Clockwork Beetle", 153, Rarity.COMMON, mage.cards.c.ClockworkBeetle.class)); - cards.add(new SetCardInfo("Clockwork Condor", 154, Rarity.COMMON, mage.cards.c.ClockworkCondor.class)); - cards.add(new SetCardInfo("Clockwork Dragon", 155, Rarity.RARE, mage.cards.c.ClockworkDragon.class)); - cards.add(new SetCardInfo("Clockwork Vorrac", 156, Rarity.UNCOMMON, mage.cards.c.ClockworkVorrac.class)); - cards.add(new SetCardInfo("Cloudpost", 280, Rarity.COMMON, mage.cards.c.Cloudpost.class)); - cards.add(new SetCardInfo("Cobalt Golem", 157, Rarity.COMMON, mage.cards.c.CobaltGolem.class)); - cards.add(new SetCardInfo("Confusion in the Ranks", 87, Rarity.RARE, mage.cards.c.ConfusionInTheRanks.class)); - cards.add(new SetCardInfo("Consume Spirit", 60, Rarity.COMMON, mage.cards.c.ConsumeSpirit.class)); - cards.add(new SetCardInfo("Contaminated Bond", 61, Rarity.COMMON, mage.cards.c.ContaminatedBond.class)); - cards.add(new SetCardInfo("Copperhoof Vorrac", 116, Rarity.RARE, mage.cards.c.CopperhoofVorrac.class)); - cards.add(new SetCardInfo("Copper Myr", 158, Rarity.COMMON, mage.cards.c.CopperMyr.class)); - cards.add(new SetCardInfo("Creeping Mold", 117, Rarity.UNCOMMON, mage.cards.c.CreepingMold.class)); - cards.add(new SetCardInfo("Crystal Shard", 159, Rarity.UNCOMMON, mage.cards.c.CrystalShard.class)); - cards.add(new SetCardInfo("Culling Scales", 160, Rarity.RARE, mage.cards.c.CullingScales.class)); - cards.add(new SetCardInfo("Damping Matrix", 161, Rarity.RARE, mage.cards.d.DampingMatrix.class)); - cards.add(new SetCardInfo("Deconstruct", 118, Rarity.COMMON, mage.cards.d.Deconstruct.class)); - cards.add(new SetCardInfo("Detonate", 88, Rarity.UNCOMMON, mage.cards.d.Detonate.class)); - cards.add(new SetCardInfo("Disarm", 32, Rarity.COMMON, mage.cards.d.Disarm.class)); - cards.add(new SetCardInfo("Disciple of the Vault", 62, Rarity.COMMON, mage.cards.d.DiscipleOfTheVault.class)); - cards.add(new SetCardInfo("Domineer", 33, Rarity.UNCOMMON, mage.cards.d.Domineer.class)); - cards.add(new SetCardInfo("Dragon Blood", 163, Rarity.UNCOMMON, mage.cards.d.DragonBlood.class)); - cards.add(new SetCardInfo("Dream's Grip", 34, Rarity.COMMON, mage.cards.d.DreamsGrip.class)); - cards.add(new SetCardInfo("Dross Harvester", 63, Rarity.RARE, mage.cards.d.DrossHarvester.class)); - cards.add(new SetCardInfo("Dross Prowler", 64, Rarity.COMMON, mage.cards.d.DrossProwler.class)); - cards.add(new SetCardInfo("Dross Scorpion", 164, Rarity.COMMON, mage.cards.d.DrossScorpion.class)); - cards.add(new SetCardInfo("Duplicant", 165, Rarity.RARE, mage.cards.d.Duplicant.class)); - cards.add(new SetCardInfo("Duskworker", 166, Rarity.UNCOMMON, mage.cards.d.Duskworker.class)); - cards.add(new SetCardInfo("Electrostatic Bolt", 89, Rarity.COMMON, mage.cards.e.ElectrostaticBolt.class)); - cards.add(new SetCardInfo("Elf Replica", 167, Rarity.COMMON, mage.cards.e.ElfReplica.class)); - cards.add(new SetCardInfo("Empyrial Plate", 168, Rarity.RARE, mage.cards.e.EmpyrialPlate.class)); - cards.add(new SetCardInfo("Extraplanar Lens", 169, Rarity.RARE, mage.cards.e.ExtraplanarLens.class)); - cards.add(new SetCardInfo("Fabricate", 35, Rarity.UNCOMMON, mage.cards.f.Fabricate.class)); - cards.add(new SetCardInfo("Fangren Hunter", 119, Rarity.COMMON, mage.cards.f.FangrenHunter.class)); - cards.add(new SetCardInfo("Farsight Mask", 170, Rarity.UNCOMMON, mage.cards.f.FarsightMask.class)); - cards.add(new SetCardInfo("Fatespinner", 36, Rarity.RARE, mage.cards.f.Fatespinner.class)); - cards.add(new SetCardInfo("Fiery Gambit", 90, Rarity.RARE, mage.cards.f.FieryGambit.class)); - cards.add(new SetCardInfo("Fireshrieker", 171, Rarity.UNCOMMON, mage.cards.f.Fireshrieker.class)); - cards.add(new SetCardInfo("Fists of the Anvil", 91, Rarity.COMMON, mage.cards.f.FistsOfTheAnvil.class)); - cards.add(new SetCardInfo("Forest", 303, Rarity.LAND, mage.cards.basiclands.Forest.class, new CardGraphicInfo(null, true))); - cards.add(new SetCardInfo("Forest", 304, Rarity.LAND, mage.cards.basiclands.Forest.class, new CardGraphicInfo(null, true))); - cards.add(new SetCardInfo("Forest", 305, Rarity.LAND, mage.cards.basiclands.Forest.class, new CardGraphicInfo(null, true))); - cards.add(new SetCardInfo("Forest", 306, Rarity.LAND, mage.cards.basiclands.Forest.class, new CardGraphicInfo(null, true))); - cards.add(new SetCardInfo("Forge Armor", 92, Rarity.UNCOMMON, mage.cards.f.ForgeArmor.class)); - cards.add(new SetCardInfo("Frogmite", 172, Rarity.COMMON, mage.cards.f.Frogmite.class)); - cards.add(new SetCardInfo("Galvanic Key", 173, Rarity.COMMON, mage.cards.g.GalvanicKey.class)); - cards.add(new SetCardInfo("Gate to the Aether", 174, Rarity.RARE, mage.cards.g.GateToTheAether.class)); - cards.add(new SetCardInfo("Gilded Lotus", 175, Rarity.RARE, mage.cards.g.GildedLotus.class)); - cards.add(new SetCardInfo("Glimmervoid", 281, Rarity.RARE, mage.cards.g.Glimmervoid.class)); - cards.add(new SetCardInfo("Glissa Sunseeker", 120, Rarity.RARE, mage.cards.g.GlissaSunseeker.class)); - cards.add(new SetCardInfo("Goblin Charbelcher", 176, Rarity.RARE, mage.cards.g.GoblinCharbelcher.class)); - cards.add(new SetCardInfo("Goblin Dirigible", 177, Rarity.UNCOMMON, mage.cards.g.GoblinDirigible.class)); - cards.add(new SetCardInfo("Goblin Replica", 178, Rarity.COMMON, mage.cards.g.GoblinReplica.class)); - cards.add(new SetCardInfo("Goblin Striker", 94, Rarity.COMMON, mage.cards.g.GoblinStriker.class)); - cards.add(new SetCardInfo("Goblin War Wagon", 179, Rarity.COMMON, mage.cards.g.GoblinWarWagon.class)); - cards.add(new SetCardInfo("Gold Myr", 180, Rarity.COMMON, mage.cards.g.GoldMyr.class)); - cards.add(new SetCardInfo("Golem-Skin Gauntlets", 181, Rarity.UNCOMMON, mage.cards.g.GolemSkinGauntlets.class)); - cards.add(new SetCardInfo("Grab the Reins", 95, Rarity.UNCOMMON, mage.cards.g.GrabTheReins.class)); - cards.add(new SetCardInfo("Granite Shard", 182, Rarity.UNCOMMON, mage.cards.g.GraniteShard.class)); - cards.add(new SetCardInfo("Great Furnace", 282, Rarity.COMMON, mage.cards.g.GreatFurnace.class)); - cards.add(new SetCardInfo("Grid Monitor", 183, Rarity.RARE, mage.cards.g.GridMonitor.class)); - cards.add(new SetCardInfo("Groffskithur", 121, Rarity.COMMON, mage.cards.g.Groffskithur.class)); - cards.add(new SetCardInfo("Heartwood Shard", 184, Rarity.UNCOMMON, mage.cards.h.HeartwoodShard.class)); - cards.add(new SetCardInfo("Hematite Golem", 185, Rarity.COMMON, mage.cards.h.HematiteGolem.class)); - cards.add(new SetCardInfo("Hum of the Radix", 122, Rarity.RARE, mage.cards.h.HumOfTheRadix.class)); - cards.add(new SetCardInfo("Icy Manipulator", 186, Rarity.UNCOMMON, mage.cards.i.IcyManipulator.class)); - cards.add(new SetCardInfo("Incite War", 96, Rarity.COMMON, mage.cards.i.InciteWar.class)); - cards.add(new SetCardInfo("Inertia Bubble", 37, Rarity.COMMON, mage.cards.i.InertiaBubble.class)); - cards.add(new SetCardInfo("Iron Myr", 187, Rarity.COMMON, mage.cards.i.IronMyr.class)); - cards.add(new SetCardInfo("Irradiate", 67, Rarity.COMMON, mage.cards.i.Irradiate.class)); - cards.add(new SetCardInfo("Island", 291, Rarity.LAND, mage.cards.basiclands.Island.class, new CardGraphicInfo(null, true))); - cards.add(new SetCardInfo("Island", 292, Rarity.LAND, mage.cards.basiclands.Island.class, new CardGraphicInfo(null, true))); - cards.add(new SetCardInfo("Island", 293, Rarity.LAND, mage.cards.basiclands.Island.class, new CardGraphicInfo(null, true))); - cards.add(new SetCardInfo("Island", 294, Rarity.LAND, mage.cards.basiclands.Island.class, new CardGraphicInfo(null, true))); - cards.add(new SetCardInfo("Isochron Scepter", 188, Rarity.UNCOMMON, mage.cards.i.IsochronScepter.class)); - cards.add(new SetCardInfo("Jinxed Choker", 189, Rarity.RARE, mage.cards.j.JinxedChoker.class)); - cards.add(new SetCardInfo("Journey of Discovery", 123, Rarity.COMMON, mage.cards.j.JourneyOfDiscovery.class)); - cards.add(new SetCardInfo("Krark-Clan Grunt", 97, Rarity.COMMON, mage.cards.k.KrarkClanGrunt.class)); - cards.add(new SetCardInfo("Krark-Clan Shaman", 98, Rarity.COMMON, mage.cards.k.KrarkClanShaman.class)); - cards.add(new SetCardInfo("Krark's Thumb", 190, Rarity.RARE, mage.cards.k.KrarksThumb.class)); - cards.add(new SetCardInfo("Leaden Myr", 191, Rarity.COMMON, mage.cards.l.LeadenMyr.class)); - cards.add(new SetCardInfo("Leonin Abunas", 8, Rarity.RARE, mage.cards.l.LeoninAbunas.class)); - cards.add(new SetCardInfo("Leonin Bladetrap", 192, Rarity.UNCOMMON, mage.cards.l.LeoninBladetrap.class)); - cards.add(new SetCardInfo("Leonin Den-Guard", 9, Rarity.COMMON, mage.cards.l.LeoninDenGuard.class)); - cards.add(new SetCardInfo("Leonin Elder", 10, Rarity.COMMON, mage.cards.l.LeoninElder.class)); - cards.add(new SetCardInfo("Leonin Scimitar", 193, Rarity.COMMON, mage.cards.l.LeoninScimitar.class)); - cards.add(new SetCardInfo("Leonin Skyhunter", 11, Rarity.UNCOMMON, mage.cards.l.LeoninSkyhunter.class)); - cards.add(new SetCardInfo("Leonin Sun Standard", 194, Rarity.RARE, mage.cards.l.LeoninSunStandard.class)); - cards.add(new SetCardInfo("Leveler", 195, Rarity.RARE, mage.cards.l.Leveler.class)); - cards.add(new SetCardInfo("Lifespark Spellbomb", 197, Rarity.COMMON, mage.cards.l.LifesparkSpellbomb.class)); - cards.add(new SetCardInfo("Lightning Coils", 198, Rarity.RARE, mage.cards.l.LightningCoils.class)); - cards.add(new SetCardInfo("Lightning Greaves", 199, Rarity.UNCOMMON, mage.cards.l.LightningGreaves.class)); - cards.add(new SetCardInfo("Living Hive", 124, Rarity.RARE, mage.cards.l.LivingHive.class)); - cards.add(new SetCardInfo("Lodestone Myr", 200, Rarity.RARE, mage.cards.l.LodestoneMyr.class)); - cards.add(new SetCardInfo("Looming Hoverguard", 38, Rarity.UNCOMMON, mage.cards.l.LoomingHoverguard.class)); - cards.add(new SetCardInfo("Loxodon Mender", 12, Rarity.COMMON, mage.cards.l.LoxodonMender.class)); - cards.add(new SetCardInfo("Loxodon Punisher", 14, Rarity.RARE, mage.cards.l.LoxodonPunisher.class)); - cards.add(new SetCardInfo("Loxodon Warhammer", 201, Rarity.UNCOMMON, mage.cards.l.LoxodonWarhammer.class)); - cards.add(new SetCardInfo("Lumengrid Sentinel", 40, Rarity.UNCOMMON, mage.cards.l.LumengridSentinel.class)); - cards.add(new SetCardInfo("Lumengrid Warden", 41, Rarity.COMMON, mage.cards.l.LumengridWarden.class)); - cards.add(new SetCardInfo("Luminous Angel", 15, Rarity.RARE, mage.cards.l.LuminousAngel.class)); - cards.add(new SetCardInfo("Malachite Golem", 202, Rarity.COMMON, mage.cards.m.MalachiteGolem.class)); - cards.add(new SetCardInfo("March of the Machines", 42, Rarity.RARE, mage.cards.m.MarchOfTheMachines.class)); - cards.add(new SetCardInfo("Mask of Memory", 203, Rarity.UNCOMMON, mage.cards.m.MaskOfMemory.class)); - cards.add(new SetCardInfo("Mass Hysteria", 99, Rarity.RARE, mage.cards.m.MassHysteria.class)); - cards.add(new SetCardInfo("Megatog", 100, Rarity.RARE, mage.cards.m.Megatog.class)); - cards.add(new SetCardInfo("Mesmeric Orb", 204, Rarity.RARE, mage.cards.m.MesmericOrb.class)); - cards.add(new SetCardInfo("Mind's Eye", 205, Rarity.RARE, mage.cards.m.MindsEye.class)); - cards.add(new SetCardInfo("Mindslaver", 206, Rarity.RARE, mage.cards.m.Mindslaver.class)); - cards.add(new SetCardInfo("Molder Slug", 125, Rarity.RARE, mage.cards.m.MolderSlug.class)); - cards.add(new SetCardInfo("Molten Rain", 101, Rarity.COMMON, mage.cards.m.MoltenRain.class)); - cards.add(new SetCardInfo("Moriok Scavenger", 68, Rarity.COMMON, mage.cards.m.MoriokScavenger.class)); - cards.add(new SetCardInfo("Mountain", 299, Rarity.LAND, mage.cards.basiclands.Mountain.class, new CardGraphicInfo(null, true))); - cards.add(new SetCardInfo("Mountain", 300, Rarity.LAND, mage.cards.basiclands.Mountain.class, new CardGraphicInfo(null, true))); - cards.add(new SetCardInfo("Mountain", 301, Rarity.LAND, mage.cards.basiclands.Mountain.class, new CardGraphicInfo(null, true))); - cards.add(new SetCardInfo("Mountain", 302, Rarity.LAND, mage.cards.basiclands.Mountain.class, new CardGraphicInfo(null, true))); - cards.add(new SetCardInfo("Myr Adapter", 210, Rarity.COMMON, mage.cards.m.MyrAdapter.class)); - cards.add(new SetCardInfo("Myr Enforcer", 211, Rarity.COMMON, mage.cards.m.MyrEnforcer.class)); - cards.add(new SetCardInfo("Myr Mindservant", 213, Rarity.UNCOMMON, mage.cards.m.MyrMindservant.class)); - cards.add(new SetCardInfo("Myr Retriever", 215, Rarity.UNCOMMON, mage.cards.m.MyrRetriever.class)); - cards.add(new SetCardInfo("Necrogen Mists", 69, Rarity.RARE, mage.cards.n.NecrogenMists.class)); - cards.add(new SetCardInfo("Necrogen Spellbomb", 216, Rarity.COMMON, mage.cards.n.NecrogenSpellbomb.class)); - cards.add(new SetCardInfo("Needlebug", 217, Rarity.UNCOMMON, mage.cards.n.Needlebug.class)); - cards.add(new SetCardInfo("Neurok Familiar", 43, Rarity.COMMON, mage.cards.n.NeurokFamiliar.class)); - cards.add(new SetCardInfo("Neurok Hoversail", 218, Rarity.COMMON, mage.cards.n.NeurokHoversail.class)); - cards.add(new SetCardInfo("Neurok Spy", 44, Rarity.COMMON, mage.cards.n.NeurokSpy.class)); - cards.add(new SetCardInfo("Nightmare Lash", 219, Rarity.RARE, mage.cards.n.NightmareLash.class)); - cards.add(new SetCardInfo("Nim Devourer", 70, Rarity.RARE, mage.cards.n.NimDevourer.class)); - cards.add(new SetCardInfo("Nim Lasher", 71, Rarity.COMMON, mage.cards.n.NimLasher.class)); - cards.add(new SetCardInfo("Nim Replica", 220, Rarity.COMMON, mage.cards.n.NimReplica.class)); - cards.add(new SetCardInfo("Nim Shambler", 72, Rarity.UNCOMMON, mage.cards.n.NimShambler.class)); - cards.add(new SetCardInfo("Nim Shrieker", 73, Rarity.COMMON, mage.cards.n.NimShrieker.class)); - cards.add(new SetCardInfo("Nuisance Engine", 221, Rarity.UNCOMMON, mage.cards.n.NuisanceEngine.class)); - cards.add(new SetCardInfo("Oblivion Stone", 222, Rarity.RARE, mage.cards.o.OblivionStone.class)); - cards.add(new SetCardInfo("Omega Myr", 223, Rarity.COMMON, mage.cards.o.OmegaMyr.class)); - cards.add(new SetCardInfo("One Dozen Eyes", 126, Rarity.UNCOMMON, mage.cards.o.OneDozenEyes.class)); - cards.add(new SetCardInfo("Ornithopter", 224, Rarity.UNCOMMON, mage.cards.o.Ornithopter.class)); - cards.add(new SetCardInfo("Override", 45, Rarity.COMMON, mage.cards.o.OverrideCard.class)); - cards.add(new SetCardInfo("Pearl Shard", 225, Rarity.UNCOMMON, mage.cards.p.PearlShard.class)); - cards.add(new SetCardInfo("Pentavus", 226, Rarity.RARE, mage.cards.p.Pentavus.class)); - cards.add(new SetCardInfo("Pewter Golem", 227, Rarity.COMMON, mage.cards.p.PewterGolem.class)); - cards.add(new SetCardInfo("Plains", 287, Rarity.LAND, mage.cards.basiclands.Plains.class, new CardGraphicInfo(null, true))); - cards.add(new SetCardInfo("Plains", 288, Rarity.LAND, mage.cards.basiclands.Plains.class, new CardGraphicInfo(null, true))); - cards.add(new SetCardInfo("Plains", 289, Rarity.LAND, mage.cards.basiclands.Plains.class, new CardGraphicInfo(null, true))); - cards.add(new SetCardInfo("Plains", 290, Rarity.LAND, mage.cards.basiclands.Plains.class, new CardGraphicInfo(null, true))); - cards.add(new SetCardInfo("Plated Slagwurm", 127, Rarity.RARE, mage.cards.p.PlatedSlagwurm.class)); - cards.add(new SetCardInfo("Platinum Angel", 228, Rarity.RARE, mage.cards.p.PlatinumAngel.class)); - cards.add(new SetCardInfo("Power Conduit", 229, Rarity.UNCOMMON, mage.cards.p.PowerConduit.class)); - cards.add(new SetCardInfo("Predator's Strike", 128, Rarity.COMMON, mage.cards.p.PredatorsStrike.class)); - cards.add(new SetCardInfo("Promise of Power", 74, Rarity.RARE, mage.cards.p.PromiseOfPower.class)); - cards.add(new SetCardInfo("Proteus Staff", 230, Rarity.RARE, mage.cards.p.ProteusStaff.class)); - cards.add(new SetCardInfo("Psychic Membrane", 46, Rarity.UNCOMMON, mage.cards.p.PsychicMembrane.class)); - cards.add(new SetCardInfo("Psychogenic Probe", 231, Rarity.RARE, mage.cards.p.PsychogenicProbe.class)); - cards.add(new SetCardInfo("Pyrite Spellbomb", 232, Rarity.COMMON, mage.cards.p.PyriteSpellbomb.class)); - cards.add(new SetCardInfo("Quicksilver Elemental", 47, Rarity.RARE, mage.cards.q.QuicksilverElemental.class)); - cards.add(new SetCardInfo("Raise the Alarm", 16, Rarity.COMMON, mage.cards.r.RaiseTheAlarm.class)); - cards.add(new SetCardInfo("Razor Barrier", 17, Rarity.COMMON, mage.cards.r.RazorBarrier.class)); - cards.add(new SetCardInfo("Regress", 48, Rarity.COMMON, mage.cards.r.Regress.class)); - cards.add(new SetCardInfo("Reiver Demon", 75, Rarity.RARE, mage.cards.r.ReiverDemon.class)); - cards.add(new SetCardInfo("Relic Bane", 76, Rarity.UNCOMMON, mage.cards.r.RelicBane.class)); - cards.add(new SetCardInfo("Roar of the Kha", 18, Rarity.UNCOMMON, mage.cards.r.RoarOfTheKha.class)); - cards.add(new SetCardInfo("Rule of Law", 19, Rarity.RARE, mage.cards.r.RuleOfLaw.class)); - cards.add(new SetCardInfo("Rust Elemental", 234, Rarity.UNCOMMON, mage.cards.r.RustElemental.class)); - cards.add(new SetCardInfo("Rustmouth Ogre", 103, Rarity.UNCOMMON, mage.cards.r.RustmouthOgre.class)); - cards.add(new SetCardInfo("Rustspore Ram", 235, Rarity.UNCOMMON, mage.cards.r.RustsporeRam.class)); - cards.add(new SetCardInfo("Scale of Chiss-Goria", 236, Rarity.COMMON, mage.cards.s.ScaleOfChissGoria.class)); - cards.add(new SetCardInfo("Scrabbling Claws", 237, Rarity.UNCOMMON, mage.cards.s.ScrabblingClaws.class)); - cards.add(new SetCardInfo("Sculpting Steel", 238, Rarity.RARE, mage.cards.s.SculptingSteel.class)); - cards.add(new SetCardInfo("Scythe of the Wretched", 239, Rarity.RARE, mage.cards.s.ScytheOfTheWretched.class)); - cards.add(new SetCardInfo("Seat of the Synod", 283, Rarity.COMMON, mage.cards.s.SeatOfTheSynod.class)); - cards.add(new SetCardInfo("Second Sunrise", 20, Rarity.RARE, mage.cards.s.SecondSunrise.class)); - cards.add(new SetCardInfo("Seething Song", 104, Rarity.COMMON, mage.cards.s.SeethingSong.class)); - cards.add(new SetCardInfo("Serum Tank", 240, Rarity.UNCOMMON, mage.cards.s.SerumTank.class)); - cards.add(new SetCardInfo("Shared Fate", 49, Rarity.RARE, mage.cards.s.SharedFate.class)); - cards.add(new SetCardInfo("Shatter", 105, Rarity.COMMON, mage.cards.s.Shatter.class)); - cards.add(new SetCardInfo("Shrapnel Blast", 106, Rarity.UNCOMMON, mage.cards.s.ShrapnelBlast.class)); - cards.add(new SetCardInfo("Silver Myr", 241, Rarity.COMMON, mage.cards.s.SilverMyr.class)); - cards.add(new SetCardInfo("Skeleton Shard", 242, Rarity.UNCOMMON, mage.cards.s.SkeletonShard.class)); - cards.add(new SetCardInfo("Skyhunter Cub", 21, Rarity.COMMON, mage.cards.s.SkyhunterCub.class)); - cards.add(new SetCardInfo("Skyhunter Patrol", 22, Rarity.COMMON, mage.cards.s.SkyhunterPatrol.class)); - cards.add(new SetCardInfo("Slagwurm Armor", 243, Rarity.COMMON, mage.cards.s.SlagwurmArmor.class)); - cards.add(new SetCardInfo("Slith Ascendant", 23, Rarity.UNCOMMON, mage.cards.s.SlithAscendant.class)); - cards.add(new SetCardInfo("Slith Bloodletter", 77, Rarity.UNCOMMON, mage.cards.s.SlithBloodletter.class)); - cards.add(new SetCardInfo("Slith Firewalker", 107, Rarity.UNCOMMON, mage.cards.s.SlithFirewalker.class)); - cards.add(new SetCardInfo("Slith Predator", 129, Rarity.UNCOMMON, mage.cards.s.SlithPredator.class)); - cards.add(new SetCardInfo("Slith Strider", 50, Rarity.UNCOMMON, mage.cards.s.SlithStrider.class)); - cards.add(new SetCardInfo("Solar Tide", 24, Rarity.RARE, mage.cards.s.SolarTide.class)); - cards.add(new SetCardInfo("Soldier Replica", 244, Rarity.COMMON, mage.cards.s.SoldierReplica.class)); - cards.add(new SetCardInfo("Solemn Simulacrum", 245, Rarity.RARE, mage.cards.s.SolemnSimulacrum.class)); - cards.add(new SetCardInfo("Somber Hoverguard", 51, Rarity.COMMON, mage.cards.s.SomberHoverguard.class)); - cards.add(new SetCardInfo("Soul Foundry", 246, Rarity.RARE, mage.cards.s.SoulFoundry.class)); - cards.add(new SetCardInfo("Spellweaver Helix", 247, Rarity.RARE, mage.cards.s.SpellweaverHelix.class)); - cards.add(new SetCardInfo("Spikeshot Goblin", 108, Rarity.COMMON, mage.cards.s.SpikeshotGoblin.class)); - cards.add(new SetCardInfo("Spoils of the Vault", 78, Rarity.RARE, mage.cards.s.SpoilsOfTheVault.class)); - cards.add(new SetCardInfo("Stalking Stones", 284, Rarity.UNCOMMON, mage.cards.s.StalkingStones.class)); - cards.add(new SetCardInfo("Steel Wall", 248, Rarity.COMMON, mage.cards.s.SteelWall.class)); - cards.add(new SetCardInfo("Sunbeam Spellbomb", 250, Rarity.COMMON, mage.cards.s.SunbeamSpellbomb.class)); - cards.add(new SetCardInfo("Sun Droplet", 249, Rarity.UNCOMMON, mage.cards.s.SunDroplet.class)); - cards.add(new SetCardInfo("Swamp", 295, Rarity.LAND, mage.cards.basiclands.Swamp.class, new CardGraphicInfo(null, true))); - cards.add(new SetCardInfo("Swamp", 296, Rarity.LAND, mage.cards.basiclands.Swamp.class, new CardGraphicInfo(null, true))); - cards.add(new SetCardInfo("Swamp", 297, Rarity.LAND, mage.cards.basiclands.Swamp.class, new CardGraphicInfo(null, true))); - cards.add(new SetCardInfo("Swamp", 298, Rarity.LAND, mage.cards.basiclands.Swamp.class, new CardGraphicInfo(null, true))); - cards.add(new SetCardInfo("Sword of Kaldra", 251, Rarity.RARE, mage.cards.s.SwordOfKaldra.class)); - cards.add(new SetCardInfo("Sylvan Scrying", 130, Rarity.UNCOMMON, mage.cards.s.SylvanScrying.class)); - cards.add(new SetCardInfo("Synod Sanctum", 252, Rarity.UNCOMMON, mage.cards.s.SynodSanctum.class)); - cards.add(new SetCardInfo("Taj-Nar Swordsmith", 27, Rarity.UNCOMMON, mage.cards.t.TajNarSwordsmith.class)); - cards.add(new SetCardInfo("Talisman of Dominance", 253, Rarity.UNCOMMON, mage.cards.t.TalismanOfDominance.class)); - cards.add(new SetCardInfo("Talisman of Impulse", 254, Rarity.UNCOMMON, mage.cards.t.TalismanOfImpulse.class)); - cards.add(new SetCardInfo("Talisman of Indulgence", 255, Rarity.UNCOMMON, mage.cards.t.TalismanOfIndulgence.class)); - cards.add(new SetCardInfo("Talisman of Progress", 256, Rarity.UNCOMMON, mage.cards.t.TalismanOfProgress.class)); - cards.add(new SetCardInfo("Talisman of Unity", 257, Rarity.UNCOMMON, mage.cards.t.TalismanOfUnity.class)); - cards.add(new SetCardInfo("Tanglebloom", 258, Rarity.COMMON, mage.cards.t.Tanglebloom.class)); - cards.add(new SetCardInfo("Tangleroot", 259, Rarity.RARE, mage.cards.t.Tangleroot.class)); - cards.add(new SetCardInfo("Tel-Jilad Archers", 131, Rarity.COMMON, mage.cards.t.TelJiladArchers.class)); - cards.add(new SetCardInfo("Tel-Jilad Chosen", 132, Rarity.COMMON, mage.cards.t.TelJiladChosen.class)); - cards.add(new SetCardInfo("Tel-Jilad Exile", 133, Rarity.COMMON, mage.cards.t.TelJiladExile.class)); - cards.add(new SetCardInfo("Tel-Jilad Stylus", 260, Rarity.UNCOMMON, mage.cards.t.TelJiladStylus.class)); - cards.add(new SetCardInfo("Tempest of Light", 28, Rarity.UNCOMMON, mage.cards.t.TempestOfLight.class)); - cards.add(new SetCardInfo("Temporal Cascade", 52, Rarity.RARE, mage.cards.t.TemporalCascade.class)); - cards.add(new SetCardInfo("Terror", 79, Rarity.COMMON, mage.cards.t.Terror.class)); - cards.add(new SetCardInfo("Thirst for Knowledge", 53, Rarity.UNCOMMON, mage.cards.t.ThirstForKnowledge.class)); - cards.add(new SetCardInfo("Thoughtcast", 54, Rarity.COMMON, mage.cards.t.Thoughtcast.class)); - cards.add(new SetCardInfo("Thought Prison", 261, Rarity.UNCOMMON, mage.cards.t.ThoughtPrison.class)); - cards.add(new SetCardInfo("Timesifter", 262, Rarity.RARE, mage.cards.t.Timesifter.class)); - cards.add(new SetCardInfo("Titanium Golem", 263, Rarity.COMMON, mage.cards.t.TitaniumGolem.class)); - cards.add(new SetCardInfo("Tooth and Nail", 134, Rarity.RARE, mage.cards.t.ToothAndNail.class)); - cards.add(new SetCardInfo("Tooth of Chiss-Goria", 264, Rarity.COMMON, mage.cards.t.ToothOfChissGoria.class)); - cards.add(new SetCardInfo("Tower of Champions", 265, Rarity.RARE, mage.cards.t.TowerOfChampions.class)); - cards.add(new SetCardInfo("Tower of Eons", 266, Rarity.RARE, mage.cards.t.TowerOfEons.class)); - cards.add(new SetCardInfo("Tower of Fortunes", 267, Rarity.RARE, mage.cards.t.TowerOfFortunes.class)); - cards.add(new SetCardInfo("Tower of Murmurs", 268, Rarity.RARE, mage.cards.t.TowerOfMurmurs.class)); - cards.add(new SetCardInfo("Trash for Treasure", 109, Rarity.RARE, mage.cards.t.TrashForTreasure.class)); - cards.add(new SetCardInfo("Tree of Tales", 285, Rarity.COMMON, mage.cards.t.TreeOfTales.class)); - cards.add(new SetCardInfo("Triskelion", 269, Rarity.RARE, mage.cards.t.Triskelion.class)); - cards.add(new SetCardInfo("Troll Ascetic", 135, Rarity.RARE, mage.cards.t.TrollAscetic.class)); - cards.add(new SetCardInfo("Trolls of Tel-Jilad", 136, Rarity.UNCOMMON, mage.cards.t.TrollsOfTelJilad.class)); - cards.add(new SetCardInfo("Turn to Dust", 137, Rarity.COMMON, mage.cards.t.TurnToDust.class)); - cards.add(new SetCardInfo("Vault of Whispers", 286, Rarity.COMMON, mage.cards.v.VaultOfWhispers.class)); - cards.add(new SetCardInfo("Vedalken Archmage", 55, Rarity.RARE, mage.cards.v.VedalkenArchmage.class)); - cards.add(new SetCardInfo("Vermiculos", 80, Rarity.RARE, mage.cards.v.Vermiculos.class)); - cards.add(new SetCardInfo("Viridian Joiner", 138, Rarity.COMMON, mage.cards.v.ViridianJoiner.class)); - cards.add(new SetCardInfo("Viridian Longbow", 270, Rarity.COMMON, mage.cards.v.ViridianLongbow.class)); - cards.add(new SetCardInfo("Viridian Shaman", 139, Rarity.UNCOMMON, mage.cards.v.ViridianShaman.class)); - cards.add(new SetCardInfo("Vorrac Battlehorns", 271, Rarity.COMMON, mage.cards.v.VorracBattlehorns.class)); - cards.add(new SetCardInfo("Vulshok Battlegear", 272, Rarity.UNCOMMON, mage.cards.v.VulshokBattlegear.class)); - cards.add(new SetCardInfo("Vulshok Battlemaster", 110, Rarity.RARE, mage.cards.v.VulshokBattlemaster.class)); - cards.add(new SetCardInfo("Vulshok Berserker", 111, Rarity.COMMON, mage.cards.v.VulshokBerserker.class)); - cards.add(new SetCardInfo("Vulshok Gauntlets", 273, Rarity.COMMON, mage.cards.v.VulshokGauntlets.class)); - cards.add(new SetCardInfo("Wail of the Nim", 81, Rarity.COMMON, mage.cards.w.WailOfTheNim.class)); - cards.add(new SetCardInfo("Wall of Blood", 82, Rarity.UNCOMMON, mage.cards.w.WallOfBlood.class)); - cards.add(new SetCardInfo("Wanderguard Sentry", 56, Rarity.COMMON, mage.cards.w.WanderguardSentry.class)); - cards.add(new SetCardInfo("Welding Jar", 274, Rarity.COMMON, mage.cards.w.WeldingJar.class)); - cards.add(new SetCardInfo("Wizard Replica", 275, Rarity.COMMON, mage.cards.w.WizardReplica.class)); - cards.add(new SetCardInfo("Woebearer", 83, Rarity.UNCOMMON, mage.cards.w.Woebearer.class)); - cards.add(new SetCardInfo("Worldslayer", 276, Rarity.RARE, mage.cards.w.Worldslayer.class)); - cards.add(new SetCardInfo("Wrench Mind", 84, Rarity.COMMON, mage.cards.w.WrenchMind.class)); - cards.add(new SetCardInfo("Wurmskin Forger", 140, Rarity.COMMON, mage.cards.w.WurmskinForger.class)); - cards.add(new SetCardInfo("Yotian Soldier", 277, Rarity.COMMON, mage.cards.y.YotianSoldier.class)); - } -} +package mage.sets; + +import mage.cards.ExpansionSet; +import mage.constants.SetType; + +import mage.constants.Rarity; +import mage.cards.CardGraphicInfo; + +public class Mirrodin extends ExpansionSet { + private static final Mirrodin instance = new Mirrodin(); + + public static Mirrodin getInstance() { + return instance; + } + + private Mirrodin() { + super("Mirrodin", "MRD", ExpansionSet.buildDate(2003, 9, 2), SetType.EXPANSION); + this.blockName = "Mirrodin"; + this.hasBoosters = true; + this.numBoosterLands = 0; + this.numBoosterCommon = 11; + this.numBoosterUncommon = 3; + this.numBoosterRare = 1; + this.ratioBoosterMythic = 0; + cards.add(new SetCardInfo("Aether Spellbomb", 141, Rarity.COMMON, mage.cards.a.AetherSpellbomb.class)); + cards.add(new SetCardInfo("Alpha Myr", 142, Rarity.COMMON, mage.cards.a.AlphaMyr.class)); + cards.add(new SetCardInfo("Altar of Shadows", 143, Rarity.RARE, mage.cards.a.AltarOfShadows.class)); + cards.add(new SetCardInfo("Altar's Light", 1, Rarity.UNCOMMON, mage.cards.a.AltarsLight.class)); + cards.add(new SetCardInfo("Ancient Den", 278, Rarity.COMMON, mage.cards.a.AncientDen.class)); + cards.add(new SetCardInfo("Annul", 29, Rarity.COMMON, mage.cards.a.Annul.class)); + cards.add(new SetCardInfo("Arc-Slogger", 85, Rarity.RARE, mage.cards.a.ArcSlogger.class)); + cards.add(new SetCardInfo("Arrest", 2, Rarity.COMMON, mage.cards.a.Arrest.class)); + cards.add(new SetCardInfo("Assert Authority", 30, Rarity.UNCOMMON, mage.cards.a.AssertAuthority.class)); + cards.add(new SetCardInfo("Atog", 86, Rarity.UNCOMMON, mage.cards.a.Atog.class)); + cards.add(new SetCardInfo("Auriok Bladewarden", 3, Rarity.UNCOMMON, mage.cards.a.AuriokBladewarden.class)); + cards.add(new SetCardInfo("Auriok Steelshaper", 4, Rarity.RARE, mage.cards.a.AuriokSteelshaper.class)); + cards.add(new SetCardInfo("Auriok Transfixer", 5, Rarity.COMMON, mage.cards.a.AuriokTransfixer.class)); + cards.add(new SetCardInfo("Awe Strike", 6, Rarity.COMMON, mage.cards.a.AweStrike.class)); + cards.add(new SetCardInfo("Banshee's Blade", 144, Rarity.UNCOMMON, mage.cards.b.BansheesBlade.class)); + cards.add(new SetCardInfo("Barter in Blood", 57, Rarity.UNCOMMON, mage.cards.b.BarterInBlood.class)); + cards.add(new SetCardInfo("Battlegrowth", 113, Rarity.COMMON, mage.cards.b.Battlegrowth.class)); + cards.add(new SetCardInfo("Betrayal of Flesh", 58, Rarity.UNCOMMON, mage.cards.b.BetrayalOfFlesh.class)); + cards.add(new SetCardInfo("Blinding Beam", 7, Rarity.COMMON, mage.cards.b.BlindingBeam.class)); + cards.add(new SetCardInfo("Blinkmoth Urn", 145, Rarity.RARE, mage.cards.b.BlinkmothUrn.class)); + cards.add(new SetCardInfo("Blinkmoth Well", 279, Rarity.UNCOMMON, mage.cards.b.BlinkmothWell.class)); + cards.add(new SetCardInfo("Bloodscent", 114, Rarity.UNCOMMON, mage.cards.b.Bloodscent.class)); + cards.add(new SetCardInfo("Bonesplitter", 146, Rarity.COMMON, mage.cards.b.Bonesplitter.class)); + cards.add(new SetCardInfo("Bosh, Iron Golem", 147, Rarity.RARE, mage.cards.b.BoshIronGolem.class)); + cards.add(new SetCardInfo("Bottle Gnomes", 148, Rarity.UNCOMMON, mage.cards.b.BottleGnomes.class)); + cards.add(new SetCardInfo("Broodstar", 31, Rarity.RARE, mage.cards.b.Broodstar.class)); + cards.add(new SetCardInfo("Cathodion", 149, Rarity.UNCOMMON, mage.cards.c.Cathodion.class)); + cards.add(new SetCardInfo("Chalice of the Void", 150, Rarity.RARE, mage.cards.c.ChaliceOfTheVoid.class)); + cards.add(new SetCardInfo("Chimney Imp", 59, Rarity.COMMON, mage.cards.c.ChimneyImp.class)); + cards.add(new SetCardInfo("Chromatic Sphere", 151, Rarity.COMMON, mage.cards.c.ChromaticSphere.class)); + cards.add(new SetCardInfo("Chrome Mox", 152, Rarity.RARE, mage.cards.c.ChromeMox.class)); + cards.add(new SetCardInfo("Clockwork Beetle", 153, Rarity.COMMON, mage.cards.c.ClockworkBeetle.class)); + cards.add(new SetCardInfo("Clockwork Condor", 154, Rarity.COMMON, mage.cards.c.ClockworkCondor.class)); + cards.add(new SetCardInfo("Clockwork Dragon", 155, Rarity.RARE, mage.cards.c.ClockworkDragon.class)); + cards.add(new SetCardInfo("Clockwork Vorrac", 156, Rarity.UNCOMMON, mage.cards.c.ClockworkVorrac.class)); + cards.add(new SetCardInfo("Cloudpost", 280, Rarity.COMMON, mage.cards.c.Cloudpost.class)); + cards.add(new SetCardInfo("Cobalt Golem", 157, Rarity.COMMON, mage.cards.c.CobaltGolem.class)); + cards.add(new SetCardInfo("Confusion in the Ranks", 87, Rarity.RARE, mage.cards.c.ConfusionInTheRanks.class)); + cards.add(new SetCardInfo("Consume Spirit", 60, Rarity.COMMON, mage.cards.c.ConsumeSpirit.class)); + cards.add(new SetCardInfo("Contaminated Bond", 61, Rarity.COMMON, mage.cards.c.ContaminatedBond.class)); + cards.add(new SetCardInfo("Copperhoof Vorrac", 116, Rarity.RARE, mage.cards.c.CopperhoofVorrac.class)); + cards.add(new SetCardInfo("Copper Myr", 158, Rarity.COMMON, mage.cards.c.CopperMyr.class)); + cards.add(new SetCardInfo("Creeping Mold", 117, Rarity.UNCOMMON, mage.cards.c.CreepingMold.class)); + cards.add(new SetCardInfo("Crystal Shard", 159, Rarity.UNCOMMON, mage.cards.c.CrystalShard.class)); + cards.add(new SetCardInfo("Culling Scales", 160, Rarity.RARE, mage.cards.c.CullingScales.class)); + cards.add(new SetCardInfo("Damping Matrix", 161, Rarity.RARE, mage.cards.d.DampingMatrix.class)); + cards.add(new SetCardInfo("Deconstruct", 118, Rarity.COMMON, mage.cards.d.Deconstruct.class)); + cards.add(new SetCardInfo("Detonate", 88, Rarity.UNCOMMON, mage.cards.d.Detonate.class)); + cards.add(new SetCardInfo("Disarm", 32, Rarity.COMMON, mage.cards.d.Disarm.class)); + cards.add(new SetCardInfo("Disciple of the Vault", 62, Rarity.COMMON, mage.cards.d.DiscipleOfTheVault.class)); + cards.add(new SetCardInfo("Domineer", 33, Rarity.UNCOMMON, mage.cards.d.Domineer.class)); + cards.add(new SetCardInfo("Dragon Blood", 163, Rarity.UNCOMMON, mage.cards.d.DragonBlood.class)); + cards.add(new SetCardInfo("Dream's Grip", 34, Rarity.COMMON, mage.cards.d.DreamsGrip.class)); + cards.add(new SetCardInfo("Dross Harvester", 63, Rarity.RARE, mage.cards.d.DrossHarvester.class)); + cards.add(new SetCardInfo("Dross Prowler", 64, Rarity.COMMON, mage.cards.d.DrossProwler.class)); + cards.add(new SetCardInfo("Dross Scorpion", 164, Rarity.COMMON, mage.cards.d.DrossScorpion.class)); + cards.add(new SetCardInfo("Duplicant", 165, Rarity.RARE, mage.cards.d.Duplicant.class)); + cards.add(new SetCardInfo("Duskworker", 166, Rarity.UNCOMMON, mage.cards.d.Duskworker.class)); + cards.add(new SetCardInfo("Electrostatic Bolt", 89, Rarity.COMMON, mage.cards.e.ElectrostaticBolt.class)); + cards.add(new SetCardInfo("Elf Replica", 167, Rarity.COMMON, mage.cards.e.ElfReplica.class)); + cards.add(new SetCardInfo("Empyrial Plate", 168, Rarity.RARE, mage.cards.e.EmpyrialPlate.class)); + cards.add(new SetCardInfo("Extraplanar Lens", 169, Rarity.RARE, mage.cards.e.ExtraplanarLens.class)); + cards.add(new SetCardInfo("Fabricate", 35, Rarity.UNCOMMON, mage.cards.f.Fabricate.class)); + cards.add(new SetCardInfo("Fangren Hunter", 119, Rarity.COMMON, mage.cards.f.FangrenHunter.class)); + cards.add(new SetCardInfo("Farsight Mask", 170, Rarity.UNCOMMON, mage.cards.f.FarsightMask.class)); + cards.add(new SetCardInfo("Fatespinner", 36, Rarity.RARE, mage.cards.f.Fatespinner.class)); + cards.add(new SetCardInfo("Fiery Gambit", 90, Rarity.RARE, mage.cards.f.FieryGambit.class)); + cards.add(new SetCardInfo("Fireshrieker", 171, Rarity.UNCOMMON, mage.cards.f.Fireshrieker.class)); + cards.add(new SetCardInfo("Fists of the Anvil", 91, Rarity.COMMON, mage.cards.f.FistsOfTheAnvil.class)); + cards.add(new SetCardInfo("Forest", 303, Rarity.LAND, mage.cards.basiclands.Forest.class, new CardGraphicInfo(null, true))); + cards.add(new SetCardInfo("Forest", 304, Rarity.LAND, mage.cards.basiclands.Forest.class, new CardGraphicInfo(null, true))); + cards.add(new SetCardInfo("Forest", 305, Rarity.LAND, mage.cards.basiclands.Forest.class, new CardGraphicInfo(null, true))); + cards.add(new SetCardInfo("Forest", 306, Rarity.LAND, mage.cards.basiclands.Forest.class, new CardGraphicInfo(null, true))); + cards.add(new SetCardInfo("Forge Armor", 92, Rarity.UNCOMMON, mage.cards.f.ForgeArmor.class)); + cards.add(new SetCardInfo("Frogmite", 172, Rarity.COMMON, mage.cards.f.Frogmite.class)); + cards.add(new SetCardInfo("Galvanic Key", 173, Rarity.COMMON, mage.cards.g.GalvanicKey.class)); + cards.add(new SetCardInfo("Gate to the Aether", 174, Rarity.RARE, mage.cards.g.GateToTheAether.class)); + cards.add(new SetCardInfo("Gilded Lotus", 175, Rarity.RARE, mage.cards.g.GildedLotus.class)); + cards.add(new SetCardInfo("Glimmervoid", 281, Rarity.RARE, mage.cards.g.Glimmervoid.class)); + cards.add(new SetCardInfo("Glissa Sunseeker", 120, Rarity.RARE, mage.cards.g.GlissaSunseeker.class)); + cards.add(new SetCardInfo("Goblin Charbelcher", 176, Rarity.RARE, mage.cards.g.GoblinCharbelcher.class)); + cards.add(new SetCardInfo("Goblin Dirigible", 177, Rarity.UNCOMMON, mage.cards.g.GoblinDirigible.class)); + cards.add(new SetCardInfo("Goblin Replica", 178, Rarity.COMMON, mage.cards.g.GoblinReplica.class)); + cards.add(new SetCardInfo("Goblin Striker", 94, Rarity.COMMON, mage.cards.g.GoblinStriker.class)); + cards.add(new SetCardInfo("Goblin War Wagon", 179, Rarity.COMMON, mage.cards.g.GoblinWarWagon.class)); + cards.add(new SetCardInfo("Gold Myr", 180, Rarity.COMMON, mage.cards.g.GoldMyr.class)); + cards.add(new SetCardInfo("Golem-Skin Gauntlets", 181, Rarity.UNCOMMON, mage.cards.g.GolemSkinGauntlets.class)); + cards.add(new SetCardInfo("Grab the Reins", 95, Rarity.UNCOMMON, mage.cards.g.GrabTheReins.class)); + cards.add(new SetCardInfo("Granite Shard", 182, Rarity.UNCOMMON, mage.cards.g.GraniteShard.class)); + cards.add(new SetCardInfo("Great Furnace", 282, Rarity.COMMON, mage.cards.g.GreatFurnace.class)); + cards.add(new SetCardInfo("Grid Monitor", 183, Rarity.RARE, mage.cards.g.GridMonitor.class)); + cards.add(new SetCardInfo("Groffskithur", 121, Rarity.COMMON, mage.cards.g.Groffskithur.class)); + cards.add(new SetCardInfo("Heartwood Shard", 184, Rarity.UNCOMMON, mage.cards.h.HeartwoodShard.class)); + cards.add(new SetCardInfo("Hematite Golem", 185, Rarity.COMMON, mage.cards.h.HematiteGolem.class)); + cards.add(new SetCardInfo("Hum of the Radix", 122, Rarity.RARE, mage.cards.h.HumOfTheRadix.class)); + cards.add(new SetCardInfo("Icy Manipulator", 186, Rarity.UNCOMMON, mage.cards.i.IcyManipulator.class)); + cards.add(new SetCardInfo("Incite War", 96, Rarity.COMMON, mage.cards.i.InciteWar.class)); + cards.add(new SetCardInfo("Inertia Bubble", 37, Rarity.COMMON, mage.cards.i.InertiaBubble.class)); + cards.add(new SetCardInfo("Iron Myr", 187, Rarity.COMMON, mage.cards.i.IronMyr.class)); + cards.add(new SetCardInfo("Irradiate", 67, Rarity.COMMON, mage.cards.i.Irradiate.class)); + cards.add(new SetCardInfo("Island", 291, Rarity.LAND, mage.cards.basiclands.Island.class, new CardGraphicInfo(null, true))); + cards.add(new SetCardInfo("Island", 292, Rarity.LAND, mage.cards.basiclands.Island.class, new CardGraphicInfo(null, true))); + cards.add(new SetCardInfo("Island", 293, Rarity.LAND, mage.cards.basiclands.Island.class, new CardGraphicInfo(null, true))); + cards.add(new SetCardInfo("Island", 294, Rarity.LAND, mage.cards.basiclands.Island.class, new CardGraphicInfo(null, true))); + cards.add(new SetCardInfo("Isochron Scepter", 188, Rarity.UNCOMMON, mage.cards.i.IsochronScepter.class)); + cards.add(new SetCardInfo("Jinxed Choker", 189, Rarity.RARE, mage.cards.j.JinxedChoker.class)); + cards.add(new SetCardInfo("Journey of Discovery", 123, Rarity.COMMON, mage.cards.j.JourneyOfDiscovery.class)); + cards.add(new SetCardInfo("Krark-Clan Grunt", 97, Rarity.COMMON, mage.cards.k.KrarkClanGrunt.class)); + cards.add(new SetCardInfo("Krark-Clan Shaman", 98, Rarity.COMMON, mage.cards.k.KrarkClanShaman.class)); + cards.add(new SetCardInfo("Krark's Thumb", 190, Rarity.RARE, mage.cards.k.KrarksThumb.class)); + cards.add(new SetCardInfo("Leaden Myr", 191, Rarity.COMMON, mage.cards.l.LeadenMyr.class)); + cards.add(new SetCardInfo("Leonin Abunas", 8, Rarity.RARE, mage.cards.l.LeoninAbunas.class)); + cards.add(new SetCardInfo("Leonin Bladetrap", 192, Rarity.UNCOMMON, mage.cards.l.LeoninBladetrap.class)); + cards.add(new SetCardInfo("Leonin Den-Guard", 9, Rarity.COMMON, mage.cards.l.LeoninDenGuard.class)); + cards.add(new SetCardInfo("Leonin Elder", 10, Rarity.COMMON, mage.cards.l.LeoninElder.class)); + cards.add(new SetCardInfo("Leonin Scimitar", 193, Rarity.COMMON, mage.cards.l.LeoninScimitar.class)); + cards.add(new SetCardInfo("Leonin Skyhunter", 11, Rarity.UNCOMMON, mage.cards.l.LeoninSkyhunter.class)); + cards.add(new SetCardInfo("Leonin Sun Standard", 194, Rarity.RARE, mage.cards.l.LeoninSunStandard.class)); + cards.add(new SetCardInfo("Leveler", 195, Rarity.RARE, mage.cards.l.Leveler.class)); + cards.add(new SetCardInfo("Lifespark Spellbomb", 197, Rarity.COMMON, mage.cards.l.LifesparkSpellbomb.class)); + cards.add(new SetCardInfo("Lightning Coils", 198, Rarity.RARE, mage.cards.l.LightningCoils.class)); + cards.add(new SetCardInfo("Lightning Greaves", 199, Rarity.UNCOMMON, mage.cards.l.LightningGreaves.class)); + cards.add(new SetCardInfo("Living Hive", 124, Rarity.RARE, mage.cards.l.LivingHive.class)); + cards.add(new SetCardInfo("Lodestone Myr", 200, Rarity.RARE, mage.cards.l.LodestoneMyr.class)); + cards.add(new SetCardInfo("Looming Hoverguard", 38, Rarity.UNCOMMON, mage.cards.l.LoomingHoverguard.class)); + cards.add(new SetCardInfo("Loxodon Mender", 12, Rarity.COMMON, mage.cards.l.LoxodonMender.class)); + cards.add(new SetCardInfo("Loxodon Punisher", 14, Rarity.RARE, mage.cards.l.LoxodonPunisher.class)); + cards.add(new SetCardInfo("Loxodon Warhammer", 201, Rarity.UNCOMMON, mage.cards.l.LoxodonWarhammer.class)); + cards.add(new SetCardInfo("Lumengrid Sentinel", 40, Rarity.UNCOMMON, mage.cards.l.LumengridSentinel.class)); + cards.add(new SetCardInfo("Lumengrid Warden", 41, Rarity.COMMON, mage.cards.l.LumengridWarden.class)); + cards.add(new SetCardInfo("Luminous Angel", 15, Rarity.RARE, mage.cards.l.LuminousAngel.class)); + cards.add(new SetCardInfo("Malachite Golem", 202, Rarity.COMMON, mage.cards.m.MalachiteGolem.class)); + cards.add(new SetCardInfo("March of the Machines", 42, Rarity.RARE, mage.cards.m.MarchOfTheMachines.class)); + cards.add(new SetCardInfo("Mask of Memory", 203, Rarity.UNCOMMON, mage.cards.m.MaskOfMemory.class)); + cards.add(new SetCardInfo("Mass Hysteria", 99, Rarity.RARE, mage.cards.m.MassHysteria.class)); + cards.add(new SetCardInfo("Megatog", 100, Rarity.RARE, mage.cards.m.Megatog.class)); + cards.add(new SetCardInfo("Mesmeric Orb", 204, Rarity.RARE, mage.cards.m.MesmericOrb.class)); + cards.add(new SetCardInfo("Mind's Eye", 205, Rarity.RARE, mage.cards.m.MindsEye.class)); + cards.add(new SetCardInfo("Mindslaver", 206, Rarity.RARE, mage.cards.m.Mindslaver.class)); + cards.add(new SetCardInfo("Molder Slug", 125, Rarity.RARE, mage.cards.m.MolderSlug.class)); + cards.add(new SetCardInfo("Molten Rain", 101, Rarity.COMMON, mage.cards.m.MoltenRain.class)); + cards.add(new SetCardInfo("Moriok Scavenger", 68, Rarity.COMMON, mage.cards.m.MoriokScavenger.class)); + cards.add(new SetCardInfo("Mountain", 299, Rarity.LAND, mage.cards.basiclands.Mountain.class, new CardGraphicInfo(null, true))); + cards.add(new SetCardInfo("Mountain", 300, Rarity.LAND, mage.cards.basiclands.Mountain.class, new CardGraphicInfo(null, true))); + cards.add(new SetCardInfo("Mountain", 301, Rarity.LAND, mage.cards.basiclands.Mountain.class, new CardGraphicInfo(null, true))); + cards.add(new SetCardInfo("Mountain", 302, Rarity.LAND, mage.cards.basiclands.Mountain.class, new CardGraphicInfo(null, true))); + cards.add(new SetCardInfo("Myr Adapter", 210, Rarity.COMMON, mage.cards.m.MyrAdapter.class)); + cards.add(new SetCardInfo("Myr Enforcer", 211, Rarity.COMMON, mage.cards.m.MyrEnforcer.class)); + cards.add(new SetCardInfo("Myr Mindservant", 213, Rarity.UNCOMMON, mage.cards.m.MyrMindservant.class)); + cards.add(new SetCardInfo("Myr Retriever", 215, Rarity.UNCOMMON, mage.cards.m.MyrRetriever.class)); + cards.add(new SetCardInfo("Necrogen Mists", 69, Rarity.RARE, mage.cards.n.NecrogenMists.class)); + cards.add(new SetCardInfo("Necrogen Spellbomb", 216, Rarity.COMMON, mage.cards.n.NecrogenSpellbomb.class)); + cards.add(new SetCardInfo("Needlebug", 217, Rarity.UNCOMMON, mage.cards.n.Needlebug.class)); + cards.add(new SetCardInfo("Neurok Familiar", 43, Rarity.COMMON, mage.cards.n.NeurokFamiliar.class)); + cards.add(new SetCardInfo("Neurok Hoversail", 218, Rarity.COMMON, mage.cards.n.NeurokHoversail.class)); + cards.add(new SetCardInfo("Neurok Spy", 44, Rarity.COMMON, mage.cards.n.NeurokSpy.class)); + cards.add(new SetCardInfo("Nightmare Lash", 219, Rarity.RARE, mage.cards.n.NightmareLash.class)); + cards.add(new SetCardInfo("Nim Devourer", 70, Rarity.RARE, mage.cards.n.NimDevourer.class)); + cards.add(new SetCardInfo("Nim Lasher", 71, Rarity.COMMON, mage.cards.n.NimLasher.class)); + cards.add(new SetCardInfo("Nim Replica", 220, Rarity.COMMON, mage.cards.n.NimReplica.class)); + cards.add(new SetCardInfo("Nim Shambler", 72, Rarity.UNCOMMON, mage.cards.n.NimShambler.class)); + cards.add(new SetCardInfo("Nim Shrieker", 73, Rarity.COMMON, mage.cards.n.NimShrieker.class)); + cards.add(new SetCardInfo("Nuisance Engine", 221, Rarity.UNCOMMON, mage.cards.n.NuisanceEngine.class)); + cards.add(new SetCardInfo("Oblivion Stone", 222, Rarity.RARE, mage.cards.o.OblivionStone.class)); + cards.add(new SetCardInfo("Ogre Leadfoot", 102, Rarity.COMMON, mage.cards.o.OgreLeadfoot.class)); + cards.add(new SetCardInfo("Omega Myr", 223, Rarity.COMMON, mage.cards.o.OmegaMyr.class)); + cards.add(new SetCardInfo("One Dozen Eyes", 126, Rarity.UNCOMMON, mage.cards.o.OneDozenEyes.class)); + cards.add(new SetCardInfo("Ornithopter", 224, Rarity.UNCOMMON, mage.cards.o.Ornithopter.class)); + cards.add(new SetCardInfo("Override", 45, Rarity.COMMON, mage.cards.o.OverrideCard.class)); + cards.add(new SetCardInfo("Pearl Shard", 225, Rarity.UNCOMMON, mage.cards.p.PearlShard.class)); + cards.add(new SetCardInfo("Pentavus", 226, Rarity.RARE, mage.cards.p.Pentavus.class)); + cards.add(new SetCardInfo("Pewter Golem", 227, Rarity.COMMON, mage.cards.p.PewterGolem.class)); + cards.add(new SetCardInfo("Plains", 287, Rarity.LAND, mage.cards.basiclands.Plains.class, new CardGraphicInfo(null, true))); + cards.add(new SetCardInfo("Plains", 288, Rarity.LAND, mage.cards.basiclands.Plains.class, new CardGraphicInfo(null, true))); + cards.add(new SetCardInfo("Plains", 289, Rarity.LAND, mage.cards.basiclands.Plains.class, new CardGraphicInfo(null, true))); + cards.add(new SetCardInfo("Plains", 290, Rarity.LAND, mage.cards.basiclands.Plains.class, new CardGraphicInfo(null, true))); + cards.add(new SetCardInfo("Plated Slagwurm", 127, Rarity.RARE, mage.cards.p.PlatedSlagwurm.class)); + cards.add(new SetCardInfo("Platinum Angel", 228, Rarity.RARE, mage.cards.p.PlatinumAngel.class)); + cards.add(new SetCardInfo("Power Conduit", 229, Rarity.UNCOMMON, mage.cards.p.PowerConduit.class)); + cards.add(new SetCardInfo("Predator's Strike", 128, Rarity.COMMON, mage.cards.p.PredatorsStrike.class)); + cards.add(new SetCardInfo("Promise of Power", 74, Rarity.RARE, mage.cards.p.PromiseOfPower.class)); + cards.add(new SetCardInfo("Proteus Staff", 230, Rarity.RARE, mage.cards.p.ProteusStaff.class)); + cards.add(new SetCardInfo("Psychic Membrane", 46, Rarity.UNCOMMON, mage.cards.p.PsychicMembrane.class)); + cards.add(new SetCardInfo("Psychogenic Probe", 231, Rarity.RARE, mage.cards.p.PsychogenicProbe.class)); + cards.add(new SetCardInfo("Pyrite Spellbomb", 232, Rarity.COMMON, mage.cards.p.PyriteSpellbomb.class)); + cards.add(new SetCardInfo("Quicksilver Elemental", 47, Rarity.RARE, mage.cards.q.QuicksilverElemental.class)); + cards.add(new SetCardInfo("Raise the Alarm", 16, Rarity.COMMON, mage.cards.r.RaiseTheAlarm.class)); + cards.add(new SetCardInfo("Razor Barrier", 17, Rarity.COMMON, mage.cards.r.RazorBarrier.class)); + cards.add(new SetCardInfo("Regress", 48, Rarity.COMMON, mage.cards.r.Regress.class)); + cards.add(new SetCardInfo("Reiver Demon", 75, Rarity.RARE, mage.cards.r.ReiverDemon.class)); + cards.add(new SetCardInfo("Relic Bane", 76, Rarity.UNCOMMON, mage.cards.r.RelicBane.class)); + cards.add(new SetCardInfo("Roar of the Kha", 18, Rarity.UNCOMMON, mage.cards.r.RoarOfTheKha.class)); + cards.add(new SetCardInfo("Rule of Law", 19, Rarity.RARE, mage.cards.r.RuleOfLaw.class)); + cards.add(new SetCardInfo("Rust Elemental", 234, Rarity.UNCOMMON, mage.cards.r.RustElemental.class)); + cards.add(new SetCardInfo("Rustmouth Ogre", 103, Rarity.UNCOMMON, mage.cards.r.RustmouthOgre.class)); + cards.add(new SetCardInfo("Rustspore Ram", 235, Rarity.UNCOMMON, mage.cards.r.RustsporeRam.class)); + cards.add(new SetCardInfo("Scale of Chiss-Goria", 236, Rarity.COMMON, mage.cards.s.ScaleOfChissGoria.class)); + cards.add(new SetCardInfo("Scrabbling Claws", 237, Rarity.UNCOMMON, mage.cards.s.ScrabblingClaws.class)); + cards.add(new SetCardInfo("Sculpting Steel", 238, Rarity.RARE, mage.cards.s.SculptingSteel.class)); + cards.add(new SetCardInfo("Scythe of the Wretched", 239, Rarity.RARE, mage.cards.s.ScytheOfTheWretched.class)); + cards.add(new SetCardInfo("Seat of the Synod", 283, Rarity.COMMON, mage.cards.s.SeatOfTheSynod.class)); + cards.add(new SetCardInfo("Second Sunrise", 20, Rarity.RARE, mage.cards.s.SecondSunrise.class)); + cards.add(new SetCardInfo("Seething Song", 104, Rarity.COMMON, mage.cards.s.SeethingSong.class)); + cards.add(new SetCardInfo("Serum Tank", 240, Rarity.UNCOMMON, mage.cards.s.SerumTank.class)); + cards.add(new SetCardInfo("Shared Fate", 49, Rarity.RARE, mage.cards.s.SharedFate.class)); + cards.add(new SetCardInfo("Shatter", 105, Rarity.COMMON, mage.cards.s.Shatter.class)); + cards.add(new SetCardInfo("Shrapnel Blast", 106, Rarity.UNCOMMON, mage.cards.s.ShrapnelBlast.class)); + cards.add(new SetCardInfo("Silver Myr", 241, Rarity.COMMON, mage.cards.s.SilverMyr.class)); + cards.add(new SetCardInfo("Skeleton Shard", 242, Rarity.UNCOMMON, mage.cards.s.SkeletonShard.class)); + cards.add(new SetCardInfo("Skyhunter Cub", 21, Rarity.COMMON, mage.cards.s.SkyhunterCub.class)); + cards.add(new SetCardInfo("Skyhunter Patrol", 22, Rarity.COMMON, mage.cards.s.SkyhunterPatrol.class)); + cards.add(new SetCardInfo("Slagwurm Armor", 243, Rarity.COMMON, mage.cards.s.SlagwurmArmor.class)); + cards.add(new SetCardInfo("Slith Ascendant", 23, Rarity.UNCOMMON, mage.cards.s.SlithAscendant.class)); + cards.add(new SetCardInfo("Slith Bloodletter", 77, Rarity.UNCOMMON, mage.cards.s.SlithBloodletter.class)); + cards.add(new SetCardInfo("Slith Firewalker", 107, Rarity.UNCOMMON, mage.cards.s.SlithFirewalker.class)); + cards.add(new SetCardInfo("Slith Predator", 129, Rarity.UNCOMMON, mage.cards.s.SlithPredator.class)); + cards.add(new SetCardInfo("Slith Strider", 50, Rarity.UNCOMMON, mage.cards.s.SlithStrider.class)); + cards.add(new SetCardInfo("Solar Tide", 24, Rarity.RARE, mage.cards.s.SolarTide.class)); + cards.add(new SetCardInfo("Soldier Replica", 244, Rarity.COMMON, mage.cards.s.SoldierReplica.class)); + cards.add(new SetCardInfo("Solemn Simulacrum", 245, Rarity.RARE, mage.cards.s.SolemnSimulacrum.class)); + cards.add(new SetCardInfo("Somber Hoverguard", 51, Rarity.COMMON, mage.cards.s.SomberHoverguard.class)); + cards.add(new SetCardInfo("Soul Foundry", 246, Rarity.RARE, mage.cards.s.SoulFoundry.class)); + cards.add(new SetCardInfo("Spellweaver Helix", 247, Rarity.RARE, mage.cards.s.SpellweaverHelix.class)); + cards.add(new SetCardInfo("Spikeshot Goblin", 108, Rarity.COMMON, mage.cards.s.SpikeshotGoblin.class)); + cards.add(new SetCardInfo("Spoils of the Vault", 78, Rarity.RARE, mage.cards.s.SpoilsOfTheVault.class)); + cards.add(new SetCardInfo("Stalking Stones", 284, Rarity.UNCOMMON, mage.cards.s.StalkingStones.class)); + cards.add(new SetCardInfo("Steel Wall", 248, Rarity.COMMON, mage.cards.s.SteelWall.class)); + cards.add(new SetCardInfo("Sunbeam Spellbomb", 250, Rarity.COMMON, mage.cards.s.SunbeamSpellbomb.class)); + cards.add(new SetCardInfo("Sun Droplet", 249, Rarity.UNCOMMON, mage.cards.s.SunDroplet.class)); + cards.add(new SetCardInfo("Swamp", 295, Rarity.LAND, mage.cards.basiclands.Swamp.class, new CardGraphicInfo(null, true))); + cards.add(new SetCardInfo("Swamp", 296, Rarity.LAND, mage.cards.basiclands.Swamp.class, new CardGraphicInfo(null, true))); + cards.add(new SetCardInfo("Swamp", 297, Rarity.LAND, mage.cards.basiclands.Swamp.class, new CardGraphicInfo(null, true))); + cards.add(new SetCardInfo("Swamp", 298, Rarity.LAND, mage.cards.basiclands.Swamp.class, new CardGraphicInfo(null, true))); + cards.add(new SetCardInfo("Sword of Kaldra", 251, Rarity.RARE, mage.cards.s.SwordOfKaldra.class)); + cards.add(new SetCardInfo("Sylvan Scrying", 130, Rarity.UNCOMMON, mage.cards.s.SylvanScrying.class)); + cards.add(new SetCardInfo("Synod Sanctum", 252, Rarity.UNCOMMON, mage.cards.s.SynodSanctum.class)); + cards.add(new SetCardInfo("Taj-Nar Swordsmith", 27, Rarity.UNCOMMON, mage.cards.t.TajNarSwordsmith.class)); + cards.add(new SetCardInfo("Talisman of Dominance", 253, Rarity.UNCOMMON, mage.cards.t.TalismanOfDominance.class)); + cards.add(new SetCardInfo("Talisman of Impulse", 254, Rarity.UNCOMMON, mage.cards.t.TalismanOfImpulse.class)); + cards.add(new SetCardInfo("Talisman of Indulgence", 255, Rarity.UNCOMMON, mage.cards.t.TalismanOfIndulgence.class)); + cards.add(new SetCardInfo("Talisman of Progress", 256, Rarity.UNCOMMON, mage.cards.t.TalismanOfProgress.class)); + cards.add(new SetCardInfo("Talisman of Unity", 257, Rarity.UNCOMMON, mage.cards.t.TalismanOfUnity.class)); + cards.add(new SetCardInfo("Tanglebloom", 258, Rarity.COMMON, mage.cards.t.Tanglebloom.class)); + cards.add(new SetCardInfo("Tangleroot", 259, Rarity.RARE, mage.cards.t.Tangleroot.class)); + cards.add(new SetCardInfo("Tel-Jilad Archers", 131, Rarity.COMMON, mage.cards.t.TelJiladArchers.class)); + cards.add(new SetCardInfo("Tel-Jilad Chosen", 132, Rarity.COMMON, mage.cards.t.TelJiladChosen.class)); + cards.add(new SetCardInfo("Tel-Jilad Exile", 133, Rarity.COMMON, mage.cards.t.TelJiladExile.class)); + cards.add(new SetCardInfo("Tel-Jilad Stylus", 260, Rarity.UNCOMMON, mage.cards.t.TelJiladStylus.class)); + cards.add(new SetCardInfo("Tempest of Light", 28, Rarity.UNCOMMON, mage.cards.t.TempestOfLight.class)); + cards.add(new SetCardInfo("Temporal Cascade", 52, Rarity.RARE, mage.cards.t.TemporalCascade.class)); + cards.add(new SetCardInfo("Terror", 79, Rarity.COMMON, mage.cards.t.Terror.class)); + cards.add(new SetCardInfo("Thirst for Knowledge", 53, Rarity.UNCOMMON, mage.cards.t.ThirstForKnowledge.class)); + cards.add(new SetCardInfo("Thoughtcast", 54, Rarity.COMMON, mage.cards.t.Thoughtcast.class)); + cards.add(new SetCardInfo("Thought Prison", 261, Rarity.UNCOMMON, mage.cards.t.ThoughtPrison.class)); + cards.add(new SetCardInfo("Timesifter", 262, Rarity.RARE, mage.cards.t.Timesifter.class)); + cards.add(new SetCardInfo("Titanium Golem", 263, Rarity.COMMON, mage.cards.t.TitaniumGolem.class)); + cards.add(new SetCardInfo("Tooth and Nail", 134, Rarity.RARE, mage.cards.t.ToothAndNail.class)); + cards.add(new SetCardInfo("Tooth of Chiss-Goria", 264, Rarity.COMMON, mage.cards.t.ToothOfChissGoria.class)); + cards.add(new SetCardInfo("Tower of Champions", 265, Rarity.RARE, mage.cards.t.TowerOfChampions.class)); + cards.add(new SetCardInfo("Tower of Eons", 266, Rarity.RARE, mage.cards.t.TowerOfEons.class)); + cards.add(new SetCardInfo("Tower of Fortunes", 267, Rarity.RARE, mage.cards.t.TowerOfFortunes.class)); + cards.add(new SetCardInfo("Tower of Murmurs", 268, Rarity.RARE, mage.cards.t.TowerOfMurmurs.class)); + cards.add(new SetCardInfo("Trash for Treasure", 109, Rarity.RARE, mage.cards.t.TrashForTreasure.class)); + cards.add(new SetCardInfo("Tree of Tales", 285, Rarity.COMMON, mage.cards.t.TreeOfTales.class)); + cards.add(new SetCardInfo("Triskelion", 269, Rarity.RARE, mage.cards.t.Triskelion.class)); + cards.add(new SetCardInfo("Troll Ascetic", 135, Rarity.RARE, mage.cards.t.TrollAscetic.class)); + cards.add(new SetCardInfo("Trolls of Tel-Jilad", 136, Rarity.UNCOMMON, mage.cards.t.TrollsOfTelJilad.class)); + cards.add(new SetCardInfo("Turn to Dust", 137, Rarity.COMMON, mage.cards.t.TurnToDust.class)); + cards.add(new SetCardInfo("Vault of Whispers", 286, Rarity.COMMON, mage.cards.v.VaultOfWhispers.class)); + cards.add(new SetCardInfo("Vedalken Archmage", 55, Rarity.RARE, mage.cards.v.VedalkenArchmage.class)); + cards.add(new SetCardInfo("Vermiculos", 80, Rarity.RARE, mage.cards.v.Vermiculos.class)); + cards.add(new SetCardInfo("Viridian Joiner", 138, Rarity.COMMON, mage.cards.v.ViridianJoiner.class)); + cards.add(new SetCardInfo("Viridian Longbow", 270, Rarity.COMMON, mage.cards.v.ViridianLongbow.class)); + cards.add(new SetCardInfo("Viridian Shaman", 139, Rarity.UNCOMMON, mage.cards.v.ViridianShaman.class)); + cards.add(new SetCardInfo("Vorrac Battlehorns", 271, Rarity.COMMON, mage.cards.v.VorracBattlehorns.class)); + cards.add(new SetCardInfo("Vulshok Battlegear", 272, Rarity.UNCOMMON, mage.cards.v.VulshokBattlegear.class)); + cards.add(new SetCardInfo("Vulshok Battlemaster", 110, Rarity.RARE, mage.cards.v.VulshokBattlemaster.class)); + cards.add(new SetCardInfo("Vulshok Berserker", 111, Rarity.COMMON, mage.cards.v.VulshokBerserker.class)); + cards.add(new SetCardInfo("Vulshok Gauntlets", 273, Rarity.COMMON, mage.cards.v.VulshokGauntlets.class)); + cards.add(new SetCardInfo("Wail of the Nim", 81, Rarity.COMMON, mage.cards.w.WailOfTheNim.class)); + cards.add(new SetCardInfo("Wall of Blood", 82, Rarity.UNCOMMON, mage.cards.w.WallOfBlood.class)); + cards.add(new SetCardInfo("Wanderguard Sentry", 56, Rarity.COMMON, mage.cards.w.WanderguardSentry.class)); + cards.add(new SetCardInfo("Welding Jar", 274, Rarity.COMMON, mage.cards.w.WeldingJar.class)); + cards.add(new SetCardInfo("Wizard Replica", 275, Rarity.COMMON, mage.cards.w.WizardReplica.class)); + cards.add(new SetCardInfo("Woebearer", 83, Rarity.UNCOMMON, mage.cards.w.Woebearer.class)); + cards.add(new SetCardInfo("Worldslayer", 276, Rarity.RARE, mage.cards.w.Worldslayer.class)); + cards.add(new SetCardInfo("Wrench Mind", 84, Rarity.COMMON, mage.cards.w.WrenchMind.class)); + cards.add(new SetCardInfo("Wurmskin Forger", 140, Rarity.COMMON, mage.cards.w.WurmskinForger.class)); + cards.add(new SetCardInfo("Yotian Soldier", 277, Rarity.COMMON, mage.cards.y.YotianSoldier.class)); + } +} diff --git a/Mage/src/main/java/mage/abilities/common/BecomesBlockedByCreatureTriggeredAbility.java b/Mage/src/main/java/mage/abilities/common/BecomesBlockedByCreatureTriggeredAbility.java index ee2b42f7d0..8fbb14821a 100644 --- a/Mage/src/main/java/mage/abilities/common/BecomesBlockedByCreatureTriggeredAbility.java +++ b/Mage/src/main/java/mage/abilities/common/BecomesBlockedByCreatureTriggeredAbility.java @@ -79,7 +79,9 @@ public class BecomesBlockedByCreatureTriggeredAbility extends TriggeredAbilityIm @Override public String getRule() { - return "Whenever {this} becomes blocked by a " + filter.getMessage() + ", " + super.getRule(); + return "Whenever {this} becomes blocked by " + + (filter.getMessage().startsWith("an ") ? "" : "a ") + + filter.getMessage() + ", " + super.getRule(); } @Override From 107b83c231832ae815ef1146f0883579e18887d7 Mon Sep 17 00:00:00 2001 From: drmDev Date: Tue, 21 Mar 2017 19:57:21 -0400 Subject: [PATCH 13/16] fixes tapped and attacking cards. reverted firecat blitz. created issue for that one --- Mage.Sets/src/mage/cards/f/FirecatBlitz.java | 16 ++++++++++++++-- .../src/mage/cards/g/GeistOfSaintTraft.java | 2 +- .../src/mage/cards/i/InvocationOfSaintTraft.java | 2 +- .../src/mage/cards/k/KariZevSkyshipRaider.java | 2 +- 4 files changed, 17 insertions(+), 5 deletions(-) diff --git a/Mage.Sets/src/mage/cards/f/FirecatBlitz.java b/Mage.Sets/src/mage/cards/f/FirecatBlitz.java index 708b71d5c1..a9be479a0c 100644 --- a/Mage.Sets/src/mage/cards/f/FirecatBlitz.java +++ b/Mage.Sets/src/mage/cards/f/FirecatBlitz.java @@ -30,12 +30,14 @@ package mage.cards.f; import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; +import mage.abilities.common.delayed.AtTheBeginOfNextEndStepDelayedTriggeredAbility; import mage.abilities.costs.Cost; import mage.abilities.costs.common.SacrificeTargetCost; import mage.abilities.costs.common.SacrificeXTargetCost; import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.CreateTokenEffect; +import mage.abilities.effects.common.ExileTargetEffect; import mage.abilities.keyword.FlashbackAbility; import mage.abilities.keyword.HasteAbility; import mage.cards.CardImpl; @@ -43,11 +45,14 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Outcome; import mage.constants.TimingRule; +import mage.constants.Zone; import mage.filter.common.FilterControlledLandPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; +import mage.game.permanent.Permanent; import mage.game.permanent.token.Token; import mage.players.Player; +import mage.target.targetpointer.FixedTarget; /** * @@ -111,7 +116,14 @@ class FirecatBlitzEffect extends OneShotEffect { } CreateTokenEffect effect = new CreateTokenEffect(new ElementalCatToken(), xValue); effect.apply(game, source); - effect.exileTokensCreatedAtNextEndStep(game, source); + for (UUID tokenId : effect.getLastAddedTokenIds()) { + Permanent tokenPermanent = game.getPermanent(tokenId); + if (tokenPermanent != null) { + ExileTargetEffect exileEffect = new ExileTargetEffect(null, "", Zone.BATTLEFIELD); + exileEffect.setTargetPointer(new FixedTarget(tokenPermanent, game)); + game.addDelayedTriggeredAbility(new AtTheBeginOfNextEndStepDelayedTriggeredAbility(exileEffect), source); + } + } return true; } @@ -131,4 +143,4 @@ class ElementalCatToken extends Token { power = new MageInt(1); toughness = new MageInt(1); } -} +} \ No newline at end of file diff --git a/Mage.Sets/src/mage/cards/g/GeistOfSaintTraft.java b/Mage.Sets/src/mage/cards/g/GeistOfSaintTraft.java index deb7333d84..956bea71f3 100644 --- a/Mage.Sets/src/mage/cards/g/GeistOfSaintTraft.java +++ b/Mage.Sets/src/mage/cards/g/GeistOfSaintTraft.java @@ -85,7 +85,7 @@ class GeistOfSaintTraftEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - CreateTokenEffect effect = new CreateTokenEffect(new AngelToken()); + CreateTokenEffect effect = new CreateTokenEffect(new AngelToken(), 1, true, true); Player controller = game.getPlayer(source.getControllerId()); if (controller != null && effect.apply(game, source)) { diff --git a/Mage.Sets/src/mage/cards/i/InvocationOfSaintTraft.java b/Mage.Sets/src/mage/cards/i/InvocationOfSaintTraft.java index 0980fbb172..e0c45d5e6e 100644 --- a/Mage.Sets/src/mage/cards/i/InvocationOfSaintTraft.java +++ b/Mage.Sets/src/mage/cards/i/InvocationOfSaintTraft.java @@ -94,7 +94,7 @@ class InvocationOfSaintTraftEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - CreateTokenEffect effect = new CreateTokenEffect(new AngelToken()); + CreateTokenEffect effect = new CreateTokenEffect(new AngelToken(), 1, true, true); Player controller = game.getPlayer(source.getControllerId()); if (controller != null && (effect.apply(game, source))) { effect.exileTokensCreatedAtNextEndStep(game, source); diff --git a/Mage.Sets/src/mage/cards/k/KariZevSkyshipRaider.java b/Mage.Sets/src/mage/cards/k/KariZevSkyshipRaider.java index 5117712f4b..9883c36222 100644 --- a/Mage.Sets/src/mage/cards/k/KariZevSkyshipRaider.java +++ b/Mage.Sets/src/mage/cards/k/KariZevSkyshipRaider.java @@ -91,7 +91,7 @@ class KariZevSkyshipRaiderEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - CreateTokenEffect effect = new CreateTokenEffect(new RagavanToken()); + CreateTokenEffect effect = new CreateTokenEffect(new RagavanToken(), 1, true, true); Player controller = game.getPlayer(source.getControllerId()); if (controller != null && effect.apply(game, source)) { effect.exileTokensCreatedAtNextEndStep(game, source); From cdef5fb13bc0c2cc25673518d47c1fc882b014dd Mon Sep 17 00:00:00 2001 From: Achilles Date: Tue, 21 Mar 2017 20:40:10 -0500 Subject: [PATCH 14/16] - Added Keldon Firebombers --- .../src/mage/cards/k/KeldonFirebombers.java | 122 ++++++++++++++++++ 1 file changed, 122 insertions(+) create mode 100644 Mage.Sets/src/mage/cards/k/KeldonFirebombers.java diff --git a/Mage.Sets/src/mage/cards/k/KeldonFirebombers.java b/Mage.Sets/src/mage/cards/k/KeldonFirebombers.java new file mode 100644 index 0000000000..d05001205a --- /dev/null +++ b/Mage.Sets/src/mage/cards/k/KeldonFirebombers.java @@ -0,0 +1,122 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package mage.cards.k; + +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.common.EntersBattlefieldTriggeredAbility; +import mage.abilities.effects.OneShotEffect; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.Outcome; +import mage.filter.common.FilterLandPermanent; +import mage.filter.predicate.permanent.ControllerIdPredicate; +import mage.game.Game; +import mage.game.permanent.Permanent; +import mage.players.Player; +import mage.target.Target; +import mage.target.common.TargetLandPermanent; + +/** + * + * @author jeffwadsworth + */ +public class KeldonFirebombers extends CardImpl { + + public KeldonFirebombers(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}{R}"); + + this.subtype.add("Human"); + this.subtype.add("Soldier"); + this.power = new MageInt(3); + this.toughness = new MageInt(3); + + // When Keldon Firebombers enters the battlefield, each player sacrifices all lands he or she controls except for three. + this.addAbility(new EntersBattlefieldTriggeredAbility(new KeldonFirebombersEffect())); + + } + + public KeldonFirebombers(final KeldonFirebombers card) { + super(card); + } + + @Override + public KeldonFirebombers copy() { + return new KeldonFirebombers(this); + } +} + +class KeldonFirebombersEffect extends OneShotEffect { + + private static final FilterLandPermanent filter = new FilterLandPermanent(); + + public KeldonFirebombersEffect() { + super(Outcome.AIDontUseIt); + this.staticText = "each player sacrifices all lands he or she controls except for three"; + } + + public KeldonFirebombersEffect(final KeldonFirebombersEffect effect) { + super(effect); + } + + @Override + public KeldonFirebombersEffect copy() { + return new KeldonFirebombersEffect(this); + } + + @Override + public boolean apply(Game game, Ability source) { + List landsToSacrifice = new ArrayList<>(); + for (UUID playerId : game.getState().getPlayersInRange(source.getControllerId(), game)) { + Player player = game.getPlayer(playerId); + if (player != null) { + int amount = game.getBattlefield().getAllActivePermanents(filter, playerId, game).size() - 3; + if (amount > 0) { + FilterLandPermanent playerFilter = filter.copy(); + playerFilter.add(new ControllerIdPredicate(playerId)); + Target target = new TargetLandPermanent(amount, amount, playerFilter, true); + player.choose(outcome.Sacrifice, target, source.getSourceId(), game); + for (UUID landId : target.getTargets()) { + Permanent land = game.getPermanent(landId); + if (land != null) { + landsToSacrifice.add(land); + } + } + } + } + } + for (Permanent land : landsToSacrifice) { + land.sacrifice(source.getSourceId(), game); + } + return true; + } +} From 1fc245eb104f30e31afc991957a4736f134607f8 Mon Sep 17 00:00:00 2001 From: Achilles Date: Tue, 21 Mar 2017 20:44:04 -0500 Subject: [PATCH 15/16] - Set edit needed for Keldon Firebombers --- Mage.Sets/src/mage/sets/Prophecy.java | 1 + 1 file changed, 1 insertion(+) diff --git a/Mage.Sets/src/mage/sets/Prophecy.java b/Mage.Sets/src/mage/sets/Prophecy.java index 4d588bfdc1..218de36e7d 100644 --- a/Mage.Sets/src/mage/sets/Prophecy.java +++ b/Mage.Sets/src/mage/sets/Prophecy.java @@ -94,6 +94,7 @@ public class Prophecy extends ExpansionSet { cards.add(new SetCardInfo("Jolrael, Empress of Beasts", 115, Rarity.RARE, mage.cards.j.JolraelEmpressOfBeasts.class)); cards.add(new SetCardInfo("Jolrael's Favor", 116, Rarity.COMMON, mage.cards.j.JolraelsFavor.class)); cards.add(new SetCardInfo("Keldon Arsonist", 92, Rarity.UNCOMMON, mage.cards.k.KeldonArsonist.class)); + cards.add(new SetCardInfo("Keldon Firebombers", 94, Rarity.RARE, mage.cards.k.KeldonFirebombers.class)); cards.add(new SetCardInfo("Latulla, Keldon Overseer", 95, Rarity.RARE, mage.cards.l.LatullaKeldonOverseer.class)); cards.add(new SetCardInfo("Lesser Gargadon", 97, Rarity.UNCOMMON, mage.cards.l.LesserGargadon.class)); cards.add(new SetCardInfo("Living Terrain", 117, Rarity.UNCOMMON, mage.cards.l.LivingTerrain.class)); From 1f9b51d83395f1bbb40669aade92235b9d13d152 Mon Sep 17 00:00:00 2001 From: Achilles Date: Tue, 21 Mar 2017 21:37:11 -0500 Subject: [PATCH 16/16] - Added Noetic Scales --- Mage.Sets/src/mage/cards/n/NoeticScales.java | 101 +++ Mage.Sets/src/mage/sets/UrzasSaga.java | 727 ++++++++++--------- 2 files changed, 465 insertions(+), 363 deletions(-) create mode 100644 Mage.Sets/src/mage/cards/n/NoeticScales.java diff --git a/Mage.Sets/src/mage/cards/n/NoeticScales.java b/Mage.Sets/src/mage/cards/n/NoeticScales.java new file mode 100644 index 0000000000..eece749d0a --- /dev/null +++ b/Mage.Sets/src/mage/cards/n/NoeticScales.java @@ -0,0 +1,101 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package mage.cards.n; + +import java.util.UUID; +import mage.abilities.Ability; +import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; +import mage.abilities.effects.OneShotEffect; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.Outcome; +import mage.constants.TargetController; +import mage.constants.Zone; +import mage.filter.common.FilterCreaturePermanent; +import mage.game.Game; +import mage.game.permanent.Permanent; +import mage.players.Player; + +/** + * + * @author jeffwadsworth + */ +public class NoeticScales extends CardImpl { + + public NoeticScales(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}"); + + // At the beginning of each player's upkeep, return to its owner's hand each creature that player controls with power greater than the number of cards in his or her hand. + this.addAbility(new BeginningOfUpkeepTriggeredAbility(Zone.BATTLEFIELD, new NoeticScalesEffect(), TargetController.ANY, false, true)); + } + + public NoeticScales(final NoeticScales card) { + super(card); + } + + @Override + public NoeticScales copy() { + return new NoeticScales(this); + } +} + +class NoeticScalesEffect extends OneShotEffect { + + public NoeticScalesEffect() { + super(Outcome.ReturnToHand); + this.staticText = "return to its owner's hand each creature that player controls with power greater than the number of cards in his or her hand"; + } + + public NoeticScalesEffect(final NoeticScalesEffect effect) { + super(effect); + } + + @Override + public NoeticScalesEffect copy() { + return new NoeticScalesEffect(this); + } + + @Override + public boolean apply(Game game, Ability source) { + FilterCreaturePermanent filter = new FilterCreaturePermanent(); + Player player = game.getPlayer(targetPointer.getFirst(game, source)); + if (player != null) { + int numberOfCardsInHand = player.getHand().size(); + for (Permanent creature : game.getBattlefield().getAllActivePermanents(filter, player.getId(), game)) { + if (creature.getPower().getValue() > numberOfCardsInHand) { + if (creature.moveToZone(Zone.HAND, source.getId(), game, false)) { + game.informPlayers(player.getLogName() + " moves " + creature.getLogName() + " from the battlefield to their hand."); + } + } + } + return true; + } + return false; + } +} diff --git a/Mage.Sets/src/mage/sets/UrzasSaga.java b/Mage.Sets/src/mage/sets/UrzasSaga.java index 79e51e8da1..599c5db7eb 100644 --- a/Mage.Sets/src/mage/sets/UrzasSaga.java +++ b/Mage.Sets/src/mage/sets/UrzasSaga.java @@ -1,363 +1,364 @@ -/* -* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. -* -* Redistribution and use in source and binary forms, with or without modification, are -* permitted provided that the following conditions are met: -* -* 1. Redistributions of source code must retain the above copyright notice, this list of -* conditions and the following disclaimer. -* -* 2. Redistributions in binary form must reproduce the above copyright notice, this list -* of conditions and the following disclaimer in the documentation and/or other materials -* provided with the distribution. -* -* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED -* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND -* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR -* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF -* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -* -* The views and conclusions contained in the software and documentation are those of the -* authors and should not be interpreted as representing official policies, either expressed -* or implied, of BetaSteward_at_googlemail.com. - */ -package mage.sets; - -import mage.cards.CardGraphicInfo; -import mage.cards.ExpansionSet; -import mage.constants.Rarity; -import mage.constants.SetType; - -/** - * - * @author Backfir3 - */ -public class UrzasSaga extends ExpansionSet { - - private static final UrzasSaga instance = new UrzasSaga(); - - public static UrzasSaga getInstance() { - return instance; - } - - private UrzasSaga() { - super("Urza's Saga", "USG", ExpansionSet.buildDate(1998, 10, 12), SetType.EXPANSION); - this.blockName = "Urza"; - this.hasBoosters = true; - this.numBoosterLands = 0; - this.numBoosterCommon = 11; - this.numBoosterUncommon = 3; - this.numBoosterRare = 1; - this.ratioBoosterMythic = 0; - cards.add(new SetCardInfo("Absolute Grace", 1, Rarity.UNCOMMON, mage.cards.a.AbsoluteGrace.class)); - cards.add(new SetCardInfo("Absolute Law", 2, Rarity.UNCOMMON, mage.cards.a.AbsoluteLaw.class)); - cards.add(new SetCardInfo("Abundance", 229, Rarity.RARE, mage.cards.a.Abundance.class)); - cards.add(new SetCardInfo("Abyssal Horror", 115, Rarity.RARE, mage.cards.a.AbyssalHorror.class)); - cards.add(new SetCardInfo("Academy Researchers", 58, Rarity.UNCOMMON, mage.cards.a.AcademyResearchers.class)); - cards.add(new SetCardInfo("Acidic Soil", 172, Rarity.UNCOMMON, mage.cards.a.AcidicSoil.class)); - cards.add(new SetCardInfo("Acridian", 230, Rarity.COMMON, mage.cards.a.Acridian.class)); - cards.add(new SetCardInfo("Albino Troll", 231, Rarity.UNCOMMON, mage.cards.a.AlbinoTroll.class)); - cards.add(new SetCardInfo("Anaconda", 232, Rarity.UNCOMMON, mage.cards.a.Anaconda.class)); - cards.add(new SetCardInfo("Angelic Chorus", 3, Rarity.RARE, mage.cards.a.AngelicChorus.class)); - cards.add(new SetCardInfo("Angelic Page", 4, Rarity.COMMON, mage.cards.a.AngelicPage.class)); - cards.add(new SetCardInfo("Annul", 59, Rarity.COMMON, mage.cards.a.Annul.class)); - cards.add(new SetCardInfo("Arcane Laboratory", 60, Rarity.UNCOMMON, mage.cards.a.ArcaneLaboratory.class)); - cards.add(new SetCardInfo("Arc Lightning", 174, Rarity.COMMON, mage.cards.a.ArcLightning.class)); - cards.add(new SetCardInfo("Argothian Elder", 233, Rarity.UNCOMMON, mage.cards.a.ArgothianElder.class)); - cards.add(new SetCardInfo("Argothian Enchantress", 234, Rarity.RARE, mage.cards.a.ArgothianEnchantress.class)); - cards.add(new SetCardInfo("Argothian Swine", 235, Rarity.COMMON, mage.cards.a.ArgothianSwine.class)); - cards.add(new SetCardInfo("Argothian Wurm", 236, Rarity.RARE, mage.cards.a.ArgothianWurm.class)); - cards.add(new SetCardInfo("Attunement", 61, Rarity.RARE, mage.cards.a.Attunement.class)); - cards.add(new SetCardInfo("Back to Basics", 62, Rarity.RARE, mage.cards.b.BackToBasics.class)); - cards.add(new SetCardInfo("Barrin, Master Wizard", 63, Rarity.RARE, mage.cards.b.BarrinMasterWizard.class)); - cards.add(new SetCardInfo("Barrin's Codex", 286, Rarity.RARE, mage.cards.b.BarrinsCodex.class)); - cards.add(new SetCardInfo("Bedlam", 175, Rarity.RARE, mage.cards.b.Bedlam.class)); - cards.add(new SetCardInfo("Befoul", 116, Rarity.COMMON, mage.cards.b.Befoul.class)); - cards.add(new SetCardInfo("Bereavement", 117, Rarity.UNCOMMON, mage.cards.b.Bereavement.class)); - cards.add(new SetCardInfo("Blanchwood Armor", 237, Rarity.UNCOMMON, mage.cards.b.BlanchwoodArmor.class)); - cards.add(new SetCardInfo("Blanchwood Treefolk", 238, Rarity.COMMON, mage.cards.b.BlanchwoodTreefolk.class)); - cards.add(new SetCardInfo("Blasted Landscape", 319, Rarity.UNCOMMON, mage.cards.b.BlastedLandscape.class)); - cards.add(new SetCardInfo("Blood Vassal", 118, Rarity.COMMON, mage.cards.b.BloodVassal.class)); - cards.add(new SetCardInfo("Bog Raiders", 119, Rarity.COMMON, mage.cards.b.BogRaiders.class)); - cards.add(new SetCardInfo("Brand", 176, Rarity.RARE, mage.cards.b.Brand.class)); - cards.add(new SetCardInfo("Bravado", 177, Rarity.COMMON, mage.cards.b.Bravado.class)); - cards.add(new SetCardInfo("Breach", 120, Rarity.COMMON, mage.cards.b.Breach.class)); - cards.add(new SetCardInfo("Brilliant Halo", 5, Rarity.COMMON, mage.cards.b.BrilliantHalo.class)); - cards.add(new SetCardInfo("Bull Hippo", 239, Rarity.UNCOMMON, mage.cards.b.BullHippo.class)); - cards.add(new SetCardInfo("Bulwark", 178, Rarity.RARE, mage.cards.b.Bulwark.class)); - cards.add(new SetCardInfo("Cackling Fiend", 121, Rarity.COMMON, mage.cards.c.CacklingFiend.class)); - cards.add(new SetCardInfo("Carpet of Flowers", 240, Rarity.UNCOMMON, mage.cards.c.CarpetOfFlowers.class)); - cards.add(new SetCardInfo("Carrion Beetles", 122, Rarity.COMMON, mage.cards.c.CarrionBeetles.class)); - cards.add(new SetCardInfo("Catalog", 64, Rarity.COMMON, mage.cards.c.Catalog.class)); - cards.add(new SetCardInfo("Catastrophe", 6, Rarity.RARE, mage.cards.c.Catastrophe.class)); - cards.add(new SetCardInfo("Cathodion", 287, Rarity.UNCOMMON, mage.cards.c.Cathodion.class)); - cards.add(new SetCardInfo("Cave Tiger", 241, Rarity.COMMON, mage.cards.c.CaveTiger.class)); - cards.add(new SetCardInfo("Child of Gaea", 242, Rarity.RARE, mage.cards.c.ChildOfGaea.class)); - cards.add(new SetCardInfo("Chimeric Staff", 288, Rarity.RARE, mage.cards.c.ChimericStaff.class)); - cards.add(new SetCardInfo("Citanul Centaurs", 243, Rarity.RARE, mage.cards.c.CitanulCentaurs.class)); - cards.add(new SetCardInfo("Citanul Flute", 289, Rarity.RARE, mage.cards.c.CitanulFlute.class)); - cards.add(new SetCardInfo("Citanul Hierophants", 244, Rarity.RARE, mage.cards.c.CitanulHierophants.class)); - cards.add(new SetCardInfo("Claws of Gix", 290, Rarity.UNCOMMON, mage.cards.c.ClawsOfGix.class)); - cards.add(new SetCardInfo("Clear", 7, Rarity.UNCOMMON, mage.cards.c.Clear.class)); - cards.add(new SetCardInfo("Cloak of Mists", 65, Rarity.COMMON, mage.cards.c.CloakOfMists.class)); - cards.add(new SetCardInfo("Confiscate", 66, Rarity.UNCOMMON, mage.cards.c.Confiscate.class)); - cards.add(new SetCardInfo("Congregate", 8, Rarity.COMMON, mage.cards.c.Congregate.class)); - cards.add(new SetCardInfo("Contamination", 123, Rarity.RARE, mage.cards.c.Contamination.class)); - cards.add(new SetCardInfo("Copper Gnomes", 291, Rarity.RARE, mage.cards.c.CopperGnomes.class)); - cards.add(new SetCardInfo("Coral Merfolk", 67, Rarity.COMMON, mage.cards.c.CoralMerfolk.class)); - cards.add(new SetCardInfo("Corrupt", 124, Rarity.COMMON, mage.cards.c.Corrupt.class)); - cards.add(new SetCardInfo("Cradle Guard", 245, Rarity.UNCOMMON, mage.cards.c.CradleGuard.class)); - cards.add(new SetCardInfo("Crater Hellion", 179, Rarity.RARE, mage.cards.c.CraterHellion.class)); - cards.add(new SetCardInfo("Crazed Skirge", 125, Rarity.UNCOMMON, mage.cards.c.CrazedSkirge.class)); - cards.add(new SetCardInfo("Crosswinds", 246, Rarity.UNCOMMON, mage.cards.c.Crosswinds.class)); - cards.add(new SetCardInfo("Crystal Chimes", 292, Rarity.UNCOMMON, mage.cards.c.CrystalChimes.class)); - cards.add(new SetCardInfo("Curfew", 68, Rarity.COMMON, mage.cards.c.Curfew.class)); - cards.add(new SetCardInfo("Darkest Hour", 128, Rarity.RARE, mage.cards.d.DarkestHour.class)); - cards.add(new SetCardInfo("Dark Hatchling", 126, Rarity.RARE, mage.cards.d.DarkHatchling.class)); - cards.add(new SetCardInfo("Dark Ritual", 127, Rarity.COMMON, mage.cards.d.DarkRitual.class)); - cards.add(new SetCardInfo("Despondency", 129, Rarity.COMMON, mage.cards.d.Despondency.class)); - cards.add(new SetCardInfo("Diabolic Servitude", 130, Rarity.UNCOMMON, mage.cards.d.DiabolicServitude.class)); - cards.add(new SetCardInfo("Disciple of Grace", 10, Rarity.COMMON, mage.cards.d.DiscipleOfGrace.class)); - cards.add(new SetCardInfo("Disciple of Law", 11, Rarity.COMMON, mage.cards.d.DiscipleOfLaw.class)); - cards.add(new SetCardInfo("Disenchant", 12, Rarity.COMMON, mage.cards.d.Disenchant.class)); - cards.add(new SetCardInfo("Disorder", 181, Rarity.UNCOMMON, mage.cards.d.Disorder.class)); - cards.add(new SetCardInfo("Disruptive Student", 69, Rarity.COMMON, mage.cards.d.DisruptiveStudent.class)); - cards.add(new SetCardInfo("Douse", 70, Rarity.UNCOMMON, mage.cards.d.Douse.class)); - cards.add(new SetCardInfo("Dragon Blood", 293, Rarity.UNCOMMON, mage.cards.d.DragonBlood.class)); - cards.add(new SetCardInfo("Drifting Djinn", 71, Rarity.RARE, mage.cards.d.DriftingDjinn.class)); - cards.add(new SetCardInfo("Drifting Meadow", 320, Rarity.COMMON, mage.cards.d.DriftingMeadow.class)); - cards.add(new SetCardInfo("Dromosaur", 182, Rarity.COMMON, mage.cards.d.Dromosaur.class)); - cards.add(new SetCardInfo("Duress", 132, Rarity.COMMON, mage.cards.d.Duress.class)); - cards.add(new SetCardInfo("Eastern Paladin", 133, Rarity.RARE, mage.cards.e.EasternPaladin.class)); - cards.add(new SetCardInfo("Elite Archers", 13, Rarity.RARE, mage.cards.e.EliteArchers.class)); - cards.add(new SetCardInfo("Elvish Herder", 247, Rarity.COMMON, mage.cards.e.ElvishHerder.class)); - cards.add(new SetCardInfo("Elvish Lyrist", 248, Rarity.COMMON, mage.cards.e.ElvishLyrist.class)); - cards.add(new SetCardInfo("Endoskeleton", 294, Rarity.UNCOMMON, mage.cards.e.Endoskeleton.class)); - cards.add(new SetCardInfo("Energy Field", 73, Rarity.RARE, mage.cards.e.EnergyField.class)); - cards.add(new SetCardInfo("Exhaustion", 74, Rarity.UNCOMMON, mage.cards.e.Exhaustion.class)); - cards.add(new SetCardInfo("Exhume", 134, Rarity.COMMON, mage.cards.e.Exhume.class)); - cards.add(new SetCardInfo("Exploration", 250, Rarity.RARE, mage.cards.e.Exploration.class)); - cards.add(new SetCardInfo("Expunge", 135, Rarity.COMMON, mage.cards.e.Expunge.class)); - cards.add(new SetCardInfo("Faith Healer", 14, Rarity.RARE, mage.cards.f.FaithHealer.class)); - cards.add(new SetCardInfo("Falter", 184, Rarity.COMMON, mage.cards.f.Falter.class)); - cards.add(new SetCardInfo("Fault Line", 185, Rarity.RARE, mage.cards.f.FaultLine.class)); - cards.add(new SetCardInfo("Fecundity", 251, Rarity.UNCOMMON, mage.cards.f.Fecundity.class)); - cards.add(new SetCardInfo("Fertile Ground", 252, Rarity.COMMON, mage.cards.f.FertileGround.class)); - cards.add(new SetCardInfo("Fiery Mantle", 186, Rarity.COMMON, mage.cards.f.FieryMantle.class)); - cards.add(new SetCardInfo("Fire Ants", 187, Rarity.UNCOMMON, mage.cards.f.FireAnts.class)); - cards.add(new SetCardInfo("Fluctuator", 295, Rarity.RARE, mage.cards.f.Fluctuator.class)); - cards.add(new SetCardInfo("Fog Bank", 75, Rarity.UNCOMMON, mage.cards.f.FogBank.class)); - cards.add(new SetCardInfo("Forest", 347, Rarity.LAND, mage.cards.basiclands.Forest.class, new CardGraphicInfo(null, true))); - cards.add(new SetCardInfo("Forest", 348, Rarity.LAND, mage.cards.basiclands.Forest.class, new CardGraphicInfo(null, true))); - cards.add(new SetCardInfo("Forest", 349, Rarity.LAND, mage.cards.basiclands.Forest.class, new CardGraphicInfo(null, true))); - cards.add(new SetCardInfo("Forest", 350, Rarity.LAND, mage.cards.basiclands.Forest.class, new CardGraphicInfo(null, true))); - cards.add(new SetCardInfo("Fortitude", 253, Rarity.COMMON, mage.cards.f.Fortitude.class)); - cards.add(new SetCardInfo("Gaea's Bounty", 254, Rarity.COMMON, mage.cards.g.GaeasBounty.class)); - cards.add(new SetCardInfo("Gaea's Cradle", 321, Rarity.RARE, mage.cards.g.GaeasCradle.class)); - cards.add(new SetCardInfo("Gaea's Embrace", 255, Rarity.UNCOMMON, mage.cards.g.GaeasEmbrace.class)); - cards.add(new SetCardInfo("Gamble", 188, Rarity.RARE, mage.cards.g.Gamble.class)); - cards.add(new SetCardInfo("Gilded Drake", 76, Rarity.RARE, mage.cards.g.GildedDrake.class)); - cards.add(new SetCardInfo("Glorious Anthem", 15, Rarity.RARE, mage.cards.g.GloriousAnthem.class)); - cards.add(new SetCardInfo("Goblin Cadets", 189, Rarity.UNCOMMON, mage.cards.g.GoblinCadets.class)); - cards.add(new SetCardInfo("Goblin Lackey", 190, Rarity.UNCOMMON, mage.cards.g.GoblinLackey.class)); - cards.add(new SetCardInfo("Goblin Matron", 191, Rarity.COMMON, mage.cards.g.GoblinMatron.class)); - cards.add(new SetCardInfo("Goblin Offensive", 192, Rarity.UNCOMMON, mage.cards.g.GoblinOffensive.class)); - cards.add(new SetCardInfo("Goblin Patrol", 193, Rarity.COMMON, mage.cards.g.GoblinPatrol.class)); - cards.add(new SetCardInfo("Goblin Raider", 194, Rarity.COMMON, mage.cards.g.GoblinRaider.class)); - cards.add(new SetCardInfo("Goblin Spelunkers", 195, Rarity.COMMON, mage.cards.g.GoblinSpelunkers.class)); - cards.add(new SetCardInfo("Goblin War Buggy", 196, Rarity.COMMON, mage.cards.g.GoblinWarBuggy.class)); - cards.add(new SetCardInfo("Gorilla Warrior", 256, Rarity.COMMON, mage.cards.g.GorillaWarrior.class)); - cards.add(new SetCardInfo("Grafted Skullcap", 296, Rarity.RARE, mage.cards.g.GraftedSkullcap.class)); - cards.add(new SetCardInfo("Greater Good", 257, Rarity.RARE, mage.cards.g.GreaterGood.class)); - cards.add(new SetCardInfo("Great Whale", 77, Rarity.RARE, mage.cards.g.GreatWhale.class)); - cards.add(new SetCardInfo("Guma", 197, Rarity.UNCOMMON, mage.cards.g.Guma.class)); - cards.add(new SetCardInfo("Hawkeater Moth", 259, Rarity.UNCOMMON, mage.cards.h.HawkeaterMoth.class)); - cards.add(new SetCardInfo("Healing Salve", 16, Rarity.COMMON, mage.cards.h.HealingSalve.class)); - cards.add(new SetCardInfo("Heat Ray", 199, Rarity.COMMON, mage.cards.h.HeatRay.class)); - cards.add(new SetCardInfo("Herald of Serra", 17, Rarity.RARE, mage.cards.h.HeraldOfSerra.class)); - cards.add(new SetCardInfo("Hermetic Study", 78, Rarity.COMMON, mage.cards.h.HermeticStudy.class)); - cards.add(new SetCardInfo("Hibernation", 79, Rarity.UNCOMMON, mage.cards.h.Hibernation.class)); - cards.add(new SetCardInfo("Hidden Ancients", 260, Rarity.UNCOMMON, mage.cards.h.HiddenAncients.class)); - cards.add(new SetCardInfo("Hidden Guerrillas", 261, Rarity.UNCOMMON, mage.cards.h.HiddenGuerrillas.class)); - cards.add(new SetCardInfo("Hidden Spider", 264, Rarity.COMMON, mage.cards.h.HiddenSpider.class)); - cards.add(new SetCardInfo("Hollow Dogs", 137, Rarity.COMMON, mage.cards.h.HollowDogs.class)); - cards.add(new SetCardInfo("Horseshoe Crab", 80, Rarity.COMMON, mage.cards.h.HorseshoeCrab.class)); - cards.add(new SetCardInfo("Humble", 18, Rarity.UNCOMMON, mage.cards.h.Humble.class)); - cards.add(new SetCardInfo("Hush", 266, Rarity.COMMON, mage.cards.h.Hush.class)); - cards.add(new SetCardInfo("Ill-Gotten Gains", 138, Rarity.RARE, mage.cards.i.IllGottenGains.class)); - cards.add(new SetCardInfo("Imaginary Pet", 81, Rarity.RARE, mage.cards.i.ImaginaryPet.class)); - cards.add(new SetCardInfo("Intrepid Hero", 19, Rarity.RARE, mage.cards.i.IntrepidHero.class)); - cards.add(new SetCardInfo("Island", 335, Rarity.LAND, mage.cards.basiclands.Island.class, new CardGraphicInfo(null, true))); - cards.add(new SetCardInfo("Island", 336, Rarity.LAND, mage.cards.basiclands.Island.class, new CardGraphicInfo(null, true))); - cards.add(new SetCardInfo("Island", 337, Rarity.LAND, mage.cards.basiclands.Island.class, new CardGraphicInfo(null, true))); - cards.add(new SetCardInfo("Island", 338, Rarity.LAND, mage.cards.basiclands.Island.class, new CardGraphicInfo(null, true))); - cards.add(new SetCardInfo("Jagged Lightning", 200, Rarity.UNCOMMON, mage.cards.j.JaggedLightning.class)); - cards.add(new SetCardInfo("Karn, Silver Golem", 298, Rarity.RARE, mage.cards.k.KarnSilverGolem.class)); - cards.add(new SetCardInfo("Launch", 82, Rarity.COMMON, mage.cards.l.Launch.class)); - cards.add(new SetCardInfo("Lay Waste", 201, Rarity.COMMON, mage.cards.l.LayWaste.class)); - cards.add(new SetCardInfo("Lifeline", 299, Rarity.RARE, mage.cards.l.Lifeline.class)); - cards.add(new SetCardInfo("Lightning Dragon", 202, Rarity.RARE, mage.cards.l.LightningDragon.class)); - cards.add(new SetCardInfo("Lilting Refrain", 83, Rarity.UNCOMMON, mage.cards.l.LiltingRefrain.class)); - cards.add(new SetCardInfo("Lingering Mirage", 84, Rarity.UNCOMMON, mage.cards.l.LingeringMirage.class)); - cards.add(new SetCardInfo("Looming Shade", 139, Rarity.COMMON, mage.cards.l.LoomingShade.class)); - cards.add(new SetCardInfo("Lotus Blossom", 300, Rarity.RARE, mage.cards.l.LotusBlossom.class)); - cards.add(new SetCardInfo("Lull", 267, Rarity.COMMON, mage.cards.l.Lull.class)); - cards.add(new SetCardInfo("Lurking Evil", 140, Rarity.RARE, mage.cards.l.LurkingEvil.class)); - cards.add(new SetCardInfo("Mana Leech", 141, Rarity.UNCOMMON, mage.cards.m.ManaLeech.class)); - cards.add(new SetCardInfo("Meltdown", 203, Rarity.UNCOMMON, mage.cards.m.Meltdown.class)); - cards.add(new SetCardInfo("Metrognome", 301, Rarity.RARE, mage.cards.m.Metrognome.class)); - cards.add(new SetCardInfo("Midsummer Revel", 268, Rarity.RARE, mage.cards.m.MidsummerRevel.class)); - cards.add(new SetCardInfo("Mishra's Helix", 302, Rarity.RARE, mage.cards.m.MishrasHelix.class)); - cards.add(new SetCardInfo("Mobile Fort", 303, Rarity.UNCOMMON, mage.cards.m.MobileFort.class)); - cards.add(new SetCardInfo("Monk Idealist", 20, Rarity.UNCOMMON, mage.cards.m.MonkIdealist.class)); - cards.add(new SetCardInfo("Monk Realist", 21, Rarity.COMMON, mage.cards.m.MonkRealist.class)); - cards.add(new SetCardInfo("Morphling", 85, Rarity.RARE, mage.cards.m.Morphling.class)); - cards.add(new SetCardInfo("Mountain", 343, Rarity.LAND, mage.cards.basiclands.Mountain.class, new CardGraphicInfo(null, true))); - cards.add(new SetCardInfo("Mountain", 344, Rarity.LAND, mage.cards.basiclands.Mountain.class, new CardGraphicInfo(null, true))); - cards.add(new SetCardInfo("Mountain", 345, Rarity.LAND, mage.cards.basiclands.Mountain.class, new CardGraphicInfo(null, true))); - cards.add(new SetCardInfo("Mountain", 346, Rarity.LAND, mage.cards.basiclands.Mountain.class, new CardGraphicInfo(null, true))); - cards.add(new SetCardInfo("No Rest for the Wicked", 142, Rarity.UNCOMMON, mage.cards.n.NoRestForTheWicked.class)); - cards.add(new SetCardInfo("Okk", 204, Rarity.RARE, mage.cards.o.Okk.class)); - cards.add(new SetCardInfo("Opal Archangel", 23, Rarity.RARE, mage.cards.o.OpalArchangel.class)); - cards.add(new SetCardInfo("Opal Caryatid", 24, Rarity.COMMON, mage.cards.o.OpalCaryatid.class)); - cards.add(new SetCardInfo("Opal Gargoyle", 25, Rarity.COMMON, mage.cards.o.OpalGargoyle.class)); - cards.add(new SetCardInfo("Oppression", 143, Rarity.RARE, mage.cards.o.Oppression.class)); - cards.add(new SetCardInfo("Order of Yawgmoth", 144, Rarity.UNCOMMON, mage.cards.o.OrderOfYawgmoth.class)); - cards.add(new SetCardInfo("Pacifism", 27, Rarity.COMMON, mage.cards.p.Pacifism.class)); - cards.add(new SetCardInfo("Parasitic Bond", 145, Rarity.UNCOMMON, mage.cards.p.ParasiticBond.class)); - cards.add(new SetCardInfo("Pariah", 28, Rarity.RARE, mage.cards.p.Pariah.class)); - cards.add(new SetCardInfo("Pegasus Charger", 30, Rarity.COMMON, mage.cards.p.PegasusCharger.class)); - cards.add(new SetCardInfo("Pendrell Drake", 86, Rarity.COMMON, mage.cards.p.PendrellDrake.class)); - cards.add(new SetCardInfo("Pendrell Flux", 87, Rarity.COMMON, mage.cards.p.PendrellFlux.class)); - cards.add(new SetCardInfo("Peregrine Drake", 88, Rarity.UNCOMMON, mage.cards.p.PeregrineDrake.class)); - cards.add(new SetCardInfo("Persecute", 146, Rarity.RARE, mage.cards.p.Persecute.class)); - cards.add(new SetCardInfo("Pestilence", 147, Rarity.COMMON, mage.cards.p.Pestilence.class)); - cards.add(new SetCardInfo("Phyrexian Colossus", 305, Rarity.RARE, mage.cards.p.PhyrexianColossus.class)); - cards.add(new SetCardInfo("Phyrexian Ghoul", 148, Rarity.COMMON, mage.cards.p.PhyrexianGhoul.class)); - cards.add(new SetCardInfo("Phyrexian Processor", 306, Rarity.RARE, mage.cards.p.PhyrexianProcessor.class)); - cards.add(new SetCardInfo("Phyrexian Tower", 322, Rarity.RARE, mage.cards.p.PhyrexianTower.class)); - cards.add(new SetCardInfo("Pit Trap", 307, Rarity.UNCOMMON, mage.cards.p.PitTrap.class)); - cards.add(new SetCardInfo("Plains", 331, Rarity.LAND, mage.cards.basiclands.Plains.class, new CardGraphicInfo(null, true))); - cards.add(new SetCardInfo("Plains", 332, Rarity.LAND, mage.cards.basiclands.Plains.class, new CardGraphicInfo(null, true))); - cards.add(new SetCardInfo("Plains", 333, Rarity.LAND, mage.cards.basiclands.Plains.class, new CardGraphicInfo(null, true))); - cards.add(new SetCardInfo("Plains", 334, Rarity.LAND, mage.cards.basiclands.Plains.class, new CardGraphicInfo(null, true))); - cards.add(new SetCardInfo("Planar Birth", 31, Rarity.RARE, mage.cards.p.PlanarBirth.class)); - cards.add(new SetCardInfo("Planar Void", 149, Rarity.RARE, mage.cards.p.PlanarVoid.class)); - cards.add(new SetCardInfo("Polluted Mire", 323, Rarity.COMMON, mage.cards.p.PollutedMire.class)); - cards.add(new SetCardInfo("Pouncing Jaguar", 269, Rarity.COMMON, mage.cards.p.PouncingJaguar.class)); - cards.add(new SetCardInfo("Power Sink", 89, Rarity.COMMON, mage.cards.p.PowerSink.class)); - cards.add(new SetCardInfo("Presence of the Master", 32, Rarity.UNCOMMON, mage.cards.p.PresenceOfTheMaster.class)); - cards.add(new SetCardInfo("Priest of Gix", 150, Rarity.UNCOMMON, mage.cards.p.PriestOfGix.class)); - cards.add(new SetCardInfo("Priest of Titania", 270, Rarity.COMMON, mage.cards.p.PriestOfTitania.class)); - cards.add(new SetCardInfo("Rain of Filth", 151, Rarity.UNCOMMON, mage.cards.r.RainOfFilth.class)); - cards.add(new SetCardInfo("Rain of Salt", 206, Rarity.UNCOMMON, mage.cards.r.RainOfSalt.class)); - cards.add(new SetCardInfo("Ravenous Skirge", 152, Rarity.COMMON, mage.cards.r.RavenousSkirge.class)); - cards.add(new SetCardInfo("Raze", 207, Rarity.COMMON, mage.cards.r.Raze.class)); - cards.add(new SetCardInfo("Redeem", 33, Rarity.UNCOMMON, mage.cards.r.Redeem.class)); - cards.add(new SetCardInfo("Reflexes", 208, Rarity.COMMON, mage.cards.r.Reflexes.class)); - cards.add(new SetCardInfo("Rejuvenate", 271, Rarity.COMMON, mage.cards.r.Rejuvenate.class)); - cards.add(new SetCardInfo("Remote Isle", 324, Rarity.COMMON, mage.cards.r.RemoteIsle.class)); - cards.add(new SetCardInfo("Reprocess", 154, Rarity.RARE, mage.cards.r.Reprocess.class)); - cards.add(new SetCardInfo("Rescind", 92, Rarity.COMMON, mage.cards.r.Rescind.class)); - cards.add(new SetCardInfo("Retaliation", 272, Rarity.UNCOMMON, mage.cards.r.Retaliation.class)); - cards.add(new SetCardInfo("Rewind", 93, Rarity.COMMON, mage.cards.r.Rewind.class)); - cards.add(new SetCardInfo("Rune of Protection: Artifacts", 35, Rarity.UNCOMMON, mage.cards.r.RuneOfProtectionArtifacts.class)); - cards.add(new SetCardInfo("Rune of Protection: Black", 36, Rarity.COMMON, mage.cards.r.RuneOfProtectionBlack.class)); - cards.add(new SetCardInfo("Rune of Protection: Blue", 37, Rarity.COMMON, mage.cards.r.RuneOfProtectionBlue.class)); - cards.add(new SetCardInfo("Rune of Protection: Green", 38, Rarity.COMMON, mage.cards.r.RuneOfProtectionGreen.class)); - cards.add(new SetCardInfo("Rune of Protection: Lands", 39, Rarity.RARE, mage.cards.r.RuneOfProtectionLands.class)); - cards.add(new SetCardInfo("Rune of Protection: Red", 40, Rarity.COMMON, mage.cards.r.RuneOfProtectionRed.class)); - cards.add(new SetCardInfo("Rune of Protection: White", 41, Rarity.COMMON, mage.cards.r.RuneOfProtectionWhite.class)); - cards.add(new SetCardInfo("Sanctum Custodian", 42, Rarity.COMMON, mage.cards.s.SanctumCustodian.class)); - cards.add(new SetCardInfo("Sanctum Guardian", 43, Rarity.UNCOMMON, mage.cards.s.SanctumGuardian.class)); - cards.add(new SetCardInfo("Sandbar Merfolk", 94, Rarity.COMMON, mage.cards.s.SandbarMerfolk.class)); - cards.add(new SetCardInfo("Sandbar Serpent", 95, Rarity.UNCOMMON, mage.cards.s.SandbarSerpent.class)); - cards.add(new SetCardInfo("Sanguine Guard", 155, Rarity.UNCOMMON, mage.cards.s.SanguineGuard.class)); - cards.add(new SetCardInfo("Scald", 211, Rarity.UNCOMMON, mage.cards.s.Scald.class)); - cards.add(new SetCardInfo("Scoria Wurm", 212, Rarity.RARE, mage.cards.s.ScoriaWurm.class)); - cards.add(new SetCardInfo("Scrap", 213, Rarity.COMMON, mage.cards.s.Scrap.class)); - cards.add(new SetCardInfo("Seasoned Marshal", 44, Rarity.UNCOMMON, mage.cards.s.SeasonedMarshal.class)); - cards.add(new SetCardInfo("Serra Avatar", 45, Rarity.RARE, mage.cards.s.SerraAvatar.class)); - cards.add(new SetCardInfo("Serra's Embrace", 47, Rarity.UNCOMMON, mage.cards.s.SerrasEmbrace.class)); - cards.add(new SetCardInfo("Serra's Sanctum", 325, Rarity.RARE, mage.cards.s.SerrasSanctum.class)); - cards.add(new SetCardInfo("Serra Zealot", 46, Rarity.COMMON, mage.cards.s.SerraZealot.class)); - cards.add(new SetCardInfo("Shimmering Barrier", 50, Rarity.UNCOMMON, mage.cards.s.ShimmeringBarrier.class)); - cards.add(new SetCardInfo("Shivan Gorge", 326, Rarity.RARE, mage.cards.s.ShivanGorge.class)); - cards.add(new SetCardInfo("Shivan Hellkite", 214, Rarity.RARE, mage.cards.s.ShivanHellkite.class)); - cards.add(new SetCardInfo("Shivan Raptor", 215, Rarity.UNCOMMON, mage.cards.s.ShivanRaptor.class)); - cards.add(new SetCardInfo("Shiv's Embrace", 216, Rarity.UNCOMMON, mage.cards.s.ShivsEmbrace.class)); - cards.add(new SetCardInfo("Show and Tell", 96, Rarity.RARE, mage.cards.s.ShowAndTell.class)); - cards.add(new SetCardInfo("Shower of Sparks", 217, Rarity.COMMON, mage.cards.s.ShowerOfSparks.class)); - cards.add(new SetCardInfo("Sicken", 156, Rarity.COMMON, mage.cards.s.Sicken.class)); - cards.add(new SetCardInfo("Silent Attendant", 51, Rarity.COMMON, mage.cards.s.SilentAttendant.class)); - cards.add(new SetCardInfo("Skirge Familiar", 157, Rarity.UNCOMMON, mage.cards.s.SkirgeFamiliar.class)); - cards.add(new SetCardInfo("Skittering Skirge", 158, Rarity.COMMON, mage.cards.s.SkitteringSkirge.class)); - cards.add(new SetCardInfo("Sleeper Agent", 159, Rarity.RARE, mage.cards.s.SleeperAgent.class)); - cards.add(new SetCardInfo("Slippery Karst", 327, Rarity.COMMON, mage.cards.s.SlipperyKarst.class)); - cards.add(new SetCardInfo("Smokestack", 309, Rarity.RARE, mage.cards.s.Smokestack.class)); - cards.add(new SetCardInfo("Smoldering Crater", 328, Rarity.COMMON, mage.cards.s.SmolderingCrater.class)); - cards.add(new SetCardInfo("Sneak Attack", 218, Rarity.RARE, mage.cards.s.SneakAttack.class)); - cards.add(new SetCardInfo("Spined Fluke", 160, Rarity.UNCOMMON, mage.cards.s.SpinedFluke.class)); - cards.add(new SetCardInfo("Spire Owl", 98, Rarity.COMMON, mage.cards.s.SpireOwl.class)); - cards.add(new SetCardInfo("Spreading Algae", 274, Rarity.UNCOMMON, mage.cards.s.SpreadingAlgae.class)); - cards.add(new SetCardInfo("Steam Blast", 219, Rarity.UNCOMMON, mage.cards.s.SteamBlast.class)); - cards.add(new SetCardInfo("Stern Proctor", 99, Rarity.UNCOMMON, mage.cards.s.SternProctor.class)); - cards.add(new SetCardInfo("Stroke of Genius", 100, Rarity.RARE, mage.cards.s.StrokeOfGenius.class)); - cards.add(new SetCardInfo("Sunder", 101, Rarity.RARE, mage.cards.s.Sunder.class)); - cards.add(new SetCardInfo("Swamp", 339, Rarity.LAND, mage.cards.basiclands.Swamp.class, new CardGraphicInfo(null, true))); - cards.add(new SetCardInfo("Swamp", 340, Rarity.LAND, mage.cards.basiclands.Swamp.class, new CardGraphicInfo(null, true))); - cards.add(new SetCardInfo("Swamp", 341, Rarity.LAND, mage.cards.basiclands.Swamp.class, new CardGraphicInfo(null, true))); - cards.add(new SetCardInfo("Swamp", 342, Rarity.LAND, mage.cards.basiclands.Swamp.class, new CardGraphicInfo(null, true))); - cards.add(new SetCardInfo("Symbiosis", 275, Rarity.COMMON, mage.cards.s.Symbiosis.class)); - cards.add(new SetCardInfo("Tainted Aether", 161, Rarity.RARE, mage.cards.t.TaintedAether.class)); - cards.add(new SetCardInfo("Telepathy", 102, Rarity.UNCOMMON, mage.cards.t.Telepathy.class)); - cards.add(new SetCardInfo("Thran Quarry", 329, Rarity.RARE, mage.cards.t.ThranQuarry.class)); - cards.add(new SetCardInfo("Thran Turbine", 311, Rarity.UNCOMMON, mage.cards.t.ThranTurbine.class)); - cards.add(new SetCardInfo("Thundering Giant", 221, Rarity.UNCOMMON, mage.cards.t.ThunderingGiant.class)); - cards.add(new SetCardInfo("Time Spiral", 103, Rarity.RARE, mage.cards.t.TimeSpiral.class)); - cards.add(new SetCardInfo("Titania's Boon", 276, Rarity.UNCOMMON, mage.cards.t.TitaniasBoon.class)); - cards.add(new SetCardInfo("Titania's Chosen", 277, Rarity.UNCOMMON, mage.cards.t.TitaniasChosen.class)); - cards.add(new SetCardInfo("Tolarian Academy", 330, Rarity.RARE, mage.cards.t.TolarianAcademy.class)); - cards.add(new SetCardInfo("Tolarian Winds", 104, Rarity.COMMON, mage.cards.t.TolarianWinds.class)); - cards.add(new SetCardInfo("Torch Song", 222, Rarity.UNCOMMON, mage.cards.t.TorchSong.class)); - cards.add(new SetCardInfo("Treefolk Seedlings", 278, Rarity.UNCOMMON, mage.cards.t.TreefolkSeedlings.class)); - cards.add(new SetCardInfo("Treetop Rangers", 279, Rarity.COMMON, mage.cards.t.TreetopRangers.class)); - cards.add(new SetCardInfo("Turnabout", 105, Rarity.UNCOMMON, mage.cards.t.Turnabout.class)); - cards.add(new SetCardInfo("Umbilicus", 312, Rarity.RARE, mage.cards.u.Umbilicus.class)); - cards.add(new SetCardInfo("Unnerve", 162, Rarity.COMMON, mage.cards.u.Unnerve.class)); - cards.add(new SetCardInfo("Unworthy Dead", 163, Rarity.COMMON, mage.cards.u.UnworthyDead.class)); - cards.add(new SetCardInfo("Urza's Armor", 313, Rarity.UNCOMMON, mage.cards.u.UrzasArmor.class)); - cards.add(new SetCardInfo("Vampiric Embrace", 164, Rarity.UNCOMMON, mage.cards.v.VampiricEmbrace.class)); - cards.add(new SetCardInfo("Vernal Bloom", 281, Rarity.RARE, mage.cards.v.VernalBloom.class)); - cards.add(new SetCardInfo("Viashino Outrider", 223, Rarity.COMMON, mage.cards.v.ViashinoOutrider.class)); - cards.add(new SetCardInfo("Viashino Runner", 224, Rarity.COMMON, mage.cards.v.ViashinoRunner.class)); - cards.add(new SetCardInfo("Viashino Sandswimmer", 225, Rarity.RARE, mage.cards.v.ViashinoSandswimmer.class)); - cards.add(new SetCardInfo("Viashino Weaponsmith", 226, Rarity.COMMON, mage.cards.v.ViashinoWeaponsmith.class)); - cards.add(new SetCardInfo("Victimize", 166, Rarity.UNCOMMON, mage.cards.v.Victimize.class)); - cards.add(new SetCardInfo("Vile Requiem", 167, Rarity.UNCOMMON, mage.cards.v.VileRequiem.class)); - cards.add(new SetCardInfo("Voice of Grace", 54, Rarity.UNCOMMON, mage.cards.v.VoiceOfGrace.class)); - cards.add(new SetCardInfo("Voice of Law", 55, Rarity.UNCOMMON, mage.cards.v.VoiceOfLaw.class)); - cards.add(new SetCardInfo("Voltaic Key", 314, Rarity.UNCOMMON, mage.cards.v.VoltaicKey.class)); - cards.add(new SetCardInfo("Vug Lizard", 227, Rarity.UNCOMMON, mage.cards.v.VugLizard.class)); - cards.add(new SetCardInfo("Western Paladin", 168, Rarity.RARE, mage.cards.w.WesternPaladin.class)); - cards.add(new SetCardInfo("Whetstone", 316, Rarity.RARE, mage.cards.w.Whetstone.class)); - cards.add(new SetCardInfo("Whirlwind", 283, Rarity.RARE, mage.cards.w.Whirlwind.class)); - cards.add(new SetCardInfo("Wild Dogs", 284, Rarity.COMMON, mage.cards.w.WildDogs.class)); - cards.add(new SetCardInfo("Wildfire", 228, Rarity.RARE, mage.cards.w.Wildfire.class)); - cards.add(new SetCardInfo("Windfall", 111, Rarity.UNCOMMON, mage.cards.w.Windfall.class)); - cards.add(new SetCardInfo("Winding Wurm", 285, Rarity.COMMON, mage.cards.w.WindingWurm.class)); - cards.add(new SetCardInfo("Wirecat", 317, Rarity.UNCOMMON, mage.cards.w.Wirecat.class)); - cards.add(new SetCardInfo("Witch Engine", 169, Rarity.RARE, mage.cards.w.WitchEngine.class)); - cards.add(new SetCardInfo("Wizard Mentor", 112, Rarity.COMMON, mage.cards.w.WizardMentor.class)); - cards.add(new SetCardInfo("Worn Powerstone", 318, Rarity.UNCOMMON, mage.cards.w.WornPowerstone.class)); - cards.add(new SetCardInfo("Worship", 57, Rarity.RARE, mage.cards.w.Worship.class)); - cards.add(new SetCardInfo("Yawgmoth's Edict", 170, Rarity.UNCOMMON, mage.cards.y.YawgmothsEdict.class)); - cards.add(new SetCardInfo("Yawgmoth's Will", 171, Rarity.RARE, mage.cards.y.YawgmothsWill.class)); - cards.add(new SetCardInfo("Zephid", 113, Rarity.RARE, mage.cards.z.Zephid.class)); - cards.add(new SetCardInfo("Zephid's Embrace", 114, Rarity.UNCOMMON, mage.cards.z.ZephidsEmbrace.class)); - } -} +/* +* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. +* +* Redistribution and use in source and binary forms, with or without modification, are +* permitted provided that the following conditions are met: +* +* 1. Redistributions of source code must retain the above copyright notice, this list of +* conditions and the following disclaimer. +* +* 2. Redistributions in binary form must reproduce the above copyright notice, this list +* of conditions and the following disclaimer in the documentation and/or other materials +* provided with the distribution. +* +* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED +* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR +* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +* +* The views and conclusions contained in the software and documentation are those of the +* authors and should not be interpreted as representing official policies, either expressed +* or implied, of BetaSteward_at_googlemail.com. + */ +package mage.sets; + +import mage.cards.CardGraphicInfo; +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.constants.SetType; + +/** + * + * @author Backfir3 + */ +public class UrzasSaga extends ExpansionSet { + + private static final UrzasSaga instance = new UrzasSaga(); + + public static UrzasSaga getInstance() { + return instance; + } + + private UrzasSaga() { + super("Urza's Saga", "USG", ExpansionSet.buildDate(1998, 10, 12), SetType.EXPANSION); + this.blockName = "Urza"; + this.hasBoosters = true; + this.numBoosterLands = 0; + this.numBoosterCommon = 11; + this.numBoosterUncommon = 3; + this.numBoosterRare = 1; + this.ratioBoosterMythic = 0; + cards.add(new SetCardInfo("Absolute Grace", 1, Rarity.UNCOMMON, mage.cards.a.AbsoluteGrace.class)); + cards.add(new SetCardInfo("Absolute Law", 2, Rarity.UNCOMMON, mage.cards.a.AbsoluteLaw.class)); + cards.add(new SetCardInfo("Abundance", 229, Rarity.RARE, mage.cards.a.Abundance.class)); + cards.add(new SetCardInfo("Abyssal Horror", 115, Rarity.RARE, mage.cards.a.AbyssalHorror.class)); + cards.add(new SetCardInfo("Academy Researchers", 58, Rarity.UNCOMMON, mage.cards.a.AcademyResearchers.class)); + cards.add(new SetCardInfo("Acidic Soil", 172, Rarity.UNCOMMON, mage.cards.a.AcidicSoil.class)); + cards.add(new SetCardInfo("Acridian", 230, Rarity.COMMON, mage.cards.a.Acridian.class)); + cards.add(new SetCardInfo("Albino Troll", 231, Rarity.UNCOMMON, mage.cards.a.AlbinoTroll.class)); + cards.add(new SetCardInfo("Anaconda", 232, Rarity.UNCOMMON, mage.cards.a.Anaconda.class)); + cards.add(new SetCardInfo("Angelic Chorus", 3, Rarity.RARE, mage.cards.a.AngelicChorus.class)); + cards.add(new SetCardInfo("Angelic Page", 4, Rarity.COMMON, mage.cards.a.AngelicPage.class)); + cards.add(new SetCardInfo("Annul", 59, Rarity.COMMON, mage.cards.a.Annul.class)); + cards.add(new SetCardInfo("Arcane Laboratory", 60, Rarity.UNCOMMON, mage.cards.a.ArcaneLaboratory.class)); + cards.add(new SetCardInfo("Arc Lightning", 174, Rarity.COMMON, mage.cards.a.ArcLightning.class)); + cards.add(new SetCardInfo("Argothian Elder", 233, Rarity.UNCOMMON, mage.cards.a.ArgothianElder.class)); + cards.add(new SetCardInfo("Argothian Enchantress", 234, Rarity.RARE, mage.cards.a.ArgothianEnchantress.class)); + cards.add(new SetCardInfo("Argothian Swine", 235, Rarity.COMMON, mage.cards.a.ArgothianSwine.class)); + cards.add(new SetCardInfo("Argothian Wurm", 236, Rarity.RARE, mage.cards.a.ArgothianWurm.class)); + cards.add(new SetCardInfo("Attunement", 61, Rarity.RARE, mage.cards.a.Attunement.class)); + cards.add(new SetCardInfo("Back to Basics", 62, Rarity.RARE, mage.cards.b.BackToBasics.class)); + cards.add(new SetCardInfo("Barrin, Master Wizard", 63, Rarity.RARE, mage.cards.b.BarrinMasterWizard.class)); + cards.add(new SetCardInfo("Barrin's Codex", 286, Rarity.RARE, mage.cards.b.BarrinsCodex.class)); + cards.add(new SetCardInfo("Bedlam", 175, Rarity.RARE, mage.cards.b.Bedlam.class)); + cards.add(new SetCardInfo("Befoul", 116, Rarity.COMMON, mage.cards.b.Befoul.class)); + cards.add(new SetCardInfo("Bereavement", 117, Rarity.UNCOMMON, mage.cards.b.Bereavement.class)); + cards.add(new SetCardInfo("Blanchwood Armor", 237, Rarity.UNCOMMON, mage.cards.b.BlanchwoodArmor.class)); + cards.add(new SetCardInfo("Blanchwood Treefolk", 238, Rarity.COMMON, mage.cards.b.BlanchwoodTreefolk.class)); + cards.add(new SetCardInfo("Blasted Landscape", 319, Rarity.UNCOMMON, mage.cards.b.BlastedLandscape.class)); + cards.add(new SetCardInfo("Blood Vassal", 118, Rarity.COMMON, mage.cards.b.BloodVassal.class)); + cards.add(new SetCardInfo("Bog Raiders", 119, Rarity.COMMON, mage.cards.b.BogRaiders.class)); + cards.add(new SetCardInfo("Brand", 176, Rarity.RARE, mage.cards.b.Brand.class)); + cards.add(new SetCardInfo("Bravado", 177, Rarity.COMMON, mage.cards.b.Bravado.class)); + cards.add(new SetCardInfo("Breach", 120, Rarity.COMMON, mage.cards.b.Breach.class)); + cards.add(new SetCardInfo("Brilliant Halo", 5, Rarity.COMMON, mage.cards.b.BrilliantHalo.class)); + cards.add(new SetCardInfo("Bull Hippo", 239, Rarity.UNCOMMON, mage.cards.b.BullHippo.class)); + cards.add(new SetCardInfo("Bulwark", 178, Rarity.RARE, mage.cards.b.Bulwark.class)); + cards.add(new SetCardInfo("Cackling Fiend", 121, Rarity.COMMON, mage.cards.c.CacklingFiend.class)); + cards.add(new SetCardInfo("Carpet of Flowers", 240, Rarity.UNCOMMON, mage.cards.c.CarpetOfFlowers.class)); + cards.add(new SetCardInfo("Carrion Beetles", 122, Rarity.COMMON, mage.cards.c.CarrionBeetles.class)); + cards.add(new SetCardInfo("Catalog", 64, Rarity.COMMON, mage.cards.c.Catalog.class)); + cards.add(new SetCardInfo("Catastrophe", 6, Rarity.RARE, mage.cards.c.Catastrophe.class)); + cards.add(new SetCardInfo("Cathodion", 287, Rarity.UNCOMMON, mage.cards.c.Cathodion.class)); + cards.add(new SetCardInfo("Cave Tiger", 241, Rarity.COMMON, mage.cards.c.CaveTiger.class)); + cards.add(new SetCardInfo("Child of Gaea", 242, Rarity.RARE, mage.cards.c.ChildOfGaea.class)); + cards.add(new SetCardInfo("Chimeric Staff", 288, Rarity.RARE, mage.cards.c.ChimericStaff.class)); + cards.add(new SetCardInfo("Citanul Centaurs", 243, Rarity.RARE, mage.cards.c.CitanulCentaurs.class)); + cards.add(new SetCardInfo("Citanul Flute", 289, Rarity.RARE, mage.cards.c.CitanulFlute.class)); + cards.add(new SetCardInfo("Citanul Hierophants", 244, Rarity.RARE, mage.cards.c.CitanulHierophants.class)); + cards.add(new SetCardInfo("Claws of Gix", 290, Rarity.UNCOMMON, mage.cards.c.ClawsOfGix.class)); + cards.add(new SetCardInfo("Clear", 7, Rarity.UNCOMMON, mage.cards.c.Clear.class)); + cards.add(new SetCardInfo("Cloak of Mists", 65, Rarity.COMMON, mage.cards.c.CloakOfMists.class)); + cards.add(new SetCardInfo("Confiscate", 66, Rarity.UNCOMMON, mage.cards.c.Confiscate.class)); + cards.add(new SetCardInfo("Congregate", 8, Rarity.COMMON, mage.cards.c.Congregate.class)); + cards.add(new SetCardInfo("Contamination", 123, Rarity.RARE, mage.cards.c.Contamination.class)); + cards.add(new SetCardInfo("Copper Gnomes", 291, Rarity.RARE, mage.cards.c.CopperGnomes.class)); + cards.add(new SetCardInfo("Coral Merfolk", 67, Rarity.COMMON, mage.cards.c.CoralMerfolk.class)); + cards.add(new SetCardInfo("Corrupt", 124, Rarity.COMMON, mage.cards.c.Corrupt.class)); + cards.add(new SetCardInfo("Cradle Guard", 245, Rarity.UNCOMMON, mage.cards.c.CradleGuard.class)); + cards.add(new SetCardInfo("Crater Hellion", 179, Rarity.RARE, mage.cards.c.CraterHellion.class)); + cards.add(new SetCardInfo("Crazed Skirge", 125, Rarity.UNCOMMON, mage.cards.c.CrazedSkirge.class)); + cards.add(new SetCardInfo("Crosswinds", 246, Rarity.UNCOMMON, mage.cards.c.Crosswinds.class)); + cards.add(new SetCardInfo("Crystal Chimes", 292, Rarity.UNCOMMON, mage.cards.c.CrystalChimes.class)); + cards.add(new SetCardInfo("Curfew", 68, Rarity.COMMON, mage.cards.c.Curfew.class)); + cards.add(new SetCardInfo("Darkest Hour", 128, Rarity.RARE, mage.cards.d.DarkestHour.class)); + cards.add(new SetCardInfo("Dark Hatchling", 126, Rarity.RARE, mage.cards.d.DarkHatchling.class)); + cards.add(new SetCardInfo("Dark Ritual", 127, Rarity.COMMON, mage.cards.d.DarkRitual.class)); + cards.add(new SetCardInfo("Despondency", 129, Rarity.COMMON, mage.cards.d.Despondency.class)); + cards.add(new SetCardInfo("Diabolic Servitude", 130, Rarity.UNCOMMON, mage.cards.d.DiabolicServitude.class)); + cards.add(new SetCardInfo("Disciple of Grace", 10, Rarity.COMMON, mage.cards.d.DiscipleOfGrace.class)); + cards.add(new SetCardInfo("Disciple of Law", 11, Rarity.COMMON, mage.cards.d.DiscipleOfLaw.class)); + cards.add(new SetCardInfo("Disenchant", 12, Rarity.COMMON, mage.cards.d.Disenchant.class)); + cards.add(new SetCardInfo("Disorder", 181, Rarity.UNCOMMON, mage.cards.d.Disorder.class)); + cards.add(new SetCardInfo("Disruptive Student", 69, Rarity.COMMON, mage.cards.d.DisruptiveStudent.class)); + cards.add(new SetCardInfo("Douse", 70, Rarity.UNCOMMON, mage.cards.d.Douse.class)); + cards.add(new SetCardInfo("Dragon Blood", 293, Rarity.UNCOMMON, mage.cards.d.DragonBlood.class)); + cards.add(new SetCardInfo("Drifting Djinn", 71, Rarity.RARE, mage.cards.d.DriftingDjinn.class)); + cards.add(new SetCardInfo("Drifting Meadow", 320, Rarity.COMMON, mage.cards.d.DriftingMeadow.class)); + cards.add(new SetCardInfo("Dromosaur", 182, Rarity.COMMON, mage.cards.d.Dromosaur.class)); + cards.add(new SetCardInfo("Duress", 132, Rarity.COMMON, mage.cards.d.Duress.class)); + cards.add(new SetCardInfo("Eastern Paladin", 133, Rarity.RARE, mage.cards.e.EasternPaladin.class)); + cards.add(new SetCardInfo("Elite Archers", 13, Rarity.RARE, mage.cards.e.EliteArchers.class)); + cards.add(new SetCardInfo("Elvish Herder", 247, Rarity.COMMON, mage.cards.e.ElvishHerder.class)); + cards.add(new SetCardInfo("Elvish Lyrist", 248, Rarity.COMMON, mage.cards.e.ElvishLyrist.class)); + cards.add(new SetCardInfo("Endoskeleton", 294, Rarity.UNCOMMON, mage.cards.e.Endoskeleton.class)); + cards.add(new SetCardInfo("Energy Field", 73, Rarity.RARE, mage.cards.e.EnergyField.class)); + cards.add(new SetCardInfo("Exhaustion", 74, Rarity.UNCOMMON, mage.cards.e.Exhaustion.class)); + cards.add(new SetCardInfo("Exhume", 134, Rarity.COMMON, mage.cards.e.Exhume.class)); + cards.add(new SetCardInfo("Exploration", 250, Rarity.RARE, mage.cards.e.Exploration.class)); + cards.add(new SetCardInfo("Expunge", 135, Rarity.COMMON, mage.cards.e.Expunge.class)); + cards.add(new SetCardInfo("Faith Healer", 14, Rarity.RARE, mage.cards.f.FaithHealer.class)); + cards.add(new SetCardInfo("Falter", 184, Rarity.COMMON, mage.cards.f.Falter.class)); + cards.add(new SetCardInfo("Fault Line", 185, Rarity.RARE, mage.cards.f.FaultLine.class)); + cards.add(new SetCardInfo("Fecundity", 251, Rarity.UNCOMMON, mage.cards.f.Fecundity.class)); + cards.add(new SetCardInfo("Fertile Ground", 252, Rarity.COMMON, mage.cards.f.FertileGround.class)); + cards.add(new SetCardInfo("Fiery Mantle", 186, Rarity.COMMON, mage.cards.f.FieryMantle.class)); + cards.add(new SetCardInfo("Fire Ants", 187, Rarity.UNCOMMON, mage.cards.f.FireAnts.class)); + cards.add(new SetCardInfo("Fluctuator", 295, Rarity.RARE, mage.cards.f.Fluctuator.class)); + cards.add(new SetCardInfo("Fog Bank", 75, Rarity.UNCOMMON, mage.cards.f.FogBank.class)); + cards.add(new SetCardInfo("Forest", 347, Rarity.LAND, mage.cards.basiclands.Forest.class, new CardGraphicInfo(null, true))); + cards.add(new SetCardInfo("Forest", 348, Rarity.LAND, mage.cards.basiclands.Forest.class, new CardGraphicInfo(null, true))); + cards.add(new SetCardInfo("Forest", 349, Rarity.LAND, mage.cards.basiclands.Forest.class, new CardGraphicInfo(null, true))); + cards.add(new SetCardInfo("Forest", 350, Rarity.LAND, mage.cards.basiclands.Forest.class, new CardGraphicInfo(null, true))); + cards.add(new SetCardInfo("Fortitude", 253, Rarity.COMMON, mage.cards.f.Fortitude.class)); + cards.add(new SetCardInfo("Gaea's Bounty", 254, Rarity.COMMON, mage.cards.g.GaeasBounty.class)); + cards.add(new SetCardInfo("Gaea's Cradle", 321, Rarity.RARE, mage.cards.g.GaeasCradle.class)); + cards.add(new SetCardInfo("Gaea's Embrace", 255, Rarity.UNCOMMON, mage.cards.g.GaeasEmbrace.class)); + cards.add(new SetCardInfo("Gamble", 188, Rarity.RARE, mage.cards.g.Gamble.class)); + cards.add(new SetCardInfo("Gilded Drake", 76, Rarity.RARE, mage.cards.g.GildedDrake.class)); + cards.add(new SetCardInfo("Glorious Anthem", 15, Rarity.RARE, mage.cards.g.GloriousAnthem.class)); + cards.add(new SetCardInfo("Goblin Cadets", 189, Rarity.UNCOMMON, mage.cards.g.GoblinCadets.class)); + cards.add(new SetCardInfo("Goblin Lackey", 190, Rarity.UNCOMMON, mage.cards.g.GoblinLackey.class)); + cards.add(new SetCardInfo("Goblin Matron", 191, Rarity.COMMON, mage.cards.g.GoblinMatron.class)); + cards.add(new SetCardInfo("Goblin Offensive", 192, Rarity.UNCOMMON, mage.cards.g.GoblinOffensive.class)); + cards.add(new SetCardInfo("Goblin Patrol", 193, Rarity.COMMON, mage.cards.g.GoblinPatrol.class)); + cards.add(new SetCardInfo("Goblin Raider", 194, Rarity.COMMON, mage.cards.g.GoblinRaider.class)); + cards.add(new SetCardInfo("Goblin Spelunkers", 195, Rarity.COMMON, mage.cards.g.GoblinSpelunkers.class)); + cards.add(new SetCardInfo("Goblin War Buggy", 196, Rarity.COMMON, mage.cards.g.GoblinWarBuggy.class)); + cards.add(new SetCardInfo("Gorilla Warrior", 256, Rarity.COMMON, mage.cards.g.GorillaWarrior.class)); + cards.add(new SetCardInfo("Grafted Skullcap", 296, Rarity.RARE, mage.cards.g.GraftedSkullcap.class)); + cards.add(new SetCardInfo("Greater Good", 257, Rarity.RARE, mage.cards.g.GreaterGood.class)); + cards.add(new SetCardInfo("Great Whale", 77, Rarity.RARE, mage.cards.g.GreatWhale.class)); + cards.add(new SetCardInfo("Guma", 197, Rarity.UNCOMMON, mage.cards.g.Guma.class)); + cards.add(new SetCardInfo("Hawkeater Moth", 259, Rarity.UNCOMMON, mage.cards.h.HawkeaterMoth.class)); + cards.add(new SetCardInfo("Healing Salve", 16, Rarity.COMMON, mage.cards.h.HealingSalve.class)); + cards.add(new SetCardInfo("Heat Ray", 199, Rarity.COMMON, mage.cards.h.HeatRay.class)); + cards.add(new SetCardInfo("Herald of Serra", 17, Rarity.RARE, mage.cards.h.HeraldOfSerra.class)); + cards.add(new SetCardInfo("Hermetic Study", 78, Rarity.COMMON, mage.cards.h.HermeticStudy.class)); + cards.add(new SetCardInfo("Hibernation", 79, Rarity.UNCOMMON, mage.cards.h.Hibernation.class)); + cards.add(new SetCardInfo("Hidden Ancients", 260, Rarity.UNCOMMON, mage.cards.h.HiddenAncients.class)); + cards.add(new SetCardInfo("Hidden Guerrillas", 261, Rarity.UNCOMMON, mage.cards.h.HiddenGuerrillas.class)); + cards.add(new SetCardInfo("Hidden Spider", 264, Rarity.COMMON, mage.cards.h.HiddenSpider.class)); + cards.add(new SetCardInfo("Hollow Dogs", 137, Rarity.COMMON, mage.cards.h.HollowDogs.class)); + cards.add(new SetCardInfo("Horseshoe Crab", 80, Rarity.COMMON, mage.cards.h.HorseshoeCrab.class)); + cards.add(new SetCardInfo("Humble", 18, Rarity.UNCOMMON, mage.cards.h.Humble.class)); + cards.add(new SetCardInfo("Hush", 266, Rarity.COMMON, mage.cards.h.Hush.class)); + cards.add(new SetCardInfo("Ill-Gotten Gains", 138, Rarity.RARE, mage.cards.i.IllGottenGains.class)); + cards.add(new SetCardInfo("Imaginary Pet", 81, Rarity.RARE, mage.cards.i.ImaginaryPet.class)); + cards.add(new SetCardInfo("Intrepid Hero", 19, Rarity.RARE, mage.cards.i.IntrepidHero.class)); + cards.add(new SetCardInfo("Island", 335, Rarity.LAND, mage.cards.basiclands.Island.class, new CardGraphicInfo(null, true))); + cards.add(new SetCardInfo("Island", 336, Rarity.LAND, mage.cards.basiclands.Island.class, new CardGraphicInfo(null, true))); + cards.add(new SetCardInfo("Island", 337, Rarity.LAND, mage.cards.basiclands.Island.class, new CardGraphicInfo(null, true))); + cards.add(new SetCardInfo("Island", 338, Rarity.LAND, mage.cards.basiclands.Island.class, new CardGraphicInfo(null, true))); + cards.add(new SetCardInfo("Jagged Lightning", 200, Rarity.UNCOMMON, mage.cards.j.JaggedLightning.class)); + cards.add(new SetCardInfo("Karn, Silver Golem", 298, Rarity.RARE, mage.cards.k.KarnSilverGolem.class)); + cards.add(new SetCardInfo("Launch", 82, Rarity.COMMON, mage.cards.l.Launch.class)); + cards.add(new SetCardInfo("Lay Waste", 201, Rarity.COMMON, mage.cards.l.LayWaste.class)); + cards.add(new SetCardInfo("Lifeline", 299, Rarity.RARE, mage.cards.l.Lifeline.class)); + cards.add(new SetCardInfo("Lightning Dragon", 202, Rarity.RARE, mage.cards.l.LightningDragon.class)); + cards.add(new SetCardInfo("Lilting Refrain", 83, Rarity.UNCOMMON, mage.cards.l.LiltingRefrain.class)); + cards.add(new SetCardInfo("Lingering Mirage", 84, Rarity.UNCOMMON, mage.cards.l.LingeringMirage.class)); + cards.add(new SetCardInfo("Looming Shade", 139, Rarity.COMMON, mage.cards.l.LoomingShade.class)); + cards.add(new SetCardInfo("Lotus Blossom", 300, Rarity.RARE, mage.cards.l.LotusBlossom.class)); + cards.add(new SetCardInfo("Lull", 267, Rarity.COMMON, mage.cards.l.Lull.class)); + cards.add(new SetCardInfo("Lurking Evil", 140, Rarity.RARE, mage.cards.l.LurkingEvil.class)); + cards.add(new SetCardInfo("Mana Leech", 141, Rarity.UNCOMMON, mage.cards.m.ManaLeech.class)); + cards.add(new SetCardInfo("Meltdown", 203, Rarity.UNCOMMON, mage.cards.m.Meltdown.class)); + cards.add(new SetCardInfo("Metrognome", 301, Rarity.RARE, mage.cards.m.Metrognome.class)); + cards.add(new SetCardInfo("Midsummer Revel", 268, Rarity.RARE, mage.cards.m.MidsummerRevel.class)); + cards.add(new SetCardInfo("Mishra's Helix", 302, Rarity.RARE, mage.cards.m.MishrasHelix.class)); + cards.add(new SetCardInfo("Mobile Fort", 303, Rarity.UNCOMMON, mage.cards.m.MobileFort.class)); + cards.add(new SetCardInfo("Monk Idealist", 20, Rarity.UNCOMMON, mage.cards.m.MonkIdealist.class)); + cards.add(new SetCardInfo("Monk Realist", 21, Rarity.COMMON, mage.cards.m.MonkRealist.class)); + cards.add(new SetCardInfo("Morphling", 85, Rarity.RARE, mage.cards.m.Morphling.class)); + cards.add(new SetCardInfo("Mountain", 343, Rarity.LAND, mage.cards.basiclands.Mountain.class, new CardGraphicInfo(null, true))); + cards.add(new SetCardInfo("Mountain", 344, Rarity.LAND, mage.cards.basiclands.Mountain.class, new CardGraphicInfo(null, true))); + cards.add(new SetCardInfo("Mountain", 345, Rarity.LAND, mage.cards.basiclands.Mountain.class, new CardGraphicInfo(null, true))); + cards.add(new SetCardInfo("Mountain", 346, Rarity.LAND, mage.cards.basiclands.Mountain.class, new CardGraphicInfo(null, true))); + cards.add(new SetCardInfo("No Rest for the Wicked", 142, Rarity.UNCOMMON, mage.cards.n.NoRestForTheWicked.class)); + cards.add(new SetCardInfo("Noetic Scales", 304, Rarity.RARE, mage.cards.n.NoeticScales.class)); + cards.add(new SetCardInfo("Okk", 204, Rarity.RARE, mage.cards.o.Okk.class)); + cards.add(new SetCardInfo("Opal Archangel", 23, Rarity.RARE, mage.cards.o.OpalArchangel.class)); + cards.add(new SetCardInfo("Opal Caryatid", 24, Rarity.COMMON, mage.cards.o.OpalCaryatid.class)); + cards.add(new SetCardInfo("Opal Gargoyle", 25, Rarity.COMMON, mage.cards.o.OpalGargoyle.class)); + cards.add(new SetCardInfo("Oppression", 143, Rarity.RARE, mage.cards.o.Oppression.class)); + cards.add(new SetCardInfo("Order of Yawgmoth", 144, Rarity.UNCOMMON, mage.cards.o.OrderOfYawgmoth.class)); + cards.add(new SetCardInfo("Pacifism", 27, Rarity.COMMON, mage.cards.p.Pacifism.class)); + cards.add(new SetCardInfo("Parasitic Bond", 145, Rarity.UNCOMMON, mage.cards.p.ParasiticBond.class)); + cards.add(new SetCardInfo("Pariah", 28, Rarity.RARE, mage.cards.p.Pariah.class)); + cards.add(new SetCardInfo("Pegasus Charger", 30, Rarity.COMMON, mage.cards.p.PegasusCharger.class)); + cards.add(new SetCardInfo("Pendrell Drake", 86, Rarity.COMMON, mage.cards.p.PendrellDrake.class)); + cards.add(new SetCardInfo("Pendrell Flux", 87, Rarity.COMMON, mage.cards.p.PendrellFlux.class)); + cards.add(new SetCardInfo("Peregrine Drake", 88, Rarity.UNCOMMON, mage.cards.p.PeregrineDrake.class)); + cards.add(new SetCardInfo("Persecute", 146, Rarity.RARE, mage.cards.p.Persecute.class)); + cards.add(new SetCardInfo("Pestilence", 147, Rarity.COMMON, mage.cards.p.Pestilence.class)); + cards.add(new SetCardInfo("Phyrexian Colossus", 305, Rarity.RARE, mage.cards.p.PhyrexianColossus.class)); + cards.add(new SetCardInfo("Phyrexian Ghoul", 148, Rarity.COMMON, mage.cards.p.PhyrexianGhoul.class)); + cards.add(new SetCardInfo("Phyrexian Processor", 306, Rarity.RARE, mage.cards.p.PhyrexianProcessor.class)); + cards.add(new SetCardInfo("Phyrexian Tower", 322, Rarity.RARE, mage.cards.p.PhyrexianTower.class)); + cards.add(new SetCardInfo("Pit Trap", 307, Rarity.UNCOMMON, mage.cards.p.PitTrap.class)); + cards.add(new SetCardInfo("Plains", 331, Rarity.LAND, mage.cards.basiclands.Plains.class, new CardGraphicInfo(null, true))); + cards.add(new SetCardInfo("Plains", 332, Rarity.LAND, mage.cards.basiclands.Plains.class, new CardGraphicInfo(null, true))); + cards.add(new SetCardInfo("Plains", 333, Rarity.LAND, mage.cards.basiclands.Plains.class, new CardGraphicInfo(null, true))); + cards.add(new SetCardInfo("Plains", 334, Rarity.LAND, mage.cards.basiclands.Plains.class, new CardGraphicInfo(null, true))); + cards.add(new SetCardInfo("Planar Birth", 31, Rarity.RARE, mage.cards.p.PlanarBirth.class)); + cards.add(new SetCardInfo("Planar Void", 149, Rarity.RARE, mage.cards.p.PlanarVoid.class)); + cards.add(new SetCardInfo("Polluted Mire", 323, Rarity.COMMON, mage.cards.p.PollutedMire.class)); + cards.add(new SetCardInfo("Pouncing Jaguar", 269, Rarity.COMMON, mage.cards.p.PouncingJaguar.class)); + cards.add(new SetCardInfo("Power Sink", 89, Rarity.COMMON, mage.cards.p.PowerSink.class)); + cards.add(new SetCardInfo("Presence of the Master", 32, Rarity.UNCOMMON, mage.cards.p.PresenceOfTheMaster.class)); + cards.add(new SetCardInfo("Priest of Gix", 150, Rarity.UNCOMMON, mage.cards.p.PriestOfGix.class)); + cards.add(new SetCardInfo("Priest of Titania", 270, Rarity.COMMON, mage.cards.p.PriestOfTitania.class)); + cards.add(new SetCardInfo("Rain of Filth", 151, Rarity.UNCOMMON, mage.cards.r.RainOfFilth.class)); + cards.add(new SetCardInfo("Rain of Salt", 206, Rarity.UNCOMMON, mage.cards.r.RainOfSalt.class)); + cards.add(new SetCardInfo("Ravenous Skirge", 152, Rarity.COMMON, mage.cards.r.RavenousSkirge.class)); + cards.add(new SetCardInfo("Raze", 207, Rarity.COMMON, mage.cards.r.Raze.class)); + cards.add(new SetCardInfo("Redeem", 33, Rarity.UNCOMMON, mage.cards.r.Redeem.class)); + cards.add(new SetCardInfo("Reflexes", 208, Rarity.COMMON, mage.cards.r.Reflexes.class)); + cards.add(new SetCardInfo("Rejuvenate", 271, Rarity.COMMON, mage.cards.r.Rejuvenate.class)); + cards.add(new SetCardInfo("Remote Isle", 324, Rarity.COMMON, mage.cards.r.RemoteIsle.class)); + cards.add(new SetCardInfo("Reprocess", 154, Rarity.RARE, mage.cards.r.Reprocess.class)); + cards.add(new SetCardInfo("Rescind", 92, Rarity.COMMON, mage.cards.r.Rescind.class)); + cards.add(new SetCardInfo("Retaliation", 272, Rarity.UNCOMMON, mage.cards.r.Retaliation.class)); + cards.add(new SetCardInfo("Rewind", 93, Rarity.COMMON, mage.cards.r.Rewind.class)); + cards.add(new SetCardInfo("Rune of Protection: Artifacts", 35, Rarity.UNCOMMON, mage.cards.r.RuneOfProtectionArtifacts.class)); + cards.add(new SetCardInfo("Rune of Protection: Black", 36, Rarity.COMMON, mage.cards.r.RuneOfProtectionBlack.class)); + cards.add(new SetCardInfo("Rune of Protection: Blue", 37, Rarity.COMMON, mage.cards.r.RuneOfProtectionBlue.class)); + cards.add(new SetCardInfo("Rune of Protection: Green", 38, Rarity.COMMON, mage.cards.r.RuneOfProtectionGreen.class)); + cards.add(new SetCardInfo("Rune of Protection: Lands", 39, Rarity.RARE, mage.cards.r.RuneOfProtectionLands.class)); + cards.add(new SetCardInfo("Rune of Protection: Red", 40, Rarity.COMMON, mage.cards.r.RuneOfProtectionRed.class)); + cards.add(new SetCardInfo("Rune of Protection: White", 41, Rarity.COMMON, mage.cards.r.RuneOfProtectionWhite.class)); + cards.add(new SetCardInfo("Sanctum Custodian", 42, Rarity.COMMON, mage.cards.s.SanctumCustodian.class)); + cards.add(new SetCardInfo("Sanctum Guardian", 43, Rarity.UNCOMMON, mage.cards.s.SanctumGuardian.class)); + cards.add(new SetCardInfo("Sandbar Merfolk", 94, Rarity.COMMON, mage.cards.s.SandbarMerfolk.class)); + cards.add(new SetCardInfo("Sandbar Serpent", 95, Rarity.UNCOMMON, mage.cards.s.SandbarSerpent.class)); + cards.add(new SetCardInfo("Sanguine Guard", 155, Rarity.UNCOMMON, mage.cards.s.SanguineGuard.class)); + cards.add(new SetCardInfo("Scald", 211, Rarity.UNCOMMON, mage.cards.s.Scald.class)); + cards.add(new SetCardInfo("Scoria Wurm", 212, Rarity.RARE, mage.cards.s.ScoriaWurm.class)); + cards.add(new SetCardInfo("Scrap", 213, Rarity.COMMON, mage.cards.s.Scrap.class)); + cards.add(new SetCardInfo("Seasoned Marshal", 44, Rarity.UNCOMMON, mage.cards.s.SeasonedMarshal.class)); + cards.add(new SetCardInfo("Serra Avatar", 45, Rarity.RARE, mage.cards.s.SerraAvatar.class)); + cards.add(new SetCardInfo("Serra's Embrace", 47, Rarity.UNCOMMON, mage.cards.s.SerrasEmbrace.class)); + cards.add(new SetCardInfo("Serra's Sanctum", 325, Rarity.RARE, mage.cards.s.SerrasSanctum.class)); + cards.add(new SetCardInfo("Serra Zealot", 46, Rarity.COMMON, mage.cards.s.SerraZealot.class)); + cards.add(new SetCardInfo("Shimmering Barrier", 50, Rarity.UNCOMMON, mage.cards.s.ShimmeringBarrier.class)); + cards.add(new SetCardInfo("Shivan Gorge", 326, Rarity.RARE, mage.cards.s.ShivanGorge.class)); + cards.add(new SetCardInfo("Shivan Hellkite", 214, Rarity.RARE, mage.cards.s.ShivanHellkite.class)); + cards.add(new SetCardInfo("Shivan Raptor", 215, Rarity.UNCOMMON, mage.cards.s.ShivanRaptor.class)); + cards.add(new SetCardInfo("Shiv's Embrace", 216, Rarity.UNCOMMON, mage.cards.s.ShivsEmbrace.class)); + cards.add(new SetCardInfo("Show and Tell", 96, Rarity.RARE, mage.cards.s.ShowAndTell.class)); + cards.add(new SetCardInfo("Shower of Sparks", 217, Rarity.COMMON, mage.cards.s.ShowerOfSparks.class)); + cards.add(new SetCardInfo("Sicken", 156, Rarity.COMMON, mage.cards.s.Sicken.class)); + cards.add(new SetCardInfo("Silent Attendant", 51, Rarity.COMMON, mage.cards.s.SilentAttendant.class)); + cards.add(new SetCardInfo("Skirge Familiar", 157, Rarity.UNCOMMON, mage.cards.s.SkirgeFamiliar.class)); + cards.add(new SetCardInfo("Skittering Skirge", 158, Rarity.COMMON, mage.cards.s.SkitteringSkirge.class)); + cards.add(new SetCardInfo("Sleeper Agent", 159, Rarity.RARE, mage.cards.s.SleeperAgent.class)); + cards.add(new SetCardInfo("Slippery Karst", 327, Rarity.COMMON, mage.cards.s.SlipperyKarst.class)); + cards.add(new SetCardInfo("Smokestack", 309, Rarity.RARE, mage.cards.s.Smokestack.class)); + cards.add(new SetCardInfo("Smoldering Crater", 328, Rarity.COMMON, mage.cards.s.SmolderingCrater.class)); + cards.add(new SetCardInfo("Sneak Attack", 218, Rarity.RARE, mage.cards.s.SneakAttack.class)); + cards.add(new SetCardInfo("Spined Fluke", 160, Rarity.UNCOMMON, mage.cards.s.SpinedFluke.class)); + cards.add(new SetCardInfo("Spire Owl", 98, Rarity.COMMON, mage.cards.s.SpireOwl.class)); + cards.add(new SetCardInfo("Spreading Algae", 274, Rarity.UNCOMMON, mage.cards.s.SpreadingAlgae.class)); + cards.add(new SetCardInfo("Steam Blast", 219, Rarity.UNCOMMON, mage.cards.s.SteamBlast.class)); + cards.add(new SetCardInfo("Stern Proctor", 99, Rarity.UNCOMMON, mage.cards.s.SternProctor.class)); + cards.add(new SetCardInfo("Stroke of Genius", 100, Rarity.RARE, mage.cards.s.StrokeOfGenius.class)); + cards.add(new SetCardInfo("Sunder", 101, Rarity.RARE, mage.cards.s.Sunder.class)); + cards.add(new SetCardInfo("Swamp", 339, Rarity.LAND, mage.cards.basiclands.Swamp.class, new CardGraphicInfo(null, true))); + cards.add(new SetCardInfo("Swamp", 340, Rarity.LAND, mage.cards.basiclands.Swamp.class, new CardGraphicInfo(null, true))); + cards.add(new SetCardInfo("Swamp", 341, Rarity.LAND, mage.cards.basiclands.Swamp.class, new CardGraphicInfo(null, true))); + cards.add(new SetCardInfo("Swamp", 342, Rarity.LAND, mage.cards.basiclands.Swamp.class, new CardGraphicInfo(null, true))); + cards.add(new SetCardInfo("Symbiosis", 275, Rarity.COMMON, mage.cards.s.Symbiosis.class)); + cards.add(new SetCardInfo("Tainted Aether", 161, Rarity.RARE, mage.cards.t.TaintedAether.class)); + cards.add(new SetCardInfo("Telepathy", 102, Rarity.UNCOMMON, mage.cards.t.Telepathy.class)); + cards.add(new SetCardInfo("Thran Quarry", 329, Rarity.RARE, mage.cards.t.ThranQuarry.class)); + cards.add(new SetCardInfo("Thran Turbine", 311, Rarity.UNCOMMON, mage.cards.t.ThranTurbine.class)); + cards.add(new SetCardInfo("Thundering Giant", 221, Rarity.UNCOMMON, mage.cards.t.ThunderingGiant.class)); + cards.add(new SetCardInfo("Time Spiral", 103, Rarity.RARE, mage.cards.t.TimeSpiral.class)); + cards.add(new SetCardInfo("Titania's Boon", 276, Rarity.UNCOMMON, mage.cards.t.TitaniasBoon.class)); + cards.add(new SetCardInfo("Titania's Chosen", 277, Rarity.UNCOMMON, mage.cards.t.TitaniasChosen.class)); + cards.add(new SetCardInfo("Tolarian Academy", 330, Rarity.RARE, mage.cards.t.TolarianAcademy.class)); + cards.add(new SetCardInfo("Tolarian Winds", 104, Rarity.COMMON, mage.cards.t.TolarianWinds.class)); + cards.add(new SetCardInfo("Torch Song", 222, Rarity.UNCOMMON, mage.cards.t.TorchSong.class)); + cards.add(new SetCardInfo("Treefolk Seedlings", 278, Rarity.UNCOMMON, mage.cards.t.TreefolkSeedlings.class)); + cards.add(new SetCardInfo("Treetop Rangers", 279, Rarity.COMMON, mage.cards.t.TreetopRangers.class)); + cards.add(new SetCardInfo("Turnabout", 105, Rarity.UNCOMMON, mage.cards.t.Turnabout.class)); + cards.add(new SetCardInfo("Umbilicus", 312, Rarity.RARE, mage.cards.u.Umbilicus.class)); + cards.add(new SetCardInfo("Unnerve", 162, Rarity.COMMON, mage.cards.u.Unnerve.class)); + cards.add(new SetCardInfo("Unworthy Dead", 163, Rarity.COMMON, mage.cards.u.UnworthyDead.class)); + cards.add(new SetCardInfo("Urza's Armor", 313, Rarity.UNCOMMON, mage.cards.u.UrzasArmor.class)); + cards.add(new SetCardInfo("Vampiric Embrace", 164, Rarity.UNCOMMON, mage.cards.v.VampiricEmbrace.class)); + cards.add(new SetCardInfo("Vernal Bloom", 281, Rarity.RARE, mage.cards.v.VernalBloom.class)); + cards.add(new SetCardInfo("Viashino Outrider", 223, Rarity.COMMON, mage.cards.v.ViashinoOutrider.class)); + cards.add(new SetCardInfo("Viashino Runner", 224, Rarity.COMMON, mage.cards.v.ViashinoRunner.class)); + cards.add(new SetCardInfo("Viashino Sandswimmer", 225, Rarity.RARE, mage.cards.v.ViashinoSandswimmer.class)); + cards.add(new SetCardInfo("Viashino Weaponsmith", 226, Rarity.COMMON, mage.cards.v.ViashinoWeaponsmith.class)); + cards.add(new SetCardInfo("Victimize", 166, Rarity.UNCOMMON, mage.cards.v.Victimize.class)); + cards.add(new SetCardInfo("Vile Requiem", 167, Rarity.UNCOMMON, mage.cards.v.VileRequiem.class)); + cards.add(new SetCardInfo("Voice of Grace", 54, Rarity.UNCOMMON, mage.cards.v.VoiceOfGrace.class)); + cards.add(new SetCardInfo("Voice of Law", 55, Rarity.UNCOMMON, mage.cards.v.VoiceOfLaw.class)); + cards.add(new SetCardInfo("Voltaic Key", 314, Rarity.UNCOMMON, mage.cards.v.VoltaicKey.class)); + cards.add(new SetCardInfo("Vug Lizard", 227, Rarity.UNCOMMON, mage.cards.v.VugLizard.class)); + cards.add(new SetCardInfo("Western Paladin", 168, Rarity.RARE, mage.cards.w.WesternPaladin.class)); + cards.add(new SetCardInfo("Whetstone", 316, Rarity.RARE, mage.cards.w.Whetstone.class)); + cards.add(new SetCardInfo("Whirlwind", 283, Rarity.RARE, mage.cards.w.Whirlwind.class)); + cards.add(new SetCardInfo("Wild Dogs", 284, Rarity.COMMON, mage.cards.w.WildDogs.class)); + cards.add(new SetCardInfo("Wildfire", 228, Rarity.RARE, mage.cards.w.Wildfire.class)); + cards.add(new SetCardInfo("Windfall", 111, Rarity.UNCOMMON, mage.cards.w.Windfall.class)); + cards.add(new SetCardInfo("Winding Wurm", 285, Rarity.COMMON, mage.cards.w.WindingWurm.class)); + cards.add(new SetCardInfo("Wirecat", 317, Rarity.UNCOMMON, mage.cards.w.Wirecat.class)); + cards.add(new SetCardInfo("Witch Engine", 169, Rarity.RARE, mage.cards.w.WitchEngine.class)); + cards.add(new SetCardInfo("Wizard Mentor", 112, Rarity.COMMON, mage.cards.w.WizardMentor.class)); + cards.add(new SetCardInfo("Worn Powerstone", 318, Rarity.UNCOMMON, mage.cards.w.WornPowerstone.class)); + cards.add(new SetCardInfo("Worship", 57, Rarity.RARE, mage.cards.w.Worship.class)); + cards.add(new SetCardInfo("Yawgmoth's Edict", 170, Rarity.UNCOMMON, mage.cards.y.YawgmothsEdict.class)); + cards.add(new SetCardInfo("Yawgmoth's Will", 171, Rarity.RARE, mage.cards.y.YawgmothsWill.class)); + cards.add(new SetCardInfo("Zephid", 113, Rarity.RARE, mage.cards.z.Zephid.class)); + cards.add(new SetCardInfo("Zephid's Embrace", 114, Rarity.UNCOMMON, mage.cards.z.ZephidsEmbrace.class)); + } +}