diff --git a/Mage.Sets/src/mage/cards/n/NaturesEmbrace.java b/Mage.Sets/src/mage/cards/n/NaturesEmbrace.java new file mode 100644 index 00000000000..b5e93278e03 --- /dev/null +++ b/Mage.Sets/src/mage/cards/n/NaturesEmbrace.java @@ -0,0 +1,94 @@ +package mage.cards.n; + +import mage.abilities.Ability; +import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.condition.Condition; +import mage.abilities.costs.common.TapSourceCost; +import mage.abilities.decorator.ConditionalContinuousEffect; +import mage.abilities.effects.common.AttachEffect; +import mage.abilities.effects.common.continuous.BoostEnchantedEffect; +import mage.abilities.effects.common.continuous.GainAbilityAttachedEffect; +import mage.abilities.effects.mana.AddManaOfAnyColorEffect; +import mage.abilities.keyword.EnchantAbility; +import mage.abilities.mana.SimpleManaAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.*; +import mage.filter.FilterPermanent; +import mage.filter.predicate.Predicates; +import mage.game.Game; +import mage.game.permanent.Permanent; +import mage.target.TargetPermanent; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class NaturesEmbrace extends CardImpl { + + private static final FilterPermanent filter = new FilterPermanent("creature or land"); + + static { + filter.add(Predicates.or( + CardType.CREATURE.getPredicate(), + CardType.LAND.getPredicate() + )); + } + + public NaturesEmbrace(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{G}"); + + this.subtype.add(SubType.AURA); + + // Enchant creature or land + TargetPermanent auraTarget = new TargetPermanent(filter); + this.getSpellAbility().addTarget(auraTarget); + this.getSpellAbility().addEffect(new AttachEffect(Outcome.BoostCreature)); + Ability ability = new EnchantAbility(auraTarget.getTargetName()); + this.addAbility(ability); + + // As long as enchanted permanent is a creature, it gets +2/+2. + this.addAbility(new SimpleStaticAbility(new ConditionalContinuousEffect( + new BoostEnchantedEffect(2, 2), NaturesEmbraceCondition.CREATURE, + "as long as enchanted permanent is a creature, it gets +2/+2" + ))); + + // As long as enchanted permanent is a land, it has "{T}: Add two mana of any one color." + this.addAbility(new SimpleStaticAbility(new ConditionalContinuousEffect( + new GainAbilityAttachedEffect(new SimpleManaAbility( + Zone.BATTLEFIELD, new AddManaOfAnyColorEffect(2), new TapSourceCost() + ), AttachmentType.AURA), NaturesEmbraceCondition.LAND, "as long as enchanted permanent " + + "is a land, it has \"{T}: Add two mana of any one color.\"" + ))); + } + + private NaturesEmbrace(final NaturesEmbrace card) { + super(card); + } + + @Override + public NaturesEmbrace copy() { + return new NaturesEmbrace(this); + } +} + +enum NaturesEmbraceCondition implements Condition { + CREATURE(CardType.CREATURE), + LAND(CardType.LAND); + private final CardType cardType; + + NaturesEmbraceCondition(CardType cardType) { + this.cardType = cardType; + } + + @Override + public boolean apply(Game game, Ability source) { + Permanent permanent = source.getSourcePermanentIfItStillExists(game); + if (permanent == null) { + return false; + } + Permanent attached = game.getPermanent(permanent.getAttachedTo()); + return attached != null && attached.getCardType(game).contains(cardType); + } +} \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/InnistradCrimsonVow.java b/Mage.Sets/src/mage/sets/InnistradCrimsonVow.java index 6fff8c09cf7..5701f266eb6 100644 --- a/Mage.Sets/src/mage/sets/InnistradCrimsonVow.java +++ b/Mage.Sets/src/mage/sets/InnistradCrimsonVow.java @@ -187,6 +187,7 @@ public final class InnistradCrimsonVow extends ExpansionSet { cards.add(new SetCardInfo("Moonlit Ambusher", 212, Rarity.UNCOMMON, mage.cards.m.MoonlitAmbusher.class)); cards.add(new SetCardInfo("Mountain", 401, Rarity.LAND, mage.cards.basiclands.Mountain.class, FULL_ART_BFZ_VARIOUS)); cards.add(new SetCardInfo("Mulch", 210, Rarity.COMMON, mage.cards.m.Mulch.class)); + cards.add(new SetCardInfo("Nature's Embrace", 211, Rarity.COMMON, mage.cards.n.NaturesEmbrace.class)); cards.add(new SetCardInfo("Nebelgast Beguiler", 25, Rarity.COMMON, mage.cards.n.NebelgastBeguiler.class)); cards.add(new SetCardInfo("Necroduality", 70, Rarity.MYTHIC, mage.cards.n.Necroduality.class)); cards.add(new SetCardInfo("Oakshade Stalker", 212, Rarity.UNCOMMON, mage.cards.o.OakshadeStalker.class));