From 21454f9b5814d7f2faaf3fce6be622965a3c8202 Mon Sep 17 00:00:00 2001 From: Evan Kranzler Date: Tue, 8 Sep 2020 11:27:40 -0400 Subject: [PATCH] [ZNR] Implemented Nahiri's Binding --- .../src/mage/cards/n/NahirisBinding.java | 47 +++++++++++++++++++ Mage.Sets/src/mage/sets/ZendikarRising.java | 1 + ...CantBlockAttackActivateAttachedEffect.java | 6 ++- .../main/java/mage/filter/StaticFilters.java | 16 ++++++- 4 files changed, 68 insertions(+), 2 deletions(-) create mode 100644 Mage.Sets/src/mage/cards/n/NahirisBinding.java diff --git a/Mage.Sets/src/mage/cards/n/NahirisBinding.java b/Mage.Sets/src/mage/cards/n/NahirisBinding.java new file mode 100644 index 00000000000..fa32f066735 --- /dev/null +++ b/Mage.Sets/src/mage/cards/n/NahirisBinding.java @@ -0,0 +1,47 @@ +package mage.cards.n; + +import mage.abilities.Ability; +import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.effects.common.AttachEffect; +import mage.abilities.effects.common.combat.CantBlockAttackActivateAttachedEffect; +import mage.abilities.keyword.EnchantAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.Outcome; +import mage.constants.SubType; +import mage.filter.StaticFilters; +import mage.target.TargetPermanent; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class NahirisBinding extends CardImpl { + + public NahirisBinding(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{W}{W}"); + + this.subtype.add(SubType.AURA); + + // Enchant creature or planeswalker + TargetPermanent auraTarget = new TargetPermanent(StaticFilters.FILTER_PERMANENT_CREATURE_OR_PLANESWALKER); + this.getSpellAbility().addTarget(auraTarget); + this.getSpellAbility().addEffect(new AttachEffect(Outcome.BoostCreature)); + Ability ability = new EnchantAbility(auraTarget.getTargetName()); + this.addAbility(ability); + + // Enchanted permanent can't attack or block, and its activated abilities can't be activated. + this.addAbility(new SimpleStaticAbility(new CantBlockAttackActivateAttachedEffect("permanent"))); + } + + private NahirisBinding(final NahirisBinding card) { + super(card); + } + + @Override + public NahirisBinding copy() { + return new NahirisBinding(this); + } +} diff --git a/Mage.Sets/src/mage/sets/ZendikarRising.java b/Mage.Sets/src/mage/sets/ZendikarRising.java index 97d72244c3a..1c368e52b56 100644 --- a/Mage.Sets/src/mage/sets/ZendikarRising.java +++ b/Mage.Sets/src/mage/sets/ZendikarRising.java @@ -215,6 +215,7 @@ public final class ZendikarRising extends ExpansionSet { cards.add(new SetCardInfo("Murasa Rootgrazer", 229, Rarity.UNCOMMON, mage.cards.m.MurasaRootgrazer.class)); cards.add(new SetCardInfo("Murasa Sproutling", 196, Rarity.UNCOMMON, mage.cards.m.MurasaSproutling.class)); cards.add(new SetCardInfo("Murkwater Pathway", 260, Rarity.RARE, mage.cards.m.MurkwaterPathway.class)); + cards.add(new SetCardInfo("Nahiri's Binding", 29, Rarity.COMMON, mage.cards.n.NahirisBinding.class)); cards.add(new SetCardInfo("Nahiri's Lithoforming", 151, Rarity.RARE, mage.cards.n.NahirisLithoforming.class)); cards.add(new SetCardInfo("Nahiri, Heir of the Ancients", 230, Rarity.MYTHIC, mage.cards.n.NahiriHeirOfTheAncients.class)); cards.add(new SetCardInfo("Needleverge Pathway", 263, Rarity.RARE, mage.cards.n.NeedlevergePathway.class)); diff --git a/Mage/src/main/java/mage/abilities/effects/common/combat/CantBlockAttackActivateAttachedEffect.java b/Mage/src/main/java/mage/abilities/effects/common/combat/CantBlockAttackActivateAttachedEffect.java index cc9906fe9b0..e30263e2238 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/combat/CantBlockAttackActivateAttachedEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/combat/CantBlockAttackActivateAttachedEffect.java @@ -12,8 +12,12 @@ import mage.game.permanent.Permanent; public class CantBlockAttackActivateAttachedEffect extends RestrictionEffect { public CantBlockAttackActivateAttachedEffect() { + this("creature"); + } + + public CantBlockAttackActivateAttachedEffect(String enchantedName) { super(Duration.WhileOnBattlefield); - staticText = "Enchanted creature can't attack or block, and its activated abilities can't be activated"; + staticText = "Enchanted " + enchantedName + " can't attack or block, and its activated abilities can't be activated"; } public CantBlockAttackActivateAttachedEffect(final CantBlockAttackActivateAttachedEffect effect) { diff --git a/Mage/src/main/java/mage/filter/StaticFilters.java b/Mage/src/main/java/mage/filter/StaticFilters.java index 2e4ba0f6c3d..128d1298775 100644 --- a/Mage/src/main/java/mage/filter/StaticFilters.java +++ b/Mage/src/main/java/mage/filter/StaticFilters.java @@ -441,10 +441,24 @@ public final class StaticFilters { static { FILTER_PERMANENT_CREATURE_OR_PLANESWALKER_A.add( - Predicates.or(CardType.CREATURE.getPredicate(), CardType.PLANESWALKER.getPredicate())); + Predicates.or( + CardType.CREATURE.getPredicate(), + CardType.PLANESWALKER.getPredicate() + )); FILTER_PERMANENT_CREATURE_OR_PLANESWALKER_A.setLockedFilter(true); } + public static final FilterPermanent FILTER_PERMANENT_CREATURE_OR_PLANESWALKER = new FilterPermanent("creature or planeswalker"); + + static { + FILTER_PERMANENT_CREATURE_OR_PLANESWALKER.add( + Predicates.or( + CardType.CREATURE.getPredicate(), + CardType.PLANESWALKER.getPredicate() + )); + FILTER_PERMANENT_CREATURE_OR_PLANESWALKER.setLockedFilter(true); + } + public static final FilterCreaturePermanent FILTER_PERMANENT_A_CREATURE = new FilterCreaturePermanent("a creature"); static {