diff --git a/Mage.Sets/src/mage/cards/e/EmeraldDragon.java b/Mage.Sets/src/mage/cards/e/EmeraldDragon.java new file mode 100644 index 00000000000..66d3ad53e80 --- /dev/null +++ b/Mage.Sets/src/mage/cards/e/EmeraldDragon.java @@ -0,0 +1,69 @@ +package mage.cards.e; + +import mage.MageInt; +import mage.abilities.effects.common.CounterTargetEffect; +import mage.abilities.keyword.FlyingAbility; +import mage.abilities.keyword.TrampleAbility; +import mage.cards.AdventureCard; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.SubType; +import mage.filter.FilterStackObject; +import mage.filter.predicate.Predicate; +import mage.game.Game; +import mage.game.stack.StackAbility; +import mage.game.stack.StackObject; +import mage.target.common.TargetActivatedOrTriggeredAbility; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class EmeraldDragon extends AdventureCard { + + private static final FilterStackObject filter + = new FilterStackObject("activated or triggered ability from a noncreature source"); + + static { + filter.add(EmeraldDragonPredicate.instance); + } + + public EmeraldDragon(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, new CardType[]{CardType.INSTANT}, "{4}{G}{G}", "Dissonant Wave", "{2}{G}"); + + this.subtype.add(SubType.DRAGON); + this.power = new MageInt(4); + this.toughness = new MageInt(4); + + // Flying + this.addAbility(FlyingAbility.getInstance()); + + // Trample + this.addAbility(TrampleAbility.getInstance()); + + // Dissonant Wave + // Counter target activated or triggered ability from a noncreature source. + this.getSpellCard().getSpellAbility().addEffect(new CounterTargetEffect()); + this.getSpellAbility().addTarget(new TargetActivatedOrTriggeredAbility(filter)); + } + + private EmeraldDragon(final EmeraldDragon card) { + super(card); + } + + @Override + public EmeraldDragon copy() { + return new EmeraldDragon(this); + } +} + +enum EmeraldDragonPredicate implements Predicate { + instance; + + @Override + public boolean apply(StackObject input, Game game) { + return input instanceof StackAbility + && !((StackAbility) input).getSourceObject(game).isCreature(game); + } +} \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/CommanderLegendsBattleForBaldursGate.java b/Mage.Sets/src/mage/sets/CommanderLegendsBattleForBaldursGate.java index 18e49c81909..f0255d2f2b1 100644 --- a/Mage.Sets/src/mage/sets/CommanderLegendsBattleForBaldursGate.java +++ b/Mage.Sets/src/mage/sets/CommanderLegendsBattleForBaldursGate.java @@ -66,6 +66,7 @@ public final class CommanderLegendsBattleForBaldursGate extends ExpansionSet { cards.add(new SetCardInfo("Elminster", 274, Rarity.MYTHIC, mage.cards.e.Elminster.class)); cards.add(new SetCardInfo("Elminster's Simulacrum", 561, Rarity.MYTHIC, mage.cards.e.ElminstersSimulacrum.class)); cards.add(new SetCardInfo("Elturel Survivors", 172, Rarity.RARE, mage.cards.e.ElturelSurvivors.class)); + cards.add(new SetCardInfo("Emerald Dragon", 229, Rarity.UNCOMMON, mage.cards.e.EmeraldDragon.class)); cards.add(new SetCardInfo("Erinis, Gloom Stalker", 230, Rarity.UNCOMMON, mage.cards.e.ErinisGloomStalker.class)); cards.add(new SetCardInfo("Faceless One", 1, Rarity.SPECIAL, mage.cards.f.FacelessOne.class)); cards.add(new SetCardInfo("Fang Dragon", 173, Rarity.COMMON, mage.cards.f.FangDragon.class));