From 25eec140e6805abf62f76fa2df054ba812c5c51c Mon Sep 17 00:00:00 2001 From: Evan Kranzler Date: Mon, 16 Sep 2019 20:34:59 -0400 Subject: [PATCH] Implemented Opportunistic Dragon --- .../src/mage/cards/o/OpportunisticDragon.java | 70 +++++++++++++++++++ Mage.Sets/src/mage/sets/ThroneOfEldraine.java | 1 + 2 files changed, 71 insertions(+) create mode 100644 Mage.Sets/src/mage/cards/o/OpportunisticDragon.java diff --git a/Mage.Sets/src/mage/cards/o/OpportunisticDragon.java b/Mage.Sets/src/mage/cards/o/OpportunisticDragon.java new file mode 100644 index 0000000000..5787c4685e --- /dev/null +++ b/Mage.Sets/src/mage/cards/o/OpportunisticDragon.java @@ -0,0 +1,70 @@ +package mage.cards.o; + +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.common.EntersBattlefieldTriggeredAbility; +import mage.abilities.effects.common.combat.CantAttackBlockTargetEffect; +import mage.abilities.effects.common.continuous.GainControlTargetEffect; +import mage.abilities.effects.common.continuous.LoseAllAbilitiesTargetEffect; +import mage.abilities.keyword.FlyingAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.SubType; +import mage.constants.TargetController; +import mage.filter.FilterPermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; +import mage.filter.predicate.mageobject.SubtypePredicate; +import mage.filter.predicate.permanent.ControllerPredicate; +import mage.target.TargetPermanent; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class OpportunisticDragon extends CardImpl { + + private static final FilterPermanent filter = new FilterPermanent("Human or artifact an opponent controls"); + + static { + filter.add(Predicates.or( + new CardTypePredicate(CardType.ARTIFACT), + new SubtypePredicate(SubType.HUMAN) + )); + filter.add(new ControllerPredicate(TargetController.OPPONENT)); + } + + public OpportunisticDragon(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}{R}"); + + this.subtype.add(SubType.DRAGON); + this.power = new MageInt(4); + this.toughness = new MageInt(3); + + // Flying + this.addAbility(FlyingAbility.getInstance()); + + // When Opportunistic Dragon enters the battlefield, choose target Human or artifact an opponent controls. For as long as Opportunistic Dragon remains on the battlefield, gain control of that permanent, it loses all abilities, and it can't attack or block. + Ability ability = new EntersBattlefieldTriggeredAbility(new GainControlTargetEffect(Duration.WhileOnBattlefield) + .setText("choose target Human or artifact an opponent controls. " + + "For as long as {this} remains on the battlefield, gain control of that permanent,")); + ability.addEffect(new LoseAllAbilitiesTargetEffect(Duration.WhileOnBattlefield) + .setText("it loses all abilities,")); + ability.addEffect(new CantAttackBlockTargetEffect(Duration.WhileOnBattlefield) + .setText("and it can't attack or block")); + ability.addTarget(new TargetPermanent(filter)); + this.addAbility(ability); + } + + private OpportunisticDragon(final OpportunisticDragon card) { + super(card); + } + + @Override + public OpportunisticDragon copy() { + return new OpportunisticDragon(this); + } +} diff --git a/Mage.Sets/src/mage/sets/ThroneOfEldraine.java b/Mage.Sets/src/mage/sets/ThroneOfEldraine.java index 9c779eb7b7..0580b7580d 100644 --- a/Mage.Sets/src/mage/sets/ThroneOfEldraine.java +++ b/Mage.Sets/src/mage/sets/ThroneOfEldraine.java @@ -145,6 +145,7 @@ public final class ThroneOfEldraine extends ExpansionSet { cards.add(new SetCardInfo("Oko, the Trickster", 309, Rarity.MYTHIC, mage.cards.o.OkoTheTrickster.class)); cards.add(new SetCardInfo("Once Upon a Time", 169, Rarity.RARE, mage.cards.o.OnceUponATime.class)); cards.add(new SetCardInfo("Once and Future", 168, Rarity.UNCOMMON, mage.cards.o.OnceAndFuture.class)); + cards.add(new SetCardInfo("Opportunistic Dragon", 133, Rarity.RARE, mage.cards.o.OpportunisticDragon.class)); cards.add(new SetCardInfo("Opt", 59, Rarity.COMMON, mage.cards.o.Opt.class)); cards.add(new SetCardInfo("Order of Midnight", 99, Rarity.UNCOMMON, mage.cards.o.OrderOfMidnight.class)); cards.add(new SetCardInfo("Outmuscle", 170, Rarity.COMMON, mage.cards.o.Outmuscle.class));