SearchLibraryPutInHandEffect: simplify constructors

This commit is contained in:
xenohedron 2023-05-13 20:28:46 -04:00
parent 5ee6bed33a
commit ae7266efba
148 changed files with 161 additions and 194 deletions

View file

@ -51,7 +51,7 @@ public final class AlpineHoundmaster extends CardImpl {
// When Alpine Houndmaster enters the battlefield, you may search your library for a card named Alpine Watchdog and/or a card named Igneous Cur, reveal them, put them into your hand, then shuffle your library. // When Alpine Houndmaster enters the battlefield, you may search your library for a card named Alpine Watchdog and/or a card named Igneous Cur, reveal them, put them into your hand, then shuffle your library.
this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInHandEffect( this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInHandEffect(
new TargetCardWithDifferentNameInLibrary(0, 2, filter2), true, true new TargetCardWithDifferentNameInLibrary(0, 2, filter2), true
).setText("search your library for a card named Alpine Watchdog and/or a card named Igneous Cur, reveal them, put them into your hand, then shuffle"), true)); ).setText("search your library for a card named Alpine Watchdog and/or a card named Igneous Cur, reveal them, put them into your hand, then shuffle"), true));
// Whenever Alpine Houndmaster attacks, it gets +X/+0 until end of turn, where X is the number of other attacking creatures. // Whenever Alpine Houndmaster attacks, it gets +X/+0 until end of turn, where X is the number of other attacking creatures.

View file

@ -27,7 +27,7 @@ public final class ArmillarySphere extends CardImpl {
// {2}, {tap}, Sacrifice Armillary Sphere: Search your library for up to two basic land cards, reveal them, and put them into your hand. Then shuffle your library. // {2}, {tap}, Sacrifice Armillary Sphere: Search your library for up to two basic land cards, reveal them, and put them into your hand. Then shuffle your library.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
new SearchLibraryPutInHandEffect(new TargetCardInLibrary(0, 2, StaticFilters.FILTER_CARD_BASIC_LANDS), true, true), new SearchLibraryPutInHandEffect(new TargetCardInLibrary(0, 2, StaticFilters.FILTER_CARD_BASIC_LANDS), true),
new GenericManaCost(2)); new GenericManaCost(2));
ability.addCost(new TapSourceCost()); ability.addCost(new TapSourceCost());
ability.addCost(new SacrificeSourceCost()); ability.addCost(new SacrificeSourceCost());

View file

@ -87,6 +87,6 @@ class AssemblyHallEffect extends OneShotEffect {
String nameToSearch = CardUtil.getCardNameForSameNameSearch(cardToReveal); String nameToSearch = CardUtil.getCardNameForSameNameSearch(cardToReveal);
FilterCard filterCard = new FilterCard("card named " + nameToSearch); FilterCard filterCard = new FilterCard("card named " + nameToSearch);
filterCard.add(new NamePredicate(nameToSearch)); filterCard.add(new NamePredicate(nameToSearch));
return new SearchLibraryPutInHandEffect(new TargetCardInLibrary(filterCard), true, true).apply(game, source); return new SearchLibraryPutInHandEffect(new TargetCardInLibrary(filterCard), true).apply(game, source);
} }
} }

View file

@ -40,7 +40,7 @@ public final class Avarax extends CardImpl {
// When Avarax enters the battlefield, you may search your library for a card named Avarax, reveal it, and put it into your hand. If you do, shuffle your library. // When Avarax enters the battlefield, you may search your library for a card named Avarax, reveal it, and put it into your hand. If you do, shuffle your library.
this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInHandEffect( this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInHandEffect(
new TargetCardInLibrary(1, filter), true, true new TargetCardInLibrary(1, filter), true
), true)); ), true));
// {1}{R}: Avarax gets +1/+0 until end of turn. // {1}{R}: Avarax gets +1/+0 until end of turn.

View file

@ -47,7 +47,7 @@ public final class AyarasOathsworn extends CardImpl {
"search your library for a card, put it into your hand, then shuffle." "search your library for a card, put it into your hand, then shuffle."
); );
ability.addEffect(new ConditionalOneShotEffect( ability.addEffect(new ConditionalOneShotEffect(
new SearchLibraryPutInHandEffect(new TargetCardInLibrary()), condition2 new SearchLibraryPutInHandEffect(new TargetCardInLibrary(), false), condition2
)); ));
this.addAbility(ability); this.addAbility(ability);
} }

View file

@ -34,7 +34,7 @@ public final class BattalionFootSoldier extends CardImpl {
// When Battalion Foot Soldier enters the battlefield, you may search your library for any number of cards named Battalion Foot Soldier, reveal them, put them into your hand, then shuffle your library. // When Battalion Foot Soldier enters the battlefield, you may search your library for any number of cards named Battalion Foot Soldier, reveal them, put them into your hand, then shuffle your library.
this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInHandEffect( this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInHandEffect(
new TargetCardInLibrary(0, Integer.MAX_VALUE, filter), true, true new TargetCardInLibrary(0, Integer.MAX_VALUE, filter), true
), true)); ), true));
} }

View file

@ -23,7 +23,7 @@ public final class BeholdTheBeyond extends CardImpl {
// Discard your hand. Search your library for three cards and put those cards into your hand. Then shuffle your library. // Discard your hand. Search your library for three cards and put those cards into your hand. Then shuffle your library.
this.getSpellAbility().addEffect(new DiscardHandControllerEffect()); this.getSpellAbility().addEffect(new DiscardHandControllerEffect());
TargetCardInLibrary target = new TargetCardInLibrary(0, 3, new FilterCard("cards")); TargetCardInLibrary target = new TargetCardInLibrary(0, 3, new FilterCard("cards"));
Effect effect = new SearchLibraryPutInHandEffect(target); Effect effect = new SearchLibraryPutInHandEffect(target, false);
effect.setText("Search your library for three cards, put those cards into your hand, then shuffle"); effect.setText("Search your library for three cards, put those cards into your hand, then shuffle");
this.getSpellAbility().addEffect(effect); this.getSpellAbility().addEffect(effect);
} }

View file

@ -27,7 +27,7 @@ public final class BeseechTheQueen extends CardImpl {
// <i>({2B} can be paid with any two mana or with {B}. This card's converted mana cost is 6.)</i> // <i>({2B} can be paid with any two mana or with {B}. This card's converted mana cost is 6.)</i>
// Search your library for a card with converted mana cost less than or equal to the number of lands you control, reveal it, and put it into your hand. Then shuffle your library. // Search your library for a card with converted mana cost less than or equal to the number of lands you control, reveal it, and put it into your hand. Then shuffle your library.
this.getSpellAbility().addEffect(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(filter), true, true)); this.getSpellAbility().addEffect(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(filter), true));
} }
private BeseechTheQueen(final BeseechTheQueen card) { private BeseechTheQueen(final BeseechTheQueen card) {

View file

@ -43,7 +43,7 @@ public final class BloodSpeaker extends CardImpl {
// At the beginning of your upkeep, you may sacrifice Blood Speaker. If you do, search your library for a Demon card, reveal that card, and put it into your hand. Then shuffle your library. // At the beginning of your upkeep, you may sacrifice Blood Speaker. If you do, search your library for a Demon card, reveal that card, and put it into your hand. Then shuffle your library.
Ability ability = new BeginningOfUpkeepTriggeredAbility(Zone.BATTLEFIELD, Ability ability = new BeginningOfUpkeepTriggeredAbility(Zone.BATTLEFIELD,
new DoIfCostPaid( new DoIfCostPaid(
new SearchLibraryPutInHandEffect(new TargetCardInLibrary(filterCard), true, true, "search your library for "), new SearchLibraryPutInHandEffect(new TargetCardInLibrary(filterCard), true),
new SacrificeSourceCost() new SacrificeSourceCost()
), ),
TargetController.YOU, TargetController.YOU,

View file

@ -27,7 +27,7 @@ public final class BorderlandRanger extends CardImpl {
this.toughness = new MageInt(2); this.toughness = new MageInt(2);
// When Borderland Ranger enters the battlefield, you may search your library for a basic land card, reveal it, and put it into your hand. If you do, shuffle your library. // When Borderland Ranger enters the battlefield, you may search your library for a basic land card, reveal it, and put it into your hand. If you do, shuffle your library.
this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true, true), true)); this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true), true));
} }
private BorderlandRanger(final BorderlandRanger card) { private BorderlandRanger(final BorderlandRanger card) {

View file

@ -45,7 +45,7 @@ public final class BoseijuReachesSkyward extends CardImpl {
this, SagaChapter.CHAPTER_I, this, SagaChapter.CHAPTER_I,
new SearchLibraryPutInHandEffect(new TargetCardInLibrary( new SearchLibraryPutInHandEffect(new TargetCardInLibrary(
0, 2, filter 0, 2, filter
), true, true) ), true)
); );
// II Put up to one target land card from your graveyard on top of your library. // II Put up to one target land card from your graveyard on top of your library.

View file

@ -44,7 +44,7 @@ public final class Bossk extends CardImpl {
this.addAbility(new BosskTriggeredAbility()); this.addAbility(new BosskTriggeredAbility());
// <i>Bounty</i> &mdash; Whenever a creature an opponent controls with a bounty counter on it dies, you may search your library for a basic land card, reveal it, and put it in to your hand. If you do, shuffle your library. // <i>Bounty</i> &mdash; Whenever a creature an opponent controls with a bounty counter on it dies, you may search your library for a basic land card, reveal it, and put it in to your hand. If you do, shuffle your library.
this.addAbility(new BountyAbility(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true, true), true)); this.addAbility(new BountyAbility(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true), true));
} }
private Bossk(final Bossk card) { private Bossk(final Bossk card) {

View file

@ -27,7 +27,7 @@ public final class BraidwoodSextant extends CardImpl {
// {2}, {tap}, Sacrifice Braidwood Sextant: Search your library for a basic land card, reveal that card, and put it into your hand. Then shuffle your library. // {2}, {tap}, Sacrifice Braidwood Sextant: Search your library for a basic land card, reveal that card, and put it into your hand. Then shuffle your library.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
new SearchLibraryPutInHandEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true, true), new SearchLibraryPutInHandEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true),
new ManaCostsImpl<>("{2}")); new ManaCostsImpl<>("{2}"));
ability.addCost(new TapSourceCost()); ability.addCost(new TapSourceCost());
ability.addCost(new SacrificeSourceCost()); ability.addCost(new SacrificeSourceCost());

