[MH2] Implemented Sword of Hearth and Home

This commit is contained in:
Evan Kranzler 2021-06-04 09:17:43 -04:00
parent b8c7fd2e12
commit 836bc95007
9 changed files with 190 additions and 175 deletions

View file

@ -1,14 +1,10 @@
package mage.cards.s;
import java.util.UUID;
import mage.ObjectColor;
import mage.abilities.Ability;
import mage.abilities.TriggeredAbilityImpl;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.effects.Effect;
import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.effects.common.PutLibraryIntoGraveTargetEffect;
import mage.abilities.effects.common.continuous.BoostEquippedEffect;
@ -17,34 +13,30 @@ import mage.abilities.keyword.EquipAbility;
import mage.abilities.keyword.ProtectionAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.AttachmentType;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Outcome;
import mage.constants.Zone;
import mage.constants.*;
import mage.game.Game;
import mage.game.events.DamagedPlayerEvent;
import mage.game.events.GameEvent;
import mage.game.events.GameEvent.EventType;
import mage.game.permanent.Permanent;
import mage.game.permanent.token.WolfToken;
import mage.target.targetpointer.FixedTarget;
import java.util.UUID;
/**
*
* @author Loki
*/
public final class SwordOfBodyAndMind extends CardImpl {
public SwordOfBodyAndMind(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
this.subtype.add(SubType.EQUIPMENT);
// Equipped creature gets +2/+2 and has protection from green and from blue.
Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEquippedEffect(2, 2));
Effect effect = new GainAbilityAttachedEffect(ProtectionAbility.from(ObjectColor.GREEN, ObjectColor.BLUE), AttachmentType.EQUIPMENT);
effect.setText("and has protection from green and from blue");
ability.addEffect(effect);
Ability ability = new SimpleStaticAbility(new BoostEquippedEffect(2, 2));
ability.addEffect(new GainAbilityAttachedEffect(
ProtectionAbility.from(ObjectColor.GREEN, ObjectColor.BLUE), AttachmentType.EQUIPMENT
).setText("and has protection from green and from blue"));
this.addAbility(ability);
// Whenever equipped creature deals combat damage to a player, you create a 2/2 green Wolf creature token and that player puts the top ten cards of their library into their graveyard.
@ -87,12 +79,10 @@ class SwordOfBodyAndMindAbility extends TriggeredAbilityImpl {
@Override
public boolean checkTrigger(GameEvent event, Game game) {
DamagedPlayerEvent damageEvent = (DamagedPlayerEvent)event;
DamagedPlayerEvent damageEvent = (DamagedPlayerEvent) event;
Permanent p = game.getPermanent(event.getSourceId());
if (damageEvent.isCombatDamage() && p != null && p.getAttachments().contains(this.getSourceId())) {
for (Effect effect : this.getEffects()) {
effect.setTargetPointer(new FixedTarget(event.getPlayerId()));
}
this.getEffects().setTargetPointer(new FixedTarget(event.getPlayerId()));
return true;
}
return false;
@ -102,4 +92,4 @@ class SwordOfBodyAndMindAbility extends TriggeredAbilityImpl {
public String getRule() {
return "Whenever equipped creature deals combat damage to a player, you create a 2/2 green Wolf creature token and that player mills ten cards.";
}
}
}

View file

@ -1,10 +1,10 @@
package mage.cards.s;
import mage.ObjectColor;
import mage.abilities.Ability;
import mage.abilities.TriggeredAbilityImpl;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.effects.Effect;
import mage.abilities.effects.common.UntapAllLandsControllerEffect;
import mage.abilities.effects.common.continuous.BoostEquippedEffect;
import mage.abilities.effects.common.continuous.GainAbilityAttachedEffect;
@ -17,7 +17,6 @@ import mage.constants.*;
import mage.game.Game;
import mage.game.events.DamagedPlayerEvent;
import mage.game.events.GameEvent;
import mage.game.events.GameEvent.EventType;
import mage.game.permanent.Permanent;
import mage.target.targetpointer.FixedTarget;
@ -32,15 +31,18 @@ public final class SwordOfFeastAndFamine extends CardImpl {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
this.subtype.add(SubType.EQUIPMENT);
// Equip {2}
this.addAbility(new EquipAbility(Outcome.AddAbility, new GenericManaCost(2)));
// Equipped creature gets +2/+2 and has protection from black and from green.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEquippedEffect(2, 2)));
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(ProtectionAbility.from(ObjectColor.GREEN, ObjectColor.BLACK), AttachmentType.EQUIPMENT)));
Ability ability = new SimpleStaticAbility(new BoostEquippedEffect(2, 2));
ability.addEffect(new GainAbilityAttachedEffect(
ProtectionAbility.from(ObjectColor.BLACK, ObjectColor.GREEN), AttachmentType.EQUIPMENT
).setText("and has protection from black and from green"));
this.addAbility(ability);
// Whenever equipped creature deals combat damage to a player, that player discards a card and you untap all lands you control.
this.addAbility(new SwordOfFeastAndFamineAbility());
// Equip {2}
this.addAbility(new EquipAbility(Outcome.AddAbility, new GenericManaCost(2)));
}
private SwordOfFeastAndFamine(final SwordOfFeastAndFamine card) {
@ -79,9 +81,7 @@ class SwordOfFeastAndFamineAbility extends TriggeredAbilityImpl {
DamagedPlayerEvent damageEvent = (DamagedPlayerEvent) event;
Permanent p = game.getPermanent(event.getSourceId());
if (damageEvent.isCombatDamage() && p != null && p.getAttachments().contains(this.getSourceId())) {
for (Effect effect : this.getEffects()) {
effect.setTargetPointer(new FixedTarget(event.getPlayerId()));
}
this.getEffects().setTargetPointer(new FixedTarget(event.getPlayerId()));
return true;
}
return false;
@ -89,6 +89,7 @@ class SwordOfFeastAndFamineAbility extends TriggeredAbilityImpl {
@Override
public String getRule() {
return "Whenever equipped creature deals combat damage to a player, that player discards a card and you untap all lands you control.";
return "Whenever equipped creature deals combat damage to a player, " +
"that player discards a card and you untap all lands you control.";
}
}
}

View file

@ -1,8 +1,8 @@
package mage.cards.s;
import java.util.UUID;
import mage.ObjectColor;
import mage.abilities.TriggeredAbilityImpl;
import mage.abilities.Ability;
import mage.abilities.common.DealsDamageToAPlayerAttachedTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.effects.common.DamageTargetEffect;
@ -15,16 +15,12 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.AttachmentType;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Outcome;
import mage.constants.Zone;
import mage.game.Game;
import mage.game.events.DamagedPlayerEvent;
import mage.game.events.GameEvent;
import mage.game.events.GameEvent.EventType;
import mage.game.permanent.Permanent;
import mage.constants.SubType;
import mage.target.common.TargetAnyTarget;
import java.util.UUID;
/**
* @author Loki
*/
@ -35,12 +31,21 @@ public final class SwordOfFireAndIce extends CardImpl {
this.subtype.add(SubType.EQUIPMENT);
// Equipped creature gets +2/+2 and has protection from red and from blue.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEquippedEffect(2, 2)));
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(
ProtectionAbility.from(ObjectColor.RED, ObjectColor.BLUE), AttachmentType.EQUIPMENT)));
Ability ability = new SimpleStaticAbility(new BoostEquippedEffect(2, 2));
ability.addEffect(new GainAbilityAttachedEffect(
ProtectionAbility.from(ObjectColor.RED, ObjectColor.BLUE), AttachmentType.EQUIPMENT
).setText("and has protection from red and from blue"));
this.addAbility(ability);
// Whenever equipped creature deals combat damage to a player, Sword of Fire
// and Ice deals 2 damage to any target and you draw a card.
this.addAbility(new SwordOfFireAndIceAbility());
ability = new DealsDamageToAPlayerAttachedTriggeredAbility(
new DamageTargetEffect(2), "equipped", false
);
ability.addEffect(new DrawCardSourceControllerEffect(1).concatBy("and"));
ability.addTarget(new TargetAnyTarget());
this.addAbility(ability);
// Equip {2}
this.addAbility(new EquipAbility(Outcome.Benefit, new GenericManaCost(2)));
}
@ -55,41 +60,3 @@ public final class SwordOfFireAndIce extends CardImpl {
}
}
class SwordOfFireAndIceAbility extends TriggeredAbilityImpl {
public SwordOfFireAndIceAbility() {
super(Zone.BATTLEFIELD, new DamageTargetEffect(2));
this.addEffect(new DrawCardSourceControllerEffect(1));
this.addTarget(new TargetAnyTarget());
}
public SwordOfFireAndIceAbility(final SwordOfFireAndIceAbility ability) {
super(ability);
}
@Override
public SwordOfFireAndIceAbility copy() {
return new SwordOfFireAndIceAbility(this);
}
@Override
public boolean checkEventType(GameEvent event, Game game) {
return event.getType() == GameEvent.EventType.DAMAGED_PLAYER;
}
@Override
public boolean checkTrigger(GameEvent event, Game game) {
DamagedPlayerEvent damageEvent = (DamagedPlayerEvent) event;
Permanent p = game.getPermanent(event.getSourceId());
return damageEvent.isCombatDamage()
&& p != null
&& p.getAttachments().contains(this.getSourceId());
}
@Override
public String getRule() {
return "Whenever equipped creature deals combat damage to a player, "
+ "{this} deals 2 damage to any target and you draw a card.";
}
}

