mirror of
https://github.com/magefree/mage.git
synced 2026-01-24 12:19:59 -08:00
SearchLibraryPutInPlayEffect: remove forceshuffle parameter, part 2
This commit is contained in:
parent
4c787423bc
commit
698fe34014
65 changed files with 69 additions and 76 deletions
|
|
@ -62,7 +62,7 @@ class BeginTheInvasionEffect extends OneShotEffect {
|
||||||
public boolean apply(Game game, Ability source) {
|
public boolean apply(Game game, Ability source) {
|
||||||
int xValue = source.getManaCostsToPay().getX();
|
int xValue = source.getManaCostsToPay().getX();
|
||||||
return new SearchLibraryPutInPlayEffect(
|
return new SearchLibraryPutInPlayEffect(
|
||||||
new TargetCardWithDifferentNameInLibrary(0, xValue, filter), false, true
|
new TargetCardWithDifferentNameInLibrary(0, xValue, filter), false
|
||||||
).apply(game, source);
|
).apply(game, source);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,7 @@ public final class BeneathTheSands extends CardImpl {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{G}");
|
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{G}");
|
||||||
|
|
||||||
// Search your library for a basic land card, put it onto the battlefield tapped, then shuffle your library.
|
// Search your library for a basic land card, put it onto the battlefield tapped, then shuffle your library.
|
||||||
this.getSpellAbility().addEffect(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true, true));
|
this.getSpellAbility().addEffect(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true));
|
||||||
|
|
||||||
// Cycling {2}
|
// Cycling {2}
|
||||||
this.addAbility(new CyclingAbility(new ManaCostsImpl<>("{2}")));
|
this.addAbility(new CyclingAbility(new ManaCostsImpl<>("{2}")));
|
||||||
|
|
|
||||||
|
|
@ -35,7 +35,7 @@ public final class BitterthornNissasAnimus extends CardImpl {
|
||||||
|
|
||||||
// Whenever equipped creature attacks, you may search your library for a basic land card, put it onto the battlefield tapped, then shuffle.
|
// Whenever equipped creature attacks, you may search your library for a basic land card, put it onto the battlefield tapped, then shuffle.
|
||||||
this.addAbility(new AttacksAttachedTriggeredAbility(new SearchLibraryPutInPlayEffect(
|
this.addAbility(new AttacksAttachedTriggeredAbility(new SearchLibraryPutInPlayEffect(
|
||||||
new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND_A), true, true
|
new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND_A), true
|
||||||
), true));
|
), true));
|
||||||
|
|
||||||
// Equip {3}
|
// Equip {3}
|
||||||
|
|
|
||||||
|
|
@ -31,7 +31,7 @@ public final class BlightedWoodland extends CardImpl {
|
||||||
|
|
||||||
// {3}{G}, {T}, Sacrifice Blighted Woodland: Search your library for up to two basic land cards and put them onto the battlefield tapped. Then shuffle your library.
|
// {3}{G}, {T}, Sacrifice Blighted Woodland: Search your library for up to two basic land cards and put them onto the battlefield tapped. Then shuffle your library.
|
||||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
|
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
|
||||||
new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(0, 2, StaticFilters.FILTER_CARD_BASIC_LANDS), true, true),
|
new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(0, 2, StaticFilters.FILTER_CARD_BASIC_LANDS), true),
|
||||||
new ManaCostsImpl<>("{3}{G}"));
|
new ManaCostsImpl<>("{3}{G}"));
|
||||||
ability.addCost(new TapSourceCost());
|
ability.addCost(new TapSourceCost());
|
||||||
ability.addCost(new SacrificeSourceCost());
|
ability.addCost(new SacrificeSourceCost());
|
||||||
|
|
|
||||||
|
|
@ -39,7 +39,7 @@ public final class BogbrewWitch extends CardImpl {
|
||||||
// {2}, {T}: Search your library for a card named Festering Newt or Bubbling Cauldron, put it onto the battlefield tapped, then shuffle your library.
|
// {2}, {T}: Search your library for a card named Festering Newt or Bubbling Cauldron, put it onto the battlefield tapped, then shuffle your library.
|
||||||
TargetCardInLibrary target = new TargetCardInLibrary(1, 1, new FilterCard(filter));
|
TargetCardInLibrary target = new TargetCardInLibrary(1, 1, new FilterCard(filter));
|
||||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
|
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
|
||||||
new SearchLibraryPutInPlayEffect(target, true, true),
|
new SearchLibraryPutInPlayEffect(target, true),
|
||||||
new ManaCostsImpl<>("{2}"));
|
new ManaCostsImpl<>("{2}"));
|
||||||
ability.addCost(new TapSourceCost());
|
ability.addCost(new TapSourceCost());
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
|
|
|
||||||
|
|
@ -39,7 +39,7 @@ public final class BrokersHideout extends CardImpl {
|
||||||
|
|
||||||
// When Brokers Hideout enters the battlefield, sacrifice it. When you do, search your library for a basic Forest, Plains, or Island card, put it onto the battlefield tapped, then shuffle and you gain 1 life.
|
// When Brokers Hideout enters the battlefield, sacrifice it. When you do, search your library for a basic Forest, Plains, or Island card, put it onto the battlefield tapped, then shuffle and you gain 1 life.
|
||||||
ReflexiveTriggeredAbility ability = new ReflexiveTriggeredAbility(new SearchLibraryPutInPlayEffect(
|
ReflexiveTriggeredAbility ability = new ReflexiveTriggeredAbility(new SearchLibraryPutInPlayEffect(
|
||||||
new TargetCardInLibrary(filter), true, true
|
new TargetCardInLibrary(filter), true
|
||||||
), false);
|
), false);
|
||||||
ability.addEffect(new GainLifeEffect(1).concatBy("and"));
|
ability.addEffect(new GainLifeEffect(1).concatBy("and"));
|
||||||
this.addAbility(new EntersBattlefieldTriggeredAbility(new DoWhenCostPaid(
|
this.addAbility(new EntersBattlefieldTriggeredAbility(new DoWhenCostPaid(
|
||||||
|
|
|
||||||
|
|
@ -33,7 +33,7 @@ public final class BurnishedHart extends CardImpl {
|
||||||
// {3}, Sacrifice Burnished Hart: Search your library for up to two basic land cards, put them onto the battlefield tapped, then shuffle your library.
|
// {3}, Sacrifice Burnished Hart: Search your library for up to two basic land cards, put them onto the battlefield tapped, then shuffle your library.
|
||||||
Ability ability = new SimpleActivatedAbility(
|
Ability ability = new SimpleActivatedAbility(
|
||||||
Zone.BATTLEFIELD,
|
Zone.BATTLEFIELD,
|
||||||
new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(0,2, StaticFilters.FILTER_CARD_BASIC_LANDS), true, true),
|
new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(0,2, StaticFilters.FILTER_CARD_BASIC_LANDS), true),
|
||||||
new GenericManaCost(3));
|
new GenericManaCost(3));
|
||||||
ability.addCost(new SacrificeSourceCost());
|
ability.addCost(new SacrificeSourceCost());
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
|
|
|
||||||
|
|
@ -38,7 +38,7 @@ public final class CabarettiCourtyard extends CardImpl {
|
||||||
|
|
||||||
// When Cabaretti Courtyard enters the battlefield, sacrifice it. When you do, search your library for a basic Mountain, Forest, or Plains card, put it onto the battlefield tapped, then shuffle and you gain 1 life.
|
// When Cabaretti Courtyard enters the battlefield, sacrifice it. When you do, search your library for a basic Mountain, Forest, or Plains card, put it onto the battlefield tapped, then shuffle and you gain 1 life.
|
||||||
ReflexiveTriggeredAbility ability = new ReflexiveTriggeredAbility(new SearchLibraryPutInPlayEffect(
|
ReflexiveTriggeredAbility ability = new ReflexiveTriggeredAbility(new SearchLibraryPutInPlayEffect(
|
||||||
new TargetCardInLibrary(filter), true, true
|
new TargetCardInLibrary(filter), true
|
||||||
), false);
|
), false);
|
||||||
ability.addEffect(new GainLifeEffect(1).concatBy("and"));
|
ability.addEffect(new GainLifeEffect(1).concatBy("and"));
|
||||||
this.addAbility(new EntersBattlefieldTriggeredAbility(new DoWhenCostPaid(
|
this.addAbility(new EntersBattlefieldTriggeredAbility(new DoWhenCostPaid(
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,7 @@ public final class CentaurRootcaster extends CardImpl {
|
||||||
|
|
||||||
// Whenever Centaur Rootcaster deals combat damage to a player, you may search your library for a basic land card and put that card onto the battlefield tapped. If you do, shuffle your library.
|
// Whenever Centaur Rootcaster deals combat damage to a player, you may search your library for a basic land card and put that card onto the battlefield tapped. If you do, shuffle your library.
|
||||||
this.addAbility(new DealsCombatDamageToAPlayerTriggeredAbility(
|
this.addAbility(new DealsCombatDamageToAPlayerTriggeredAbility(
|
||||||
new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true, true),
|
new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true),
|
||||||
true));
|
true));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -56,7 +56,7 @@ class DeepGnomeTerramancerTriggeredAbility extends TriggeredAbilityImpl {
|
||||||
FilterCard filter = new FilterCard("Plains card");
|
FilterCard filter = new FilterCard("Plains card");
|
||||||
filter.add(SubType.PLAINS.getPredicate());
|
filter.add(SubType.PLAINS.getPredicate());
|
||||||
TargetCardInLibrary target = new TargetCardInLibrary(filter);
|
TargetCardInLibrary target = new TargetCardInLibrary(filter);
|
||||||
addEffect(new SearchLibraryPutInPlayEffect(target, true, true));
|
addEffect(new SearchLibraryPutInPlayEffect(target, true));
|
||||||
}
|
}
|
||||||
|
|
||||||
DeepGnomeTerramancerTriggeredAbility(DeepGnomeTerramancerTriggeredAbility ability) {
|
DeepGnomeTerramancerTriggeredAbility(DeepGnomeTerramancerTriggeredAbility ability) {
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,6 @@ import mage.abilities.keyword.FlashbackAbility;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.TimingRule;
|
|
||||||
import mage.filter.StaticFilters;
|
import mage.filter.StaticFilters;
|
||||||
import mage.target.common.TargetCardInLibrary;
|
import mage.target.common.TargetCardInLibrary;
|
||||||
|
|
||||||
|
|
@ -24,7 +23,7 @@ public final class DeepReconnaissance extends CardImpl {
|
||||||
|
|
||||||
|
|
||||||
// Search your library for a basic land card and put that card onto the battlefield tapped. Then shuffle your library.
|
// Search your library for a basic land card and put that card onto the battlefield tapped. Then shuffle your library.
|
||||||
this.getSpellAbility().addEffect(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true, true));
|
this.getSpellAbility().addEffect(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true));
|
||||||
// Flashback {4}{G}
|
// Flashback {4}{G}
|
||||||
this.addAbility(new FlashbackAbility(this, new ManaCostsImpl<>("{4}{G}")));
|
this.addAbility(new FlashbackAbility(this, new ManaCostsImpl<>("{4}{G}")));
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -45,7 +45,7 @@ public final class DoricNaturesWarden extends CardImpl {
|
||||||
|
|
||||||
// When Doric, Nature's Warden enters the battlefield, search your library for a Forest card, put it into the battlefield tapped, then shuffle.
|
// When Doric, Nature's Warden enters the battlefield, search your library for a Forest card, put it into the battlefield tapped, then shuffle.
|
||||||
this.addAbility(new EntersBattlefieldTriggeredAbility(
|
this.addAbility(new EntersBattlefieldTriggeredAbility(
|
||||||
new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(filter), true, true)
|
new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(filter), true)
|
||||||
));
|
));
|
||||||
|
|
||||||
// Whenever Doric attacks, you may pay {1}{G}. If you do, transform her.
|
// Whenever Doric attacks, you may pay {1}{G}. If you do, transform her.
|
||||||
|
|
|
||||||
|
|
@ -64,7 +64,7 @@ public final class DroidFactory extends CardImpl {
|
||||||
filter.add(Predicates.or(subtypePredicates));
|
filter.add(Predicates.or(subtypePredicates));
|
||||||
filter.add(SuperType.BASIC.getPredicate());
|
filter.add(SuperType.BASIC.getPredicate());
|
||||||
TargetCardInLibrary target = new TargetCardInLibrary(filter);
|
TargetCardInLibrary target = new TargetCardInLibrary(filter);
|
||||||
addEffect(new SearchLibraryPutInPlayEffect(target, true, true));
|
addEffect(new SearchLibraryPutInPlayEffect(target, true));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
|
|
@ -26,8 +26,8 @@ public final class FarWanderings extends CardImpl {
|
||||||
// Search your library for a basic land card, put that card onto the battlefield tapped, then shuffle your library.
|
// Search your library for a basic land card, put that card onto the battlefield tapped, then shuffle your library.
|
||||||
// Threshold - If seven or more cards are in your graveyard, instead search your library for up to three basic land cards, put them onto the battlefield tapped, then shuffle your library.
|
// Threshold - If seven or more cards are in your graveyard, instead search your library for up to three basic land cards, put them onto the battlefield tapped, then shuffle your library.
|
||||||
Effect effect = new ConditionalOneShotEffect(
|
Effect effect = new ConditionalOneShotEffect(
|
||||||
new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(0, 3, StaticFilters.FILTER_CARD_BASIC_LAND), true, true),
|
new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(0, 3, StaticFilters.FILTER_CARD_BASIC_LAND), true),
|
||||||
new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(0, 1, StaticFilters.FILTER_CARD_BASIC_LAND), true, true),
|
new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(0, 1, StaticFilters.FILTER_CARD_BASIC_LAND), true),
|
||||||
new CardsInControllerGraveyardCondition(7),
|
new CardsInControllerGraveyardCondition(7),
|
||||||
"Search your library for a basic land card, put that card onto the battlefield tapped, then shuffle.<br/><br/><i>Threshold</i> — If seven or more cards are in your graveyard, instead search your library for up to three basic land cards, put them onto the battlefield tapped, then shuffle.");
|
"Search your library for a basic land card, put that card onto the battlefield tapped, then shuffle.<br/><br/><i>Threshold</i> — If seven or more cards are in your graveyard, instead search your library for up to three basic land cards, put them onto the battlefield tapped, then shuffle.");
|
||||||
this.getSpellAbility().addEffect(effect);
|
this.getSpellAbility().addEffect(effect);
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,7 @@ public final class FarhavenElf extends CardImpl {
|
||||||
this.toughness = new MageInt(1);
|
this.toughness = new MageInt(1);
|
||||||
|
|
||||||
// When Farhaven Elf enters the battlefield, you may search your library for a basic land card and put it onto the battlefield tapped. If you do, shuffle your library.
|
// When Farhaven Elf enters the battlefield, you may search your library for a basic land card and put it onto the battlefield tapped. If you do, shuffle your library.
|
||||||
this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true, true), true));
|
this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true), true));
|
||||||
}
|
}
|
||||||
|
|
||||||
private FarhavenElf(final FarhavenElf card) {
|
private FarhavenElf(final FarhavenElf card) {
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,7 @@ public final class FlagstonesOfTrokair extends CardImpl {
|
||||||
this.addAbility(new WhiteManaAbility());
|
this.addAbility(new WhiteManaAbility());
|
||||||
|
|
||||||
// When Flagstones of Trokair is put into a graveyard from the battlefield, you may search your library for a Plains card and put it onto the battlefield tapped. If you do, shuffle your library.
|
// When Flagstones of Trokair is put into a graveyard from the battlefield, you may search your library for a Plains card and put it onto the battlefield tapped. If you do, shuffle your library.
|
||||||
this.addAbility(new PutIntoGraveFromBattlefieldSourceTriggeredAbility(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(FILTER), true, true), true, false));
|
this.addAbility(new PutIntoGraveFromBattlefieldSourceTriggeredAbility(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(FILTER), true), true, false));
|
||||||
}
|
}
|
||||||
|
|
||||||
private FlagstonesOfTrokair(final FlagstonesOfTrokair card) {
|
private FlagstonesOfTrokair(final FlagstonesOfTrokair card) {
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,7 @@ public final class FontOfFertility extends CardImpl {
|
||||||
|
|
||||||
// {1}{G}, Sacrifice Font of Fertility: Search your library for a basic land card, put it onto the battlefield tapped, then shuffle your library.
|
// {1}{G}, Sacrifice Font of Fertility: Search your library for a basic land card, put it onto the battlefield tapped, then shuffle your library.
|
||||||
TargetCardInLibrary target = new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND);
|
TargetCardInLibrary target = new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND);
|
||||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new SearchLibraryPutInPlayEffect(target, true, true), new ManaCostsImpl<>("{1}{G}"));
|
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new SearchLibraryPutInPlayEffect(target, true), new ManaCostsImpl<>("{1}{G}"));
|
||||||
ability.addCost(new SacrificeSourceCost());
|
ability.addCost(new SacrificeSourceCost());
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -44,7 +44,7 @@ public final class GodoBanditWarlord extends CardImpl {
|
||||||
this.toughness = new MageInt(3);
|
this.toughness = new MageInt(3);
|
||||||
|
|
||||||
// When Godo, Bandit Warlord enters the battlefield, you may search your library for an Equipment card and put it onto the battlefield. If you do, shuffle your library.
|
// When Godo, Bandit Warlord enters the battlefield, you may search your library for an Equipment card and put it onto the battlefield. If you do, shuffle your library.
|
||||||
this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(filter), false, true), true));
|
this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(filter), false), true));
|
||||||
|
|
||||||
// Whenever Godo attacks for the first time each turn, untap it and all Samurai you control. After this phase, there is an additional combat phase.
|
// Whenever Godo attacks for the first time each turn, untap it and all Samurai you control. After this phase, there is an additional combat phase.
|
||||||
Ability ability = new AttacksFirstTimeTriggeredAbility(new UntapSourceEffect().setText("untap it"), false);
|
Ability ability = new AttacksFirstTimeTriggeredAbility(new UntapSourceEffect().setText("untap it"), false);
|
||||||
|
|
|
||||||
|
|
@ -26,8 +26,8 @@ public final class GrowFromTheAshes extends CardImpl {
|
||||||
|
|
||||||
// Search you library for a basic land card, put it onto the battlefield, then shuffle your library. If this spell was kicked, instead search your library for two basic land cards, put them onto the battlefield, then shuffle your library.
|
// Search you library for a basic land card, put it onto the battlefield, then shuffle your library. If this spell was kicked, instead search your library for two basic land cards, put them onto the battlefield, then shuffle your library.
|
||||||
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(
|
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(
|
||||||
new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(0, 2, StaticFilters.FILTER_CARD_BASIC_LAND), false, true),
|
new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(0, 2, StaticFilters.FILTER_CARD_BASIC_LAND), false),
|
||||||
new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(0, 1, StaticFilters.FILTER_CARD_BASIC_LAND), false, true),
|
new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(0, 1, StaticFilters.FILTER_CARD_BASIC_LAND), false),
|
||||||
KickedCondition.ONCE,
|
KickedCondition.ONCE,
|
||||||
"Search your library for a basic land card, put it onto the battlefield, then shuffle. If this spell was kicked, instead search your library for two basic land cards, put them onto the battlefield, then shuffle."));
|
"Search your library for a basic land card, put it onto the battlefield, then shuffle. If this spell was kicked, instead search your library for two basic land cards, put them onto the battlefield, then shuffle."));
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -64,7 +64,7 @@ public final class JediEnclave extends CardImpl {
|
||||||
filter.add(Predicates.or(subtypePredicates));
|
filter.add(Predicates.or(subtypePredicates));
|
||||||
filter.add(SuperType.BASIC.getPredicate());
|
filter.add(SuperType.BASIC.getPredicate());
|
||||||
TargetCardInLibrary target = new TargetCardInLibrary(filter);
|
TargetCardInLibrary target = new TargetCardInLibrary(filter);
|
||||||
addEffect(new SearchLibraryPutInPlayEffect(target, true, true));
|
addEffect(new SearchLibraryPutInPlayEffect(target, true));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
|
|
@ -64,7 +64,7 @@ public final class JungleVillage extends CardImpl {
|
||||||
filter.add(Predicates.or(subtypePredicates));
|
filter.add(Predicates.or(subtypePredicates));
|
||||||
filter.add(SuperType.BASIC.getPredicate());
|
filter.add(SuperType.BASIC.getPredicate());
|
||||||
TargetCardInLibrary target = new TargetCardInLibrary(filter);
|
TargetCardInLibrary target = new TargetCardInLibrary(filter);
|
||||||
addEffect(new SearchLibraryPutInPlayEffect(target, true, true));
|
addEffect(new SearchLibraryPutInPlayEffect(target, true));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
|
|
@ -53,7 +53,7 @@ public final class KeeperOfTheAccord extends CardImpl {
|
||||||
// At the beginning of each opponent's end step, if that player controls more lands than you, you may search your library for a basic Plains card, put it onto the battlefield tapped, then shuffle your library.
|
// At the beginning of each opponent's end step, if that player controls more lands than you, you may search your library for a basic Plains card, put it onto the battlefield tapped, then shuffle your library.
|
||||||
this.addAbility(new ConditionalInterveningIfTriggeredAbility(
|
this.addAbility(new ConditionalInterveningIfTriggeredAbility(
|
||||||
new BeginningOfEndStepTriggeredAbility(new SearchLibraryPutInPlayEffect(
|
new BeginningOfEndStepTriggeredAbility(new SearchLibraryPutInPlayEffect(
|
||||||
new TargetCardInLibrary(filter), true, true
|
new TargetCardInLibrary(filter), true
|
||||||
), TargetController.OPPONENT, true),
|
), TargetController.OPPONENT, true),
|
||||||
KeeperOfTheAccordCondition.LANDS, "At the beginning of each opponent's end step, " +
|
KeeperOfTheAccordCondition.LANDS, "At the beginning of each opponent's end step, " +
|
||||||
"if that player controls more lands than you, you may search your library for a basic Plains card, " +
|
"if that player controls more lands than you, you may search your library for a basic Plains card, " +
|
||||||
|
|
@ -87,4 +87,4 @@ enum KeeperOfTheAccordCondition implements Condition {
|
||||||
return game.getBattlefield().countAll(filter, source.getControllerId(), game)
|
return game.getBattlefield().countAll(filter, source.getControllerId(), game)
|
||||||
< game.getBattlefield().countAll(filter, game.getActivePlayerId(), game);
|
< game.getBattlefield().countAll(filter, game.getActivePlayerId(), game);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -51,7 +51,7 @@ public final class KorlashHeirToBlackblade extends CardImpl {
|
||||||
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, effect, new ManaCostsImpl<>("{1}{B}")));
|
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, effect, new ManaCostsImpl<>("{1}{B}")));
|
||||||
|
|
||||||
// Grandeur - Discard another card named Korlash, Heir to Blackblade: Search your library for up to two Swamp cards, put them onto the battlefield tapped, then shuffle your library.
|
// Grandeur - Discard another card named Korlash, Heir to Blackblade: Search your library for up to two Swamp cards, put them onto the battlefield tapped, then shuffle your library.
|
||||||
effect = new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(0, 2, filterCard), true, true);
|
effect = new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(0, 2, filterCard), true);
|
||||||
effect.setText("Search your library for up to two Swamp cards, put them onto the battlefield tapped, then shuffle.");
|
effect.setText("Search your library for up to two Swamp cards, put them onto the battlefield tapped, then shuffle.");
|
||||||
this.addAbility(new GrandeurAbility(effect, "Korlash, Heir to Blackblade"));
|
this.addAbility(new GrandeurAbility(effect, "Korlash, Heir to Blackblade"));
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -49,7 +49,7 @@ public final class KyscuDrake extends CardImpl {
|
||||||
this.addAbility(new LimitedTimesPerTurnActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(0, 1, Duration.EndOfTurn), new ManaCostsImpl<>("{G}")));
|
this.addAbility(new LimitedTimesPerTurnActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(0, 1, Duration.EndOfTurn), new ManaCostsImpl<>("{G}")));
|
||||||
|
|
||||||
// Sacrifice Kyscu Drake and a creature named Spitting Drake: Search your library for a card named Viashivan Dragon and put that card onto the battlefield. Then shuffle your library.
|
// Sacrifice Kyscu Drake and a creature named Spitting Drake: Search your library for a card named Viashivan Dragon and put that card onto the battlefield. Then shuffle your library.
|
||||||
this.addAbility(new SimpleActivatedAbility(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(1, 1, filter), false, true), new CompositeCost(new SacrificeSourceCost(), new SacrificeTargetCost(new TargetControlledCreaturePermanent(1, 1, filterSpitting, false)), "sacrifice {this} and a creature named Spitting Drake")));
|
this.addAbility(new SimpleActivatedAbility(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(1, 1, filter), false), new CompositeCost(new SacrificeSourceCost(), new SacrificeTargetCost(new TargetControlledCreaturePermanent(1, 1, filterSpitting, false)), "sacrifice {this} and a creature named Spitting Drake")));
|
||||||
}
|
}
|
||||||
|
|
||||||
private KyscuDrake(final KyscuDrake card) {
|
private KyscuDrake(final KyscuDrake card) {
|
||||||
|
|
|
||||||
|
|
@ -42,7 +42,7 @@ public final class LoyalWarhound extends CardImpl {
|
||||||
// When Loyal Warhound enters the battlefield, if an opponent controls more lands than you,
|
// 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.
|
// search your library for a basic Plains card, put it onto the battlefield tapped, then shuffle.
|
||||||
this.addAbility(new ConditionalInterveningIfTriggeredAbility(
|
this.addAbility(new ConditionalInterveningIfTriggeredAbility(
|
||||||
new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(filter), true, true)),
|
new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(filter), true)),
|
||||||
new OpponentControlsMoreCondition(StaticFilters.FILTER_LANDS),
|
new OpponentControlsMoreCondition(StaticFilters.FILTER_LANDS),
|
||||||
"When {this} enters the battlefield, if an opponent controls more lands than you, "
|
"When {this} 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."
|
+ "search your library for a basic Plains card, put it onto the battlefield tapped, then shuffle."
|
||||||
|
|
|
||||||
|
|
@ -38,7 +38,7 @@ public final class MaestrosTheater extends CardImpl {
|
||||||
|
|
||||||
// When Maestros Theater enters the battlefield, sacrifice it. When you do, search your library for a basic Island, Swamp, or Mountain card, put it onto the battlefield tapped, then shuffle and you gain 1 life.
|
// When Maestros Theater enters the battlefield, sacrifice it. When you do, search your library for a basic Island, Swamp, or Mountain card, put it onto the battlefield tapped, then shuffle and you gain 1 life.
|
||||||
ReflexiveTriggeredAbility ability = new ReflexiveTriggeredAbility(new SearchLibraryPutInPlayEffect(
|
ReflexiveTriggeredAbility ability = new ReflexiveTriggeredAbility(new SearchLibraryPutInPlayEffect(
|
||||||
new TargetCardInLibrary(filter), true, true
|
new TargetCardInLibrary(filter), true
|
||||||
), false);
|
), false);
|
||||||
ability.addEffect(new GainLifeEffect(1).concatBy("and"));
|
ability.addEffect(new GainLifeEffect(1).concatBy("and"));
|
||||||
this.addAbility(new EntersBattlefieldTriggeredAbility(new DoWhenCostPaid(
|
this.addAbility(new EntersBattlefieldTriggeredAbility(new DoWhenCostPaid(
|
||||||
|
|
|
||||||
|
|
@ -50,7 +50,7 @@ public final class MagusOfTheOrder extends CardImpl {
|
||||||
|
|
||||||
// {G}, {T}, Sacrifice Magus of the Order and another green creature: Search your library for a green creature card and put it onto the battlefield. Then shuffle your library.
|
// {G}, {T}, Sacrifice Magus of the Order and another green creature: Search your library for a green creature card and put it onto the battlefield. Then shuffle your library.
|
||||||
Ability ability = new SimpleActivatedAbility(new SearchLibraryPutInPlayEffect(
|
Ability ability = new SimpleActivatedAbility(new SearchLibraryPutInPlayEffect(
|
||||||
new TargetCardInLibrary(1, filter), false, true
|
new TargetCardInLibrary(1, filter), false
|
||||||
), new ManaCostsImpl<>("{G}"));
|
), new ManaCostsImpl<>("{G}"));
|
||||||
ability.addCost(new TapSourceCost());
|
ability.addCost(new TapSourceCost());
|
||||||
ability.addCost(new CompositeCost(
|
ability.addCost(new CompositeCost(
|
||||||
|
|
|
||||||
|
|
@ -31,7 +31,7 @@ public final class MwonvuliAcidMoss extends CardImpl {
|
||||||
// Destroy target land. Search your library for a Forest card and put that card onto the battlefield tapped. Then shuffle your library.
|
// Destroy target land. Search your library for a Forest card and put that card onto the battlefield tapped. Then shuffle your library.
|
||||||
this.getSpellAbility().addEffect(new DestroyTargetEffect());
|
this.getSpellAbility().addEffect(new DestroyTargetEffect());
|
||||||
this.getSpellAbility().addTarget(new TargetPermanent(new FilterLandPermanent()));
|
this.getSpellAbility().addTarget(new TargetPermanent(new FilterLandPermanent()));
|
||||||
this.getSpellAbility().addEffect(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(filterForest), true, true));
|
this.getSpellAbility().addEffect(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(filterForest), true));
|
||||||
}
|
}
|
||||||
|
|
||||||
private MwonvuliAcidMoss(final MwonvuliAcidMoss card) {
|
private MwonvuliAcidMoss(final MwonvuliAcidMoss card) {
|
||||||
|
|
|
||||||
|
|
@ -35,7 +35,7 @@ public final class NaturalOrder extends CardImpl {
|
||||||
// As an additional cost to cast Natural Order, sacrifice a green creature.
|
// As an additional cost to cast Natural Order, sacrifice a green creature.
|
||||||
this.getSpellAbility().addCost(new SacrificeTargetCost(new TargetControlledCreaturePermanent(1,1,filter, true)));
|
this.getSpellAbility().addCost(new SacrificeTargetCost(new TargetControlledCreaturePermanent(1,1,filter, true)));
|
||||||
// Search your library for a green creature card and put it onto the battlefield. Then shuffle your library.
|
// Search your library for a green creature card and put it onto the battlefield. Then shuffle your library.
|
||||||
this.getSpellAbility().addEffect(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(1 , filterCard), false, true));
|
this.getSpellAbility().addEffect(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(1 , filterCard), false));
|
||||||
}
|
}
|
||||||
|
|
||||||
private NaturalOrder(final NaturalOrder card) {
|
private NaturalOrder(final NaturalOrder card) {
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,7 @@ public final class NaturesLore extends CardImpl {
|
||||||
|
|
||||||
|
|
||||||
// Search your library for a Forest card and put that card onto the battlefield. Then shuffle your library.
|
// Search your library for a Forest card and put that card onto the battlefield. Then shuffle your library.
|
||||||
this.getSpellAbility().addEffect(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(filter), false, true));
|
this.getSpellAbility().addEffect(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(filter), false));
|
||||||
}
|
}
|
||||||
|
|
||||||
private NaturesLore(final NaturesLore card) {
|
private NaturesLore(final NaturesLore card) {
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,7 @@ public final class NissasExpedition extends CardImpl {
|
||||||
// Convoke
|
// Convoke
|
||||||
this.addAbility(new ConvokeAbility());
|
this.addAbility(new ConvokeAbility());
|
||||||
// Search your library for up to two basic land cards, put them onto the battlefield tapped, then shuffle your library.
|
// 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, StaticFilters.FILTER_CARD_BASIC_LANDS), true, true));
|
this.getSpellAbility().addEffect(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(0,2, StaticFilters.FILTER_CARD_BASIC_LANDS), true));
|
||||||
}
|
}
|
||||||
|
|
||||||
private NissasExpedition(final NissasExpedition card) {
|
private NissasExpedition(final NissasExpedition card) {
|
||||||
|
|
|
||||||
|
|
@ -38,7 +38,7 @@ public final class ObscuraStorefront extends CardImpl {
|
||||||
|
|
||||||
// When Obscura Storefront enters the battlefield, sacrifice it. When you do, search your library for a basic Plains, Island, or Swamp card, put it onto the battlefield tapped, then shuffle and you gain 1 life.
|
// When Obscura Storefront enters the battlefield, sacrifice it. When you do, search your library for a basic Plains, Island, or Swamp card, put it onto the battlefield tapped, then shuffle and you gain 1 life.
|
||||||
ReflexiveTriggeredAbility ability = new ReflexiveTriggeredAbility(new SearchLibraryPutInPlayEffect(
|
ReflexiveTriggeredAbility ability = new ReflexiveTriggeredAbility(new SearchLibraryPutInPlayEffect(
|
||||||
new TargetCardInLibrary(filter), true, true
|
new TargetCardInLibrary(filter), true
|
||||||
), false);
|
), false);
|
||||||
ability.addEffect(new GainLifeEffect(1).concatBy("and"));
|
ability.addEffect(new GainLifeEffect(1).concatBy("and"));
|
||||||
this.addAbility(new EntersBattlefieldTriggeredAbility(new DoWhenCostPaid(
|
this.addAbility(new EntersBattlefieldTriggeredAbility(new DoWhenCostPaid(
|
||||||
|
|
|
||||||
|
|
@ -49,7 +49,7 @@ public final class OrdealOfNylea extends CardImpl {
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
// When you sacrifice Ordeal of Nylea, search your library for up to two basic land cards, put them onto the battlefield tapped, then shuffle your library.
|
// When you sacrifice Ordeal of Nylea, search your library for up to two basic land cards, put them onto the battlefield tapped, then shuffle your library.
|
||||||
ability = new SacrificeSourceTriggeredAbility(
|
ability = new SacrificeSourceTriggeredAbility(
|
||||||
new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(0,2, StaticFilters.FILTER_CARD_BASIC_LANDS),true, true),false);
|
new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(0,2, StaticFilters.FILTER_CARD_BASIC_LANDS),true),false);
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -30,8 +30,8 @@ public final class PrimalGrowth extends CardImpl {
|
||||||
// Search your library for a basic land card, put that card onto the battlefield, then shuffle your library.
|
// Search your library for a basic land card, put that card onto the battlefield, then shuffle your library.
|
||||||
// If Primal Growth was kicked, instead search your library for up to two basic land cards, put them onto the battlefield, then shuffle your library.
|
// If Primal Growth was kicked, instead search your library for up to two basic land cards, put them onto the battlefield, then shuffle your library.
|
||||||
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(
|
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(
|
||||||
new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(0, 2, StaticFilters.FILTER_CARD_BASIC_LAND), false, true),
|
new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(0, 2, StaticFilters.FILTER_CARD_BASIC_LAND), false),
|
||||||
new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(0, 1, StaticFilters.FILTER_CARD_BASIC_LAND), false, true),
|
new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(0, 1, StaticFilters.FILTER_CARD_BASIC_LAND), false),
|
||||||
KickedCondition.ONCE,
|
KickedCondition.ONCE,
|
||||||
"Search your library for a basic land card, put that card onto the battlefield, then shuffle. If this spell was kicked, instead search your library for up to two basic land cards, put them onto the battlefield, then shuffle"));
|
"Search your library for a basic land card, put that card onto the battlefield, then shuffle. If this spell was kicked, instead search your library for up to two basic land cards, put them onto the battlefield, then shuffle"));
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -26,7 +26,7 @@ public final class QuirionTrailblazer extends CardImpl {
|
||||||
this.toughness = new MageInt(2);
|
this.toughness = new MageInt(2);
|
||||||
|
|
||||||
// When Quirion Trailblazer enters the battlefield, you may search your library for a basic land card and put that card onto the battlefield tapped. If you do, shuffle your library.
|
// When Quirion Trailblazer enters the battlefield, you may search your library for a basic land card and put that card onto the battlefield tapped. If you do, shuffle your library.
|
||||||
this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true, true), true));
|
this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true), true));
|
||||||
}
|
}
|
||||||
|
|
||||||
private QuirionTrailblazer(final QuirionTrailblazer card) {
|
private QuirionTrailblazer(final QuirionTrailblazer card) {
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,7 @@ public final class ReshapeTheEarth extends CardImpl {
|
||||||
// Search your library for up to ten land cards, put them onto the battlefield tapped, then shuffle your library.
|
// Search your library for up to ten land cards, put them onto the battlefield tapped, then shuffle your library.
|
||||||
this.getSpellAbility().addEffect(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(
|
this.getSpellAbility().addEffect(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(
|
||||||
0, 10, StaticFilters.FILTER_CARD_LANDS
|
0, 10, StaticFilters.FILTER_CARD_LANDS
|
||||||
), true, true));
|
), true));
|
||||||
}
|
}
|
||||||
|
|
||||||
private ReshapeTheEarth(final ReshapeTheEarth card) {
|
private ReshapeTheEarth(final ReshapeTheEarth card) {
|
||||||
|
|
|
||||||
|
|
@ -38,7 +38,7 @@ public final class RiveteersOverlook extends CardImpl {
|
||||||
|
|
||||||
// When Riveteers Overlook enters the battlefield, sacrifice it. When you do, search your library for a basic Swamp, Mountain, or Forest card, put it onto the battlefield tapped, then shuffle and you gain 1 life.
|
// When Riveteers Overlook enters the battlefield, sacrifice it. When you do, search your library for a basic Swamp, Mountain, or Forest card, put it onto the battlefield tapped, then shuffle and you gain 1 life.
|
||||||
ReflexiveTriggeredAbility ability = new ReflexiveTriggeredAbility(new SearchLibraryPutInPlayEffect(
|
ReflexiveTriggeredAbility ability = new ReflexiveTriggeredAbility(new SearchLibraryPutInPlayEffect(
|
||||||
new TargetCardInLibrary(filter), true, true
|
new TargetCardInLibrary(filter), true
|
||||||
), false);
|
), false);
|
||||||
ability.addEffect(new GainLifeEffect(1).concatBy("and"));
|
ability.addEffect(new GainLifeEffect(1).concatBy("and"));
|
||||||
this.addAbility(new EntersBattlefieldTriggeredAbility(new DoWhenCostPaid(
|
this.addAbility(new EntersBattlefieldTriggeredAbility(new DoWhenCostPaid(
|
||||||
|
|
|
||||||
|
|
@ -51,7 +51,7 @@ public final class SamutTheTested extends CardImpl {
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
|
|
||||||
// -7: Search your library for up to two creature and/or planeswalker cards, put them onto the battlefield, then shuffle your library.
|
// -7: Search your library for up to two creature and/or planeswalker cards, put them onto the battlefield, then shuffle your library.
|
||||||
effect = new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(0, 2, filter), false, true);
|
effect = new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(0, 2, filter), false);
|
||||||
ability = new LoyaltyAbility(effect, -7);
|
ability = new LoyaltyAbility(effect, -7);
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,7 @@ public final class ScoutThePerimeter extends CardImpl {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{G}");
|
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{G}");
|
||||||
|
|
||||||
// Search your library for a land card, put it onto the battlefield tapped, then suffle your library.
|
// Search your library for a land card, put it onto the battlefield tapped, then suffle your library.
|
||||||
this.getSpellAbility().addEffect(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(new FilterLandCard()), true, true));
|
this.getSpellAbility().addEffect(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(new FilterLandCard()), true));
|
||||||
|
|
||||||
// Put a bounty counter on up to one target creature an opponent controls.
|
// Put a bounty counter on up to one target creature an opponent controls.
|
||||||
Effect effect = new AddCountersTargetEffect(CounterType.BOUNTY.createInstance());
|
Effect effect = new AddCountersTargetEffect(CounterType.BOUNTY.createInstance());
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,7 @@ public final class SeedguideAsh extends CardImpl {
|
||||||
this.power = new MageInt(4);
|
this.power = new MageInt(4);
|
||||||
this.toughness = new MageInt(4);
|
this.toughness = new MageInt(4);
|
||||||
// When Seedguide Ash dies, you may search your library for up to three Forest cards and put them onto the battlefield tapped. If you do, shuffle your library.
|
// When Seedguide Ash dies, you may search your library for up to three Forest cards and put them onto the battlefield tapped. If you do, shuffle your library.
|
||||||
this.addAbility(new DiesSourceTriggeredAbility(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(0, 3, filter), true, true), true));
|
this.addAbility(new DiesSourceTriggeredAbility(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(0, 3, filter), true), true));
|
||||||
}
|
}
|
||||||
|
|
||||||
private SeedguideAsh(final SeedguideAsh card) {
|
private SeedguideAsh(final SeedguideAsh card) {
|
||||||
|
|
|
||||||
|
|
@ -45,7 +45,7 @@ public final class ShadowbornApostle extends CardImpl {
|
||||||
// A deck can have any number of cards named Shadowborn Apostle.
|
// A deck can have any number of cards named Shadowborn Apostle.
|
||||||
this.getSpellAbility().addEffect(new InfoEffect("A deck can have any number of cards named Shadowborn Apostle."));
|
this.getSpellAbility().addEffect(new InfoEffect("A deck can have any number of cards named Shadowborn Apostle."));
|
||||||
// {B}, Sacrifice six creatures named Shadowborn Apostle: Search your library for a Demon creature and put it onto the battlefield. Then shuffle your library.
|
// {B}, Sacrifice six creatures named Shadowborn Apostle: Search your library for a Demon creature and put it onto the battlefield. Then shuffle your library.
|
||||||
Effect effect = new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(filter), false, true);
|
Effect effect = new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(filter), false);
|
||||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, effect, new ManaCostsImpl<>("{B}"));
|
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, effect, new ManaCostsImpl<>("{B}"));
|
||||||
ability.addCost(new SacrificeTargetCost(new TargetControlledCreaturePermanent(6,6,filterApostle, false)));
|
ability.addCost(new SacrificeTargetCost(new TargetControlledCreaturePermanent(6,6,filterApostle, false)));
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
|
|
|
||||||
|
|
@ -44,7 +44,7 @@ public final class ShefetMonitor extends CardImpl {
|
||||||
|
|
||||||
// When you cycle Shefet Monitor, you may search your library for a basic land card or a Desert card, put it onto the battlefield, then shuffle your library.
|
// When you cycle Shefet Monitor, you may search your library for a basic land card or a Desert card, put it onto the battlefield, then shuffle your library.
|
||||||
this.addAbility(new CycleTriggeredAbility(
|
this.addAbility(new CycleTriggeredAbility(
|
||||||
new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(filter), false, true),
|
new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(filter), false),
|
||||||
true));
|
true));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,6 @@ import mage.filter.common.FilterCreatureCard;
|
||||||
import mage.filter.predicate.mageobject.NamePredicate;
|
import mage.filter.predicate.mageobject.NamePredicate;
|
||||||
import mage.game.Game;
|
import mage.game.Game;
|
||||||
import mage.game.events.GameEvent;
|
import mage.game.events.GameEvent;
|
||||||
import mage.game.events.GameEvent.EventType;
|
|
||||||
import mage.game.stack.Spell;
|
import mage.game.stack.Spell;
|
||||||
import mage.target.common.TargetCardInLibrary;
|
import mage.target.common.TargetCardInLibrary;
|
||||||
import mage.watchers.Watcher;
|
import mage.watchers.Watcher;
|
||||||
|
|
@ -48,7 +47,7 @@ public final class SiftThroughSands extends CardImpl {
|
||||||
this.getSpellAbility().addEffect(effect);
|
this.getSpellAbility().addEffect(effect);
|
||||||
|
|
||||||
// If you've cast a spell named Peer Through Depths and a spell named Reach Through Mists this turn, you may search your library for a card named The Unspeakable, put it onto the battlefield, then shuffle your library.
|
// If you've cast a spell named Peer Through Depths and a spell named Reach Through Mists this turn, you may search your library for a card named The Unspeakable, put it onto the battlefield, then shuffle your library.
|
||||||
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(filter), false, true), new SiftThroughSandsCondition(), rule));
|
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(filter), false), new SiftThroughSandsCondition(), rule));
|
||||||
this.getSpellAbility().addWatcher(new SiftThroughSandsWatcher());
|
this.getSpellAbility().addWatcher(new SiftThroughSandsWatcher());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,7 @@ public final class SilkwingScout extends CardImpl {
|
||||||
|
|
||||||
// {G}, Sacrifice Silkwing Scout: Search your library for a basic land card and put that card onto the battlefield tapped. Then shuffle your library.
|
// {G}, Sacrifice Silkwing Scout: Search your library for a basic land card and put that card onto the battlefield tapped. Then shuffle your library.
|
||||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
|
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
|
||||||
new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true, true),
|
new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true),
|
||||||
new ManaCostsImpl<>("{G}"));
|
new ManaCostsImpl<>("{G}"));
|
||||||
ability.addCost(new SacrificeSourceCost());
|
ability.addCost(new SacrificeSourceCost());
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@ public final class SilvergladeElemental extends CardImpl {
|
||||||
|
|
||||||
this.power = new MageInt(4);
|
this.power = new MageInt(4);
|
||||||
this.toughness = new MageInt(4);
|
this.toughness = new MageInt(4);
|
||||||
this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(filter), false, false), true));
|
this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(filter), false), true));
|
||||||
}
|
}
|
||||||
|
|
||||||
private SilvergladeElemental(final SilvergladeElemental card) {
|
private SilvergladeElemental(final SilvergladeElemental card) {
|
||||||
|
|
|
||||||
|
|
@ -33,7 +33,7 @@ public final class SilvergladePathfinder extends CardImpl {
|
||||||
|
|
||||||
// {1}{G}, {tap}, Discard a card: Search your library for a basic land card and put that card onto the battlefield tapped. Then shuffle your library.
|
// {1}{G}, {tap}, Discard a card: Search your library for a basic land card and put that card onto the battlefield tapped. Then shuffle your library.
|
||||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
|
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
|
||||||
new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true, true),
|
new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true),
|
||||||
new ManaCostsImpl<>("{1}{G}"));
|
new ManaCostsImpl<>("{1}{G}"));
|
||||||
ability.addCost(new TapSourceCost());
|
ability.addCost(new TapSourceCost());
|
||||||
ability.addCost(new DiscardCardCost());
|
ability.addCost(new DiscardCardCost());
|
||||||
|
|
|
||||||
|
|
@ -64,7 +64,7 @@ public final class SithRuins extends CardImpl {
|
||||||
filter.add(Predicates.or(subtypePredicates));
|
filter.add(Predicates.or(subtypePredicates));
|
||||||
filter.add(SuperType.BASIC.getPredicate());
|
filter.add(SuperType.BASIC.getPredicate());
|
||||||
TargetCardInLibrary target = new TargetCardInLibrary(filter);
|
TargetCardInLibrary target = new TargetCardInLibrary(filter);
|
||||||
addEffect(new SearchLibraryPutInPlayEffect(target, true, true));
|
addEffect(new SearchLibraryPutInPlayEffect(target, true));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
|
|
@ -50,7 +50,7 @@ public final class SpaceMarineScout extends CardImpl {
|
||||||
// Concealed Position -- When Space Marine Scout enters the battlefield, if an opponent controls more lands than you, you may search your library for a Plains card, put it onto the battlefield tapped, then shuffle.
|
// Concealed Position -- When Space Marine Scout enters the battlefield, if an opponent controls more lands than you, you may search your library for a Plains card, put it onto the battlefield tapped, then shuffle.
|
||||||
this.addAbility(new ConditionalInterveningIfTriggeredAbility(
|
this.addAbility(new ConditionalInterveningIfTriggeredAbility(
|
||||||
new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInPlayEffect(
|
new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInPlayEffect(
|
||||||
new TargetCardInLibrary(filter), true, true
|
new TargetCardInLibrary(filter), true
|
||||||
), true), condition, "When {this} enters the battlefield, if an opponent controls more lands " +
|
), true), condition, "When {this} enters the battlefield, if an opponent controls more lands " +
|
||||||
"than you, you may search your library for a basic Plains card, put it onto the battlefield tapped, then shuffle."
|
"than you, you may search your library for a basic Plains card, put it onto the battlefield tapped, then shuffle."
|
||||||
).withFlavorWord("Concealed Position"));
|
).withFlavorWord("Concealed Position"));
|
||||||
|
|
|
||||||
|
|
@ -73,6 +73,6 @@ class SporocystEffect extends OneShotEffect {
|
||||||
int xValue = ManacostVariableValue.ETB.calculate(game, source, this);
|
int xValue = ManacostVariableValue.ETB.calculate(game, source, this);
|
||||||
return new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(
|
return new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(
|
||||||
0, xValue, StaticFilters.FILTER_CARD_BASIC_LANDS
|
0, xValue, StaticFilters.FILTER_CARD_BASIC_LANDS
|
||||||
), true, true).apply(game, source);
|
), true).apply(game, source);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -113,9 +113,8 @@ class SylvanPrimordialEffect extends OneShotEffect {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (destroyedCreatures > 0) {
|
if (destroyedCreatures > 0) {
|
||||||
new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(destroyedCreatures, filterForest), true, true).apply(game, source);
|
new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(destroyedCreatures, filterForest), true).apply(game, source);
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -71,7 +71,7 @@ class TajNarSwordsmithEffect extends OneShotEffect {
|
||||||
FilterCard filter = new FilterCard("Equipment card with mana value {" + payCount + "} or less");
|
FilterCard filter = new FilterCard("Equipment card with mana value {" + payCount + "} or less");
|
||||||
filter.add(SubType.EQUIPMENT.getPredicate());
|
filter.add(SubType.EQUIPMENT.getPredicate());
|
||||||
filter.add(new ManaValuePredicate(ComparisonType.FEWER_THAN, payCount + 1));
|
filter.add(new ManaValuePredicate(ComparisonType.FEWER_THAN, payCount + 1));
|
||||||
new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(0, 1, filter), false, true).apply(game, source);
|
new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(0, 1, filter), false).apply(game, source);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,7 @@ public final class TerminalMoraine extends CardImpl {
|
||||||
// {tap}: Add {C}.
|
// {tap}: Add {C}.
|
||||||
this.addAbility(new ColorlessManaAbility());
|
this.addAbility(new ColorlessManaAbility());
|
||||||
// {2}, {tap}, Sacrifice Terminal Moraine: Search your library for a basic land card and put that card onto the battlefield tapped. Then shuffle your library.
|
// {2}, {tap}, Sacrifice Terminal Moraine: Search your library for a basic land card and put that card onto the battlefield tapped. Then shuffle your library.
|
||||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true, true), new ManaCostsImpl<>("{2}"));
|
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true), new ManaCostsImpl<>("{2}"));
|
||||||
ability.addCost(new TapSourceCost());
|
ability.addCost(new TapSourceCost());
|
||||||
ability.addCost(new SacrificeSourceCost());
|
ability.addCost(new SacrificeSourceCost());
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
|
|
|
||||||
|
|
@ -37,7 +37,7 @@ public final class ThunderherdMigration extends CardImpl {
|
||||||
));
|
));
|
||||||
|
|
||||||
// Search your library for a basic land card, put it onto the battlefield tapped, then shuffle your library.
|
// Search your library for a basic land card, put it onto the battlefield tapped, then shuffle your library.
|
||||||
this.getSpellAbility().addEffect(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true, true));
|
this.getSpellAbility().addEffect(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true));
|
||||||
}
|
}
|
||||||
|
|
||||||
private ThunderherdMigration(final ThunderherdMigration card) {
|
private ThunderherdMigration(final ThunderherdMigration card) {
|
||||||
|
|
|
||||||
|
|
@ -44,7 +44,7 @@ public final class UlvenwaldHydra extends CardImpl {
|
||||||
|
|
||||||
// When Ulvenwald Hydra enters the battlefield, you may search your library for a land card, put it onto the battlefield tapped, then shuffle your library.
|
// When Ulvenwald Hydra enters the battlefield, you may search your library for a land card, put it onto the battlefield tapped, then shuffle your library.
|
||||||
TargetCardInLibrary target = new TargetCardInLibrary(new FilterLandCard());
|
TargetCardInLibrary target = new TargetCardInLibrary(new FilterLandCard());
|
||||||
this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInPlayEffect(target, true, true), true));
|
this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInPlayEffect(target, true), true));
|
||||||
}
|
}
|
||||||
|
|
||||||
private UlvenwaldHydra(final UlvenwaldHydra card) {
|
private UlvenwaldHydra(final UlvenwaldHydra card) {
|
||||||
|
|
|
||||||
|
|
@ -64,7 +64,7 @@ public final class UnderworldSlums extends CardImpl {
|
||||||
filter.add(Predicates.or(subtypePredicates));
|
filter.add(Predicates.or(subtypePredicates));
|
||||||
filter.add(SuperType.BASIC.getPredicate());
|
filter.add(SuperType.BASIC.getPredicate());
|
||||||
TargetCardInLibrary target = new TargetCardInLibrary(filter);
|
TargetCardInLibrary target = new TargetCardInLibrary(filter);
|
||||||
addEffect(new SearchLibraryPutInPlayEffect(target, true, true));
|
addEffect(new SearchLibraryPutInPlayEffect(target, true));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,7 @@ public final class VerdantCrescendo extends CardImpl {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{G}");
|
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{G}");
|
||||||
|
|
||||||
// Search your library for a basic land card and put it onto the battlefield tapped.
|
// Search your library for a basic land card and put it onto the battlefield tapped.
|
||||||
this.getSpellAbility().addEffect(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true, false));
|
this.getSpellAbility().addEffect(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true));
|
||||||
|
|
||||||
// Search your library and graveyard for a card named Nissa, Nature's Artisan, reveal it, and put it into your hand. Then shuffle your library.
|
// Search your library and graveyard for a card named Nissa, Nature's Artisan, reveal it, and put it into your hand. Then shuffle your library.
|
||||||
this.getSpellAbility().addEffect(new SearchLibraryGraveyardPutInHandEffect(filter, true));
|
this.getSpellAbility().addEffect(new SearchLibraryGraveyardPutInHandEffect(filter, true));
|
||||||
|
|
|
||||||
|
|
@ -31,7 +31,7 @@ public final class WarpedLandscape extends CardImpl {
|
||||||
|
|
||||||
// {2}, {T}, Sacrifice Warped Landscape: Search your library for a basic land card and put it onto the battlefield tapped. Then shuffle your library.
|
// {2}, {T}, Sacrifice Warped Landscape: Search your library for a basic land card and put it onto the battlefield tapped. Then shuffle your library.
|
||||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
|
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
|
||||||
new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true, true),
|
new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true),
|
||||||
new GenericManaCost(2));
|
new GenericManaCost(2));
|
||||||
ability.addCost(new TapSourceCost());
|
ability.addCost(new TapSourceCost());
|
||||||
ability.addCost(new SacrificeSourceCost());
|
ability.addCost(new SacrificeSourceCost());
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,7 @@ public final class WayfarersBauble extends CardImpl {
|
||||||
|
|
||||||
// {2}, {tap}, Sacrifice Wayfarer's Bauble: Search your library for a basic land card and put that card onto the battlefield tapped. Then shuffle your library.
|
// {2}, {tap}, Sacrifice Wayfarer's Bauble: Search your library for a basic land card and put that card onto the battlefield tapped. Then shuffle your library.
|
||||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
|
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
|
||||||
new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND),true, true), new GenericManaCost(2));
|
new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND),true), new GenericManaCost(2));
|
||||||
ability.addCost(new TapSourceCost());
|
ability.addCost(new TapSourceCost());
|
||||||
ability.addCost(new SacrificeSourceCost());
|
ability.addCost(new SacrificeSourceCost());
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
|
|
|
||||||
|
|
@ -35,7 +35,7 @@ public final class WhisperSquad extends CardImpl {
|
||||||
|
|
||||||
// {1}{B}: Search your library for a card named Whisper Squad, put it onto the battlefield tapped, then shuffle your library.
|
// {1}{B}: Search your library for a card named Whisper Squad, put it onto the battlefield tapped, then shuffle your library.
|
||||||
this.addAbility(new SimpleActivatedAbility(new SearchLibraryPutInPlayEffect(
|
this.addAbility(new SimpleActivatedAbility(new SearchLibraryPutInPlayEffect(
|
||||||
new TargetCardInLibrary(filter), true, true
|
new TargetCardInLibrary(filter), true
|
||||||
), new ManaCostsImpl<>("{1}{B}")));
|
), new ManaCostsImpl<>("{1}{B}")));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,7 @@ public final class WildWanderer extends CardImpl {
|
||||||
this.toughness = new MageInt(2);
|
this.toughness = new MageInt(2);
|
||||||
|
|
||||||
// When Wild Wanderer enters the battlefield, you may search your library for a basic land card, put it onto the battlefield tapped, then shuffle your library.
|
// When Wild Wanderer enters the battlefield, you may search your library for a basic land card, put it onto the battlefield tapped, then shuffle your library.
|
||||||
this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true, true), true));
|
this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true), true));
|
||||||
}
|
}
|
||||||
|
|
||||||
private WildWanderer(final WildWanderer card) {
|
private WildWanderer(final WildWanderer card) {
|
||||||
|
|
|
||||||
|
|
@ -33,7 +33,7 @@ public final class WoodElves extends CardImpl {
|
||||||
this.toughness = new MageInt(1);
|
this.toughness = new MageInt(1);
|
||||||
|
|
||||||
// When Wood Elves enters the battlefield, search your library for a Forest card and put that card onto the battlefield. Then shuffle your library.
|
// When Wood Elves enters the battlefield, search your library for a Forest card and put that card onto the battlefield. Then shuffle your library.
|
||||||
this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(filter), false, true)));
|
this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(filter), false)));
|
||||||
}
|
}
|
||||||
|
|
||||||
private WoodElves(final WoodElves card) {
|
private WoodElves(final WoodElves card) {
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,7 @@ public class FetchLandActivatedAbility extends ActivatedAbilityImpl {
|
||||||
FilterCard filter = new FilterCard(subType1.getDescription() + " or " + subType2.getDescription() + " card");
|
FilterCard filter = new FilterCard(subType1.getDescription() + " or " + subType2.getDescription() + " card");
|
||||||
filter.add(Predicates.or(subType1.getPredicate(), subType2.getPredicate()));
|
filter.add(Predicates.or(subType1.getPredicate(), subType2.getPredicate()));
|
||||||
TargetCardInLibrary target = new TargetCardInLibrary(filter);
|
TargetCardInLibrary target = new TargetCardInLibrary(filter);
|
||||||
addEffect(new SearchLibraryPutInPlayEffect(target, false, true));
|
addEffect(new SearchLibraryPutInPlayEffect(target, false));
|
||||||
}
|
}
|
||||||
|
|
||||||
private FetchLandActivatedAbility(FetchLandActivatedAbility ability) {
|
private FetchLandActivatedAbility(FetchLandActivatedAbility ability) {
|
||||||
|
|
|
||||||
|
|
@ -21,14 +21,10 @@ public class SearchLibraryPutInPlayEffect extends SearchEffect {
|
||||||
protected boolean optional;
|
protected boolean optional;
|
||||||
|
|
||||||
public SearchLibraryPutInPlayEffect(TargetCardInLibrary target) {
|
public SearchLibraryPutInPlayEffect(TargetCardInLibrary target) {
|
||||||
this(target, false, true);
|
this(target, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public SearchLibraryPutInPlayEffect(TargetCardInLibrary target, boolean tapped) {
|
public SearchLibraryPutInPlayEffect(TargetCardInLibrary target, boolean tapped) {
|
||||||
this(target, tapped, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
public SearchLibraryPutInPlayEffect(TargetCardInLibrary target, boolean tapped, boolean forceShuffle) {
|
|
||||||
this(target, tapped, true, false);
|
this(target, tapped, true, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,7 @@ public final class GarrukCallerOfBeastsEmblem extends Emblem {
|
||||||
*/
|
*/
|
||||||
public GarrukCallerOfBeastsEmblem() {
|
public GarrukCallerOfBeastsEmblem() {
|
||||||
super("Emblem Garruk");
|
super("Emblem Garruk");
|
||||||
Effect effect = new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(new FilterCreatureCard("creature card")), false, true);
|
Effect effect = new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(new FilterCreatureCard("creature card")), false);
|
||||||
Ability ability = new SpellCastControllerTriggeredAbility(Zone.COMMAND, effect, StaticFilters.FILTER_SPELL_A_CREATURE, true, false);
|
Ability ability = new SpellCastControllerTriggeredAbility(Zone.COMMAND, effect, StaticFilters.FILTER_SPELL_A_CREATURE, true, false);
|
||||||
this.getAbilities().add(ability);
|
this.getAbilities().add(ability);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ public class GarrukUnleashedEmblem extends Emblem {
|
||||||
// At the beginning of your end step, you may search your library for a creature card, put it onto the battlefield, then shuffle your library.
|
// At the beginning of your end step, you may search your library for a creature card, put it onto the battlefield, then shuffle your library.
|
||||||
public GarrukUnleashedEmblem() {
|
public GarrukUnleashedEmblem() {
|
||||||
super("Emblem Garruk");
|
super("Emblem Garruk");
|
||||||
Effect effect = new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_CREATURE), false, true)
|
Effect effect = new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_CREATURE), false)
|
||||||
.setText("search your library for a creature card, put it onto the battlefield, then shuffle");
|
.setText("search your library for a creature card, put it onto the battlefield, then shuffle");
|
||||||
this.getAbilities().add(new BeginningOfYourEndStepTriggeredAbility(Zone.COMMAND, effect, true));
|
this.getAbilities().add(new BeginningOfYourEndStepTriggeredAbility(Zone.COMMAND, effect, true));
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue