diff --git a/Mage.Sets/src/mage/cards/c/ConduitOfEmrakul.java b/Mage.Sets/src/mage/cards/c/ConduitOfEmrakul.java index ce9612de660..ec2a8fc337e 100644 --- a/Mage.Sets/src/mage/cards/c/ConduitOfEmrakul.java +++ b/Mage.Sets/src/mage/cards/c/ConduitOfEmrakul.java @@ -1,28 +1,26 @@ - package mage.cards.c; -import java.util.UUID; import mage.MageInt; import mage.Mana; import mage.abilities.common.AttacksTriggeredAbility; import mage.abilities.common.delayed.AtTheBeginOfMainPhaseDelayedTriggeredAbility; -import mage.abilities.effects.Effect; -import mage.abilities.effects.mana.AddManaToManaPoolSourceControllerEffect; import mage.abilities.effects.common.CreateDelayedTriggeredAbilityEffect; +import mage.abilities.effects.mana.AddManaToManaPoolSourceControllerEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; import mage.constants.TargetController; +import java.util.UUID; + /** - * * @author LevelX2 */ public final class ConduitOfEmrakul extends CardImpl { public ConduitOfEmrakul(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},""); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, ""); this.subtype.add(SubType.ELDRAZI); this.subtype.add(SubType.WEREWOLF); this.power = new MageInt(5); @@ -32,11 +30,12 @@ public final class ConduitOfEmrakul extends CardImpl { this.nightCard = true; // Whenever Conduit of Emrakul attacks, add {C}{C} at the beginning of your next main phase this turn. - Effect effect = new CreateDelayedTriggeredAbilityEffect( + this.addAbility(new AttacksTriggeredAbility(new CreateDelayedTriggeredAbilityEffect( new AtTheBeginOfMainPhaseDelayedTriggeredAbility( - new AddManaToManaPoolSourceControllerEffect(Mana.GenericMana(2)), false, TargetController.YOU, AtTheBeginOfMainPhaseDelayedTriggeredAbility.PhaseSelection.NEXT_MAIN_THIS_TURN)); - effect.setText("add {C}{C} at the beginning of your next main phase this turn"); - this.addAbility(new AttacksTriggeredAbility(effect, false)); + new AddManaToManaPoolSourceControllerEffect(Mana.GenericMana(2)), false, + TargetController.YOU, AtTheBeginOfMainPhaseDelayedTriggeredAbility.PhaseSelection.NEXT_MAIN_THIS_TURN + ) + ).setText("add {C}{C} at the beginning of your next main phase this turn"), false)); } private ConduitOfEmrakul(final ConduitOfEmrakul card) { diff --git a/Mage.Sets/src/mage/cards/c/ConduitOfStorms.java b/Mage.Sets/src/mage/cards/c/ConduitOfStorms.java index c0e8f602938..0fdf2d7098f 100644 --- a/Mage.Sets/src/mage/cards/c/ConduitOfStorms.java +++ b/Mage.Sets/src/mage/cards/c/ConduitOfStorms.java @@ -1,33 +1,30 @@ - package mage.cards.c; -import java.util.UUID; import mage.MageInt; import mage.Mana; import mage.abilities.common.AttacksTriggeredAbility; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.common.delayed.AtTheBeginOfMainPhaseDelayedTriggeredAbility; import mage.abilities.costs.mana.ManaCostsImpl; -import mage.abilities.effects.Effect; -import mage.abilities.effects.mana.AddManaToManaPoolSourceControllerEffect; import mage.abilities.effects.common.CreateDelayedTriggeredAbilityEffect; import mage.abilities.effects.common.TransformSourceEffect; +import mage.abilities.effects.mana.AddManaToManaPoolSourceControllerEffect; import mage.abilities.keyword.TransformAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; import mage.constants.TargetController; -import mage.constants.Zone; + +import java.util.UUID; /** - * * @author LevelX2 */ public final class ConduitOfStorms extends CardImpl { public ConduitOfStorms(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}"); this.subtype.add(SubType.WEREWOLF); this.subtype.add(SubType.HORROR); this.power = new MageInt(2); @@ -36,11 +33,13 @@ public final class ConduitOfStorms extends CardImpl { this.secondSideCardClazz = mage.cards.c.ConduitOfEmrakul.class; // Whenever Conduit of Storms attacks, add {R} at the beginning of your next main phase this turn. - Effect effect = new CreateDelayedTriggeredAbilityEffect( + this.addAbility(new AttacksTriggeredAbility(new CreateDelayedTriggeredAbilityEffect( new AtTheBeginOfMainPhaseDelayedTriggeredAbility( - new AddManaToManaPoolSourceControllerEffect(Mana.RedMana(1)), false, TargetController.YOU, AtTheBeginOfMainPhaseDelayedTriggeredAbility.PhaseSelection.NEXT_MAIN_THIS_TURN)); - effect.setText("add {R} at the beginning of your next main phase this turn"); - this.addAbility(new AttacksTriggeredAbility(effect, false)); + new AddManaToManaPoolSourceControllerEffect(Mana.RedMana(1)), false, + TargetController.YOU, AtTheBeginOfMainPhaseDelayedTriggeredAbility.PhaseSelection.NEXT_MAIN_THIS_TURN + ) + ).setText("add {R} at the beginning of your next main phase this turn"), false)); + // {3}{R}{R}: Transform Conduit of Storms. this.addAbility(new TransformAbility()); this.addAbility(new SimpleActivatedAbility(new TransformSourceEffect(), new ManaCostsImpl<>("{3}{R}{R}"))); diff --git a/Mage.Sets/src/mage/cards/d/DocentOfPerfection.java b/Mage.Sets/src/mage/cards/d/DocentOfPerfection.java index db808cdc156..129e98d02db 100644 --- a/Mage.Sets/src/mage/cards/d/DocentOfPerfection.java +++ b/Mage.Sets/src/mage/cards/d/DocentOfPerfection.java @@ -1,42 +1,40 @@ - package mage.cards.d; -import java.util.UUID; - import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SpellCastControllerTriggeredAbility; -import mage.abilities.effects.Effect; -import mage.abilities.effects.OneShotEffect; +import mage.abilities.condition.Condition; +import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition; +import mage.abilities.decorator.ConditionalOneShotEffect; +import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.TransformSourceEffect; +import mage.abilities.hint.Hint; +import mage.abilities.hint.ValueHint; import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.TransformAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.constants.Outcome; +import mage.constants.ComparisonType; import mage.constants.SubType; -import mage.constants.TargetController; -import mage.filter.FilterPermanent; -import mage.filter.FilterSpell; -import mage.filter.predicate.Predicates; -import mage.game.Game; +import mage.filter.StaticFilters; +import mage.filter.common.FilterControlledPermanent; import mage.game.permanent.token.HumanWizardToken; -import mage.players.Player; + +import java.util.UUID; /** * @author fireshoes */ public final class DocentOfPerfection extends CardImpl { - private static final FilterSpell filterSpell = new FilterSpell("an instant or sorcery spell"); - - static { - filterSpell.add(Predicates.or( - CardType.INSTANT.getPredicate(), - CardType.SORCERY.getPredicate())); - } + private static final Condition condition = new PermanentsOnTheBattlefieldCondition( + new FilterControlledPermanent(SubType.WIZARD), ComparisonType.MORE_THAN, 2 + ); + private static final Hint hint = new ValueHint( + "Wizards you control", new PermanentsOnBattlefieldCount(new FilterControlledPermanent(SubType.WIZARD)) + ); public DocentOfPerfection(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}{U}"); @@ -53,10 +51,15 @@ public final class DocentOfPerfection extends CardImpl { // Whenever you cast an instant or sorcery spell, create a 1/1 blue Human Wizard creature token. // Then if you control three or more Wizards, transform Docent of Perfection. this.addAbility(new TransformAbility()); - Effect effect = new DocentOfPerfectionEffect(); - Ability ability = new SpellCastControllerTriggeredAbility(new CreateTokenEffect(new HumanWizardToken()), filterSpell, false); - ability.addEffect(effect); - this.addAbility(ability); + Ability ability = new SpellCastControllerTriggeredAbility( + new CreateTokenEffect(new HumanWizardToken()), + StaticFilters.FILTER_SPELL_AN_INSTANT_OR_SORCERY, false + ); + ability.addEffect(new ConditionalOneShotEffect( + new TransformSourceEffect(), condition, + "Then if you control three or more Wizards, transform {this}" + )); + this.addAbility(ability.addHint(hint)); } private DocentOfPerfection(final DocentOfPerfection card) { @@ -68,38 +71,3 @@ public final class DocentOfPerfection extends CardImpl { return new DocentOfPerfection(this); } } - -class DocentOfPerfectionEffect extends OneShotEffect { - - private static final FilterPermanent filter = new FilterPermanent("Wizards"); - - static { - filter.add(SubType.WIZARD.getPredicate()); - filter.add(TargetController.YOU.getControllerPredicate()); - } - - public DocentOfPerfectionEffect() { - super(Outcome.Benefit); - staticText = "Then if you control three or more Wizards, transform {this}"; - } - - private DocentOfPerfectionEffect(final DocentOfPerfectionEffect effect) { - super(effect); - } - - @Override - public DocentOfPerfectionEffect copy() { - return new DocentOfPerfectionEffect(this); - } - - @Override - public boolean apply(Game game, Ability source) { - Player controller = game.getPlayer(source.getControllerId()); - if (controller != null) { - if (game.getBattlefield().count(filter, source.getControllerId(), source, game) >= 3) { - return new TransformSourceEffect().apply(game, source); - } - } - return false; - } -} \ No newline at end of file diff --git a/Mage.Sets/src/mage/cards/f/FinalIteration.java b/Mage.Sets/src/mage/cards/f/FinalIteration.java index 7ef4c765c72..de5fab8d202 100644 --- a/Mage.Sets/src/mage/cards/f/FinalIteration.java +++ b/Mage.Sets/src/mage/cards/f/FinalIteration.java @@ -1,43 +1,37 @@ - package mage.cards.f; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SpellCastControllerTriggeredAbility; -import mage.abilities.effects.Effect; import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.continuous.BoostControlledEffect; -import mage.abilities.effects.common.continuous.GainAbilityAllEffect; +import mage.abilities.effects.common.continuous.GainAbilityControlledEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.*; -import mage.filter.FilterSpell; -import mage.filter.common.FilterCreaturePermanent; -import mage.filter.predicate.Predicates; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.SubType; +import mage.filter.FilterPermanent; +import mage.filter.StaticFilters; import mage.game.permanent.token.HumanWizardToken; +import java.util.UUID; + /** - * * @author fireshoes */ public final class FinalIteration extends CardImpl { - private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Wizards"); - private static final FilterSpell filterSpell = new FilterSpell("an instant or sorcery spell"); + private static final FilterPermanent filter = new FilterPermanent("Wizards"); static { filter.add(SubType.WIZARD.getPredicate()); - filter.add(TargetController.YOU.getControllerPredicate()); - filterSpell.add(Predicates.or( - CardType.INSTANT.getPredicate(), - CardType.SORCERY.getPredicate())); } public FinalIteration(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},""); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, ""); this.subtype.add(SubType.ELDRAZI); this.subtype.add(SubType.INSECT); this.power = new MageInt(6); @@ -50,14 +44,19 @@ public final class FinalIteration extends CardImpl { this.addAbility(FlyingAbility.getInstance()); // Wizards you control get +2/+1 and have flying. - Ability ability = new SimpleStaticAbility(new BoostControlledEffect(2, 1, Duration.WhileOnBattlefield, filter, false)); - Effect effect = new GainAbilityAllEffect(FlyingAbility.getInstance(), Duration.WhileOnBattlefield, filter, false); - effect.setText("and have flying"); - ability.addEffect(effect); + Ability ability = new SimpleStaticAbility(new BoostControlledEffect( + 2, 1, Duration.WhileOnBattlefield, filter, false + )); + ability.addEffect(new GainAbilityControlledEffect( + FlyingAbility.getInstance(), Duration.WhileOnBattlefield, filter + ).setText("and have flying")); this.addAbility(ability); // Whenever you cast an instant or sorcery spell, create a 1/1 blue Human Wizard creature token. - this.addAbility(new SpellCastControllerTriggeredAbility(new CreateTokenEffect(new HumanWizardToken()), filterSpell, false)); + this.addAbility(new SpellCastControllerTriggeredAbility( + new CreateTokenEffect(new HumanWizardToken()), + StaticFilters.FILTER_SPELL_AN_INSTANT_OR_SORCERY, false + )); } private FinalIteration(final FinalIteration card) { diff --git a/Mage.Sets/src/mage/cards/g/GrislyAnglerfish.java b/Mage.Sets/src/mage/cards/g/GrislyAnglerfish.java index 60a4e8a6058..a8eace0c588 100644 --- a/Mage.Sets/src/mage/cards/g/GrislyAnglerfish.java +++ b/Mage.Sets/src/mage/cards/g/GrislyAnglerfish.java @@ -1,29 +1,25 @@ - package mage.cards.g; -import java.util.UUID; import mage.MageInt; -import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.mana.ManaCostsImpl; -import mage.abilities.effects.RequirementEffect; +import mage.abilities.effects.common.combat.AttacksIfAbleAllEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.constants.SubType; import mage.constants.Duration; -import mage.constants.Zone; -import mage.game.Game; -import mage.game.permanent.Permanent; +import mage.constants.SubType; +import mage.filter.StaticFilters; + +import java.util.UUID; /** - * * @author fireshoes */ public final class GrislyAnglerfish extends CardImpl { public GrislyAnglerfish(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},""); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, ""); this.subtype.add(SubType.ELDRAZI); this.subtype.add(SubType.FISH); this.power = new MageInt(4); @@ -33,7 +29,9 @@ public final class GrislyAnglerfish extends CardImpl { this.nightCard = true; // {6}: Creatures your opponents control attack this turn if able. - this.addAbility(new SimpleActivatedAbility(new GrislyAnglerfishMustAttackEffect(), new ManaCostsImpl<>("{6}"))); + this.addAbility(new SimpleActivatedAbility(new AttacksIfAbleAllEffect( + StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURES, Duration.EndOfTurn + ), new ManaCostsImpl<>("{6}"))); } private GrislyAnglerfish(final GrislyAnglerfish card) { @@ -45,39 +43,3 @@ public final class GrislyAnglerfish extends CardImpl { return new GrislyAnglerfish(this); } } - -class GrislyAnglerfishMustAttackEffect extends RequirementEffect { - - GrislyAnglerfishMustAttackEffect() { - super(Duration.EndOfTurn); - staticText = "Creatures your opponents control attack this turn if able"; - } - - private GrislyAnglerfishMustAttackEffect(final GrislyAnglerfishMustAttackEffect effect) { - super(effect); - } - - @Override - public GrislyAnglerfishMustAttackEffect copy() { - return new GrislyAnglerfishMustAttackEffect(this); - } - - @Override - public boolean applies(Permanent permanent, Ability source, Game game) { - if (game.getOpponents(source.getControllerId()).contains(permanent.getControllerId())) { - return true; - } - return false; - } - - @Override - public boolean mustAttack(Game game) { - return true; - } - - @Override - public boolean mustBlock(Game game) { - return false; - } - -} diff --git a/Mage.Sets/src/mage/cards/g/GrizzledAngler.java b/Mage.Sets/src/mage/cards/g/GrizzledAngler.java index 9b31af0fff7..dbe16de1fbc 100644 --- a/Mage.Sets/src/mage/cards/g/GrizzledAngler.java +++ b/Mage.Sets/src/mage/cards/g/GrizzledAngler.java @@ -1,23 +1,22 @@ - package mage.cards.g; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.condition.Condition; +import mage.abilities.condition.common.CardsInControllerGraveyardCondition; import mage.abilities.costs.common.TapSourceCost; -import mage.abilities.effects.OneShotEffect; +import mage.abilities.decorator.ConditionalOneShotEffect; +import mage.abilities.effects.common.MillCardsControllerEffect; import mage.abilities.effects.common.TransformSourceEffect; import mage.abilities.keyword.TransformAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.constants.Outcome; import mage.constants.SubType; -import mage.constants.Zone; +import mage.filter.FilterCard; import mage.filter.common.FilterCreatureCard; import mage.filter.predicate.mageobject.ColorlessPredicate; -import mage.game.Game; -import mage.players.Player; import java.util.UUID; @@ -26,6 +25,14 @@ import java.util.UUID; */ public final class GrizzledAngler extends CardImpl { + private static final FilterCard filter = new FilterCreatureCard(); + + static { + filter.add(ColorlessPredicate.instance); + } + + private static final Condition condition = new CardsInControllerGraveyardCondition(1, filter); + public GrizzledAngler(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}"); this.subtype.add(SubType.HUMAN); @@ -36,7 +43,11 @@ public final class GrizzledAngler extends CardImpl { // {T}: Put the top two cards of your library into your graveyard. Then if there is a colorless creature card in your graveyard, transform Grizzled Angler. this.addAbility(new TransformAbility()); - this.addAbility(new SimpleActivatedAbility(new GrizzledAnglerEffect(), new TapSourceCost())); + Ability ability = new SimpleActivatedAbility(new MillCardsControllerEffect(2), new TapSourceCost()); + ability.addEffect(new ConditionalOneShotEffect( + new TransformSourceEffect(), condition, + "Then if there is a colorless creature card in your graveyard, transform {this}" + )); } private GrizzledAngler(final GrizzledAngler card) { @@ -48,38 +59,3 @@ public final class GrizzledAngler extends CardImpl { return new GrizzledAngler(this); } } - -class GrizzledAnglerEffect extends OneShotEffect { - - private static final FilterCreatureCard filter = new FilterCreatureCard("a colorless creature card in your graveyard"); - - static { - filter.add(ColorlessPredicate.instance); - } - - public GrizzledAnglerEffect() { - super(Outcome.Benefit); - staticText = "Mill two cards. Then if there is a colorless creature card in your graveyard, transform {this}"; - } - - private GrizzledAnglerEffect(final GrizzledAnglerEffect effect) { - super(effect); - } - - @Override - public GrizzledAnglerEffect copy() { - return new GrizzledAnglerEffect(this); - } - - @Override - public boolean apply(Game game, Ability source) { - Player controller = game.getPlayer(source.getControllerId()); - if (controller != null) { - controller.millCards(2, source, game); - if (controller.getGraveyard().count(filter, source.getControllerId(), source, game) >= 1) { - return new TransformSourceEffect().apply(game, source); - } - } - return false; - } -} diff --git a/Mage.Sets/src/mage/cards/l/LoneRider.java b/Mage.Sets/src/mage/cards/l/LoneRider.java index 4043af88cec..c6450c5473a 100644 --- a/Mage.Sets/src/mage/cards/l/LoneRider.java +++ b/Mage.Sets/src/mage/cards/l/LoneRider.java @@ -3,9 +3,8 @@ package mage.cards.l; import mage.MageInt; import mage.abilities.condition.Condition; import mage.abilities.condition.common.YouGainedLifeCondition; +import mage.abilities.dynamicvalue.common.ControllerGainedLifeCount; import mage.abilities.effects.common.TransformSourceEffect; -import mage.abilities.hint.ConditionHint; -import mage.abilities.hint.Hint; import mage.abilities.keyword.FirstStrikeAbility; import mage.abilities.keyword.LifelinkAbility; import mage.abilities.keyword.TransformAbility; @@ -26,7 +25,6 @@ import java.util.UUID; public final class LoneRider extends CardImpl { private static final Condition condition = new YouGainedLifeCondition(ComparisonType.MORE_THAN, 2); - private static final Hint hint = new ConditionHint(condition); public LoneRider(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}"); @@ -47,7 +45,7 @@ public final class LoneRider extends CardImpl { this.addAbility(new TransformAbility()); this.addAbility(new BeginningOfEndStepTriggeredAbility( TargetController.NEXT, new TransformSourceEffect(), false - ).withInterveningIf(condition).addHint(hint), new PlayerGainedLifeWatcher()); + ).withInterveningIf(condition).addHint(ControllerGainedLifeCount.getHint()), new PlayerGainedLifeWatcher()); } private LoneRider(final LoneRider card) { diff --git a/Mage.Sets/src/mage/cards/s/SmolderingWerewolf.java b/Mage.Sets/src/mage/cards/s/SmolderingWerewolf.java index 4edc054e0f8..d20600ca9b2 100644 --- a/Mage.Sets/src/mage/cards/s/SmolderingWerewolf.java +++ b/Mage.Sets/src/mage/cards/s/SmolderingWerewolf.java @@ -1,14 +1,10 @@ - package mage.cards.s; -import java.util.UUID; - import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.mana.ManaCostsImpl; -import mage.abilities.effects.Effect; import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.effects.common.TransformSourceEffect; import mage.abilities.keyword.TransformAbility; @@ -16,9 +12,10 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; -import mage.constants.Zone; import mage.target.common.TargetCreaturePermanent; +import java.util.UUID; + /** * @author fireshoes */ @@ -34,9 +31,7 @@ public final class SmolderingWerewolf extends CardImpl { this.secondSideCardClazz = mage.cards.e.EruptingDreadwolf.class; // When Smoldering Werewolf enters the battlefield, it deals 1 damage to each of up to two target creatures. - Effect effect = new DamageTargetEffect(1); - effect.setText("it deals 1 damage to each of up to two target creatures"); - Ability ability = new EntersBattlefieldTriggeredAbility(effect, false); + Ability ability = new EntersBattlefieldTriggeredAbility(new DamageTargetEffect(1, "it")); ability.addTarget(new TargetCreaturePermanent(0, 2)); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/v/VoraciousReader.java b/Mage.Sets/src/mage/cards/v/VoraciousReader.java index 55306887a45..9956bc0cc68 100644 --- a/Mage.Sets/src/mage/cards/v/VoraciousReader.java +++ b/Mage.Sets/src/mage/cards/v/VoraciousReader.java @@ -1,7 +1,6 @@ package mage.cards.v; -import java.util.UUID; import mage.MageInt; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.common.cost.SpellsCostReductionControllerEffect; @@ -10,26 +9,20 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; -import mage.constants.Zone; import mage.filter.FilterCard; -import mage.filter.predicate.Predicates; +import mage.filter.common.FilterInstantOrSorceryCard; + +import java.util.UUID; /** - * * @author fireshoes */ public final class VoraciousReader extends CardImpl { - private static final FilterCard filter = new FilterCard("Instant and sorcery spells"); - static { - filter.add(Predicates.or( - CardType.INSTANT.getPredicate(), - CardType.SORCERY.getPredicate() - )); - } + private static final FilterCard filter = new FilterInstantOrSorceryCard("Instant and sorcery spells"); public VoraciousReader(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},""); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, ""); this.subtype.add(SubType.ELDRAZI); this.subtype.add(SubType.HOMUNCULUS); this.power = new MageInt(3);