diff --git a/Mage.Sets/src/mage/cards/s/SisterOfSilence.java b/Mage.Sets/src/mage/cards/s/SisterOfSilence.java new file mode 100644 index 0000000000..705a044180 --- /dev/null +++ b/Mage.Sets/src/mage/cards/s/SisterOfSilence.java @@ -0,0 +1,67 @@ +package mage.cards.s; + +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.common.EntersBattlefieldTriggeredAbility; +import mage.abilities.effects.common.CounterTargetEffect; +import mage.abilities.keyword.FlashAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.SubType; +import mage.filter.FilterStackObject; +import mage.filter.predicate.Predicate; +import mage.game.Game; +import mage.game.stack.Spell; +import mage.game.stack.StackObject; +import mage.target.TargetStackObject; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class SisterOfSilence extends CardImpl { + + private static final FilterStackObject filter + = new FilterStackObject("instant spell, sorcery spell, activated ability, or triggered ability"); + + static { + filter.add(SisterOfSilencePredicate.instance); + } + + public SisterOfSilence(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{U}"); + + this.subtype.add(SubType.HUMAN); + this.subtype.add(SubType.KNIGHT); + this.power = new MageInt(3); + this.toughness = new MageInt(3); + + // Flash + this.addAbility(FlashAbility.getInstance()); + + // Psychic Abomination -- When Sister of Silence enters the battlefield, counter target instant spell, sorcery spell, activated ability, or triggered ability. + Ability ability = new EntersBattlefieldTriggeredAbility(new CounterTargetEffect()); + ability.addTarget(new TargetStackObject(filter)); + this.addAbility(ability.withFlavorWord("Psychic Abomination")); + } + + private SisterOfSilence(final SisterOfSilence card) { + super(card); + } + + @Override + public SisterOfSilence copy() { + return new SisterOfSilence(this); + } +} + +enum SisterOfSilencePredicate implements Predicate { + instance; + + @Override + public boolean apply(StackObject input, Game game) { + return !(input instanceof Spell) || input.isInstantOrSorcery(game); + } +} \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/Warhammer40000.java b/Mage.Sets/src/mage/sets/Warhammer40000.java index a46ff0d8e8..ec1f72c576 100644 --- a/Mage.Sets/src/mage/sets/Warhammer40000.java +++ b/Mage.Sets/src/mage/sets/Warhammer40000.java @@ -188,6 +188,7 @@ public final class Warhammer40000 extends ExpansionSet { cards.add(new SetCardInfo("Sculpting Steel", 247, Rarity.RARE, mage.cards.s.SculptingSteel.class)); cards.add(new SetCardInfo("Sicarian Infiltrator", 25, Rarity.UNCOMMON, mage.cards.s.SicarianInfiltrator.class)); cards.add(new SetCardInfo("Sister Repentia", 142, Rarity.RARE, mage.cards.s.SisterRepentia.class)); + cards.add(new SetCardInfo("Sister of Silence", 26, Rarity.RARE, mage.cards.s.SisterOfSilence.class)); cards.add(new SetCardInfo("Skorpekh Destroyer", 57, Rarity.UNCOMMON, mage.cards.s.SkorpekhDestroyer.class)); cards.add(new SetCardInfo("Skorpekh Lord", 58, Rarity.RARE, mage.cards.s.SkorpekhLord.class)); cards.add(new SetCardInfo("Skullclamp", 248, Rarity.UNCOMMON, mage.cards.s.Skullclamp.class));