mirror of
https://github.com/magefree/mage.git
synced 2025-12-20 02:30:08 -08:00
refactor FilterBasicLandCard
This commit is contained in:
parent
68f2d7468c
commit
8f4e8645fa
52 changed files with 214 additions and 365 deletions
|
|
@ -13,10 +13,8 @@ import mage.cards.CardImpl;
|
|||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.filter.FilterCard;
|
||||
import mage.filter.FilterPermanent;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.filter.common.FilterBasicLandCard;
|
||||
import mage.filter.common.FilterLandPermanent;
|
||||
import mage.filter.predicate.permanent.DefendingPlayerControlsSourceAttackingPredicate;
|
||||
import mage.game.Controllable;
|
||||
|
|
@ -32,8 +30,6 @@ import java.util.stream.Collectors;
|
|||
*/
|
||||
public final class AerialSurveyor extends CardImpl {
|
||||
|
||||
private static final FilterCard filter = new FilterBasicLandCard(SubType.PLAINS);
|
||||
|
||||
public AerialSurveyor(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}{W}");
|
||||
|
||||
|
|
@ -45,7 +41,7 @@ public final class AerialSurveyor extends CardImpl {
|
|||
this.addAbility(FlyingAbility.getInstance());
|
||||
|
||||
// Whenever Aerial Surveyor attacks, if defending player controls more lands than you, search your library for a basic Plains card, put it onto the battlefield tapped, then shuffle.
|
||||
this.addAbility(new AttacksTriggeredAbility(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(filter), true))
|
||||
this.addAbility(new AttacksTriggeredAbility(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_PLAINS), true))
|
||||
.withInterveningIf(AerialSurveyorCondition.instance)
|
||||
.addHint(LandsYouControlHint.instance)
|
||||
.addHint(AerialSurveyorHint.instance));
|
||||
|
|
|
|||
|
|
@ -14,8 +14,7 @@ import mage.cards.CardSetInfo;
|
|||
import mage.constants.AbilityWord;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.SuperType;
|
||||
import mage.filter.FilterCard;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.target.common.TargetCardInLibrary;
|
||||
|
||||
import java.util.UUID;
|
||||
|
|
@ -25,13 +24,6 @@ import java.util.UUID;
|
|||
*/
|
||||
public final class AmbitiousFarmhand extends CardImpl {
|
||||
|
||||
private static final FilterCard filter = new FilterCard("basic Plains card");
|
||||
|
||||
static {
|
||||
filter.add(SuperType.BASIC.getPredicate());
|
||||
filter.add(SubType.PLAINS.getPredicate());
|
||||
}
|
||||
|
||||
public AmbitiousFarmhand(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}");
|
||||
|
||||
|
|
@ -43,7 +35,7 @@ public final class AmbitiousFarmhand extends CardImpl {
|
|||
|
||||
// When Ambitious Farmhand enters the battlefield, you may search your library for a basic Plains card, reveal it, put it into your hand, then shuffle.
|
||||
this.addAbility(new EntersBattlefieldTriggeredAbility(
|
||||
new SearchLibraryPutInHandEffect(new TargetCardInLibrary(filter), true), true
|
||||
new SearchLibraryPutInHandEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_PLAINS), true), true
|
||||
));
|
||||
|
||||
// Coven—{1}{W}{W}: Transform Ambitious Farmhand. Activate only if you control three or more creatures with different powers.
|
||||
|
|
|
|||
|
|
@ -9,10 +9,7 @@ import mage.abilities.effects.common.search.SearchLibraryPutInHandEffect;
|
|||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.SuperType;
|
||||
import mage.constants.TargetController;
|
||||
import mage.filter.FilterCard;
|
||||
import mage.filter.FilterPermanent;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.filter.common.FilterLandPermanent;
|
||||
|
|
@ -26,13 +23,10 @@ import java.util.UUID;
|
|||
*/
|
||||
public final class ArchaeomancersMap extends CardImpl {
|
||||
|
||||
private static final FilterCard filter = new FilterCard("basic Plains cards");
|
||||
private static final FilterPermanent filter2 = new FilterLandPermanent("a land an opponent controls");
|
||||
private static final FilterPermanent filter = new FilterLandPermanent("a land an opponent controls");
|
||||
|
||||
static {
|
||||
filter.add(SubType.PLAINS.getPredicate());
|
||||
filter.add(SuperType.BASIC.getPredicate());
|
||||
filter2.add(TargetController.OPPONENT.getControllerPredicate());
|
||||
filter.add(TargetController.OPPONENT.getControllerPredicate());
|
||||
}
|
||||
|
||||
public ArchaeomancersMap(UUID ownerId, CardSetInfo setInfo) {
|
||||
|
|
@ -40,12 +34,12 @@ public final class ArchaeomancersMap extends CardImpl {
|
|||
|
||||
// When Archaeomancer's Map enters the battlefield, search your library for up to two basic Plains cards, reveal them, put them into your hand, then shuffle.
|
||||
this.addAbility(new EntersBattlefieldTriggeredAbility(
|
||||
new SearchLibraryPutInHandEffect(new TargetCardInLibrary(0, 2, filter), true)
|
||||
new SearchLibraryPutInHandEffect(new TargetCardInLibrary(0, 2, StaticFilters.FILTER_CARD_BASIC_PLAINS), true)
|
||||
));
|
||||
|
||||
// Whenever a land enters the battlefield under an opponent's control, if that player controls more lands than you, you may put a land card from your hand onto the battlefield.
|
||||
this.addAbility(new EntersBattlefieldAllTriggeredAbility(
|
||||
new PutCardFromHandOntoBattlefieldEffect(StaticFilters.FILTER_CARD_LAND_A), filter2
|
||||
new PutCardFromHandOntoBattlefieldEffect(StaticFilters.FILTER_CARD_LAND_A), filter
|
||||
).withInterveningIf(ArchaeomancersMapCondition.instance));
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,5 @@
|
|||
|
||||
package mage.cards.b;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.SimpleActivatedAbility;
|
||||
import mage.abilities.costs.common.SacrificeSourceCost;
|
||||
|
|
@ -11,11 +9,15 @@ import mage.abilities.effects.common.search.SearchLibraryPutInPlayEffect;
|
|||
import mage.abilities.mana.ColorlessManaAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.*;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.SuperType;
|
||||
import mage.filter.FilterCard;
|
||||
import mage.filter.predicate.Predicates;
|
||||
import mage.target.common.TargetCardInLibrary;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author North
|
||||
*/
|
||||
|
|
@ -24,7 +26,6 @@ public final class BantPanorama extends CardImpl {
|
|||
private static final FilterCard filter = new FilterCard("a basic Forest, Plains, or Island card");
|
||||
|
||||
static {
|
||||
filter.add(CardType.LAND.getPredicate());
|
||||
filter.add(SuperType.BASIC.getPredicate());
|
||||
filter.add(Predicates.or(
|
||||
SubType.FOREST.getPredicate(),
|
||||
|
|
|
|||
|
|
@ -1,36 +1,27 @@
|
|||
package mage.cards.b;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.common.EntersBattlefieldThisOrAnotherTriggeredAbility;
|
||||
import mage.abilities.effects.common.GainLifeEffect;
|
||||
import mage.abilities.effects.common.search.SearchLibraryPutOntoBattlefieldTappedRestInHandEffect;
|
||||
import mage.cards.OmenCard;
|
||||
import mage.constants.SubType;
|
||||
import mage.abilities.keyword.FlyingAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.cards.OmenCard;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SuperType;
|
||||
import mage.constants.SubType;
|
||||
import mage.filter.FilterCard;
|
||||
import mage.filter.common.FilterBasicLandCard;
|
||||
import mage.filter.common.FilterControlledCreaturePermanent;
|
||||
import mage.filter.common.FilterBasicCard;
|
||||
import mage.filter.common.FilterCreaturePermanent;
|
||||
import mage.target.Target;
|
||||
import mage.target.common.TargetCardInLibrary;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Jmlundeen
|
||||
*/
|
||||
public final class BloomvineRegent extends OmenCard {
|
||||
|
||||
private static final FilterCard filter = new FilterCard("basic Forest cards");
|
||||
|
||||
static {
|
||||
filter.add(SubType.FOREST.getPredicate());
|
||||
filter.add(SuperType.BASIC.getPredicate());
|
||||
}
|
||||
private static final FilterCard filter = new FilterBasicCard(SubType.FOREST, "basic Forest cards");
|
||||
|
||||
public BloomvineRegent(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, new CardType[]{CardType.SORCERY}, "{3}{G}{G}", "Claim Territory", "{2}{G}");
|
||||
|
|
|
|||
|
|
@ -10,9 +10,9 @@ import mage.cards.CardSetInfo;
|
|||
import mage.constants.CardType;
|
||||
import mage.constants.SagaChapter;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.SuperType;
|
||||
import mage.filter.FilterCard;
|
||||
import mage.filter.common.FilterLandCard;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.filter.common.FilterBasicCard;
|
||||
import mage.target.common.TargetCardInLibrary;
|
||||
import mage.target.common.TargetCardInYourGraveyard;
|
||||
|
||||
|
|
@ -23,13 +23,7 @@ import java.util.UUID;
|
|||
*/
|
||||
public final class BoseijuReachesSkyward extends CardImpl {
|
||||
|
||||
private static final FilterCard filter = new FilterCard("basic Forest cards");
|
||||
private static final FilterCard filter2 = new FilterLandCard("land card from your graveyard");
|
||||
|
||||
static {
|
||||
filter.add(SuperType.BASIC.getPredicate());
|
||||
filter.add(SubType.FOREST.getPredicate());
|
||||
}
|
||||
private static final FilterCard filter = new FilterBasicCard(SubType.FOREST, "basic Forest cards");
|
||||
|
||||
public BoseijuReachesSkyward(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{G}");
|
||||
|
|
@ -52,7 +46,7 @@ public final class BoseijuReachesSkyward extends CardImpl {
|
|||
sagaAbility.addChapterEffect(
|
||||
this, SagaChapter.CHAPTER_II, SagaChapter.CHAPTER_II,
|
||||
new PutOnLibraryTargetEffect(true),
|
||||
new TargetCardInYourGraveyard(0, 1, filter2)
|
||||
new TargetCardInYourGraveyard(0, 1, StaticFilters.FILTER_CARD_LAND_FROM_YOUR_GRAVEYARD)
|
||||
);
|
||||
|
||||
// III — Exile this Saga, then return it to the battlefield transformed under your control.
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ import mage.cards.CardSetInfo;
|
|||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.filter.FilterCard;
|
||||
import mage.filter.common.FilterBasicLandCard;
|
||||
import mage.filter.common.FilterBasicCard;
|
||||
import mage.filter.predicate.Predicates;
|
||||
import mage.target.common.TargetCardInLibrary;
|
||||
|
||||
|
|
@ -25,7 +25,7 @@ import java.util.UUID;
|
|||
*/
|
||||
public final class BountifulLandscape extends CardImpl {
|
||||
|
||||
private static final FilterCard filter = new FilterBasicLandCard("a basic Forest, Island, or Mountain card");
|
||||
private static final FilterCard filter = new FilterBasicCard("a basic Forest, Island, or Mountain card");
|
||||
|
||||
static {
|
||||
filter.add(Predicates.or(
|
||||
|
|
|
|||
|
|
@ -1,13 +1,12 @@
|
|||
|
||||
package mage.cards.c;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
import mage.Mana;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.costs.common.TapSourceCost;
|
||||
import mage.abilities.costs.mana.GenericManaCost;
|
||||
import mage.abilities.dynamicvalue.DynamicValue;
|
||||
import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount;
|
||||
import mage.abilities.hint.Hint;
|
||||
import mage.abilities.hint.ValueHint;
|
||||
import mage.abilities.mana.ColorlessManaAbility;
|
||||
import mage.abilities.mana.DynamicManaAbility;
|
||||
|
|
@ -16,21 +15,26 @@ import mage.cards.CardSetInfo;
|
|||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.SuperType;
|
||||
import mage.filter.common.FilterControlledLandPermanent;
|
||||
import mage.filter.FilterPermanent;
|
||||
import mage.filter.common.FilterControlledPermanent;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author JRHerlehy
|
||||
* Created on 4/7/18.
|
||||
* Created on 4/7/18.
|
||||
*/
|
||||
public final class CabalStronghold extends CardImpl {
|
||||
|
||||
private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent("basic Swamp you control");
|
||||
private static final FilterPermanent filter = new FilterControlledPermanent(SubType.SWAMP, "basic Swamp you control");
|
||||
|
||||
static {
|
||||
filter.add(SuperType.BASIC.getPredicate());
|
||||
filter.add(SubType.SWAMP.getPredicate());
|
||||
}
|
||||
|
||||
private static final DynamicValue xValue = new PermanentsOnBattlefieldCount(filter);
|
||||
private static final Hint hint = new ValueHint("Basic Swamps you control", xValue);
|
||||
|
||||
public CabalStronghold(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
|
||||
|
||||
|
|
@ -38,9 +42,9 @@ public final class CabalStronghold extends CardImpl {
|
|||
this.addAbility(new ColorlessManaAbility());
|
||||
|
||||
// {3}, {T}: Add {B} for each basic Swamp you control.
|
||||
Ability ability = new DynamicManaAbility(Mana.BlackMana(1), new PermanentsOnBattlefieldCount(filter), new GenericManaCost(3));
|
||||
Ability ability = new DynamicManaAbility(Mana.BlackMana(1), xValue, new GenericManaCost(3));
|
||||
ability.addCost(new TapSourceCost());
|
||||
this.addAbility(ability.addHint(new ValueHint("Basic Swamps you control", new PermanentsOnBattlefieldCount(filter))));
|
||||
this.addAbility(ability.addHint(hint));
|
||||
}
|
||||
|
||||
private CabalStronghold(final CabalStronghold card) {
|
||||
|
|
|
|||
|
|
@ -12,13 +12,10 @@ import mage.abilities.keyword.CantBeBlockedSourceAbility;
|
|||
import mage.cards.Card;
|
||||
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.constants.*;
|
||||
import mage.filter.FilterCard;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.filter.common.FilterBasicLandCard;
|
||||
import mage.filter.common.FilterLandCard;
|
||||
import mage.filter.predicate.Predicate;
|
||||
import mage.game.Game;
|
||||
import mage.game.permanent.Permanent;
|
||||
|
|
@ -101,7 +98,8 @@ class CanoptekWraithEffect extends OneShotEffect {
|
|||
if (permanent == null) {
|
||||
return false;
|
||||
}
|
||||
FilterCard filter = new FilterBasicLandCard("basic land cards with the same name as the chosen land");
|
||||
FilterCard filter = new FilterLandCard("basic land cards with the same name as the chosen land");
|
||||
filter.add(SuperType.BASIC.getPredicate());
|
||||
filter.add(new CanoptekWraithPredicate(permanent));
|
||||
TargetCardInLibrary targetCard = new TargetCardInLibrary(0, 2, filter);
|
||||
player.searchLibrary(targetCard, source, game);
|
||||
|
|
|
|||
|
|
@ -8,9 +8,7 @@ import mage.abilities.keyword.CraftAbility;
|
|||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.filter.FilterCard;
|
||||
import mage.filter.common.FilterBasicLandCard;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.target.common.TargetCardInLibrary;
|
||||
|
||||
import java.util.UUID;
|
||||
|
|
@ -20,15 +18,13 @@ import java.util.UUID;
|
|||
*/
|
||||
public final class ClayFiredBricks extends CardImpl {
|
||||
|
||||
private static final FilterCard filter = new FilterBasicLandCard(SubType.PLAINS);
|
||||
|
||||
public ClayFiredBricks(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{1}{W}");
|
||||
this.secondSideCardClazz = mage.cards.c.CosmiumKiln.class;
|
||||
|
||||
// When Clay-Fired Bricks enters the battlefield, search your library for a basic Plains card, reveal it, put it into your hand, then shuffle. You gain 2 life.
|
||||
Ability ability = new EntersBattlefieldTriggeredAbility(
|
||||
new SearchLibraryPutInHandEffect(new TargetCardInLibrary(filter), true)
|
||||
new SearchLibraryPutInHandEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_PLAINS), true)
|
||||
);
|
||||
ability.addEffect(new GainLifeEffect(2));
|
||||
this.addAbility(ability);
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ import mage.cards.CardSetInfo;
|
|||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.filter.FilterCard;
|
||||
import mage.filter.common.FilterBasicLandCard;
|
||||
import mage.filter.common.FilterBasicCard;
|
||||
import mage.filter.predicate.Predicates;
|
||||
import mage.target.common.TargetCardInLibrary;
|
||||
|
||||
|
|
@ -25,7 +25,7 @@ import java.util.UUID;
|
|||
*/
|
||||
public final class ContaminatedLandscape extends CardImpl {
|
||||
|
||||
private static final FilterCard filter = new FilterBasicLandCard("a basic Plains, Island, or Swamp card");
|
||||
private static final FilterCard filter = new FilterBasicCard("a basic Plains, Island, or Swamp card");
|
||||
|
||||
static {
|
||||
filter.add(Predicates.or(
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ import mage.cards.CardSetInfo;
|
|||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.filter.FilterCard;
|
||||
import mage.filter.common.FilterBasicLandCard;
|
||||
import mage.filter.common.FilterBasicCard;
|
||||
import mage.filter.predicate.Predicates;
|
||||
import mage.target.common.TargetCardInLibrary;
|
||||
|
||||
|
|
@ -25,7 +25,7 @@ import java.util.UUID;
|
|||
*/
|
||||
public final class DeceptiveLandscape extends CardImpl {
|
||||
|
||||
private static final FilterCard filter = new FilterBasicLandCard("a basic Plains, Swamp, or Forest card");
|
||||
private static final FilterCard filter = new FilterBasicCard("a basic Plains, Swamp, or Forest card");
|
||||
|
||||
static {
|
||||
filter.add(Predicates.or(
|
||||
|
|
|
|||
|
|
@ -1,7 +1,5 @@
|
|||
package mage.cards.e;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
import mage.abilities.condition.common.FerociousCondition;
|
||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||
import mage.abilities.effects.common.SacrificeControllerEffect;
|
||||
|
|
@ -9,23 +7,20 @@ import mage.abilities.effects.common.search.SearchLibraryPutInPlayEffect;
|
|||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.filter.FilterCard;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.filter.common.FilterBasicLandCard;
|
||||
import mage.target.common.TargetCardInLibrary;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Susucr
|
||||
*/
|
||||
public final class EntishRestoration extends CardImpl {
|
||||
|
||||
private static final FilterCard filter = new FilterBasicLandCard("basic land cards");
|
||||
|
||||
private static final String rule = "Search your library for up to two basic land cards, " +
|
||||
"put them onto the battlefield tapped, then shuffle. " +
|
||||
"If " + FerociousCondition.instance.toString() + ", instead search your library for up " +
|
||||
"to three basic land cards, put them onto the battlefield tapped, then shuffle.";
|
||||
"put them onto the battlefield tapped, then shuffle. " +
|
||||
"If " + FerociousCondition.instance + ", instead search your library for up " +
|
||||
"to three basic land cards, put them onto the battlefield tapped, then shuffle.";
|
||||
|
||||
public EntishRestoration(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{G}");
|
||||
|
|
@ -35,14 +30,14 @@ public final class EntishRestoration extends CardImpl {
|
|||
// creature with power 4 or greater, instead search your library for up
|
||||
// to three basic land cards, put them onto the battlefield tapped, then shuffle.
|
||||
this.getSpellAbility().addEffect(new SacrificeControllerEffect(
|
||||
StaticFilters.FILTER_LAND, 1, null
|
||||
StaticFilters.FILTER_LAND, 1, null
|
||||
).setText("Sacrifice a land."));
|
||||
this.getSpellAbility().addEffect(
|
||||
new ConditionalOneShotEffect(
|
||||
new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(0, 3, filter), true),
|
||||
new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(0, 2, filter), true),
|
||||
FerociousCondition.instance, rule
|
||||
)
|
||||
new ConditionalOneShotEffect(
|
||||
new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(0, 3, StaticFilters.FILTER_CARD_BASIC_LANDS), true),
|
||||
new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(0, 2, StaticFilters.FILTER_CARD_BASIC_LANDS), true),
|
||||
FerociousCondition.instance, rule
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -7,8 +7,8 @@ import mage.cards.CardImpl;
|
|||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.SuperType;
|
||||
import mage.filter.FilterCard;
|
||||
import mage.filter.common.FilterBasicCard;
|
||||
import mage.target.common.TargetCardInLibrary;
|
||||
|
||||
import java.util.UUID;
|
||||
|
|
@ -18,12 +18,7 @@ import java.util.UUID;
|
|||
*/
|
||||
public final class FieldTrip extends CardImpl {
|
||||
|
||||
private static final FilterCard filter = new FilterCard("basic Forest card");
|
||||
|
||||
static {
|
||||
filter.add(SuperType.BASIC.getPredicate());
|
||||
filter.add(SubType.FOREST.getPredicate());
|
||||
}
|
||||
private static final FilterCard filter = new FilterBasicCard(SubType.FOREST);
|
||||
|
||||
public FieldTrip(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{G}");
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ import mage.cards.CardSetInfo;
|
|||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.filter.FilterCard;
|
||||
import mage.filter.common.FilterBasicLandCard;
|
||||
import mage.filter.common.FilterBasicCard;
|
||||
import mage.filter.predicate.Predicates;
|
||||
import mage.target.common.TargetCardInLibrary;
|
||||
|
||||
|
|
@ -25,7 +25,7 @@ import java.util.UUID;
|
|||
*/
|
||||
public final class ForebodingLandscape extends CardImpl {
|
||||
|
||||
private static final FilterCard filter = new FilterBasicLandCard("a basic Swamp, Forest, or Island card");
|
||||
private static final FilterCard filter = new FilterBasicCard("a basic Swamp, Forest, or Island card");
|
||||
|
||||
static {
|
||||
filter.add(Predicates.or(
|
||||
|
|
|
|||
|
|
@ -9,8 +9,12 @@ import mage.abilities.effects.common.PutCardFromHandOntoBattlefieldEffect;
|
|||
import mage.abilities.mana.SimpleManaAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.*;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.TimingRule;
|
||||
import mage.constants.Zone;
|
||||
import mage.filter.FilterCard;
|
||||
import mage.filter.common.FilterBasicCard;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
|
|
@ -19,12 +23,7 @@ import java.util.UUID;
|
|||
*/
|
||||
public final class GaeasTouch extends CardImpl {
|
||||
|
||||
private static final FilterCard filter = new FilterCard("a basic Forest card");
|
||||
|
||||
static {
|
||||
filter.add(SuperType.BASIC.getPredicate());
|
||||
filter.add(SubType.FOREST.getPredicate());
|
||||
}
|
||||
private static final FilterCard filter = new FilterBasicCard(SubType.FOREST);
|
||||
|
||||
public GaeasTouch(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{G}{G}");
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ import mage.cards.CardSetInfo;
|
|||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.filter.FilterCard;
|
||||
import mage.filter.common.FilterBasicLandCard;
|
||||
import mage.filter.common.FilterBasicCard;
|
||||
import mage.target.common.TargetCardInLibrary;
|
||||
import mage.target.common.TargetCardInYourGraveyard;
|
||||
|
||||
|
|
@ -19,7 +19,7 @@ import java.util.UUID;
|
|||
*/
|
||||
public final class GlimpseTheCore extends CardImpl {
|
||||
|
||||
private static final FilterCard filter = new FilterBasicLandCard(SubType.FOREST);
|
||||
private static final FilterCard filter = new FilterBasicCard(SubType.FOREST);
|
||||
private static final FilterCard filter2 = new FilterCard("Cave card from your graveyard");
|
||||
|
||||
static {
|
||||
|
|
|
|||
|
|
@ -9,8 +9,7 @@ import mage.cards.CardImpl;
|
|||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.SuperType;
|
||||
import mage.filter.FilterCard;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.target.common.TargetCardInLibrary;
|
||||
|
||||
import java.util.UUID;
|
||||
|
|
@ -20,13 +19,6 @@ import java.util.UUID;
|
|||
*/
|
||||
public final class GloryheathLynx extends CardImpl {
|
||||
|
||||
private static final FilterCard filter = new FilterCard("basic Plains card");
|
||||
|
||||
static {
|
||||
filter.add(SuperType.BASIC.getPredicate());
|
||||
filter.add(SubType.PLAINS.getPredicate());
|
||||
}
|
||||
|
||||
public GloryheathLynx(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}");
|
||||
|
||||
|
|
@ -40,7 +32,7 @@ public final class GloryheathLynx extends CardImpl {
|
|||
|
||||
// Whenever this creature attacks while saddled, search your library for a basic Plains card, reveal it, put it into your hand, then shuffle.
|
||||
this.addAbility(new AttacksWhileSaddledTriggeredAbility(
|
||||
new SearchLibraryPutInHandEffect(new TargetCardInLibrary(filter), true)
|
||||
new SearchLibraryPutInHandEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_PLAINS), true)
|
||||
));
|
||||
|
||||
// Saddle 2
|
||||
|
|
|
|||
|
|
@ -1,7 +1,5 @@
|
|||
|
||||
package mage.cards.g;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.SimpleActivatedAbility;
|
||||
import mage.abilities.costs.common.SacrificeSourceCost;
|
||||
|
|
@ -11,13 +9,16 @@ import mage.abilities.effects.common.search.SearchLibraryPutInPlayEffect;
|
|||
import mage.abilities.mana.ColorlessManaAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.*;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.SuperType;
|
||||
import mage.filter.FilterCard;
|
||||
import mage.filter.predicate.Predicates;
|
||||
import mage.target.common.TargetCardInLibrary;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author North
|
||||
*/
|
||||
public final class GrixisPanorama extends CardImpl {
|
||||
|
|
@ -25,7 +26,6 @@ public final class GrixisPanorama extends CardImpl {
|
|||
private static final FilterCard filter = new FilterCard("a basic Island, Swamp, or Mountain card");
|
||||
|
||||
static {
|
||||
filter.add(CardType.LAND.getPredicate());
|
||||
filter.add(SuperType.BASIC.getPredicate());
|
||||
filter.add(Predicates.or(
|
||||
SubType.ISLAND.getPredicate(),
|
||||
|
|
@ -34,7 +34,7 @@ public final class GrixisPanorama extends CardImpl {
|
|||
}
|
||||
|
||||
public GrixisPanorama(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
|
||||
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
|
||||
|
||||
this.addAbility(new ColorlessManaAbility());
|
||||
TargetCardInLibrary target = new TargetCardInLibrary(filter);
|
||||
|
|
|
|||
|
|
@ -9,8 +9,7 @@ import mage.cards.CardImpl;
|
|||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.filter.FilterCard;
|
||||
import mage.filter.common.FilterBasicLandCard;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.target.common.TargetCardInYourGraveyard;
|
||||
|
||||
import java.util.UUID;
|
||||
|
|
@ -20,8 +19,6 @@ import java.util.UUID;
|
|||
*/
|
||||
public final class Groundskeeper extends CardImpl {
|
||||
|
||||
private static final FilterCard filter = new FilterBasicLandCard("basic land card from your graveyard");
|
||||
|
||||
public Groundskeeper(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{G}");
|
||||
this.subtype.add(SubType.HUMAN);
|
||||
|
|
@ -31,7 +28,7 @@ public final class Groundskeeper extends CardImpl {
|
|||
|
||||
// {1}{G}: Return target basic land card from your graveyard to your hand.
|
||||
Ability ability = new SimpleActivatedAbility(new ReturnFromGraveyardToHandTargetEffect(), new ManaCostsImpl<>("{1}{G}"));
|
||||
ability.addTarget(new TargetCardInYourGraveyard(filter));
|
||||
ability.addTarget(new TargetCardInYourGraveyard(StaticFilters.FILTER_CARD_BASIC_LAND));
|
||||
this.addAbility(ability);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,6 @@
|
|||
|
||||
package mage.cards.j;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.SimpleActivatedAbility;
|
||||
import mage.abilities.costs.common.SacrificeSourceCost;
|
||||
|
|
@ -12,21 +11,23 @@ import mage.abilities.effects.common.search.SearchLibraryPutInPlayEffect;
|
|||
import mage.abilities.mana.ColorlessManaAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.*;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.SuperType;
|
||||
import mage.filter.FilterCard;
|
||||
import mage.filter.predicate.Predicates;
|
||||
import mage.target.common.TargetCardInLibrary;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author BetaSteward_at_googlemail.com
|
||||
*/
|
||||
public final class JundPanorama extends CardImpl {
|
||||
|
||||
private static final FilterCard filter = new FilterCard("a basic Swamp, Mountain, or Forest card");
|
||||
private static final FilterCard filter = new FilterCard("a basic Swamp, Mountain, or Forest card");
|
||||
|
||||
static {
|
||||
filter.add(CardType.LAND.getPredicate());
|
||||
filter.add(SuperType.BASIC.getPredicate());
|
||||
filter.add(Predicates.or(
|
||||
SubType.SWAMP.getPredicate(),
|
||||
|
|
@ -35,7 +36,7 @@ public final class JundPanorama extends CardImpl {
|
|||
}
|
||||
|
||||
public JundPanorama(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.LAND},null);
|
||||
super(ownerId, setInfo, new CardType[]{CardType.LAND}, null);
|
||||
this.addAbility(new ColorlessManaAbility());
|
||||
TargetCardInLibrary target = new TargetCardInLibrary(filter);
|
||||
Ability ability = new SimpleActivatedAbility(new SearchLibraryPutInPlayEffect(target, true), new GenericManaCost(1));
|
||||
|
|
|
|||
|
|
@ -1,7 +1,5 @@
|
|||
package mage.cards.k;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.Mode;
|
||||
import mage.abilities.effects.OneShotEffect;
|
||||
|
|
@ -15,10 +13,8 @@ import mage.cards.CardImpl;
|
|||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Outcome;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.SuperType;
|
||||
import mage.counters.CounterType;
|
||||
import mage.filter.FilterCard;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.game.Game;
|
||||
import mage.game.permanent.Permanent;
|
||||
import mage.game.permanent.token.Construct2Token;
|
||||
|
|
@ -27,20 +23,13 @@ import mage.target.common.TargetCardInLibrary;
|
|||
import mage.target.common.TargetControlledCreaturePermanent;
|
||||
import mage.target.targetpointer.FixedTarget;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author weirddan455
|
||||
*/
|
||||
public final class KaylasCommand extends CardImpl {
|
||||
|
||||
private static final FilterCard filter
|
||||
= new FilterCard("a basic Plains card");
|
||||
|
||||
static {
|
||||
filter.add(SubType.PLAINS.getPredicate());
|
||||
filter.add(SuperType.BASIC.getPredicate());
|
||||
}
|
||||
|
||||
public KaylasCommand(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{W}{W}");
|
||||
|
||||
|
|
@ -55,7 +44,7 @@ public final class KaylasCommand extends CardImpl {
|
|||
this.getSpellAbility().addMode(new Mode(new KaylasCommandCounterEffect()));
|
||||
|
||||
// * Search your library for a basic Plains card, reveal it, put it into your hand, then shuffle.
|
||||
this.getSpellAbility().addMode(new Mode(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(filter), true)));
|
||||
this.getSpellAbility().addMode(new Mode(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_PLAINS), true)));
|
||||
|
||||
// * You gain 2 life and scry 2.
|
||||
Mode mode = new Mode(new GainLifeEffect(2));
|
||||
|
|
|
|||
|
|
@ -10,11 +10,11 @@ import mage.cards.CardImpl;
|
|||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.SuperType;
|
||||
import mage.constants.TargetController;
|
||||
import mage.filter.FilterCard;
|
||||
import mage.filter.FilterPermanent;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.filter.common.FilterBasicCard;
|
||||
import mage.game.Game;
|
||||
import mage.game.permanent.token.SoldierToken;
|
||||
import mage.target.common.TargetCardInLibrary;
|
||||
|
|
@ -26,13 +26,6 @@ import java.util.UUID;
|
|||
*/
|
||||
public final class KeeperOfTheAccord extends CardImpl {
|
||||
|
||||
private static final FilterCard filter = new FilterCard("basic Plains card");
|
||||
|
||||
static {
|
||||
filter.add(SuperType.BASIC.getPredicate());
|
||||
filter.add(SubType.PLAINS.getPredicate());
|
||||
}
|
||||
|
||||
public KeeperOfTheAccord(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}");
|
||||
|
||||
|
|
|
|||
|
|
@ -2,16 +2,20 @@ package mage.cards.k;
|
|||
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.LoyaltyAbility;
|
||||
import mage.abilities.dynamicvalue.DynamicValue;
|
||||
import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount;
|
||||
import mage.abilities.effects.common.DamageTargetEffect;
|
||||
import mage.abilities.effects.common.GetEmblemEffect;
|
||||
import mage.abilities.effects.common.search.SearchLibraryPutInHandEffect;
|
||||
import mage.abilities.hint.Hint;
|
||||
import mage.abilities.hint.ValueHint;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.SuperType;
|
||||
import mage.filter.FilterCard;
|
||||
import mage.filter.common.FilterBasicCard;
|
||||
import mage.filter.common.FilterControlledPermanent;
|
||||
import mage.game.command.emblems.KothFireOfResistanceEmblem;
|
||||
import mage.target.common.TargetCardInLibrary;
|
||||
|
|
@ -24,14 +28,11 @@ import java.util.UUID;
|
|||
*/
|
||||
public final class KothFireOfResistance extends CardImpl {
|
||||
|
||||
private static final FilterCard filter = new FilterCard("basic Mountain card");
|
||||
private static final FilterControlledPermanent filter2 = new FilterControlledPermanent("Mountains you control");
|
||||
|
||||
static {
|
||||
filter.add(SuperType.BASIC.getPredicate());
|
||||
filter.add(SubType.MOUNTAIN.getPredicate());
|
||||
filter2.add(SubType.MOUNTAIN.getPredicate());
|
||||
}
|
||||
private static final FilterCard filter = new FilterBasicCard(SubType.MOUNTAIN);
|
||||
private static final DynamicValue xValue = new PermanentsOnBattlefieldCount(
|
||||
new FilterControlledPermanent(SubType.MOUNTAIN, "Mountains you control")
|
||||
);
|
||||
private static final Hint hint = new ValueHint(xValue.getMessage(), xValue);
|
||||
|
||||
public KothFireOfResistance(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{2}{R}{R}");
|
||||
|
|
@ -44,10 +45,10 @@ public final class KothFireOfResistance extends CardImpl {
|
|||
this.addAbility(new LoyaltyAbility(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(filter), true), 2));
|
||||
|
||||
// −3: Koth, Fire of Resistance deals damage to target creature equal to the number of Mountains you control.
|
||||
Ability ability = new LoyaltyAbility(new DamageTargetEffect(new PermanentsOnBattlefieldCount(filter2))
|
||||
Ability ability = new LoyaltyAbility(new DamageTargetEffect(xValue)
|
||||
.setText("{this} deals damage to target creature equal to the number of Mountains you control"), -3);
|
||||
ability.addTarget(new TargetCreaturePermanent());
|
||||
this.addAbility(ability);
|
||||
this.addAbility(ability.addHint(hint));
|
||||
|
||||
// −7: You get an emblem with "Whenever a Mountain you control enters, this emblem deals 4 damage to any target."
|
||||
this.addAbility(new LoyaltyAbility(new GetEmblemEffect(new KothFireOfResistanceEmblem()), -7));
|
||||
|
|
|
|||
|
|
@ -1,8 +1,6 @@
|
|||
|
||||
package mage.cards.l;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.DelayedTriggeredAbility;
|
||||
import mage.abilities.common.SimpleActivatedAbility;
|
||||
|
|
@ -14,23 +12,21 @@ import mage.abilities.dynamicvalue.common.StaticValue;
|
|||
import mage.abilities.effects.Effect;
|
||||
import mage.abilities.effects.OneShotEffect;
|
||||
import mage.abilities.effects.common.DrawCardTargetEffect;
|
||||
import mage.cards.Card;
|
||||
import mage.cards.Cards;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardsImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.cards.*;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Outcome;
|
||||
import mage.constants.Zone;
|
||||
import mage.filter.common.FilterBasicLandCard;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.game.Game;
|
||||
import mage.players.Player;
|
||||
import mage.target.TargetPlayer;
|
||||
import mage.target.common.TargetCardInGraveyard;
|
||||
import mage.target.targetpointer.FixedTarget;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author ThomasLerner, LevelX2 & L_J
|
||||
*/
|
||||
public final class LodestoneBauble extends CardImpl {
|
||||
|
|
@ -61,7 +57,7 @@ public final class LodestoneBauble extends CardImpl {
|
|||
class LodestoneBaubleTarget extends TargetCardInGraveyard {
|
||||
|
||||
public LodestoneBaubleTarget() {
|
||||
super(0, 4, new FilterBasicLandCard("basic land cards from a player's graveyard"));
|
||||
super(0, 4, StaticFilters.FILTER_CARD_BASIC_LANDS);
|
||||
}
|
||||
|
||||
private LodestoneBaubleTarget(final LodestoneBaubleTarget target) {
|
||||
|
|
|
|||
|
|
@ -10,9 +10,7 @@ import mage.cards.CardImpl;
|
|||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.filter.FilterCard;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.filter.common.FilterBasicLandCard;
|
||||
import mage.target.common.TargetCardInLibrary;
|
||||
|
||||
import java.util.UUID;
|
||||
|
|
@ -22,7 +20,6 @@ import java.util.UUID;
|
|||
*/
|
||||
public final class LoyalWarhound extends CardImpl {
|
||||
|
||||
private static final FilterCard filter = new FilterBasicLandCard(SubType.PLAINS);
|
||||
private static final Condition condition = new OpponentControlsMoreCondition(StaticFilters.FILTER_LANDS);
|
||||
|
||||
public LoyalWarhound(UUID ownerId, CardSetInfo setInfo) {
|
||||
|
|
@ -38,7 +35,7 @@ public final class LoyalWarhound extends CardImpl {
|
|||
// When Loyal Warhound enters the battlefield, if an opponent controls more lands than you,
|
||||
// search your library for a basic Plains card, put it onto the battlefield tapped, then shuffle.
|
||||
this.addAbility(new EntersBattlefieldTriggeredAbility(
|
||||
new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(filter), true)
|
||||
new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_PLAINS), true)
|
||||
).withInterveningIf(condition));
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -6,8 +6,7 @@ import mage.abilities.keyword.CyclingAbility;
|
|||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.filter.FilterCard;
|
||||
import mage.filter.common.FilterBasicLandCard;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.target.common.TargetCardInLibrary;
|
||||
|
||||
import java.util.UUID;
|
||||
|
|
@ -17,14 +16,12 @@ import java.util.UUID;
|
|||
*/
|
||||
public final class MigrationPath extends CardImpl {
|
||||
|
||||
private static final FilterCard filter = new FilterBasicLandCard("basic land cards");
|
||||
|
||||
public MigrationPath(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{G}");
|
||||
|
||||
// Search your library for up to two basic land cards, put them onto the battlefield tapped, then shuffle your library.
|
||||
this.getSpellAbility().addEffect(new SearchLibraryPutInPlayEffect(
|
||||
new TargetCardInLibrary(0, 2, filter), true
|
||||
new TargetCardInLibrary(0, 2, StaticFilters.FILTER_CARD_BASIC_LANDS), true
|
||||
));
|
||||
|
||||
// Cycling {2}
|
||||
|
|
|
|||
|
|
@ -10,8 +10,8 @@ import mage.cards.CardImpl;
|
|||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.SuperType;
|
||||
import mage.filter.FilterCard;
|
||||
import mage.filter.common.FilterBasicCard;
|
||||
import mage.target.common.TargetCardInLibrary;
|
||||
|
||||
import java.util.UUID;
|
||||
|
|
@ -21,12 +21,7 @@ import java.util.UUID;
|
|||
*/
|
||||
public final class NeverwinterDryad extends CardImpl {
|
||||
|
||||
private static final FilterCard filter = new FilterCard("a basic Forest card");
|
||||
|
||||
static {
|
||||
filter.add(SuperType.BASIC.getPredicate());
|
||||
filter.add(SubType.FOREST.getPredicate());
|
||||
}
|
||||
private static final FilterCard filter = new FilterBasicCard(SubType.FOREST);
|
||||
|
||||
public NeverwinterDryad(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{G}");
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ import mage.cards.CardImpl;
|
|||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.*;
|
||||
import mage.filter.FilterCard;
|
||||
import mage.filter.common.FilterBasicCard;
|
||||
import mage.filter.common.FilterLandPermanent;
|
||||
import mage.target.common.TargetCardInLibrary;
|
||||
|
||||
|
|
@ -22,12 +23,7 @@ import java.util.UUID;
|
|||
*/
|
||||
public final class NissaVastwoodSeer extends CardImpl {
|
||||
|
||||
private static final FilterCard filter = new FilterCard("basic Forest card");
|
||||
|
||||
static {
|
||||
filter.add(SuperType.BASIC.getPredicate());
|
||||
filter.add(SubType.FOREST.getPredicate());
|
||||
}
|
||||
private static final FilterCard filter = new FilterBasicCard(SubType.FOREST);
|
||||
|
||||
private static final Condition condition = new PermanentsOnTheBattlefieldCondition(
|
||||
new FilterLandPermanent("you control seven or more lands"),
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
|
||||
package mage.cards.n;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.condition.common.SpellMasteryCondition;
|
||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||
import mage.abilities.effects.common.search.SearchLibraryPutOntoBattlefieldTappedRestInHandEffect;
|
||||
|
|
@ -9,22 +8,18 @@ import mage.cards.CardImpl;
|
|||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.SuperType;
|
||||
import mage.filter.FilterCard;
|
||||
import mage.filter.common.FilterBasicCard;
|
||||
import mage.target.common.TargetCardInLibrary;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author LevelX2
|
||||
*/
|
||||
public final class NissasPilgrimage extends CardImpl {
|
||||
|
||||
private static final FilterCard filter = new FilterCard("basic Forest cards");
|
||||
|
||||
static {
|
||||
filter.add(SuperType.BASIC.getPredicate());
|
||||
filter.add(SubType.FOREST.getPredicate());
|
||||
}
|
||||
private static final FilterCard filter = new FilterBasicCard(SubType.FOREST, "basic Forest cards");
|
||||
|
||||
public NissasPilgrimage(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{G}");
|
||||
|
|
|
|||
|
|
@ -8,10 +8,10 @@ import mage.cards.CardImpl;
|
|||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.SuperType;
|
||||
import mage.filter.FilterCard;
|
||||
import mage.filter.FilterPermanent;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.filter.common.FilterBasicCard;
|
||||
import mage.filter.common.FilterControlledPlaneswalkerPermanent;
|
||||
import mage.target.common.TargetCardInLibrary;
|
||||
|
||||
|
|
@ -22,14 +22,9 @@ import java.util.UUID;
|
|||
*/
|
||||
public final class NissasTriumph extends CardImpl {
|
||||
|
||||
private static final FilterCard filter = new FilterCard("basic Forest cards");
|
||||
private static final FilterCard filter = new FilterBasicCard(SubType.FOREST, "basic Forest cards");
|
||||
private static final FilterPermanent filter2 = new FilterControlledPlaneswalkerPermanent(SubType.NISSA);
|
||||
|
||||
static {
|
||||
filter.add(SuperType.BASIC.getPredicate());
|
||||
filter.add(SubType.FOREST.getPredicate());
|
||||
}
|
||||
|
||||
private static final Condition condition = new PermanentsOnTheBattlefieldCondition(filter2);
|
||||
|
||||
public NissasTriumph(UUID ownerId, CardSetInfo setInfo) {
|
||||
|
|
|
|||
|
|
@ -1,10 +1,6 @@
|
|||
|
||||
package mage.cards.o;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
||||
|
|
@ -16,13 +12,16 @@ import mage.constants.CardType;
|
|||
import mage.constants.Outcome;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.Zone;
|
||||
import mage.filter.common.FilterBasicLandCard;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.game.Game;
|
||||
import mage.players.Player;
|
||||
import mage.target.common.TargetCardInLibrary;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class OldGrowthDryads extends CardImpl {
|
||||
|
|
@ -70,7 +69,7 @@ class OldGrowthDryadsEffect extends OneShotEffect {
|
|||
for (UUID opponentId : game.getOpponents(source.getControllerId())) {
|
||||
Player opponent = game.getPlayer(opponentId);
|
||||
if (opponent != null && opponent.chooseUse(Outcome.PutLandInPlay, "Search your library for a basic land card and put it onto the battlefield tapped?", source, game)) {
|
||||
TargetCardInLibrary target = new TargetCardInLibrary(new FilterBasicLandCard());
|
||||
TargetCardInLibrary target = new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND);
|
||||
if (opponent.searchLibrary(target, source, game)) {
|
||||
Card targetCard = opponent.getLibrary().getCard(target.getFirstTarget(), game);
|
||||
if (targetCard != null) {
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@ import mage.cards.CardImpl;
|
|||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.filter.common.FilterBasicLandCard;
|
||||
import mage.target.common.TargetCardInLibrary;
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ import mage.cards.CardSetInfo;
|
|||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.filter.FilterCard;
|
||||
import mage.filter.common.FilterBasicLandCard;
|
||||
import mage.filter.common.FilterBasicCard;
|
||||
import mage.filter.predicate.Predicates;
|
||||
import mage.target.common.TargetCardInLibrary;
|
||||
|
||||
|
|
@ -25,7 +25,7 @@ import java.util.UUID;
|
|||
*/
|
||||
public final class PerilousLandscape extends CardImpl {
|
||||
|
||||
private static final FilterCard filter = new FilterBasicLandCard("a basic Island, Mountain, or Plains card");
|
||||
private static final FilterCard filter = new FilterBasicCard("a basic Island, Mountain, or Plains card");
|
||||
|
||||
static {
|
||||
filter.add(Predicates.or(
|
||||
|
|
|
|||
|
|
@ -10,9 +10,8 @@ import mage.cards.CardImpl;
|
|||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.SuperType;
|
||||
import mage.constants.Zone;
|
||||
import mage.filter.FilterCard;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.target.common.TargetCardInLibrary;
|
||||
|
||||
import java.util.UUID;
|
||||
|
|
@ -22,13 +21,6 @@ import java.util.UUID;
|
|||
*/
|
||||
public final class PilgrimOfTheAges extends CardImpl {
|
||||
|
||||
private static final FilterCard filter = new FilterCard("a basic Plains card");
|
||||
|
||||
static {
|
||||
filter.add(SuperType.BASIC.getPredicate());
|
||||
filter.add(SubType.PLAINS.getPredicate());
|
||||
}
|
||||
|
||||
public PilgrimOfTheAges(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}");
|
||||
|
||||
|
|
@ -38,7 +30,7 @@ public final class PilgrimOfTheAges extends CardImpl {
|
|||
|
||||
// When Pilgrim of the Ages enters the battlefield, you may search your library for a basic Plains card, reveal it, put it into your hand, then shuffle.
|
||||
this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInHandEffect(
|
||||
new TargetCardInLibrary(filter), true
|
||||
new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_PLAINS), true
|
||||
), true));
|
||||
|
||||
// {6}: Return Pilgrim of the Ages from your graveyard to your hand.
|
||||
|
|
|
|||
|
|
@ -8,8 +8,8 @@ import mage.cards.CardImpl;
|
|||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.SuperType;
|
||||
import mage.filter.FilterCard;
|
||||
import mage.filter.common.FilterBasicCard;
|
||||
import mage.target.common.TargetCardInLibrary;
|
||||
|
||||
import java.util.UUID;
|
||||
|
|
@ -19,12 +19,7 @@ import java.util.UUID;
|
|||
*/
|
||||
public final class Plasmancer extends CardImpl {
|
||||
|
||||
private static final FilterCard filter = new FilterCard("a basic Swamp card");
|
||||
|
||||
static {
|
||||
filter.add(SuperType.BASIC.getPredicate());
|
||||
filter.add(SubType.SWAMP.getPredicate());
|
||||
}
|
||||
private static final FilterCard filter = new FilterBasicCard(SubType.SWAMP);
|
||||
|
||||
public Plasmancer(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{2}{B}{B}");
|
||||
|
|
|
|||
|
|
@ -5,9 +5,7 @@ import mage.abilities.effects.common.search.SearchLibraryPutInPlayEffect;
|
|||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.filter.FilterCard;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.filter.common.FilterBasicLandCard;
|
||||
import mage.target.common.TargetCardInLibrary;
|
||||
|
||||
import java.util.UUID;
|
||||
|
|
@ -17,8 +15,6 @@ import java.util.UUID;
|
|||
*/
|
||||
public final class RoilingRegrowth extends CardImpl {
|
||||
|
||||
private static final FilterCard filter = new FilterBasicLandCard("basic land cards");
|
||||
|
||||
public RoilingRegrowth(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{G}");
|
||||
|
||||
|
|
@ -27,7 +23,7 @@ public final class RoilingRegrowth extends CardImpl {
|
|||
StaticFilters.FILTER_LAND, 1, null
|
||||
).setText("Sacrifice a land."));
|
||||
this.getSpellAbility().addEffect(new SearchLibraryPutInPlayEffect(
|
||||
new TargetCardInLibrary(0, 2, filter), true
|
||||
new TargetCardInLibrary(0, 2, StaticFilters.FILTER_CARD_BASIC_LANDS), true
|
||||
));
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,26 +1,26 @@
|
|||
package mage.cards.s;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
||||
import mage.abilities.effects.common.GainLifeEffect;
|
||||
import mage.abilities.effects.common.search.SearchLibraryPutInHandEffect;
|
||||
import mage.cards.OmenCard;
|
||||
import mage.constants.SubType;
|
||||
import mage.abilities.keyword.FlyingAbility;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.cards.OmenCard;
|
||||
import mage.constants.CardType;
|
||||
import mage.filter.common.FilterBasicLandCard;
|
||||
import mage.constants.SubType;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.target.common.TargetCardInLibrary;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Jmlundeen
|
||||
*/
|
||||
public final class SaguWildling extends OmenCard {
|
||||
|
||||
public SaguWildling(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, new CardType[]{CardType.SORCERY}, "{4}{G}", "Roost Seek", "{G}");
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, new CardType[]{CardType.SORCERY}, "{4}{G}", "Roost Seek", "{G}");
|
||||
|
||||
this.subtype.add(SubType.DRAGON);
|
||||
this.power = new MageInt(3);
|
||||
|
|
@ -34,7 +34,7 @@ public final class SaguWildling extends OmenCard {
|
|||
|
||||
// Roost Seek
|
||||
// Search your library for a basic land card, reveal it, put it into your hand, then shuffle.
|
||||
TargetCardInLibrary target = new TargetCardInLibrary(new FilterBasicLandCard());
|
||||
TargetCardInLibrary target = new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND);
|
||||
this.getSpellCard().getSpellAbility().addEffect(new SearchLibraryPutInHandEffect(target, true));
|
||||
this.finalizeOmen();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,8 +10,6 @@ import mage.cards.CardImpl;
|
|||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.SuperType;
|
||||
import mage.filter.FilterCard;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.target.common.TargetCardInLibrary;
|
||||
|
||||
|
|
@ -22,13 +20,6 @@ import java.util.UUID;
|
|||
*/
|
||||
public final class ScoutingHawk extends CardImpl {
|
||||
|
||||
private static final FilterCard filter = new FilterCard("a basic Plains card");
|
||||
|
||||
static {
|
||||
filter.add(SuperType.BASIC.getPredicate());
|
||||
filter.add(SubType.PLAINS.getPredicate());
|
||||
}
|
||||
|
||||
private static final Condition condition = new OpponentControlsMoreCondition(StaticFilters.FILTER_LANDS);
|
||||
|
||||
public ScoutingHawk(UUID ownerId, CardSetInfo setInfo) {
|
||||
|
|
@ -43,7 +34,7 @@ public final class ScoutingHawk extends CardImpl {
|
|||
|
||||
// Keen Sight — When Scouting Hawk enters the battlefield, if an opponent controls more lands than you, search your library for a basic Plains card, put it onto the battlefield tapped, then shuffle.
|
||||
this.addAbility(new EntersBattlefieldTriggeredAbility(
|
||||
new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(filter), true)
|
||||
new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_PLAINS), true)
|
||||
).withInterveningIf(condition).withFlavorWord("Keen Sight"));
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ import mage.cards.CardSetInfo;
|
|||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.filter.FilterCard;
|
||||
import mage.filter.common.FilterBasicLandCard;
|
||||
import mage.filter.common.FilterBasicCard;
|
||||
import mage.filter.predicate.Predicates;
|
||||
import mage.target.common.TargetCardInLibrary;
|
||||
|
||||
|
|
@ -25,7 +25,7 @@ import java.util.UUID;
|
|||
*/
|
||||
public final class SeethingLandscape extends CardImpl {
|
||||
|
||||
private static final FilterCard filter = new FilterBasicLandCard("a basic Island, Swamp, or Mountain card");
|
||||
private static final FilterCard filter = new FilterBasicCard("a basic Island, Swamp, or Mountain card");
|
||||
|
||||
static {
|
||||
filter.add(Predicates.or(
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ import mage.cards.CardSetInfo;
|
|||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.filter.FilterCard;
|
||||
import mage.filter.common.FilterBasicLandCard;
|
||||
import mage.filter.common.FilterBasicCard;
|
||||
import mage.filter.predicate.Predicates;
|
||||
import mage.target.common.TargetCardInLibrary;
|
||||
|
||||
|
|
@ -25,7 +25,7 @@ import java.util.UUID;
|
|||
*/
|
||||
public final class ShatteredLandscape extends CardImpl {
|
||||
|
||||
private static final FilterCard filter = new FilterBasicLandCard("a basic Mountain, Plains, or Swamp card");
|
||||
private static final FilterCard filter = new FilterBasicCard("a basic Mountain, Plains, or Swamp card");
|
||||
|
||||
static {
|
||||
filter.add(Predicates.or(
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ import mage.cards.CardSetInfo;
|
|||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.filter.FilterCard;
|
||||
import mage.filter.common.FilterBasicLandCard;
|
||||
import mage.filter.common.FilterBasicCard;
|
||||
import mage.filter.predicate.Predicates;
|
||||
import mage.target.common.TargetCardInLibrary;
|
||||
|
||||
|
|
@ -25,7 +25,7 @@ import java.util.UUID;
|
|||
*/
|
||||
public final class ShelteringLandscape extends CardImpl {
|
||||
|
||||
private static final FilterCard filter = new FilterBasicLandCard("a basic Mountain, Forest, or Plains card");
|
||||
private static final FilterCard filter = new FilterBasicCard("a basic Mountain, Forest, or Plains card");
|
||||
|
||||
static {
|
||||
filter.add(Predicates.or(
|
||||
|
|
|
|||
|
|
@ -12,8 +12,6 @@ import mage.cards.CardImpl;
|
|||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.SuperType;
|
||||
import mage.filter.FilterCard;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.target.common.TargetCardInLibrary;
|
||||
|
||||
|
|
@ -24,13 +22,6 @@ import java.util.UUID;
|
|||
*/
|
||||
public final class StoicFarmer extends CardImpl {
|
||||
|
||||
private static final FilterCard filter = new FilterCard("a basic Plains card");
|
||||
|
||||
static {
|
||||
filter.add(SuperType.BASIC.getPredicate());
|
||||
filter.add(SubType.PLAINS.getPredicate());
|
||||
}
|
||||
|
||||
private static final Condition condition = new OpponentControlsMoreCondition(StaticFilters.FILTER_LANDS);
|
||||
|
||||
public StoicFarmer(UUID ownerId, CardSetInfo setInfo) {
|
||||
|
|
@ -44,8 +35,8 @@ public final class StoicFarmer extends CardImpl {
|
|||
// When Stoic Farmer enters the battlefield, search your library for a basic Plains card and reveal it. If an opponent controls more lands than you, put it onto the battlefield tapped. Otherwise, put it into your hand. Then shuffle your library.
|
||||
this.addAbility(new EntersBattlefieldTriggeredAbility(
|
||||
new ConditionalOneShotEffect(
|
||||
new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(filter), true),
|
||||
new SearchLibraryPutInHandEffect(new TargetCardInLibrary(filter), true),
|
||||
new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_PLAINS), true),
|
||||
new SearchLibraryPutInHandEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_PLAINS), true),
|
||||
condition, "search your library for a basic Plains card and reveal it. " +
|
||||
"If an opponent controls more lands than you, put it onto the battlefield tapped. " +
|
||||
"Otherwise put it into your hand. Then shuffle"
|
||||
|
|
|
|||
|
|
@ -10,7 +10,6 @@ import mage.cards.CardImpl;
|
|||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.SuperType;
|
||||
import mage.filter.FilterCard;
|
||||
import mage.target.common.TargetCardInLibrary;
|
||||
|
||||
|
|
@ -21,12 +20,7 @@ import java.util.UUID;
|
|||
*/
|
||||
public final class SunbladeSamurai extends CardImpl {
|
||||
|
||||
private static final FilterCard filter = new FilterCard("a basic Plains card");
|
||||
|
||||
static {
|
||||
filter.add(SubType.PLAINS.getPredicate());
|
||||
filter.add(SuperType.BASIC.getPredicate());
|
||||
}
|
||||
private static final FilterCard filter = new FilterCard(SubType.PLAINS);
|
||||
|
||||
public SunbladeSamurai(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT, CardType.CREATURE}, "{4}{W}");
|
||||
|
|
|
|||
|
|
@ -9,8 +9,7 @@ import mage.cards.CardSetInfo;
|
|||
import mage.constants.CardType;
|
||||
import mage.constants.SagaChapter;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.SuperType;
|
||||
import mage.filter.FilterCard;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.game.permanent.token.ArtifactWallToken;
|
||||
import mage.target.common.TargetCardInLibrary;
|
||||
|
||||
|
|
@ -21,13 +20,6 @@ import java.util.UUID;
|
|||
*/
|
||||
public final class TheBirthOfMeletis extends CardImpl {
|
||||
|
||||
private static final FilterCard filter = new FilterCard("a basic Plains card");
|
||||
|
||||
static {
|
||||
filter.add(SubType.PLAINS.getPredicate());
|
||||
filter.add(SuperType.BASIC.getPredicate());
|
||||
}
|
||||
|
||||
public TheBirthOfMeletis(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{W}");
|
||||
|
||||
|
|
@ -39,7 +31,7 @@ public final class TheBirthOfMeletis extends CardImpl {
|
|||
// I — Search your library for a basic Plains card, reveal it, put it into your hand, then shuffle your library.
|
||||
sagaAbility.addChapterEffect(
|
||||
this, SagaChapter.CHAPTER_I, new SearchLibraryPutInHandEffect(
|
||||
new TargetCardInLibrary(filter), true
|
||||
new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_PLAINS), true
|
||||
)
|
||||
);
|
||||
|
||||
|
|
|
|||
|
|
@ -10,8 +10,12 @@ import mage.abilities.effects.common.search.SearchLibraryPutInHandEffect;
|
|||
import mage.abilities.keyword.TransformAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.*;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.ComparisonType;
|
||||
import mage.constants.SagaChapter;
|
||||
import mage.constants.SubType;
|
||||
import mage.filter.FilterCard;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.filter.common.FilterPermanentCard;
|
||||
import mage.filter.predicate.mageobject.ManaValuePredicate;
|
||||
import mage.target.common.TargetCardInLibrary;
|
||||
|
|
@ -24,14 +28,10 @@ import java.util.UUID;
|
|||
*/
|
||||
public final class TheRestorationOfEiganjo extends CardImpl {
|
||||
|
||||
private static final FilterCard filter
|
||||
= new FilterCard("a basic Plains card");
|
||||
private static final FilterCard filter2
|
||||
= new FilterPermanentCard("permanent card with mana value 2 or less from your graveyard");
|
||||
|
||||
static {
|
||||
filter.add(SubType.PLAINS.getPredicate());
|
||||
filter.add(SuperType.BASIC.getPredicate());
|
||||
filter2.add(new ManaValuePredicate(ComparisonType.FEWER_THAN, 3));
|
||||
}
|
||||
|
||||
|
|
@ -47,7 +47,7 @@ public final class TheRestorationOfEiganjo extends CardImpl {
|
|||
// I - Search your library for a basic Plains card, reveal it, put it into your hand, then shuffle.
|
||||
sagaAbility.addChapterEffect(
|
||||
this, SagaChapter.CHAPTER_I, new SearchLibraryPutInHandEffect(
|
||||
new TargetCardInLibrary(filter), true
|
||||
new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_PLAINS), true
|
||||
)
|
||||
);
|
||||
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ import mage.cards.CardSetInfo;
|
|||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.filter.FilterCard;
|
||||
import mage.filter.common.FilterBasicLandCard;
|
||||
import mage.filter.common.FilterBasicCard;
|
||||
import mage.filter.predicate.Predicates;
|
||||
import mage.target.common.TargetCardInLibrary;
|
||||
|
||||
|
|
@ -25,7 +25,7 @@ import java.util.UUID;
|
|||
*/
|
||||
public final class TranquilLandscape extends CardImpl {
|
||||
|
||||
private static final FilterCard filter = new FilterBasicLandCard("a basic Forest, Plains, or Island card");
|
||||
private static final FilterCard filter = new FilterBasicCard("a basic Forest, Plains, or Island card");
|
||||
|
||||
static {
|
||||
filter.add(Predicates.or(
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ import mage.cards.CardSetInfo;
|
|||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.filter.FilterCard;
|
||||
import mage.filter.common.FilterBasicLandCard;
|
||||
import mage.filter.common.FilterBasicCard;
|
||||
import mage.filter.predicate.Predicates;
|
||||
import mage.target.common.TargetCardInLibrary;
|
||||
|
||||
|
|
@ -25,7 +25,7 @@ import java.util.UUID;
|
|||
*/
|
||||
public final class TwistedLandscape extends CardImpl {
|
||||
|
||||
private static final FilterCard filter = new FilterBasicLandCard("a basic Swamp, Mountain, or Forest card");
|
||||
private static final FilterCard filter = new FilterBasicCard("a basic Swamp, Mountain, or Forest card");
|
||||
|
||||
static {
|
||||
filter.add(Predicates.or(
|
||||
|
|
|
|||
|
|
@ -9,9 +9,7 @@ import mage.cards.CardImpl;
|
|||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.counters.CounterType;
|
||||
import mage.filter.FilterCard;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.filter.common.FilterBasicLandCard;
|
||||
import mage.target.common.TargetCardInLibrary;
|
||||
|
||||
import java.util.UUID;
|
||||
|
|
@ -21,8 +19,6 @@ import java.util.UUID;
|
|||
*/
|
||||
public final class VastwoodSurge extends CardImpl {
|
||||
|
||||
private static final FilterCard filter = new FilterBasicLandCard("basic land cards");
|
||||
|
||||
public VastwoodSurge(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{G}");
|
||||
|
||||
|
|
@ -31,7 +27,7 @@ public final class VastwoodSurge extends CardImpl {
|
|||
|
||||
// Search your library for up to two basic land cards, put them onto the battlefield tapped, then shuffle your library. If this spell was kicked, put two +1/+1 counters on each creature you control.
|
||||
this.getSpellAbility().addEffect(new SearchLibraryPutInPlayEffect(
|
||||
new TargetCardInLibrary(0, 2, filter), true
|
||||
new TargetCardInLibrary(0, 2, StaticFilters.FILTER_CARD_BASIC_LANDS), true
|
||||
));
|
||||
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(
|
||||
new AddCountersAllEffect(
|
||||
|
|
|
|||
|
|
@ -185,24 +185,33 @@ public final class StaticFilters {
|
|||
FILTER_CARD_LAND_A.setLockedFilter(true);
|
||||
}
|
||||
|
||||
public static final FilterBasicLandCard FILTER_CARD_BASIC_LAND = new FilterBasicLandCard();
|
||||
public static final FilterLandCard FILTER_CARD_BASIC_LAND = new FilterLandCard("basic land card");
|
||||
|
||||
static {
|
||||
FILTER_CARD_BASIC_LAND.add(SuperType.BASIC.getPredicate());
|
||||
FILTER_CARD_BASIC_LAND.setLockedFilter(true);
|
||||
}
|
||||
|
||||
public static final FilterBasicLandCard FILTER_CARD_BASIC_LANDS = new FilterBasicLandCard("basic land cards");
|
||||
public static final FilterLandCard FILTER_CARD_BASIC_LANDS = new FilterLandCard("basic land cards");
|
||||
|
||||
static {
|
||||
FILTER_CARD_BASIC_LANDS.add(SuperType.BASIC.getPredicate());
|
||||
FILTER_CARD_BASIC_LANDS.setLockedFilter(true);
|
||||
}
|
||||
|
||||
public static final FilterBasicLandCard FILTER_CARD_BASIC_LAND_A = new FilterBasicLandCard("a basic land card");
|
||||
public static final FilterLandCard FILTER_CARD_BASIC_LAND_A = new FilterLandCard("a basic land card");
|
||||
|
||||
static {
|
||||
FILTER_CARD_BASIC_LAND_A.add(SuperType.BASIC.getPredicate());
|
||||
FILTER_CARD_BASIC_LAND_A.setLockedFilter(true);
|
||||
}
|
||||
|
||||
public static final FilterBasicCard FILTER_CARD_BASIC_PLAINS = new FilterBasicCard(SubType.PLAINS);
|
||||
|
||||
static {
|
||||
FILTER_CARD_BASIC_PLAINS.setLockedFilter(true);
|
||||
}
|
||||
|
||||
public static final FilterNonlandCard FILTER_CARD_NON_LAND = new FilterNonlandCard();
|
||||
|
||||
static {
|
||||
|
|
|
|||
33
Mage/src/main/java/mage/filter/common/FilterBasicCard.java
Normal file
33
Mage/src/main/java/mage/filter/common/FilterBasicCard.java
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
package mage.filter.common;
|
||||
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.SuperType;
|
||||
import mage.filter.FilterCard;
|
||||
|
||||
/**
|
||||
* @author BetaSteward_at_googlemail.com
|
||||
*/
|
||||
public class FilterBasicCard extends FilterCard {
|
||||
|
||||
public FilterBasicCard(SubType subType) {
|
||||
this(subType, "basic " + subType + " card");
|
||||
}
|
||||
|
||||
public FilterBasicCard(String name) {
|
||||
this(null, name);
|
||||
}
|
||||
|
||||
public FilterBasicCard(SubType subType, String name) {
|
||||
super(subType, name);
|
||||
this.add(SuperType.BASIC.getPredicate());
|
||||
}
|
||||
|
||||
protected FilterBasicCard(final FilterBasicCard filter) {
|
||||
super(filter);
|
||||
}
|
||||
|
||||
@Override
|
||||
public FilterBasicCard copy() {
|
||||
return new FilterBasicCard(this);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,37 +0,0 @@
|
|||
|
||||
package mage.filter.common;
|
||||
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.SuperType;
|
||||
import mage.filter.FilterCard;
|
||||
|
||||
/**
|
||||
* @author BetaSteward_at_googlemail.com
|
||||
*/
|
||||
public class FilterBasicLandCard extends FilterCard {
|
||||
|
||||
public FilterBasicLandCard() {
|
||||
this("basic land card");
|
||||
}
|
||||
|
||||
public FilterBasicLandCard(SubType subType) {
|
||||
this("basic " + subType + " card");
|
||||
this.add(subType.getPredicate());
|
||||
}
|
||||
|
||||
public FilterBasicLandCard(String name) {
|
||||
super(name);
|
||||
this.add(CardType.LAND.getPredicate());
|
||||
this.add(SuperType.BASIC.getPredicate());
|
||||
}
|
||||
|
||||
protected FilterBasicLandCard(final FilterBasicLandCard filter) {
|
||||
super(filter);
|
||||
}
|
||||
|
||||
@Override
|
||||
public FilterBasicLandCard copy() {
|
||||
return new FilterBasicLandCard(this);
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue