remove unnecessary filter constructors from TargetLandPermanent

This commit is contained in:
theelk801 2025-05-27 21:54:34 -04:00
parent abb88e9527
commit 78c8686876
35 changed files with 310 additions and 354 deletions

View file

@ -1,8 +1,5 @@
package mage.cards.a;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.SimpleActivatedAbility;
@ -12,30 +9,29 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Zone;
import mage.filter.common.FilterLandPermanent;
import mage.target.common.TargetLandPermanent;
import mage.filter.FilterPermanent;
import mage.target.TargetPermanent;
import java.util.UUID;
/**
*
* @author BetaSteward_at_googlemail.com
*/
public final class ArborElf extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent(SubType.FOREST, "Forest");
private static final FilterPermanent filter = new FilterPermanent(SubType.FOREST, "Forest");
public ArborElf(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}");
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{G}");
this.subtype.add(SubType.ELF);
this.subtype.add(SubType.DRUID);
this.power = new MageInt(1);
this.toughness = new MageInt(1);
// (T): Untap target Forest.
Ability ability = new SimpleActivatedAbility(new UntapTargetEffect(), new TapSourceCost());
TargetLandPermanent target = new TargetLandPermanent(filter);
ability.addTarget(target);
ability.addTarget(new TargetPermanent(filter));
this.addAbility(ability);
}
@ -47,5 +43,4 @@ public final class ArborElf extends CardImpl {
public ArborElf copy() {
return new ArborElf(this);
}
}

View file

@ -1,9 +1,6 @@
package mage.cards.a;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.common.AttachEffect;
import mage.abilities.effects.common.continuous.BecomesCreatureAttachedEffect;
@ -11,37 +8,38 @@ import mage.abilities.keyword.EnchantAbility;
import mage.abilities.keyword.HasteAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
import mage.filter.common.FilterLandPermanent;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.Outcome;
import mage.constants.SubType;
import mage.filter.FilterPermanent;
import mage.game.permanent.token.TokenImpl;
import mage.target.TargetPermanent;
import mage.target.common.TargetLandPermanent;
import java.util.UUID;
/**
*
* @author jeffwadsworth
*/
public final class AwakenTheAncient extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent(SubType.MOUNTAIN, "Mountain");
private static final FilterPermanent filter = new FilterPermanent(SubType.MOUNTAIN, "Mountain");
public AwakenTheAncient(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{R}{R}{R}");
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{R}{R}{R}");
this.subtype.add(SubType.AURA);
// Enchant Mountain
TargetPermanent auraTarget = new TargetLandPermanent(filter);
TargetPermanent auraTarget = new TargetPermanent(filter);
this.getSpellAbility().addTarget(auraTarget);
this.getSpellAbility().addEffect(new AttachEffect(Outcome.PutCreatureInPlay));
Ability ability = new EnchantAbility(auraTarget);
this.addAbility(ability);
this.addAbility(new EnchantAbility(auraTarget));
// Enchanted Mountain is a 7/7 red Giant creature with haste. It's still a land.
Ability ability2 = new SimpleStaticAbility(new BecomesCreatureAttachedEffect(
new GiantToken(), "Enchanted Mountain is a 7/7 red Giant creature with haste. It's still a land", Duration.WhileOnBattlefield, BecomesCreatureAttachedEffect.LoseType.COLOR));
this.addAbility(ability2);
this.addAbility(new SimpleStaticAbility(new BecomesCreatureAttachedEffect(
new GiantToken(), "Enchanted Mountain is a 7/7 red Giant creature with haste. It's still a land",
Duration.WhileOnBattlefield, BecomesCreatureAttachedEffect.LoseType.COLOR
)));
}
private AwakenTheAncient(final AwakenTheAncient card) {

View file

@ -1,32 +1,29 @@
package mage.cards.a;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.Mode;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.effects.common.continuous.BecomesCreatureTargetEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
import mage.filter.common.FilterLandPermanent;
import mage.filter.FilterPermanent;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.game.permanent.token.TokenImpl;
import mage.target.common.TargetLandPermanent;
import mage.target.TargetPermanent;
import java.util.UUID;
/**
*
* @author BetaSteward_at_googlemail.com
*/
public final class AwakenerDruid extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent(SubType.FOREST, "Forest");
private static final FilterPermanent filter = new FilterPermanent(SubType.FOREST, "Forest");
public AwakenerDruid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}");
this.subtype.add(SubType.HUMAN);
this.subtype.add(SubType.DRUID);
@ -35,7 +32,7 @@ public final class AwakenerDruid extends CardImpl {
// When Awakener Druid enters the battlefield, target Forest becomes a 4/5 green Treefolk creature for as long as Awakener Druid remains on the battlefield. It's still a land.
Ability ability = new EntersBattlefieldTriggeredAbility(new AwakenerDruidBecomesCreatureEffect(), false);
ability.addTarget(new TargetLandPermanent(filter));
ability.addTarget(new TargetPermanent(filter));
this.addAbility(ability);
}
@ -87,6 +84,7 @@ class AwakenerDruidToken extends TokenImpl {
power = new MageInt(4);
toughness = new MageInt(5);
}
private AwakenerDruidToken(final AwakenerDruidToken token) {
super(token);
}

View file