View file

@ -51,7 +51,7 @@ public final class CaptainPhasma extends CardImpl {
new GainAbilityControlledEffect(ability, Duration.WhileOnBattlefield, filter, false))); new GainAbilityControlledEffect(ability, Duration.WhileOnBattlefield, filter, false)));
// {W}{U}{B}{R}{G}: Search your library for a Trooper creature card, reveal it, put it into your hand, then shuffle your library. // {W}{U}{B}{R}{G}: Search your library for a Trooper creature card, reveal it, put it into your hand, then shuffle your library.
this.addAbility(new SimpleActivatedAbility(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(filterCard), true, true), new ManaCostsImpl<>("{W}{U}{B}{R}{G}"))); this.addAbility(new SimpleActivatedAbility(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(filterCard), true), new ManaCostsImpl<>("{W}{U}{B}{R}{G}")));
} }
private CaptainPhasma(final CaptainPhasma card) { private CaptainPhasma(final CaptainPhasma card) {

View file

@ -37,7 +37,7 @@ public final class CaptainSisay extends CardImpl {
this.toughness = new MageInt(2); this.toughness = new MageInt(2);
// {tap}: Search your library for a legendary card, reveal that card, and put it into your hand. Then shuffle your library. // {tap}: Search your library for a legendary card, reveal that card, and put it into your hand. Then shuffle your library.
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new SearchLibraryPutInHandEffect(new TargetCardInLibrary(filter), true, true), new TapSourceCost())); this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new SearchLibraryPutInHandEffect(new TargetCardInLibrary(filter), true), new TapSourceCost()));
} }
private CaptainSisay(final CaptainSisay card) { private CaptainSisay(final CaptainSisay card) {

View file

@ -23,7 +23,7 @@ public final class Conflux extends CardImpl {
// Search your library for a white card, a blue card, a black card, a red card, and a green card. Reveal those cards and put them into your hand. Then shuffle your library. // Search your library for a white card, a blue card, a black card, a red card, and a green card. Reveal those cards and put them into your hand. Then shuffle your library.
this.getSpellAbility().addEffect(new SearchLibraryPutInHandEffect( this.getSpellAbility().addEffect(new SearchLibraryPutInHandEffect(
new ConfluxTarget(), true, true new ConfluxTarget(), true
).setText("search your library for a white card, a blue card, a black card, a red card, and a green card. " + ).setText("search your library for a white card, a blue card, a black card, a red card, and a green card. " +
"Reveal those cards, put them into your hand, then shuffle")); "Reveal those cards, put them into your hand, then shuffle"));
} }

View file

@ -39,7 +39,7 @@ public final class CovetedPrize extends CardImpl {
).addHint(PartyCountHint.instance).setRuleAtTheTop(true)); ).addHint(PartyCountHint.instance).setRuleAtTheTop(true));
// Search your library for a card, put it into your hand, then shuffle your library. If you have a full party, you may cast a spell with converted mana cost 4 or less from your hand without paying its mana cost. // Search your library for a card, put it into your hand, then shuffle your library. If you have a full party, you may cast a spell with converted mana cost 4 or less from your hand without paying its mana cost.
this.getSpellAbility().addEffect(new SearchLibraryPutInHandEffect(new TargetCardInLibrary())); this.getSpellAbility().addEffect(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(), false));
this.getSpellAbility().addEffect(new ConditionalOneShotEffect( this.getSpellAbility().addEffect(new ConditionalOneShotEffect(
new CastFromHandForFreeEffect(filter), new CastFromHandForFreeEffect(filter),
FullPartyCondition.instance, "If you have a full party, " + FullPartyCondition.instance, "If you have a full party, " +

View file

@ -23,7 +23,7 @@ public final class DarkPetition extends CardImpl {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{B}{B}"); super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{B}{B}");
// Search your library for a card and put that card into your hand. Then shuffle your library. // Search your library for a card and put that card into your hand. Then shuffle your library.
this.getSpellAbility().addEffect(new SearchLibraryPutInHandEffect(new TargetCardInLibrary())); this.getSpellAbility().addEffect(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(), false));
// <i>Spell mastery</i> &mdash; If there are two or more instant and/or sorcery cards in your graveyard, add {B}{B}{B}. // <i>Spell mastery</i> &mdash; If there are two or more instant and/or sorcery cards in your graveyard, add {B}{B}{B}.
Effect effect = new ConditionalOneShotEffect(new AddManaToManaPoolSourceControllerEffect(Mana.BlackMana(3)), Effect effect = new ConditionalOneShotEffect(new AddManaToManaPoolSourceControllerEffect(Mana.BlackMana(3)),

View file

@ -39,7 +39,7 @@ public final class DaruCavalier extends CardImpl {
// When Daru Cavalier enters the battlefield, you may search your library for a card named Daru Cavalier, reveal it, and put it into your hand. If you do, shuffle your library. // When Daru Cavalier enters the battlefield, you may search your library for a card named Daru Cavalier, reveal it, and put it into your hand. If you do, shuffle your library.
TargetCardInLibrary target = new TargetCardInLibrary(0, 1, filter); TargetCardInLibrary target = new TargetCardInLibrary(0, 1, filter);
this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInHandEffect(target, true, true), true)); this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInHandEffect(target, true), true));
} }
private DaruCavalier(final DaruCavalier card) { private DaruCavalier(final DaruCavalier card) {

View file

@ -38,7 +38,7 @@ public final class DeadeyeQuartermaster extends CardImpl {
// When Deadeye Quartermaster enters the battlefield, you may search your library for an Equipment or a Vehicle card and put it into your hand. If you do, shuffle your library. // When Deadeye Quartermaster enters the battlefield, you may search your library for an Equipment or a Vehicle card and put it into your hand. If you do, shuffle your library.
TargetCardInLibrary target = new TargetCardInLibrary(1, 1, filter); TargetCardInLibrary target = new TargetCardInLibrary(1, 1, filter);
this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInHandEffect(target, true, true), true)); this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInHandEffect(target, true), true));
} }
private DeadeyeQuartermaster(final DeadeyeQuartermaster card) { private DeadeyeQuartermaster(final DeadeyeQuartermaster card) {

View file

@ -17,7 +17,7 @@ public final class DemonicTutor extends CardImpl {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{B}"); super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{B}");
// Search your library for a card and put that card into your hand. Then shuffle your library. // Search your library for a card and put that card into your hand. Then shuffle your library.
this.getSpellAbility().addEffect(new SearchLibraryPutInHandEffect(new TargetCardInLibrary())); this.getSpellAbility().addEffect(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(), false));
} }
private DemonicTutor(final DemonicTutor card) { private DemonicTutor(final DemonicTutor card) {

View file

@ -24,7 +24,7 @@ public final class DiabolicIntent extends CardImpl {
this.getSpellAbility().addCost(new SacrificeTargetCost(new TargetControlledCreaturePermanent(FILTER_CONTROLLED_CREATURE_SHORT_TEXT))); this.getSpellAbility().addCost(new SacrificeTargetCost(new TargetControlledCreaturePermanent(FILTER_CONTROLLED_CREATURE_SHORT_TEXT)));
// Search your library for a card and put that card into your hand. Then shuffle your library. // Search your library for a card and put that card into your hand. Then shuffle your library.
this.getSpellAbility().addEffect(new SearchLibraryPutInHandEffect(new TargetCardInLibrary())); this.getSpellAbility().addEffect(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(), false));
} }
private DiabolicIntent(final DiabolicIntent card) { private DiabolicIntent(final DiabolicIntent card) {

View file

@ -19,7 +19,7 @@ public final class DiabolicTutor extends CardImpl {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{B}{B}"); super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{B}{B}");
TargetCardInLibrary target = new TargetCardInLibrary(); TargetCardInLibrary target = new TargetCardInLibrary();
this.getSpellAbility().addEffect(new SearchLibraryPutInHandEffect(target)); this.getSpellAbility().addEffect(new SearchLibraryPutInHandEffect(target, false));
} }
private DiabolicTutor(final DiabolicTutor card) { private DiabolicTutor(final DiabolicTutor card) {

View file

@ -19,7 +19,7 @@ public final class DigUp extends CardImpl {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{G}"); super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{G}");
// Cleave {1}{B}{B}{G} // Cleave {1}{B}{B}{G}
this.addAbility(new CleaveAbility(this, new SearchLibraryPutInHandEffect(new TargetCardInLibrary()), "{1}{B}{B}{G}")); this.addAbility(new CleaveAbility(this, new SearchLibraryPutInHandEffect(new TargetCardInLibrary(), false), "{1}{B}{B}{G}"));
// Search your library for a [basic land] card, [reveal it,] put it into your hand, then shuffle. // Search your library for a [basic land] card, [reveal it,] put it into your hand, then shuffle.
this.getSpellAbility().addEffect(new SearchLibraryPutInHandEffect( this.getSpellAbility().addEffect(new SearchLibraryPutInHandEffect(

View file

@ -87,7 +87,7 @@ class DiscipleOfDeceitEffect extends OneShotEffect {
String targetName = "card with mana value of " + card.getManaValue(); String targetName = "card with mana value of " + card.getManaValue();
FilterCard filter = new FilterCard(targetName); FilterCard filter = new FilterCard(targetName);
filter.add(new ManaValuePredicate(ComparisonType.EQUAL_TO, card.getManaValue())); filter.add(new ManaValuePredicate(ComparisonType.EQUAL_TO, card.getManaValue()));
return new SearchLibraryPutInHandEffect(new TargetCardInLibrary(filter), true, true).apply(game, source); return new SearchLibraryPutInHandEffect(new TargetCardInLibrary(filter), true).apply(game, source);
} }
} }
return true; return true;

View file

@ -42,7 +42,7 @@ public final class DistrictGuide extends CardImpl {
// When District Guide enters the battlefield, you may search your library for a basic land card or Gate card, reveal it, put it into your hand, then shuffle your library. // When District Guide enters the battlefield, you may search your library for a basic land card or Gate card, reveal it, put it into your hand, then shuffle your library.
this.addAbility(new EntersBattlefieldTriggeredAbility( this.addAbility(new EntersBattlefieldTriggeredAbility(
new SearchLibraryPutInHandEffect( new SearchLibraryPutInHandEffect(
new TargetCardInLibrary(filter), true, true new TargetCardInLibrary(filter), true
), true ), true
)); ));
} }

View file

@ -48,7 +48,7 @@ public final class DjeruWithEyesOpen extends CardImpl {
this.addAbility(VigilanceAbility.getInstance()); this.addAbility(VigilanceAbility.getInstance());
// When Djeru, With Eyes Open enters the battlefield, you may search your library for a planeswalker card, reveal it, put it into your hand, then shuffle your library. // When Djeru, With Eyes Open enters the battlefield, you may search your library for a planeswalker card, reveal it, put it into your hand, then shuffle your library.
Effect effect = new SearchLibraryPutInHandEffect(new TargetCardInLibrary(0, 1, filter), true, true); Effect effect = new SearchLibraryPutInHandEffect(new TargetCardInLibrary(0, 1, filter), true);
effect.setText("you may search your library for a planeswalker card, reveal it, put it into your hand, then shuffle"); effect.setText("you may search your library for a planeswalker card, reveal it, put it into your hand, then shuffle");
this.addAbility(new EntersBattlefieldTriggeredAbility(effect, true)); this.addAbility(new EntersBattlefieldTriggeredAbility(effect, true));

View file

@ -33,7 +33,7 @@ public final class DraconicMuralists extends CardImpl {
// When Draconic Muralists dies, you may search your library for a Dragon card, reveal it, put it into your hand, then shuffle. // When Draconic Muralists dies, you may search your library for a Dragon card, reveal it, put it into your hand, then shuffle.
this.addAbility(new DiesSourceTriggeredAbility(new SearchLibraryPutInHandEffect( this.addAbility(new DiesSourceTriggeredAbility(new SearchLibraryPutInHandEffect(
new TargetCardInLibrary(filter), true, true new TargetCardInLibrary(filter), true
), true)); ), true));
} }

View file

@ -25,7 +25,7 @@ public final class EladamrisCall extends CardImpl {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{G}{W}"); super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{G}{W}");
// Search your library for a creature card, reveal that card, and put it into your hand. Then shuffle your library. // Search your library for a creature card, reveal that card, and put it into your hand. Then shuffle your library.
this.getSpellAbility().addEffect(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(filter), true, true)); this.getSpellAbility().addEffect(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(filter), true));
} }
private EladamrisCall(final EladamrisCall card) { private EladamrisCall(final EladamrisCall card) {

View file

@ -41,7 +41,7 @@ public final class EmbermageGoblin extends CardImpl {
// When Embermage Goblin enters the battlefield, you may search your library for a card named Embermage Goblin, reveal it, and put it into your hand. If you do, shuffle your library. // When Embermage Goblin enters the battlefield, you may search your library for a card named Embermage Goblin, reveal it, and put it into your hand. If you do, shuffle your library.
TargetCardInLibrary target = new TargetCardInLibrary(1, 1, filter); TargetCardInLibrary target = new TargetCardInLibrary(1, 1, filter);
this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInHandEffect(target, true, true), true)); this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInHandEffect(target, true), true));
// {tap}: Embermage Goblin deals 1 damage to any target. // {tap}: Embermage Goblin deals 1 damage to any target.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(1), new TapSourceCost()); Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(1), new TapSourceCost());

View file

@ -92,7 +92,7 @@ class UrzasHotTubEffect extends OneShotEffect {
if (discardedCard != null) { if (discardedCard != null) {
FilterCard filter = new FilterCard(); FilterCard filter = new FilterCard();
filter.add(new UrzasHotTubPredicate(discardedCard.getName())); filter.add(new UrzasHotTubPredicate(discardedCard.getName()));
return new SearchLibraryPutInHandEffect(new TargetCardInLibrary(filter), true, true).apply(game, source); return new SearchLibraryPutInHandEffect(new TargetCardInLibrary(filter), true).apply(game, source);
} }
} }
} }

View file

@ -25,7 +25,7 @@ public final class EvolutionCharm extends CardImpl {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{G}"); super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{G}");
// Choose one - Search your library for a basic land card, reveal it, put it into your hand, then shuffle your library; // Choose one - Search your library for a basic land card, reveal it, put it into your hand, then shuffle your library;
this.getSpellAbility().addEffect(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(0, 1, StaticFilters.FILTER_CARD_BASIC_LAND), true, true).setText("Search your library for a basic land card, reveal it, put it into your hand, then shuffle")); this.getSpellAbility().addEffect(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(0, 1, StaticFilters.FILTER_CARD_BASIC_LAND), true).setText("Search your library for a basic land card, reveal it, put it into your hand, then shuffle"));
// or return target creature card from your graveyard to your hand; // or return target creature card from your graveyard to your hand;
Mode mode = new Mode(new ReturnFromGraveyardToHandTargetEffect()); Mode mode = new Mode(new ReturnFromGraveyardToHandTargetEffect());

View file

@ -30,7 +30,7 @@ public final class Farfinder extends CardImpl {
// When Farfinder etners the battlefield, you may search your library for a basic land card, reveal it, put it into your hand, then shuffle your library. // When Farfinder etners the battlefield, you may search your library for a basic land card, reveal it, put it into your hand, then shuffle your library.
this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInHandEffect( this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInHandEffect(
new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true, true new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true
), true)); ), true));
} }

View file

@ -34,7 +34,7 @@ public final class FierceEmpath extends CardImpl {
// When Fierce Empath enters the battlefield, you may search your library for a creature card with converted mana cost 6 or greater, reveal it, put it into your hand, then shuffle your library. // When Fierce Empath enters the battlefield, you may search your library for a creature card with converted mana cost 6 or greater, reveal it, put it into your hand, then shuffle your library.
this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInHandEffect( this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInHandEffect(
new TargetCardInLibrary(filter), true, true) new TargetCardInLibrary(filter), true)
.setText("search your library for a creature card with mana value 6 or greater, reveal it, put it into your hand, then shuffle"), .setText("search your library for a creature card with mana value 6 or greater, reveal it, put it into your hand, then shuffle"),
true)); true));
} }

View file

@ -38,7 +38,7 @@ public final class FlowerFlourish extends SplitCard {
// Search your library for a basic Forest or Plains card, reveal it, put it into your hand, then shuffle your library. // Search your library for a basic Forest or Plains card, reveal it, put it into your hand, then shuffle your library.
this.getLeftHalfCard().getSpellAbility().addEffect( this.getLeftHalfCard().getSpellAbility().addEffect(
new SearchLibraryPutInHandEffect( new SearchLibraryPutInHandEffect(
new TargetCardInLibrary(filter), true, true new TargetCardInLibrary(filter), true
) )
); );

View file

@ -43,7 +43,7 @@ public final class FromBeyond extends CardImpl {
// {1}{G}, Sacrifice From Beyond: Search your library for an Eldrazi card, reveal it, put it into your hand, then shuffle your library. // {1}{G}, Sacrifice From Beyond: Search your library for an Eldrazi card, reveal it, put it into your hand, then shuffle your library.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
new SearchLibraryPutInHandEffect(new TargetCardInLibrary(filter), true, true), new SearchLibraryPutInHandEffect(new TargetCardInLibrary(filter), true),
new ManaCostsImpl<>("{1}{G}")); new ManaCostsImpl<>("{1}{G}"));
ability.addCost(new SacrificeSourceCost()); ability.addCost(new SacrificeSourceCost());
this.addAbility(ability); this.addAbility(ability);

View file

@ -65,7 +65,7 @@ public final class FrostpyreArcanist extends CardImpl {
// When Frostpyre Arcanist enters the battlefield, search your library for an instant or sorcery card with the same name as a card in your graveyard, reveal it, put it into your hand, then shuffle your library. // When Frostpyre Arcanist enters the battlefield, search your library for an instant or sorcery card with the same name as a card in your graveyard, reveal it, put it into your hand, then shuffle your library.
this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInHandEffect( this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInHandEffect(
new TargetCardInLibrary(filter2), true, true new TargetCardInLibrary(filter2), true
))); )));
} }
@ -95,4 +95,4 @@ enum FrostpyreArcanistPredicate implements ObjectSourcePlayerPredicate<Card> {
.map(MageObject::getName) .map(MageObject::getName)
.anyMatch(input.getObject().getName()::equals); .anyMatch(input.getObject().getName()::equals);
} }
} }

View file

