From 21b475a0b94a843317aa0410065a8f67f94471aa Mon Sep 17 00:00:00 2001 From: Evan Kranzler Date: Sat, 5 Feb 2022 10:46:02 -0500 Subject: [PATCH] [NEO] Implemented Disruption Protocol --- .../src/mage/cards/d/DisruptionProtocol.java | 52 +++++++++++++++++++ .../src/mage/sets/KamigawaNeonDynasty.java | 1 + 2 files changed, 53 insertions(+) create mode 100644 Mage.Sets/src/mage/cards/d/DisruptionProtocol.java diff --git a/Mage.Sets/src/mage/cards/d/DisruptionProtocol.java b/Mage.Sets/src/mage/cards/d/DisruptionProtocol.java new file mode 100644 index 0000000000..017af341b2 --- /dev/null +++ b/Mage.Sets/src/mage/cards/d/DisruptionProtocol.java @@ -0,0 +1,52 @@ +package mage.cards.d; + +import mage.abilities.costs.OrCost; +import mage.abilities.costs.common.TapTargetCost; +import mage.abilities.costs.mana.GenericManaCost; +import mage.abilities.effects.common.CounterTargetEffect; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.filter.common.FilterControlledArtifactPermanent; +import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.permanent.TappedPredicate; +import mage.target.TargetSpell; +import mage.target.common.TargetControlledPermanent; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class DisruptionProtocol extends CardImpl { + + private static final FilterControlledPermanent filter + = new FilterControlledArtifactPermanent("untapped artifact you control"); + + static { + filter.add(TappedPredicate.UNTAPPED); + } + + public DisruptionProtocol(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{U}{U}"); + + // As an additional cost to cast this spell, tap an untapped artifact you control or pay {1}. + this.getSpellAbility().addCost(new OrCost( + new TapTargetCost(new TargetControlledPermanent(filter)), + new GenericManaCost(1), "tap an untapped artifact you control or pay {1}" + )); + + // Counter target spell. + this.getSpellAbility().addEffect(new CounterTargetEffect()); + this.getSpellAbility().addTarget(new TargetSpell()); + } + + private DisruptionProtocol(final DisruptionProtocol card) { + super(card); + } + + @Override + public DisruptionProtocol copy() { + return new DisruptionProtocol(this); + } +} diff --git a/Mage.Sets/src/mage/sets/KamigawaNeonDynasty.java b/Mage.Sets/src/mage/sets/KamigawaNeonDynasty.java index 3133bd1814..a93c29754e 100644 --- a/Mage.Sets/src/mage/sets/KamigawaNeonDynasty.java +++ b/Mage.Sets/src/mage/sets/KamigawaNeonDynasty.java @@ -64,6 +64,7 @@ public final class KamigawaNeonDynasty extends ExpansionSet { cards.add(new SetCardInfo("Colossal Skyturtle", 216, Rarity.UNCOMMON, mage.cards.c.ColossalSkyturtle.class)); cards.add(new SetCardInfo("Covert Technician", 49, Rarity.UNCOMMON, mage.cards.c.CovertTechnician.class)); cards.add(new SetCardInfo("Dismal Backwater", 267, Rarity.COMMON, mage.cards.d.DismalBackwater.class)); + cards.add(new SetCardInfo("Disruption Protocol", 51, Rarity.COMMON, mage.cards.d.DisruptionProtocol.class)); cards.add(new SetCardInfo("Dockside Chef", 93, Rarity.UNCOMMON, mage.cards.d.DocksideChef.class)); cards.add(new SetCardInfo("Dokuchi Shadow-Walker", 94, Rarity.COMMON, mage.cards.d.DokuchiShadowWalker.class)); cards.add(new SetCardInfo("Dokuchi Silencer", 95, Rarity.UNCOMMON, mage.cards.d.DokuchiSilencer.class));