Refactored RevealCardsFromLibraryUntil and some cards to use it

This commit is contained in:
Styxo 2016-12-13 09:21:11 +01:00
parent 78e730505e
commit f88d3f0bbf
15 changed files with 788 additions and 903 deletions

View file

@ -41,6 +41,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.Zone;
import mage.counters.CounterType;
import mage.filter.common.FilterCreatureCard;
import mage.target.common.TargetCreaturePermanent;
@ -63,7 +64,7 @@ public class AjaniValiantProtector extends CardImpl {
this.addAbility(ability);
// +1: Reveal cards from the top of your library until you reveal a creature card. Put that card into your hand and the rest on the bottom of your library in a random order.
this.addAbility(new LoyaltyAbility(new RevealCardsFromLibraryUntilEffect(new FilterCreatureCard()), 1));
this.addAbility(new LoyaltyAbility(new RevealCardsFromLibraryUntilEffect(new FilterCreatureCard(), Zone.HAND, Zone.LIBRARY), 1));
// -11: Put X +1/+1 counters on target creature, where X is your life total. That creature gains trample until end of turn.
Effect effect = new AddCountersTargetEffect(CounterType.P1P1.createInstance(), new ControllerLifeCount());

View file

@ -0,0 +1,66 @@
/*
* 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.a;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.DealsDamageToOpponentTriggeredAbility;
import mage.abilities.effects.common.RevealCardsFromLibraryUntilEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Zone;
import mage.filter.common.FilterLandCard;
/**
*
* @author Styxo
*/
public class AvengingDruid extends CardImpl {
public AvengingDruid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}");
this.subtype.add("Human");
this.subtype.add("Druid");
this.power = new MageInt(1);
this.toughness = new MageInt(3);
// Whenever Avenging Druid deals damage to an opponent, you may reveal cards from the top of your library until you reveal a land card. If you do, put that card onto the battlefield and put all other cards revealed this way into your graveyard.
this.addAbility(new DealsDamageToOpponentTriggeredAbility(new RevealCardsFromLibraryUntilEffect(new FilterLandCard(), Zone.BATTLEFIELD, Zone.GRAVEYARD), true));
}
public AvengingDruid(final AvengingDruid card) {
super(card);
}
@Override
public AvengingDruid copy() {
return new AvengingDruid(this);
}
}

View file

@ -51,7 +51,7 @@ public class EvolutionaryLeap extends CardImpl {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{G}");
// {G}, Sacrifice a creature: Reveal cards from the top of your library until you reveal a creature card. Put that card into your hand and the rest on the bottom of your library in a random order.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new RevealCardsFromLibraryUntilEffect(new FilterCreatureCard()), new ManaCostsImpl("{G}"));
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new RevealCardsFromLibraryUntilEffect(new FilterCreatureCard(), Zone.HAND, Zone.LIBRARY), new ManaCostsImpl("{G}"));
ability.addCost(new SacrificeTargetCost(new TargetControlledCreaturePermanent(new FilterControlledCreaturePermanent("a creature"))));
this.addAbility(ability);
}

View file

@ -28,26 +28,19 @@
package mage.cards.f;
import java.util.UUID;
import mage.MageObject;
import mage.abilities.Ability;
import mage.abilities.common.DiesCreatureTriggeredAbility;
import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.DoIfCostPaid;
import mage.cards.Card;
import mage.abilities.effects.common.RevealCardsFromLibraryUntilEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.cards.Cards;
import mage.cards.CardsImpl;
import mage.constants.CardType;
import mage.constants.Outcome;
import mage.constants.TargetController;
import mage.constants.Zone;
import mage.filter.common.FilterCreatureCard;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.permanent.ControllerPredicate;
import mage.game.Game;
import mage.players.Player;
/**
*
@ -56,17 +49,17 @@ import mage.players.Player;
public class Foster extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("a creature you control");
static {
filter.add(new ControllerPredicate(TargetController.YOU));
}
public Foster(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{G}{G}");
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{G}{G}");
// Whenever a creature you control dies, you may pay {1}. If you do, reveal cards from the top of your library until you reveal a creature card. Put that card into your hand and the rest into your graveyard.
Ability ability = new DiesCreatureTriggeredAbility(
new DoIfCostPaid(new FosterEffect(), new GenericManaCost(1)),
new DoIfCostPaid(new RevealCardsFromLibraryUntilEffect(new FilterCreatureCard(), Zone.HAND, Zone.GRAVEYARD), new GenericManaCost(1)),
false, filter);
this.addAbility(ability);
}
@ -80,53 +73,3 @@ public class Foster extends CardImpl {
return new Foster(this);
}
}
class FosterEffect extends OneShotEffect {
private static final FilterCreatureCard filter = new FilterCreatureCard();
public FosterEffect() {
super(Outcome.ReturnToHand);
this.staticText = "reveal cards from the top of your library until you reveal a creature card. Put that card into your hand and the rest into your graveyard";
}
public FosterEffect(final FosterEffect effect) {
super(effect);
}
@Override
public FosterEffect copy() {
return new FosterEffect(this);
}
@Override
public boolean apply(Game game, Ability source) {
Player controller = game.getPlayer(source.getControllerId());
MageObject sourceObject = source.getSourceObject(game);
if (controller == null || sourceObject == null) {
return false;
}
Cards cards = new CardsImpl();
Card cardFound = null;
while (controller.getLibrary().size() > 0) {
Card card = controller.getLibrary().removeFromTop(game);
if (card != null) {
cards.add(card);
if (filter.match(card, game)){
cardFound = card;
break;
}
}
}
if (!cards.isEmpty()) {
controller.revealCards(sourceObject.getName(), cards, game);
if (cardFound != null) {
controller.moveCards(cardFound, Zone.HAND, source, game);
cards.remove(cardFound);
}
controller.moveCards(cards, Zone.GRAVEYARD, source, game);
}
return true;
}
}

View file

@ -29,23 +29,16 @@ package mage.cards.g;
import java.util.UUID;
import mage.MageInt;
import mage.MageObject;
import mage.abilities.Ability;
import mage.abilities.common.DiesTriggeredAbility;
import mage.abilities.costs.common.ExileSourceFromGraveCost;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.DoIfCostPaid;
import mage.abilities.effects.common.ExileSourceEffect;
import mage.cards.Card;
import mage.abilities.effects.common.RevealCardsFromLibraryUntilEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.cards.Cards;
import mage.cards.CardsImpl;
import mage.constants.CardType;
import mage.constants.Outcome;
import mage.constants.Zone;
import mage.game.Game;
import mage.players.Player;
import mage.filter.common.FilterCreatureCard;
/**
*
@ -54,13 +47,13 @@ import mage.players.Player;
public class Gamekeeper extends CardImpl {
public Gamekeeper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}");
this.subtype.add("Elf");
this.power = new MageInt(2);
this.toughness = new MageInt(2);
// When Gamekeeper dies, you may exile it. If you do, reveal cards from the top of your library until you reveal a creature card. Put that card onto the battlefield and put all other cards revealed this way into your graveyard.
Ability ability = new DiesTriggeredAbility(new DoIfCostPaid(new GamekeeperEffect(), new ExileSourceFromGraveCost(), "Exile to reveal cards from the top of your library until you reveal a creature card?"), false);
Ability ability = new DiesTriggeredAbility(new DoIfCostPaid(new RevealCardsFromLibraryUntilEffect(new FilterCreatureCard(), Zone.BATTLEFIELD, Zone.GRAVEYARD), new ExileSourceFromGraveCost(), "Exile to reveal cards from the top of your library until you reveal a creature card?"), false);
this.addAbility(ability);
}
@ -73,42 +66,3 @@ public class Gamekeeper extends CardImpl {
return new Gamekeeper(this);
}
}
class GamekeeperEffect extends OneShotEffect {
public GamekeeperEffect() {
super(Outcome.Benefit);
staticText = "reveal cards from the top of your library until you reveal a creature card. Put that card onto the battlefield and put all other cards revealed this way into your graveyard";
}
public GamekeeperEffect(final GamekeeperEffect effect) {
super(effect);
}
@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) {
new ExileSourceEffect().apply(game, source);
Cards revealedCards = new CardsImpl();
while (controller.getLibrary().size() > 0) {
Card card = controller.getLibrary().removeFromTop(game);
if (card.getCardType().contains(CardType.CREATURE)) {
controller.moveCards(card, Zone.BATTLEFIELD, source, game);
break;
}
revealedCards.add(card);
}
controller.revealCards(sourceObject.getIdName(), revealedCards, game);
controller.moveCards(revealedCards, Zone.GRAVEYARD, source, game);
return true;
}
return false;
}
@Override
public GamekeeperEffect copy() {
return new GamekeeperEffect(this);
}
}

View file

@ -29,23 +29,16 @@ package mage.cards.h;
import java.util.UUID;
import mage.MageInt;
import mage.MageObject;
import mage.abilities.Ability;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.OneShotEffect;
import mage.cards.Card;
import mage.abilities.effects.common.RevealCardsFromLibraryUntilEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.cards.CardsImpl;
import mage.constants.CardType;
import mage.constants.Outcome;
import mage.constants.Zone;
import mage.filter.common.FilterBasicLandCard;
import mage.game.Game;
import mage.players.Library;
import mage.players.Player;
/**
*
@ -54,7 +47,7 @@ import mage.players.Player;
public class HermitDruid extends CardImpl {
public HermitDruid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}");
this.subtype.add("Human");
this.subtype.add("Druid");
@ -62,7 +55,7 @@ public class HermitDruid extends CardImpl {
this.toughness = new MageInt(1);
// {G}, {tap}: Reveal cards from the top of your library until you reveal a basic land card. Put that card into your hand and all other cards revealed this way into your graveyard.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new HermitDruidEffect(), new ManaCostsImpl("{G}"));
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new RevealCardsFromLibraryUntilEffect(new FilterBasicLandCard(), Zone.HAND, Zone.GRAVEYARD), new ManaCostsImpl("{G}"));
ability.addCost(new TapSourceCost());
this.addAbility(ability);
}
@ -76,57 +69,3 @@ public class HermitDruid extends CardImpl {
return new HermitDruid(this);
}
}
class HermitDruidEffect extends OneShotEffect {
public HermitDruidEffect() {
super(Outcome.Benefit);
this.staticText = "Reveal cards from the top of your library until you reveal a basic land card. Put that card into your hand and all other cards revealed this way into your graveyard";
}
public HermitDruidEffect(final HermitDruidEffect effect) {
super(effect);
}
@Override
public HermitDruidEffect copy() {
return new HermitDruidEffect(this);
}
@Override
public boolean apply(Game game, Ability source) {
Player player = game.getPlayer(source.getControllerId());
MageObject sourceObject= game.getObject(source.getSourceId());
if (player != null) {
Library library = player.getLibrary();
if (library.size() < 1) {
return true;
}
CardsImpl cards = new CardsImpl();
Card card;
FilterBasicLandCard filter = new FilterBasicLandCard();
do {
card = library.removeFromTop(game);
if (card != null) {
if (filter.match(card, game)) {
player.moveCards(card, Zone.HAND, source, game);
} else {
cards.add(card);
}
}
} while (library.size() > 0 && card != null && !filter.match(card, game));
if (!cards.isEmpty()) {
player.moveCards(cards, Zone.GRAVEYARD, source, game);
if (card != null) {
cards.add(card);
}
player.revealCards(sourceObject.getName(), cards, game);
}
return true;
}
return false;
}
}

View file

@ -29,28 +29,21 @@ package mage.cards.j;
import java.util.UUID;
import mage.MageInt;
import mage.MageObject;
import mage.abilities.Ability;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.common.SacrificeTargetCost;
import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.OneShotEffect;
import mage.cards.Card;
import mage.abilities.effects.common.RevealCardsFromLibraryUntilEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.cards.CardsImpl;
import mage.constants.CardType;
import mage.constants.Outcome;
import mage.constants.Zone;
import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.common.FilterCreatureCard;
import mage.filter.predicate.Predicates;
import mage.filter.predicate.mageobject.SupertypePredicate;
import mage.filter.predicate.permanent.AnotherPredicate;
import mage.game.Game;
import mage.players.Library;
import mage.players.Player;
import mage.target.common.TargetControlledCreaturePermanent;
/**
@ -59,14 +52,16 @@ import mage.target.common.TargetControlledCreaturePermanent;
*/
public class JaliraMasterPolymorphist extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("another creature");
private static final FilterCreatureCard filterCard = new FilterCreatureCard("nonlegendary creature card");
private static final FilterControlledCreaturePermanent filterPermanent = new FilterControlledCreaturePermanent("another creature");
static {
filter.add(new AnotherPredicate());
filterPermanent.add(new AnotherPredicate());
filterCard.add(Predicates.not(new SupertypePredicate("Legendary")));
}
public JaliraMasterPolymorphist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}");
this.supertype.add("Legendary");
this.subtype.add("Human");
this.subtype.add("Wizard");
@ -76,9 +71,9 @@ public class JaliraMasterPolymorphist extends CardImpl {
// {2}{U}, {T}, Sacrifice another creature: Reveal cards from the top of your library until you reveal a nonlegendary creature card.
// Put that card onto the battlefield and the rest on the bottom of your library in a random order.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new JaliraMasterPolymorphistEffect(), new ManaCostsImpl("{2}{U}"));
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new RevealCardsFromLibraryUntilEffect(filterCard, Zone.BATTLEFIELD, Zone.LIBRARY), new ManaCostsImpl("{2}{U}"));
ability.addCost(new TapSourceCost());
ability.addCost(new SacrificeTargetCost(new TargetControlledCreaturePermanent(1, 1, filter, true)));
ability.addCost(new SacrificeTargetCost(new TargetControlledCreaturePermanent(1, 1, filterPermanent, true)));
this.addAbility(ability);
}
@ -92,63 +87,3 @@ public class JaliraMasterPolymorphist extends CardImpl {
return new JaliraMasterPolymorphist(this);
}
}
class JaliraMasterPolymorphistEffect extends OneShotEffect {
private static final FilterCreatureCard filter = new FilterCreatureCard("nonlegendary creature card");
static {
filter.add(Predicates.not(new SupertypePredicate("Legendary")));
}
public JaliraMasterPolymorphistEffect() {
super(Outcome.PutCardInPlay);
this.staticText = "Reveal cards from the top of your library until you reveal a nonlegendary creature card. Put that card onto the battlefield and the rest on the bottom of your library in a random order";
}
public JaliraMasterPolymorphistEffect(final JaliraMasterPolymorphistEffect effect) {
super(effect);
}
@Override
public JaliraMasterPolymorphistEffect copy() {
return new JaliraMasterPolymorphistEffect(this);
}
@Override
public boolean apply(Game game, Ability source) {
Player controller = game.getPlayer(source.getControllerId());
MageObject sourceObject = game.getObject(source.getSourceId());
if (controller != null && controller.getLibrary().size() > 0) {
CardsImpl cards = new CardsImpl();
Library library = controller.getLibrary();
Card card = null;
do {
card = library.removeFromTop(game);
if (card != null) {
cards.add(card);
}
} while (library.size() > 0 && card != null && !filter.match(card, game));
// reveal cards
if (!cards.isEmpty()) {
controller.revealCards(sourceObject.getIdName(), cards, game);
}
if (card != null && filter.match(card, game)) {
// put nonlegendary creature card to battlefield
controller.moveCards(card, Zone.BATTLEFIELD, source, game);
// remove it from revealed card list
cards.remove(card);
}
// Put the rest on the bottom of your library in a random order
while (cards.size() > 0) {
card = cards.getRandom(game);
if (card != null) {
cards.remove(card);
controller.moveCardToLibraryWithInfo(card, source.getSourceId(), game, Zone.HAND, false, false);
}
}
return true;
}
return false;
}
}

View file

@ -28,21 +28,13 @@
package mage.cards.r;
import java.util.UUID;
import mage.MageObject;
import mage.abilities.Ability;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.ClashWinReturnToHandSpellEffect;
import mage.cards.Card;
import mage.abilities.effects.common.RevealCardsFromLibraryUntilEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.cards.Cards;
import mage.cards.CardsImpl;
import mage.constants.CardType;
import mage.constants.Outcome;
import mage.constants.Zone;
import mage.filter.common.FilterLandCard;
import mage.game.Game;
import mage.players.Player;
/**
*
@ -51,10 +43,10 @@ import mage.players.Player;
public class RecrossThePaths extends CardImpl {
public RecrossThePaths(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{G}");
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{G}");
// Reveal cards from the top of your library until you reveal a land card. Put that card onto the battlefield and the rest on the bottom of your library in any order.
this.getSpellAbility().addEffect(new RecrossThePathsEffect());
this.getSpellAbility().addEffect(new RevealCardsFromLibraryUntilEffect(new FilterLandCard(), Zone.BATTLEFIELD, Zone.LIBRARY, false, true));
// Clash with an opponent. If you win, return Recross the Paths to its owner's hand.
this.getSpellAbility().addEffect(ClashWinReturnToHandSpellEffect.getInstance());
@ -69,53 +61,3 @@ public class RecrossThePaths extends CardImpl {
return new RecrossThePaths(this);
}
}
class RecrossThePathsEffect extends OneShotEffect {
private static final FilterLandCard filter = new FilterLandCard();
public RecrossThePathsEffect() {
super(Outcome.ReturnToHand);
this.staticText = "reveal cards from the top of your library until you reveal a land card. Put that card onto the battlefield and the rest on the bottom of your library in any order";
}
public RecrossThePathsEffect(final RecrossThePathsEffect effect) {
super(effect);
}
@Override
public RecrossThePathsEffect copy() {
return new RecrossThePathsEffect(this);
}
@Override
public boolean apply(Game game, Ability source) {
Player controller = game.getPlayer(source.getControllerId());
MageObject sourceObject = source.getSourceObject(game);
if (controller == null || sourceObject == null) {
return false;
}
Cards cards = new CardsImpl();
Card cardFound = null;
while (controller.getLibrary().size() > 0) {
Card card = controller.getLibrary().removeFromTop(game);
if (card != null) {
cards.add(card);
if (filter.match(card, game)) {
cardFound = card;
break;
}
}
}
if (!cards.isEmpty()) {
controller.revealCards(sourceObject.getIdName(), cards, game);
if (cardFound != null) {
controller.moveCards(cardFound, Zone.BATTLEFIELD, source, game);
cards.remove(cardFound);
}
controller.putCardsOnBottomOfLibrary(cards, game, source, true);
}
return true;
}
}

View file

@ -0,0 +1,79 @@
/*
* 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.s;
import java.util.UUID;
import mage.MageInt;
import mage.ObjectColor;
import mage.abilities.Ability;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.common.SacrificeSourceCost;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.RevealCardsFromLibraryUntilEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Zone;
import mage.filter.FilterCard;
import mage.filter.predicate.mageobject.ColorPredicate;
/**
*
* @author Styxo
*/
public class SacredGuide extends CardImpl {
private static final FilterCard filterCard = new FilterCard("white card");
static {
filterCard.add(new ColorPredicate(ObjectColor.WHITE));
}
public SacredGuide(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{W}");
this.subtype.add("Human");
this.subtype.add("Cleric");
this.power = new MageInt(1);
this.toughness = new MageInt(1);
// {1}{W}, Sacrifice Sacred Guide: Reveal cards from the top of your library until you reveal a white card. Put that card into your hand and exile all other cards revealed this way.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new RevealCardsFromLibraryUntilEffect(filterCard, Zone.HAND, Zone.EXILED), new ManaCostsImpl("{1}{W}"));
ability.addCost(new SacrificeSourceCost());
this.addAbility(ability);
}
public SacredGuide(final SacredGuide card) {
super(card);
}
@Override
public SacredGuide copy() {
return new SacredGuide(this);
}
}