@ -21,7 +21,7 @@ public final class Gamble extends CardImpl {
// Search your library for a card, put that card into your hand, discard a card at random, then shuffle your library. // Search your library for a card, put that card into your hand, discard a card at random, then shuffle your library.
Effect effect = new SearchLibraryPutInHandEffect(new TargetCardInLibrary(), false, true); Effect effect = new SearchLibraryPutInHandEffect(new TargetCardInLibrary(), false);
effect.setText("Search your library for a card, put that card into your hand"); effect.setText("Search your library for a card, put that card into your hand");
this.getSpellAbility().addEffect(effect); this.getSpellAbility().addEffect(effect);
effect = new DiscardControllerEffect(1, true); effect = new DiscardControllerEffect(1, true);

View file

@ -49,7 +49,7 @@ public final class GarrukTheVeilCursed extends CardImpl {
this.addAbility(new LoyaltyAbility(new DoIfCostPaid( this.addAbility(new LoyaltyAbility(new DoIfCostPaid(
new SearchLibraryPutInHandEffect(new TargetCardInLibrary( new SearchLibraryPutInHandEffect(new TargetCardInLibrary(
StaticFilters.FILTER_CARD_CREATURE_A StaticFilters.FILTER_CARD_CREATURE_A
), true, true), ), true),
null, null,
new SacrificeTargetCost(new TargetControlledPermanent( new SacrificeTargetCost(new TargetControlledPermanent(
StaticFilters.FILTER_CONTROLLED_CREATURE_SHORT_TEXT StaticFilters.FILTER_CONTROLLED_CREATURE_SHORT_TEXT

View file

@ -45,7 +45,7 @@ public final class GatecreeperVine extends CardImpl {
// When Gatecreeper Vine enters the battlefield, you may search your library for a basic land card or a Gate card, reveal it, put it into your hand, then shuffle your library. // When Gatecreeper Vine enters the battlefield, you may search your library for a basic land card or a Gate card, reveal it, put it into your hand, then shuffle your library.
TargetCardInLibrary target = new TargetCardInLibrary(filter); TargetCardInLibrary target = new TargetCardInLibrary(filter);
this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInHandEffect(target, true, true), true)); this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInHandEffect(target, true), true));
} }
private GatecreeperVine(final GatecreeperVine card) { private GatecreeperVine(final GatecreeperVine card) {

View file

@ -34,7 +34,7 @@ public final class GatheringThrong extends CardImpl {
// When Gathering Throng enters the battlefield, you may search your library for any number of cards named Gathering Throng, reveal them, put them into your hand, then shuffle. // When Gathering Throng enters the battlefield, you may search your library for any number of cards named Gathering Throng, reveal them, put them into your hand, then shuffle.
this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInHandEffect( this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInHandEffect(
new TargetCardInLibrary(0, Integer.MAX_VALUE, filter), true, true new TargetCardInLibrary(0, Integer.MAX_VALUE, filter), true
), true)); ), true));
} }

View file

@ -43,7 +43,7 @@ public final class GeneralTazri extends CardImpl {
// When General Tazri enters the battlefield, you may search your library for an Ally creature card, reveal it, put it into your hand, then shuffle your library. // When General Tazri enters the battlefield, you may search your library for an Ally creature card, reveal it, put it into your hand, then shuffle your library.
this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInHandEffect( this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInHandEffect(
new TargetCardInLibrary(filter), true, true), true)); new TargetCardInLibrary(filter), true), true));
// {W}{U}{B}{R}{G}: Ally creatures you control get +X/+X until end of turn, where X is the number of colors among those creatures. // {W}{U}{B}{R}{G}: Ally creatures you control get +X/+X until end of turn, where X is the number of colors among those creatures.
DynamicValue xValue = new GeneralTazriColorCount(); DynamicValue xValue = new GeneralTazriColorCount();
BoostControlledEffect effect = new BoostControlledEffect(xValue, xValue, Duration.EndOfTurn, new FilterCreaturePermanent(SubType.ALLY, "Ally creatures"), false); BoostControlledEffect effect = new BoostControlledEffect(xValue, xValue, Duration.EndOfTurn, new FilterCreaturePermanent(SubType.ALLY, "Ally creatures"), false);

View file

@ -33,7 +33,7 @@ public final class Greenseeker extends CardImpl {
// {G}, {tap}, Discard a card: Search your library for a basic land card, reveal it, and put it into your hand. Then shuffle your library. // {G}, {tap}, Discard a card: Search your library for a basic land card, reveal it, and put it into your hand. Then shuffle your library.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
new SearchLibraryPutInHandEffect(new TargetCardInLibrary(1, 1, StaticFilters.FILTER_CARD_BASIC_LAND), true, true), new SearchLibraryPutInHandEffect(new TargetCardInLibrary(1, 1, StaticFilters.FILTER_CARD_BASIC_LAND), true),
new ManaCostsImpl<>("{G}")); new ManaCostsImpl<>("{G}"));
ability.addCost(new TapSourceCost()); ability.addCost(new TapSourceCost());
ability.addCost(new DiscardCardCost()); ability.addCost(new DiscardCardCost());

View file

@ -18,7 +18,7 @@ public final class GrimTutor extends CardImpl {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{B}{B}"); super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{B}{B}");
// Search your library for a card and put that card into your hand, then shuffle your library. // Search your library for a card and put that card into your hand, then shuffle your library.
this.getSpellAbility().addEffect(new SearchLibraryPutInHandEffect(new TargetCardInLibrary())); this.getSpellAbility().addEffect(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(), false));
// You lose 3 life. // You lose 3 life.
this.getSpellAbility().addEffect(new LoseLifeSourceControllerEffect(3)); this.getSpellAbility().addEffect(new LoseLifeSourceControllerEffect(3));

View file

@ -42,7 +42,7 @@ public final class Grozoth extends CardImpl {
// When Grozoth enters the battlefield, you may search your library for any number of cards that have converted mana cost 9, reveal them, and put them into your hand. If you do, shuffle your library. // When Grozoth enters the battlefield, you may search your library for any number of cards that have converted mana cost 9, reveal them, and put them into your hand. If you do, shuffle your library.
this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInHandEffect( this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInHandEffect(
new TargetCardInLibrary(0, Integer.MAX_VALUE, filter), true, true new TargetCardInLibrary(0, Integer.MAX_VALUE, filter), true
), true)); ), true));
// {4}: Grozoth loses defender until end of turn. // {4}: Grozoth loses defender until end of turn.

View file

@ -34,7 +34,7 @@ public final class HeliodsPilgrim extends CardImpl {
this.toughness = new MageInt(2); this.toughness = new MageInt(2);
// When Heliod's Pilgrim enters the battlefield, you may search your library for an Aura card, reveal it, put it into your hand, then shuffle your library. // When Heliod's Pilgrim enters the battlefield, you may search your library for an Aura card, reveal it, put it into your hand, then shuffle your library.
this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(filter), true, true), true)); this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(filter), true), true));
} }

View file

@ -37,7 +37,7 @@ public final class HerdMigration extends CardImpl {
Ability ability = new SimpleActivatedAbility( Ability ability = new SimpleActivatedAbility(
Zone.HAND, Zone.HAND,
new SearchLibraryPutInHandEffect( new SearchLibraryPutInHandEffect(
new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND_A), true, true new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND_A), true
), new ManaCostsImpl<>("{1}{G}") ), new ManaCostsImpl<>("{1}{G}")
); );
ability.addCost(new DiscardSourceCost()); ability.addCost(new DiscardSourceCost());

View file

@ -7,7 +7,6 @@ import mage.abilities.Ability;
import mage.abilities.common.DealsCombatDamageToAPlayerTriggeredAbility; import mage.abilities.common.DealsCombatDamageToAPlayerTriggeredAbility;
import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.combat.CantBeBlockedTargetEffect; import mage.abilities.effects.common.combat.CantBeBlockedTargetEffect;
import mage.abilities.effects.common.search.SearchLibraryPutInHandEffect; import mage.abilities.effects.common.search.SearchLibraryPutInHandEffect;
import mage.abilities.keyword.NinjutsuAbility; import mage.abilities.keyword.NinjutsuAbility;
@ -49,7 +48,7 @@ public final class HigureTheStillWind extends CardImpl {
this.addAbility(new NinjutsuAbility("{2}{U}{U}")); this.addAbility(new NinjutsuAbility("{2}{U}{U}"));
// Whenever Higure, the Still Wind deals combat damage to a player, you may search your library for a Ninja card, reveal it, and put it into your hand. If you do, shuffle your library. // Whenever Higure, the Still Wind deals combat damage to a player, you may search your library for a Ninja card, reveal it, and put it into your hand. If you do, shuffle your library.
this.addAbility(new DealsCombatDamageToAPlayerTriggeredAbility(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(filter), true, false), true)); this.addAbility(new DealsCombatDamageToAPlayerTriggeredAbility(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(filter), true), true));
// {2}: Target Ninja creature can't be blocked this turn. // {2}: Target Ninja creature can't be blocked this turn.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new CantBeBlockedTargetEffect(), new GenericManaCost(2)); Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new CantBeBlockedTargetEffect(), new GenericManaCost(2));

View file

