diff --git a/Mage.Sets/src/mage/cards/s/ShireShirriff.java b/Mage.Sets/src/mage/cards/s/ShireShirriff.java new file mode 100644 index 00000000000..82b8b7953da --- /dev/null +++ b/Mage.Sets/src/mage/cards/s/ShireShirriff.java @@ -0,0 +1,70 @@ +package mage.cards.s; + +import mage.MageInt; +import mage.abilities.common.EntersBattlefieldTriggeredAbility; +import mage.abilities.common.delayed.OnLeaveReturnExiledToBattlefieldAbility; +import mage.abilities.common.delayed.ReflexiveTriggeredAbility; +import mage.abilities.costs.common.SacrificeTargetCost; +import mage.abilities.effects.common.CreateDelayedTriggeredAbilityEffect; +import mage.abilities.effects.common.DoWhenCostPaid; +import mage.abilities.effects.common.ExileUntilSourceLeavesEffect; +import mage.abilities.keyword.VigilanceAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.SubType; +import mage.filter.StaticFilters; +import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.permanent.TokenPredicate; +import mage.target.TargetPermanent; + +import java.util.UUID; + +/** + * + * @author Susucr + */ +public final class ShireShirriff extends CardImpl { + + public static final FilterControlledPermanent filterToken = new FilterControlledPermanent("a token"); + + static { + filterToken.add(TokenPredicate.TRUE); + } + + public ShireShirriff(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}"); + + this.subtype.add(SubType.HALFLING); + this.subtype.add(SubType.SOLDIER); + this.power = new MageInt(2); + this.toughness = new MageInt(2); + + // Vigilance + this.addAbility(VigilanceAbility.getInstance()); + + // When Shire Shirriff enters the battlefield, you may sacrifice a token. + // When you do, exile target creature an opponent controls until Shire Shirriff leaves the battlefield. + ReflexiveTriggeredAbility reflexive = new ReflexiveTriggeredAbility( + new ExileUntilSourceLeavesEffect(), false, + "exile target creature an opponent controls until {this} leaves the battlefield." + ); + reflexive.addTarget(new TargetPermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE)); + reflexive.addEffect(new CreateDelayedTriggeredAbilityEffect(new OnLeaveReturnExiledToBattlefieldAbility())); + + this.addAbility(new EntersBattlefieldTriggeredAbility(new DoWhenCostPaid( + reflexive, + new SacrificeTargetCost(filterToken), + "Sacrifice a token?" + ), true)); + } + + private ShireShirriff(final ShireShirriff card) { + super(card); + } + + @Override + public ShireShirriff copy() { + return new ShireShirriff(this); + } +} \ No newline at end of file diff --git a/Mage.Sets/src/mage/cards/s/ShrapnelSlinger.java b/Mage.Sets/src/mage/cards/s/ShrapnelSlinger.java index c5576ed413f..0bece2ea8b5 100644 --- a/Mage.Sets/src/mage/cards/s/ShrapnelSlinger.java +++ b/Mage.Sets/src/mage/cards/s/ShrapnelSlinger.java @@ -34,7 +34,7 @@ public final class ShrapnelSlinger extends CardImpl { this.addAbility(new EntersBattlefieldTriggeredAbility(new DoWhenCostPaid( ability, new SacrificeTargetCost(StaticFilters.FILTER_CONTROLLED_CREATURE_SHORT_TEXT), - "Sacrifce a creature?" + "Sacrifice a creature?" ))); } diff --git a/Mage.Sets/src/mage/sets/TheLordOfTheRingsTalesOfMiddleEarth.java b/Mage.Sets/src/mage/sets/TheLordOfTheRingsTalesOfMiddleEarth.java index 82cd6a6495b..01e20bea27a 100644 --- a/Mage.Sets/src/mage/sets/TheLordOfTheRingsTalesOfMiddleEarth.java +++ b/Mage.Sets/src/mage/sets/TheLordOfTheRingsTalesOfMiddleEarth.java @@ -230,6 +230,7 @@ public final class TheLordOfTheRingsTalesOfMiddleEarth extends ExpansionSet { cards.add(new SetCardInfo("Shagrat, Loot Bearer", 228, Rarity.RARE, mage.cards.s.ShagratLootBearer.class)); cards.add(new SetCardInfo("Shelob's Ambush", 108, Rarity.COMMON, mage.cards.s.ShelobsAmbush.class)); cards.add(new SetCardInfo("Shire Scarecrow", 249, Rarity.COMMON, mage.cards.s.ShireScarecrow.class)); + cards.add(new SetCardInfo("Shire Shirriff", 30, Rarity.UNCOMMON, mage.cards.s.ShireShirriff.class)); cards.add(new SetCardInfo("Shire Terrace", 261, Rarity.COMMON, mage.cards.s.ShireTerrace.class)); cards.add(new SetCardInfo("Shortcut to Mushrooms", 187, Rarity.UNCOMMON, mage.cards.s.ShortcutToMushrooms.class)); cards.add(new SetCardInfo("Shower of Arrows", 188, Rarity.COMMON, mage.cards.s.ShowerOfArrows.class));