diff --git a/Mage.Sets/src/mage/cards/s/SlaughterSpecialist.java b/Mage.Sets/src/mage/cards/s/SlaughterSpecialist.java new file mode 100644 index 00000000000..2546bfbe793 --- /dev/null +++ b/Mage.Sets/src/mage/cards/s/SlaughterSpecialist.java @@ -0,0 +1,79 @@ +package mage.cards.s; + +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.common.DiesCreatureTriggeredAbility; +import mage.abilities.common.EntersBattlefieldTriggeredAbility; +import mage.abilities.effects.OneShotEffect; +import mage.abilities.effects.common.counter.AddCountersSourceEffect; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.Outcome; +import mage.constants.SubType; +import mage.counters.CounterType; +import mage.filter.StaticFilters; +import mage.game.Game; +import mage.game.permanent.token.HumanToken; +import mage.game.permanent.token.Token; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class SlaughterSpecialist extends CardImpl { + + public SlaughterSpecialist(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}"); + + this.subtype.add(SubType.VAMPIRE); + this.subtype.add(SubType.WARRIOR); + this.power = new MageInt(3); + this.toughness = new MageInt(3); + + // When Slaughter Specialist enters the battlefield, each opponent creates a 1/1 white Human creature token. + this.addAbility(new EntersBattlefieldTriggeredAbility(new SlaughterSpecialistEffect())); + + // Whenever a creature an opponent controls dies, put a +1/+1 counter on Slaughter Specialist. + this.addAbility(new DiesCreatureTriggeredAbility( + new AddCountersSourceEffect(CounterType.P1P1.createInstance()), + false, StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE + )); + } + + private SlaughterSpecialist(final SlaughterSpecialist card) { + super(card); + } + + @Override + public SlaughterSpecialist copy() { + return new SlaughterSpecialist(this); + } +} + +class SlaughterSpecialistEffect extends OneShotEffect { + + SlaughterSpecialistEffect() { + super(Outcome.Benefit); + staticText = "each opponent creates a 1/1 white Human creature token"; + } + + private SlaughterSpecialistEffect(final SlaughterSpecialistEffect effect) { + super(effect); + } + + @Override + public SlaughterSpecialistEffect copy() { + return new SlaughterSpecialistEffect(this); + } + + @Override + public boolean apply(Game game, Ability source) { + Token token = new HumanToken(); + for (UUID opponentId : game.getOpponents(source.getControllerId())) { + token.putOntoBattlefield(1, game, source, opponentId); + } + return true; + } +} diff --git a/Mage.Sets/src/mage/sets/InnistradMidnightHunt.java b/Mage.Sets/src/mage/sets/InnistradMidnightHunt.java index a3bb35d84f5..a4d0f9a0ee6 100644 --- a/Mage.Sets/src/mage/sets/InnistradMidnightHunt.java +++ b/Mage.Sets/src/mage/sets/InnistradMidnightHunt.java @@ -125,6 +125,7 @@ public final class InnistradMidnightHunt extends ExpansionSet { cards.add(new SetCardInfo("Secrets of the Key", 73, Rarity.COMMON, mage.cards.s.SecretsOfTheKey.class)); cards.add(new SetCardInfo("Shipwreck Marsh", 267, Rarity.RARE, mage.cards.s.ShipwreckMarsh.class)); cards.add(new SetCardInfo("Sigarda, Champion of Light", 240, Rarity.MYTHIC, mage.cards.s.SigardaChampionOfLight.class)); + cards.add(new SetCardInfo("Slaughter Specialist", 122, Rarity.RARE, mage.cards.s.SlaughterSpecialist.class)); cards.add(new SetCardInfo("Snarling Wolf", 199, Rarity.COMMON, mage.cards.s.SnarlingWolf.class)); cards.add(new SetCardInfo("Spectral Adversary", 77, Rarity.MYTHIC, mage.cards.s.SpectralAdversary.class)); cards.add(new SetCardInfo("Spellrune Howler", 160, Rarity.UNCOMMON, mage.cards.s.SpellruneHowler.class));