@ -33,7 +33,7 @@ public final class HowlingWolf extends CardImpl {
// When Howling Wolf enters the battlefield, you may search your library for up to three cards named Howling Wolf, reveal them, and put them into your hand. If you do, shuffle your library. // When Howling Wolf enters the battlefield, you may search your library for up to three cards named Howling Wolf, reveal them, and put them into your hand. If you do, shuffle your library.
TargetCardInLibrary target = new TargetCardInLibrary(0, 3, filter); TargetCardInLibrary target = new TargetCardInLibrary(0, 3, filter);
this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInHandEffect(target, true, true), true)); this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInHandEffect(target, true), true));
} }
private HowlingWolf(final HowlingWolf card) { private HowlingWolf(final HowlingWolf card) {

View file

@ -21,7 +21,7 @@ public final class IllicitShipment extends CardImpl {
this.addAbility(new CasualtyAbility(3)); this.addAbility(new CasualtyAbility(3));
// Search your library for a card, put that card into your hand, then shuffle. // Search your library for a card, put that card into your hand, then shuffle.
this.getSpellAbility().addEffect(new SearchLibraryPutInHandEffect(new TargetCardInLibrary())); this.getSpellAbility().addEffect(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(), false));
} }
private IllicitShipment(final IllicitShipment card) { private IllicitShipment(final IllicitShipment card) {

View file

@ -35,7 +35,7 @@ public final class ImperialHellkite extends CardImpl {
this.addAbility(new MorphAbility(new ManaCostsImpl<>("{6}{R}{R}"))); this.addAbility(new MorphAbility(new ManaCostsImpl<>("{6}{R}{R}")));
// When Imperial Hellkite is turned face up, you may search your library for a Dragon card, reveal it, and put it into your hand. If you do, shuffle your library. // When Imperial Hellkite is turned face up, you may search your library for a Dragon card, reveal it, and put it into your hand. If you do, shuffle your library.
Effect effect = new SearchLibraryPutInHandEffect(new TargetCardInLibrary(0, 1, new FilterBySubtypeCard(SubType.DRAGON)), true, true); Effect effect = new SearchLibraryPutInHandEffect(new TargetCardInLibrary(0, 1, new FilterBySubtypeCard(SubType.DRAGON)), true);
effect.setText("you may search your library for a Dragon card, reveal it, and put it into your hand. If you do, shuffle"); effect.setText("you may search your library for a Dragon card, reveal it, and put it into your hand. If you do, shuffle");
this.addAbility(new TurnedFaceUpSourceTriggeredAbility(effect)); this.addAbility(new TurnedFaceUpSourceTriggeredAbility(effect));
} }

View file

@ -35,7 +35,7 @@ public final class ImperialRecruiter extends CardImpl {
this.toughness = new MageInt(1); this.toughness = new MageInt(1);
// When Imperial Recruiter enters the battlefield, search your library for a creature card with power 2 or less, reveal it, and put it into your hand. Then shuffle your library. // When Imperial Recruiter enters the battlefield, search your library for a creature card with power 2 or less, reveal it, and put it into your hand. Then shuffle your library.
this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(filter), true, true))); this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(filter), true)));
} }
private ImperialRecruiter(final ImperialRecruiter card) { private ImperialRecruiter(final ImperialRecruiter card) {

View file

@ -9,7 +9,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.constants.Zone; import mage.constants.Zone;
import mage.filter.StaticFilters; import mage.filter.StaticFilters;
import mage.game.Game; import mage.game.Game;
@ -28,8 +27,8 @@ public final class IncreasingAmbition extends CardImpl {
// Search your library for a card and put that card into your hand. If this spell was cast from a graveyard, instead search your library for two cards and put those cards into your hand. Then shuffle your library. // Search your library for a card and put that card into your hand. If this spell was cast from a graveyard, instead search your library for two cards and put those cards into your hand. Then shuffle your library.
this.getSpellAbility().addEffect(new ConditionalOneShotEffect( this.getSpellAbility().addEffect(new ConditionalOneShotEffect(
new SearchLibraryPutInHandEffect(new TargetCardInLibrary(2, StaticFilters.FILTER_CARD)), new SearchLibraryPutInHandEffect(new TargetCardInLibrary(2, StaticFilters.FILTER_CARD), false),
new SearchLibraryPutInHandEffect(new TargetCardInLibrary()), new SearchLibraryPutInHandEffect(new TargetCardInLibrary(), false),
IncreasingAmbitionCondition.instance, "Search your library for a card " + IncreasingAmbitionCondition.instance, "Search your library for a card " +
"and put that card into your hand. If this spell was cast from a graveyard, " + "and put that card into your hand. If this spell was cast from a graveyard, " +
"instead search your library for two cards and put those cards into your hand. " + "instead search your library for two cards and put those cards into your hand. " +

View file

@ -55,7 +55,7 @@ public final class InfectiousBloodlust extends CardImpl {
// When enchanted creature dies, you may search your library for a card named Infectious Bloodlust, reveal it, put it into your hand, then shuffle your library. // When enchanted creature dies, you may search your library for a card named Infectious Bloodlust, reveal it, put it into your hand, then shuffle your library.
this.addAbility(new DiesAttachedTriggeredAbility(new SearchLibraryPutInHandEffect( this.addAbility(new DiesAttachedTriggeredAbility(new SearchLibraryPutInHandEffect(
new TargetCardInLibrary(filter), true, true new TargetCardInLibrary(filter), true
), "enchanted creature", true)); ), "enchanted creature", true));
} }

View file

@ -37,7 +37,7 @@ public final class InfernalTutor extends CardImpl {
this.getSpellAbility().addEffect(new InfernalTutorEffect()); this.getSpellAbility().addEffect(new InfernalTutorEffect());
// Hellbent - If you have no cards in hand, instead search your library for a card, put it into your hand, then shuffle your library. // Hellbent - If you have no cards in hand, instead search your library for a card, put it into your hand, then shuffle your library.
Effect effect = new ConditionalOneShotEffect( Effect effect = new ConditionalOneShotEffect(
new SearchLibraryPutInHandEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD), false, true), new SearchLibraryPutInHandEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD), false),
HellbentCondition.instance, HellbentCondition.instance,
"<br/><br/><i>Hellbent</i> &mdash; If you have no cards in hand, instead search your library for a card, put it into your hand, then shuffle"); "<br/><br/><i>Hellbent</i> &mdash; If you have no cards in hand, instead search your library for a card, put it into your hand, then shuffle");
this.getSpellAbility().addEffect(effect); this.getSpellAbility().addEffect(effect);
@ -95,7 +95,7 @@ class InfernalTutorEffect extends OneShotEffect {
} else { } else {
filterCard = new FilterCard(); filterCard = new FilterCard();
} }
return new SearchLibraryPutInHandEffect(new TargetCardInLibrary(filterCard), true, true).apply(game, source); return new SearchLibraryPutInHandEffect(new TargetCardInLibrary(filterCard), true).apply(game, source);
} }
return true; return true;

View file

@ -40,7 +40,7 @@ public final class InvasionOfTheros extends CardImpl {
// When Invasion of Theros enters the battlefield, search your library for an Aura, God, or Demigod card, reveal it, put it into your hand, then shuffle. // When Invasion of Theros enters the battlefield, search your library for an Aura, God, or Demigod card, reveal it, put it into your hand, then shuffle.
this.addAbility(new EntersBattlefieldTriggeredAbility( this.addAbility(new EntersBattlefieldTriggeredAbility(
new SearchLibraryPutInHandEffect(new TargetCardInLibrary(filter), true, true) new SearchLibraryPutInHandEffect(new TargetCardInLibrary(filter), true)
)); ));
} }

View file

@ -83,7 +83,7 @@ class IsperiaTheInscrutableEffect extends OneShotEffect {
player.revealCards(player.getLogName() + " hand", player.getHand(), game, true); player.revealCards(player.getLogName() + " hand", player.getHand(), game, true);
for (Card card : player.getHand().getCards(game)) { for (Card card : player.getHand().getCards(game)) {
if (CardUtil.haveSameNames(card, cardName, game)) { if (CardUtil.haveSameNames(card, cardName, game)) {
return new SearchLibraryPutInHandEffect(new TargetCardInLibrary(filter), true, true).apply(game, source); return new SearchLibraryPutInHandEffect(new TargetCardInLibrary(filter), true).apply(game, source);
} }
} }
return true; return true;

View file

@ -29,7 +29,7 @@ public final class IthorianInitiate extends CardImpl {
this.toughness = new MageInt(1); this.toughness = new MageInt(1);
// When Ithorian Initiate enters the battlefield, you may search your library for a basic land, reveal it, and put it into your hand. If you do shuffle your library. // When Ithorian Initiate enters the battlefield, you may search your library for a basic land, reveal it, and put it into your hand. If you do shuffle your library.
this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true, true), true)); this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true), true));
// Meditate {1}{G} // Meditate {1}{G}
this.addAbility(new MeditateAbility(new ManaCostsImpl<>("{1}{G}"))); this.addAbility(new MeditateAbility(new ManaCostsImpl<>("{1}{G}")));

View file

@ -30,7 +30,7 @@ public final class JohnnyComboPlayer extends CardImpl {
this.toughness = new MageInt(1); this.toughness = new MageInt(1);
// {4}: Search your library for a card, put that card into your hand, then shuffle your library. // {4}: Search your library for a card, put that card into your hand, then shuffle your library.
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new SearchLibraryPutInHandEffect(new TargetCardInLibrary(new FilterCard("a card")), false, true), new ManaCostsImpl<>("{4}"))); this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new SearchLibraryPutInHandEffect(new TargetCardInLibrary(new FilterCard("a card")), false), new ManaCostsImpl<>("{4}")));
} }
private JohnnyComboPlayer(final JohnnyComboPlayer card) { private JohnnyComboPlayer(final JohnnyComboPlayer card) {

View file

@ -32,7 +32,7 @@ public final class KrosanTusker extends CardImpl {
this.addAbility(new CyclingAbility(new ManaCostsImpl<>("{2}{G}"))); this.addAbility(new CyclingAbility(new ManaCostsImpl<>("{2}{G}")));
// When you cycle Krosan Tusker, you may search your library for a basic land card, reveal that card, put it into your hand, then shuffle your library. // When you cycle Krosan Tusker, you may search your library for a basic land card, reveal that card, put it into your hand, then shuffle your library.
this.addAbility(new CycleTriggeredAbility( this.addAbility(new CycleTriggeredAbility(
new SearchLibraryPutInHandEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true, true), new SearchLibraryPutInHandEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true),
true)); true));
} }

View file

