diff --git a/Mage.Sets/src/mage/cards/d/DoricNaturesWarden.java b/Mage.Sets/src/mage/cards/d/DoricNaturesWarden.java new file mode 100644 index 0000000000..f43b14bf66 --- /dev/null +++ b/Mage.Sets/src/mage/cards/d/DoricNaturesWarden.java @@ -0,0 +1,66 @@ +package mage.cards.d; + +import mage.MageInt; +import mage.abilities.common.AttacksTriggeredAbility; +import mage.abilities.common.EntersBattlefieldTriggeredAbility; +import mage.abilities.costs.mana.ManaCostsImpl; +import mage.abilities.effects.common.DoIfCostPaid; +import mage.abilities.effects.common.TransformSourceEffect; +import mage.abilities.effects.common.search.SearchLibraryPutInPlayEffect; +import mage.abilities.keyword.TransformAbility; +import mage.abilities.keyword.VigilanceAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.SubType; +import mage.constants.SuperType; +import mage.filter.common.FilterLandCard; +import mage.target.common.TargetCardInLibrary; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class DoricNaturesWarden extends CardImpl { + + private static final FilterLandCard filter = new FilterLandCard("Forest card"); + + static { + filter.add(SubType.FOREST.getPredicate()); + } + + public DoricNaturesWarden(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}"); + + this.addSuperType(SuperType.LEGENDARY); + this.subtype.add(SubType.TIEFLING); + this.subtype.add(SubType.DRUID); + this.power = new MageInt(3); + this.toughness = new MageInt(3); + this.secondSideCardClazz = mage.cards.d.DoricOwlbearAvenger.class; + + // Vigilance + this.addAbility(VigilanceAbility.getInstance()); + + // When Doric, Nature's Warden enters the battlefield, search your library for a Forest card, put it into the battlefield tapped, then shuffle. + this.addAbility(new EntersBattlefieldTriggeredAbility( + new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(filter), true, true) + )); + + // Whenever Doric attacks, you may pay {1}{G}. If you do, transform her. + this.addAbility(new TransformAbility()); + this.addAbility(new AttacksTriggeredAbility(new DoIfCostPaid( + new TransformSourceEffect().setText("transform her"), new ManaCostsImpl<>("{1}{G}") + ))); + } + + private DoricNaturesWarden(final DoricNaturesWarden card) { + super(card); + } + + @Override + public DoricNaturesWarden copy() { + return new DoricNaturesWarden(this); + } +} diff --git a/Mage.Sets/src/mage/cards/d/DoricOwlbearAvenger.java b/Mage.Sets/src/mage/cards/d/DoricOwlbearAvenger.java new file mode 100644 index 0000000000..5d9b1b3d27 --- /dev/null +++ b/Mage.Sets/src/mage/cards/d/DoricOwlbearAvenger.java @@ -0,0 +1,68 @@ +package mage.cards.d; + +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; +import mage.abilities.common.TransformIntoSourceTriggeredAbility; +import mage.abilities.effects.common.TransformSourceEffect; +import mage.abilities.effects.common.continuous.BoostControlledEffect; +import mage.abilities.effects.common.continuous.GainAbilityControlledEffect; +import mage.abilities.keyword.TrampleAbility; +import mage.abilities.keyword.VigilanceAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.*; +import mage.filter.common.FilterCreaturePermanent; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class DoricOwlbearAvenger extends CardImpl { + + private static final FilterCreaturePermanent filter = new FilterCreaturePermanent(); + + static { + filter.add(SuperType.LEGENDARY.getPredicate()); + } + + public DoricOwlbearAvenger(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, ""); + + this.addSuperType(SuperType.LEGENDARY); + this.subtype.add(SubType.BIRD); + this.subtype.add(SubType.BEAR); + this.power = new MageInt(6); + this.toughness = new MageInt(6); + this.color.setGreen(true); + this.nightCard = true; + + // Vigilance + this.addAbility(VigilanceAbility.getInstance()); + + // Trample + this.addAbility(TrampleAbility.getInstance()); + + // When this creature transforms into Doric, Owlbear Avenger, other legendary creatures you control get +2/+2 and gain trample until end of turn. + Ability ability = new TransformIntoSourceTriggeredAbility(new BoostControlledEffect( + 2, 2, Duration.EndOfTurn, filter, true + ).setText("other legendary creatures you control get +2/+2")); + ability.addEffect(new GainAbilityControlledEffect( + TrampleAbility.getInstance(), Duration.EndOfTurn, filter, true + ).setText("and gain trample until end of turn")); + this.addAbility(ability); + + // At the beginning of your upkeep, transform Doric. + this.addAbility(new BeginningOfUpkeepTriggeredAbility(new TransformSourceEffect(), TargetController.YOU, false)); + } + + private DoricOwlbearAvenger(final DoricOwlbearAvenger card) { + super(card); + } + + @Override + public DoricOwlbearAvenger copy() { + return new DoricOwlbearAvenger(this); + } +}