From f6540d1394fac8abf6ac165cbf093972d47b0d7a Mon Sep 17 00:00:00 2001 From: Evan Kranzler <theelk801@gmail.com> Date: Fri, 5 Apr 2019 20:00:24 -0400 Subject: [PATCH] Implemented Devouring Hellion --- .../src/mage/cards/d/DevouringHellion.java | 97 +++++++++++++++++++ Mage.Sets/src/mage/sets/WarOfTheSpark.java | 1 + 2 files changed, 98 insertions(+) create mode 100644 Mage.Sets/src/mage/cards/d/DevouringHellion.java diff --git a/Mage.Sets/src/mage/cards/d/DevouringHellion.java b/Mage.Sets/src/mage/cards/d/DevouringHellion.java new file mode 100644 index 0000000000..293a1f6616 --- /dev/null +++ b/Mage.Sets/src/mage/cards/d/DevouringHellion.java @@ -0,0 +1,97 @@ +package mage.cards.d; + +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.common.AsEntersBattlefieldAbility; +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.FilterPermanent; +import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; +import mage.game.Game; +import mage.game.permanent.Permanent; +import mage.players.Player; +import mage.target.Target; +import mage.target.TargetPermanent; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class DevouringHellion extends CardImpl { + + public DevouringHellion(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}"); + + this.subtype.add(SubType.HELLION); + this.power = new MageInt(2); + this.toughness = new MageInt(2); + + // As Devouring Hellion enters the battlefield, you may sacrifice any number of creatures and/or planeswalkers. If you do, it enters with twice that many +1/+1 counters on it. + this.addAbility(new AsEntersBattlefieldAbility(new DevouringHellionEffect())); + } + + private DevouringHellion(final DevouringHellion card) { + super(card); + } + + @Override + public DevouringHellion copy() { + return new DevouringHellion(this); + } +} + +class DevouringHellionEffect extends OneShotEffect { + + private static final FilterPermanent filter = new FilterControlledPermanent("creatures and/or planeswalkers"); + + static { + filter.add(Predicates.or( + new CardTypePredicate(CardType.CREATURE), + new CardTypePredicate(CardType.PLANESWALKER) + )); + } + + DevouringHellionEffect() { + super(Outcome.Benefit); + staticText = "you may sacrifice any number of creatures and/or planeswalkers. " + + "If you do, it enters with twice that many +1/+1 counters on it."; + } + + private DevouringHellionEffect(final DevouringHellionEffect effect) { + super(effect); + } + + @Override + public DevouringHellionEffect copy() { + return new DevouringHellionEffect(this); + } + + @Override + public boolean apply(Game game, Ability source) { + Player player = game.getPlayer(source.getControllerId()); + if (player == null) { + return false; + } + Target target = new TargetPermanent(0, Integer.MAX_VALUE, filter, true); + if (!player.choose(outcome, target, source.getSourceId(), game)) { + return false; + } + int xValue = 0; + for (UUID targetId : target.getTargets()) { + Permanent permanent = game.getPermanent(targetId); + if (permanent != null && permanent.sacrifice(source.getSourceId(), game)) { + xValue++; + } + } + return new AddCountersSourceEffect(CounterType.P1P1.createInstance(2 * xValue)).apply(game, source); + } +} \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/WarOfTheSpark.java b/Mage.Sets/src/mage/sets/WarOfTheSpark.java index ed3510239e..4039c1e9ff 100644 --- a/Mage.Sets/src/mage/sets/WarOfTheSpark.java +++ b/Mage.Sets/src/mage/sets/WarOfTheSpark.java @@ -44,6 +44,7 @@ public final class WarOfTheSpark extends ExpansionSet { cards.add(new SetCardInfo("Davriel, Rogue Shadowmage", 83, Rarity.UNCOMMON, mage.cards.d.DavrielRogueShadowmage.class)); cards.add(new SetCardInfo("Deathsprout", 189, Rarity.UNCOMMON, mage.cards.d.Deathsprout.class)); cards.add(new SetCardInfo("Defiant Strike", 9, Rarity.COMMON, mage.cards.d.DefiantStrike.class)); + cards.add(new SetCardInfo("Devouring Hellion", 124, Rarity.UNCOMMON, mage.cards.d.DevouringHellion.class)); cards.add(new SetCardInfo("Dovin's Veto", 193, Rarity.UNCOMMON, mage.cards.d.DovinsVeto.class)); cards.add(new SetCardInfo("Dreadhorde Arcanist", 125, Rarity.RARE, mage.cards.d.DreadhordeArcanist.class)); cards.add(new SetCardInfo("Dreadhorde Butcher", 194, Rarity.RARE, mage.cards.d.DreadhordeButcher.class));