@ -43,7 +43,7 @@ public final class LagomosHandOfHatred extends CardImpl {
// {T}: Search your library for a card, put it into your hand, then shuffle. Activate only if five or more creatures died this turn. // {T}: Search your library for a card, put it into your hand, then shuffle. Activate only if five or more creatures died this turn.
this.addAbility(new ConditionalActivatedAbility( this.addAbility(new ConditionalActivatedAbility(
Zone.BATTLEFIELD, Zone.BATTLEFIELD,
new SearchLibraryPutInHandEffect(new TargetCardInLibrary()), new SearchLibraryPutInHandEffect(new TargetCardInLibrary(), false),
new TapSourceCost(), new TapSourceCost(),
LagomosHandOfHatredCondition.instance LagomosHandOfHatredCondition.instance
)); ));

View file

@ -38,7 +38,7 @@ public final class LandGrant extends CardImpl {
"If you have no land cards in hand, you may reveal your hand rather than pay this spell's mana cost.")); "If you have no land cards in hand, you may reveal your hand rather than pay this spell's mana cost."));
// Search your library for a Forest card, reveal that card, and put it into your hand. Then shuffle your library. // Search your library for a Forest card, reveal that card, and put it into your hand. Then shuffle your library.
this.getSpellAbility().addEffect(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(filter), true, true)); this.getSpellAbility().addEffect(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(filter), true));
} }
private LandGrant(final LandGrant card) { private LandGrant(final LandGrant card) {

View file

@ -25,7 +25,7 @@ public final class LandTax extends CardImpl {
// At the beginning of your upkeep, if an opponent controls more lands than you, you may search your library for up to three basic land cards, reveal them, and put them into your hand. If you do, shuffle your library. // At the beginning of your upkeep, if an opponent controls more lands than you, you may search your library for up to three basic land cards, reveal them, and put them into your hand. If you do, shuffle your library.
this.addAbility(new ConditionalInterveningIfTriggeredAbility( this.addAbility(new ConditionalInterveningIfTriggeredAbility(
new BeginningOfUpkeepTriggeredAbility(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(0, 3, StaticFilters.FILTER_CARD_BASIC_LAND), true, true), TargetController.YOU, true), new BeginningOfUpkeepTriggeredAbility(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(0, 3, StaticFilters.FILTER_CARD_BASIC_LAND), true), TargetController.YOU, true),
new OpponentControlsMoreCondition(StaticFilters.FILTER_LANDS), new OpponentControlsMoreCondition(StaticFilters.FILTER_LANDS),
"At the beginning of your upkeep, if an opponent controls more lands than you, you may search your library for up to three basic land cards, reveal them, put them into your hand, then shuffle." "At the beginning of your upkeep, if an opponent controls more lands than you, you may search your library for up to three basic land cards, reveal them, put them into your hand, then shuffle."
)); ));

View file

@ -36,7 +36,7 @@ public final class LegionConquistador extends CardImpl {
// When Legion Conquistador enters the battlefield, you may search your library for any number of cards named Legion Conquistador, reveal them, put them into your hand, then shuffle your library // When Legion Conquistador enters the battlefield, you may search your library for any number of cards named Legion Conquistador, reveal them, put them into your hand, then shuffle your library
TargetCardInLibrary target = new TargetCardInLibrary(0, Integer.MAX_VALUE, filter); TargetCardInLibrary target = new TargetCardInLibrary(0, Integer.MAX_VALUE, filter);
Effect effect = new SearchLibraryPutInHandEffect(target, true, true); Effect effect = new SearchLibraryPutInHandEffect(target, true);
effect.setText("you may search your library for any number of cards named Legion Conquistador, reveal them, put them into your hand, then shuffle"); effect.setText("you may search your library for any number of cards named Legion Conquistador, reveal them, put them into your hand, then shuffle");
this.addAbility(new EntersBattlefieldTriggeredAbility(effect, true)); this.addAbility(new EntersBattlefieldTriggeredAbility(effect, true));
} }

View file

@ -28,7 +28,7 @@ public final class LibraryOfLatNam extends CardImpl {
this.getSpellAbility().addEffect(new CreateDelayedTriggeredAbilityEffect(new AtTheBeginOfNextUpkeepDelayedTriggeredAbility(new DrawCardSourceControllerEffect(3).setText("you draw three cards")), false)); this.getSpellAbility().addEffect(new CreateDelayedTriggeredAbilityEffect(new AtTheBeginOfNextUpkeepDelayedTriggeredAbility(new DrawCardSourceControllerEffect(3).setText("you draw three cards")), false));
// or you search your library for a card, put that card into your hand, then shuffle your library. // or you search your library for a card, put that card into your hand, then shuffle your library.
this.getSpellAbility().addMode(new Mode(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(), false, true).setText("you search your library for a card, put that card into your hand, then shuffle"))); this.getSpellAbility().addMode(new Mode(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(), false).setText("you search your library for a card, put that card into your hand, then shuffle")));
} }
private LibraryOfLatNam(final LibraryOfLatNam card) { private LibraryOfLatNam(final LibraryOfLatNam card) {

View file

@ -37,7 +37,7 @@ public final class LilianasShade extends CardImpl {
this.toughness = new MageInt(1); this.toughness = new MageInt(1);
// When Liliana's Shade enters the battlefield, you may search your library for a Swamp card, reveal it, put it into your hand, then shuffle your library. // When Liliana's Shade enters the battlefield, you may search your library for a Swamp card, reveal it, put it into your hand, then shuffle your library.
this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(filter), true, true), true)); this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(filter), true), true));
// {B}: Liliana's Shade gets +1/+1 until end of turn. // {B}: Liliana's Shade gets +1/+1 until end of turn.
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(1, 1, Duration.EndOfTurn), new ManaCostsImpl<>("{B}"))); this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(1, 1, Duration.EndOfTurn), new ManaCostsImpl<>("{B}")));
} }

View file

@ -21,7 +21,7 @@ public final class MastermindsAcquisition extends CardImpl {
// Choose one - // Choose one -
// Search your library for a card and put that card into your hand. Then shuffle your library. // Search your library for a card and put that card into your hand. Then shuffle your library.
this.getSpellAbility().addEffect(new SearchLibraryPutInHandEffect(new TargetCardInLibrary())); this.getSpellAbility().addEffect(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(), false));
// Put a card you own from outside the game into your hand. // Put a card you own from outside the game into your hand.
Mode mode = new Mode(new WishEffect().setText("put a card you own from outside the game into your hand")); Mode mode = new Mode(new WishEffect().setText("put a card you own from outside the game into your hand"));

View file

@ -37,7 +37,7 @@ public final class Micromancer extends CardImpl {
// When Micromancer enters the battlefield, you may search your library for an instant or sorcery card with mana value 1, reveal it, put it into your hand, then shuffle. // When Micromancer enters the battlefield, you may search your library for an instant or sorcery card with mana value 1, reveal it, put it into your hand, then shuffle.
this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInHandEffect( this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInHandEffect(
new TargetCardInLibrary(filter), true, true new TargetCardInLibrary(filter), true
), true)); ), true));
} }

View file

@ -35,7 +35,7 @@ public final class MoonsilverKey extends CardImpl {
// {1}, {T}, Sacrifice Moonsilver Key: Search your library for an artifact card with a mana ability or a basic land card, reveal it, put it into your hand, then shuffle. // {1}, {T}, Sacrifice Moonsilver Key: Search your library for an artifact card with a mana ability or a basic land card, reveal it, put it into your hand, then shuffle.
Ability ability = new SimpleActivatedAbility(new SearchLibraryPutInHandEffect( Ability ability = new SimpleActivatedAbility(new SearchLibraryPutInHandEffect(
new TargetCardInLibrary(filter), true, true new TargetCardInLibrary(filter), true
), new GenericManaCost(1)); ), new GenericManaCost(1));
ability.addCost(new TapSourceCost()); ability.addCost(new TapSourceCost());
ability.addCost(new SacrificeSourceCost()); ability.addCost(new SacrificeSourceCost());
@ -66,4 +66,4 @@ enum MoonsilverKeyPredicate implements Predicate<Card> {
.stream() .stream()
.anyMatch(ManaAbility.class::isInstance); .anyMatch(ManaAbility.class::isInstance);
} }
} }

View file

@ -22,7 +22,7 @@ public final class MycosynthWellspring extends CardImpl {
// When Mycosynth Wellspring enters the battlefield or is put into a graveyard from the battlefield, // When Mycosynth Wellspring enters the battlefield or is put into a graveyard from the battlefield,
// you may search your library for a basic land card, reveal it, put it into your hand, then shuffle your library. // you may search your library for a basic land card, reveal it, put it into your hand, then shuffle your library.
this.addAbility(new EntersBattlefieldOrDiesSourceTriggeredAbility(new SearchLibraryPutInHandEffect( this.addAbility(new EntersBattlefieldOrDiesSourceTriggeredAbility(new SearchLibraryPutInHandEffect(
new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true, true new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true
), true, false)); ), true, false));
} }

View file

@ -32,7 +32,7 @@ public final class MyrKinsmith extends CardImpl {
// When Myr Kinsmith enters the battlefield, you may search your library for a Myr card, reveal it, put it into your hand, then shuffle. // When Myr Kinsmith enters the battlefield, you may search your library for a Myr card, reveal it, put it into your hand, then shuffle.
this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInHandEffect( this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInHandEffect(
new TargetCardInLibrary(filter), true, true new TargetCardInLibrary(filter), true
), true)); ), true));
} }

View file

@ -9,7 +9,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.FilterCard; import mage.filter.FilterCard;
import mage.filter.predicate.Predicates; import mage.filter.predicate.Predicates;
import mage.filter.predicate.mageobject.AbilityPredicate; import mage.filter.predicate.mageobject.AbilityPredicate;
@ -35,7 +34,7 @@ public final class MysticalTeachings extends CardImpl {
// Search your library for an instant card or a card with flash, reveal it, and put it into your hand. Then shuffle your library. // Search your library for an instant card or a card with flash, reveal it, and put it into your hand. Then shuffle your library.
this.getSpellAbility().addEffect(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(filter), true, true)); this.getSpellAbility().addEffect(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(filter), true));
// Flashback {5}{B} // Flashback {5}{B}
this.addAbility(new FlashbackAbility(this, new ManaCostsImpl<>("{5}{B}"))); this.addAbility(new FlashbackAbility(this, new ManaCostsImpl<>("{5}{B}")));
} }

View file

@ -38,7 +38,7 @@ public final class NestingWurm extends CardImpl {
// When Nesting Wurm enters the battlefield, you may search your library for up to three cards named Nesting Wurm, reveal them, and put them into your hand. If you do, shuffle your library. // When Nesting Wurm enters the battlefield, you may search your library for up to three cards named Nesting Wurm, reveal them, and put them into your hand. If you do, shuffle your library.
TargetCardInLibrary target = new TargetCardInLibrary(0, 3, filter); TargetCardInLibrary target = new TargetCardInLibrary(0, 3, filter);
this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInHandEffect(target, true, true), true)); this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInHandEffect(target, true), true));
} }
private NestingWurm(final NestingWurm card) { private NestingWurm(final NestingWurm card) {

View file

@ -41,7 +41,7 @@ public final class NissaVastwoodSeer extends CardImpl {
this.secondSideCardClazz = mage.cards.n.NissaSageAnimist.class; this.secondSideCardClazz = mage.cards.n.NissaSageAnimist.class;
// When Nissa, Vastwood Seer enters the battlefield, you may search your library for a basic Forest card, reveal it, put it into your hand, then shuffle your library. // When Nissa, Vastwood Seer enters the battlefield, you may search your library for a basic Forest card, reveal it, put it into your hand, then shuffle your library.
this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(filter), true, true), true)); this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(filter), true), true));
// Whenever a land enters the battlefield under your control, if you control seven or more lands, exile Nissa, then return her to the battlefield transformed under her owner's control. // Whenever a land enters the battlefield under your control, if you control seven or more lands, exile Nissa, then return her to the battlefield transformed under her owner's control.
this.addAbility(new TransformAbility()); this.addAbility(new TransformAbility());