@ -12,12 +12,13 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.choices.Choice;
import mage.constants.*;
import mage.filter.FilterPermanent;
import mage.filter.common.FilterLandPermanent;
import mage.filter.predicate.permanent.TappedPredicate;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.players.Player;
import mage.target.common.TargetLandPermanent;
import mage.target.TargetPermanent;
import java.util.*;
@ -26,7 +27,7 @@ import java.util.*;
*/
public final class BenthicExplorers extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent("tapped land an opponent controls");
private static final FilterPermanent filter = new FilterLandPermanent("tapped land an opponent controls");
static {
filter.add(TargetController.OPPONENT.getControllerPredicate());
@ -43,9 +44,7 @@ public final class BenthicExplorers extends CardImpl {
// {T}, Untap a tapped land an opponent controls: Add one mana of any type that land could produce.
Ability ability = new BenthicExplorersManaAbility();
ability.addCost(new UntapTargetCost(
new TargetLandPermanent(filter)
));
ability.addCost(new UntapTargetCost(new TargetPermanent(filter)));
this.addAbility(ability);
}

View file

@ -9,12 +9,13 @@ import mage.constants.CardType;
import mage.constants.Outcome;
import mage.constants.SubType;
import mage.constants.Zone;
import mage.filter.FilterPermanent;
import mage.filter.common.FilterLandPermanent;
import mage.filter.predicate.Predicates;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.players.Player;
import mage.target.common.TargetLandPermanent;
import mage.target.TargetPermanent;
import java.util.UUID;
@ -23,7 +24,7 @@ import java.util.UUID;
*/
public final class ChokingSands extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent("non-Swamp land");
private static final FilterPermanent filter = new FilterLandPermanent("non-Swamp land");
static {
filter.add(Predicates.not(SubType.SWAMP.getPredicate()));
@ -34,7 +35,7 @@ public final class ChokingSands extends CardImpl {
// Destroy target non-Swamp land.
this.getSpellAbility().addEffect(new DestroyTargetEffect());
this.getSpellAbility().addTarget(new TargetLandPermanent(filter));
this.getSpellAbility().addTarget(new TargetPermanent(filter));
// If that land was nonbasic, Choking Sands deals 2 damage to the land's controller.
this.getSpellAbility().addEffect(new ChokingSandsEffect());
@ -54,7 +55,7 @@ class ChokingSandsEffect extends OneShotEffect {
ChokingSandsEffect() {
super(Outcome.Damage);
this.staticText = "If that land was nonbasic, Choking Sands deals 2 damage to the land's controller";
this.staticText = "If that land was nonbasic, {this} deals 2 damage to the land's controller";
}
private ChokingSandsEffect(final ChokingSandsEffect effect) {

View file

@ -1,4 +1,3 @@
package mage.cards.c;
import mage.abilities.effects.common.DamageTargetControllerEffect;
@ -7,31 +6,30 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.filter.common.FilterLandPermanent;
import mage.filter.FilterPermanent;
import mage.filter.predicate.Predicates;
import mage.target.common.TargetLandPermanent;
import mage.target.TargetPermanent;
import java.util.UUID;
/**
*
* @author dustinconrad
*/
public final class Cryoclasm extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent("Plains or Island");
private static final FilterPermanent filter = new FilterPermanent("Plains or Island");
static {
filter.add(Predicates.or(SubType.PLAINS.getPredicate(), SubType.ISLAND.getPredicate()));
}
public Cryoclasm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{R}");
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{R}");
// Destroy target Plains or Island. Cryoclasm deals 3 damage to that land's controller.
this.getSpellAbility().addEffect(new DestroyTargetEffect());
this.getSpellAbility().addEffect(new DamageTargetControllerEffect(3, "land"));
this.getSpellAbility().addTarget(new TargetLandPermanent(filter));
this.getSpellAbility().addTarget(new TargetPermanent(filter));
}

View file

@ -18,6 +18,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
import mage.counters.CounterType;
import mage.filter.FilterPermanent;
import mage.filter.common.FilterLandPermanent;
import mage.filter.predicate.Predicates;
import mage.filter.predicate.permanent.PermanentIdPredicate;
@ -25,7 +26,7 @@ import mage.game.Game;
import mage.game.events.GameEvent;
import mage.game.permanent.Permanent;
import mage.players.Player;
import mage.target.common.TargetLandPermanent;
import mage.target.TargetPermanent;
import mage.target.targetpointer.FixedTarget;
import mage.watchers.Watcher;
@ -36,7 +37,7 @@ import java.util.*;
*/
public final class CyclopeanTomb extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent();
private static final FilterPermanent filter = new FilterLandPermanent();
static {
filter.add(Predicates.not(SubType.SWAMP.getPredicate()));
@ -48,7 +49,7 @@ public final class CyclopeanTomb extends CardImpl {
// {2}, {tap}: Put a mire counter on target non-Swamp land. That land is a Swamp for as long as it has a mire counter on it. Activate this ability only during your upkeep.
Ability ability = new ConditionalActivatedAbility(Zone.BATTLEFIELD, new AddCountersTargetEffect(CounterType.MIRE.createInstance()), new GenericManaCost(2), new IsStepCondition(PhaseStep.UPKEEP), "{2}, {T}: Put a mire counter on target non-Swamp land. That land is a Swamp for as long as it has a mire counter on it. Activate only during your upkeep.");
ability.addCost(new TapSourceCost());
ability.addTarget(new TargetLandPermanent(filter));
ability.addTarget(new TargetPermanent(filter));
ability.addEffect(new BecomeSwampEffect());
this.addAbility(ability, new CyclopeanTombCounterWatcher());
@ -160,7 +161,7 @@ class CyclopeanTombEffect extends OneShotEffect {
}
}
filter.add(Predicates.or(idPref));
TargetLandPermanent target = new TargetLandPermanent(1, 1, filter, true);
TargetPermanent target = new TargetPermanent(1, 1, filter, true);
/*Player must choose a land each upkeep. Using the message are above the player hand where frequent interactions
* take place is the most logical way to prompt for this scenario. A new constructor added to provide a not optional
* option for any cards like this where the player must choose a target in such the way this card requires.

View file

@ -1,7 +1,5 @@
package mage.cards.d;
import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.common.SacrificeSourceCost;
@ -17,19 +15,21 @@ import mage.constants.CardType;
import mage.constants.Outcome;
import mage.constants.SuperType;
import mage.constants.TargetController;
import mage.filter.FilterPermanent;
import mage.filter.StaticFilters;
import mage.filter.common.FilterLandPermanent;
import mage.filter.predicate.Predicates;
import mage.target.TargetPermanent;
import mage.target.common.TargetCardInLibrary;
import mage.target.common.TargetLandPermanent;
import java.util.UUID;
/**
*
* @author weirddan455
*/
public final class DemolitionField extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent("nonbasic land an opponent controls");
private static final FilterPermanent filter = new FilterLandPermanent("nonbasic land an opponent controls");
static {
filter.add(TargetController.OPPONENT.getControllerPredicate());
@ -56,7 +56,7 @@ public final class DemolitionField extends CardImpl {
new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND_A),
false, false, true
));
ability.addTarget(new TargetLandPermanent(filter));
ability.addTarget(new TargetPermanent(filter));
this.addAbility(ability);
}

View file

@ -1,23 +1,20 @@
package mage.cards.d;
import java.util.Locale;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.triggers.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.Cost;
import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.DestroyTargetEffect;
import mage.abilities.triggers.BeginningOfUpkeepTriggeredAbility;
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.common.FilterLandPermanent;
import mage.filter.predicate.permanent.ControllerIdPredicate;
import mage.game.Game;
@ -25,11 +22,12 @@ import mage.game.permanent.Permanent;
import mage.players.Player;
import mage.target.Target;
import mage.target.TargetPermanent;
import mage.target.common.TargetLandPermanent;
import mage.target.common.TargetOpponent;
import java.util.Locale;
import java.util.UUID;
/**
*
* @author jeffwadsworth
*/
public final class DemonicHordes extends CardImpl {
@ -97,7 +95,7 @@ class DemonicHordesEffect extends OneShotEffect {
if (controller.choose(Outcome.Neutral, choiceOpponent, source, game)) {
Player opponent = game.getPlayer(choiceOpponent.getFirstTarget());
if (opponent != null) {
Target chosenLand = new TargetLandPermanent(filterLand);
Target chosenLand = new TargetPermanent(filterLand);
chosenLand.withNotTarget(true);
if (opponent.chooseTarget(Outcome.Sacrifice, chosenLand, source, game)) {
Permanent land = game.getPermanent(chosenLand.getFirstTarget());

View file

@ -1,7 +1,6 @@
package mage.cards.d;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.TriggeredAbilityImpl;
import mage.abilities.effects.common.DestroyTargetEffect;
@ -11,22 +10,23 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Zone;
import mage.filter.FilterPermanent;
import mage.filter.common.FilterLandPermanent;
import mage.filter.predicate.permanent.ControllerIdPredicate;
import mage.game.Game;
import mage.game.events.GameEvent;
import mage.game.events.GameEvent.EventType;
import mage.target.Target;
import mage.target.common.TargetLandPermanent;
import mage.target.TargetPermanent;
import java.util.UUID;
/**
*
* @author LevelX2
*/
public final class DeusOfCalamity extends CardImpl {
public DeusOfCalamity(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R/G}{R/G}{R/G}{R/G}{R/G}");
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{R/G}{R/G}{R/G}{R/G}{R/G}");
this.subtype.add(SubType.SPIRIT);
this.subtype.add(SubType.AVATAR);
@ -74,9 +74,9 @@ class DeusOfCalamityTriggeredAbility extends TriggeredAbilityImpl {
if (event.getSourceId().equals(this.getSourceId())
&& event.getAmount() > 5
&& game.getOpponents(this.getControllerId()).contains(event.getTargetId())) {
FilterLandPermanent filter = new FilterLandPermanent("land of the damaged player");
FilterPermanent filter = new FilterLandPermanent("land of the damaged player");
filter.add(new ControllerIdPredicate(event.getTargetId()));
Target target = new TargetLandPermanent(filter);
Target target = new TargetPermanent(filter);
this.getTargets().clear();
this.addTarget(target);
return true;

View file

@ -1,7 +1,6 @@
package mage.cards.e;
import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.effects.Effect;
@ -14,43 +13,36 @@ import mage.cards.CardSetInfo;
import mage.constants.AbilityWord;
import mage.constants.CardType;
import mage.constants.Outcome;
import mage.constants.TargetController;
import mage.constants.Zone;
import mage.filter.common.FilterLandPermanent;
import mage.filter.StaticFilters;
import mage.game.Game;
import mage.game.events.GameEvent;
import mage.game.events.ManaEvent;
import mage.game.events.TappedForManaEvent;
import mage.game.permanent.Permanent;
import mage.players.Player;
import mage.target.common.TargetLandPermanent;
import mage.target.TargetPermanent;
import mage.target.targetpointer.FixedTarget;
import mage.util.CardUtil;
import java.util.UUID;
/**
*
* @author jeffwadsworth
*/
public final class ExtraplanarLens extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent("land you control");
static {
filter.add(TargetController.YOU.getControllerPredicate());
}
public ExtraplanarLens(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
// Imprint - When Extraplanar Lens enters the battlefield, you may exile target land you control.
Ability ability = new EntersBattlefieldTriggeredAbility(new ExtraplanarLensImprintEffect(), true);
ability.setAbilityWord(AbilityWord.IMPRINT);
ability.addTarget(new TargetLandPermanent(filter));
ability.addTarget(new TargetPermanent(StaticFilters.FILTER_CONTROLLED_PERMANENT_LAND));
this.addAbility(ability);
// Whenever a land with the same name as the exiled card is tapped for mana, its controller adds one mana of any type that land produced.
this.addAbility(new ExtraplanarLensTriggeredAbility());
}
private ExtraplanarLens(final ExtraplanarLens card) {

View file

@ -1,7 +1,5 @@
package mage.cards.f;
import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.common.SacrificeSourceCost;
@ -13,26 +11,24 @@ import mage.abilities.mana.ColorlessManaAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.cards.CardsImpl;
import mage.constants.CardType;
import mage.constants.Outcome;
import mage.constants.SuperType;
import mage.constants.TargetController;
import mage.constants.Zone;
import mage.constants.*;
import mage.filter.FilterPermanent;
import mage.filter.StaticFilters;
import mage.filter.common.FilterLandPermanent;
import mage.filter.predicate.Predicates;
import mage.game.Game;
import mage.players.Player;
import mage.target.TargetPermanent;
import mage.target.common.TargetCardInLibrary;
import mage.target.common.TargetLandPermanent;
import java.util.UUID;
/**
*
* @author TheElk801
*/
public final class FieldOfRuin extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent("nonbasic land an opponent controls");
private static final FilterPermanent filter = new FilterLandPermanent("nonbasic land an opponent controls");
static {
filter.add(TargetController.OPPONENT.getControllerPredicate());
@ -50,7 +46,7 @@ public final class FieldOfRuin extends CardImpl {
ability.addCost(new ManaCostsImpl<>("{2}"));
ability.addCost(new SacrificeSourceCost());
ability.addEffect(new FieldOfRuinEffect());
ability.addTarget(new TargetLandPermanent(filter));
ability.addTarget(new TargetPermanent(filter));
this.addAbility(ability);
}

View file

@ -1,53 +1,55 @@
package mage.cards.g;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.DiesAttachedTriggeredAbility;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.effects.Effect;
import mage.abilities.effects.common.AttachEffect;
import mage.abilities.effects.common.ReturnToHandSourceEffect;
import mage.abilities.effects.common.continuous.BecomesCreatureAttachedWithActivatedAbilityOrSpellEffect;
import mage.abilities.keyword.EnchantAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.Outcome;
import mage.constants.SubType;
import mage.filter.FilterPermanent;
import mage.filter.common.FilterLandPermanent;
import mage.game.permanent.token.TokenImpl;
import mage.target.TargetPermanent;
import mage.target.common.TargetLandPermanent;
import java.util.UUID;
/**
*
* @author LevelX2
*/
public final class GenjuOfTheCedars extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent(SubType.FOREST, "Forest");
private static final FilterPermanent filter = new FilterLandPermanent(SubType.FOREST, "Forest");
public GenjuOfTheCedars(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{G}");
this.subtype.add(SubType.AURA);
// Enchant Forest
TargetPermanent auraTarget = new TargetLandPermanent(filter);
TargetPermanent auraTarget = new TargetPermanent(filter);
this.getSpellAbility().addTarget(auraTarget);
this.getSpellAbility().addEffect(new AttachEffect(Outcome.PutCreatureInPlay));
Ability ability = new EnchantAbility(auraTarget);
this.addAbility(ability);
this.addAbility(new EnchantAbility(auraTarget));
// {2}: Enchanted Forest becomes a 4/4 green Spirit creature until end of turn. It's still a land.
Ability ability2 = new SimpleActivatedAbility(new BecomesCreatureAttachedWithActivatedAbilityOrSpellEffect(new SpiritToken(), "Enchanted Forest becomes a 4/4 green Spirit creature until end of turn. It's still a land", Duration.EndOfTurn), new GenericManaCost(2));
this.addAbility(ability2);
this.addAbility(new SimpleActivatedAbility(new BecomesCreatureAttachedWithActivatedAbilityOrSpellEffect(
new SpiritToken(), "Enchanted Forest becomes a 4/4 green " +
"Spirit creature until end of turn. It's still a land", Duration.EndOfTurn
), new GenericManaCost(2)));
// When enchanted Forest is put into a graveyard, you may return Genju of the Cedars from your graveyard to your hand.
Effect effect = new ReturnToHandSourceEffect(false, true);
effect.setText("you may return {this} from your graveyard to your hand");
Ability ability3 = new DiesAttachedTriggeredAbility(effect, "enchanted Forest", true, false);
this.addAbility(ability3);
this.addAbility(new DiesAttachedTriggeredAbility(
new ReturnToHandSourceEffect(false, true)
.setText("you may return {this} from your graveyard to your hand"),
"enchanted Forest", true, false
));
}
private GenjuOfTheCedars(final GenjuOfTheCedars card) {

View file

@ -1,13 +1,10 @@
package mage.cards.g;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.DiesAttachedTriggeredAbility;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.effects.Effect;
import mage.abilities.effects.common.AttachEffect;
import mage.abilities.effects.common.ReturnToHandSourceEffect;
import mage.abilities.effects.common.continuous.BecomesCreatureAttachedWithActivatedAbilityOrSpellEffect;
@ -15,40 +12,45 @@ import mage.abilities.keyword.EnchantAbility;
import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
import mage.filter.common.FilterLandPermanent;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.Outcome;
import mage.constants.SubType;
import mage.filter.FilterPermanent;
import mage.game.permanent.token.TokenImpl;
import mage.target.TargetPermanent;
import mage.target.common.TargetLandPermanent;
import java.util.UUID;
/**
*
* @author LevelX2
*/
public final class GenjuOfTheFalls extends CardImpl {
private static final FilterLandPermanent FILTER = new FilterLandPermanent(SubType.ISLAND, "Island");
private static final FilterPermanent FILTER = new FilterPermanent(SubType.ISLAND, "Island");
public GenjuOfTheFalls(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{U}");
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{U}");
this.subtype.add(SubType.AURA);
// Enchant Island
TargetPermanent auraTarget = new TargetLandPermanent(FILTER);
TargetPermanent auraTarget = new TargetPermanent(FILTER);
this.getSpellAbility().addTarget(auraTarget);
this.getSpellAbility().addEffect(new AttachEffect(Outcome.PutCreatureInPlay));
Ability ability = new EnchantAbility(auraTarget);
this.addAbility(ability);
this.addAbility(new EnchantAbility(auraTarget));
// {2}: Enchanted Island becomes a 3/2 blue Spirit creature with flying until end of turn. It's still a land.
Ability ability2 = new SimpleActivatedAbility(new BecomesCreatureAttachedWithActivatedAbilityOrSpellEffect(new SpiritToken(), "Enchanted Island becomes a 3/2 blue Spirit creature with flying until end of turn. It's still a land", Duration.EndOfTurn), new GenericManaCost(2));
this.addAbility(ability2);
this.addAbility(new SimpleActivatedAbility(new BecomesCreatureAttachedWithActivatedAbilityOrSpellEffect(
new SpiritToken(), "Enchanted Island becomes a 3/2 blue Spirit " +
"creature with flying until end of turn. It's still a land", Duration.EndOfTurn
), new GenericManaCost(2)));
// When enchanted Island is put into a graveyard, you may return Genju of the Falls from your graveyard to your hand. TargetPermanent auraTarget = new TargetLandPermanent(filter);
Effect effect = new ReturnToHandSourceEffect(false, true);
effect.setText("you may return {this} from your graveyard to your hand");
Ability ability3 = new DiesAttachedTriggeredAbility(effect, "enchanted Island", true, false);
this.addAbility(ability3);
this.addAbility(new DiesAttachedTriggeredAbility(
new ReturnToHandSourceEffect(false, true)
.setText("you may return {this} from your graveyard to your hand"),
"enchanted Island", true, false
));
}
private GenjuOfTheFalls(final GenjuOfTheFalls card) {

View file

@ -1,14 +1,10 @@
package mage.cards.g;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.DiesAttachedTriggeredAbility;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.Effect;
import mage.abilities.effects.common.AttachEffect;
import mage.abilities.effects.common.ReturnToHandSourceEffect;
import mage.abilities.effects.common.continuous.BecomesCreatureAttachedWithActivatedAbilityOrSpellEffect;
@ -16,40 +12,45 @@ import mage.abilities.effects.common.continuous.BoostSourceEffect;
import mage.abilities.keyword.EnchantAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
import mage.filter.common.FilterLandPermanent;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.Outcome;
import mage.constants.SubType;
import mage.filter.FilterPermanent;
import mage.game.permanent.token.TokenImpl;
import mage.target.TargetPermanent;
import mage.target.common.TargetLandPermanent;
import java.util.UUID;
/**
*
* @author LevelX2
*/
public final class GenjuOfTheFens extends CardImpl {
private static final FilterLandPermanent FILTER = new FilterLandPermanent(SubType.SWAMP, "Swamp");
private static final FilterPermanent FILTER = new FilterPermanent(SubType.SWAMP, "Swamp");
public GenjuOfTheFens(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{B}");
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{B}");
this.subtype.add(SubType.AURA);
// Enchant Swamp
TargetPermanent auraTarget = new TargetLandPermanent(FILTER);
TargetPermanent auraTarget = new TargetPermanent(FILTER);
this.getSpellAbility().addTarget(auraTarget);
this.getSpellAbility().addEffect(new AttachEffect(Outcome.PutCreatureInPlay));
Ability ability = new EnchantAbility(auraTarget);
this.addAbility(ability);
this.addAbility(new EnchantAbility(auraTarget));
// {2}: Until end of turn, enchanted Swamp becomes a 2/2 black Spirit creature with "{B}: This creature gets +1/+1 until end of turn." It's still a land.
Ability ability2 = new SimpleActivatedAbility(new BecomesCreatureAttachedWithActivatedAbilityOrSpellEffect(new SpiritToken(), "Until end of turn, enchanted Swamp becomes a 2/2 black Spirit creature with \"{B}: This creature gets +1/+1 until end of turn.\" It's still a land", Duration.EndOfTurn), new GenericManaCost(2));
this.addAbility(ability2);
this.addAbility(new SimpleActivatedAbility(new BecomesCreatureAttachedWithActivatedAbilityOrSpellEffect(
new SpiritToken(), "Until end of turn, enchanted Swamp becomes a 2/2 black Spirit creature " +
"with \"{B}: This creature gets +1/+1 until end of turn.\" It's still a land", Duration.EndOfTurn
), new GenericManaCost(2)));
// When enchanted Swamp is put into a graveyard, you may return Genju of the Fens from your graveyard to your hand.
Effect effect = new ReturnToHandSourceEffect(false, true);
effect.setText("you may return {this} from your graveyard to your hand");
Ability ability3 = new DiesAttachedTriggeredAbility(effect, "enchanted Swamp", true, false);
this.addAbility(ability3);
this.addAbility(new DiesAttachedTriggeredAbility(
new ReturnToHandSourceEffect(false, true)
.setText("you may return {this} from your graveyard to your hand"),
"enchanted Swamp", true, false
));
}
private GenjuOfTheFens(final GenjuOfTheFens card) {

View file

@ -7,7 +7,6 @@ import mage.abilities.common.DiesAttachedTriggeredAbility;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.dynamicvalue.common.SavedDamageValue;
import mage.abilities.effects.Effect;
import mage.abilities.effects.common.AttachEffect;
import mage.abilities.effects.common.GainLifeEffect;
import mage.abilities.effects.common.ReturnToHandSourceEffect;
@ -17,10 +16,9 @@ import mage.abilities.keyword.EnchantAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
import mage.filter.common.FilterLandPermanent;
import mage.filter.FilterPermanent;
import mage.game.permanent.token.TokenImpl;
import mage.target.TargetPermanent;
import mage.target.common.TargetLandPermanent;
import java.util.UUID;
@ -29,33 +27,34 @@ import java.util.UUID;
*/
public final class GenjuOfTheFields extends CardImpl {
private static final FilterLandPermanent FILTER = new FilterLandPermanent(SubType.PLAINS, "Plains");
private static final FilterPermanent FILTER = new FilterPermanent(SubType.PLAINS, "Plains");
public GenjuOfTheFields(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{W}");
this.subtype.add(SubType.AURA);
// Enchant Plains
TargetPermanent auraTarget = new TargetLandPermanent(FILTER);
TargetPermanent auraTarget = new TargetPermanent(FILTER);
this.getSpellAbility().addTarget(auraTarget);
this.getSpellAbility().addEffect(new AttachEffect(Outcome.PutCreatureInPlay));
Ability ability = new EnchantAbility(auraTarget);
this.addAbility(ability);
this.addAbility(new EnchantAbility(auraTarget));
// {2}: Until end of turn, enchanted Plains becomes a 2/5 white Spirit creature with "Whenever this creature deals damage, its controller gains that much life." It's still a land.
Effect effect = new BecomesCreatureAttachedWithActivatedAbilityOrSpellEffect(new SpiritToken(),
"Until end of turn, enchanted Plains becomes a 2/5 white Spirit creature", Duration.EndOfTurn);
Ability ability2 = new SimpleActivatedAbility(effect, new GenericManaCost(2));
effect = new GainAbilityAttachedEffect(new DealsDamageSourceTriggeredAbility(new GainLifeEffect(SavedDamageValue.MUCH)), AttachmentType.AURA, Duration.EndOfTurn);
effect.setText("with \"Whenever this creature deals damage, its controller gains that much life.\" It's still a land");
ability2.addEffect(effect);
this.addAbility(ability2);
Ability ability = new SimpleActivatedAbility(new BecomesCreatureAttachedWithActivatedAbilityOrSpellEffect(
new SpiritToken(), "Until end of turn, enchanted Plains " +
"becomes a 2/5 white Spirit creature", Duration.EndOfTurn
), new GenericManaCost(2));
ability.addEffect(new GainAbilityAttachedEffect(
new DealsDamageSourceTriggeredAbility(new GainLifeEffect(SavedDamageValue.MUCH)), AttachmentType.AURA, Duration.EndOfTurn
).setText("with \"Whenever this creature deals damage, its controller gains that much life.\" It's still a land"));
this.addAbility(ability);
// When enchanted Plains is put into a graveyard, you may return Genju of the Fields from your graveyard to your hand.
Effect effect2 = new ReturnToHandSourceEffect(false, true);
effect2.setText("you may return {this} from your graveyard to your hand");
Ability ability3 = new DiesAttachedTriggeredAbility(effect2, "enchanted Plains", true, false);
this.addAbility(ability3);
this.addAbility(new DiesAttachedTriggeredAbility(
new ReturnToHandSourceEffect(false, true)
.setText("you may return {this} from your graveyard to your hand"),
"enchanted Plains", true, false
));
}
private GenjuOfTheFields(final GenjuOfTheFields card) {

View file

@ -1,53 +1,55 @@
package mage.cards.g;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.DiesAttachedTriggeredAbility;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.effects.Effect;
import mage.abilities.effects.common.AttachEffect;
import mage.abilities.effects.common.ReturnToHandSourceEffect;
import mage.abilities.effects.common.continuous.BecomesCreatureAttachedWithActivatedAbilityOrSpellEffect;
import mage.abilities.keyword.EnchantAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
import mage.filter.common.FilterLandPermanent;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.Outcome;
import mage.constants.SubType;
import mage.filter.FilterPermanent;
import mage.game.permanent.token.TokenImpl;
import mage.target.TargetPermanent;
import mage.target.common.TargetLandPermanent;
import java.util.UUID;
/**
*
* @author LevelX2
*/
public final class GenjuOfTheSpires extends CardImpl {
private static final FilterLandPermanent FILTER = new FilterLandPermanent(SubType.MOUNTAIN, "Mountain");
private static final FilterPermanent FILTER = new FilterPermanent(SubType.MOUNTAIN, "Mountain");
public GenjuOfTheSpires(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{R}");
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{R}");
this.subtype.add(SubType.AURA);
// Enchant Mountain
TargetPermanent auraTarget = new TargetLandPermanent(FILTER);
TargetPermanent auraTarget = new TargetPermanent(FILTER);
this.getSpellAbility().addTarget(auraTarget);
this.getSpellAbility().addEffect(new AttachEffect(Outcome.PutCreatureInPlay));
Ability ability = new EnchantAbility(auraTarget);
this.addAbility(ability);
this.addAbility(new EnchantAbility(auraTarget));
// {2}: Enchanted Mountain becomes a 6/1 red Spirit creature until end of turn. It's still a land.
Ability ability2 = new SimpleActivatedAbility(new BecomesCreatureAttachedWithActivatedAbilityOrSpellEffect(new SpiritToken(), "Enchanted Mountain becomes a 6/1 red Spirit creature until end of turn. It's still a land", Duration.EndOfTurn), new GenericManaCost(2));
this.addAbility(ability2);
this.addAbility(new SimpleActivatedAbility(new BecomesCreatureAttachedWithActivatedAbilityOrSpellEffect(
new SpiritToken(), "Enchanted Mountain becomes a 6/1 " +
"red Spirit creature until end of turn. It's still a land", Duration.EndOfTurn
), new GenericManaCost(2)));
// When enchanted Mountain is put into a graveyard, you may return Genju of the Spires from your graveyard to your hand.
Effect effect = new ReturnToHandSourceEffect(false, true);
effect.setText("you may return {this} from your graveyard to your hand");
Ability ability3 = new DiesAttachedTriggeredAbility(effect, "enchanted Mountain", true, false);
this.addAbility(ability3);
this.addAbility(new DiesAttachedTriggeredAbility(
new ReturnToHandSourceEffect(false, true)
.setText("you may return {this} from your graveyard to your hand"),
"enchanted Mountain", true, false
));
}
private GenjuOfTheSpires(final GenjuOfTheSpires card) {
@ -69,6 +71,7 @@ public final class GenjuOfTheSpires extends CardImpl {
power = new MageInt(6);
toughness = new MageInt(1);
}
private SpiritToken(final SpiritToken token) {
super(token);
}

View file

@ -1,24 +1,22 @@
package mage.cards.h;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.triggers.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.DontUntapInControllersUntapStepAllEffect;
import mage.abilities.triggers.BeginningOfUpkeepTriggeredAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
import mage.filter.StaticFilters;
import mage.filter.common.FilterLandPermanent;
import mage.filter.predicate.permanent.ControllerIdPredicate;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.players.Player;
import mage.target.Target;
import mage.target.common.TargetLandPermanent;
import mage.target.TargetPermanent;
import java.util.UUID;
/**
* @author LevelX2
@ -26,7 +24,7 @@ import mage.target.common.TargetLandPermanent;
public final class HokoriDustDrinker extends CardImpl {
public HokoriDustDrinker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}{W}");
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}{W}");
this.supertype.add(SuperType.LEGENDARY);
this.subtype.add(SubType.SPIRIT);
@ -71,18 +69,16 @@ class HokoriDustDrinkerUntapEffect extends OneShotEffect {
@Override
public boolean apply(Game game, Ability source) {
Player player = game.getPlayer(game.getActivePlayerId());
FilterLandPermanent filter = new FilterLandPermanent("land you control");
filter.add(new ControllerIdPredicate(game.getActivePlayerId()));
Target target = new TargetLandPermanent(filter);
if (player != null && player.chooseTarget(Outcome.Untap, target, source, game)) {
for (UUID landId : target.getTargets()) {
Permanent land = game.getPermanent(landId);
if (land != null) {
land.untap(game);
}
}
return true;
Target target = new TargetPermanent(StaticFilters.FILTER_CONTROLLED_PERMANENT_LAND);
if (player == null || !player.chooseTarget(Outcome.Untap, target, source, game)) {
return false;
}
return false;
for (UUID landId : target.getTargets()) {
Permanent land = game.getPermanent(landId);
if (land != null) {
land.untap(game);
}
}
return true;
}
}

View file

@ -1,41 +1,36 @@
package mage.cards.k;
import java.util.UUID;
import mage.MageInt;
import mage.Mana;
import mage.abilities.Ability;
import mage.abilities.LoyaltyAbility;
import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount;
import mage.abilities.effects.mana.DynamicManaEffect;
import mage.abilities.effects.common.GetEmblemEffect;
import mage.abilities.effects.common.UntapTargetEffect;
import mage.abilities.effects.common.continuous.BecomesCreatureTargetEffect;
import mage.abilities.effects.mana.DynamicManaEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.SubType;
import mage.constants.SuperType;
import mage.constants.TargetController;
import mage.filter.common.FilterLandPermanent;
import mage.filter.FilterPermanent;
import mage.filter.common.FilterControlledPermanent;
import mage.game.command.emblems.KothOfTheHammerEmblem;
import mage.game.permanent.token.TokenImpl;
import mage.target.common.TargetLandPermanent;
import mage.target.TargetPermanent;
import java.util.UUID;
/**
*
* @author Loki, North
*/
public final class KothOfTheHammer extends CardImpl {
static final FilterLandPermanent filter = new FilterLandPermanent(SubType.MOUNTAIN, "Mountain");
static final FilterLandPermanent filterCount = new FilterLandPermanent("Mountain you control");
static {
filterCount.add(SubType.MOUNTAIN.getPredicate());
filterCount.add(TargetController.YOU.getControllerPredicate());
}
static final FilterPermanent filter = new FilterPermanent(SubType.MOUNTAIN, "Mountain");
static final FilterPermanent filterCount = new FilterControlledPermanent("Mountain you control");
public KothOfTheHammer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{2}{R}{R}");
@ -47,7 +42,7 @@ public final class KothOfTheHammer extends CardImpl {
// +1: Untap target Mountain. It becomes a 4/4 red Elemental creature until end of turn. It's still a land.
Ability ability = new LoyaltyAbility(new UntapTargetEffect(), 1);
ability.addEffect(new BecomesCreatureTargetEffect(new KothOfTheHammerToken(), false, true, Duration.EndOfTurn));
ability.addTarget(new TargetLandPermanent(filter));
ability.addTarget(new TargetPermanent(filter));
this.addAbility(ability);
// -2: Add {R} for each Mountain you control.
@ -78,6 +73,7 @@ class KothOfTheHammerToken extends TokenImpl {
this.power = new MageInt(4);
this.toughness = new MageInt(4);
}
private KothOfTheHammerToken(final KothOfTheHammerToken token) {
super(token);
}

View file

@ -14,21 +14,20 @@ import mage.abilities.effects.common.continuous.BecomesBasicLandTargetEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
import mage.filter.FilterPermanent;
import mage.filter.common.FilterControlledLandPermanent;
import mage.filter.common.FilterLandPermanent;
import mage.target.common.TargetControlledPermanent;
import mage.target.common.TargetLandPermanent;
import mage.target.TargetPermanent;
import java.util.UUID;
/**
*
* @author fireshoes
*/
public final class KukemssaSerpent extends CardImpl {
private static final FilterLandPermanent filterOpponentLand = new FilterLandPermanent("land an opponent controls");
private static final FilterControlledLandPermanent filterControlledLand = new FilterControlledLandPermanent("an Island");
private static final FilterPermanent filterOpponentLand = new FilterLandPermanent("land an opponent controls");
private static final FilterPermanent filterControlledLand = new FilterControlledLandPermanent("an Island");
static {
filterOpponentLand.add(TargetController.OPPONENT.getControllerPredicate());
@ -36,7 +35,7 @@ public final class KukemssaSerpent extends CardImpl {
}
public KukemssaSerpent(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}");
this.subtype.add(SubType.SERPENT);
this.power = new MageInt(4);
this.toughness = new MageInt(3);
@ -47,7 +46,7 @@ public final class KukemssaSerpent extends CardImpl {
// {U}, Sacrifice an Island: Target land an opponent controls becomes an Island until end of turn.
Ability ability = new SimpleActivatedAbility(new BecomesBasicLandTargetEffect(Duration.EndOfTurn, SubType.ISLAND), new ManaCostsImpl<>("{U}"));
ability.addCost(new SacrificeTargetCost(filterControlledLand));
ability.addTarget(new TargetLandPermanent(filterOpponentLand));
ability.addTarget(new TargetPermanent(filterOpponentLand));
this.addAbility(ability);
// When you control no Islands, sacrifice Kukemssa Serpent.

View file

@ -1,7 +1,6 @@
package mage.cards.m;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
@ -11,27 +10,29 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.TargetController;
import mage.filter.common.FilterLandPermanent;
import mage.filter.FilterPermanent;
import mage.filter.predicate.Predicates;
import mage.target.common.TargetLandPermanent;
import mage.target.TargetPermanent;
import java.util.UUID;
/**
*
* @author jeffwadsworth
*/
public final class MarshdrinkerGiant extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent("Island or Swamp an opponent controls");
private static final FilterPermanent filter = new FilterPermanent("Island or Swamp an opponent controls");
static {
filter.add(Predicates.or(
SubType.ISLAND.getPredicate(),
SubType.SWAMP.getPredicate()));
SubType.SWAMP.getPredicate()
));
filter.add(TargetController.OPPONENT.getControllerPredicate());
}
public MarshdrinkerGiant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{G}");
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}{G}");
this.subtype.add(SubType.GIANT);
this.subtype.add(SubType.WARRIOR);
@ -40,9 +41,8 @@ public final class MarshdrinkerGiant extends CardImpl {
// When Marshdrinker Giant enters the battlefield, destroy target Island or Swamp an opponent controls.
Ability ability = new EntersBattlefieldTriggeredAbility(new DestroyTargetEffect(), false);
ability.addTarget(new TargetLandPermanent(filter));
ability.addTarget(new TargetPermanent(filter));
this.addAbility(ability);
}
private MarshdrinkerGiant(final MarshdrinkerGiant card) {

View file

@ -1,4 +1,3 @@
package mage.cards.n;
import mage.MageInt;
@ -10,14 +9,17 @@ import mage.abilities.effects.common.continuous.BecomesCreatureTargetEffect;
import mage.abilities.keyword.HasteAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.SubType;
import mage.constants.SuperType;
import mage.filter.FilterCard;
import mage.filter.common.FilterLandPermanent;
import mage.filter.StaticFilters;
import mage.filter.common.FilterPermanentCard;
import mage.game.command.emblems.NissaVitalForceEmblem;
import mage.game.permanent.token.TokenImpl;
import mage.target.TargetPermanent;
import mage.target.common.TargetCardInYourGraveyard;
import mage.target.common.TargetLandPermanent;
import java.util.UUID;
@ -26,12 +28,7 @@ import java.util.UUID;
*/
public final class NissaVitalForce extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent("land you control");
private static final FilterCard filter2 = new FilterPermanentCard("permanent card from your graveyard");
static {
filter.add(TargetController.YOU.getControllerPredicate());
}
private static final FilterCard filter = new FilterPermanentCard("permanent card from your graveyard");
public NissaVitalForce(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{3}{G}{G}");
@ -45,12 +42,12 @@ public final class NissaVitalForce extends CardImpl {
ability.addEffect(new BecomesCreatureTargetEffect(
new NissaVitalForceToken(), false, true, Duration.UntilYourNextTurn
).withDurationRuleAtStart(true).setText("Until your next turn, it becomes a 5/5 Elemental creature with haste. It's still a land"));
ability.addTarget(new TargetLandPermanent(filter));
ability.addTarget(new TargetPermanent(StaticFilters.FILTER_CONTROLLED_PERMANENT_LAND));
this.addAbility(ability);
// -3: Return target permanent card from your graveyard to your hand.
ability = new LoyaltyAbility(new ReturnFromGraveyardToHandTargetEffect(), -3);
ability.addTarget(new TargetCardInYourGraveyard(filter2));
ability.addTarget(new TargetCardInYourGraveyard(filter));
this.addAbility(ability);
// -6: You get an emblem with "Whenever a land you control enters, you may draw a card."

View file

@ -1,9 +1,7 @@
package mage.cards.o;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.triggers.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.costs.mana.ManaCostsImpl;
@ -12,23 +10,21 @@ import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.DamageControllerEffect;
import mage.abilities.effects.common.continuous.GainAbilityTargetEffect;
import mage.abilities.effects.common.counter.AddCountersTargetEffect;
import mage.abilities.triggers.BeginningOfUpkeepTriggeredAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Duration;
import mage.constants.Outcome;
import mage.constants.TargetController;
import mage.constants.Zone;
import mage.constants.*;
import mage.counters.CounterType;
import mage.filter.FilterPermanent;
import mage.filter.common.FilterLandPermanent;
import mage.filter.predicate.Predicates;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.target.common.TargetLandPermanent;
import mage.target.TargetPermanent;
import java.util.UUID;
/**
*
* @author LevelX2
*/
public final class ObsidianFireheart extends CardImpl {
@ -36,7 +32,7 @@ public final class ObsidianFireheart extends CardImpl {
private static final String rule = "For as long as that land has a blaze counter "
+ "on it, it has \"At the beginning of your upkeep, this land deals 1 damage "
+ "to you.\" <i>(The land continues to burn after Obsidian Fireheart has left the battlefield.)</i>";
private static final FilterLandPermanent filter = new FilterLandPermanent("land without a blaze counter on it");
private static final FilterPermanent filter = new FilterLandPermanent("land without a blaze counter on it");
static {
filter.add(Predicates.not(CounterType.BLAZE.getPredicate()));
@ -56,7 +52,7 @@ public final class ObsidianFireheart extends CardImpl {
Ability ability = new SimpleActivatedAbility(
new AddCountersTargetEffect(CounterType.BLAZE.createInstance()),
new ManaCostsImpl<>("{1}{R}{R}"));
ability.addTarget(new TargetLandPermanent(filter));
ability.addTarget(new TargetPermanent(filter));
OneShotEffect effect = new ObsidianFireheartOneShotEffect();
effect.setText(rule);
ability.addEffect(effect);
@ -134,7 +130,7 @@ class ObsidianFireheartGainAbilityEffect extends GainAbilityTargetEffect {
@Override
public boolean isInactive(Ability source, Game game) {
Permanent targetLand = game.getPermanent(this.getTargetPointer().getFirst(game, source));
if (targetLand != null
if (targetLand != null
&& targetLand.getCounters(game).getCount(CounterType.BLAZE) < 1) {
return true;
}

View file

@ -7,30 +7,25 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.filter.common.FilterLandPermanent;
import mage.target.common.TargetLandPermanent;
import mage.filter.FilterPermanent;
import mage.target.TargetPermanent;
import java.util.UUID;
/**
*
* @author Plopman
*/
public final class PeakEruption extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent("Mountain");
static{
filter.add(SubType.MOUNTAIN.getPredicate());
}
private static final FilterPermanent filter = new FilterPermanent(SubType.MOUNTAIN, "Mountain");
public PeakEruption(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{R}");
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{R}");
// Destroy target Mountain. Peak Eruption deals 3 damage to that land's controller.
this.getSpellAbility().addEffect(new DestroyTargetEffect());
this.getSpellAbility().addEffect(new DamageTargetControllerEffect(3, "land"));
this.getSpellAbility().addTarget(new TargetLandPermanent(filter));
this.getSpellAbility().addTarget(new TargetPermanent(filter));
}
private PeakEruption(final PeakEruption card) {

View file

@ -10,7 +10,7 @@ import mage.filter.common.FilterLandPermanent;
import mage.game.Game;
import mage.players.Player;
import mage.target.Target;
import mage.target.common.TargetLandPermanent;
import mage.target.TargetPermanent;
import java.util.HashSet;
import java.util.Set;
@ -66,7 +66,7 @@ class PlanarOverlayEffect extends OneShotEffect {
FilterLandPermanent filter = new FilterLandPermanent(landName + " to return to hand");
filter.add(landName.getPredicate());
filter.add(TargetController.YOU.getControllerPredicate());
Target target = new TargetLandPermanent(1, 1, filter, true);
Target target = new TargetPermanent(1, 1, filter, true);
if (target.canChoose(player.getId(), source, game)) {
player.chooseTarget(outcome, target, source, game);
lands.add(game.getPermanent(target.getFirstTarget()));

View file

@ -1,14 +1,14 @@
package mage.cards.q;
import mage.abilities.Ability;
import mage.abilities.triggers.BeginningOfEndStepTriggeredAbility;
import mage.abilities.triggers.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.Condition;
import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.effects.ContinuousEffect;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.continuous.BecomesBasicLandTargetEffect;
import mage.abilities.triggers.BeginningOfEndStepTriggeredAbility;
import mage.abilities.triggers.BeginningOfUpkeepTriggeredAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
@ -19,6 +19,7 @@ import mage.filter.predicate.Predicates;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.players.Player;
import mage.target.TargetPermanent;
import mage.target.common.TargetLandPermanent;
import mage.target.targetadjustment.TargetAdjuster;
@ -68,7 +69,7 @@ enum QuicksilverFountainAdjuster implements TargetAdjuster {
FilterLandPermanent filter = new FilterLandPermanent();
filter.add(Predicates.not(SubType.ISLAND.getPredicate()));
filter.add(TargetController.ACTIVE.getControllerPredicate());
TargetLandPermanent target = new TargetLandPermanent(1, 1, filter, false);
TargetPermanent target = new TargetPermanent(1, 1, filter, false);
target.setTargetController(activePlayer.getId());
ability.getTargets().add(target);
}

View file

@ -1,35 +1,36 @@
package mage.cards.r;
import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.triggers.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.DontUntapInControllersUntapStepAllEffect;
import mage.abilities.triggers.BeginningOfUpkeepTriggeredAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.Outcome;
import mage.constants.TargetController;
import mage.filter.StaticFilters;
import mage.filter.common.FilterLandPermanent;
import mage.filter.predicate.permanent.ControllerIdPredicate;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.players.Player;
import mage.target.Target;
import mage.target.common.TargetLandPermanent;
import mage.target.TargetPermanent;
import java.util.UUID;
/**
*
* @author fireshoes
*/
public final class RisingWaters extends CardImpl {
public RisingWaters(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{U}");
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{U}");
// Lands don't untap during their controllers' untap steps.
this.addAbility(new SimpleStaticAbility(new DontUntapInControllersUntapStepAllEffect(Duration.WhileOnBattlefield, TargetController.ANY, StaticFilters.FILTER_LANDS)));
// At the beginning of each player's upkeep, that player untaps a land they control.
this.addAbility(new BeginningOfUpkeepTriggeredAbility(TargetController.EACH_PLAYER, new RisingWatersUntapEffect(), false));
}
@ -63,18 +64,16 @@ class RisingWatersUntapEffect extends OneShotEffect {
@Override
public boolean apply(Game game, Ability source) {
Player player = game.getPlayer(game.getActivePlayerId());
FilterLandPermanent filter = new FilterLandPermanent("land you control");
filter.add(new ControllerIdPredicate(game.getActivePlayerId()));
Target target = new TargetLandPermanent(filter);
if (player != null && player.chooseTarget(Outcome.Untap, target, source, game)) {
for (UUID landId : target.getTargets()) {
Permanent land = game.getPermanent(landId);
if (land != null) {
land.untap(game);
}
}
return true;
Target target = new TargetPermanent(StaticFilters.FILTER_CONTROLLED_PERMANENT_LAND);
if (player == null || !player.chooseTarget(Outcome.Untap, target, source, game)) {
return false;
}
return false;
for (UUID landId : target.getTargets()) {
Permanent land = game.getPermanent(landId);
if (land != null) {
land.untap(game);
}
}
return true;
}
}

View file

@ -14,7 +14,7 @@ import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.players.Player;
import mage.target.Target;
import mage.target.common.TargetLandPermanent;
import mage.target.TargetPermanent;
import java.util.HashSet;
import java.util.Set;
@ -71,7 +71,7 @@ class SunderingTitanDestroyLandEffect extends OneShotEffect {
for (SubType landName : SubType.getBasicLands()) {
FilterLandPermanent filter = new FilterLandPermanent(landName + " to destroy");
filter.add(landName.getPredicate());
Target target = new TargetLandPermanent(1, 1, filter, true);
Target target = new TargetPermanent(1, 1, filter, true);
if (target.canChoose(source.getControllerId(), source, game)) {
controller.chooseTarget(outcome, target, source, game);
lands.add(target.getFirstTarget());

View file

@ -1,9 +1,6 @@
package mage.cards.t;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.effects.OneShotEffect;
import mage.cards.CardImpl;
@ -16,16 +13,19 @@ import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.players.Player;
import mage.target.Target;
import mage.target.common.TargetLandPermanent;
import mage.target.TargetPermanent;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
/**
*
* @author LevelX2
*/
public final class ThoughtsOfRuin extends CardImpl {
public ThoughtsOfRuin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{R}{R}");
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{R}{R}");
// Each player sacrifices a land for each card in your hand.
@ -78,7 +78,7 @@ class ThoughtsOfRuinEffect extends OneShotEffect {
} else {
FilterLandPermanent playerFilter = filter.copy();
playerFilter.add(new ControllerIdPredicate(playerId));
Target target = new TargetLandPermanent(amount, amount, playerFilter, true);
Target target = new TargetPermanent(amount, amount, playerFilter, true);
player.choose(outcome, target, source, game);
for (UUID landId : target.getTargets()) {
Permanent permanent = game.getPermanent(landId);
@ -91,7 +91,7 @@ class ThoughtsOfRuinEffect extends OneShotEffect {
}
}
// sacrifice all lands
for (Permanent permanent :permanentsToSacrifice) {
for (Permanent permanent : permanentsToSacrifice) {
permanent.sacrifice(source, game);
}
}

View file

@ -1,7 +1,5 @@
package mage.cards.t;
import java.util.UUID;
import mage.MageObject;
import mage.abilities.Ability;
import mage.abilities.TriggeredAbilityImpl;
@ -10,7 +8,10 @@ import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.continuous.GainControlTargetEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.Outcome;
import mage.constants.Zone;
import mage.counters.CounterType;
import mage.filter.StaticFilters;
import mage.filter.common.FilterLandPermanent;
@ -23,12 +24,13 @@ import mage.game.permanent.Permanent;
import mage.players.Player;
import mage.players.PlayerList;
import mage.target.Target;
import mage.target.common.TargetLandPermanent;
import mage.target.TargetPermanent;
import mage.target.targetadjustment.TargetAdjuster;
import mage.target.targetpointer.FixedTarget;
import java.util.UUID;
/**
*
* @author weirddan455
*/
public final class TurfWar extends CardImpl {
@ -105,7 +107,7 @@ enum TurfWarAdjuster implements TargetAdjuster {
}
FilterLandPermanent filter = new FilterLandPermanent("land controlled by " + player.getName());
filter.add(new ControllerIdPredicate(playerId));
ability.addTarget(new TargetLandPermanent(filter));
ability.addTarget(new TargetPermanent(filter));
}
}
}
@ -191,7 +193,7 @@ class TurfWarControlEffect extends OneShotEffect {
FilterLandPermanent filter = new FilterLandPermanent("land with a contested counter controlled by " + damagedPlayer.getName());
filter.add(new ControllerIdPredicate(damagedPlayer.getId()));
filter.add(TurfWarPredicate.instance);
TargetLandPermanent target = new TargetLandPermanent(1, 1, filter, true);
TargetPermanent target = new TargetPermanent(1, 1, filter, true);
if (!target.canChoose(creatureController.getId(), source, game)) {
return false;
}

View file

@ -9,18 +9,17 @@ import mage.abilities.effects.common.ChooseColorEffect;
import mage.abilities.effects.mana.ManaEffect;
import mage.abilities.keyword.EnchantAbility;
import mage.abilities.mana.EnchantedTappedTriggeredManaAbility;
import mage.abilities.mana.TriggeredManaAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
import mage.filter.common.FilterLandPermanent;
import mage.constants.CardType;
import mage.constants.ColoredManaSymbol;
import mage.constants.Outcome;
import mage.constants.SubType;
import mage.filter.FilterPermanent;
import mage.game.Game;
import mage.game.events.GameEvent;
import mage.game.events.GameEvent.EventType;
import mage.game.permanent.Permanent;
import mage.players.Player;
import mage.target.TargetPermanent;
import mage.target.common.TargetLandPermanent;
import java.util.UUID;
@ -29,24 +28,23 @@ import java.util.UUID;
*/
public final class UtopiaSprawl extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent(SubType.FOREST, "Forest");
private static final FilterPermanent filter = new FilterPermanent(SubType.FOREST, "Forest");
public UtopiaSprawl(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{G}");
this.subtype.add(SubType.AURA);
// Enchant Forest
TargetPermanent auraTarget = new TargetLandPermanent(filter);
TargetPermanent auraTarget = new TargetPermanent(filter);
this.getSpellAbility().addTarget(auraTarget);
this.getSpellAbility().addEffect(new AttachEffect(Outcome.AddAbility));
Ability ability = new EnchantAbility(auraTarget);
this.addAbility(ability);
this.addAbility(new EnchantAbility(auraTarget));
// As Utopia Sprawl enters the battlefield, choose a color.
this.addAbility(new AsEntersBattlefieldAbility(new ChooseColorEffect(Outcome.Detriment)));
// Whenever enchanted Forest is tapped for mana, its controller adds one mana of the chosen color.
this.addAbility(new EnchantedTappedTriggeredManaAbility(new UtopiaSprawlEffect(),"Forest"));
this.addAbility(new EnchantedTappedTriggeredManaAbility(new UtopiaSprawlEffect(), "Forest"));
}
private UtopiaSprawl(final UtopiaSprawl card) {
@ -58,9 +56,10 @@ public final class UtopiaSprawl extends CardImpl {
return new UtopiaSprawl(this);
}
}
class UtopiaSprawlEffect extends ManaEffect {
UtopiaSprawlEffect() {
UtopiaSprawlEffect() {
super();
staticText = "its controller adds an additional one mana of the chosen color";
}

View file

@ -8,12 +8,13 @@ import mage.constants.CardType;
import mage.constants.Outcome;
import mage.constants.SubType;
import mage.constants.Zone;
import mage.filter.FilterPermanent;
import mage.filter.StaticFilters;
import mage.filter.common.FilterLandPermanent;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.players.Player;
import mage.target.common.TargetLandPermanent;
import mage.target.TargetPermanent;
import mage.target.targetadjustment.XTargetsCountAdjuster;
import java.util.List;
@ -23,15 +24,15 @@ import java.util.UUID;
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
public final class VolcanicEruption extends CardImpl {
private static final FilterLandPermanent filter
= new FilterLandPermanent(SubType.MOUNTAIN, "Mountain");
private static final FilterPermanent filter = new FilterLandPermanent(SubType.MOUNTAIN, "Mountain");
public VolcanicEruption(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{U}{U}{U}");
// Destroy X target Mountains. Volcanic Eruption deals damage to each creature and each player equal to the number of Mountains put into a graveyard this way.
this.getSpellAbility().addEffect(new VolcanicEruptionEffect());
this.getSpellAbility().addTarget(new TargetLandPermanent(filter));
this.getSpellAbility().addTarget(new TargetPermanent(filter));
this.getSpellAbility().setTargetAdjuster(new XTargetsCountAdjuster());
}

View file

@ -1,7 +1,5 @@
package mage.abilities.effects.common;
import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.effects.OneShotEffect;
import mage.constants.Outcome;
@ -11,9 +9,11 @@ import mage.filter.predicate.permanent.TappedPredicate;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.players.Player;
import mage.target.common.TargetLandPermanent;
import mage.target.TargetPermanent;
import mage.util.CardUtil;
import java.util.UUID;
/**
* "Untap (up to) X lands" effect
*/
@ -65,7 +65,7 @@ public class UntapLandsEffect extends OneShotEffect {
} else {
tappedLands = game.getBattlefield().getActivePermanents(filter, source.getControllerId(), source, game).size();
}
TargetLandPermanent target = new TargetLandPermanent(upTo ? 0 : Math.min(tappedLands, amount), amount, filter, true);
TargetPermanent target = new TargetPermanent(upTo ? 0 : Math.min(tappedLands, amount), amount, filter, true);
if (target.canChoose(source.getControllerId(), source, game)) {
// UI Shortcut: Check if any lands are already tapped. If there are equal/fewer than amount, give the option to add those in to be untapped now.

View file

@ -2,7 +2,6 @@
package mage.target.common;
import mage.filter.StaticFilters;
import mage.filter.common.FilterLandPermanent;
import mage.target.TargetPermanent;
/**
@ -14,20 +13,12 @@ public class TargetLandPermanent extends TargetPermanent {
this(1);
}
public TargetLandPermanent(FilterLandPermanent filter) {
this(1, 1, filter, false);
}
public TargetLandPermanent(int numTargets) {
this(numTargets, numTargets);
}
public TargetLandPermanent(int numTargets, int maxNumTargets) {
this(numTargets, maxNumTargets, maxNumTargets > 1 ? StaticFilters.FILTER_LANDS : StaticFilters.FILTER_LAND, false);
}
public TargetLandPermanent(int minNumTargets, int maxNumTargets, FilterLandPermanent filter, boolean notTarget) {
super(minNumTargets, maxNumTargets, filter, notTarget);
super(numTargets, maxNumTargets, maxNumTargets > 1 ? StaticFilters.FILTER_LANDS : StaticFilters.FILTER_LAND, false);
}
protected TargetLandPermanent(final TargetLandPermanent target) {

View file

@ -5,11 +5,12 @@ package mage.target.common;
import mage.constants.SuperType;
import mage.filter.common.FilterLandPermanent;
import mage.filter.predicate.Predicates;
import mage.target.TargetPermanent;
/**
* @author BetaSteward_at_googlemail.com
*/
public class TargetNonBasicLandPermanent extends TargetLandPermanent {
public class TargetNonBasicLandPermanent extends TargetPermanent {
private static final FilterLandPermanent filter = new FilterLandPermanent("nonbasic land");