diff --git a/Mage.Sets/src/mage/cards/a/ArgentDais.java b/Mage.Sets/src/mage/cards/a/ArgentDais.java index 2822c82e27f..e2e8a47bda0 100644 --- a/Mage.Sets/src/mage/cards/a/ArgentDais.java +++ b/Mage.Sets/src/mage/cards/a/ArgentDais.java @@ -31,7 +31,7 @@ import java.util.UUID; */ public final class ArgentDais extends CardImpl { - private static final FilterNonlandPermanent filter = new FilterNonlandPermanent("another nonland permanent"); + private static final FilterNonlandPermanent filter = new FilterNonlandPermanent("another target nonland permanent"); static { filter.add(AnotherPredicate.instance); diff --git a/Mage.Sets/src/mage/cards/a/AzlaskTheSwellingScourge.java b/Mage.Sets/src/mage/cards/a/AzlaskTheSwellingScourge.java index bf164ff0536..4fd784ed881 100644 --- a/Mage.Sets/src/mage/cards/a/AzlaskTheSwellingScourge.java +++ b/Mage.Sets/src/mage/cards/a/AzlaskTheSwellingScourge.java @@ -54,7 +54,7 @@ public final class AzlaskTheSwellingScourge extends CardImpl { // Scions and Spawns you control gain indestructible and annihilator 1 until end of turn. Ability ability = new SimpleActivatedAbility(new BoostControlledEffect( SourceControllerCountersCount.EXPERIENCE, SourceControllerCountersCount.EXPERIENCE, Duration.EndOfTurn - ).setText("creatures you control get +X/+X until end of turn, where X is the number of the experience counters you have."), new ManaCostsImpl<>("{W}{U}{B}{R}{G}")); + ).setText("creatures you control get +X/+X until end of turn, where X is the number of experience counters you have."), new ManaCostsImpl<>("{W}{U}{B}{R}{G}")); ability.addEffect(new GainAbilityControlledEffect(IndestructibleAbility.getInstance(), Duration.EndOfTurn, filter2) .setText("Scions and Spawns you control gain indestructible")); ability.addEffect(new GainAbilityControlledEffect(new AnnihilatorAbility(1), Duration.EndOfTurn, filter2) diff --git a/Mage.Sets/src/mage/cards/b/BoggartTrawler.java b/Mage.Sets/src/mage/cards/b/BoggartTrawler.java index 6850cfcc51d..206a9fb790b 100644 --- a/Mage.Sets/src/mage/cards/b/BoggartTrawler.java +++ b/Mage.Sets/src/mage/cards/b/BoggartTrawler.java @@ -1,6 +1,5 @@ package mage.cards.b; -import java.util.UUID; import mage.MageInt; import mage.abilities.common.AsEntersBattlefieldAbility; import mage.abilities.common.EntersBattlefieldTriggeredAbility; @@ -8,22 +7,23 @@ import mage.abilities.costs.common.PayLifeCost; import mage.abilities.effects.common.ExileGraveyardAllTargetPlayerEffect; import mage.abilities.effects.common.TapSourceUnlessPaysEffect; import mage.abilities.mana.BlackManaAbility; -import mage.constants.SubType; -import mage.target.TargetPlayer; import mage.cards.CardSetInfo; import mage.cards.ModalDoubleFacedCard; import mage.constants.CardType; +import mage.constants.SubType; +import mage.target.TargetPlayer; + +import java.util.UUID; /** - * * @author grimreap124 */ public final class BoggartTrawler extends ModalDoubleFacedCard { public BoggartTrawler(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, - new CardType[] { CardType.CREATURE }, new SubType[] { SubType.GOBLIN }, "{2}{B}", - "Boggart Bog", new CardType[] { CardType.LAND }, new SubType[] {}, ""); + new CardType[]{CardType.CREATURE}, new SubType[]{SubType.GOBLIN}, "{2}{B}", + "Boggart Bog", new CardType[]{CardType.LAND}, new SubType[]{}, ""); this.getLeftHalfCard().setPT(new MageInt(3), new MageInt(1)); @@ -36,7 +36,7 @@ public final class BoggartTrawler extends ModalDoubleFacedCard { // As Boggart Bog enters the battlefield, you may pay 3 life. If you don’t, it enters the battlefield tapped. this.getRightHalfCard() .addAbility(new AsEntersBattlefieldAbility(new TapSourceUnlessPaysEffect(new PayLifeCost(3)), - "you may pay 3 life. If you don’t, it enters the battlefield tapped")); + "you may pay 3 life. If you don't, it enters the battlefield tapped")); this.getRightHalfCard().addAbility(new BlackManaAbility()); } diff --git a/Mage.Sets/src/mage/cards/b/BreakerOfCreation.java b/Mage.Sets/src/mage/cards/b/BreakerOfCreation.java index 431d94cb5b8..e1087926971 100644 --- a/Mage.Sets/src/mage/cards/b/BreakerOfCreation.java +++ b/Mage.Sets/src/mage/cards/b/BreakerOfCreation.java @@ -38,7 +38,10 @@ public final class BreakerOfCreation extends CardImpl { this.toughness = new MageInt(4); // When you cast this spell, you gain 1 life for each colorless permanent you control. - this.addAbility(new CastSourceTriggeredAbility(new GainLifeEffect(xValue))); + this.addAbility(new CastSourceTriggeredAbility( + new GainLifeEffect(xValue) + .setText("you gain 1 life for each colorless permanent you control") + )); // Hexproof from each color this.addAbility(HexproofFromEachColorAbility.getInstance()); diff --git a/Mage.Sets/src/mage/cards/c/CaythFamedMechanist.java b/Mage.Sets/src/mage/cards/c/CaythFamedMechanist.java index 770109a854c..10e354ebb51 100644 --- a/Mage.Sets/src/mage/cards/c/CaythFamedMechanist.java +++ b/Mage.Sets/src/mage/cards/c/CaythFamedMechanist.java @@ -41,7 +41,7 @@ public final class CaythFamedMechanist extends CardImpl { // Other nontoken creatures you control have fabricate 1. this.addAbility(new SimpleStaticAbility(new GainAbilityControlledEffect( new FabricateAbility(1), Duration.WhileOnBattlefield, - StaticFilters.FILTER_CREATURES_NON_TOKEN + StaticFilters.FILTER_CREATURES_NON_TOKEN, true ))); // {2}, {T}: Choose one -- diff --git a/Mage.Sets/src/mage/cards/c/ConsumingCorruption.java b/Mage.Sets/src/mage/cards/c/ConsumingCorruption.java index 949e6e40dc7..77647678405 100644 --- a/Mage.Sets/src/mage/cards/c/ConsumingCorruption.java +++ b/Mage.Sets/src/mage/cards/c/ConsumingCorruption.java @@ -27,7 +27,7 @@ public final class ConsumingCorruption extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{B}{B}"); // Consuming Corruption deals X damage to target creature or planeswalker and you gain X life, where X is the number of Swamps you control. - this.getSpellAbility().addEffect(new DamageTargetEffect(xValue).setText("deals X damage to target creature or planeswalker")); + this.getSpellAbility().addEffect(new DamageTargetEffect(xValue).setText("{this} deals X damage to target creature or planeswalker")); this.getSpellAbility().addEffect(new GainLifeEffect(xValue).setText("and you gain X life, where X is the number of Swamps you control")); this.getSpellAbility().addTarget(new TargetCreatureOrPlaneswalker()); this.getSpellAbility().addHint(hint); diff --git a/Mage.Sets/src/mage/cards/f/FlareOfFortitude.java b/Mage.Sets/src/mage/cards/f/FlareOfFortitude.java index b42eb33728a..6905587e2af 100644 --- a/Mage.Sets/src/mage/cards/f/FlareOfFortitude.java +++ b/Mage.Sets/src/mage/cards/f/FlareOfFortitude.java @@ -39,8 +39,8 @@ public final class FlareOfFortitude extends CardImpl { // Until end of turn, your life total can't change, and permanents you control gain hexproof and indestructible. this.getSpellAbility().addEffect( - new LifeTotalCantChangeControllerEffect(Duration.UntilYourNextTurn) - .setText("Until your next turn, your life total can't change") + new LifeTotalCantChangeControllerEffect(Duration.EndOfTurn) + .setText("Until end of turn, your life total can't change") ); this.getSpellAbility().addEffect( new GainAbilityAllEffect( diff --git a/Mage.Sets/src/mage/cards/f/FlareOfMalice.java b/Mage.Sets/src/mage/cards/f/FlareOfMalice.java index dcda6cf7661..d660ad71f6a 100644 --- a/Mage.Sets/src/mage/cards/f/FlareOfMalice.java +++ b/Mage.Sets/src/mage/cards/f/FlareOfMalice.java @@ -44,7 +44,7 @@ public final class FlareOfMalice extends CardImpl { this.addAbility(new AlternativeCostSourceAbility(new SacrificeTargetCost(filter)).setRuleAtTheTop(true)); // Each opponent sacrifices a creature or planeswalker with the greatest converted mana value among creatures and planeswalkers they control. - this.getSpellAbility().addEffect(new SacrificeOpponentsEffect(filter)); + this.getSpellAbility().addEffect(new SacrificeOpponentsEffect(filterCreatureOrPlaneswalker)); } private FlareOfMalice(final FlareOfMalice card) { diff --git a/Mage.Sets/src/mage/cards/h/HideousTaskmaster.java b/Mage.Sets/src/mage/cards/h/HideousTaskmaster.java index 62215d0016e..36dca80d1c8 100644 --- a/Mage.Sets/src/mage/cards/h/HideousTaskmaster.java +++ b/Mage.Sets/src/mage/cards/h/HideousTaskmaster.java @@ -1,33 +1,33 @@ package mage.cards.h; -import java.util.UUID; import mage.MageInt; -import mage.constants.SubType; import mage.abilities.Ability; import mage.abilities.effects.common.CastSourceTriggeredAbility; import mage.abilities.effects.common.UntapTargetEffect; import mage.abilities.effects.common.continuous.GainAbilityTargetEffect; import mage.abilities.effects.common.continuous.GainControlTargetEffect; -import mage.abilities.keyword.DevoidAbility; -import mage.abilities.keyword.TrampleAbility; -import mage.abilities.keyword.HasteAbility; import mage.abilities.keyword.AnnihilatorAbility; +import mage.abilities.keyword.DevoidAbility; +import mage.abilities.keyword.HasteAbility; +import mage.abilities.keyword.TrampleAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.target.common.TargetCreaturePermanent; import mage.target.targetadjustment.EachOpponentPermanentTargetsAdjuster; import mage.target.targetpointer.EachTargetPointer; +import java.util.UUID; + /** - * * @author grimreap124 */ public final class HideousTaskmaster extends CardImpl { public HideousTaskmaster(UUID ownerId, CardSetInfo setInfo) { - super(ownerId, setInfo, new CardType[] { CardType.CREATURE }, "{6}{R}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{6}{R}"); this.subtype.add(SubType.ELDRAZI); this.power = new MageInt(7); @@ -48,10 +48,19 @@ public final class HideousTaskmaster extends CardImpl { ability.addEffect(new GainAbilityTargetEffect(TrampleAbility.getInstance(), Duration.EndOfTurn) .setTargetPointer(new EachTargetPointer()).setText("They gain trample")); ability.addEffect(new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.EndOfTurn) - .setTargetPointer(new EachTargetPointer()).setText("haste")); + .setTargetPointer(new EachTargetPointer()).setText(", haste")); ability.addEffect(new GainAbilityTargetEffect(new AnnihilatorAbility(1), Duration.EndOfTurn) - .setTargetPointer(new EachTargetPointer()).setText("and annihilator 1 until end of turn")); + .setTargetPointer(new EachTargetPointer()).setText(", and annihilator 1 until end of turn")); this.addAbility(ability); + + // Trample + this.addAbility(TrampleAbility.getInstance()); + + // Haste + this.addAbility(HasteAbility.getInstance()); + + // Annihilator 1 + this.addAbility(new AnnihilatorAbility(1)); } private HideousTaskmaster(final HideousTaskmaster card) { diff --git a/Mage.Sets/src/mage/cards/k/KamiOfJealousThirst.java b/Mage.Sets/src/mage/cards/k/KamiOfJealousThirst.java index 6cf51019c8f..fcd4bf15822 100644 --- a/Mage.Sets/src/mage/cards/k/KamiOfJealousThirst.java +++ b/Mage.Sets/src/mage/cards/k/KamiOfJealousThirst.java @@ -41,7 +41,7 @@ public final class KamiOfJealousThirst extends CardImpl { ); ability.addEffect(new GainLifeEffect(2).concatBy("and")); ability.setMaxActivationsPerTurn(1); - ability.addEffect(new InfoEffect("This ability costs {4}{B} less to activate if you've drawn three or more cards this turn.")); + ability.addEffect(new InfoEffect("This ability costs {4}{B} less to activate if you've drawn three or more cards this turn. Activate only once each turn.")); ability.setCostAdjuster(KamiOfJealousThirstAdjuster.instance); this.addAbility(ability.addHint(CardsDrawnThisTurnDynamicValue.getHint())); } diff --git a/Mage.Sets/src/mage/cards/r/RecklessPyrosurfer.java b/Mage.Sets/src/mage/cards/r/RecklessPyrosurfer.java index 2ad8abe467b..bc440bdabe2 100644 --- a/Mage.Sets/src/mage/cards/r/RecklessPyrosurfer.java +++ b/Mage.Sets/src/mage/cards/r/RecklessPyrosurfer.java @@ -8,6 +8,7 @@ import mage.abilities.keyword.HasteAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.Duration; import mage.constants.SubType; import java.util.UUID; @@ -29,7 +30,7 @@ public final class RecklessPyrosurfer extends CardImpl { this.addAbility(HasteAbility.getInstance()); // Landfall -- Whenever a land enters the battlefield under your control, Reckless Pyrosurfer gains battle cry until end of turn. - this.addAbility(new LandfallAbility(new GainAbilitySourceEffect(new BattleCryAbility()))); + this.addAbility(new LandfallAbility(new GainAbilitySourceEffect(new BattleCryAbility(), Duration.EndOfTurn))); } private RecklessPyrosurfer(final RecklessPyrosurfer card) { diff --git a/Mage.Sets/src/mage/cards/r/RipplesOfUndeath.java b/Mage.Sets/src/mage/cards/r/RipplesOfUndeath.java index e59522fc3df..e29fd86a830 100644 --- a/Mage.Sets/src/mage/cards/r/RipplesOfUndeath.java +++ b/Mage.Sets/src/mage/cards/r/RipplesOfUndeath.java @@ -31,7 +31,7 @@ public final class RipplesOfUndeath extends CardImpl { public RipplesOfUndeath(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{B}"); - // At the beginning of your precombat main phase, mill three cards. Then you may pay {1} and 3 life. If you do, put a card from among those cards into your hand. + // At the beginning of your precombat main phase, mill three cards. Then you may pay {1} and 3 life. If you do, put one of the cards milled this way into your hand. this.addAbility(new BeginningOfPreCombatMainTriggeredAbility( new RipplesOfUndeathEffect(), TargetController.YOU, false )); @@ -51,7 +51,7 @@ class RipplesOfUndeathEffect extends OneShotEffect { RipplesOfUndeathEffect() { super(Outcome.Benefit); - staticText = "mill three cards. Then you may pay {1} and 3 life. If you do, put a card from among those cards into your hand."; + staticText = "mill three cards. Then you may pay {1} and 3 life. If you do, put one of the cards milled this way into your hand."; } private RipplesOfUndeathEffect(final RipplesOfUndeathEffect effect) { diff --git a/Mage.Sets/src/mage/cards/s/SorinRavenousNeonate.java b/Mage.Sets/src/mage/cards/s/SorinRavenousNeonate.java index 7e7d3e3dff4..e294dad377c 100644 --- a/Mage.Sets/src/mage/cards/s/SorinRavenousNeonate.java +++ b/Mage.Sets/src/mage/cards/s/SorinRavenousNeonate.java @@ -69,7 +69,11 @@ public final class SorinRavenousNeonate extends CardImpl { this.addAbility(new LoyaltyAbility(new CreateTokenEffect(new FoodToken()), 2)); // -1: Sorin, Ravenous Neonate deals damage equal to the amount of life you gained this turn to any target. - Ability ability = new LoyaltyAbility(new DamageTargetEffect(ControllerGainedLifeCount.instance), -1); + Ability ability = new LoyaltyAbility( + new DamageTargetEffect(ControllerGainedLifeCount.instance) + .setText("{this} deals damage equal to the amount of life you gained this turn to any target"), + -1 + ); ability.addTarget(new TargetAnyTarget()); this.addAbility(ability.addHint(ControllerGainedLifeCount.getHint()), new PlayerGainedLifeWatcher()); diff --git a/Mage.Sets/src/mage/cards/s/StaticPrison.java b/Mage.Sets/src/mage/cards/s/StaticPrison.java index 5a09ab19deb..96284bd5da1 100644 --- a/Mage.Sets/src/mage/cards/s/StaticPrison.java +++ b/Mage.Sets/src/mage/cards/s/StaticPrison.java @@ -27,9 +27,7 @@ public final class StaticPrison extends CardImpl { // When Static Prison enters the battlefield, exile target nonland permanent an opponent controls until Static Prison leaves the battlefield. You get {E}{E}. Ability ability = new EntersBattlefieldTriggeredAbility(new ExileUntilSourceLeavesEffect()); ability.addEffect(new GetEnergyCountersControllerEffect(2)); - ability.addTarget(new TargetPermanent( - 0, 1, StaticFilters.FILTER_OPPONENTS_PERMANENT_NON_LAND - )); + ability.addTarget(new TargetPermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_NON_LAND)); this.addAbility(ability); // At the beginning of your precombat main phase, sacrifice Static Prison unless you pay {E}. diff --git a/Mage.Sets/src/mage/cards/s/SuppressionRay.java b/Mage.Sets/src/mage/cards/s/SuppressionRay.java index 0364315a1b7..476e96b6dd7 100644 --- a/Mage.Sets/src/mage/cards/s/SuppressionRay.java +++ b/Mage.Sets/src/mage/cards/s/SuppressionRay.java @@ -76,7 +76,7 @@ class SuppressionRayTargetEffect extends OneShotEffect { SuppressionRayTargetEffect() { super(Outcome.Tap); - staticText = "Tap all creatures target player controls." + staticText = "Tap all creatures target player controls. " + "You may pay X {E}, then choose up to X creatures tapped this way. " + "Put a stun counter on each of them."; } diff --git a/Mage.Sets/src/mage/cards/t/TheNecrobloom.java b/Mage.Sets/src/mage/cards/t/TheNecrobloom.java index d8bcf612d77..7604a71686b 100644 --- a/Mage.Sets/src/mage/cards/t/TheNecrobloom.java +++ b/Mage.Sets/src/mage/cards/t/TheNecrobloom.java @@ -1,6 +1,5 @@ package mage.cards.t; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.LandfallAbility; @@ -11,24 +10,25 @@ import mage.abilities.effects.ContinuousEffectImpl; import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.keyword.DredgeAbility; import mage.cards.Card; -import mage.constants.*; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.*; import mage.filter.StaticFilters; import mage.game.Game; import mage.game.permanent.token.PlantToken; import mage.game.permanent.token.ZombieToken; import mage.players.Player; +import java.util.UUID; + /** - * * @author Grath */ public final class TheNecrobloom extends CardImpl { public TheNecrobloom(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}{B}{G}"); - + this.supertype.add(SuperType.LEGENDARY); this.subtype.add(SubType.PLANT); this.power = new MageInt(2); @@ -41,7 +41,7 @@ public final class TheNecrobloom extends CardImpl { new CreateTokenEffect(new ZombieToken()), new CreateTokenEffect(new PlantToken()), TheNecrobloomCondition.instance, "create a 0/1 green Plant creature token. If you control " + - "seven or more lands with different names, create 2/2 black Zombie creature token instead" + "seven or more lands with different names, create a 2/2 black Zombie creature token instead" ))); // Land cards in your graveyard have dredge 2. diff --git a/Mage.Sets/src/mage/cards/t/ThrabenCharm.java b/Mage.Sets/src/mage/cards/t/ThrabenCharm.java index 7c6e4753ea7..cf42b1c9525 100644 --- a/Mage.Sets/src/mage/cards/t/ThrabenCharm.java +++ b/Mage.Sets/src/mage/cards/t/ThrabenCharm.java @@ -38,7 +38,7 @@ public final class ThrabenCharm extends CardImpl { // Choose one -- // * Thraben Charm deals damage equal to twice the number of creatures you control to target creature. this.getSpellAbility().addEffect(new DamageTargetEffect(xValue) - .setText("{this} deals damage equal to the number of creatures you control to target creature or planeswalker")); + .setText("{this} deals damage equal to twice the number of creatures you control to target creature")); this.getSpellAbility().addTarget(new TargetCreaturePermanent()); this.getSpellAbility().addHint(CreaturesYouControlHint.instance); diff --git a/Mage.Sets/src/mage/cards/t/TritonWavebreaker.java b/Mage.Sets/src/mage/cards/t/TritonWavebreaker.java index d43595b8cc3..bdee57e59d3 100644 --- a/Mage.Sets/src/mage/cards/t/TritonWavebreaker.java +++ b/Mage.Sets/src/mage/cards/t/TritonWavebreaker.java @@ -6,7 +6,7 @@ import mage.abilities.common.SimpleStaticAbility; import mage.abilities.condition.Condition; import mage.abilities.condition.common.SourceMatchesFilterCondition; import mage.abilities.decorator.ConditionalContinuousEffect; -import mage.abilities.effects.common.continuous.BoostEquippedEffect; +import mage.abilities.effects.common.continuous.BoostEnchantedEffect; import mage.abilities.effects.common.continuous.GainAbilityAttachedEffect; import mage.abilities.effects.common.continuous.GainAbilitySourceEffect; import mage.abilities.keyword.BestowAbility; @@ -46,7 +46,7 @@ public final class TritonWavebreaker extends CardImpl { ))); // Enchanted creature gets +1/+1 and has prowess. - Ability ability = new SimpleStaticAbility(new BoostEquippedEffect(1, 1)); + Ability ability = new SimpleStaticAbility(new BoostEnchantedEffect(1, 1)); ability.addEffect(new GainAbilityAttachedEffect( new ProwessAbility(), AttachmentType.AURA ).setText("and has prowess")); diff --git a/Mage.Sets/src/mage/cards/w/WhiteOrchidPhantom.java b/Mage.Sets/src/mage/cards/w/WhiteOrchidPhantom.java index 087ba51995c..bf99a0e4444 100644 --- a/Mage.Sets/src/mage/cards/w/WhiteOrchidPhantom.java +++ b/Mage.Sets/src/mage/cards/w/WhiteOrchidPhantom.java @@ -36,7 +36,7 @@ public final class WhiteOrchidPhantom extends CardImpl { // When White Orchid Phantom enters the battlefield, destroy up to one target nonbasic land. Its controller may search their library for a basic land card, put it onto the battlefield tapped, then shuffle. Ability ability = new EntersBattlefieldTriggeredAbility(new DestroyTargetEffect()); - ability.addTarget(new TargetNonBasicLandPermanent()); + ability.addTarget(new TargetNonBasicLandPermanent(0, 1)); ability.addEffect(new SearchLibraryPutInPlayTargetControllerEffect(true)); this.addAbility(ability); } diff --git a/Mage/src/main/java/mage/target/common/TargetNonBasicLandPermanent.java b/Mage/src/main/java/mage/target/common/TargetNonBasicLandPermanent.java index 23de826f4c9..8d131f27fd2 100644 --- a/Mage/src/main/java/mage/target/common/TargetNonBasicLandPermanent.java +++ b/Mage/src/main/java/mage/target/common/TargetNonBasicLandPermanent.java @@ -11,10 +11,18 @@ import mage.filter.predicate.Predicates; */ public class TargetNonBasicLandPermanent extends TargetLandPermanent { + private static final FilterLandPermanent filter = new FilterLandPermanent("nonbasic land"); + + static { + filter.add(Predicates.not(SuperType.BASIC.getPredicate())); + } + public TargetNonBasicLandPermanent() { - this.filter = new FilterLandPermanent(); - this.filter.add(Predicates.not(SuperType.BASIC.getPredicate())); - this.targetName = "nonbasic land"; + this(1, 1); + } + + public TargetNonBasicLandPermanent(int minNumTargets, int maxNumTargets) { + super(minNumTargets, maxNumTargets, filter, false); } protected TargetNonBasicLandPermanent(final TargetNonBasicLandPermanent target) {