From ec4feaddfef14614afda28c06a734f6cab065294 Mon Sep 17 00:00:00 2001 From: Evan Kranzler Date: Tue, 29 Mar 2022 20:17:07 -0400 Subject: [PATCH] [SNC] Implemented Obscura Charm --- Mage.Sets/src/mage/cards/o/ObscuraCharm.java | 64 +++++++++++++++++++ .../src/mage/sets/StreetsOfNewCapenna.java | 1 + Mage/src/main/java/mage/abilities/Mode.java | 7 +- Utils/mtg-cards-data.txt | 1 + 4 files changed, 70 insertions(+), 3 deletions(-) create mode 100644 Mage.Sets/src/mage/cards/o/ObscuraCharm.java diff --git a/Mage.Sets/src/mage/cards/o/ObscuraCharm.java b/Mage.Sets/src/mage/cards/o/ObscuraCharm.java new file mode 100644 index 0000000000..ccf994dfb1 --- /dev/null +++ b/Mage.Sets/src/mage/cards/o/ObscuraCharm.java @@ -0,0 +1,64 @@ +package mage.cards.o; + +import mage.abilities.Mode; +import mage.abilities.effects.common.CounterTargetEffect; +import mage.abilities.effects.common.DestroyTargetEffect; +import mage.abilities.effects.common.ReturnFromGraveyardToBattlefieldTargetEffect; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.ComparisonType; +import mage.filter.FilterCard; +import mage.filter.FilterPermanent; +import mage.filter.StaticFilters; +import mage.filter.common.FilterCreatureOrPlaneswalkerPermanent; +import mage.filter.common.FilterPermanentCard; +import mage.filter.predicate.mageobject.ManaValuePredicate; +import mage.filter.predicate.mageobject.MulticoloredPredicate; +import mage.target.TargetPermanent; +import mage.target.TargetSpell; +import mage.target.common.TargetCardInYourGraveyard; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class ObscuraCharm extends CardImpl { + + private static final FilterCard filter + = new FilterPermanentCard("multicolored permanent card with mana value 3 or less from your graveyard"); + private static final FilterPermanent filter2 + = new FilterCreatureOrPlaneswalkerPermanent("creature or planeswalker with mana value 3 or less"); + + static { + filter.add(MulticoloredPredicate.instance); + filter.add(new ManaValuePredicate(ComparisonType.FEWER_THAN, 4)); + filter2.add(new ManaValuePredicate(ComparisonType.FEWER_THAN, 4)); + } + + public ObscuraCharm(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{W}{U}{B}"); + + // Choose one — + // • Return target multicolored permanent card with mana value 3 or less from your graveyard to the battlefield tapped. + this.getSpellAbility().addEffect(new ReturnFromGraveyardToBattlefieldTargetEffect(true)); + this.getSpellAbility().addTarget(new TargetCardInYourGraveyard(filter)); + + // • Counter target instant or sorcery spell. + this.getSpellAbility().addMode(new Mode(new CounterTargetEffect()) + .addTarget(new TargetSpell(StaticFilters.FILTER_SPELL_INSTANT_OR_SORCERY))); + + // • Destroy target creature or planeswalker with mana value 3 or less. + this.getSpellAbility().addMode(new Mode(new DestroyTargetEffect()).addTarget(new TargetPermanent(filter2))); + } + + private ObscuraCharm(final ObscuraCharm card) { + super(card); + } + + @Override + public ObscuraCharm copy() { + return new ObscuraCharm(this); + } +} diff --git a/Mage.Sets/src/mage/sets/StreetsOfNewCapenna.java b/Mage.Sets/src/mage/sets/StreetsOfNewCapenna.java index 7d1a492160..4b1adba3d0 100644 --- a/Mage.Sets/src/mage/sets/StreetsOfNewCapenna.java +++ b/Mage.Sets/src/mage/sets/StreetsOfNewCapenna.java @@ -27,6 +27,7 @@ public final class StreetsOfNewCapenna extends ExpansionSet { cards.add(new SetCardInfo("Jetmir's Garden", 250, Rarity.RARE, mage.cards.j.JetmirsGarden.class)); cards.add(new SetCardInfo("Maestros Charm", 199, Rarity.UNCOMMON, mage.cards.m.MaestrosCharm.class)); cards.add(new SetCardInfo("Mountain", 278, Rarity.LAND, mage.cards.basiclands.Mountain.class, FULL_ART_BFZ_VARIOUS)); + cards.add(new SetCardInfo("Obscura Charm", 208, Rarity.UNCOMMON, mage.cards.o.ObscuraCharm.class)); cards.add(new SetCardInfo("Plains", 272, Rarity.LAND, mage.cards.basiclands.Plains.class, FULL_ART_BFZ_VARIOUS)); cards.add(new SetCardInfo("Raffine's Tower", 254, Rarity.RARE, mage.cards.r.RaffinesTower.class)); cards.add(new SetCardInfo("Spara's Headquarters", 257, Rarity.RARE, mage.cards.s.SparasHeadquarters.class)); diff --git a/Mage/src/main/java/mage/abilities/Mode.java b/Mage/src/main/java/mage/abilities/Mode.java index ee58eea185..ae0d857152 100644 --- a/Mage/src/main/java/mage/abilities/Mode.java +++ b/Mage/src/main/java/mage/abilities/Mode.java @@ -50,15 +50,16 @@ public class Mode implements Serializable { return targets; } - public void addTarget(Target target) { - this.addTarget(target, false); + public Mode addTarget(Target target) { + return this.addTarget(target, false); } - public void addTarget(Target target, Boolean addChooseHintFromEffect) { + public Mode addTarget(Target target, Boolean addChooseHintFromEffect) { targets.add(target); if (addChooseHintFromEffect) { target.withChooseHint(this.getEffects().getText(this)); } + return this; } public Effects getEffects() { diff --git a/Utils/mtg-cards-data.txt b/Utils/mtg-cards-data.txt index a687e49b53..890ac420fa 100644 --- a/Utils/mtg-cards-data.txt +++ b/Utils/mtg-cards-data.txt @@ -43919,6 +43919,7 @@ Ominous Traveler|Alchemy: Innistrad|62|R|{2}|Creature - Human|1|1|When Ominous T Forsaken Crossroads|Alchemy: Innistrad|63|R||Land|||Forsaken Crossroads enters the battlefield tapped.$As Forsaken Crossroads enters the battlefield, choose a color.$When Forsaken Crossroads enters the battlefield, scry 1. If you weren't the starting player, you may untap Forsaken Crossroads instead.${T}: Add one mana of the chosen color.| Brokers Ascendancy|Streets of New Capenna|170|R|{G}{W}{U}|Enchantment|||At the beginning of your end step, put a +1/+1 counter on each creature you control and a loyalty counter on each planeswalker you control.| Maestros Charm|Streets of New Capenna|199|U|{U}{B}{R}|Instant|||Choose one —$• Look at the top five cards of your library. Put one of those cards into your hand and the rest into your graveyard.$• Each opponent loses 3 life and you gain 3 life.$• Maestros Charm deals 5 damage to target creature or planeswalker.| +Obscura Charm|Streets of New Capenna|208|U|{W}{U}{B}|Instant|||Choose one —$• Return target multicolored permanent card with mana value 3 or less from your graveyard to the battlefield tapped.$• Counter target instant or sorcery spell.$• Destroy target creature or planeswalker with mana value 3 or less.| Jetmir's Garden|Streets of New Capenna|250|R||Land - Mountain Forest Plains|||({T}: Add {R}, {G}, or {W}.)$Jetmir's Garden enters the battlefield tapped.$Cycling {3}| Raffine's Tower|Streets of New Capenna|254|R||Land - Plains Island Swamp|||({T}: Add {W}, {U}, or {B}.)$Raffine's Tower enters the battlefield tapped.$Cycling {3}| Spara's Headquarters|Streets of New Capenna|257|R||Land - Forest Plains Island|||({T}: Add {G}, {W}, or {U}.)$Spara's Headquarters enters the battlefield tapped.$Cycling {3}|