View file

@ -39,10 +39,10 @@ public final class NissasTriumph extends CardImpl {
this.getSpellAbility().addEffect(new ConditionalOneShotEffect( this.getSpellAbility().addEffect(new ConditionalOneShotEffect(
new SearchLibraryPutInHandEffect(new TargetCardInLibrary( new SearchLibraryPutInHandEffect(new TargetCardInLibrary(
0, 3, StaticFilters.FILTER_CARD_LAND 0, 3, StaticFilters.FILTER_CARD_LAND
), true, true), ), true),
new SearchLibraryPutInHandEffect(new TargetCardInLibrary( new SearchLibraryPutInHandEffect(new TargetCardInLibrary(
0, 2, filter 0, 2, filter
), true, true), ), true),
new PermanentsOnTheBattlefieldCondition(filter2), new PermanentsOnTheBattlefieldCondition(filter2),
"Search your library for up to two basic Forest cards. If you control a Nissa planeswalker, " + "Search your library for up to two basic Forest cards. If you control a Nissa planeswalker, " +
"instead search your library for up to three land cards. " + "instead search your library for up to three land cards. " +

View file

@ -79,6 +79,6 @@ class NyleasInterventionEffect extends OneShotEffect {
int xValue = source.getManaCostsToPay().getX(); int xValue = source.getManaCostsToPay().getX();
return new SearchLibraryPutInHandEffect(new TargetCardInLibrary( return new SearchLibraryPutInHandEffect(new TargetCardInLibrary(
0, xValue, StaticFilters.FILTER_CARD_LAND 0, xValue, StaticFilters.FILTER_CARD_LAND
), true, true).apply(game, source); ), true).apply(game, source);
} }
} }

View file

@ -28,7 +28,7 @@ public final class OpenTheArmory extends CardImpl {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{W}"); super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{W}");
// Search your library for an Aura or Equipment card, reveal it, and put it into your hand. Then shuffle your library. // Search your library for an Aura or Equipment card, reveal it, and put it into your hand. Then shuffle your library.
this.getSpellAbility().addEffect(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(1, 1, auraOrEquipmentTarget), true, true)); this.getSpellAbility().addEffect(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(1, 1, auraOrEquipmentTarget), true));
} }
private OpenTheArmory(final OpenTheArmory card) { private OpenTheArmory(final OpenTheArmory card) {
@ -39,4 +39,4 @@ public final class OpenTheArmory extends CardImpl {
public OpenTheArmory copy() { public OpenTheArmory copy() {
return new OpenTheArmory(this); return new OpenTheArmory(this);
} }
} }

View file

@ -88,7 +88,7 @@ class RegularExpression extends OneShotEffect {
= new FilterCard("a creature card with the same name as another creature you control"); = new FilterCard("a creature card with the same name as another creature you control");
filter.add(Predicates.or(predicates)); filter.add(Predicates.or(predicates));
return new SearchLibraryPutInHandEffect( return new SearchLibraryPutInHandEffect(
new TargetCardInLibrary(filter), true, true new TargetCardInLibrary(filter), true
).apply(game, source); ).apply(game, source);
} }
} }

View file

@ -38,7 +38,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. // 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( this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInHandEffect(
new TargetCardInLibrary(filter), true, true new TargetCardInLibrary(filter), true
), true)); ), true));
// {6}: Return Pilgrim of the Ages from your graveyard to your hand. // {6}: Return Pilgrim of the Ages from your graveyard to your hand.

View file

@ -23,7 +23,7 @@ public final class PlanarPortal extends CardImpl {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{6}"); super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{6}");
// {6}, {tap}: Search your library for a card and put that card into your hand. Then shuffle your library. // {6}, {tap}: Search your library for a card and put that card into your hand. Then shuffle your library.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new SearchLibraryPutInHandEffect(new TargetCardInLibrary(), false, true), new ManaCostsImpl<>("{6}")); Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new SearchLibraryPutInHandEffect(new TargetCardInLibrary(), false), new ManaCostsImpl<>("{6}"));
ability.addCost(new TapSourceCost()); ability.addCost(new TapSourceCost());
this.addAbility(ability); this.addAbility(ability);
} }

View file

@ -25,7 +25,7 @@ public final class PleaForGuidance extends CardImpl {
// Search your library for up to two enchantment cards, reveal them, and put them into your hand. Then shuffle your library. // Search your library for up to two enchantment cards, reveal them, and put them into your hand. Then shuffle your library.
this.getSpellAbility().addEffect(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(0,2, filter), true, true)); this.getSpellAbility().addEffect(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(0,2, filter), true));
} }
private PleaForGuidance(final PleaForGuidance card) { private PleaForGuidance(final PleaForGuidance card) {

View file

@ -52,7 +52,7 @@ public final class PriestOfTheWakeningSun extends CardImpl {
// {3}{W}{W}, Sacrifice Priest of the Wakening Sun: Search your library for a Dinosaur card, reveal it, put it into your hand, then shuffle your library. // {3}{W}{W}, Sacrifice Priest of the Wakening Sun: Search your library for a Dinosaur card, reveal it, put it into your hand, then shuffle your library.
TargetCardInLibrary target = new TargetCardInLibrary(filter); TargetCardInLibrary target = new TargetCardInLibrary(filter);
Ability ability2 = new SimpleActivatedAbility(Zone.BATTLEFIELD, new SearchLibraryPutInHandEffect(new TargetCardInLibrary(target), true, true), new ManaCostsImpl<>("{3}{W}{W}")); Ability ability2 = new SimpleActivatedAbility(Zone.BATTLEFIELD, new SearchLibraryPutInHandEffect(new TargetCardInLibrary(target), true), new ManaCostsImpl<>("{3}{W}{W}"));
ability2.addCost(new SacrificeSourceCost()); ability2.addCost(new SacrificeSourceCost());
this.addAbility(ability2); this.addAbility(ability2);
} }

View file

@ -54,7 +54,7 @@ public final class PrimalCommand extends CardImpl {
mode.addTarget(new TargetPlayer()); mode.addTarget(new TargetPlayer());
this.getSpellAbility().getModes().addMode(mode); this.getSpellAbility().getModes().addMode(mode);
// or search your library for a creature card, reveal it, put it into your hand, then shuffle your library. // or search your library for a creature card, reveal it, put it into your hand, then shuffle your library.
mode = new Mode(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_CREATURE), true, true)); mode = new Mode(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_CREATURE), true));
this.getSpellAbility().getModes().addMode(mode); this.getSpellAbility().getModes().addMode(mode);
} }

View file