View file

@ -0,0 +1,109 @@
package mage.cards.s;
import mage.ObjectColor;
import mage.abilities.Ability;
import mage.abilities.common.DealsDamageToAPlayerAttachedTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.continuous.BoostEquippedEffect;
import mage.abilities.effects.common.continuous.GainAbilityAttachedEffect;
import mage.abilities.keyword.EquipAbility;
import mage.abilities.keyword.ProtectionAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.cards.Cards;
import mage.cards.CardsImpl;
import mage.constants.*;
import mage.filter.FilterPermanent;
import mage.filter.StaticFilters;
import mage.filter.common.FilterCreaturePermanent;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.players.Player;
import mage.target.TargetPermanent;
import mage.target.common.TargetCardInLibrary;
import java.util.UUID;
/**
* @author TheElk801
*/
public final class SwordOfHearthAndHome extends CardImpl {
private static final FilterPermanent filter = new FilterCreaturePermanent("creature you own");
static {
filter.add(TargetController.YOU.getOwnerPredicate());
}
public SwordOfHearthAndHome(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
this.subtype.add(SubType.EQUIPMENT);
// Equipped creature gets +2/+2 and has protection from green and from white.
Ability ability = new SimpleStaticAbility(new BoostEquippedEffect(2, 2));
ability.addEffect(new GainAbilityAttachedEffect(
ProtectionAbility.from(ObjectColor.GREEN, ObjectColor.WHITE), AttachmentType.EQUIPMENT
).setText("and has protection from green and from white"));
this.addAbility(ability);
// Whenever equipped creature deals combat damage to a player, exile up to one target creature you own, then search your library for a basic land card. Put both cards onto the battlefield under your control, then shuffle.
ability = new DealsDamageToAPlayerAttachedTriggeredAbility(
new SwordOfHearthAndHomeEffect(), "equipped", false
);
ability.addTarget(new TargetPermanent(0, 1, filter));
this.addAbility(ability);
// Equip {2}
this.addAbility(new EquipAbility(Outcome.Benefit, new GenericManaCost(2)));
}
private SwordOfHearthAndHome(final SwordOfHearthAndHome card) {
super(card);
}
@Override
public SwordOfHearthAndHome copy() {
return new SwordOfHearthAndHome(this);
}
}
class SwordOfHearthAndHomeEffect extends OneShotEffect {
SwordOfHearthAndHomeEffect() {
super(Outcome.Benefit);
staticText = "exile up to one target creature you own, then search your library for a basic land card. " +
"Put both cards onto the battlefield under your control, then shuffle";
}
private SwordOfHearthAndHomeEffect(final SwordOfHearthAndHomeEffect effect) {
super(effect);
}
@Override
public SwordOfHearthAndHomeEffect copy() {
return new SwordOfHearthAndHomeEffect(this);
}
@Override
public boolean apply(Game game, Ability source) {
Player player = game.getPlayer(source.getControllerId());
if (player == null) {
return false;
}
Cards cards = new CardsImpl();
Permanent permanent = game.getPermanent(source.getFirstTarget());
if (permanent != null) {
player.moveCards(permanent, Zone.EXILED, source, game);
cards.add(permanent);
}
TargetCardInLibrary target = new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND);
player.searchLibrary(target, source, game);
cards.add(player.getLibrary().getCard(target.getFirstTarget(), game));
player.moveCards(cards, Zone.BATTLEFIELD, source, game);
player.shuffleLibrary(source, game);
return true;
}
}