View file

@ -45,6 +45,7 @@ import mage.constants.Duration;
import mage.constants.Layer;
import mage.constants.Outcome;
import mage.constants.SubLayer;
import mage.constants.Zone;
import mage.filter.FilterPermanent;
import mage.filter.common.FilterArtifactCard;
import mage.filter.common.FilterControlledArtifactPermanent;
@ -68,7 +69,7 @@ public class TezzeretMasterOfMetal extends CardImpl {
this.addAbility(new PlanswalkerEntersWithLoyalityCountersAbility(5));
// +1: Reveal cards from the top of your library until you reveal an artifact card. Put that card into your hand and the rest on the bottom of your library in a random order.
this.addAbility(new LoyaltyAbility(new RevealCardsFromLibraryUntilEffect(new FilterArtifactCard()), 1));
this.addAbility(new LoyaltyAbility(new RevealCardsFromLibraryUntilEffect(new FilterArtifactCard(), Zone.HAND, Zone.LIBRARY), 1));
// -3: Target opponent loses life equal to the number of artifacts you control.
Ability ability = new LoyaltyAbility(new LoseLifeTargetEffect(new PermanentsOnBattlefieldCount(new FilterControlledArtifactPermanent())), -3);

View file

@ -29,24 +29,17 @@ package mage.cards.t;
import java.util.UUID;
import mage.MageInt;
import mage.MageObject;
import mage.abilities.Ability;
import mage.abilities.TriggeredAbility;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.condition.common.KickedCondition;
import mage.abilities.decorator.ConditionalTriggeredAbility;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.RevealCardsFromLibraryUntilEffect;
import mage.abilities.keyword.KickerAbility;
import mage.cards.Card;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.cards.Cards;
import mage.cards.CardsImpl;
import mage.constants.CardType;
import mage.constants.Outcome;
import mage.constants.Zone;
import mage.game.Game;
import mage.players.Player;
import mage.filter.common.FilterCreatureCard;
/**
*
@ -55,7 +48,7 @@ import mage.players.Player;
public class ThicketElemental extends CardImpl {
public ThicketElemental(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{G}");
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}{G}");
this.subtype.add("Elemental");
this.power = new MageInt(4);
this.toughness = new MageInt(4);
@ -64,7 +57,7 @@ public class ThicketElemental extends CardImpl {
this.addAbility(new KickerAbility("{1}{G}"));
// When Thicket Elemental enters the battlefield, if it was kicked, you may reveal cards from the top of your library until you reveal a creature card. If you do, put that card onto the battlefield and shuffle all other cards revealed this way into your library.
TriggeredAbility ability = new EntersBattlefieldTriggeredAbility(new ThicketElementalEffect());
TriggeredAbility ability = new EntersBattlefieldTriggeredAbility(new RevealCardsFromLibraryUntilEffect(new FilterCreatureCard(), Zone.BATTLEFIELD, Zone.LIBRARY, true));
this.addAbility(new ConditionalTriggeredAbility(ability, KickedCondition.getInstance(),
"When {this} enters the battlefield, if it was kicked, you may reveal cards from the top of your library until you reveal a creature card. If you do, put that card onto the battlefield and shuffle all other cards revealed this way into your library."));
}
@ -78,42 +71,3 @@ public class ThicketElemental extends CardImpl {
return new ThicketElemental(this);
}
}
class ThicketElementalEffect extends OneShotEffect {
public ThicketElementalEffect() {
super(Outcome.Benefit);
staticText = "if {this} was kicked, reveal cards from the top of your library until you reveal a creature card. Put that card onto the battlefield and shuffle all other cards revealed this way into your library";
}
public ThicketElementalEffect(final ThicketElementalEffect effect) {
super(effect);
}
@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) {
Cards revealedCards = new CardsImpl();
while (controller.getLibrary().size() > 0) {
Card card = controller.getLibrary().removeFromTop(game);
if (card.getCardType().contains(CardType.CREATURE)) {
controller.moveCards(card, Zone.BATTLEFIELD, source, game);
break;
}
revealedCards.add(card);
}
controller.revealCards(sourceObject.getIdName(), revealedCards, game);
controller.moveCards(revealedCards, Zone.LIBRARY, source, game);
controller.shuffleLibrary(source, game);
return true;
}
return false;
}
@Override
public ThicketElementalEffect copy() {
return new ThicketElementalEffect(this);
}
}

View file

@ -68,8 +68,8 @@ public class AetherRevolt extends ExpansionSet {
cards.add(new SetCardInfo("Ajani, Valiant Protector", 185, Rarity.MYTHIC, mage.cards.a.AjaniValiantProtector.class));
cards.add(new SetCardInfo("Consulate Crackdown", 11, Rarity.RARE, mage.cards.c.ConsulateCrackdown.class));
cards.add(new SetCardInfo("Disallow", 31, Rarity.RARE, mage.cards.d.Disallow.class));
cards.add(new SetCardInfo("Tezzeret, Master of Metal", 190, Rarity.MYTHIC, mage.cards.t.TezzeretMasterOfMetal.class));
cards.add(new SetCardInfo("Pia's Revolution", 91, Rarity.RARE, mage.cards.p.PiasRevolution.class));
cards.add(new SetCardInfo("Tezzeret, Master of Metal", 190, Rarity.MYTHIC, mage.cards.t.TezzeretMasterOfMetal.class));
cards.add(new SetCardInfo("Trophy Mage", 48, Rarity.UNCOMMON, mage.cards.t.TrophyMage.class));
cards.add(new SetCardInfo("Yaheeni's Expertise", 75, Rarity.RARE, mage.cards.y.YaheenisExpertise.class));
}

View file

@ -1,168 +1,169 @@
/*
* 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.ExpansionSet;
import mage.constants.Rarity;
import mage.constants.SetType;
/**
*
* @author North
*/
public class Exodus extends ExpansionSet {
private static final Exodus fINSTANCE = new Exodus();
public static Exodus getInstance() {
return fINSTANCE;
}
private Exodus() {
super("Exodus", "EXO", ExpansionSet.buildDate(1998, 6, 15), SetType.EXPANSION);
this.blockName = "Tempest";
this.parentSet = Tempest.getInstance();
this.hasBasicLands = false;
this.hasBoosters = true;
this.numBoosterLands = 0;
this.numBoosterCommon = 11;
this.numBoosterUncommon = 3;
this.numBoosterRare = 1;
this.ratioBoosterMythic = 0;
cards.add(new SetCardInfo("Allay", 1, Rarity.COMMON, mage.cards.a.Allay.class));
cards.add(new SetCardInfo("Anarchist", 79, Rarity.COMMON, mage.cards.a.Anarchist.class));
cards.add(new SetCardInfo("Angelic Blessing", 2, Rarity.COMMON, mage.cards.a.AngelicBlessing.class));
cards.add(new SetCardInfo("Bequeathal", 106, Rarity.COMMON, mage.cards.b.Bequeathal.class));
cards.add(new SetCardInfo("Carnophage", 53, Rarity.COMMON, mage.cards.c.Carnophage.class));
cards.add(new SetCardInfo("Cartographer", 107, Rarity.UNCOMMON, mage.cards.c.Cartographer.class));
cards.add(new SetCardInfo("Cataclysm", 3, Rarity.RARE, mage.cards.c.Cataclysm.class));
cards.add(new SetCardInfo("Cat Burglar", 54, Rarity.COMMON, mage.cards.c.CatBurglar.class));
cards.add(new SetCardInfo("Charging Paladin", 4, Rarity.COMMON, mage.cards.c.ChargingPaladin.class));
cards.add(new SetCardInfo("City of Traitors", 143, Rarity.RARE, mage.cards.c.CityOfTraitors.class));
cards.add(new SetCardInfo("Coat of Arms", 131, Rarity.RARE, mage.cards.c.CoatOfArms.class));
cards.add(new SetCardInfo("Convalescence", 5, Rarity.RARE, mage.cards.c.Convalescence.class));
cards.add(new SetCardInfo("Crashing Boars", 108, Rarity.UNCOMMON, mage.cards.c.CrashingBoars.class));
cards.add(new SetCardInfo("Culling the Weak", 55, Rarity.COMMON, mage.cards.c.CullingTheWeak.class));
cards.add(new SetCardInfo("Curiosity", 29, Rarity.UNCOMMON, mage.cards.c.Curiosity.class));
cards.add(new SetCardInfo("Cursed Flesh", 56, Rarity.COMMON, mage.cards.c.CursedFlesh.class));
cards.add(new SetCardInfo("Dauthi Cutthroat", 57, Rarity.UNCOMMON, mage.cards.d.DauthiCutthroat.class));
cards.add(new SetCardInfo("Dauthi Jackal", 58, Rarity.COMMON, mage.cards.d.DauthiJackal.class));
cards.add(new SetCardInfo("Dauthi Warlord", 59, Rarity.UNCOMMON, mage.cards.d.DauthiWarlord.class));
cards.add(new SetCardInfo("Death's Duet", 60, Rarity.COMMON, mage.cards.d.DeathsDuet.class));
cards.add(new SetCardInfo("Dominating Licid", 30, Rarity.RARE, mage.cards.d.DominatingLicid.class));
cards.add(new SetCardInfo("Elvish Berserker", 110, Rarity.COMMON, mage.cards.e.ElvishBerserker.class));
cards.add(new SetCardInfo("Entropic Specter", 61, Rarity.RARE, mage.cards.e.EntropicSpecter.class));
cards.add(new SetCardInfo("Ephemeron", 31, Rarity.RARE, mage.cards.e.Ephemeron.class));
cards.add(new SetCardInfo("Equilibrium", 32, Rarity.RARE, mage.cards.e.Equilibrium.class));
cards.add(new SetCardInfo("Erratic Portal", 132, Rarity.RARE, mage.cards.e.ErraticPortal.class));
cards.add(new SetCardInfo("Ertai, Wizard Adept", 33, Rarity.RARE, mage.cards.e.ErtaiWizardAdept.class));
cards.add(new SetCardInfo("Exalted Dragon", 6, Rarity.RARE, mage.cards.e.ExaltedDragon.class));
cards.add(new SetCardInfo("Fade Away", 34, Rarity.COMMON, mage.cards.f.FadeAway.class));
cards.add(new SetCardInfo("Flowstone Flood", 83, Rarity.UNCOMMON, mage.cards.f.FlowstoneFlood.class));
cards.add(new SetCardInfo("Forbid", 35, Rarity.UNCOMMON, mage.cards.f.Forbid.class));
cards.add(new SetCardInfo("Fugue", 62, Rarity.UNCOMMON, mage.cards.f.Fugue.class));
cards.add(new SetCardInfo("Furnace Brood", 84, Rarity.COMMON, mage.cards.f.FurnaceBrood.class));
cards.add(new SetCardInfo("Hatred", 64, Rarity.RARE, mage.cards.h.Hatred.class));
cards.add(new SetCardInfo("High Ground", 7, Rarity.UNCOMMON, mage.cards.h.HighGround.class));
cards.add(new SetCardInfo("Jackalope Herd", 111, Rarity.COMMON, mage.cards.j.JackalopeHerd.class));
cards.add(new SetCardInfo("Killer Whale", 37, Rarity.UNCOMMON, mage.cards.k.KillerWhale.class));
cards.add(new SetCardInfo("Kor Chant", 9, Rarity.COMMON, mage.cards.k.KorChant.class));
cards.add(new SetCardInfo("Mage il-Vec", 86, Rarity.COMMON, mage.cards.m.MageIlVec.class));
cards.add(new SetCardInfo("Manabond", 113, Rarity.RARE, mage.cards.m.Manabond.class));
cards.add(new SetCardInfo("Mana Breach", 38, Rarity.UNCOMMON, mage.cards.m.ManaBreach.class));
cards.add(new SetCardInfo("Maniacal Rage", 87, Rarity.COMMON, mage.cards.m.ManiacalRage.class));
cards.add(new SetCardInfo("Medicine Bag", 133, Rarity.UNCOMMON, mage.cards.m.MedicineBag.class));
cards.add(new SetCardInfo("Merfolk Looter", 39, Rarity.COMMON, mage.cards.m.MerfolkLooter.class));
cards.add(new SetCardInfo("Mindless Automaton", 135, Rarity.RARE, mage.cards.m.MindlessAutomaton.class));
cards.add(new SetCardInfo("Mind Over Matter", 40, Rarity.RARE, mage.cards.m.MindOverMatter.class));
cards.add(new SetCardInfo("Mirri, Cat Warrior", 114, Rarity.RARE, mage.cards.m.MirriCatWarrior.class));
cards.add(new SetCardInfo("Nausea", 67, Rarity.COMMON, mage.cards.n.Nausea.class));
cards.add(new SetCardInfo("Necrologia", 68, Rarity.UNCOMMON, mage.cards.n.Necrologia.class));
cards.add(new SetCardInfo("Null Brooch", 136, Rarity.RARE, mage.cards.n.NullBrooch.class));
cards.add(new SetCardInfo("Oath of Druids", 115, Rarity.RARE, mage.cards.o.OathOfDruids.class));
cards.add(new SetCardInfo("Oath of Lieges", 11, Rarity.RARE, mage.cards.o.OathOfLieges.class));
cards.add(new SetCardInfo("Ogre Shaman", 91, Rarity.RARE, mage.cards.o.OgreShaman.class));
cards.add(new SetCardInfo("Onslaught", 92, Rarity.COMMON, mage.cards.o.Onslaught.class));
cards.add(new SetCardInfo("Paladin en-Vec", 12, Rarity.RARE, mage.cards.p.PaladinEnVec.class));
cards.add(new SetCardInfo("Pandemonium", 93, Rarity.RARE, mage.cards.p.Pandemonium.class));
cards.add(new SetCardInfo("Peace of Mind", 13, Rarity.UNCOMMON, mage.cards.p.PeaceOfMind.class));
cards.add(new SetCardInfo("Pegasus Stampede", 14, Rarity.UNCOMMON, mage.cards.p.PegasusStampede.class));
cards.add(new SetCardInfo("Pit Spawn", 70, Rarity.RARE, mage.cards.p.PitSpawn.class));
cards.add(new SetCardInfo("Plaguebearer", 71, Rarity.RARE, mage.cards.p.Plaguebearer.class));
cards.add(new SetCardInfo("Plated Rootwalla", 116, Rarity.COMMON, mage.cards.p.PlatedRootwalla.class));
cards.add(new SetCardInfo("Price of Progress", 95, Rarity.UNCOMMON, mage.cards.p.PriceOfProgress.class));
cards.add(new SetCardInfo("Pygmy Troll", 118, Rarity.COMMON, mage.cards.p.PygmyTroll.class));
cards.add(new SetCardInfo("Rabid Wolverines", 119, Rarity.COMMON, mage.cards.r.RabidWolverines.class));
cards.add(new SetCardInfo("Raging Goblin", 96, Rarity.COMMON, mage.cards.r.RagingGoblin.class));
cards.add(new SetCardInfo("Ravenous Baboons", 97, Rarity.RARE, mage.cards.r.RavenousBaboons.class));
cards.add(new SetCardInfo("Reaping the Rewards", 16, Rarity.COMMON, mage.cards.r.ReapingTheRewards.class));
cards.add(new SetCardInfo("Reckless Ogre", 98, Rarity.COMMON, mage.cards.r.RecklessOgre.class));
cards.add(new SetCardInfo("Reclaim", 120, Rarity.COMMON, mage.cards.r.Reclaim.class));
cards.add(new SetCardInfo("Reconnaissance", 17, Rarity.UNCOMMON, mage.cards.r.Reconnaissance.class));
cards.add(new SetCardInfo("Recurring Nightmare", 72, Rarity.RARE, mage.cards.r.RecurringNightmare.class));
cards.add(new SetCardInfo("Robe of Mirrors", 43, Rarity.COMMON, mage.cards.r.RobeOfMirrors.class));
cards.add(new SetCardInfo("Rootwater Alligator", 122, Rarity.COMMON, mage.cards.r.RootwaterAlligator.class));
cards.add(new SetCardInfo("Rootwater Mystic", 44, Rarity.COMMON, mage.cards.r.RootwaterMystic.class));
cards.add(new SetCardInfo("Sabertooth Wyvern", 99, Rarity.UNCOMMON, mage.cards.s.SabertoothWyvern.class));
cards.add(new SetCardInfo("School of Piranha", 45, Rarity.COMMON, mage.cards.s.SchoolOfPiranha.class));
cards.add(new SetCardInfo("Scrivener", 46, Rarity.UNCOMMON, mage.cards.s.Scrivener.class));
cards.add(new SetCardInfo("Seismic Assault", 101, Rarity.RARE, mage.cards.s.SeismicAssault.class));
cards.add(new SetCardInfo("Shackles", 18, Rarity.COMMON, mage.cards.s.Shackles.class));
cards.add(new SetCardInfo("Shattering Pulse", 102, Rarity.COMMON, mage.cards.s.ShatteringPulse.class));
cards.add(new SetCardInfo("Skyshaper", 137, Rarity.UNCOMMON, mage.cards.s.Skyshaper.class));
cards.add(new SetCardInfo("Skyshroud Elite", 123, Rarity.UNCOMMON, mage.cards.s.SkyshroudElite.class));
cards.add(new SetCardInfo("Slaughter", 74, Rarity.UNCOMMON, mage.cards.s.Slaughter.class));
cards.add(new SetCardInfo("Soltari Visionary", 20, Rarity.COMMON, mage.cards.s.SoltariVisionary.class));
cards.add(new SetCardInfo("Sonic Burst", 103, Rarity.COMMON, mage.cards.s.SonicBurst.class));
cards.add(new SetCardInfo("Soul Warden", 21, Rarity.COMMON, mage.cards.s.SoulWarden.class));
cards.add(new SetCardInfo("Spellbook", 138, Rarity.UNCOMMON, mage.cards.s.Spellbook.class));
cards.add(new SetCardInfo("Spellshock", 104, Rarity.UNCOMMON, mage.cards.s.Spellshock.class));
cards.add(new SetCardInfo("Sphere of Resistance", 139, Rarity.RARE, mage.cards.s.SphereOfResistance.class));
cards.add(new SetCardInfo("Spike Cannibal", 75, Rarity.UNCOMMON, mage.cards.s.SpikeCannibal.class));
cards.add(new SetCardInfo("Spike Hatcher", 126, Rarity.RARE, mage.cards.s.SpikeHatcher.class));
cards.add(new SetCardInfo("Spike Rogue", 127, Rarity.UNCOMMON, mage.cards.s.SpikeRogue.class));
cards.add(new SetCardInfo("Spike Weaver", 128, Rarity.RARE, mage.cards.s.SpikeWeaver.class));
cards.add(new SetCardInfo("Standing Troops", 22, Rarity.COMMON, mage.cards.s.StandingTroops.class));
cards.add(new SetCardInfo("Survival of the Fittest", 129, Rarity.RARE, mage.cards.s.SurvivalOfTheFittest.class));
cards.add(new SetCardInfo("Thalakos Drifters", 47, Rarity.RARE, mage.cards.t.ThalakosDrifters.class));
cards.add(new SetCardInfo("Thalakos Scout", 48, Rarity.COMMON, mage.cards.t.ThalakosScout.class));
cards.add(new SetCardInfo("Theft of Dreams", 49, Rarity.COMMON, mage.cards.t.TheftOfDreams.class));
cards.add(new SetCardInfo("Thopter Squadron", 140, Rarity.RARE, mage.cards.t.ThopterSquadron.class));
cards.add(new SetCardInfo("Thrull Surgeon", 76, Rarity.COMMON, mage.cards.t.ThrullSurgeon.class));
cards.add(new SetCardInfo("Transmogrifying Licid", 141, Rarity.UNCOMMON, mage.cards.t.TransmogrifyingLicid.class));
cards.add(new SetCardInfo("Treasure Hunter", 23, Rarity.UNCOMMON, mage.cards.t.TreasureHunter.class));
cards.add(new SetCardInfo("Treasure Trove", 50, Rarity.UNCOMMON, mage.cards.t.TreasureTrove.class));
cards.add(new SetCardInfo("Vampire Hounds", 77, Rarity.COMMON, mage.cards.v.VampireHounds.class));
cards.add(new SetCardInfo("Wall of Nets", 24, Rarity.RARE, mage.cards.w.WallOfNets.class));
cards.add(new SetCardInfo("Wayward Soul", 51, Rarity.COMMON, mage.cards.w.WaywardSoul.class));
cards.add(new SetCardInfo("Welkin Hawk", 25, Rarity.COMMON, mage.cards.w.WelkinHawk.class));
cards.add(new SetCardInfo("Whiptongue Frog", 52, Rarity.COMMON, mage.cards.w.WhiptongueFrog.class));
cards.add(new SetCardInfo("Wood Elves", 130, Rarity.COMMON, mage.cards.w.WoodElves.class));
cards.add(new SetCardInfo("Workhorse", 142, Rarity.RARE, mage.cards.w.Workhorse.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.ExpansionSet;
import mage.constants.Rarity;
import mage.constants.SetType;
/**
*
* @author North
*/
public class Exodus extends ExpansionSet {
private static final Exodus fINSTANCE = new Exodus();
public static Exodus getInstance() {
return fINSTANCE;
}
private Exodus() {
super("Exodus", "EXO", ExpansionSet.buildDate(1998, 6, 15), SetType.EXPANSION);
this.blockName = "Tempest";
this.parentSet = Tempest.getInstance();
this.hasBasicLands = false;
this.hasBoosters = true;
this.numBoosterLands = 0;
this.numBoosterCommon = 11;
this.numBoosterUncommon = 3;
this.numBoosterRare = 1;
this.ratioBoosterMythic = 0;
cards.add(new SetCardInfo("Allay", 1, Rarity.COMMON, mage.cards.a.Allay.class));
cards.add(new SetCardInfo("Anarchist", 79, Rarity.COMMON, mage.cards.a.Anarchist.class));
cards.add(new SetCardInfo("Angelic Blessing", 2, Rarity.COMMON, mage.cards.a.AngelicBlessing.class));
cards.add(new SetCardInfo("Avenging Druid", 105, Rarity.COMMON, mage.cards.a.AvengingDruid.class));
cards.add(new SetCardInfo("Bequeathal", 106, Rarity.COMMON, mage.cards.b.Bequeathal.class));
cards.add(new SetCardInfo("Carnophage", 53, Rarity.COMMON, mage.cards.c.Carnophage.class));
cards.add(new SetCardInfo("Cartographer", 107, Rarity.UNCOMMON, mage.cards.c.Cartographer.class));
cards.add(new SetCardInfo("Cataclysm", 3, Rarity.RARE, mage.cards.c.Cataclysm.class));
cards.add(new SetCardInfo("Cat Burglar", 54, Rarity.COMMON, mage.cards.c.CatBurglar.class));
cards.add(new SetCardInfo("Charging Paladin", 4, Rarity.COMMON, mage.cards.c.ChargingPaladin.class));
cards.add(new SetCardInfo("City of Traitors", 143, Rarity.RARE, mage.cards.c.CityOfTraitors.class));
cards.add(new SetCardInfo("Coat of Arms", 131, Rarity.RARE, mage.cards.c.CoatOfArms.class));
cards.add(new SetCardInfo("Convalescence", 5, Rarity.RARE, mage.cards.c.Convalescence.class));
cards.add(new SetCardInfo("Crashing Boars", 108, Rarity.UNCOMMON, mage.cards.c.CrashingBoars.class));
cards.add(new SetCardInfo("Culling the Weak", 55, Rarity.COMMON, mage.cards.c.CullingTheWeak.class));
cards.add(new SetCardInfo("Curiosity", 29, Rarity.UNCOMMON, mage.cards.c.Curiosity.class));
cards.add(new SetCardInfo("Cursed Flesh", 56, Rarity.COMMON, mage.cards.c.CursedFlesh.class));
cards.add(new SetCardInfo("Dauthi Cutthroat", 57, Rarity.UNCOMMON, mage.cards.d.DauthiCutthroat.class));
cards.add(new SetCardInfo("Dauthi Jackal", 58, Rarity.COMMON, mage.cards.d.DauthiJackal.class));
cards.add(new SetCardInfo("Dauthi Warlord", 59, Rarity.UNCOMMON, mage.cards.d.DauthiWarlord.class));
cards.add(new SetCardInfo("Death's Duet", 60, Rarity.COMMON, mage.cards.d.DeathsDuet.class));
cards.add(new SetCardInfo("Dominating Licid", 30, Rarity.RARE, mage.cards.d.DominatingLicid.class));
cards.add(new SetCardInfo("Elvish Berserker", 110, Rarity.COMMON, mage.cards.e.ElvishBerserker.class));
cards.add(new SetCardInfo("Entropic Specter", 61, Rarity.RARE, mage.cards.e.EntropicSpecter.class));
cards.add(new SetCardInfo("Ephemeron", 31, Rarity.RARE, mage.cards.e.Ephemeron.class));
cards.add(new SetCardInfo("Equilibrium", 32, Rarity.RARE, mage.cards.e.Equilibrium.class));
cards.add(new SetCardInfo("Erratic Portal", 132, Rarity.RARE, mage.cards.e.ErraticPortal.class));
cards.add(new SetCardInfo("Ertai, Wizard Adept", 33, Rarity.RARE, mage.cards.e.ErtaiWizardAdept.class));
cards.add(new SetCardInfo("Exalted Dragon", 6, Rarity.RARE, mage.cards.e.ExaltedDragon.class));
cards.add(new SetCardInfo("Fade Away", 34, Rarity.COMMON, mage.cards.f.FadeAway.class));
cards.add(new SetCardInfo("Flowstone Flood", 83, Rarity.UNCOMMON, mage.cards.f.FlowstoneFlood.class));
cards.add(new SetCardInfo("Forbid", 35, Rarity.UNCOMMON, mage.cards.f.Forbid.class));
cards.add(new SetCardInfo("Fugue", 62, Rarity.UNCOMMON, mage.cards.f.Fugue.class));
cards.add(new SetCardInfo("Furnace Brood", 84, Rarity.COMMON, mage.cards.f.FurnaceBrood.class));
cards.add(new SetCardInfo("Hatred", 64, Rarity.RARE, mage.cards.h.Hatred.class));
cards.add(new SetCardInfo("High Ground", 7, Rarity.UNCOMMON, mage.cards.h.HighGround.class));
cards.add(new SetCardInfo("Jackalope Herd", 111, Rarity.COMMON, mage.cards.j.JackalopeHerd.class));
cards.add(new SetCardInfo("Killer Whale", 37, Rarity.UNCOMMON, mage.cards.k.KillerWhale.class));
cards.add(new SetCardInfo("Kor Chant", 9, Rarity.COMMON, mage.cards.k.KorChant.class));
cards.add(new SetCardInfo("Mage il-Vec", 86, Rarity.COMMON, mage.cards.m.MageIlVec.class));
cards.add(new SetCardInfo("Manabond", 113, Rarity.RARE, mage.cards.m.Manabond.class));
cards.add(new SetCardInfo("Mana Breach", 38, Rarity.UNCOMMON, mage.cards.m.ManaBreach.class));
cards.add(new SetCardInfo("Maniacal Rage", 87, Rarity.COMMON, mage.cards.m.ManiacalRage.class));
cards.add(new SetCardInfo("Medicine Bag", 133, Rarity.UNCOMMON, mage.cards.m.MedicineBag.class));
cards.add(new SetCardInfo("Merfolk Looter", 39, Rarity.COMMON, mage.cards.m.MerfolkLooter.class));
cards.add(new SetCardInfo("Mindless Automaton", 135, Rarity.RARE, mage.cards.m.MindlessAutomaton.class));
cards.add(new SetCardInfo("Mind Over Matter", 40, Rarity.RARE, mage.cards.m.MindOverMatter.class));
cards.add(new SetCardInfo("Mirri, Cat Warrior", 114, Rarity.RARE, mage.cards.m.MirriCatWarrior.class));
cards.add(new SetCardInfo("Nausea", 67, Rarity.COMMON, mage.cards.n.Nausea.class));
cards.add(new SetCardInfo("Necrologia", 68, Rarity.UNCOMMON, mage.cards.n.Necrologia.class));
cards.add(new SetCardInfo("Null Brooch", 136, Rarity.RARE, mage.cards.n.NullBrooch.class));
cards.add(new SetCardInfo("Oath of Druids", 115, Rarity.RARE, mage.cards.o.OathOfDruids.class));
cards.add(new SetCardInfo("Oath of Lieges", 11, Rarity.RARE, mage.cards.o.OathOfLieges.class));
cards.add(new SetCardInfo("Ogre Shaman", 91, Rarity.RARE, mage.cards.o.OgreShaman.class));
cards.add(new SetCardInfo("Onslaught", 92, Rarity.COMMON, mage.cards.o.Onslaught.class));
cards.add(new SetCardInfo("Paladin en-Vec", 12, Rarity.RARE, mage.cards.p.PaladinEnVec.class));
cards.add(new SetCardInfo("Pandemonium", 93, Rarity.RARE, mage.cards.p.Pandemonium.class));
cards.add(new SetCardInfo("Peace of Mind", 13, Rarity.UNCOMMON, mage.cards.p.PeaceOfMind.class));
cards.add(new SetCardInfo("Pegasus Stampede", 14, Rarity.UNCOMMON, mage.cards.p.PegasusStampede.class));
cards.add(new SetCardInfo("Pit Spawn", 70, Rarity.RARE, mage.cards.p.PitSpawn.class));
cards.add(new SetCardInfo("Plaguebearer", 71, Rarity.RARE, mage.cards.p.Plaguebearer.class));
cards.add(new SetCardInfo("Plated Rootwalla", 116, Rarity.COMMON, mage.cards.p.PlatedRootwalla.class));
cards.add(new SetCardInfo("Price of Progress", 95, Rarity.UNCOMMON, mage.cards.p.PriceOfProgress.class));
cards.add(new SetCardInfo("Pygmy Troll", 118, Rarity.COMMON, mage.cards.p.PygmyTroll.class));
cards.add(new SetCardInfo("Rabid Wolverines", 119, Rarity.COMMON, mage.cards.r.RabidWolverines.class));
cards.add(new SetCardInfo("Raging Goblin", 96, Rarity.COMMON, mage.cards.r.RagingGoblin.class));
cards.add(new SetCardInfo("Ravenous Baboons", 97, Rarity.RARE, mage.cards.r.RavenousBaboons.class));
cards.add(new SetCardInfo("Reaping the Rewards", 16, Rarity.COMMON, mage.cards.r.ReapingTheRewards.class));
cards.add(new SetCardInfo("Reckless Ogre", 98, Rarity.COMMON, mage.cards.r.RecklessOgre.class));
cards.add(new SetCardInfo("Reclaim", 120, Rarity.COMMON, mage.cards.r.Reclaim.class));
cards.add(new SetCardInfo("Reconnaissance", 17, Rarity.UNCOMMON, mage.cards.r.Reconnaissance.class));
cards.add(new SetCardInfo("Recurring Nightmare", 72, Rarity.RARE, mage.cards.r.RecurringNightmare.class));
cards.add(new SetCardInfo("Robe of Mirrors", 43, Rarity.COMMON, mage.cards.r.RobeOfMirrors.class));
cards.add(new SetCardInfo("Rootwater Alligator", 122, Rarity.COMMON, mage.cards.r.RootwaterAlligator.class));
cards.add(new SetCardInfo("Rootwater Mystic", 44, Rarity.COMMON, mage.cards.r.RootwaterMystic.class));
cards.add(new SetCardInfo("Sabertooth Wyvern", 99, Rarity.UNCOMMON, mage.cards.s.SabertoothWyvern.class));
cards.add(new SetCardInfo("School of Piranha", 45, Rarity.COMMON, mage.cards.s.SchoolOfPiranha.class));
cards.add(new SetCardInfo("Scrivener", 46, Rarity.UNCOMMON, mage.cards.s.Scrivener.class));
cards.add(new SetCardInfo("Seismic Assault", 101, Rarity.RARE, mage.cards.s.SeismicAssault.class));
cards.add(new SetCardInfo("Shackles", 18, Rarity.COMMON, mage.cards.s.Shackles.class));
cards.add(new SetCardInfo("Shattering Pulse", 102, Rarity.COMMON, mage.cards.s.ShatteringPulse.class));
cards.add(new SetCardInfo("Skyshaper", 137, Rarity.UNCOMMON, mage.cards.s.Skyshaper.class));
cards.add(new SetCardInfo("Skyshroud Elite", 123, Rarity.UNCOMMON, mage.cards.s.SkyshroudElite.class));
cards.add(new SetCardInfo("Slaughter", 74, Rarity.UNCOMMON, mage.cards.s.Slaughter.class));
cards.add(new SetCardInfo("Soltari Visionary", 20, Rarity.COMMON, mage.cards.s.SoltariVisionary.class));
cards.add(new SetCardInfo("Sonic Burst", 103, Rarity.COMMON, mage.cards.s.SonicBurst.class));
cards.add(new SetCardInfo("Soul Warden", 21, Rarity.COMMON, mage.cards.s.SoulWarden.class));
cards.add(new SetCardInfo("Spellbook", 138, Rarity.UNCOMMON, mage.cards.s.Spellbook.class));
cards.add(new SetCardInfo("Spellshock", 104, Rarity.UNCOMMON, mage.cards.s.Spellshock.class));
cards.add(new SetCardInfo("Sphere of Resistance", 139, Rarity.RARE, mage.cards.s.SphereOfResistance.class));
cards.add(new SetCardInfo("Spike Cannibal", 75, Rarity.UNCOMMON, mage.cards.s.SpikeCannibal.class));
cards.add(new SetCardInfo("Spike Hatcher", 126, Rarity.RARE, mage.cards.s.SpikeHatcher.class));
cards.add(new SetCardInfo("Spike Rogue", 127, Rarity.UNCOMMON, mage.cards.s.SpikeRogue.class));
cards.add(new SetCardInfo("Spike Weaver", 128, Rarity.RARE, mage.cards.s.SpikeWeaver.class));
cards.add(new SetCardInfo("Standing Troops", 22, Rarity.COMMON, mage.cards.s.StandingTroops.class));
cards.add(new SetCardInfo("Survival of the Fittest", 129, Rarity.RARE, mage.cards.s.SurvivalOfTheFittest.class));
cards.add(new SetCardInfo("Thalakos Drifters", 47, Rarity.RARE, mage.cards.t.ThalakosDrifters.class));
cards.add(new SetCardInfo("Thalakos Scout", 48, Rarity.COMMON, mage.cards.t.ThalakosScout.class));
cards.add(new SetCardInfo("Theft of Dreams", 49, Rarity.COMMON, mage.cards.t.TheftOfDreams.class));
cards.add(new SetCardInfo("Thopter Squadron", 140, Rarity.RARE, mage.cards.t.ThopterSquadron.class));
cards.add(new SetCardInfo("Thrull Surgeon", 76, Rarity.COMMON, mage.cards.t.ThrullSurgeon.class));
cards.add(new SetCardInfo("Transmogrifying Licid", 141, Rarity.UNCOMMON, mage.cards.t.TransmogrifyingLicid.class));
cards.add(new SetCardInfo("Treasure Hunter", 23, Rarity.UNCOMMON, mage.cards.t.TreasureHunter.class));
cards.add(new SetCardInfo("Treasure Trove", 50, Rarity.UNCOMMON, mage.cards.t.TreasureTrove.class));
cards.add(new SetCardInfo("Vampire Hounds", 77, Rarity.COMMON, mage.cards.v.VampireHounds.class));
cards.add(new SetCardInfo("Wall of Nets", 24, Rarity.RARE, mage.cards.w.WallOfNets.class));
cards.add(new SetCardInfo("Wayward Soul", 51, Rarity.COMMON, mage.cards.w.WaywardSoul.class));
cards.add(new SetCardInfo("Welkin Hawk", 25, Rarity.COMMON, mage.cards.w.WelkinHawk.class));
cards.add(new SetCardInfo("Whiptongue Frog", 52, Rarity.COMMON, mage.cards.w.WhiptongueFrog.class));
cards.add(new SetCardInfo("Wood Elves", 130, Rarity.COMMON, mage.cards.w.WoodElves.class));
cards.add(new SetCardInfo("Workhorse", 142, Rarity.RARE, mage.cards.w.Workhorse.class));
}
}

View file

@ -1,358 +1,359 @@
package mage.sets;
import mage.cards.CardGraphicInfo;
import mage.cards.ExpansionSet;
import mage.constants.Rarity;
import mage.constants.SetType;
public class Tempest extends ExpansionSet {
private static final Tempest fINSTANCE = new Tempest();
public static Tempest getInstance() {
return fINSTANCE;
}
private Tempest() {
super("Tempest", "TMP", ExpansionSet.buildDate(1997, 10, 1), SetType.EXPANSION);
this.blockName = "Tempest";
this.hasBoosters = true;
this.numBoosterLands = 0;
this.numBoosterCommon = 11;
this.numBoosterUncommon = 3;
this.numBoosterRare = 1;
this.ratioBoosterMythic = 0;
cards.add(new SetCardInfo("Abandon Hope", 1, Rarity.UNCOMMON, mage.cards.a.AbandonHope.class));
cards.add(new SetCardInfo("Advance Scout", 213, Rarity.COMMON, mage.cards.a.AdvanceScout.class));
cards.add(new SetCardInfo("Aftershock", 160, Rarity.COMMON, mage.cards.a.Aftershock.class));
cards.add(new SetCardInfo("Altar of Dementia", 266, Rarity.RARE, mage.cards.a.AltarOfDementia.class));
cards.add(new SetCardInfo("Aluren", 107, Rarity.RARE, mage.cards.a.Aluren.class));
cards.add(new SetCardInfo("Ancient Runes", 161, Rarity.UNCOMMON, mage.cards.a.AncientRunes.class));
cards.add(new SetCardInfo("Ancient Tomb", 305, Rarity.UNCOMMON, mage.cards.a.AncientTomb.class));
cards.add(new SetCardInfo("Angelic Protector", 214, Rarity.UNCOMMON, mage.cards.a.AngelicProtector.class));
cards.add(new SetCardInfo("Anoint", 215, Rarity.COMMON, mage.cards.a.Anoint.class));
cards.add(new SetCardInfo("Apes of Rath", 108, Rarity.UNCOMMON, mage.cards.a.ApesOfRath.class));
cards.add(new SetCardInfo("Apocalypse", 162, Rarity.RARE, mage.cards.a.Apocalypse.class));
cards.add(new SetCardInfo("Armored Pegasus", 217, Rarity.COMMON, mage.cards.a.ArmoredPegasus.class));
cards.add(new SetCardInfo("Armor Sliver", 216, Rarity.UNCOMMON, mage.cards.a.ArmorSliver.class));
cards.add(new SetCardInfo("Auratog", 218, Rarity.RARE, mage.cards.a.Auratog.class));
cards.add(new SetCardInfo("Avenging Angel", 219, Rarity.RARE, mage.cards.a.AvengingAngel.class));
cards.add(new SetCardInfo("Barbed Sliver", 163, Rarity.UNCOMMON, mage.cards.b.BarbedSliver.class));
cards.add(new SetCardInfo("Bayou Dragonfly", 109, Rarity.COMMON, mage.cards.b.BayouDragonfly.class));
cards.add(new SetCardInfo("Bellowing Fiend", 2, Rarity.RARE, mage.cards.b.BellowingFiend.class));
cards.add(new SetCardInfo("Benthic Behemoth", 54, Rarity.RARE, mage.cards.b.BenthicBehemoth.class));
cards.add(new SetCardInfo("Blood Frenzy", 164, Rarity.COMMON, mage.cards.b.BloodFrenzy.class));
cards.add(new SetCardInfo("Blood Pet", 3, Rarity.COMMON, mage.cards.b.BloodPet.class));
cards.add(new SetCardInfo("Boil", 165, Rarity.UNCOMMON, mage.cards.b.Boil.class));
cards.add(new SetCardInfo("Bottle Gnomes", 268, Rarity.UNCOMMON, mage.cards.b.BottleGnomes.class));
cards.add(new SetCardInfo("Bounty Hunter", 4, Rarity.RARE, mage.cards.b.BountyHunter.class));
cards.add(new SetCardInfo("Broken Fall", 110, Rarity.COMMON, mage.cards.b.BrokenFall.class));
cards.add(new SetCardInfo("Caldera Lake", 306, Rarity.RARE, mage.cards.c.CalderaLake.class));
cards.add(new SetCardInfo("Canopy Spider", 111, Rarity.COMMON, mage.cards.c.CanopySpider.class));
cards.add(new SetCardInfo("Canyon Drake", 166, Rarity.RARE, mage.cards.c.CanyonDrake.class));
cards.add(new SetCardInfo("Canyon Wildcat", 167, Rarity.COMMON, mage.cards.c.CanyonWildcat.class));
cards.add(new SetCardInfo("Capsize", 55, Rarity.COMMON, mage.cards.c.Capsize.class));
cards.add(new SetCardInfo("Chaotic Goo", 168, Rarity.RARE, mage.cards.c.ChaoticGoo.class));
cards.add(new SetCardInfo("Charging Rhino", 112, Rarity.UNCOMMON, mage.cards.c.ChargingRhino.class));
cards.add(new SetCardInfo("Chill", 56, Rarity.UNCOMMON, mage.cards.c.Chill.class));
cards.add(new SetCardInfo("Choke", 113, Rarity.UNCOMMON, mage.cards.c.Choke.class));
cards.add(new SetCardInfo("Cinder Marsh", 307, Rarity.UNCOMMON, mage.cards.c.CinderMarsh.class));
cards.add(new SetCardInfo("Circle of Protection: Black", 220, Rarity.COMMON, mage.cards.c.CircleOfProtectionBlack.class));
cards.add(new SetCardInfo("Circle of Protection: Blue", 221, Rarity.COMMON, mage.cards.c.CircleOfProtectionBlue.class));
cards.add(new SetCardInfo("Circle of Protection: Green", 222, Rarity.COMMON, mage.cards.c.CircleOfProtectionGreen.class));
cards.add(new SetCardInfo("Circle of Protection: Red", 223, Rarity.COMMON, mage.cards.c.CircleOfProtectionRed.class));
cards.add(new SetCardInfo("Circle of Protection: Shadow", 224, Rarity.COMMON, mage.cards.c.CircleOfProtectionShadow.class));
cards.add(new SetCardInfo("Circle of Protection: White", 225, Rarity.COMMON, mage.cards.c.CircleOfProtectionWhite.class));
cards.add(new SetCardInfo("Clergy en-Vec", 226, Rarity.COMMON, mage.cards.c.ClergyEnVec.class));
cards.add(new SetCardInfo("Clot Sliver", 6, Rarity.COMMON, mage.cards.c.ClotSliver.class));
cards.add(new SetCardInfo("Cloudchaser Eagle", 227, Rarity.COMMON, mage.cards.c.CloudchaserEagle.class));
cards.add(new SetCardInfo("Coercion", 7, Rarity.COMMON, mage.cards.c.Coercion.class));
cards.add(new SetCardInfo("Coffin Queen", 8, Rarity.RARE, mage.cards.c.CoffinQueen.class));
cards.add(new SetCardInfo("Coiled Tinviper", 269, Rarity.COMMON, mage.cards.c.CoiledTinviper.class));
cards.add(new SetCardInfo("Cold Storage", 270, Rarity.RARE, mage.cards.c.ColdStorage.class));
cards.add(new SetCardInfo("Commander Greven il-Vec", 9, Rarity.RARE, mage.cards.c.CommanderGrevenIlVec.class));
cards.add(new SetCardInfo("Corpse Dance", 10, Rarity.RARE, mage.cards.c.CorpseDance.class));
cards.add(new SetCardInfo("Counterspell", 57, Rarity.COMMON, mage.cards.c.Counterspell.class));
cards.add(new SetCardInfo("Crazed Armodon", 114, Rarity.RARE, mage.cards.c.CrazedArmodon.class));
cards.add(new SetCardInfo("Crown of Flames", 169, Rarity.COMMON, mage.cards.c.CrownOfFlames.class));
cards.add(new SetCardInfo("Cursed Scroll", 271, Rarity.RARE, mage.cards.c.CursedScroll.class));
cards.add(new SetCardInfo("Dark Banishing", 11, Rarity.COMMON, mage.cards.d.DarkBanishing.class));
cards.add(new SetCardInfo("Darkling Stalker", 13, Rarity.COMMON, mage.cards.d.DarklingStalker.class));
cards.add(new SetCardInfo("Dark Ritual", 12, Rarity.COMMON, mage.cards.d.DarkRitual.class));
cards.add(new SetCardInfo("Dauthi Embrace", 14, Rarity.UNCOMMON, mage.cards.d.DauthiEmbrace.class));
cards.add(new SetCardInfo("Dauthi Ghoul", 15, Rarity.UNCOMMON, mage.cards.d.DauthiGhoul.class));
cards.add(new SetCardInfo("Dauthi Horror", 16, Rarity.COMMON, mage.cards.d.DauthiHorror.class));
cards.add(new SetCardInfo("Dauthi Marauder", 17, Rarity.COMMON, mage.cards.d.DauthiMarauder.class));
cards.add(new SetCardInfo("Dauthi Mercenary", 18, Rarity.UNCOMMON, mage.cards.d.DauthiMercenary.class));
cards.add(new SetCardInfo("Dauthi Mindripper", 19, Rarity.UNCOMMON, mage.cards.d.DauthiMindripper.class));
cards.add(new SetCardInfo("Dauthi Slayer", 20, Rarity.COMMON, mage.cards.d.DauthiSlayer.class));
cards.add(new SetCardInfo("Deadshot", 170, Rarity.RARE, mage.cards.d.Deadshot.class));
cards.add(new SetCardInfo("Death Pits of Rath", 21, Rarity.RARE, mage.cards.d.DeathPitsOfRath.class));
cards.add(new SetCardInfo("Diabolic Edict", 22, Rarity.COMMON, mage.cards.d.DiabolicEdict.class));
cards.add(new SetCardInfo("Dirtcowl Wurm", 115, Rarity.RARE, mage.cards.d.DirtcowlWurm.class));
cards.add(new SetCardInfo("Disenchant", 228, Rarity.COMMON, mage.cards.d.Disenchant.class));
cards.add(new SetCardInfo("Dismiss", 58, Rarity.UNCOMMON, mage.cards.d.Dismiss.class));
cards.add(new SetCardInfo("Disturbed Burial", 23, Rarity.COMMON, mage.cards.d.DisturbedBurial.class));
cards.add(new SetCardInfo("Dracoplasm", 341, Rarity.RARE, mage.cards.d.Dracoplasm.class));
cards.add(new SetCardInfo("Dread of Night", 24, Rarity.UNCOMMON, mage.cards.d.DreadOfNight.class));
cards.add(new SetCardInfo("Dream Cache", 59, Rarity.COMMON, mage.cards.d.DreamCache.class));
cards.add(new SetCardInfo("Dregs of Sorrow", 25, Rarity.RARE, mage.cards.d.DregsOfSorrow.class));
cards.add(new SetCardInfo("Earthcraft", 116, Rarity.RARE, mage.cards.e.Earthcraft.class));
cards.add(new SetCardInfo("Eladamri, Lord of Leaves", 117, Rarity.RARE, mage.cards.e.EladamriLordOfLeaves.class));
cards.add(new SetCardInfo("Eladamri's Vineyard", 118, Rarity.RARE, mage.cards.e.EladamrisVineyard.class));
cards.add(new SetCardInfo("Elite Javelineer", 229, Rarity.COMMON, mage.cards.e.EliteJavelineer.class));
cards.add(new SetCardInfo("Elven Warhounds", 119, Rarity.RARE, mage.cards.e.ElvenWarhounds.class));
cards.add(new SetCardInfo("Elvish Fury", 120, Rarity.UNCOMMON, mage.cards.e.ElvishFury.class));
cards.add(new SetCardInfo("Emerald Medallion", 273, Rarity.RARE, mage.cards.e.EmeraldMedallion.class));
cards.add(new SetCardInfo("Emmessi Tome", 274, Rarity.RARE, mage.cards.e.EmmessiTome.class));
cards.add(new SetCardInfo("Endless Scream", 26, Rarity.COMMON, mage.cards.e.EndlessScream.class));
cards.add(new SetCardInfo("Energizer", 275, Rarity.RARE, mage.cards.e.Energizer.class));
cards.add(new SetCardInfo("Enfeeblement", 27, Rarity.COMMON, mage.cards.e.Enfeeblement.class));
cards.add(new SetCardInfo("Enraging Licid", 171, Rarity.UNCOMMON, mage.cards.e.EnragingLicid.class));
cards.add(new SetCardInfo("Essence Bottle", 276, Rarity.UNCOMMON, mage.cards.e.EssenceBottle.class));
cards.add(new SetCardInfo("Evincar's Justice", 28, Rarity.COMMON, mage.cards.e.EvincarsJustice.class));
cards.add(new SetCardInfo("Excavator", 277, Rarity.UNCOMMON, mage.cards.e.Excavator.class));
cards.add(new SetCardInfo("Extinction", 29, Rarity.RARE, mage.cards.e.Extinction.class));
cards.add(new SetCardInfo("Fevered Convulsions", 30, Rarity.RARE, mage.cards.f.FeveredConvulsions.class));
cards.add(new SetCardInfo("Field of Souls", 230, Rarity.RARE, mage.cards.f.FieldOfSouls.class));
cards.add(new SetCardInfo("Fighting Drake", 63, Rarity.UNCOMMON, mage.cards.f.FightingDrake.class));
cards.add(new SetCardInfo("Firefly", 172, Rarity.UNCOMMON, mage.cards.f.Firefly.class));
cards.add(new SetCardInfo("Fireslinger", 173, Rarity.COMMON, mage.cards.f.Fireslinger.class));
cards.add(new SetCardInfo("Flailing Drake", 121, Rarity.UNCOMMON, mage.cards.f.FlailingDrake.class));
cards.add(new SetCardInfo("Flickering Ward", 231, Rarity.UNCOMMON, mage.cards.f.FlickeringWard.class));
cards.add(new SetCardInfo("Flowstone Giant", 174, Rarity.COMMON, mage.cards.f.FlowstoneGiant.class));
cards.add(new SetCardInfo("Flowstone Salamander", 175, Rarity.UNCOMMON, mage.cards.f.FlowstoneSalamander.class));
cards.add(new SetCardInfo("Flowstone Sculpture", 278, Rarity.RARE, mage.cards.f.FlowstoneSculpture.class));
cards.add(new SetCardInfo("Flowstone Wyvern", 176, Rarity.RARE, mage.cards.f.FlowstoneWyvern.class));
cards.add(new SetCardInfo("Fool's Tome", 279, Rarity.RARE, mage.cards.f.FoolsTome.class));
cards.add(new SetCardInfo("Forest", 308, Rarity.LAND, mage.cards.basiclands.Forest.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Forest", 309, Rarity.LAND, mage.cards.basiclands.Forest.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Forest", 310, Rarity.LAND, mage.cards.basiclands.Forest.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Forest", 311, Rarity.LAND, mage.cards.basiclands.Forest.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Frog Tongue", 122, Rarity.COMMON, mage.cards.f.FrogTongue.class));
cards.add(new SetCardInfo("Fugitive Druid", 123, Rarity.RARE, mage.cards.f.FugitiveDruid.class));
cards.add(new SetCardInfo("Furnace of Rath", 177, Rarity.RARE, mage.cards.f.FurnaceOfRath.class));
cards.add(new SetCardInfo("Fylamarid", 64, Rarity.UNCOMMON, mage.cards.f.Fylamarid.class));
cards.add(new SetCardInfo("Gallantry", 232, Rarity.UNCOMMON, mage.cards.g.Gallantry.class));
cards.add(new SetCardInfo("Gaseous Form", 65, Rarity.COMMON, mage.cards.g.GaseousForm.class));
cards.add(new SetCardInfo("Gerrard's Battle Cry", 233, Rarity.RARE, mage.cards.g.GerrardsBattleCry.class));
cards.add(new SetCardInfo("Ghost Town", 312, Rarity.UNCOMMON, mage.cards.g.GhostTown.class));
cards.add(new SetCardInfo("Giant Crab", 66, Rarity.COMMON, mage.cards.g.GiantCrab.class));
cards.add(new SetCardInfo("Giant Strength", 178, Rarity.COMMON, mage.cards.g.GiantStrength.class));
cards.add(new SetCardInfo("Goblin Bombardment", 179, Rarity.UNCOMMON, mage.cards.g.GoblinBombardment.class));
cards.add(new SetCardInfo("Gravedigger", 31, Rarity.COMMON, mage.cards.g.Gravedigger.class));
cards.add(new SetCardInfo("Grindstone", 280, Rarity.RARE, mage.cards.g.Grindstone.class));
cards.add(new SetCardInfo("Hand to Hand", 180, Rarity.RARE, mage.cards.h.HandToHand.class));
cards.add(new SetCardInfo("Hanna's Custody", 234, Rarity.RARE, mage.cards.h.HannasCustody.class));
cards.add(new SetCardInfo("Harrow", 124, Rarity.UNCOMMON, mage.cards.h.Harrow.class));
cards.add(new SetCardInfo("Havoc", 181, Rarity.UNCOMMON, mage.cards.h.Havoc.class));
cards.add(new SetCardInfo("Heart Sliver", 182, Rarity.COMMON, mage.cards.h.HeartSliver.class));
cards.add(new SetCardInfo("Heartwood Dryad", 125, Rarity.COMMON, mage.cards.h.HeartwoodDryad.class));
cards.add(new SetCardInfo("Heartwood Giant", 126, Rarity.RARE, mage.cards.h.HeartwoodGiant.class));
cards.add(new SetCardInfo("Heartwood Treefolk", 127, Rarity.UNCOMMON, mage.cards.h.HeartwoodTreefolk.class));
cards.add(new SetCardInfo("Helm of Possession", 281, Rarity.RARE, mage.cards.h.HelmOfPossession.class));
cards.add(new SetCardInfo("Hero's Resolve", 235, Rarity.COMMON, mage.cards.h.HerosResolve.class));
cards.add(new SetCardInfo("Horned Sliver", 128, Rarity.UNCOMMON, mage.cards.h.HornedSliver.class));
cards.add(new SetCardInfo("Horned Turtle", 67, Rarity.COMMON, mage.cards.h.HornedTurtle.class));
cards.add(new SetCardInfo("Humility", 236, Rarity.RARE, mage.cards.h.Humility.class));
cards.add(new SetCardInfo("Imps' Taunt", 32, Rarity.UNCOMMON, mage.cards.i.ImpsTaunt.class));
cards.add(new SetCardInfo("Insight", 68, Rarity.UNCOMMON, mage.cards.i.Insight.class));
cards.add(new SetCardInfo("Intuition", 70, Rarity.RARE, mage.cards.i.Intuition.class));
cards.add(new SetCardInfo("Invulnerability", 237, Rarity.UNCOMMON, mage.cards.i.Invulnerability.class));
cards.add(new SetCardInfo("Island", 313, Rarity.LAND, mage.cards.basiclands.Island.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Island", 314, Rarity.LAND, mage.cards.basiclands.Island.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Island", 315, Rarity.LAND, mage.cards.basiclands.Island.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Island", 316, Rarity.LAND, mage.cards.basiclands.Island.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Jackal Pup", 183, Rarity.UNCOMMON, mage.cards.j.JackalPup.class));
cards.add(new SetCardInfo("Jet Medallion", 282, Rarity.RARE, mage.cards.j.JetMedallion.class));
cards.add(new SetCardInfo("Jinxed Idol", 283, Rarity.RARE, mage.cards.j.JinxedIdol.class));
cards.add(new SetCardInfo("Kezzerdrix", 33, Rarity.RARE, mage.cards.k.Kezzerdrix.class));
cards.add(new SetCardInfo("Kindle", 184, Rarity.COMMON, mage.cards.k.Kindle.class));
cards.add(new SetCardInfo("Knight of Dawn", 238, Rarity.UNCOMMON, mage.cards.k.KnightOfDawn.class));
cards.add(new SetCardInfo("Knight of Dusk", 34, Rarity.UNCOMMON, mage.cards.k.KnightOfDusk.class));
cards.add(new SetCardInfo("Krakilin", 129, Rarity.UNCOMMON, mage.cards.k.Krakilin.class));
cards.add(new SetCardInfo("Leeching Licid", 35, Rarity.UNCOMMON, mage.cards.l.LeechingLicid.class));
cards.add(new SetCardInfo("Legacy's Allure", 71, Rarity.UNCOMMON, mage.cards.l.LegacysAllure.class));
cards.add(new SetCardInfo("Legerdemain", 72, Rarity.UNCOMMON, mage.cards.l.Legerdemain.class));
cards.add(new SetCardInfo("Lightning Blast", 185, Rarity.COMMON, mage.cards.l.LightningBlast.class));
cards.add(new SetCardInfo("Lightning Elemental", 186, Rarity.COMMON, mage.cards.l.LightningElemental.class));
cards.add(new SetCardInfo("Light of Day", 239, Rarity.UNCOMMON, mage.cards.l.LightOfDay.class));
cards.add(new SetCardInfo("Living Death", 36, Rarity.RARE, mage.cards.l.LivingDeath.class));
cards.add(new SetCardInfo("Lobotomy", 342, Rarity.UNCOMMON, mage.cards.l.Lobotomy.class));
cards.add(new SetCardInfo("Lotus Petal", 284, Rarity.COMMON, mage.cards.l.LotusPetal.class));
cards.add(new SetCardInfo("Lowland Giant", 187, Rarity.COMMON, mage.cards.l.LowlandGiant.class));
cards.add(new SetCardInfo("Magmasaur", 188, Rarity.RARE, mage.cards.m.Magmasaur.class));
cards.add(new SetCardInfo("Manakin", 286, Rarity.COMMON, mage.cards.m.Manakin.class));
cards.add(new SetCardInfo("Mana Severance", 73, Rarity.RARE, mage.cards.m.ManaSeverance.class));
cards.add(new SetCardInfo("Manta Riders", 74, Rarity.COMMON, mage.cards.m.MantaRiders.class));
cards.add(new SetCardInfo("Marble Titan", 240, Rarity.RARE, mage.cards.m.MarbleTitan.class));
cards.add(new SetCardInfo("Marsh Lurker", 38, Rarity.COMMON, mage.cards.m.MarshLurker.class));
cards.add(new SetCardInfo("Master Decoy", 241, Rarity.COMMON, mage.cards.m.MasterDecoy.class));
cards.add(new SetCardInfo("Mawcor", 75, Rarity.RARE, mage.cards.m.Mawcor.class));
cards.add(new SetCardInfo("Maze of Shadows", 317, Rarity.UNCOMMON, mage.cards.m.MazeOfShadows.class));
cards.add(new SetCardInfo("Meditate", 76, Rarity.RARE, mage.cards.m.Meditate.class));
cards.add(new SetCardInfo("Metallic Sliver", 287, Rarity.COMMON, mage.cards.m.MetallicSliver.class));
cards.add(new SetCardInfo("Mindwhip Sliver", 39, Rarity.UNCOMMON, mage.cards.m.MindwhipSliver.class));
cards.add(new SetCardInfo("Mirri's Guile", 130, Rarity.RARE, mage.cards.m.MirrisGuile.class));
cards.add(new SetCardInfo("Mnemonic Sliver", 77, Rarity.UNCOMMON, mage.cards.m.MnemonicSliver.class));
cards.add(new SetCardInfo("Mogg Cannon", 288, Rarity.UNCOMMON, mage.cards.m.MoggCannon.class));
cards.add(new SetCardInfo("Mogg Conscripts", 189, Rarity.COMMON, mage.cards.m.MoggConscripts.class));
cards.add(new SetCardInfo("Mogg Fanatic", 190, Rarity.COMMON, mage.cards.m.MoggFanatic.class));
cards.add(new SetCardInfo("Mogg Hollows", 318, Rarity.UNCOMMON, mage.cards.m.MoggHollows.class));
cards.add(new SetCardInfo("Mogg Raider", 191, Rarity.COMMON, mage.cards.m.MoggRaider.class));
cards.add(new SetCardInfo("Mogg Squad", 192, Rarity.COMMON, mage.cards.m.MoggSquad.class));
cards.add(new SetCardInfo("Mongrel Pack", 131, Rarity.RARE, mage.cards.m.MongrelPack.class));
cards.add(new SetCardInfo("Mountain", 319, Rarity.LAND, mage.cards.basiclands.Mountain.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Mountain", 320, Rarity.LAND, mage.cards.basiclands.Mountain.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Mountain", 321, Rarity.LAND, mage.cards.basiclands.Mountain.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Mountain", 322, Rarity.LAND, mage.cards.basiclands.Mountain.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Mounted Archers", 242, Rarity.COMMON, mage.cards.m.MountedArchers.class));
cards.add(new SetCardInfo("Muscle Sliver", 132, Rarity.COMMON, mage.cards.m.MuscleSliver.class));
cards.add(new SetCardInfo("Natural Spring", 133, Rarity.COMMON, mage.cards.n.NaturalSpring.class));
cards.add(new SetCardInfo("Nature's Revolt", 134, Rarity.RARE, mage.cards.n.NaturesRevolt.class));
cards.add(new SetCardInfo("Needle Storm", 135, Rarity.UNCOMMON, mage.cards.n.NeedleStorm.class));
cards.add(new SetCardInfo("Nurturing Licid", 136, Rarity.UNCOMMON, mage.cards.n.NurturingLicid.class));
cards.add(new SetCardInfo("Opportunist", 194, Rarity.UNCOMMON, mage.cards.o.Opportunist.class));
cards.add(new SetCardInfo("Oracle en-Vec", 243, Rarity.RARE, mage.cards.o.OracleEnVec.class));
cards.add(new SetCardInfo("Orim, Samite Healer", 244, Rarity.RARE, mage.cards.o.OrimSamiteHealer.class));
cards.add(new SetCardInfo("Overrun", 137, Rarity.UNCOMMON, mage.cards.o.Overrun.class));
cards.add(new SetCardInfo("Pacifism", 246, Rarity.COMMON, mage.cards.p.Pacifism.class));
cards.add(new SetCardInfo("Pallimud", 195, Rarity.RARE, mage.cards.p.Pallimud.class));
cards.add(new SetCardInfo("Patchwork Gnomes", 289, Rarity.UNCOMMON, mage.cards.p.PatchworkGnomes.class));
cards.add(new SetCardInfo("Pearl Medallion", 290, Rarity.RARE, mage.cards.p.PearlMedallion.class));
cards.add(new SetCardInfo("Pegasus Refuge", 247, Rarity.RARE, mage.cards.p.PegasusRefuge.class));
cards.add(new SetCardInfo("Perish", 41, Rarity.UNCOMMON, mage.cards.p.Perish.class));
cards.add(new SetCardInfo("Phyrexian Grimoire", 291, Rarity.RARE, mage.cards.p.PhyrexianGrimoire.class));
cards.add(new SetCardInfo("Phyrexian Hulk", 292, Rarity.UNCOMMON, mage.cards.p.PhyrexianHulk.class));
cards.add(new SetCardInfo("Pincher Beetles", 138, Rarity.COMMON, mage.cards.p.PincherBeetles.class));
cards.add(new SetCardInfo("Pine Barrens", 323, Rarity.RARE, mage.cards.p.PineBarrens.class));
cards.add(new SetCardInfo("Pit Imp", 42, Rarity.COMMON, mage.cards.p.PitImp.class));
cards.add(new SetCardInfo("Plains", 324, Rarity.LAND, mage.cards.basiclands.Plains.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Plains", 325, Rarity.LAND, mage.cards.basiclands.Plains.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Plains", 326, Rarity.LAND, mage.cards.basiclands.Plains.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Plains", 327, Rarity.LAND, mage.cards.basiclands.Plains.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Power Sink", 78, Rarity.COMMON, mage.cards.p.PowerSink.class));
cards.add(new SetCardInfo("Precognition", 79, Rarity.RARE, mage.cards.p.Precognition.class));
cards.add(new SetCardInfo("Propaganda", 80, Rarity.UNCOMMON, mage.cards.p.Propaganda.class));
cards.add(new SetCardInfo("Puppet Strings", 294, Rarity.UNCOMMON, mage.cards.p.PuppetStrings.class));
cards.add(new SetCardInfo("Quickening Licid", 248, Rarity.UNCOMMON, mage.cards.q.QuickeningLicid.class));
cards.add(new SetCardInfo("Rain of Tears", 43, Rarity.UNCOMMON, mage.cards.r.RainOfTears.class));
cards.add(new SetCardInfo("Rampant Growth", 139, Rarity.COMMON, mage.cards.r.RampantGrowth.class));
cards.add(new SetCardInfo("Ranger en-Vec", 343, Rarity.UNCOMMON, mage.cards.r.RangerEnVec.class));
cards.add(new SetCardInfo("Rathi Dragon", 196, Rarity.RARE, mage.cards.r.RathiDragon.class));
cards.add(new SetCardInfo("Rats of Rath", 44, Rarity.COMMON, mage.cards.r.RatsOfRath.class));
cards.add(new SetCardInfo("Reality Anchor", 140, Rarity.COMMON, mage.cards.r.RealityAnchor.class));
cards.add(new SetCardInfo("Reanimate", 45, Rarity.UNCOMMON, mage.cards.r.Reanimate.class));
cards.add(new SetCardInfo("Reckless Spite", 46, Rarity.UNCOMMON, mage.cards.r.RecklessSpite.class));
cards.add(new SetCardInfo("Recycle", 142, Rarity.RARE, mage.cards.r.Recycle.class));
cards.add(new SetCardInfo("Reflecting Pool", 328, Rarity.RARE, mage.cards.r.ReflectingPool.class));
cards.add(new SetCardInfo("Renegade Warlord", 197, Rarity.UNCOMMON, mage.cards.r.RenegadeWarlord.class));
cards.add(new SetCardInfo("Repentance", 249, Rarity.UNCOMMON, mage.cards.r.Repentance.class));
cards.add(new SetCardInfo("Respite", 143, Rarity.COMMON, mage.cards.r.Respite.class));
cards.add(new SetCardInfo("Rolling Thunder", 198, Rarity.COMMON, mage.cards.r.RollingThunder.class));
cards.add(new SetCardInfo("Rootbreaker Wurm", 145, Rarity.COMMON, mage.cards.r.RootbreakerWurm.class));
cards.add(new SetCardInfo("Root Maze", 144, Rarity.RARE, mage.cards.r.RootMaze.class));
cards.add(new SetCardInfo("Rootwalla", 146, Rarity.COMMON, mage.cards.r.Rootwalla.class));
cards.add(new SetCardInfo("Rootwater Depths", 329, Rarity.UNCOMMON, mage.cards.r.RootwaterDepths.class));
cards.add(new SetCardInfo("Rootwater Diver", 81, Rarity.UNCOMMON, mage.cards.r.RootwaterDiver.class));
cards.add(new SetCardInfo("Rootwater Hunter", 82, Rarity.COMMON, mage.cards.r.RootwaterHunter.class));
cards.add(new SetCardInfo("Rootwater Matriarch", 83, Rarity.RARE, mage.cards.r.RootwaterMatriarch.class));
cards.add(new SetCardInfo("Ruby Medallion", 295, Rarity.RARE, mage.cards.r.RubyMedallion.class));
cards.add(new SetCardInfo("Sadistic Glee", 47, Rarity.COMMON, mage.cards.s.SadisticGlee.class));
cards.add(new SetCardInfo("Safeguard", 251, Rarity.RARE, mage.cards.s.Safeguard.class));
cards.add(new SetCardInfo("Salt Flats", 330, Rarity.RARE, mage.cards.s.SaltFlats.class));
cards.add(new SetCardInfo("Sandstone Warrior", 199, Rarity.COMMON, mage.cards.s.SandstoneWarrior.class));
cards.add(new SetCardInfo("Sapphire Medallion", 296, Rarity.RARE, mage.cards.s.SapphireMedallion.class));
cards.add(new SetCardInfo("Sarcomancy", 48, Rarity.RARE, mage.cards.s.Sarcomancy.class));
cards.add(new SetCardInfo("Scabland", 331, Rarity.RARE, mage.cards.s.Scabland.class));
cards.add(new SetCardInfo("Scalding Tongs", 297, Rarity.RARE, mage.cards.s.ScaldingTongs.class));
cards.add(new SetCardInfo("Scorched Earth", 200, Rarity.RARE, mage.cards.s.ScorchedEarth.class));
cards.add(new SetCardInfo("Scragnoth", 147, Rarity.UNCOMMON, mage.cards.s.Scragnoth.class));
cards.add(new SetCardInfo("Screeching Harpy", 49, Rarity.UNCOMMON, mage.cards.s.ScreechingHarpy.class));
cards.add(new SetCardInfo("Scroll Rack", 298, Rarity.RARE, mage.cards.s.ScrollRack.class));
cards.add(new SetCardInfo("Sea Monster", 85, Rarity.COMMON, mage.cards.s.SeaMonster.class));
cards.add(new SetCardInfo("Searing Touch", 201, Rarity.UNCOMMON, mage.cards.s.SearingTouch.class));
cards.add(new SetCardInfo("Seeker of Skybreak", 148, Rarity.COMMON, mage.cards.s.SeekerOfSkybreak.class));
cards.add(new SetCardInfo("Segmented Wurm", 344, Rarity.UNCOMMON, mage.cards.s.SegmentedWurm.class));
cards.add(new SetCardInfo("Selenia, Dark Angel", 345, Rarity.RARE, mage.cards.s.SeleniaDarkAngel.class));
cards.add(new SetCardInfo("Serene Offering", 252, Rarity.UNCOMMON, mage.cards.s.SereneOffering.class));
cards.add(new SetCardInfo("Servant of Volrath", 50, Rarity.COMMON, mage.cards.s.ServantOfVolrath.class));
cards.add(new SetCardInfo("Shadow Rift", 86, Rarity.COMMON, mage.cards.s.ShadowRift.class));
cards.add(new SetCardInfo("Shadowstorm", 202, Rarity.UNCOMMON, mage.cards.s.Shadowstorm.class));
cards.add(new SetCardInfo("Shatter", 203, Rarity.COMMON, mage.cards.s.Shatter.class));
cards.add(new SetCardInfo("Shimmering Wings", 87, Rarity.COMMON, mage.cards.s.ShimmeringWings.class));
cards.add(new SetCardInfo("Shocker", 204, Rarity.RARE, mage.cards.s.Shocker.class));
cards.add(new SetCardInfo("Skyshroud Condor", 88, Rarity.UNCOMMON, mage.cards.s.SkyshroudCondor.class));
cards.add(new SetCardInfo("Skyshroud Elf", 149, Rarity.COMMON, mage.cards.s.SkyshroudElf.class));
cards.add(new SetCardInfo("Skyshroud Forest", 332, Rarity.RARE, mage.cards.s.SkyshroudForest.class));
cards.add(new SetCardInfo("Skyshroud Ranger", 150, Rarity.COMMON, mage.cards.s.SkyshroudRanger.class));
cards.add(new SetCardInfo("Skyshroud Troll", 151, Rarity.COMMON, mage.cards.s.SkyshroudTroll.class));
cards.add(new SetCardInfo("Skyshroud Vampire", 51, Rarity.UNCOMMON, mage.cards.s.SkyshroudVampire.class));
cards.add(new SetCardInfo("Sky Spirit", 346, Rarity.UNCOMMON, mage.cards.s.SkySpirit.class));
cards.add(new SetCardInfo("Soltari Crusader", 253, Rarity.UNCOMMON, mage.cards.s.SoltariCrusader.class));
cards.add(new SetCardInfo("Soltari Emissary", 254, Rarity.RARE, mage.cards.s.SoltariEmissary.class));
cards.add(new SetCardInfo("Soltari Foot Soldier", 255, Rarity.COMMON, mage.cards.s.SoltariFootSoldier.class));
cards.add(new SetCardInfo("Soltari Guerrillas", 347, Rarity.RARE, mage.cards.s.SoltariGuerrillas.class));
cards.add(new SetCardInfo("Soltari Lancer", 256, Rarity.COMMON, mage.cards.s.SoltariLancer.class));
cards.add(new SetCardInfo("Soltari Monk", 257, Rarity.UNCOMMON, mage.cards.s.SoltariMonk.class));
cards.add(new SetCardInfo("Soltari Priest", 258, Rarity.UNCOMMON, mage.cards.s.SoltariPriest.class));
cards.add(new SetCardInfo("Soltari Trooper", 259, Rarity.COMMON, mage.cards.s.SoltariTrooper.class));
cards.add(new SetCardInfo("Souldrinker", 52, Rarity.UNCOMMON, mage.cards.s.Souldrinker.class));
cards.add(new SetCardInfo("Spell Blast", 89, Rarity.COMMON, mage.cards.s.SpellBlast.class));
cards.add(new SetCardInfo("Spike Drone", 152, Rarity.COMMON, mage.cards.s.SpikeDrone.class));
cards.add(new SetCardInfo("Spinal Graft", 53, Rarity.COMMON, mage.cards.s.SpinalGraft.class));
cards.add(new SetCardInfo("Spirit Mirror", 260, Rarity.RARE, mage.cards.s.SpiritMirror.class));
cards.add(new SetCardInfo("Spontaneous Combustion", 348, Rarity.UNCOMMON, mage.cards.s.SpontaneousCombustion.class));
cards.add(new SetCardInfo("Squee's Toy", 299, Rarity.COMMON, mage.cards.s.SqueesToy.class));
cards.add(new SetCardInfo("Stalking Stones", 333, Rarity.UNCOMMON, mage.cards.s.StalkingStones.class));
cards.add(new SetCardInfo("Starke of Rath", 205, Rarity.RARE, mage.cards.s.StarkeOfRath.class));
cards.add(new SetCardInfo("Static Orb", 300, Rarity.RARE, mage.cards.s.StaticOrb.class));
cards.add(new SetCardInfo("Staunch Defenders", 261, Rarity.UNCOMMON, mage.cards.s.StaunchDefenders.class));
cards.add(new SetCardInfo("Steal Enchantment", 90, Rarity.UNCOMMON, mage.cards.s.StealEnchantment.class));
cards.add(new SetCardInfo("Stinging Licid", 91, Rarity.UNCOMMON, mage.cards.s.StingingLicid.class));
cards.add(new SetCardInfo("Stone Rain", 206, Rarity.COMMON, mage.cards.s.StoneRain.class));
cards.add(new SetCardInfo("Storm Front", 153, Rarity.UNCOMMON, mage.cards.s.StormFront.class));
cards.add(new SetCardInfo("Stun", 207, Rarity.COMMON, mage.cards.s.Stun.class));
cards.add(new SetCardInfo("Sudden Impact", 208, Rarity.UNCOMMON, mage.cards.s.SuddenImpact.class));
cards.add(new SetCardInfo("Swamp", 334, Rarity.LAND, mage.cards.basiclands.Swamp.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Swamp", 335, Rarity.LAND, mage.cards.basiclands.Swamp.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Swamp", 336, Rarity.LAND, mage.cards.basiclands.Swamp.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Swamp", 337, Rarity.LAND, mage.cards.basiclands.Swamp.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Talon Sliver", 262, Rarity.COMMON, mage.cards.t.TalonSliver.class));
cards.add(new SetCardInfo("Telethopter", 301, Rarity.UNCOMMON, mage.cards.t.Telethopter.class));
cards.add(new SetCardInfo("Thalakos Dreamsower", 92, Rarity.UNCOMMON, mage.cards.t.ThalakosDreamsower.class));
cards.add(new SetCardInfo("Thalakos Lowlands", 338, Rarity.UNCOMMON, mage.cards.t.ThalakosLowlands.class));
cards.add(new SetCardInfo("Thalakos Mistfolk", 93, Rarity.COMMON, mage.cards.t.ThalakosMistfolk.class));
cards.add(new SetCardInfo("Thalakos Seer", 94, Rarity.COMMON, mage.cards.t.ThalakosSeer.class));
cards.add(new SetCardInfo("Thalakos Sentry", 95, Rarity.COMMON, mage.cards.t.ThalakosSentry.class));
cards.add(new SetCardInfo("Thumbscrews", 302, Rarity.RARE, mage.cards.t.Thumbscrews.class));
cards.add(new SetCardInfo("Time Ebb", 96, Rarity.COMMON, mage.cards.t.TimeEbb.class));
cards.add(new SetCardInfo("Time Warp", 97, Rarity.RARE, mage.cards.t.TimeWarp.class));
cards.add(new SetCardInfo("Tooth and Claw", 210, Rarity.RARE, mage.cards.t.ToothAndClaw.class));
cards.add(new SetCardInfo("Torture Chamber", 303, Rarity.RARE, mage.cards.t.TortureChamber.class));
cards.add(new SetCardInfo("Tradewind Rider", 98, Rarity.RARE, mage.cards.t.TradewindRider.class));
cards.add(new SetCardInfo("Trained Armodon", 154, Rarity.COMMON, mage.cards.t.TrainedArmodon.class));
cards.add(new SetCardInfo("Tranquility", 155, Rarity.COMMON, mage.cards.t.Tranquility.class));
cards.add(new SetCardInfo("Trumpeting Armodon", 156, Rarity.UNCOMMON, mage.cards.t.TrumpetingArmodon.class));
cards.add(new SetCardInfo("Twitch", 99, Rarity.COMMON, mage.cards.t.Twitch.class));
cards.add(new SetCardInfo("Unstable Shapeshifter", 100, Rarity.RARE, mage.cards.u.UnstableShapeshifter.class));
cards.add(new SetCardInfo("Vec Townships", 339, Rarity.UNCOMMON, mage.cards.v.VecTownships.class));
cards.add(new SetCardInfo("Verdant Force", 157, Rarity.RARE, mage.cards.v.VerdantForce.class));
cards.add(new SetCardInfo("Verdigris", 158, Rarity.UNCOMMON, mage.cards.v.Verdigris.class));
cards.add(new SetCardInfo("Vhati il-Dal", 349, Rarity.RARE, mage.cards.v.VhatiIlDal.class));
cards.add(new SetCardInfo("Volrath's Curse", 101, Rarity.COMMON, mage.cards.v.VolrathsCurse.class));
cards.add(new SetCardInfo("Wall of Diffusion", 211, Rarity.COMMON, mage.cards.w.WallOfDiffusion.class));
cards.add(new SetCardInfo("Warmth", 263, Rarity.UNCOMMON, mage.cards.w.Warmth.class));
cards.add(new SetCardInfo("Wasteland", 340, Rarity.UNCOMMON, mage.cards.w.Wasteland.class));
cards.add(new SetCardInfo("Watchdog", 304, Rarity.UNCOMMON, mage.cards.w.Watchdog.class));
cards.add(new SetCardInfo("Whispers of the Muse", 103, Rarity.UNCOMMON, mage.cards.w.WhispersOfTheMuse.class));
cards.add(new SetCardInfo("Wild Wurm", 212, Rarity.UNCOMMON, mage.cards.w.WildWurm.class));
cards.add(new SetCardInfo("Wind Dancer", 104, Rarity.UNCOMMON, mage.cards.w.WindDancer.class));
cards.add(new SetCardInfo("Wind Drake", 105, Rarity.COMMON, mage.cards.w.WindDrake.class));
cards.add(new SetCardInfo("Winds of Rath", 264, Rarity.RARE, mage.cards.w.WindsOfRath.class));
cards.add(new SetCardInfo("Winged Sliver", 106, Rarity.COMMON, mage.cards.w.WingedSliver.class));
cards.add(new SetCardInfo("Winter's Grasp", 159, Rarity.UNCOMMON, mage.cards.w.WintersGrasp.class));
cards.add(new SetCardInfo("Wood Sage", 350, Rarity.RARE, mage.cards.w.WoodSage.class));
cards.add(new SetCardInfo("Worthy Cause", 265, Rarity.UNCOMMON, mage.cards.w.WorthyCause.class));
}
}
package mage.sets;
import mage.cards.CardGraphicInfo;
import mage.cards.ExpansionSet;
import mage.constants.Rarity;
import mage.constants.SetType;
public class Tempest extends ExpansionSet {
private static final Tempest fINSTANCE = new Tempest();
public static Tempest getInstance() {
return fINSTANCE;
}
private Tempest() {
super("Tempest", "TMP", ExpansionSet.buildDate(1997, 10, 1), SetType.EXPANSION);
this.blockName = "Tempest";
this.hasBoosters = true;
this.numBoosterLands = 0;
this.numBoosterCommon = 11;
this.numBoosterUncommon = 3;
this.numBoosterRare = 1;
this.ratioBoosterMythic = 0;
cards.add(new SetCardInfo("Abandon Hope", 1, Rarity.UNCOMMON, mage.cards.a.AbandonHope.class));
cards.add(new SetCardInfo("Advance Scout", 213, Rarity.COMMON, mage.cards.a.AdvanceScout.class));
cards.add(new SetCardInfo("Aftershock", 160, Rarity.COMMON, mage.cards.a.Aftershock.class));
cards.add(new SetCardInfo("Altar of Dementia", 266, Rarity.RARE, mage.cards.a.AltarOfDementia.class));
cards.add(new SetCardInfo("Aluren", 107, Rarity.RARE, mage.cards.a.Aluren.class));
cards.add(new SetCardInfo("Ancient Runes", 161, Rarity.UNCOMMON, mage.cards.a.AncientRunes.class));
cards.add(new SetCardInfo("Ancient Tomb", 305, Rarity.UNCOMMON, mage.cards.a.AncientTomb.class));
cards.add(new SetCardInfo("Angelic Protector", 214, Rarity.UNCOMMON, mage.cards.a.AngelicProtector.class));
cards.add(new SetCardInfo("Anoint", 215, Rarity.COMMON, mage.cards.a.Anoint.class));
cards.add(new SetCardInfo("Apes of Rath", 108, Rarity.UNCOMMON, mage.cards.a.ApesOfRath.class));
cards.add(new SetCardInfo("Apocalypse", 162, Rarity.RARE, mage.cards.a.Apocalypse.class));
cards.add(new SetCardInfo("Armored Pegasus", 217, Rarity.COMMON, mage.cards.a.ArmoredPegasus.class));
cards.add(new SetCardInfo("Armor Sliver", 216, Rarity.UNCOMMON, mage.cards.a.ArmorSliver.class));
cards.add(new SetCardInfo("Auratog", 218, Rarity.RARE, mage.cards.a.Auratog.class));
cards.add(new SetCardInfo("Avenging Angel", 219, Rarity.RARE, mage.cards.a.AvengingAngel.class));
cards.add(new SetCardInfo("Barbed Sliver", 163, Rarity.UNCOMMON, mage.cards.b.BarbedSliver.class));
cards.add(new SetCardInfo("Bayou Dragonfly", 109, Rarity.COMMON, mage.cards.b.BayouDragonfly.class));
cards.add(new SetCardInfo("Bellowing Fiend", 2, Rarity.RARE, mage.cards.b.BellowingFiend.class));
cards.add(new SetCardInfo("Benthic Behemoth", 54, Rarity.RARE, mage.cards.b.BenthicBehemoth.class));
cards.add(new SetCardInfo("Blood Frenzy", 164, Rarity.COMMON, mage.cards.b.BloodFrenzy.class));
cards.add(new SetCardInfo("Blood Pet", 3, Rarity.COMMON, mage.cards.b.BloodPet.class));
cards.add(new SetCardInfo("Boil", 165, Rarity.UNCOMMON, mage.cards.b.Boil.class));
cards.add(new SetCardInfo("Bottle Gnomes", 268, Rarity.UNCOMMON, mage.cards.b.BottleGnomes.class));
cards.add(new SetCardInfo("Bounty Hunter", 4, Rarity.RARE, mage.cards.b.BountyHunter.class));
cards.add(new SetCardInfo("Broken Fall", 110, Rarity.COMMON, mage.cards.b.BrokenFall.class));
cards.add(new SetCardInfo("Caldera Lake", 306, Rarity.RARE, mage.cards.c.CalderaLake.class));
cards.add(new SetCardInfo("Canopy Spider", 111, Rarity.COMMON, mage.cards.c.CanopySpider.class));
cards.add(new SetCardInfo("Canyon Drake", 166, Rarity.RARE, mage.cards.c.CanyonDrake.class));
cards.add(new SetCardInfo("Canyon Wildcat", 167, Rarity.COMMON, mage.cards.c.CanyonWildcat.class));
cards.add(new SetCardInfo("Capsize", 55, Rarity.COMMON, mage.cards.c.Capsize.class));
cards.add(new SetCardInfo("Chaotic Goo", 168, Rarity.RARE, mage.cards.c.ChaoticGoo.class));
cards.add(new SetCardInfo("Charging Rhino", 112, Rarity.UNCOMMON, mage.cards.c.ChargingRhino.class));
cards.add(new SetCardInfo("Chill", 56, Rarity.UNCOMMON, mage.cards.c.Chill.class));
cards.add(new SetCardInfo("Choke", 113, Rarity.UNCOMMON, mage.cards.c.Choke.class));
cards.add(new SetCardInfo("Cinder Marsh", 307, Rarity.UNCOMMON, mage.cards.c.CinderMarsh.class));
cards.add(new SetCardInfo("Circle of Protection: Black", 220, Rarity.COMMON, mage.cards.c.CircleOfProtectionBlack.class));
cards.add(new SetCardInfo("Circle of Protection: Blue", 221, Rarity.COMMON, mage.cards.c.CircleOfProtectionBlue.class));
cards.add(new SetCardInfo("Circle of Protection: Green", 222, Rarity.COMMON, mage.cards.c.CircleOfProtectionGreen.class));
cards.add(new SetCardInfo("Circle of Protection: Red", 223, Rarity.COMMON, mage.cards.c.CircleOfProtectionRed.class));
cards.add(new SetCardInfo("Circle of Protection: Shadow", 224, Rarity.COMMON, mage.cards.c.CircleOfProtectionShadow.class));
cards.add(new SetCardInfo("Circle of Protection: White", 225, Rarity.COMMON, mage.cards.c.CircleOfProtectionWhite.class));
cards.add(new SetCardInfo("Clergy en-Vec", 226, Rarity.COMMON, mage.cards.c.ClergyEnVec.class));
cards.add(new SetCardInfo("Clot Sliver", 6, Rarity.COMMON, mage.cards.c.ClotSliver.class));
cards.add(new SetCardInfo("Cloudchaser Eagle", 227, Rarity.COMMON, mage.cards.c.CloudchaserEagle.class));
cards.add(new SetCardInfo("Coercion", 7, Rarity.COMMON, mage.cards.c.Coercion.class));
cards.add(new SetCardInfo("Coffin Queen", 8, Rarity.RARE, mage.cards.c.CoffinQueen.class));
cards.add(new SetCardInfo("Coiled Tinviper", 269, Rarity.COMMON, mage.cards.c.CoiledTinviper.class));
cards.add(new SetCardInfo("Cold Storage", 270, Rarity.RARE, mage.cards.c.ColdStorage.class));
cards.add(new SetCardInfo("Commander Greven il-Vec", 9, Rarity.RARE, mage.cards.c.CommanderGrevenIlVec.class));
cards.add(new SetCardInfo("Corpse Dance", 10, Rarity.RARE, mage.cards.c.CorpseDance.class));
cards.add(new SetCardInfo("Counterspell", 57, Rarity.COMMON, mage.cards.c.Counterspell.class));
cards.add(new SetCardInfo("Crazed Armodon", 114, Rarity.RARE, mage.cards.c.CrazedArmodon.class));
cards.add(new SetCardInfo("Crown of Flames", 169, Rarity.COMMON, mage.cards.c.CrownOfFlames.class));
cards.add(new SetCardInfo("Cursed Scroll", 271, Rarity.RARE, mage.cards.c.CursedScroll.class));
cards.add(new SetCardInfo("Dark Banishing", 11, Rarity.COMMON, mage.cards.d.DarkBanishing.class));
cards.add(new SetCardInfo("Darkling Stalker", 13, Rarity.COMMON, mage.cards.d.DarklingStalker.class));
cards.add(new SetCardInfo("Dark Ritual", 12, Rarity.COMMON, mage.cards.d.DarkRitual.class));
cards.add(new SetCardInfo("Dauthi Embrace", 14, Rarity.UNCOMMON, mage.cards.d.DauthiEmbrace.class));
cards.add(new SetCardInfo("Dauthi Ghoul", 15, Rarity.UNCOMMON, mage.cards.d.DauthiGhoul.class));
cards.add(new SetCardInfo("Dauthi Horror", 16, Rarity.COMMON, mage.cards.d.DauthiHorror.class));
cards.add(new SetCardInfo("Dauthi Marauder", 17, Rarity.COMMON, mage.cards.d.DauthiMarauder.class));
cards.add(new SetCardInfo("Dauthi Mercenary", 18, Rarity.UNCOMMON, mage.cards.d.DauthiMercenary.class));
cards.add(new SetCardInfo("Dauthi Mindripper", 19, Rarity.UNCOMMON, mage.cards.d.DauthiMindripper.class));
cards.add(new SetCardInfo("Dauthi Slayer", 20, Rarity.COMMON, mage.cards.d.DauthiSlayer.class));
cards.add(new SetCardInfo("Deadshot", 170, Rarity.RARE, mage.cards.d.Deadshot.class));
cards.add(new SetCardInfo("Death Pits of Rath", 21, Rarity.RARE, mage.cards.d.DeathPitsOfRath.class));
cards.add(new SetCardInfo("Diabolic Edict", 22, Rarity.COMMON, mage.cards.d.DiabolicEdict.class));
cards.add(new SetCardInfo("Dirtcowl Wurm", 115, Rarity.RARE, mage.cards.d.DirtcowlWurm.class));
cards.add(new SetCardInfo("Disenchant", 228, Rarity.COMMON, mage.cards.d.Disenchant.class));
cards.add(new SetCardInfo("Dismiss", 58, Rarity.UNCOMMON, mage.cards.d.Dismiss.class));
cards.add(new SetCardInfo("Disturbed Burial", 23, Rarity.COMMON, mage.cards.d.DisturbedBurial.class));
cards.add(new SetCardInfo("Dracoplasm", 341, Rarity.RARE, mage.cards.d.Dracoplasm.class));
cards.add(new SetCardInfo("Dread of Night", 24, Rarity.UNCOMMON, mage.cards.d.DreadOfNight.class));
cards.add(new SetCardInfo("Dream Cache", 59, Rarity.COMMON, mage.cards.d.DreamCache.class));
cards.add(new SetCardInfo("Dregs of Sorrow", 25, Rarity.RARE, mage.cards.d.DregsOfSorrow.class));
cards.add(new SetCardInfo("Earthcraft", 116, Rarity.RARE, mage.cards.e.Earthcraft.class));
cards.add(new SetCardInfo("Eladamri, Lord of Leaves", 117, Rarity.RARE, mage.cards.e.EladamriLordOfLeaves.class));
cards.add(new SetCardInfo("Eladamri's Vineyard", 118, Rarity.RARE, mage.cards.e.EladamrisVineyard.class));
cards.add(new SetCardInfo("Elite Javelineer", 229, Rarity.COMMON, mage.cards.e.EliteJavelineer.class));
cards.add(new SetCardInfo("Elven Warhounds", 119, Rarity.RARE, mage.cards.e.ElvenWarhounds.class));
cards.add(new SetCardInfo("Elvish Fury", 120, Rarity.UNCOMMON, mage.cards.e.ElvishFury.class));
cards.add(new SetCardInfo("Emerald Medallion", 273, Rarity.RARE, mage.cards.e.EmeraldMedallion.class));
cards.add(new SetCardInfo("Emmessi Tome", 274, Rarity.RARE, mage.cards.e.EmmessiTome.class));
cards.add(new SetCardInfo("Endless Scream", 26, Rarity.COMMON, mage.cards.e.EndlessScream.class));
cards.add(new SetCardInfo("Energizer", 275, Rarity.RARE, mage.cards.e.Energizer.class));
cards.add(new SetCardInfo("Enfeeblement", 27, Rarity.COMMON, mage.cards.e.Enfeeblement.class));
cards.add(new SetCardInfo("Enraging Licid", 171, Rarity.UNCOMMON, mage.cards.e.EnragingLicid.class));
cards.add(new SetCardInfo("Essence Bottle", 276, Rarity.UNCOMMON, mage.cards.e.EssenceBottle.class));
cards.add(new SetCardInfo("Evincar's Justice", 28, Rarity.COMMON, mage.cards.e.EvincarsJustice.class));
cards.add(new SetCardInfo("Excavator", 277, Rarity.UNCOMMON, mage.cards.e.Excavator.class));
cards.add(new SetCardInfo("Extinction", 29, Rarity.RARE, mage.cards.e.Extinction.class));
cards.add(new SetCardInfo("Fevered Convulsions", 30, Rarity.RARE, mage.cards.f.FeveredConvulsions.class));
cards.add(new SetCardInfo("Field of Souls", 230, Rarity.RARE, mage.cards.f.FieldOfSouls.class));
cards.add(new SetCardInfo("Fighting Drake", 63, Rarity.UNCOMMON, mage.cards.f.FightingDrake.class));
cards.add(new SetCardInfo("Firefly", 172, Rarity.UNCOMMON, mage.cards.f.Firefly.class));
cards.add(new SetCardInfo("Fireslinger", 173, Rarity.COMMON, mage.cards.f.Fireslinger.class));
cards.add(new SetCardInfo("Flailing Drake", 121, Rarity.UNCOMMON, mage.cards.f.FlailingDrake.class));
cards.add(new SetCardInfo("Flickering Ward", 231, Rarity.UNCOMMON, mage.cards.f.FlickeringWard.class));
cards.add(new SetCardInfo("Flowstone Giant", 174, Rarity.COMMON, mage.cards.f.FlowstoneGiant.class));
cards.add(new SetCardInfo("Flowstone Salamander", 175, Rarity.UNCOMMON, mage.cards.f.FlowstoneSalamander.class));
cards.add(new SetCardInfo("Flowstone Sculpture", 278, Rarity.RARE, mage.cards.f.FlowstoneSculpture.class));
cards.add(new SetCardInfo("Flowstone Wyvern", 176, Rarity.RARE, mage.cards.f.FlowstoneWyvern.class));
cards.add(new SetCardInfo("Fool's Tome", 279, Rarity.RARE, mage.cards.f.FoolsTome.class));
cards.add(new SetCardInfo("Forest", 308, Rarity.LAND, mage.cards.basiclands.Forest.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Forest", 309, Rarity.LAND, mage.cards.basiclands.Forest.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Forest", 310, Rarity.LAND, mage.cards.basiclands.Forest.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Forest", 311, Rarity.LAND, mage.cards.basiclands.Forest.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Frog Tongue", 122, Rarity.COMMON, mage.cards.f.FrogTongue.class));
cards.add(new SetCardInfo("Fugitive Druid", 123, Rarity.RARE, mage.cards.f.FugitiveDruid.class));
cards.add(new SetCardInfo("Furnace of Rath", 177, Rarity.RARE, mage.cards.f.FurnaceOfRath.class));
cards.add(new SetCardInfo("Fylamarid", 64, Rarity.UNCOMMON, mage.cards.f.Fylamarid.class));
cards.add(new SetCardInfo("Gallantry", 232, Rarity.UNCOMMON, mage.cards.g.Gallantry.class));
cards.add(new SetCardInfo("Gaseous Form", 65, Rarity.COMMON, mage.cards.g.GaseousForm.class));
cards.add(new SetCardInfo("Gerrard's Battle Cry", 233, Rarity.RARE, mage.cards.g.GerrardsBattleCry.class));
cards.add(new SetCardInfo("Ghost Town", 312, Rarity.UNCOMMON, mage.cards.g.GhostTown.class));
cards.add(new SetCardInfo("Giant Crab", 66, Rarity.COMMON, mage.cards.g.GiantCrab.class));
cards.add(new SetCardInfo("Giant Strength", 178, Rarity.COMMON, mage.cards.g.GiantStrength.class));
cards.add(new SetCardInfo("Goblin Bombardment", 179, Rarity.UNCOMMON, mage.cards.g.GoblinBombardment.class));
cards.add(new SetCardInfo("Gravedigger", 31, Rarity.COMMON, mage.cards.g.Gravedigger.class));
cards.add(new SetCardInfo("Grindstone", 280, Rarity.RARE, mage.cards.g.Grindstone.class));
cards.add(new SetCardInfo("Hand to Hand", 180, Rarity.RARE, mage.cards.h.HandToHand.class));
cards.add(new SetCardInfo("Hanna's Custody", 234, Rarity.RARE, mage.cards.h.HannasCustody.class));
cards.add(new SetCardInfo("Harrow", 124, Rarity.UNCOMMON, mage.cards.h.Harrow.class));
cards.add(new SetCardInfo("Havoc", 181, Rarity.UNCOMMON, mage.cards.h.Havoc.class));
cards.add(new SetCardInfo("Heart Sliver", 182, Rarity.COMMON, mage.cards.h.HeartSliver.class));
cards.add(new SetCardInfo("Heartwood Dryad", 125, Rarity.COMMON, mage.cards.h.HeartwoodDryad.class));
cards.add(new SetCardInfo("Heartwood Giant", 126, Rarity.RARE, mage.cards.h.HeartwoodGiant.class));
cards.add(new SetCardInfo("Heartwood Treefolk", 127, Rarity.UNCOMMON, mage.cards.h.HeartwoodTreefolk.class));
cards.add(new SetCardInfo("Helm of Possession", 281, Rarity.RARE, mage.cards.h.HelmOfPossession.class));
cards.add(new SetCardInfo("Hero's Resolve", 235, Rarity.COMMON, mage.cards.h.HerosResolve.class));
cards.add(new SetCardInfo("Horned Sliver", 128, Rarity.UNCOMMON, mage.cards.h.HornedSliver.class));
cards.add(new SetCardInfo("Horned Turtle", 67, Rarity.COMMON, mage.cards.h.HornedTurtle.class));
cards.add(new SetCardInfo("Humility", 236, Rarity.RARE, mage.cards.h.Humility.class));
cards.add(new SetCardInfo("Imps' Taunt", 32, Rarity.UNCOMMON, mage.cards.i.ImpsTaunt.class));
cards.add(new SetCardInfo("Insight", 68, Rarity.UNCOMMON, mage.cards.i.Insight.class));
cards.add(new SetCardInfo("Intuition", 70, Rarity.RARE, mage.cards.i.Intuition.class));
cards.add(new SetCardInfo("Invulnerability", 237, Rarity.UNCOMMON, mage.cards.i.Invulnerability.class));
cards.add(new SetCardInfo("Island", 313, Rarity.LAND, mage.cards.basiclands.Island.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Island", 314, Rarity.LAND, mage.cards.basiclands.Island.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Island", 315, Rarity.LAND, mage.cards.basiclands.Island.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Island", 316, Rarity.LAND, mage.cards.basiclands.Island.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Jackal Pup", 183, Rarity.UNCOMMON, mage.cards.j.JackalPup.class));
cards.add(new SetCardInfo("Jet Medallion", 282, Rarity.RARE, mage.cards.j.JetMedallion.class));
cards.add(new SetCardInfo("Jinxed Idol", 283, Rarity.RARE, mage.cards.j.JinxedIdol.class));
cards.add(new SetCardInfo("Kezzerdrix", 33, Rarity.RARE, mage.cards.k.Kezzerdrix.class));
cards.add(new SetCardInfo("Kindle", 184, Rarity.COMMON, mage.cards.k.Kindle.class));
cards.add(new SetCardInfo("Knight of Dawn", 238, Rarity.UNCOMMON, mage.cards.k.KnightOfDawn.class));
cards.add(new SetCardInfo("Knight of Dusk", 34, Rarity.UNCOMMON, mage.cards.k.KnightOfDusk.class));
cards.add(new SetCardInfo("Krakilin", 129, Rarity.UNCOMMON, mage.cards.k.Krakilin.class));
cards.add(new SetCardInfo("Leeching Licid", 35, Rarity.UNCOMMON, mage.cards.l.LeechingLicid.class));
cards.add(new SetCardInfo("Legacy's Allure", 71, Rarity.UNCOMMON, mage.cards.l.LegacysAllure.class));
cards.add(new SetCardInfo("Legerdemain", 72, Rarity.UNCOMMON, mage.cards.l.Legerdemain.class));
cards.add(new SetCardInfo("Lightning Blast", 185, Rarity.COMMON, mage.cards.l.LightningBlast.class));
cards.add(new SetCardInfo("Lightning Elemental", 186, Rarity.COMMON, mage.cards.l.LightningElemental.class));
cards.add(new SetCardInfo("Light of Day", 239, Rarity.UNCOMMON, mage.cards.l.LightOfDay.class));
cards.add(new SetCardInfo("Living Death", 36, Rarity.RARE, mage.cards.l.LivingDeath.class));
cards.add(new SetCardInfo("Lobotomy", 342, Rarity.UNCOMMON, mage.cards.l.Lobotomy.class));
cards.add(new SetCardInfo("Lotus Petal", 284, Rarity.COMMON, mage.cards.l.LotusPetal.class));
cards.add(new SetCardInfo("Lowland Giant", 187, Rarity.COMMON, mage.cards.l.LowlandGiant.class));
cards.add(new SetCardInfo("Magmasaur", 188, Rarity.RARE, mage.cards.m.Magmasaur.class));
cards.add(new SetCardInfo("Manakin", 286, Rarity.COMMON, mage.cards.m.Manakin.class));
cards.add(new SetCardInfo("Mana Severance", 73, Rarity.RARE, mage.cards.m.ManaSeverance.class));
cards.add(new SetCardInfo("Manta Riders", 74, Rarity.COMMON, mage.cards.m.MantaRiders.class));
cards.add(new SetCardInfo("Marble Titan", 240, Rarity.RARE, mage.cards.m.MarbleTitan.class));
cards.add(new SetCardInfo("Marsh Lurker", 38, Rarity.COMMON, mage.cards.m.MarshLurker.class));
cards.add(new SetCardInfo("Master Decoy", 241, Rarity.COMMON, mage.cards.m.MasterDecoy.class));
cards.add(new SetCardInfo("Mawcor", 75, Rarity.RARE, mage.cards.m.Mawcor.class));
cards.add(new SetCardInfo("Maze of Shadows", 317, Rarity.UNCOMMON, mage.cards.m.MazeOfShadows.class));
cards.add(new SetCardInfo("Meditate", 76, Rarity.RARE, mage.cards.m.Meditate.class));
cards.add(new SetCardInfo("Metallic Sliver", 287, Rarity.COMMON, mage.cards.m.MetallicSliver.class));
cards.add(new SetCardInfo("Mindwhip Sliver", 39, Rarity.UNCOMMON, mage.cards.m.MindwhipSliver.class));
cards.add(new SetCardInfo("Mirri's Guile", 130, Rarity.RARE, mage.cards.m.MirrisGuile.class));
cards.add(new SetCardInfo("Mnemonic Sliver", 77, Rarity.UNCOMMON, mage.cards.m.MnemonicSliver.class));
cards.add(new SetCardInfo("Mogg Cannon", 288, Rarity.UNCOMMON, mage.cards.m.MoggCannon.class));
cards.add(new SetCardInfo("Mogg Conscripts", 189, Rarity.COMMON, mage.cards.m.MoggConscripts.class));
cards.add(new SetCardInfo("Mogg Fanatic", 190, Rarity.COMMON, mage.cards.m.MoggFanatic.class));
cards.add(new SetCardInfo("Mogg Hollows", 318, Rarity.UNCOMMON, mage.cards.m.MoggHollows.class));
cards.add(new SetCardInfo("Mogg Raider", 191, Rarity.COMMON, mage.cards.m.MoggRaider.class));
cards.add(new SetCardInfo("Mogg Squad", 192, Rarity.COMMON, mage.cards.m.MoggSquad.class));
cards.add(new SetCardInfo("Mongrel Pack", 131, Rarity.RARE, mage.cards.m.MongrelPack.class));
cards.add(new SetCardInfo("Mountain", 319, Rarity.LAND, mage.cards.basiclands.Mountain.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Mountain", 320, Rarity.LAND, mage.cards.basiclands.Mountain.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Mountain", 321, Rarity.LAND, mage.cards.basiclands.Mountain.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Mountain", 322, Rarity.LAND, mage.cards.basiclands.Mountain.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Mounted Archers", 242, Rarity.COMMON, mage.cards.m.MountedArchers.class));
cards.add(new SetCardInfo("Muscle Sliver", 132, Rarity.COMMON, mage.cards.m.MuscleSliver.class));
cards.add(new SetCardInfo("Natural Spring", 133, Rarity.COMMON, mage.cards.n.NaturalSpring.class));
cards.add(new SetCardInfo("Nature's Revolt", 134, Rarity.RARE, mage.cards.n.NaturesRevolt.class));
cards.add(new SetCardInfo("Needle Storm", 135, Rarity.UNCOMMON, mage.cards.n.NeedleStorm.class));
cards.add(new SetCardInfo("Nurturing Licid", 136, Rarity.UNCOMMON, mage.cards.n.NurturingLicid.class));
cards.add(new SetCardInfo("Opportunist", 194, Rarity.UNCOMMON, mage.cards.o.Opportunist.class));
cards.add(new SetCardInfo("Oracle en-Vec", 243, Rarity.RARE, mage.cards.o.OracleEnVec.class));
cards.add(new SetCardInfo("Orim, Samite Healer", 244, Rarity.RARE, mage.cards.o.OrimSamiteHealer.class));
cards.add(new SetCardInfo("Overrun", 137, Rarity.UNCOMMON, mage.cards.o.Overrun.class));
cards.add(new SetCardInfo("Pacifism", 246, Rarity.COMMON, mage.cards.p.Pacifism.class));
cards.add(new SetCardInfo("Pallimud", 195, Rarity.RARE, mage.cards.p.Pallimud.class));
cards.add(new SetCardInfo("Patchwork Gnomes", 289, Rarity.UNCOMMON, mage.cards.p.PatchworkGnomes.class));
cards.add(new SetCardInfo("Pearl Medallion", 290, Rarity.RARE, mage.cards.p.PearlMedallion.class));
cards.add(new SetCardInfo("Pegasus Refuge", 247, Rarity.RARE, mage.cards.p.PegasusRefuge.class));
cards.add(new SetCardInfo("Perish", 41, Rarity.UNCOMMON, mage.cards.p.Perish.class));
cards.add(new SetCardInfo("Phyrexian Grimoire", 291, Rarity.RARE, mage.cards.p.PhyrexianGrimoire.class));
cards.add(new SetCardInfo("Phyrexian Hulk", 292, Rarity.UNCOMMON, mage.cards.p.PhyrexianHulk.class));
cards.add(new SetCardInfo("Pincher Beetles", 138, Rarity.COMMON, mage.cards.p.PincherBeetles.class));
cards.add(new SetCardInfo("Pine Barrens", 323, Rarity.RARE, mage.cards.p.PineBarrens.class));
cards.add(new SetCardInfo("Pit Imp", 42, Rarity.COMMON, mage.cards.p.PitImp.class));
cards.add(new SetCardInfo("Plains", 324, Rarity.LAND, mage.cards.basiclands.Plains.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Plains", 325, Rarity.LAND, mage.cards.basiclands.Plains.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Plains", 326, Rarity.LAND, mage.cards.basiclands.Plains.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Plains", 327, Rarity.LAND, mage.cards.basiclands.Plains.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Power Sink", 78, Rarity.COMMON, mage.cards.p.PowerSink.class));
cards.add(new SetCardInfo("Precognition", 79, Rarity.RARE, mage.cards.p.Precognition.class));
cards.add(new SetCardInfo("Propaganda", 80, Rarity.UNCOMMON, mage.cards.p.Propaganda.class));
cards.add(new SetCardInfo("Puppet Strings", 294, Rarity.UNCOMMON, mage.cards.p.PuppetStrings.class));
cards.add(new SetCardInfo("Quickening Licid", 248, Rarity.UNCOMMON, mage.cards.q.QuickeningLicid.class));
cards.add(new SetCardInfo("Rain of Tears", 43, Rarity.UNCOMMON, mage.cards.r.RainOfTears.class));
cards.add(new SetCardInfo("Rampant Growth", 139, Rarity.COMMON, mage.cards.r.RampantGrowth.class));
cards.add(new SetCardInfo("Ranger en-Vec", 343, Rarity.UNCOMMON, mage.cards.r.RangerEnVec.class));
cards.add(new SetCardInfo("Rathi Dragon", 196, Rarity.RARE, mage.cards.r.RathiDragon.class));
cards.add(new SetCardInfo("Rats of Rath", 44, Rarity.COMMON, mage.cards.r.RatsOfRath.class));
cards.add(new SetCardInfo("Reality Anchor", 140, Rarity.COMMON, mage.cards.r.RealityAnchor.class));
cards.add(new SetCardInfo("Reanimate", 45, Rarity.UNCOMMON, mage.cards.r.Reanimate.class));
cards.add(new SetCardInfo("Reckless Spite", 46, Rarity.UNCOMMON, mage.cards.r.RecklessSpite.class));
cards.add(new SetCardInfo("Recycle", 142, Rarity.RARE, mage.cards.r.Recycle.class));
cards.add(new SetCardInfo("Reflecting Pool", 328, Rarity.RARE, mage.cards.r.ReflectingPool.class));
cards.add(new SetCardInfo("Renegade Warlord", 197, Rarity.UNCOMMON, mage.cards.r.RenegadeWarlord.class));
cards.add(new SetCardInfo("Repentance", 249, Rarity.UNCOMMON, mage.cards.r.Repentance.class));
cards.add(new SetCardInfo("Respite", 143, Rarity.COMMON, mage.cards.r.Respite.class));
cards.add(new SetCardInfo("Rolling Thunder", 198, Rarity.COMMON, mage.cards.r.RollingThunder.class));
cards.add(new SetCardInfo("Rootbreaker Wurm", 145, Rarity.COMMON, mage.cards.r.RootbreakerWurm.class));
cards.add(new SetCardInfo("Root Maze", 144, Rarity.RARE, mage.cards.r.RootMaze.class));
cards.add(new SetCardInfo("Rootwalla", 146, Rarity.COMMON, mage.cards.r.Rootwalla.class));
cards.add(new SetCardInfo("Rootwater Depths", 329, Rarity.UNCOMMON, mage.cards.r.RootwaterDepths.class));
cards.add(new SetCardInfo("Rootwater Diver", 81, Rarity.UNCOMMON, mage.cards.r.RootwaterDiver.class));
cards.add(new SetCardInfo("Rootwater Hunter", 82, Rarity.COMMON, mage.cards.r.RootwaterHunter.class));
cards.add(new SetCardInfo("Rootwater Matriarch", 83, Rarity.RARE, mage.cards.r.RootwaterMatriarch.class));
cards.add(new SetCardInfo("Ruby Medallion", 295, Rarity.RARE, mage.cards.r.RubyMedallion.class));
cards.add(new SetCardInfo("Sacred Guide", 250, Rarity.RARE, mage.cards.s.SacredGuide.class));
cards.add(new SetCardInfo("Sadistic Glee", 47, Rarity.COMMON, mage.cards.s.SadisticGlee.class));
cards.add(new SetCardInfo("Safeguard", 251, Rarity.RARE, mage.cards.s.Safeguard.class));
cards.add(new SetCardInfo("Salt Flats", 330, Rarity.RARE, mage.cards.s.SaltFlats.class));
cards.add(new SetCardInfo("Sandstone Warrior", 199, Rarity.COMMON, mage.cards.s.SandstoneWarrior.class));
cards.add(new SetCardInfo("Sapphire Medallion", 296, Rarity.RARE, mage.cards.s.SapphireMedallion.class));
cards.add(new SetCardInfo("Sarcomancy", 48, Rarity.RARE, mage.cards.s.Sarcomancy.class));
cards.add(new SetCardInfo("Scabland", 331, Rarity.RARE, mage.cards.s.Scabland.class));
cards.add(new SetCardInfo("Scalding Tongs", 297, Rarity.RARE, mage.cards.s.ScaldingTongs.class));
cards.add(new SetCardInfo("Scorched Earth", 200, Rarity.RARE, mage.cards.s.ScorchedEarth.class));
cards.add(new SetCardInfo("Scragnoth", 147, Rarity.UNCOMMON, mage.cards.s.Scragnoth.class));
cards.add(new SetCardInfo("Screeching Harpy", 49, Rarity.UNCOMMON, mage.cards.s.ScreechingHarpy.class));
cards.add(new SetCardInfo("Scroll Rack", 298, Rarity.RARE, mage.cards.s.ScrollRack.class));
cards.add(new SetCardInfo("Sea Monster", 85, Rarity.COMMON, mage.cards.s.SeaMonster.class));
cards.add(new SetCardInfo("Searing Touch", 201, Rarity.UNCOMMON, mage.cards.s.SearingTouch.class));
cards.add(new SetCardInfo("Seeker of Skybreak", 148, Rarity.COMMON, mage.cards.s.SeekerOfSkybreak.class));
cards.add(new SetCardInfo("Segmented Wurm", 344, Rarity.UNCOMMON, mage.cards.s.SegmentedWurm.class));
cards.add(new SetCardInfo("Selenia, Dark Angel", 345, Rarity.RARE, mage.cards.s.SeleniaDarkAngel.class));
cards.add(new SetCardInfo("Serene Offering", 252, Rarity.UNCOMMON, mage.cards.s.SereneOffering.class));
cards.add(new SetCardInfo("Servant of Volrath", 50, Rarity.COMMON, mage.cards.s.ServantOfVolrath.class));
cards.add(new SetCardInfo("Shadow Rift", 86, Rarity.COMMON, mage.cards.s.ShadowRift.class));
cards.add(new SetCardInfo("Shadowstorm", 202, Rarity.UNCOMMON, mage.cards.s.Shadowstorm.class));
cards.add(new SetCardInfo("Shatter", 203, Rarity.COMMON, mage.cards.s.Shatter.class));
cards.add(new SetCardInfo("Shimmering Wings", 87, Rarity.COMMON, mage.cards.s.ShimmeringWings.class));
cards.add(new SetCardInfo("Shocker", 204, Rarity.RARE, mage.cards.s.Shocker.class));
cards.add(new SetCardInfo("Skyshroud Condor", 88, Rarity.UNCOMMON, mage.cards.s.SkyshroudCondor.class));
cards.add(new SetCardInfo("Skyshroud Elf", 149, Rarity.COMMON, mage.cards.s.SkyshroudElf.class));
cards.add(new SetCardInfo("Skyshroud Forest", 332, Rarity.RARE, mage.cards.s.SkyshroudForest.class));
cards.add(new SetCardInfo("Skyshroud Ranger", 150, Rarity.COMMON, mage.cards.s.SkyshroudRanger.class));
cards.add(new SetCardInfo("Skyshroud Troll", 151, Rarity.COMMON, mage.cards.s.SkyshroudTroll.class));
cards.add(new SetCardInfo("Skyshroud Vampire", 51, Rarity.UNCOMMON, mage.cards.s.SkyshroudVampire.class));
cards.add(new SetCardInfo("Sky Spirit", 346, Rarity.UNCOMMON, mage.cards.s.SkySpirit.class));
cards.add(new SetCardInfo("Soltari Crusader", 253, Rarity.UNCOMMON, mage.cards.s.SoltariCrusader.class));
cards.add(new SetCardInfo("Soltari Emissary", 254, Rarity.RARE, mage.cards.s.SoltariEmissary.class));
cards.add(new SetCardInfo("Soltari Foot Soldier", 255, Rarity.COMMON, mage.cards.s.SoltariFootSoldier.class));
cards.add(new SetCardInfo("Soltari Guerrillas", 347, Rarity.RARE, mage.cards.s.SoltariGuerrillas.class));
cards.add(new SetCardInfo("Soltari Lancer", 256, Rarity.COMMON, mage.cards.s.SoltariLancer.class));
cards.add(new SetCardInfo("Soltari Monk", 257, Rarity.UNCOMMON, mage.cards.s.SoltariMonk.class));
cards.add(new SetCardInfo("Soltari Priest", 258, Rarity.UNCOMMON, mage.cards.s.SoltariPriest.class));
cards.add(new SetCardInfo("Soltari Trooper", 259, Rarity.COMMON, mage.cards.s.SoltariTrooper.class));
cards.add(new SetCardInfo("Souldrinker", 52, Rarity.UNCOMMON, mage.cards.s.Souldrinker.class));
cards.add(new SetCardInfo("Spell Blast", 89, Rarity.COMMON, mage.cards.s.SpellBlast.class));
cards.add(new SetCardInfo("Spike Drone", 152, Rarity.COMMON, mage.cards.s.SpikeDrone.class));
cards.add(new SetCardInfo("Spinal Graft", 53, Rarity.COMMON, mage.cards.s.SpinalGraft.class));
cards.add(new SetCardInfo("Spirit Mirror", 260, Rarity.RARE, mage.cards.s.SpiritMirror.class));
cards.add(new SetCardInfo("Spontaneous Combustion", 348, Rarity.UNCOMMON, mage.cards.s.SpontaneousCombustion.class));
cards.add(new SetCardInfo("Squee's Toy", 299, Rarity.COMMON, mage.cards.s.SqueesToy.class));
cards.add(new SetCardInfo("Stalking Stones", 333, Rarity.UNCOMMON, mage.cards.s.StalkingStones.class));
cards.add(new SetCardInfo("Starke of Rath", 205, Rarity.RARE, mage.cards.s.StarkeOfRath.class));
cards.add(new SetCardInfo("Static Orb", 300, Rarity.RARE, mage.cards.s.StaticOrb.class));
cards.add(new SetCardInfo("Staunch Defenders", 261, Rarity.UNCOMMON, mage.cards.s.StaunchDefenders.class));
cards.add(new SetCardInfo("Steal Enchantment", 90, Rarity.UNCOMMON, mage.cards.s.StealEnchantment.class));
cards.add(new SetCardInfo("Stinging Licid", 91, Rarity.UNCOMMON, mage.cards.s.StingingLicid.class));
cards.add(new SetCardInfo("Stone Rain", 206, Rarity.COMMON, mage.cards.s.StoneRain.class));
cards.add(new SetCardInfo("Storm Front", 153, Rarity.UNCOMMON, mage.cards.s.StormFront.class));
cards.add(new SetCardInfo("Stun", 207, Rarity.COMMON, mage.cards.s.Stun.class));
cards.add(new SetCardInfo("Sudden Impact", 208, Rarity.UNCOMMON, mage.cards.s.SuddenImpact.class));
cards.add(new SetCardInfo("Swamp", 334, Rarity.LAND, mage.cards.basiclands.Swamp.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Swamp", 335, Rarity.LAND, mage.cards.basiclands.Swamp.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Swamp", 336, Rarity.LAND, mage.cards.basiclands.Swamp.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Swamp", 337, Rarity.LAND, mage.cards.basiclands.Swamp.class, new CardGraphicInfo(null, true)));
cards.add(new SetCardInfo("Talon Sliver", 262, Rarity.COMMON, mage.cards.t.TalonSliver.class));
cards.add(new SetCardInfo("Telethopter", 301, Rarity.UNCOMMON, mage.cards.t.Telethopter.class));
cards.add(new SetCardInfo("Thalakos Dreamsower", 92, Rarity.UNCOMMON, mage.cards.t.ThalakosDreamsower.class));
cards.add(new SetCardInfo("Thalakos Lowlands", 338, Rarity.UNCOMMON, mage.cards.t.ThalakosLowlands.class));
cards.add(new SetCardInfo("Thalakos Mistfolk", 93, Rarity.COMMON, mage.cards.t.ThalakosMistfolk.class));
cards.add(new SetCardInfo("Thalakos Seer", 94, Rarity.COMMON, mage.cards.t.ThalakosSeer.class));
cards.add(new SetCardInfo("Thalakos Sentry", 95, Rarity.COMMON, mage.cards.t.ThalakosSentry.class));
cards.add(new SetCardInfo("Thumbscrews", 302, Rarity.RARE, mage.cards.t.Thumbscrews.class));
cards.add(new SetCardInfo("Time Ebb", 96, Rarity.COMMON, mage.cards.t.TimeEbb.class));
cards.add(new SetCardInfo("Time Warp", 97, Rarity.RARE, mage.cards.t.TimeWarp.class));
cards.add(new SetCardInfo("Tooth and Claw", 210, Rarity.RARE, mage.cards.t.ToothAndClaw.class));
cards.add(new SetCardInfo("Torture Chamber", 303, Rarity.RARE, mage.cards.t.TortureChamber.class));
cards.add(new SetCardInfo("Tradewind Rider", 98, Rarity.RARE, mage.cards.t.TradewindRider.class));
cards.add(new SetCardInfo("Trained Armodon", 154, Rarity.COMMON, mage.cards.t.TrainedArmodon.class));
cards.add(new SetCardInfo("Tranquility", 155, Rarity.COMMON, mage.cards.t.Tranquility.class));
cards.add(new SetCardInfo("Trumpeting Armodon", 156, Rarity.UNCOMMON, mage.cards.t.TrumpetingArmodon.class));
cards.add(new SetCardInfo("Twitch", 99, Rarity.COMMON, mage.cards.t.Twitch.class));
cards.add(new SetCardInfo("Unstable Shapeshifter", 100, Rarity.RARE, mage.cards.u.UnstableShapeshifter.class));
cards.add(new SetCardInfo("Vec Townships", 339, Rarity.UNCOMMON, mage.cards.v.VecTownships.class));
cards.add(new SetCardInfo("Verdant Force", 157, Rarity.RARE, mage.cards.v.VerdantForce.class));
cards.add(new SetCardInfo("Verdigris", 158, Rarity.UNCOMMON, mage.cards.v.Verdigris.class));
cards.add(new SetCardInfo("Vhati il-Dal", 349, Rarity.RARE, mage.cards.v.VhatiIlDal.class));
cards.add(new SetCardInfo("Volrath's Curse", 101, Rarity.COMMON, mage.cards.v.VolrathsCurse.class));
cards.add(new SetCardInfo("Wall of Diffusion", 211, Rarity.COMMON, mage.cards.w.WallOfDiffusion.class));
cards.add(new SetCardInfo("Warmth", 263, Rarity.UNCOMMON, mage.cards.w.Warmth.class));
cards.add(new SetCardInfo("Wasteland", 340, Rarity.UNCOMMON, mage.cards.w.Wasteland.class));
cards.add(new SetCardInfo("Watchdog", 304, Rarity.UNCOMMON, mage.cards.w.Watchdog.class));
cards.add(new SetCardInfo("Whispers of the Muse", 103, Rarity.UNCOMMON, mage.cards.w.WhispersOfTheMuse.class));
cards.add(new SetCardInfo("Wild Wurm", 212, Rarity.UNCOMMON, mage.cards.w.WildWurm.class));
cards.add(new SetCardInfo("Wind Dancer", 104, Rarity.UNCOMMON, mage.cards.w.WindDancer.class));
cards.add(new SetCardInfo("Wind Drake", 105, Rarity.COMMON, mage.cards.w.WindDrake.class));
cards.add(new SetCardInfo("Winds of Rath", 264, Rarity.RARE, mage.cards.w.WindsOfRath.class));
cards.add(new SetCardInfo("Winged Sliver", 106, Rarity.COMMON, mage.cards.w.WingedSliver.class));
cards.add(new SetCardInfo("Winter's Grasp", 159, Rarity.UNCOMMON, mage.cards.w.WintersGrasp.class));
cards.add(new SetCardInfo("Wood Sage", 350, Rarity.RARE, mage.cards.w.WoodSage.class));
cards.add(new SetCardInfo("Worthy Cause", 265, Rarity.UNCOMMON, mage.cards.w.WorthyCause.class));
}
}

View file

@ -47,16 +47,37 @@ import mage.players.Player;
public class RevealCardsFromLibraryUntilEffect extends OneShotEffect {
private FilterCard filter;
private Zone zoneToPutRest;
private Zone zoneToPutCard;
private boolean shuffleRestInto;
private boolean anyOrder;
public RevealCardsFromLibraryUntilEffect(FilterCard filter) {
super(Outcome.ReturnToHand);
public RevealCardsFromLibraryUntilEffect(FilterCard filter, Zone zoneToPutCard, Zone zoneToPutRest) {
this(filter, zoneToPutCard, zoneToPutRest, false, false);
}
public RevealCardsFromLibraryUntilEffect(FilterCard filter, Zone zoneToPutCard, Zone zoneToPutRest, boolean shuffleRestInto) {
this(filter, zoneToPutCard, zoneToPutRest, shuffleRestInto, false);
}
public RevealCardsFromLibraryUntilEffect(FilterCard filter, Zone zoneToPutCard, Zone zoneToPutRest, boolean shuffleRestInto, boolean anyOrder) {
super(Outcome.Benefit);
this.filter = filter;
this.staticText = "reveal cards from the top of your library until you reveal a " + filter.getMessage() + ". Put that card into your hand and the rest on the bottom of your library in a random order";
this.zoneToPutCard = zoneToPutCard;
this.zoneToPutRest = zoneToPutRest;
this.shuffleRestInto = shuffleRestInto;
this.anyOrder = anyOrder;
setText();
}
public RevealCardsFromLibraryUntilEffect(final RevealCardsFromLibraryUntilEffect effect) {
super(effect);
this.filter = effect.filter;
this.zoneToPutCard = effect.zoneToPutCard;
this.zoneToPutRest = effect.zoneToPutRest;
this.shuffleRestInto = effect.shuffleRestInto;
this.anyOrder = effect.anyOrder;
setText();
}
@Override
@ -82,25 +103,73 @@ public class RevealCardsFromLibraryUntilEffect extends OneShotEffect {
if (!cards.isEmpty()) {
controller.revealCards(sourceObject.getIdName(), cards, game);
if (filter.match(card, game)) {
// put creature card in hand
controller.moveCards(card, Zone.HAND, source, game);
// put card in correct zone
controller.moveCards(card, zoneToPutCard, source, game);
// remove it from revealed card list
cards.remove(card);
}
// Put the rest on the bottom of your library in a random order
Cards randomOrder = new CardsImpl();
while (cards.size() > 0) {
card = cards.getRandom(game);
if (card != null) {
cards.remove(card);
randomOrder.add(card);
controller.moveCardToLibraryWithInfo(card, source.getSourceId(), game, Zone.HAND, false, false);
// Put the rest in correct zone
switch (zoneToPutRest) {
case LIBRARY: {
if (cards.size() > 0) {
if (shuffleRestInto) {
library.addAll(cards.getCards(game), game);
} else {
controller.putCardsOnBottomOfLibrary(cards, game, source, anyOrder);
}
}
break;
}
default:
if (cards.size() > 0) {
controller.moveCards(cards, zoneToPutRest, source, game);
}
}
controller.putCardsOnBottomOfLibrary(randomOrder, game, source, false);
}
return true;
}
return false;
}
private void setText() {
StringBuilder sb = new StringBuilder("reveal cards from the top of your library until you reveal a " + filter.getMessage() + ". Put that card ");
switch (zoneToPutCard) {
case HAND: {
sb.append("into your hand ");
break;
}
case BATTLEFIELD: {
sb.append("onto the battlefield");
break;
}
}
switch (zoneToPutRest) {
case GRAVEYARD: {
sb.append(" and put all other cards revealed this way into your graveyard.");
break;
}
case LIBRARY: {
if (shuffleRestInto) {
sb.append(", then shuffles the rest into his or her library.");
} else {
sb.append(" and the rest on the bottom of your library in ");
if (anyOrder) {
sb.append("any");
} else {
sb.append("random");
}
sb.append(" order.");
}
break;
}
case EXILED: {
sb.append(" and exile all other cards revealed this way.");
break;
}
}
staticText = sb.toString();
}
}