Implemented Dovin's Acuity

This commit is contained in:
Evan Kranzler 2019-01-09 12:04:51 -05:00
parent 08e7e60d93
commit c94ef8dbc5
2 changed files with 73 additions and 0 deletions

View file

@ -0,0 +1,72 @@
package mage.cards.d;
import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.common.SpellCastControllerTriggeredAbility;
import mage.abilities.condition.Condition;
import mage.abilities.decorator.ConditionalTriggeredAbility;
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
import mage.abilities.effects.common.GainLifeEffect;
import mage.abilities.effects.common.ReturnToHandSourceEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.TurnPhase;
import mage.filter.FilterSpell;
import mage.filter.predicate.mageobject.CardTypePredicate;
import mage.game.Game;
import java.util.EnumSet;
import java.util.Set;
import java.util.UUID;
/**
* @author TheElk801
*/
public final class DovinsAcuity extends CardImpl {
private static final FilterSpell filter = new FilterSpell();
static {
filter.add(new CardTypePredicate(CardType.INSTANT));
}
public DovinsAcuity(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{W}{U}");
// When Dovin's Acuity enters the battlefield, you gain 2 life and draw a card.
Ability ability = new EntersBattlefieldTriggeredAbility(new GainLifeEffect(2));
ability.addEffect(new DrawCardSourceControllerEffect(1).setText("and draw a card"));
this.addAbility(ability);
// Whenever you cast an instant spell during your main phase, you may return Dovin's Acuity to its owner's hand.
this.addAbility(new ConditionalTriggeredAbility(
new SpellCastControllerTriggeredAbility(
new ReturnToHandSourceEffect(true), filter, true
), DovinsAcuityCondition.instance,
"Whenever you cast an instant spell during your main phase, " +
"you may return {this} to its owner's hand."
));
}
private DovinsAcuity(final DovinsAcuity card) {
super(card);
}
@Override
public DovinsAcuity copy() {
return new DovinsAcuity(this);
}
}
enum DovinsAcuityCondition implements Condition {
instance;
private static final Set<TurnPhase> turnPhases = EnumSet.of(TurnPhase.PRECOMBAT_MAIN, TurnPhase.POSTCOMBAT_MAIN);
@Override
public boolean apply(Game game, Ability source) {
return game.isActivePlayer(source.getControllerId())
&& turnPhases.contains(game.getTurn().getPhase().getType());
}
}

View file

@ -65,6 +65,7 @@ public final class RavnicaAllegiance extends ExpansionSet {
cards.add(new SetCardInfo("Depose // Deploy", 225, Rarity.UNCOMMON, mage.cards.d.DeposeDeploy.class)); cards.add(new SetCardInfo("Depose // Deploy", 225, Rarity.UNCOMMON, mage.cards.d.DeposeDeploy.class));
cards.add(new SetCardInfo("Deputy of Detention", 165, Rarity.RARE, mage.cards.d.DeputyOfDetention.class)); cards.add(new SetCardInfo("Deputy of Detention", 165, Rarity.RARE, mage.cards.d.DeputyOfDetention.class));
cards.add(new SetCardInfo("Domri, Chaos Bringer", 166, Rarity.MYTHIC, mage.cards.d.DomriChaosBringer.class)); cards.add(new SetCardInfo("Domri, Chaos Bringer", 166, Rarity.MYTHIC, mage.cards.d.DomriChaosBringer.class));
cards.add(new SetCardInfo("Dovin's Acuity", 168, Rarity.UNCOMMON, mage.cards.d.DovinsAcuity.class));
cards.add(new SetCardInfo("Dovin, Grand Arbiter", 167, Rarity.MYTHIC, mage.cards.d.DovinGrandArbiter.class)); cards.add(new SetCardInfo("Dovin, Grand Arbiter", 167, Rarity.MYTHIC, mage.cards.d.DovinGrandArbiter.class));
cards.add(new SetCardInfo("Drill Bit", 73, Rarity.UNCOMMON, mage.cards.d.DrillBit.class)); cards.add(new SetCardInfo("Drill Bit", 73, Rarity.UNCOMMON, mage.cards.d.DrillBit.class));
cards.add(new SetCardInfo("Electrodominance", 99, Rarity.RARE, mage.cards.e.Electrodominance.class)); cards.add(new SetCardInfo("Electrodominance", 99, Rarity.RARE, mage.cards.e.Electrodominance.class));