View file

@ -1,10 +1,8 @@
package mage.cards.s;
import java.util.UUID;
import mage.ObjectColor;
import mage.abilities.Ability;
import mage.abilities.TriggeredAbilityImpl;
import mage.abilities.common.DealsDamageToAPlayerAttachedTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.effects.OneShotEffect;
@ -16,20 +14,14 @@ import mage.abilities.keyword.ProtectionAbility;
import mage.cards.Card;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.AttachmentType;
import mage.constants.CardType;
import mage.constants.Outcome;
import mage.constants.SubType;
import mage.constants.Zone;
import mage.constants.*;
import mage.filter.StaticFilters;
import mage.game.Game;
import mage.game.events.DamagedPlayerEvent;
import mage.game.events.GameEvent;
import mage.game.events.GameEvent.EventType;
import mage.game.permanent.Permanent;
import mage.players.Player;
import mage.target.common.TargetCardInYourGraveyard;
import java.util.UUID;
/**
* @author Loki
*/
@ -40,12 +32,22 @@ public final class SwordOfLightAndShadow extends CardImpl {
this.subtype.add(SubType.EQUIPMENT);
// Equipped creature gets +2/+2 and has protection from white and from black.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEquippedEffect(2, 2)));
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(ProtectionAbility.from(ObjectColor.WHITE, ObjectColor.BLACK), AttachmentType.EQUIPMENT)));
// Whenever equipped creature deals combat damage to a player, you gain 3 life and you may return up to one target creature card from your graveyard to your hand.
Ability ability = new SwordOfLightAndShadowAbility();
ability.addTarget(new TargetCardInYourGraveyard(0, 1, StaticFilters.FILTER_CARD_CREATURE_YOUR_GRAVEYARD));
Ability ability = new SimpleStaticAbility(new BoostEquippedEffect(2, 2));
ability.addEffect(new GainAbilityAttachedEffect(
ProtectionAbility.from(ObjectColor.WHITE, ObjectColor.BLACK), AttachmentType.EQUIPMENT
).setText("and has protection from white and from black"));
this.addAbility(ability);
// Whenever equipped creature deals combat damage to a player, you gain 3 life and you may return up to one target creature card from your graveyard to your hand.
ability = new DealsDamageToAPlayerAttachedTriggeredAbility(
new GainLifeEffect(3), "equipped", false
);
ability.addEffect(new SwordOfLightAndShadowEffect());
ability.addTarget(new TargetCardInYourGraveyard(
0, 1, StaticFilters.FILTER_CARD_CREATURE_YOUR_GRAVEYARD
));
this.addAbility(ability);
// Equip {2}
this.addAbility(new EquipAbility(Outcome.AddAbility, new GenericManaCost(2)));
}
@ -60,81 +62,28 @@ public final class SwordOfLightAndShadow extends CardImpl {
}
}
class SwordOfLightAndShadowAbility extends TriggeredAbilityImpl {
class SwordOfLightAndShadowEffect extends OneShotEffect {
public SwordOfLightAndShadowAbility() {
super(Zone.BATTLEFIELD, new GainLifeEffect(3), false);
this.addEffect(new SwordOfLightAndShadowReturnToHandTargetEffect());
}
public SwordOfLightAndShadowAbility(final SwordOfLightAndShadowAbility ability) {
super(ability);
}
@Override
public SwordOfLightAndShadowAbility copy() {
return new SwordOfLightAndShadowAbility(this);
}
@Override
public boolean checkEventType(GameEvent event, Game game) {
return event.getType() == GameEvent.EventType.DAMAGED_PLAYER;
}
@Override
public boolean checkTrigger(GameEvent event, Game game) {
DamagedPlayerEvent damageEvent = (DamagedPlayerEvent) event;
Permanent p = game.getPermanent(event.getSourceId());
return damageEvent.isCombatDamage() && p != null && p.getAttachments().contains(this.getSourceId());
}
@Override
public String getRule() {
return "Whenever equipped creature deals combat damage to a player, you gain 3 life and you may return up to one target creature card from your graveyard to your hand.";
}
}
class SwordOfLightAndShadowReturnToHandTargetEffect extends OneShotEffect {
public SwordOfLightAndShadowReturnToHandTargetEffect() {
public SwordOfLightAndShadowEffect() {
super(Outcome.ReturnToHand);
staticText = "and you may return up to one target creature card from your graveyard to your hand";
}
public SwordOfLightAndShadowReturnToHandTargetEffect(final SwordOfLightAndShadowReturnToHandTargetEffect effect) {
public SwordOfLightAndShadowEffect(final SwordOfLightAndShadowEffect effect) {
super(effect);
}
@Override
public SwordOfLightAndShadowReturnToHandTargetEffect copy() {
return new SwordOfLightAndShadowReturnToHandTargetEffect(this);
public SwordOfLightAndShadowEffect copy() {
return new SwordOfLightAndShadowEffect(this);
}
@Override
public boolean apply(Game game, Ability source) {
boolean result = true; // in case no target is selected
Player controller = game.getPlayer(source.getControllerId());
if (controller == null) {
return false;
}
if (!source.getTargets().isEmpty() && targetPointer.getFirst(game, source) != null) {
if (controller.chooseUse(outcome, "Return creature card from graveyard to hand?", source, game)) {
for (UUID targetId : targetPointer.getTargets(game, source)) {
switch (game.getState().getZone(targetId)) {
case GRAVEYARD:
Card card = game.getCard(targetId);
if (card != null) {
controller.moveCards(card, Zone.HAND, source, game);
} else {
result = false;
}
break;
}
}
}
}
return result;
Card card = game.getCard(targetPointer.getFirst(game, source));
return controller != null && card != null && controller.chooseUse(
outcome, "Return " + card.getName() + " from your graveyard to your hand?", source, game
) && controller.moveCards(card, Zone.HAND, source, game);
}
}

View file

@ -33,9 +33,9 @@ public final class SwordOfSinewAndSteel extends CardImpl {
// Equipped creature gets +2/+2 and has protection from black and from red.
Ability ability = new SimpleStaticAbility(new BoostEquippedEffect(2, 2));
ability.addEffect(new GainAbilityAttachedEffect(ProtectionAbility.from(
ObjectColor.BLACK, ObjectColor.RED
), AttachmentType.EQUIPMENT).setText("and has protection from black and from red"));
ability.addEffect(new GainAbilityAttachedEffect(
ProtectionAbility.from(ObjectColor.BLACK, ObjectColor.RED), AttachmentType.EQUIPMENT
).setText("and has protection from black and from red"));
this.addAbility(ability);
// Whenever equipped creature deals combat damage to a player, destroy up to one target planeswalker and up to one target artifact.

View file

@ -38,9 +38,9 @@ public final class SwordOfTruthAndJustice extends CardImpl {
// Equipped creature gets +2/+2 and has protection from white and from blue.
Ability ability = new SimpleStaticAbility(new BoostEquippedEffect(2, 2));
ability.addEffect(new GainAbilityAttachedEffect(ProtectionAbility.from(
ObjectColor.WHITE, ObjectColor.BLUE
), AttachmentType.EQUIPMENT).setText("and has protection from white and from blue"));
ability.addEffect(new GainAbilityAttachedEffect(
ProtectionAbility.from(ObjectColor.WHITE, ObjectColor.BLUE), AttachmentType.EQUIPMENT
).setText("and has protection from white and from blue"));
this.addAbility(ability);
// Whenever equipped creature deals combat damage to a player, put a +1/+1 counter on a creature you control, then proliferate.

View file

@ -6,7 +6,6 @@ import mage.abilities.TriggeredAbilityImpl;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.dynamicvalue.common.CardsInControllerHandCount;
import mage.abilities.effects.Effect;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.GainLifeEffect;
import mage.abilities.effects.common.continuous.BoostEquippedEffect;
@ -19,7 +18,6 @@ import mage.constants.*;
import mage.game.Game;
import mage.game.events.DamagedPlayerEvent;
import mage.game.events.GameEvent;
import mage.game.events.GameEvent.EventType;
import mage.game.permanent.Permanent;
import mage.players.Player;
import mage.target.targetpointer.FixedTarget;
@ -36,10 +34,10 @@ public final class SwordOfWarAndPeace extends CardImpl {
this.subtype.add(SubType.EQUIPMENT);
// Equipped creature gets +2/+2 and has protection from red and from white.
Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEquippedEffect(2, 2));
Effect effect = new GainAbilityAttachedEffect(ProtectionAbility.from(ObjectColor.RED, ObjectColor.WHITE), AttachmentType.EQUIPMENT);
effect.setText("and has protection from red and from white");
ability.addEffect(effect);
Ability ability = new SimpleStaticAbility(new BoostEquippedEffect(2, 2));
ability.addEffect(new GainAbilityAttachedEffect(
ProtectionAbility.from(ObjectColor.RED, ObjectColor.WHITE), AttachmentType.EQUIPMENT
).setText("and has protection from red and from white"));
this.addAbility(ability);
// Whenever equipped creature deals combat damage to a player, Sword of War and Peace deals damage to that player equal to the number of cards in their hand and you gain 1 life for each card in your hand.

View file

@ -261,6 +261,7 @@ public final class ModernHorizons2 extends ExpansionSet {
cards.add(new SetCardInfo("Svyelun of Sea and Sky", 69, Rarity.MYTHIC, mage.cards.s.SvyelunOfSeaAndSky.class));
cards.add(new SetCardInfo("Swamp", 485, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Sweep the Skies", 70, Rarity.UNCOMMON, mage.cards.s.SweepTheSkies.class));
cards.add(new SetCardInfo("Sword of Hearth and Home", 238, Rarity.MYTHIC, mage.cards.s.SwordOfHearthAndHome.class));
cards.add(new SetCardInfo("Sylvan Anthem", 176, Rarity.RARE, mage.cards.s.SylvanAnthem.class));
cards.add(new SetCardInfo("Sythis, Harvest's Hand", 214, Rarity.RARE, mage.cards.s.SythisHarvestsHand.class));
cards.add(new SetCardInfo("Tanglepool Bridge", 257, Rarity.COMMON, mage.cards.t.TanglepoolBridge.class));