From c1e37c89b04fe3cb6107dcd885a00ce504d710e0 Mon Sep 17 00:00:00 2001 From: Evan Kranzler Date: Mon, 8 Jun 2020 19:22:22 -0400 Subject: [PATCH] Implemented Pestilent Haze --- Mage.Sets/src/mage/cards/p/PestilentHaze.java | 70 +++++++++++++++++++ Mage.Sets/src/mage/sets/CoreSet2021.java | 1 + 2 files changed, 71 insertions(+) create mode 100644 Mage.Sets/src/mage/cards/p/PestilentHaze.java diff --git a/Mage.Sets/src/mage/cards/p/PestilentHaze.java b/Mage.Sets/src/mage/cards/p/PestilentHaze.java new file mode 100644 index 00000000000..424901bd535 --- /dev/null +++ b/Mage.Sets/src/mage/cards/p/PestilentHaze.java @@ -0,0 +1,70 @@ +package mage.cards.p; + +import mage.abilities.Ability; +import mage.abilities.Mode; +import mage.abilities.effects.OneShotEffect; +import mage.abilities.effects.common.continuous.BoostAllEffect; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.Outcome; +import mage.counters.CounterType; +import mage.filter.StaticFilters; +import mage.game.Game; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class PestilentHaze extends CardImpl { + + public PestilentHaze(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{B}{B}"); + + // Choose one — + // • All creatures get -2/-2 until end of turn. + this.getSpellAbility().addEffect(new BoostAllEffect(-2, -2, Duration.EndOfTurn)); + + // • Remove two loyalty counters from each planeswalker. + this.getSpellAbility().addMode(new Mode(new PestilentHazeEffect())); + } + + private PestilentHaze(final PestilentHaze card) { + super(card); + } + + @Override + public PestilentHaze copy() { + return new PestilentHaze(this); + } +} + +class PestilentHazeEffect extends OneShotEffect { + + PestilentHazeEffect() { + super(Outcome.Benefit); + staticText = "remove two loyalty counters from each planeswalker"; + } + + private PestilentHazeEffect(final PestilentHazeEffect effect) { + super(effect); + } + + @Override + public PestilentHazeEffect copy() { + return new PestilentHazeEffect(this); + } + + @Override + public boolean apply(Game game, Ability source) { + game.getBattlefield() + .getActivePermanents( + StaticFilters.FILTER_PERMANENT_PLANESWALKER, + source.getControllerId(), source.getSourceId(), game + ).stream() + .forEach(permanent -> permanent.removeCounters(CounterType.LOYALTY.createInstance(2), game)); + return true; + } +} diff --git a/Mage.Sets/src/mage/sets/CoreSet2021.java b/Mage.Sets/src/mage/sets/CoreSet2021.java index a011d4b1716..33449421a70 100644 --- a/Mage.Sets/src/mage/sets/CoreSet2021.java +++ b/Mage.Sets/src/mage/sets/CoreSet2021.java @@ -73,6 +73,7 @@ public final class CoreSet2021 extends ExpansionSet { cards.add(new SetCardInfo("Necromentia", 116, Rarity.RARE, mage.cards.n.Necromentia.class)); cards.add(new SetCardInfo("Pack Leader", 29, Rarity.RARE, mage.cards.p.PackLeader.class)); cards.add(new SetCardInfo("Peer into the Abyss", 117, Rarity.RARE, mage.cards.p.PeerIntoTheAbyss.class)); + cards.add(new SetCardInfo("Pestilent Haze", 118, Rarity.UNCOMMON, mage.cards.p.PestilentHaze.class)); cards.add(new SetCardInfo("Plains", 309, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Predatory Wurm", 338, Rarity.UNCOMMON, mage.cards.p.PredatoryWurm.class)); cards.add(new SetCardInfo("Quirion Dryad", 198, Rarity.UNCOMMON, mage.cards.q.QuirionDryad.class));