@ -24,7 +24,7 @@ public final class ProfaneTutor extends CardImpl {
this.addAbility(new SuspendAbility(2, new ManaCostsImpl<>("{1}{B}"), this)); this.addAbility(new SuspendAbility(2, new ManaCostsImpl<>("{1}{B}"), this));
// Search your library for a card, put that card into your hand, then shuffle. // Search your library for a card, put that card into your hand, then shuffle.
this.getSpellAbility().addEffect(new SearchLibraryPutInHandEffect(new TargetCardInLibrary())); this.getSpellAbility().addEffect(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(), false));
} }
private ProfaneTutor(final ProfaneTutor card) { private ProfaneTutor(final ProfaneTutor card) {

View file

@ -40,7 +40,7 @@ public final class RangerOfEos extends CardImpl {
// When Ranger of Eos enters the battlefield, you may search your library for up to two creature cards with converted mana cost 1 or less, // When Ranger of Eos enters the battlefield, you may search your library for up to two creature cards with converted mana cost 1 or less,
// reveal them, and put them into your hand. If you do, shuffle your library. // reveal them, and put them into your hand. If you do, shuffle your library.
TargetCardInLibrary target = new TargetCardInLibrary(0, 2, filter); TargetCardInLibrary target = new TargetCardInLibrary(0, 2, filter);
this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInHandEffect(target, true, true), true)); this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInHandEffect(target, true), true));
} }
private RangerOfEos(final RangerOfEos card) { private RangerOfEos(final RangerOfEos card) {

View file

@ -39,7 +39,7 @@ public final class Ratcatcher extends CardImpl {
// At the beginning of your upkeep, you may search your library for a Rat card, reveal it, and put it into your hand. If you do, shuffle your library. // At the beginning of your upkeep, you may search your library for a Rat card, reveal it, and put it into your hand. If you do, shuffle your library.
TargetCardInLibrary targetCard = new TargetCardInLibrary(1, 1, filter); TargetCardInLibrary targetCard = new TargetCardInLibrary(1, 1, filter);
this.addAbility(new BeginningOfUpkeepTriggeredAbility(Zone.BATTLEFIELD, new SearchLibraryPutInHandEffect(targetCard, true, true), TargetController.YOU, true)); this.addAbility(new BeginningOfUpkeepTriggeredAbility(Zone.BATTLEFIELD, new SearchLibraryPutInHandEffect(targetCard, true), TargetController.YOU, true));
} }

View file

@ -41,7 +41,7 @@ public final class RazakethTheFoulblooded extends CardImpl {
this.addAbility(TrampleAbility.getInstance()); this.addAbility(TrampleAbility.getInstance());
// Pay 2 life, Sacrifice another creature: Search your library for a card and put that card into your hand. Then shuffle your library. // Pay 2 life, Sacrifice another creature: Search your library for a card and put that card into your hand. Then shuffle your library.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new SearchLibraryPutInHandEffect(new TargetCardInLibrary(), false, true), new PayLifeCost(2)); Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new SearchLibraryPutInHandEffect(new TargetCardInLibrary(), false), new PayLifeCost(2));
ability.addCost(new SacrificeTargetCost( ability.addCost(new SacrificeTargetCost(
new TargetControlledCreaturePermanent(1, 1, StaticFilters.FILTER_CONTROLLED_ANOTHER_CREATURE, false))); new TargetControlledCreaturePermanent(1, 1, StaticFilters.FILTER_CONTROLLED_ANOTHER_CREATURE, false)));
this.addAbility(ability); this.addAbility(ability);

View file

@ -17,7 +17,7 @@ public final class RazakethsRite extends CardImpl {
// Search your library for a card and put that card into your hand // Search your library for a card and put that card into your hand
// Then shuffle your library // Then shuffle your library
TargetCardInLibrary target = new TargetCardInLibrary(); TargetCardInLibrary target = new TargetCardInLibrary();
this.getSpellAbility().addEffect(new SearchLibraryPutInHandEffect(target)); this.getSpellAbility().addEffect(new SearchLibraryPutInHandEffect(target, false));
// Cycling {B} // Cycling {B}

View file

@ -25,7 +25,7 @@ public final class RecklessHandling extends CardImpl {
// Search your library for an artifact card, reveal it, put it into your hand, shuffle, then discard a card at random. If an artifact card was discarded this way, Reckless Handling deals 2 damage to each opponent. // Search your library for an artifact card, reveal it, put it into your hand, shuffle, then discard a card at random. If an artifact card was discarded this way, Reckless Handling deals 2 damage to each opponent.
this.getSpellAbility().addEffect(new SearchLibraryPutInHandEffect( this.getSpellAbility().addEffect(new SearchLibraryPutInHandEffect(
new TargetCardInLibrary(StaticFilters.FILTER_CARD_ARTIFACT_AN), true, true new TargetCardInLibrary(StaticFilters.FILTER_CARD_ARTIFACT_AN), true
).setText("search your library for an artifact card, reveal it, put it into your hand, shuffle")); ).setText("search your library for an artifact card, reveal it, put it into your hand, shuffle"));
this.getSpellAbility().addEffect(new RecklessHandlingEffect()); this.getSpellAbility().addEffect(new RecklessHandlingEffect());
} }

View file

@ -35,7 +35,7 @@ public final class RecruiterOfTheGuard extends CardImpl {
// When Recruiter of the Guard enters the battlefield, you may search your library for a creature card with toughness 2 or less, // When Recruiter of the Guard enters the battlefield, you may search your library for a creature card with toughness 2 or less,
// reveal it, put it into your hand, then shuffle your library. // reveal it, put it into your hand, then shuffle your library.
this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInHandEffect( this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInHandEffect(
new TargetCardInLibrary(filter), true, true), true)); new TargetCardInLibrary(filter), true), true));
} }
private RecruiterOfTheGuard(final RecruiterOfTheGuard card) { private RecruiterOfTheGuard(final RecruiterOfTheGuard card) {

View file

@ -38,7 +38,7 @@ public final class RelicSeeker extends CardImpl {
// When Relic Seeker becomes renowned, you may search your library for an Equipment card, reveal it, put it into your hand, then shuffle your library. // When Relic Seeker becomes renowned, you may search your library for an Equipment card, reveal it, put it into your hand, then shuffle your library.
TargetCardInLibrary target = new TargetCardInLibrary(1, 1, filter); TargetCardInLibrary target = new TargetCardInLibrary(1, 1, filter);
this.addAbility(new BecomesRenownedSourceTriggeredAbility(new SearchLibraryPutInHandEffect(target, true, true), true)); this.addAbility(new BecomesRenownedSourceTriggeredAbility(new SearchLibraryPutInHandEffect(target, true), true));
} }

View file

@ -79,7 +79,7 @@ class RemembranceTriggeredAbility extends TriggeredAbilityImpl {
filterCard.add(new NamePredicate(permanent.getName())); filterCard.add(new NamePredicate(permanent.getName()));
this.getEffects().clear(); this.getEffects().clear();
this.addEffect(new SearchLibraryPutInHandEffect( this.addEffect(new SearchLibraryPutInHandEffect(
new TargetCardInLibrary(filterCard), true, true new TargetCardInLibrary(filterCard), true
)); ));
return true; return true;
} }

View file

@ -21,7 +21,7 @@ public final class RhysticTutor extends CardImpl {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{B}"); super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{B}");
// Unless any player pays {2}, search your library for a card, put that card into your hand, then shuffle your library. // Unless any player pays {2}, search your library for a card, put that card into your hand, then shuffle your library.
Effect effect = new DoUnlessAnyPlayerPaysEffect(new SearchLibraryPutInHandEffect(new TargetCardInLibrary()), new ManaCostsImpl<>("{2}")); Effect effect = new DoUnlessAnyPlayerPaysEffect(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(), false), new ManaCostsImpl<>("{2}"));
effect.setText("Unless any player pays {2}, search your library for a card, put that card into your hand, then shuffle"); effect.setText("Unless any player pays {2}, search your library for a card, put that card into your hand, then shuffle");
this.getSpellAbility().addEffect(effect); this.getSpellAbility().addEffect(effect);
} }

View file

@ -29,7 +29,7 @@ public final class RingOfThreeWishes extends CardImpl {
// Ring of Three Wishes enters the battlefield with three wish counters on it. // Ring of Three Wishes enters the battlefield with three wish counters on it.
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.WISH.createInstance(3)), "with three wish counters on it")); this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.WISH.createInstance(3)), "with three wish counters on it"));
// {5}, {T}, Remove a wish counter from Ring of Three Wishes: Search your library for a card and put that card into your hand. Then shuffle your library. // {5}, {T}, Remove a wish counter from Ring of Three Wishes: Search your library for a card and put that card into your hand. Then shuffle your library.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new SearchLibraryPutInHandEffect(new TargetCardInLibrary(), false, true), new ManaCostsImpl<>("{5}")); Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new SearchLibraryPutInHandEffect(new TargetCardInLibrary(), false), new ManaCostsImpl<>("{5}"));
ability.addCost(new TapSourceCost()); ability.addCost(new TapSourceCost());
ability.addCost(new RemoveCountersSourceCost(CounterType.WISH.createInstance())); ability.addCost(new RemoveCountersSourceCost(CounterType.WISH.createInstance()));
this.addAbility(ability); this.addAbility(ability);

View file

@ -29,7 +29,7 @@ public final class RuneScarredDemon extends CardImpl {
this.toughness = new MageInt( 6); this.toughness = new MageInt( 6);
this.addAbility(FlyingAbility.getInstance()); this.addAbility(FlyingAbility.getInstance());
TargetCardInLibrary target = new TargetCardInLibrary(); TargetCardInLibrary target = new TargetCardInLibrary();
Ability ability = new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInHandEffect(target)); Ability ability = new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInHandEffect(target, false));
this.addAbility(ability); this.addAbility(ability);
} }

View file

@ -26,7 +26,7 @@ public final class SarkhansTriumph extends CardImpl {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{R}"); super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{R}");
// Search your library for a Dragon creature card, reveal it, put it into your hand, then shuffle your library. // Search your library for a Dragon creature card, reveal it, put it into your hand, then shuffle your library.
this.getSpellAbility().addEffect(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(filter), true, true)); this.getSpellAbility().addEffect(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(filter), true));
} }
private SarkhansTriumph(final SarkhansTriumph card) { private SarkhansTriumph(final SarkhansTriumph card) {

View file

@ -38,7 +38,7 @@ public final class ScreamingSeahawk extends CardImpl {
// When Screaming Seahawk enters the battlefield, you may search your library for a card named Screaming Seahawk, reveal it, and put it into your hand. If you do, shuffle your library. // When Screaming Seahawk enters the battlefield, you may search your library for a card named Screaming Seahawk, reveal it, and put it into your hand. If you do, shuffle your library.
TargetCardInLibrary target = new TargetCardInLibrary(1, 1, filter); TargetCardInLibrary target = new TargetCardInLibrary(1, 1, filter);
this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInHandEffect(target, true, true), true)); this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInHandEffect(target, true), true));
} }
private ScreamingSeahawk(final ScreamingSeahawk card) { private ScreamingSeahawk(final ScreamingSeahawk card) {

View file

@ -77,6 +77,6 @@ class SecretSalvageEffect extends OneShotEffect {
nameFilter.add(new NamePredicate(nameToSearch)); nameFilter.add(new NamePredicate(nameToSearch));
return new SearchLibraryPutInHandEffect(new TargetCardInLibrary( return new SearchLibraryPutInHandEffect(new TargetCardInLibrary(
0, Integer.MAX_VALUE, nameFilter 0, Integer.MAX_VALUE, nameFilter
), true, true).apply(game, source); ), true).apply(game, source);
} }
} }

View file

@ -33,7 +33,7 @@ public final class SelfAssembler extends CardImpl {
// When Self-Assembler enters the battlefield, you may search your library for an Assembly-Worker creature card, reveal it, put it into your hand, // When Self-Assembler enters the battlefield, you may search your library for an Assembly-Worker creature card, reveal it, put it into your hand,
// then shuffle your library. // then shuffle your library.
Effect effect = new SearchLibraryPutInHandEffect(new TargetCardInLibrary(0, 1, filter), true, true); Effect effect = new SearchLibraryPutInHandEffect(new TargetCardInLibrary(0, 1, filter), true);
effect.setText("you may search your library for an Assembly-Worker creature card, reveal it, put it into your hand, then shuffle"); effect.setText("you may search your library for an Assembly-Worker creature card, reveal it, put it into your hand, then shuffle");
this.addAbility(new EntersBattlefieldTriggeredAbility(effect, true)); this.addAbility(new EntersBattlefieldTriggeredAbility(effect, true));
} }

View file

@ -22,7 +22,7 @@ public final class SharedSummons extends CardImpl {
// Search your library for up to two creature cards with different names, reveal them, put them into your hand, then shuffle your library. // Search your library for up to two creature cards with different names, reveal them, put them into your hand, then shuffle your library.
this.getSpellAbility().addEffect(new SearchLibraryPutInHandEffect( this.getSpellAbility().addEffect(new SearchLibraryPutInHandEffect(
new TargetCardWithDifferentNameInLibrary(0, 2, filter), true, true new TargetCardWithDifferentNameInLibrary(0, 2, filter), true
)); ));
} }

Some files were not shown because too many files have changed in this diff Show more