From 254972be77006562381612c846a565b7a43bf2d7 Mon Sep 17 00:00:00 2001 From: Evan Kranzler Date: Mon, 15 Apr 2019 14:10:06 -0400 Subject: [PATCH] Implemented Ashiok, Dream Render --- Mage.Sets/src/mage/cards/a/AchHansRun.java | 2 +- Mage.Sets/src/mage/cards/a/Acquire.java | 2 +- .../src/mage/cards/a/ArachnusSpinner.java | 2 +- .../src/mage/cards/a/ArchmageAscension.java | 2 +- Mage.Sets/src/mage/cards/a/ArcumDagsson.java | 2 +- .../src/mage/cards/a/AshiokDreamRender.java | 95 +++++++++++++++++++ .../src/mage/cards/a/AssassinsTrophy.java | 2 +- .../src/mage/cards/a/AuratouchedMage.java | 2 +- .../src/mage/cards/a/AvatarOfGrowth.java | 2 +- Mage.Sets/src/mage/cards/b/BirthingPod.java | 2 +- Mage.Sets/src/mage/cards/b/BitterOrdeal.java | 2 +- .../src/mage/cards/b/BitterheartWitch.java | 2 +- .../src/mage/cards/b/BoldwyrHeavyweights.java | 2 +- .../src/mage/cards/b/BoonweaverGiant.java | 2 +- .../src/mage/cards/b/BorderlandExplorer.java | 2 +- Mage.Sets/src/mage/cards/b/BoreasCharger.java | 2 +- .../src/mage/cards/b/BoundlessRealms.java | 2 +- Mage.Sets/src/mage/cards/b/Bribery.java | 2 +- Mage.Sets/src/mage/cards/b/BringToLight.java | 2 +- Mage.Sets/src/mage/cards/b/BuriedAlive.java | 2 +- Mage.Sets/src/mage/cards/c/CaravanVigil.java | 3 +- Mage.Sets/src/mage/cards/c/CitanulFlute.java | 2 +- .../src/mage/cards/c/ClarionUltimatum.java | 2 +- .../src/mage/cards/c/CollectiveVoyage.java | 2 +- Mage.Sets/src/mage/cards/c/Conflux.java | 10 +- .../src/mage/cards/c/CongregationAtDawn.java | 3 +- .../src/mage/cards/c/CorpseConnoisseur.java | 2 +- .../src/mage/cards/c/CorpseHarvester.java | 2 +- Mage.Sets/src/mage/cards/c/Cultivate.java | 2 +- .../src/mage/cards/c/CurseOfMisfortunes.java | 2 +- Mage.Sets/src/mage/cards/d/DarkDecision.java | 2 +- .../src/mage/cards/d/DarkSupplicant.java | 2 +- .../cards/d/DarthTyranusCountOfSerenno.java | 2 +- Mage.Sets/src/mage/cards/d/DenyingWind.java | 2 +- .../src/mage/cards/d/DiabolicRevelation.java | 2 +- Mage.Sets/src/mage/cards/d/Dichotomancy.java | 8 +- .../src/mage/cards/d/DistantMemories.java | 2 +- Mage.Sets/src/mage/cards/d/DoublingChant.java | 4 +- Mage.Sets/src/mage/cards/e/EarwigSquad.java | 2 +- .../src/mage/cards/e/EldritchEvolution.java | 2 +- .../src/mage/cards/e/EndlessHorizons.java | 2 +- Mage.Sets/src/mage/cards/e/EnduringIdeal.java | 2 +- Mage.Sets/src/mage/cards/e/Entomb.java | 2 +- .../src/mage/cards/e/EternalDominion.java | 2 +- Mage.Sets/src/mage/cards/e/Extirpate.java | 2 +- Mage.Sets/src/mage/cards/e/Extract.java | 2 +- Mage.Sets/src/mage/cards/f/FieldOfRuin.java | 2 +- Mage.Sets/src/mage/cards/f/FinalParting.java | 3 +- .../src/mage/cards/f/FiremindsForesight.java | 2 +- Mage.Sets/src/mage/cards/f/Fleshwrither.java | 2 +- Mage.Sets/src/mage/cards/f/Foresight.java | 2 +- Mage.Sets/src/mage/cards/f/ForkInTheRoad.java | 2 +- Mage.Sets/src/mage/cards/f/FromTheAshes.java | 2 +- .../src/mage/cards/g/GarrukTheVeilCursed.java | 2 +- .../src/mage/cards/g/GateToTheAfterlife.java | 2 +- Mage.Sets/src/mage/cards/g/GemOfBecoming.java | 2 +- Mage.Sets/src/mage/cards/g/GhostQuarter.java | 2 +- Mage.Sets/src/mage/cards/g/GiftsUngiven.java | 2 +- Mage.Sets/src/mage/cards/g/Gigantiform.java | 2 +- Mage.Sets/src/mage/cards/g/GrimReminder.java | 2 +- Mage.Sets/src/mage/cards/g/GrinningTotem.java | 3 +- Mage.Sets/src/mage/cards/g/Grozoth.java | 2 +- Mage.Sets/src/mage/cards/h/HarvestSeason.java | 3 +- .../src/mage/cards/h/HauntingEchoes.java | 2 +- Mage.Sets/src/mage/cards/h/HideSeek.java | 2 +- Mage.Sets/src/mage/cards/h/HiredGiant.java | 2 +- .../src/mage/cards/h/HoardingDragon.java | 2 +- .../src/mage/cards/i/InameDeathAspect.java | 2 +- Mage.Sets/src/mage/cards/i/Incoming.java | 2 +- .../src/mage/cards/i/IncreasingAmbition.java | 3 +- .../src/mage/cards/i/InsidiousDreams.java | 3 +- Mage.Sets/src/mage/cards/i/Intuition.java | 2 +- Mage.Sets/src/mage/cards/i/InvertInvent.java | 4 +- .../mage/cards/j/JaceArchitectOfThought.java | 2 +- Mage.Sets/src/mage/cards/j/JaradsOrders.java | 3 +- Mage.Sets/src/mage/cards/j/JestersCap.java | 2 +- .../src/mage/cards/j/JourneyForTheElixir.java | 4 +- .../src/mage/cards/j/JungleWayfinder.java | 2 +- .../src/mage/cards/k/KahoMinamoHistorian.java | 2 +- .../mage/cards/k/KnowledgeExploitation.java | 2 +- Mage.Sets/src/mage/cards/k/KodamasReach.java | 2 +- .../src/mage/cards/l/LegacyOfTheBeloved.java | 2 +- Mage.Sets/src/mage/cards/l/LifesFinale.java | 2 +- .../src/mage/cards/l/LinSivviDefiantHero.java | 2 +- Mage.Sets/src/mage/cards/l/Lobotomy.java | 2 +- Mage.Sets/src/mage/cards/l/LongTermPlans.java | 2 +- Mage.Sets/src/mage/cards/m/ManaSeverance.java | 2 +- Mage.Sets/src/mage/cards/m/MangarasTome.java | 2 +- .../src/mage/cards/m/ManipulateFate.java | 2 +- .../mage/cards/m/MaralenOfTheMornsong.java | 2 +- Mage.Sets/src/mage/cards/m/Mimeofacture.java | 2 +- .../mage/cards/m/MishraArtificerProdigy.java | 2 +- Mage.Sets/src/mage/cards/m/MyrIncubator.java | 2 +- .../src/mage/cards/n/NahiriTheHarbinger.java | 2 +- .../src/mage/cards/n/NaturalBalance.java | 2 +- Mage.Sets/src/mage/cards/n/Neoform.java | 2 +- .../src/mage/cards/n/NeverendingTorment.java | 2 +- Mage.Sets/src/mage/cards/n/NewFrontiers.java | 2 +- Mage.Sets/src/mage/cards/n/NightDealings.java | 2 +- .../src/mage/cards/n/NightmareIncursion.java | 2 +- .../src/mage/cards/n/NissaWorldwaker.java | 2 +- .../src/mage/cards/n/NissasEncouragement.java | 2 +- .../src/mage/cards/n/NissasPilgrimage.java | 2 +- .../src/mage/cards/n/NobleBenefactor.java | 2 +- .../src/mage/cards/o/OldGrowthDryads.java | 2 +- .../src/mage/cards/o/OreskosExplorer.java | 2 +- .../src/mage/cards/p/ParallelThoughts.java | 2 +- Mage.Sets/src/mage/cards/p/PathToExile.java | 2 +- Mage.Sets/src/mage/cards/p/Peregrination.java | 2 +- Mage.Sets/src/mage/cards/p/PirsWhim.java | 2 +- Mage.Sets/src/mage/cards/p/PraetorsGrasp.java | 2 +- .../mage/cards/p/PrimeSpeakerVannifar.java | 2 +- .../mage/cards/q/QuestForTheHolyRelic.java | 2 +- .../src/mage/cards/q/QuietSpeculation.java | 2 +- .../src/mage/cards/r/RealmsUncharted.java | 2 +- Mage.Sets/src/mage/cards/r/ReapIntellect.java | 2 +- .../src/mage/cards/r/RenownedWeaponsmith.java | 2 +- .../src/mage/cards/r/RootwaterThief.java | 2 +- .../src/mage/cards/r/RuinInTheirWake.java | 2 +- .../src/mage/cards/s/SadisticSacrament.java | 2 +- Mage.Sets/src/mage/cards/s/Scapeshift.java | 2 +- .../src/mage/cards/s/ScionOfTheUrDragon.java | 2 +- Mage.Sets/src/mage/cards/s/SecretSalvage.java | 2 +- .../src/mage/cards/s/SelectiveMemory.java | 2 +- .../src/mage/cards/s/SettleTheWreckage.java | 2 +- .../src/mage/cards/s/ShardConvergence.java | 2 +- .../src/mage/cards/s/ShimianSpecter.java | 2 +- .../src/mage/cards/s/SignalTheClans.java | 3 +- .../src/mage/cards/s/SkyshipWeatherlight.java | 2 +- .../mage/cards/s/SovereignsOfLostAlara.java | 2 +- .../src/mage/cards/s/SphinxAmbassador.java | 2 +- .../src/mage/cards/s/StonehewerGiant.java | 2 +- Mage.Sets/src/mage/cards/s/StrataScythe.java | 2 +- Mage.Sets/src/mage/cards/s/Sunforger.java | 2 +- .../src/mage/cards/s/SupremeInquisitor.java | 2 +- .../src/mage/cards/s/SurgicalExtraction.java | 2 +- .../src/mage/cards/t/TemptWithDiscovery.java | 6 +- .../src/mage/cards/t/TezzeretTheSeeker.java | 2 +- .../src/mage/cards/t/ThadaAdelAcquisitor.java | 2 +- .../src/mage/cards/t/ThoughtHemorrhage.java | 2 +- .../src/mage/cards/t/TransmuteArtifact.java | 2 +- .../src/mage/cards/t/TraverseTheOutlands.java | 2 +- .../src/mage/cards/u/UncageTheMenagerie.java | 2 +- .../src/mage/cards/v/VerdantSuccession.java | 2 +- .../src/mage/cards/v/VeteranExplorer.java | 2 +- .../src/mage/cards/v/VizierOfTheAnointed.java | 2 +- Mage.Sets/src/mage/cards/w/WaveOfVitriol.java | 2 +- Mage.Sets/src/mage/cards/w/WeirdHarvest.java | 2 +- Mage.Sets/src/mage/cards/w/WildPair.java | 2 +- Mage.Sets/src/mage/cards/w/WildResearch.java | 2 +- .../src/mage/cards/w/WoodlandBellower.java | 2 +- Mage.Sets/src/mage/cards/y/YavimayaDryad.java | 2 +- .../mage/cards/y/YisanTheWandererBard.java | 2 +- .../src/mage/cards/z/ZirilanOfTheClaw.java | 2 +- Mage.Sets/src/mage/sets/WarOfTheSpark.java | 1 + .../java/org/mage/test/player/TestPlayer.java | 16 ++-- .../java/org/mage/test/stub/PlayerStub.java | 8 +- .../effects/common/RecruiterEffect.java | 2 +- ...OpponentCardsInHandWithSelectedEffect.java | 2 +- ...SearchLibraryGraveyardPutInHandEffect.java | 2 +- .../search/SearchLibraryPutInHandEffect.java | 2 +- ...LibraryPutInHandOrOnBattlefieldEffect.java | 2 +- .../search/SearchLibraryPutInPlayEffect.java | 2 +- ...rchLibraryPutInPlayTargetPlayerEffect.java | 2 +- .../SearchLibraryPutOnLibraryEffect.java | 2 +- ...archLibraryWithLessCMCPutInPlayEffect.java | 2 +- .../abilities/keyword/PartnerWithAbility.java | 2 +- .../abilities/keyword/TransmuteAbility.java | 2 +- Mage/src/main/java/mage/players/Player.java | 9 +- .../main/java/mage/players/PlayerImpl.java | 16 ++-- 170 files changed, 294 insertions(+), 212 deletions(-) create mode 100644 Mage.Sets/src/mage/cards/a/AshiokDreamRender.java diff --git a/Mage.Sets/src/mage/cards/a/AchHansRun.java b/Mage.Sets/src/mage/cards/a/AchHansRun.java index 18853779ff8..cbaeab9c00f 100644 --- a/Mage.Sets/src/mage/cards/a/AchHansRun.java +++ b/Mage.Sets/src/mage/cards/a/AchHansRun.java @@ -81,7 +81,7 @@ class AchHansRunEffect extends OneShotEffect { FilterCard nameFilter = new FilterCard(); nameFilter.add(new NamePredicate(cardName)); TargetCardInLibrary target = new TargetCardInLibrary(1, 1, nameFilter); - if (!controller.searchLibrary(target, game)) { + if (!controller.searchLibrary(target, source, game)) { return false; } Card card = controller.getLibrary().remove(target.getFirstTarget(), game); diff --git a/Mage.Sets/src/mage/cards/a/Acquire.java b/Mage.Sets/src/mage/cards/a/Acquire.java index 3eb0827a338..53895e07582 100644 --- a/Mage.Sets/src/mage/cards/a/Acquire.java +++ b/Mage.Sets/src/mage/cards/a/Acquire.java @@ -63,7 +63,7 @@ class AcquireEffect extends OneShotEffect { Player controller = game.getPlayer(source.getControllerId()); if (opponent != null && controller != null) { TargetCardInLibrary target = new TargetCardInLibrary(filter); - controller.searchLibrary(target, game, opponent.getId()); + controller.searchLibrary(target, source, game, opponent.getId()); Card targetCard = game.getCard(target.getFirstTarget()); if (targetCard != null) { controller.moveCards(targetCard, Zone.BATTLEFIELD, source, game); diff --git a/Mage.Sets/src/mage/cards/a/ArachnusSpinner.java b/Mage.Sets/src/mage/cards/a/ArachnusSpinner.java index 7a1ef89b36b..3c4d17cc494 100644 --- a/Mage.Sets/src/mage/cards/a/ArachnusSpinner.java +++ b/Mage.Sets/src/mage/cards/a/ArachnusSpinner.java @@ -106,7 +106,7 @@ class ArachnusSpinnerEffect extends OneShotEffect { } if (card == null) { TargetCardInLibrary target = new TargetCardInLibrary(filter); - if (controller.searchLibrary(target, game)) { + if (controller.searchLibrary(target, source, game)) { card = game.getCard(target.getFirstTarget()); } controller.shuffleLibrary(source, game); diff --git a/Mage.Sets/src/mage/cards/a/ArchmageAscension.java b/Mage.Sets/src/mage/cards/a/ArchmageAscension.java index efbcafce293..e71f21b2b6e 100644 --- a/Mage.Sets/src/mage/cards/a/ArchmageAscension.java +++ b/Mage.Sets/src/mage/cards/a/ArchmageAscension.java @@ -111,7 +111,7 @@ class ArchmageAscensionReplacementEffect extends ReplacementEffectImpl { Player player = game.getPlayer(event.getPlayerId()); if (player != null) { TargetCardInLibrary target = new TargetCardInLibrary(); - if (player.searchLibrary(target, game)) { + if (player.searchLibrary(target, source, game)) { Card card = game.getCard(target.getFirstTarget()); if (card != null) { card.moveToZone(Zone.HAND, source.getSourceId(), game, false); diff --git a/Mage.Sets/src/mage/cards/a/ArcumDagsson.java b/Mage.Sets/src/mage/cards/a/ArcumDagsson.java index d07d474fe35..c86c8389d4f 100644 --- a/Mage.Sets/src/mage/cards/a/ArcumDagsson.java +++ b/Mage.Sets/src/mage/cards/a/ArcumDagsson.java @@ -90,7 +90,7 @@ class ArcumDagssonEffect extends OneShotEffect { artifactCreature.sacrifice(source.getSourceId(), game); if (player.chooseUse(Outcome.PutCardInPlay, "Search your library for a noncreature artifact card?", source, game)) { TargetCardInLibrary target = new TargetCardInLibrary(filter); - if (player.searchLibrary(target, game)) { + if (player.searchLibrary(target, source, game)) { Card card = game.getCard(target.getFirstTarget()); if (card != null) { player.moveCards(card, Zone.BATTLEFIELD, source, game); diff --git a/Mage.Sets/src/mage/cards/a/AshiokDreamRender.java b/Mage.Sets/src/mage/cards/a/AshiokDreamRender.java new file mode 100644 index 00000000000..0b0acd711cf --- /dev/null +++ b/Mage.Sets/src/mage/cards/a/AshiokDreamRender.java @@ -0,0 +1,95 @@ +package mage.cards.a; + +import mage.MageObject; +import mage.abilities.Ability; +import mage.abilities.LoyaltyAbility; +import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; +import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.effects.ContinuousRuleModifyingEffectImpl; +import mage.abilities.effects.common.ExileGraveyardAllPlayersEffect; +import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveTargetEffect; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.*; +import mage.filter.StaticFilters; +import mage.game.Game; +import mage.game.events.GameEvent; +import mage.players.Player; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class AshiokDreamRender extends CardImpl { + + public AshiokDreamRender(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{1}{U/B}{U/B}"); + + this.addSuperType(SuperType.LEGENDARY); + this.subtype.add(SubType.ASHIOK); + this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(5)); + + // Spells and abilities your opponents control can't cause their controller to search their library. + this.addAbility(new SimpleStaticAbility(new AshiokDreamRenderEffect())); + + // -1: Target player puts the top four cards of their library into their graveyard. Then exile each opponent's graveyard. + Ability ability = new LoyaltyAbility(new PutTopCardOfLibraryIntoGraveTargetEffect(2), -1); + ability.addEffect(new ExileGraveyardAllPlayersEffect(StaticFilters.FILTER_CARD, TargetController.OPPONENT).setText("Then exile each opponent's graveyard.")); + this.addAbility(ability); + } + + private AshiokDreamRender(final AshiokDreamRender card) { + super(card); + } + + @Override + public AshiokDreamRender copy() { + return new AshiokDreamRender(this); + } +} + +class AshiokDreamRenderEffect extends ContinuousRuleModifyingEffectImpl { + + AshiokDreamRenderEffect() { + super(Duration.WhileOnBattlefield, Outcome.Benefit, true, false); + staticText = "Spells and abilities your opponents control can't cause their controller to search their library."; + } + + private AshiokDreamRenderEffect(final AshiokDreamRenderEffect effect) { + super(effect); + } + + @Override + public AshiokDreamRenderEffect copy() { + return new AshiokDreamRenderEffect(this); + } + + @Override + public boolean apply(Game game, Ability source) { + return true; + } + + @Override + public String getInfoMessage(Ability source, GameEvent event, Game game) { + MageObject mageObject = game.getObject(source.getSourceId()); + if (mageObject != null) { + return "You can't search libraries (" + mageObject.getLogName() + " in play)."; + } + return null; + } + + @Override + public boolean checksEventType(GameEvent event, Game game) { + return GameEvent.EventType.SEARCH_LIBRARY == event.getType(); + } + + @Override + public boolean applies(GameEvent event, Ability source, Game game) { + Player controller = game.getPlayer(source.getControllerId()); + return controller != null + && event.getPlayerId().equals(game.getControllerId(event.getSourceId())) + && event.getTargetId().equals(game.getControllerId(event.getSourceId())) + && controller.hasOpponent(game.getControllerId(event.getSourceId()), game); + } +} \ No newline at end of file diff --git a/Mage.Sets/src/mage/cards/a/AssassinsTrophy.java b/Mage.Sets/src/mage/cards/a/AssassinsTrophy.java index 45ee06cb1ab..a973855cc4e 100644 --- a/Mage.Sets/src/mage/cards/a/AssassinsTrophy.java +++ b/Mage.Sets/src/mage/cards/a/AssassinsTrophy.java @@ -77,7 +77,7 @@ class AssassinsTrophyEffect extends OneShotEffect { if (controller != null) { if (controller.chooseUse(Outcome.PutLandInPlay, "Do you wish to search for a basic land, put it onto the battlefield and then shuffle your library?", source, game)) { TargetCardInLibrary target = new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND); - if (controller.searchLibrary(target, game)) { + if (controller.searchLibrary(target, source, game)) { Card card = controller.getLibrary().getCard(target.getFirstTarget(), game); if (card != null) { controller.moveCards(card, Zone.BATTLEFIELD, source, game); diff --git a/Mage.Sets/src/mage/cards/a/AuratouchedMage.java b/Mage.Sets/src/mage/cards/a/AuratouchedMage.java index 5bd4e110db2..7cb38b3de85 100644 --- a/Mage.Sets/src/mage/cards/a/AuratouchedMage.java +++ b/Mage.Sets/src/mage/cards/a/AuratouchedMage.java @@ -69,7 +69,7 @@ class AuratouchedMageEffect extends OneShotEffect { filter.add(new AuraCardCanAttachToLKIPermanentId(source.getSourceId())); TargetCardInLibrary target = new TargetCardInLibrary(filter); target.setNotTarget(true); - if (controller.searchLibrary(target, game)) { + if (controller.searchLibrary(target, source, game)) { if (target.getFirstTarget() != null) { Card aura = game.getCard(target.getFirstTarget()); Permanent auratouchedMage = source.getSourcePermanentIfItStillExists(game); diff --git a/Mage.Sets/src/mage/cards/a/AvatarOfGrowth.java b/Mage.Sets/src/mage/cards/a/AvatarOfGrowth.java index 41cb4670036..cd41b415dd6 100644 --- a/Mage.Sets/src/mage/cards/a/AvatarOfGrowth.java +++ b/Mage.Sets/src/mage/cards/a/AvatarOfGrowth.java @@ -78,7 +78,7 @@ class AvatarOfGrowthSearchEffect extends OneShotEffect { Player player = game.getPlayer(playerId); if (player != null) { TargetCardInLibrary target = new TargetCardInLibrary(0, 2, StaticFilters.FILTER_CARD_BASIC_LAND); - if (player.searchLibrary(target, game)) { + if (player.searchLibrary(target, source, game)) { if (!target.getTargets().isEmpty()) { player.moveCards(new CardsImpl(target.getTargets()), Zone.BATTLEFIELD, source, game); } diff --git a/Mage.Sets/src/mage/cards/b/BirthingPod.java b/Mage.Sets/src/mage/cards/b/BirthingPod.java index 179040611b0..76a8df1d7dc 100644 --- a/Mage.Sets/src/mage/cards/b/BirthingPod.java +++ b/Mage.Sets/src/mage/cards/b/BirthingPod.java @@ -91,7 +91,7 @@ class BirthingPodEffect extends OneShotEffect { filter.add(new ConvertedManaCostPredicate(ComparisonType.EQUAL_TO, newConvertedCost)); filter.add(new CardTypePredicate(CardType.CREATURE)); TargetCardInLibrary target = new TargetCardInLibrary(filter); - if (controller.searchLibrary(target, game)) { + if (controller.searchLibrary(target, source, game)) { Card card = controller.getLibrary().getCard(target.getFirstTarget(), game); controller.moveCards(card, Zone.BATTLEFIELD, source, game); } diff --git a/Mage.Sets/src/mage/cards/b/BitterOrdeal.java b/Mage.Sets/src/mage/cards/b/BitterOrdeal.java index 1611148bfff..7a0fd7d7292 100644 --- a/Mage.Sets/src/mage/cards/b/BitterOrdeal.java +++ b/Mage.Sets/src/mage/cards/b/BitterOrdeal.java @@ -66,7 +66,7 @@ class BitterOrdealEffect extends OneShotEffect { Player controller = game.getPlayer(source.getControllerId()); if (controller != null && targetPlayer != null) { TargetCardInLibrary target = new TargetCardInLibrary(); - if (controller.searchLibrary(target, game, targetPlayer.getId())) { + if (controller.searchLibrary(target, source, game, targetPlayer.getId())) { Card card = targetPlayer.getLibrary().getCard(target.getFirstTarget(), game); if (card != null) { controller.moveCardToExileWithInfo(card, null, null, source.getSourceId(), game, Zone.LIBRARY, true); diff --git a/Mage.Sets/src/mage/cards/b/BitterheartWitch.java b/Mage.Sets/src/mage/cards/b/BitterheartWitch.java index b3158adf6e5..c010a92f29a 100644 --- a/Mage.Sets/src/mage/cards/b/BitterheartWitch.java +++ b/Mage.Sets/src/mage/cards/b/BitterheartWitch.java @@ -76,7 +76,7 @@ class BitterheartWitchEffect extends OneShotEffect { Player targetPlayer = game.getPlayer(source.getFirstTarget()); if (controller != null && targetPlayer != null) { TargetCardInLibrary targetCard = new TargetCardInLibrary(filter); - if (controller.searchLibrary(targetCard, game)) { + if (controller.searchLibrary(targetCard, source, game)) { Card card = game.getCard(targetCard.getFirstTarget()); if (card != null) { game.getState().setValue("attachTo:" + card.getId(), targetPlayer.getId()); diff --git a/Mage.Sets/src/mage/cards/b/BoldwyrHeavyweights.java b/Mage.Sets/src/mage/cards/b/BoldwyrHeavyweights.java index 02789e13b37..f86567ffc29 100644 --- a/Mage.Sets/src/mage/cards/b/BoldwyrHeavyweights.java +++ b/Mage.Sets/src/mage/cards/b/BoldwyrHeavyweights.java @@ -73,7 +73,7 @@ class BoldwyrHeavyweightsEffect extends OneShotEffect { Player opponent = game.getPlayer(opponentId); if (opponent != null && opponent.chooseUse(Outcome.PutCreatureInPlay, "Search your library for a creature card and put it onto the battlefield?", source, game)) { TargetCardInLibrary target = new TargetCardInLibrary(new FilterCreatureCard()); - if (opponent.searchLibrary(target, game)) { + if (opponent.searchLibrary(target, source, game)) { Card targetCard = opponent.getLibrary().getCard(target.getFirstTarget(), game); if (targetCard != null) { opponent.moveCards(targetCard, Zone.BATTLEFIELD, source, game); diff --git a/Mage.Sets/src/mage/cards/b/BoonweaverGiant.java b/Mage.Sets/src/mage/cards/b/BoonweaverGiant.java index 4a7619452c0..944c751ba41 100644 --- a/Mage.Sets/src/mage/cards/b/BoonweaverGiant.java +++ b/Mage.Sets/src/mage/cards/b/BoonweaverGiant.java @@ -101,7 +101,7 @@ class BoonweaverGiantEffect extends OneShotEffect { } if (card == null) { TargetCardInLibrary target = new TargetCardInLibrary(filter); - if (controller.searchLibrary(target, game)) { + if (controller.searchLibrary(target, source, game)) { card = game.getCard(target.getFirstTarget()); if (card != null) { zone = Zone.LIBRARY; diff --git a/Mage.Sets/src/mage/cards/b/BorderlandExplorer.java b/Mage.Sets/src/mage/cards/b/BorderlandExplorer.java index f0e1fdf00ff..d4a61d6b653 100644 --- a/Mage.Sets/src/mage/cards/b/BorderlandExplorer.java +++ b/Mage.Sets/src/mage/cards/b/BorderlandExplorer.java @@ -108,7 +108,7 @@ class BorderlandExplorerEffect extends OneShotEffect { Cards cardsPlayer = cardsToDiscard.get(playerId); if (cardsPlayer != null && !cardsPlayer.isEmpty()) { TargetCardInLibrary target = new TargetCardInLibrary(0, 1, StaticFilters.FILTER_CARD_BASIC_LAND); - if (player.searchLibrary(target, game)) { + if (player.searchLibrary(target, source, game)) { if (!target.getTargets().isEmpty()) { Cards cards = new CardsImpl(target.getTargets()); cards.addAll(target.getTargets()); diff --git a/Mage.Sets/src/mage/cards/b/BoreasCharger.java b/Mage.Sets/src/mage/cards/b/BoreasCharger.java index 151cdfab2ff..4050b023996 100644 --- a/Mage.Sets/src/mage/cards/b/BoreasCharger.java +++ b/Mage.Sets/src/mage/cards/b/BoreasCharger.java @@ -114,7 +114,7 @@ class BoreasChargerEffect extends OneShotEffect { TargetCardInLibrary target2 = new TargetCardInLibrary(0, landDifference, filter2); Cards cardsToHand = new CardsImpl(); - if (controller.searchLibrary(target2, game)) { + if (controller.searchLibrary(target2, source, game)) { for (UUID cardId : target2.getTargets()) { Card card = game.getCard(cardId); if (card != null) { diff --git a/Mage.Sets/src/mage/cards/b/BoundlessRealms.java b/Mage.Sets/src/mage/cards/b/BoundlessRealms.java index bb84c4a6e04..6d8c76a0e69 100644 --- a/Mage.Sets/src/mage/cards/b/BoundlessRealms.java +++ b/Mage.Sets/src/mage/cards/b/BoundlessRealms.java @@ -70,7 +70,7 @@ class BoundlessRealmsEffect extends OneShotEffect { int amount = new PermanentsOnBattlefieldCount(filter).calculate(game, source, this); TargetCardInLibrary target = new TargetCardInLibrary(0, amount, StaticFilters.FILTER_CARD_BASIC_LAND); - if (controller.searchLibrary(target, game)) { + if (controller.searchLibrary(target, source, game)) { controller.moveCards(new CardsImpl(target.getTargets()).getCards(game), Zone.BATTLEFIELD, source, game, true, false, false, null); } controller.shuffleLibrary(source, game); diff --git a/Mage.Sets/src/mage/cards/b/Bribery.java b/Mage.Sets/src/mage/cards/b/Bribery.java index 86e930dfbe8..ba5979ca67f 100644 --- a/Mage.Sets/src/mage/cards/b/Bribery.java +++ b/Mage.Sets/src/mage/cards/b/Bribery.java @@ -62,7 +62,7 @@ class BriberyEffect extends OneShotEffect { Player controller = game.getPlayer(source.getControllerId()); if (controller != null && opponent != null) { TargetCardInLibrary target = new TargetCardInLibrary(0, 1, new FilterCreatureCard("creature card")); - if (controller.searchLibrary(target, game, opponent.getId())) { + if (controller.searchLibrary(target, source, game, opponent.getId())) { Card card = opponent.getLibrary().getCard(target.getFirstTarget(), game); controller.moveCards(card, Zone.BATTLEFIELD, source, game); } diff --git a/Mage.Sets/src/mage/cards/b/BringToLight.java b/Mage.Sets/src/mage/cards/b/BringToLight.java index 45971d1cd10..1f10c21b5c7 100644 --- a/Mage.Sets/src/mage/cards/b/BringToLight.java +++ b/Mage.Sets/src/mage/cards/b/BringToLight.java @@ -74,7 +74,7 @@ class BringToLightEffect extends OneShotEffect { filter.add(Predicates.or(new CardTypePredicate(CardType.CREATURE), new CardTypePredicate(CardType.INSTANT), new CardTypePredicate(CardType.SORCERY))); filter.add(new ConvertedManaCostPredicate(ComparisonType.FEWER_THAN, numberColors + 1)); TargetCardInLibrary target = new TargetCardInLibrary(filter); - controller.searchLibrary(target, game); + controller.searchLibrary(target, source, game); Card card = controller.getLibrary().getCard(target.getFirstTarget(), game); if (card != null) { controller.moveCards(card, Zone.EXILED, source, game); diff --git a/Mage.Sets/src/mage/cards/b/BuriedAlive.java b/Mage.Sets/src/mage/cards/b/BuriedAlive.java index fab3129c816..ca43d181920 100644 --- a/Mage.Sets/src/mage/cards/b/BuriedAlive.java +++ b/Mage.Sets/src/mage/cards/b/BuriedAlive.java @@ -61,7 +61,7 @@ class BuriedAliveEffect extends SearchEffect { public boolean apply(Game game, Ability source) { Player controller = game.getPlayer(source.getControllerId()); if (controller != null) { - if (controller.searchLibrary(target, game)) { + if (controller.searchLibrary(target, source, game)) { controller.moveCards(new CardsImpl(target.getTargets()), Zone.GRAVEYARD, source, game); } controller.shuffleLibrary(source, game); diff --git a/Mage.Sets/src/mage/cards/c/CaravanVigil.java b/Mage.Sets/src/mage/cards/c/CaravanVigil.java index 963e149db37..d915675c4ac 100644 --- a/Mage.Sets/src/mage/cards/c/CaravanVigil.java +++ b/Mage.Sets/src/mage/cards/c/CaravanVigil.java @@ -11,7 +11,6 @@ import mage.constants.CardType; import mage.constants.Outcome; import mage.constants.Zone; import mage.filter.StaticFilters; -import mage.filter.common.FilterBasicLandCard; import mage.game.Game; import mage.players.Player; import mage.target.common.TargetCardInLibrary; @@ -63,7 +62,7 @@ class CaravanVigilEffect extends OneShotEffect { MageObject sourceObject = source.getSourceObject(game); if (sourceObject != null && controller != null) { TargetCardInLibrary target = new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND); - if (controller.searchLibrary(target, game)) { + if (controller.searchLibrary(target, source, game)) { Card card = controller.getLibrary().getCard(target.getFirstTarget(), game); if (card != null) { Cards cards = new CardsImpl(card); diff --git a/Mage.Sets/src/mage/cards/c/CitanulFlute.java b/Mage.Sets/src/mage/cards/c/CitanulFlute.java index 1af72228722..de2556d10b0 100644 --- a/Mage.Sets/src/mage/cards/c/CitanulFlute.java +++ b/Mage.Sets/src/mage/cards/c/CitanulFlute.java @@ -74,7 +74,7 @@ class CitanulFluteSearchEffect extends OneShotEffect { filter.add(new ConvertedManaCostPredicate(ComparisonType.FEWER_THAN, source.getManaCostsToPay().getX() + 1)); TargetCardInLibrary target = new TargetCardInLibrary(filter); - if (player.searchLibrary(target, game)) { + if (player.searchLibrary(target, source, game)) { if (!target.getTargets().isEmpty()) { Card card = player.getLibrary().getCard(target.getFirstTarget(), game); Cards cards = new CardsImpl(); diff --git a/Mage.Sets/src/mage/cards/c/ClarionUltimatum.java b/Mage.Sets/src/mage/cards/c/ClarionUltimatum.java index c1528dfa3a2..460d2879790 100644 --- a/Mage.Sets/src/mage/cards/c/ClarionUltimatum.java +++ b/Mage.Sets/src/mage/cards/c/ClarionUltimatum.java @@ -80,7 +80,7 @@ class ClarionUltimatumEffect extends OneShotEffect { FilterCard filter = new FilterCard("card named " + cardName); filter.add(new NamePredicate(cardName)); TargetCardInLibrary target = new TargetCardInLibrary(filter); - if (controller.searchLibrary(target, game)) { + if (controller.searchLibrary(target, source, game)) { Card card = controller.getLibrary().getCard(target.getFirstTarget(), game); if (card != null) { chosenCards.add(card); diff --git a/Mage.Sets/src/mage/cards/c/CollectiveVoyage.java b/Mage.Sets/src/mage/cards/c/CollectiveVoyage.java index 11a0f6ddc93..e027b6eb8b6 100644 --- a/Mage.Sets/src/mage/cards/c/CollectiveVoyage.java +++ b/Mage.Sets/src/mage/cards/c/CollectiveVoyage.java @@ -76,7 +76,7 @@ class CollectiveVoyageEffect extends OneShotEffect { Player player = game.getPlayer(playerId); if (player != null) { TargetCardInLibrary target = new TargetCardInLibrary(0, xSum, StaticFilters.FILTER_CARD_BASIC_LAND); - if (player.searchLibrary(target, game)) { + if (player.searchLibrary(target, source, game)) { player.moveCards(new CardsImpl(target.getTargets()).getCards(game), Zone.BATTLEFIELD, source, game, true, false, true, null); player.shuffleLibrary(source, game); } diff --git a/Mage.Sets/src/mage/cards/c/Conflux.java b/Mage.Sets/src/mage/cards/c/Conflux.java index 555530b266d..a0de7fd3dca 100644 --- a/Mage.Sets/src/mage/cards/c/Conflux.java +++ b/Mage.Sets/src/mage/cards/c/Conflux.java @@ -77,7 +77,7 @@ class ConfluxEffect extends OneShotEffect { TargetCardInLibrary targetGreen = new TargetCardInLibrary(filterGreen); if (you != null && you.getLibrary().hasCards()) { - if (you.searchLibrary(targetWhite, game)) { + if (you.searchLibrary(targetWhite, source, game)) { if (!targetWhite.getTargets().isEmpty()) { for (UUID cardId : targetWhite.getTargets()) { Card card = you.getLibrary().remove(cardId, game); @@ -89,7 +89,7 @@ class ConfluxEffect extends OneShotEffect { } } if (you != null && you.getLibrary().hasCards()) { - if (you.searchLibrary(targetBlue, game)) { + if (you.searchLibrary(targetBlue, source, game)) { if (!targetBlue.getTargets().isEmpty()) { for (UUID cardId : targetBlue.getTargets()) { Card card = you.getLibrary().remove(cardId, game); @@ -101,7 +101,7 @@ class ConfluxEffect extends OneShotEffect { } } if (you != null && you.getLibrary().hasCards()) { - if (you.searchLibrary(targetBlack, game)) { + if (you.searchLibrary(targetBlack, source, game)) { if (!targetBlack.getTargets().isEmpty()) { for (UUID cardId : targetBlack.getTargets()) { Card card = you.getLibrary().remove(cardId, game); @@ -113,7 +113,7 @@ class ConfluxEffect extends OneShotEffect { } } if (you != null && you.getLibrary().hasCards()) { - if (you.searchLibrary(targetRed, game)) { + if (you.searchLibrary(targetRed, source, game)) { if (!targetRed.getTargets().isEmpty()) { for (UUID cardId : targetRed.getTargets()) { Card card = you.getLibrary().remove(cardId, game); @@ -125,7 +125,7 @@ class ConfluxEffect extends OneShotEffect { } } if (you != null && you.getLibrary().hasCards()) { - if (you.searchLibrary(targetGreen, game)) { + if (you.searchLibrary(targetGreen, source, game)) { if (!targetGreen.getTargets().isEmpty()) { for (UUID cardId : targetGreen.getTargets()) { Card card = you.getLibrary().remove(cardId, game); diff --git a/Mage.Sets/src/mage/cards/c/CongregationAtDawn.java b/Mage.Sets/src/mage/cards/c/CongregationAtDawn.java index cdfd7c2e605..6e60b5d15a8 100644 --- a/Mage.Sets/src/mage/cards/c/CongregationAtDawn.java +++ b/Mage.Sets/src/mage/cards/c/CongregationAtDawn.java @@ -1,7 +1,6 @@ package mage.cards.c; -import java.util.List; import java.util.UUID; import mage.MageObject; import mage.abilities.Ability; @@ -64,7 +63,7 @@ class CongregationAtDawnEffect extends OneShotEffect { MageObject sourceObject = game.getObject(source.getSourceId()); if (controller != null && sourceObject != null) { TargetCardInLibrary target = new TargetCardInLibrary(0, 3, new FilterCreatureCard("creature cards")); - if (controller.searchLibrary(target, game)) { + if (controller.searchLibrary(target, source, game)) { if (!target.getTargets().isEmpty()) { Cards revealed = new CardsImpl(); for (UUID cardId : target.getTargets()) { diff --git a/Mage.Sets/src/mage/cards/c/CorpseConnoisseur.java b/Mage.Sets/src/mage/cards/c/CorpseConnoisseur.java index bde105b0f73..d134fd60ac3 100644 --- a/Mage.Sets/src/mage/cards/c/CorpseConnoisseur.java +++ b/Mage.Sets/src/mage/cards/c/CorpseConnoisseur.java @@ -70,7 +70,7 @@ class SearchLibraryPutInGraveyard extends SearchEffect { public boolean apply(Game game, Ability source) { Player controller = game.getPlayer(source.getControllerId()); if (controller != null) { - if (controller.searchLibrary(target, game)) { + if (controller.searchLibrary(target, source, game)) { if (!target.getTargets().isEmpty()) { Card card = controller.getLibrary().getCard(target.getFirstTarget(), game); if (card != null) { diff --git a/Mage.Sets/src/mage/cards/c/CorpseHarvester.java b/Mage.Sets/src/mage/cards/c/CorpseHarvester.java index 9c7efc62df9..0735a84c4a4 100644 --- a/Mage.Sets/src/mage/cards/c/CorpseHarvester.java +++ b/Mage.Sets/src/mage/cards/c/CorpseHarvester.java @@ -82,7 +82,7 @@ class CorpseHarvesterEffect extends OneShotEffect { FilterCard filter = new FilterCard(subtype); filter.add(new SubtypePredicate(SubType.byDescription(subtype))); TargetCardInLibrary target = new TargetCardInLibrary(filter); - if (player.searchLibrary(target, game)) { + if (player.searchLibrary(target, source, game)) { Card card = player.getLibrary().remove(target.getFirstTarget(), game); if (card != null) { card.moveToZone(Zone.HAND, source.getSourceId(), game, false); diff --git a/Mage.Sets/src/mage/cards/c/Cultivate.java b/Mage.Sets/src/mage/cards/c/Cultivate.java index 19053360113..26e42118d32 100644 --- a/Mage.Sets/src/mage/cards/c/Cultivate.java +++ b/Mage.Sets/src/mage/cards/c/Cultivate.java @@ -67,7 +67,7 @@ class CultivateEffect extends OneShotEffect { return false; } TargetCardInLibrary target = new TargetCardInLibrary(0, 2, StaticFilters.FILTER_CARD_BASIC_LAND); - if (controller.searchLibrary(target, game)) { + if (controller.searchLibrary(target, source, game)) { if (!target.getTargets().isEmpty()) { Cards revealed = new CardsImpl(target.getTargets()); controller.revealCards(sourceObject.getIdName(), revealed, game); diff --git a/Mage.Sets/src/mage/cards/c/CurseOfMisfortunes.java b/Mage.Sets/src/mage/cards/c/CurseOfMisfortunes.java index 2e781e9c557..1fa8220d2fb 100644 --- a/Mage.Sets/src/mage/cards/c/CurseOfMisfortunes.java +++ b/Mage.Sets/src/mage/cards/c/CurseOfMisfortunes.java @@ -87,7 +87,7 @@ class CurseOfMisfortunesEffect extends OneShotEffect { } } TargetCardInLibrary targetCard = new TargetCardInLibrary(filter); - if (player.searchLibrary(targetCard, game)) { + if (player.searchLibrary(targetCard, source, game)) { Card card = game.getCard(targetCard.getFirstTarget()); if (card != null) { this.setTargetPointer(new FixedTarget(targetPlayer.getId())); diff --git a/Mage.Sets/src/mage/cards/d/DarkDecision.java b/Mage.Sets/src/mage/cards/d/DarkDecision.java index f89c73413ba..cd96221c606 100644 --- a/Mage.Sets/src/mage/cards/d/DarkDecision.java +++ b/Mage.Sets/src/mage/cards/d/DarkDecision.java @@ -69,7 +69,7 @@ class DarkDecisionEffect extends OneShotEffect { if (controller != null && sourceObject != null) { TargetCardInLibrary target = new TargetCardInLibrary(new FilterNonlandCard()); target.setCardLimit(10); - if (controller.searchLibrary(target, game)) { + if (controller.searchLibrary(target, source, game)) { UUID targetId = target.getFirstTarget(); Card card = game.getCard(targetId); if (card != null) { diff --git a/Mage.Sets/src/mage/cards/d/DarkSupplicant.java b/Mage.Sets/src/mage/cards/d/DarkSupplicant.java index f733d39b2fd..387bc275572 100644 --- a/Mage.Sets/src/mage/cards/d/DarkSupplicant.java +++ b/Mage.Sets/src/mage/cards/d/DarkSupplicant.java @@ -110,7 +110,7 @@ class DarkSupplicantEffect extends OneShotEffect { && controller.chooseUse(Outcome.Benefit, "Do you want to search your library for Scion of Darkness?", source, game)) { librarySearched = true; TargetCardInLibrary target = new TargetCardInLibrary(0, 1, filter); - if (controller.searchLibrary(target, game)) { + if (controller.searchLibrary(target, source, game)) { if (!target.getTargets().isEmpty()) { selectedCard = game.getCard(target.getFirstTarget()); } diff --git a/Mage.Sets/src/mage/cards/d/DarthTyranusCountOfSerenno.java b/Mage.Sets/src/mage/cards/d/DarthTyranusCountOfSerenno.java index 18839aaa6ac..6fc58b4f82a 100644 --- a/Mage.Sets/src/mage/cards/d/DarthTyranusCountOfSerenno.java +++ b/Mage.Sets/src/mage/cards/d/DarthTyranusCountOfSerenno.java @@ -124,7 +124,7 @@ class TransmuteArtifactEffect extends SearchEffect { sacrifice = permanent.sacrifice(source.getSourceId(), game); } } - if (sacrifice && controller.searchLibrary(target, game)) { + if (sacrifice && controller.searchLibrary(target, source, game)) { if (!target.getTargets().isEmpty()) { for (UUID cardId : target.getTargets()) { Card card = controller.getLibrary().getCard(cardId, game); diff --git a/Mage.Sets/src/mage/cards/d/DenyingWind.java b/Mage.Sets/src/mage/cards/d/DenyingWind.java index e371317b503..9830baaae63 100644 --- a/Mage.Sets/src/mage/cards/d/DenyingWind.java +++ b/Mage.Sets/src/mage/cards/d/DenyingWind.java @@ -63,7 +63,7 @@ class DenyingWindEffect extends OneShotEffect { Player controller = game.getPlayer(source.getControllerId()); if (controller != null && player != null) { TargetCardInLibrary target = new TargetCardInLibrary(0, 7, new FilterCard("cards from player's library to exile")); - if (controller.searchLibrary(target, game, player.getId())) { + if (controller.searchLibrary(target, source, game, player.getId())) { List targets = target.getTargets(); for (UUID targetId : targets) { Card card = player.getLibrary().remove(targetId, game); diff --git a/Mage.Sets/src/mage/cards/d/DiabolicRevelation.java b/Mage.Sets/src/mage/cards/d/DiabolicRevelation.java index bdac351e7ba..40b7ec33796 100644 --- a/Mage.Sets/src/mage/cards/d/DiabolicRevelation.java +++ b/Mage.Sets/src/mage/cards/d/DiabolicRevelation.java @@ -66,7 +66,7 @@ class DiabolicRevelationEffect extends OneShotEffect { return false; } - if (player.searchLibrary(target, game)) { + if (player.searchLibrary(target, source, game)) { for (UUID cardId : target.getTargets()) { Card card = player.getLibrary().remove(cardId, game); if (card != null) { diff --git a/Mage.Sets/src/mage/cards/d/Dichotomancy.java b/Mage.Sets/src/mage/cards/d/Dichotomancy.java index a2bcbcadb8a..dd099831c31 100644 --- a/Mage.Sets/src/mage/cards/d/Dichotomancy.java +++ b/Mage.Sets/src/mage/cards/d/Dichotomancy.java @@ -4,21 +4,15 @@ import java.util.UUID; import mage.abilities.Ability; import mage.abilities.costs.mana.ManaCostsImpl; -import mage.abilities.effects.Effect; import mage.abilities.effects.OneShotEffect; import mage.abilities.keyword.SuspendAbility; import mage.cards.*; import mage.constants.CardType; import mage.constants.Outcome; -import mage.constants.TargetController; import mage.constants.Zone; import mage.filter.FilterCard; -import mage.filter.FilterPermanent; -import mage.filter.common.FilterCreatureCard; import mage.filter.common.FilterNonlandPermanent; import mage.filter.predicate.mageobject.NamePredicate; -import mage.filter.predicate.permanent.ControllerIdPredicate; -import mage.filter.predicate.permanent.ControllerPredicate; import mage.filter.predicate.permanent.TappedPredicate; import mage.game.Game; import mage.game.permanent.Permanent; @@ -81,7 +75,7 @@ class DichotomancyEffect extends OneShotEffect { FilterCard filterCard = new FilterCard("card named \""+name+'"'); filterCard.add(new NamePredicate(name)); TargetCardInLibrary target = new TargetCardInLibrary(0, 1, filterCard); - if (controller.searchLibrary(target, game, opponent.getId())) { + if (controller.searchLibrary(target, source, game, opponent.getId())) { controller.moveCards(opponent.getLibrary().getCard(target.getFirstTarget(), game), Zone.BATTLEFIELD, source, game); } } diff --git a/Mage.Sets/src/mage/cards/d/DistantMemories.java b/Mage.Sets/src/mage/cards/d/DistantMemories.java index 59c52e4c803..68d8ffe9e72 100644 --- a/Mage.Sets/src/mage/cards/d/DistantMemories.java +++ b/Mage.Sets/src/mage/cards/d/DistantMemories.java @@ -62,7 +62,7 @@ class DistantMemoriesEffect extends OneShotEffect { } TargetCardInLibrary target = new TargetCardInLibrary(); - if (player.searchLibrary(target, game)) { + if (player.searchLibrary(target, source, game)) { Card card = player.getLibrary().remove(target.getFirstTarget(), game); if (card != null) { card.moveToZone(Zone.EXILED, source.getSourceId(), game, false); diff --git a/Mage.Sets/src/mage/cards/d/DoublingChant.java b/Mage.Sets/src/mage/cards/d/DoublingChant.java index 2bc93750d2a..1a459bce347 100644 --- a/Mage.Sets/src/mage/cards/d/DoublingChant.java +++ b/Mage.Sets/src/mage/cards/d/DoublingChant.java @@ -78,7 +78,7 @@ class DoublingChantEffect extends OneShotEffect { FilterCreatureCard filter = new FilterCreatureCard("nothing (no valid card available)"); filter.add(new NamePredicate("creatureName")); TargetCardInLibrary target = new TargetCardInLibrary(0, 1, filter); - controller.searchLibrary(target, game); + controller.searchLibrary(target, source, game); } } for (Permanent creature : creatures) { @@ -91,7 +91,7 @@ class DoublingChantEffect extends OneShotEffect { filter.add(Predicates.not(Predicates.or(uuidPredicates))); } TargetCardInLibrary target = new TargetCardInLibrary(filter); - if (controller.searchLibrary(target, game)) { + if (controller.searchLibrary(target, source, game)) { Card card = controller.getLibrary().getCard(target.getFirstTarget(), game); if (card != null) { chosenCards.add(card); diff --git a/Mage.Sets/src/mage/cards/e/EarwigSquad.java b/Mage.Sets/src/mage/cards/e/EarwigSquad.java index 41c6b6c225a..006d6bf757b 100644 --- a/Mage.Sets/src/mage/cards/e/EarwigSquad.java +++ b/Mage.Sets/src/mage/cards/e/EarwigSquad.java @@ -79,7 +79,7 @@ class EarwigSquadEffect extends OneShotEffect { Player player = game.getPlayer(source.getControllerId()); if (player != null && opponent != null) { TargetCardInLibrary target = new TargetCardInLibrary(0, 3, new FilterCard("cards from opponents library to exile")); - if (player.searchLibrary(target, game, opponent.getId())) { + if (player.searchLibrary(target, source, game, opponent.getId())) { List targets = target.getTargets(); for (UUID targetId : targets) { Card card = opponent.getLibrary().remove(targetId, game); diff --git a/Mage.Sets/src/mage/cards/e/EldritchEvolution.java b/Mage.Sets/src/mage/cards/e/EldritchEvolution.java index c1eecf9e539..4ea99a51912 100644 --- a/Mage.Sets/src/mage/cards/e/EldritchEvolution.java +++ b/Mage.Sets/src/mage/cards/e/EldritchEvolution.java @@ -83,7 +83,7 @@ class EldritchEvolutionEffect extends OneShotEffect { filter.add(new ConvertedManaCostPredicate(ComparisonType.FEWER_THAN, newConvertedCost+1)); filter.add(new CardTypePredicate(CardType.CREATURE)); TargetCardInLibrary target = new TargetCardInLibrary(filter); - if (controller.searchLibrary(target, game)) { + if (controller.searchLibrary(target, source, game)) { Card card = controller.getLibrary().getCard(target.getFirstTarget(), game); controller.moveCards(card, Zone.BATTLEFIELD, source, game); } diff --git a/Mage.Sets/src/mage/cards/e/EndlessHorizons.java b/Mage.Sets/src/mage/cards/e/EndlessHorizons.java index d02030c8546..ef0aee658c3 100644 --- a/Mage.Sets/src/mage/cards/e/EndlessHorizons.java +++ b/Mage.Sets/src/mage/cards/e/EndlessHorizons.java @@ -74,7 +74,7 @@ class EndlessHorizonsEffect extends SearchEffect { public boolean apply(Game game, Ability source) { Player you = game.getPlayer(source.getControllerId()); if (you != null) { - if (you.searchLibrary(target, game)) { + if (you.searchLibrary(target, source, game)) { UUID exileZone = CardUtil.getCardExileZoneId(game, source); if (!target.getTargets().isEmpty()) { for (UUID cardId : target.getTargets()) { diff --git a/Mage.Sets/src/mage/cards/e/EnduringIdeal.java b/Mage.Sets/src/mage/cards/e/EnduringIdeal.java index ee3d0919a9a..29b2856c176 100644 --- a/Mage.Sets/src/mage/cards/e/EnduringIdeal.java +++ b/Mage.Sets/src/mage/cards/e/EnduringIdeal.java @@ -68,7 +68,7 @@ class EnduringIdealEffect extends OneShotEffect { Player controller = game.getPlayer(source.getControllerId()); if (controller != null) { TargetCardInLibrary target = new TargetCardInLibrary(filter); - controller.searchLibrary(target, game); + controller.searchLibrary(target, source, game); Card targetCard = game.getCard(target.getFirstTarget()); if (targetCard == null) { applied = false; diff --git a/Mage.Sets/src/mage/cards/e/Entomb.java b/Mage.Sets/src/mage/cards/e/Entomb.java index acf119d0c50..039d09c2dc6 100644 --- a/Mage.Sets/src/mage/cards/e/Entomb.java +++ b/Mage.Sets/src/mage/cards/e/Entomb.java @@ -60,7 +60,7 @@ class SearchLibraryPutInGraveyard extends SearchEffect { if (controller == null) { return false; } - if (controller.searchLibrary(target, game)) { + if (controller.searchLibrary(target, source, game)) { controller.moveCards(game.getCard(target.getFirstTarget()), Zone.GRAVEYARD, source, game); } controller.shuffleLibrary(source, game); diff --git a/Mage.Sets/src/mage/cards/e/EternalDominion.java b/Mage.Sets/src/mage/cards/e/EternalDominion.java index 74c32ebd332..ebaa4377f1f 100644 --- a/Mage.Sets/src/mage/cards/e/EternalDominion.java +++ b/Mage.Sets/src/mage/cards/e/EternalDominion.java @@ -77,7 +77,7 @@ class EternalDominionEffect extends OneShotEffect { Player controller = game.getPlayer(source.getControllerId()); if (opponent != null && controller != null) { TargetCardInLibrary target = new TargetCardInLibrary(FILTER); - controller.searchLibrary(target, game, opponent.getId()); + controller.searchLibrary(target, source, game, opponent.getId()); Card targetCard = game.getCard(target.getFirstTarget()); if (targetCard != null) { applied = controller.moveCards(targetCard, Zone.BATTLEFIELD, source, game); diff --git a/Mage.Sets/src/mage/cards/e/Extirpate.java b/Mage.Sets/src/mage/cards/e/Extirpate.java index 782e418adb9..1c74ffd1df0 100644 --- a/Mage.Sets/src/mage/cards/e/Extirpate.java +++ b/Mage.Sets/src/mage/cards/e/Extirpate.java @@ -116,7 +116,7 @@ class ExtirpateEffect extends OneShotEffect { // search cards in Library filterNamedCard.setMessage("card named " + chosenCard.getName() + " in the library of " + owner.getName()); TargetCardInLibrary targetCardInLibrary = new TargetCardInLibrary(0, Integer.MAX_VALUE, filterNamedCard); - if (controller.searchLibrary(targetCardInLibrary, game, owner.getId())) { + if (controller.searchLibrary(targetCardInLibrary, source, game, owner.getId())) { List targets = targetCardInLibrary.getTargets(); for (UUID targetId : targets) { Card targetCard = owner.getLibrary().getCard(targetId, game); diff --git a/Mage.Sets/src/mage/cards/e/Extract.java b/Mage.Sets/src/mage/cards/e/Extract.java index 172eddb25ee..cb116053217 100644 --- a/Mage.Sets/src/mage/cards/e/Extract.java +++ b/Mage.Sets/src/mage/cards/e/Extract.java @@ -66,7 +66,7 @@ class ExtractEffect extends OneShotEffect { Player player = game.getPlayer(source.getControllerId()); if (player != null && targetPlayer != null) { TargetCardInLibrary target = new TargetCardInLibrary(1, 1, filter); - if (player.searchLibrary(target, game, targetPlayer.getId())) { + if (player.searchLibrary(target, source, game, targetPlayer.getId())) { Card card = targetPlayer.getLibrary().remove(target.getFirstTarget(), game); if (card != null) { player.moveCardToExileWithInfo(card, null, null, source.getSourceId(), game, Zone.LIBRARY, true); diff --git a/Mage.Sets/src/mage/cards/f/FieldOfRuin.java b/Mage.Sets/src/mage/cards/f/FieldOfRuin.java index 3b559ff471d..8070b83b553 100644 --- a/Mage.Sets/src/mage/cards/f/FieldOfRuin.java +++ b/Mage.Sets/src/mage/cards/f/FieldOfRuin.java @@ -90,7 +90,7 @@ class FieldOfRuinEffect extends OneShotEffect { Player player = game.getPlayer(playerId); if (player != null) { TargetCardInLibrary target = new TargetCardInLibrary(0, 1, StaticFilters.FILTER_CARD_BASIC_LAND); - if (player.searchLibrary(target, game)) { + if (player.searchLibrary(target, source, game)) { player.moveCards(new CardsImpl(target.getTargets()).getCards(game), Zone.BATTLEFIELD, source, game); player.shuffleLibrary(source, game); } diff --git a/Mage.Sets/src/mage/cards/f/FinalParting.java b/Mage.Sets/src/mage/cards/f/FinalParting.java index 132b8f9f257..2705156ea50 100644 --- a/Mage.Sets/src/mage/cards/f/FinalParting.java +++ b/Mage.Sets/src/mage/cards/f/FinalParting.java @@ -1,7 +1,6 @@ package mage.cards.f; -import java.util.List; import java.util.UUID; import mage.abilities.Ability; import mage.abilities.effects.OneShotEffect; @@ -66,7 +65,7 @@ class FinalPartingEffect extends OneShotEffect { if (controller != null) { // Unlike Jarad's Orders, which this mostly copies, you can't fail to find TargetCardInLibrary target = new TargetCardInLibrary(2, 2, new FilterCard()); - if (controller.searchLibrary(target, game)) { + if (controller.searchLibrary(target, source, game)) { if (!target.getTargets().isEmpty()) { Cards searched = new CardsImpl(); for (UUID cardId : target.getTargets()) { diff --git a/Mage.Sets/src/mage/cards/f/FiremindsForesight.java b/Mage.Sets/src/mage/cards/f/FiremindsForesight.java index f7fb939a93e..05b43763089 100644 --- a/Mage.Sets/src/mage/cards/f/FiremindsForesight.java +++ b/Mage.Sets/src/mage/cards/f/FiremindsForesight.java @@ -79,7 +79,7 @@ class FiremindsForesightSearchEffect extends OneShotEffect { cardsCount = cardsInLibrary.count(filter, game); if (cardsCount > 0) { TargetCardInLibrary target = new TargetCardInLibrary(0, 1, filter); - if (player.searchLibrary(target, game)) { + if (player.searchLibrary(target, source, game)) { for (UUID cardId: target.getTargets()) { Card card = player.getLibrary().remove(cardId, game); if (card != null){ diff --git a/Mage.Sets/src/mage/cards/f/Fleshwrither.java b/Mage.Sets/src/mage/cards/f/Fleshwrither.java index 7fd31d85a26..a9f58feaad3 100644 --- a/Mage.Sets/src/mage/cards/f/Fleshwrither.java +++ b/Mage.Sets/src/mage/cards/f/Fleshwrither.java @@ -74,7 +74,7 @@ class FleshwritherEffect extends OneShotEffect { FilterCreatureCard filter = new FilterCreatureCard("creature with converted mana cost " + sourceObject.getConvertedManaCost()); filter.add(new ConvertedManaCostPredicate(ComparisonType.EQUAL_TO, sourceObject.getConvertedManaCost())); TargetCardInLibrary target = new TargetCardInLibrary(1, filter); - if (controller.searchLibrary(target, game)) { + if (controller.searchLibrary(target, source, game)) { if (!target.getTargets().isEmpty()) { Cards chosen = new CardsImpl(target.getTargets()); controller.moveCards(chosen, Zone.BATTLEFIELD, source, game); diff --git a/Mage.Sets/src/mage/cards/f/Foresight.java b/Mage.Sets/src/mage/cards/f/Foresight.java index 6f3ebfe1d52..296793c6bbd 100644 --- a/Mage.Sets/src/mage/cards/f/Foresight.java +++ b/Mage.Sets/src/mage/cards/f/Foresight.java @@ -63,7 +63,7 @@ class ForesightEffect extends SearchEffect { @Override public boolean apply(Game game, Ability source) { Player player = game.getPlayer(source.getControllerId()); - if (player != null && player.searchLibrary(target, game)) { + if (player != null && player.searchLibrary(target, source, game)) { for (UUID targetId : getTargets()) { Card card = player.getLibrary().getCard(targetId, game); if (card != null) { diff --git a/Mage.Sets/src/mage/cards/f/ForkInTheRoad.java b/Mage.Sets/src/mage/cards/f/ForkInTheRoad.java index d3f6c14c819..41be4c43307 100644 --- a/Mage.Sets/src/mage/cards/f/ForkInTheRoad.java +++ b/Mage.Sets/src/mage/cards/f/ForkInTheRoad.java @@ -66,7 +66,7 @@ class ForkInTheRoadEffect extends OneShotEffect { return false; } TargetCardInLibrary target = new TargetCardInLibrary(0, 2, StaticFilters.FILTER_CARD_BASIC_LAND); - if (controller.searchLibrary(target, game)) { + if (controller.searchLibrary(target, source, game)) { if (!target.getTargets().isEmpty()) { Cards revealed = new CardsImpl(); for (UUID cardId : target.getTargets()) { diff --git a/Mage.Sets/src/mage/cards/f/FromTheAshes.java b/Mage.Sets/src/mage/cards/f/FromTheAshes.java index 7adcaf8bd0e..77d8390df92 100644 --- a/Mage.Sets/src/mage/cards/f/FromTheAshes.java +++ b/Mage.Sets/src/mage/cards/f/FromTheAshes.java @@ -81,7 +81,7 @@ class FromTheAshesEffect extends OneShotEffect { Player player = game.getPlayer(entry.getKey()); if (player != null && player.chooseUse(outcome, "Search your library for up to " + entry.getValue() + " basic land card(s) to put it onto the battlefield?", source, game)) { TargetCardInLibrary target = new TargetCardInLibrary(0, entry.getValue(), StaticFilters.FILTER_CARD_BASIC_LAND); - if (player.searchLibrary(target, game)) { + if (player.searchLibrary(target, source, game)) { if (!target.getTargets().isEmpty()) { player.moveCards(new CardsImpl(target.getTargets()), Zone.BATTLEFIELD, source, game); } diff --git a/Mage.Sets/src/mage/cards/g/GarrukTheVeilCursed.java b/Mage.Sets/src/mage/cards/g/GarrukTheVeilCursed.java index 55c2665e2fe..26c6b633b12 100644 --- a/Mage.Sets/src/mage/cards/g/GarrukTheVeilCursed.java +++ b/Mage.Sets/src/mage/cards/g/GarrukTheVeilCursed.java @@ -145,7 +145,7 @@ class GarrukTheVeilCursedEffect extends OneShotEffect { FilterCreatureCard filter = new FilterCreatureCard(); TargetCardInLibrary targetInLibrary = new TargetCardInLibrary(filter); Cards cards = new CardsImpl(); - if (controller.searchLibrary(targetInLibrary, game)) { + if (controller.searchLibrary(targetInLibrary, source, game)) { for (UUID cardId : targetInLibrary.getTargets()) { Card card = controller.getLibrary().remove(cardId, game); if (card != null) { diff --git a/Mage.Sets/src/mage/cards/g/GateToTheAfterlife.java b/Mage.Sets/src/mage/cards/g/GateToTheAfterlife.java index 5ffff388271..cd375ad4f53 100644 --- a/Mage.Sets/src/mage/cards/g/GateToTheAfterlife.java +++ b/Mage.Sets/src/mage/cards/g/GateToTheAfterlife.java @@ -123,7 +123,7 @@ class GateToTheAfterlifeEffect extends OneShotEffect { if (card == null && controller.chooseUse(Outcome.Benefit, "Do you want to search your library for " + cardName + "?", source, game)) { librarySearched = true; TargetCardInLibrary target = new TargetCardInLibrary(filter); - if (controller.searchLibrary(target, game)) { + if (controller.searchLibrary(target, source, game)) { card = game.getCard(target.getFirstTarget()); } controller.shuffleLibrary(source, game); diff --git a/Mage.Sets/src/mage/cards/g/GemOfBecoming.java b/Mage.Sets/src/mage/cards/g/GemOfBecoming.java index 294b640c8d5..64e607e0f86 100644 --- a/Mage.Sets/src/mage/cards/g/GemOfBecoming.java +++ b/Mage.Sets/src/mage/cards/g/GemOfBecoming.java @@ -85,7 +85,7 @@ class GemOfBecomingEffect extends OneShotEffect { FilterLandCard filter = new FilterLandCard(subtype); filter.add(new SubtypePredicate(SubType.byDescription(subtype))); TargetCardInLibrary target = new TargetCardInLibrary(filter); - if (player.searchLibrary(target, game)) { + if (player.searchLibrary(target, source, game)) { Card card = player.getLibrary().remove(target.getFirstTarget(), game); if (card != null) { card.moveToZone(Zone.HAND, source.getSourceId(), game, false); diff --git a/Mage.Sets/src/mage/cards/g/GhostQuarter.java b/Mage.Sets/src/mage/cards/g/GhostQuarter.java index 89e6e43128a..881f2da242d 100644 --- a/Mage.Sets/src/mage/cards/g/GhostQuarter.java +++ b/Mage.Sets/src/mage/cards/g/GhostQuarter.java @@ -73,7 +73,7 @@ class GhostQuarterEffect extends OneShotEffect { Player controller = game.getPlayer(permanent.getControllerId()); if (controller != null && controller.chooseUse(Outcome.PutLandInPlay, "Do you wish to search for a basic land, put it onto the battlefield and then shuffle your library?", source, game)) { TargetCardInLibrary target = new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND); - if (controller.searchLibrary(target, game)) { + if (controller.searchLibrary(target, source, game)) { Card card = controller.getLibrary().getCard(target.getFirstTarget(), game); if (card != null) { controller.moveCards(card, Zone.BATTLEFIELD, source, game); diff --git a/Mage.Sets/src/mage/cards/g/GiftsUngiven.java b/Mage.Sets/src/mage/cards/g/GiftsUngiven.java index 154e932ad9b..c99f4c54f10 100644 --- a/Mage.Sets/src/mage/cards/g/GiftsUngiven.java +++ b/Mage.Sets/src/mage/cards/g/GiftsUngiven.java @@ -67,7 +67,7 @@ class GiftsUngivenEffect extends OneShotEffect { return false; } GiftsUngivenTarget target = new GiftsUngivenTarget(); - if (player.searchLibrary(target, game)) { + if (player.searchLibrary(target, source, game)) { if (!target.getTargets().isEmpty()) { Cards cards = new CardsImpl(); for (UUID cardId : target.getTargets()) { diff --git a/Mage.Sets/src/mage/cards/g/Gigantiform.java b/Mage.Sets/src/mage/cards/g/Gigantiform.java index 35c5f5742da..f20cfb120c7 100644 --- a/Mage.Sets/src/mage/cards/g/Gigantiform.java +++ b/Mage.Sets/src/mage/cards/g/Gigantiform.java @@ -113,7 +113,7 @@ class GigantiformEffect extends OneShotEffect { public boolean apply(Game game, Ability source) { Player controller = game.getPlayer(source.getControllerId()); TargetCardInLibrary target = new TargetCardInLibrary(filter); - if (controller != null && controller.searchLibrary(target, game)) { + if (controller != null && controller.searchLibrary(target, source, game)) { Card card = controller.getLibrary().getCard(target.getFirstTarget(), game); if (card != null) { controller.moveCards(card, Zone.BATTLEFIELD, source, game); diff --git a/Mage.Sets/src/mage/cards/g/GrimReminder.java b/Mage.Sets/src/mage/cards/g/GrimReminder.java index 828cc12edd7..b2c5af2216b 100644 --- a/Mage.Sets/src/mage/cards/g/GrimReminder.java +++ b/Mage.Sets/src/mage/cards/g/GrimReminder.java @@ -87,7 +87,7 @@ class GrimReminderEffect extends OneShotEffect { MageObject sourceObject = source.getSourceObject(game); if (controller != null && sourceObject != null) { TargetCardInLibrary target = new TargetCardInLibrary(StaticFilters.FILTER_CARD_NON_LAND); - if (controller.searchLibrary(target, game)) { + if (controller.searchLibrary(target, source, game)) { Card card = game.getCard(target.getFirstTarget()); if (card != null) { Cards cardsToReveal = new CardsImpl(card); diff --git a/Mage.Sets/src/mage/cards/g/GrinningTotem.java b/Mage.Sets/src/mage/cards/g/GrinningTotem.java index 326ad8c51c4..041dc39da5d 100644 --- a/Mage.Sets/src/mage/cards/g/GrinningTotem.java +++ b/Mage.Sets/src/mage/cards/g/GrinningTotem.java @@ -20,7 +20,6 @@ import mage.game.ExileZone; import mage.game.Game; import mage.game.events.GameEvent; import mage.game.events.GameEvent.EventType; -import mage.game.turn.Step; import mage.players.Player; import mage.target.common.TargetCardInLibrary; import mage.target.common.TargetOpponent; @@ -82,7 +81,7 @@ class GrinningTotemSearchAndExileEffect extends OneShotEffect { if (you != null && targetOpponent != null && sourceObject != null) { if (targetOpponent.getLibrary().hasCards()) { TargetCardInLibrary targetCard = new TargetCardInLibrary(); - if (you.searchLibrary(targetCard, game, targetOpponent.getId())) { + if (you.searchLibrary(targetCard, source, game, targetOpponent.getId())) { Card card = targetOpponent.getLibrary().remove(targetCard.getFirstTarget(), game); if (card != null) { UUID exileZoneId = CardUtil.getCardExileZoneId(game, source); diff --git a/Mage.Sets/src/mage/cards/g/Grozoth.java b/Mage.Sets/src/mage/cards/g/Grozoth.java index e2d18a04329..b16f1a98449 100644 --- a/Mage.Sets/src/mage/cards/g/Grozoth.java +++ b/Mage.Sets/src/mage/cards/g/Grozoth.java @@ -88,7 +88,7 @@ class GrozothEffect extends SearchEffect { public boolean apply(Game game, Ability source) { Player player = game.getPlayer(source.getControllerId()); Card sourceCard = game.getCard(source.getSourceId()); - if (sourceCard != null && player != null && player.searchLibrary(target, game)) { + if (sourceCard != null && player != null && player.searchLibrary(target, source, game)) { if (!target.getTargets().isEmpty()) { Cards cards = new CardsImpl(); for (UUID cardId : target.getTargets()) { diff --git a/Mage.Sets/src/mage/cards/h/HarvestSeason.java b/Mage.Sets/src/mage/cards/h/HarvestSeason.java index 02bbfdf85a8..73e8e20a8f8 100644 --- a/Mage.Sets/src/mage/cards/h/HarvestSeason.java +++ b/Mage.Sets/src/mage/cards/h/HarvestSeason.java @@ -13,7 +13,6 @@ import mage.constants.Outcome; import mage.constants.Zone; import mage.filter.FilterPermanent; import mage.filter.StaticFilters; -import mage.filter.common.FilterBasicLandCard; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.predicate.permanent.TappedPredicate; import mage.game.Game; @@ -73,7 +72,7 @@ class HarvestSeasonEffect extends OneShotEffect { Player controller = game.getPlayer(source.getControllerId()); if (controller != null) { TargetCardInLibrary target = new TargetCardInLibrary(0, new PermanentsOnBattlefieldCount(filter).calculate(game, source, this), StaticFilters.FILTER_CARD_BASIC_LAND); - if (controller.searchLibrary(target, game)) { + if (controller.searchLibrary(target, source, game)) { controller.moveCards(new CardsImpl(target.getTargets()).getCards(game), Zone.BATTLEFIELD, source, game, true, false, false, null); } controller.shuffleLibrary(source, game); diff --git a/Mage.Sets/src/mage/cards/h/HauntingEchoes.java b/Mage.Sets/src/mage/cards/h/HauntingEchoes.java index 5fc7b28ebda..c3e2e60bb46 100644 --- a/Mage.Sets/src/mage/cards/h/HauntingEchoes.java +++ b/Mage.Sets/src/mage/cards/h/HauntingEchoes.java @@ -69,7 +69,7 @@ class HauntingEchoesEffect extends OneShotEffect { int count = targetPlayer.getLibrary().count(filterCard, game); TargetCardInLibrary target = new TargetCardInLibrary(count, count, filterCard); - player.searchLibrary(target, game, targetPlayer.getId()); + player.searchLibrary(target, source, game, targetPlayer.getId()); List targets = target.getTargets(); for (UUID cardId : targets) { Card libraryCard = game.getCard(cardId); diff --git a/Mage.Sets/src/mage/cards/h/HideSeek.java b/Mage.Sets/src/mage/cards/h/HideSeek.java index c39fa9f1446..89ccbd290b7 100644 --- a/Mage.Sets/src/mage/cards/h/HideSeek.java +++ b/Mage.Sets/src/mage/cards/h/HideSeek.java @@ -74,7 +74,7 @@ class SeekEffect extends OneShotEffect { if (player != null && opponent != null) { if (opponent.getLibrary().hasCards()) { TargetCardInLibrary target = new TargetCardInLibrary(); - if (player.searchLibrary(target, game, opponent.getId())) { + if (player.searchLibrary(target, source, game, opponent.getId())) { UUID targetId = target.getFirstTarget(); Card card = opponent.getLibrary().remove(targetId, game); if (card != null) { diff --git a/Mage.Sets/src/mage/cards/h/HiredGiant.java b/Mage.Sets/src/mage/cards/h/HiredGiant.java index c98dbcec748..ff87f5a7d4b 100644 --- a/Mage.Sets/src/mage/cards/h/HiredGiant.java +++ b/Mage.Sets/src/mage/cards/h/HiredGiant.java @@ -72,7 +72,7 @@ class HiredGiantEffect extends OneShotEffect { Player player = game.getPlayer(playerId); if (player != null && player.chooseUse(Outcome.PutCreatureInPlay, "Search your library for a land card and put it onto the battlefield?", source, game)) { TargetCardInLibrary target = new TargetCardInLibrary(new FilterLandCard()); - if (player.searchLibrary(target, game)) { + if (player.searchLibrary(target, source, game)) { Card targetCard = player.getLibrary().getCard(target.getFirstTarget(), game); if (targetCard != null) { player.moveCards(targetCard, Zone.BATTLEFIELD, source, game); diff --git a/Mage.Sets/src/mage/cards/h/HoardingDragon.java b/Mage.Sets/src/mage/cards/h/HoardingDragon.java index 1d1e2ae51e4..a5a5b394b64 100644 --- a/Mage.Sets/src/mage/cards/h/HoardingDragon.java +++ b/Mage.Sets/src/mage/cards/h/HoardingDragon.java @@ -79,7 +79,7 @@ class HoardingDragonEffect extends OneShotEffect { MageObject sourceObject = source.getSourceObject(game); if (controller != null && sourceObject != null) { TargetCardInLibrary target = new TargetCardInLibrary(new FilterArtifactCard()); - if (controller.searchLibrary(target, game)) { + if (controller.searchLibrary(target, source, game)) { if (!target.getTargets().isEmpty()) { Card card = controller.getLibrary().getCard(target.getFirstTarget(), game); if (card != null) { diff --git a/Mage.Sets/src/mage/cards/i/InameDeathAspect.java b/Mage.Sets/src/mage/cards/i/InameDeathAspect.java index e2778335b8c..7d9584467cc 100644 --- a/Mage.Sets/src/mage/cards/i/InameDeathAspect.java +++ b/Mage.Sets/src/mage/cards/i/InameDeathAspect.java @@ -67,7 +67,7 @@ class InameDeathAspectEffect extends SearchEffect { @Override public boolean apply(Game game, Ability source) { Player player = game.getPlayer(source.getControllerId()); - if (player != null && player.searchLibrary(target, game)) { + if (player != null && player.searchLibrary(target, source, game)) { if (!target.getTargets().isEmpty()) { player.moveCards(new CardsImpl(target.getTargets()), Zone.GRAVEYARD, source, game); } diff --git a/Mage.Sets/src/mage/cards/i/Incoming.java b/Mage.Sets/src/mage/cards/i/Incoming.java index f20b1cd4da1..49296f8deb9 100644 --- a/Mage.Sets/src/mage/cards/i/Incoming.java +++ b/Mage.Sets/src/mage/cards/i/Incoming.java @@ -74,7 +74,7 @@ class IncomingEffect extends OneShotEffect { Player player = game.getPlayer(playerId); if (player != null) { TargetCardInLibrary target = new TargetCardInLibrary(0, Integer.MAX_VALUE, filter); - if (player.searchLibrary(target, game)) { + if (player.searchLibrary(target, source, game)) { player.moveCards(new CardsImpl(target.getTargets()), Zone.BATTLEFIELD, source, game); player.shuffleLibrary(source, game); } diff --git a/Mage.Sets/src/mage/cards/i/IncreasingAmbition.java b/Mage.Sets/src/mage/cards/i/IncreasingAmbition.java index f342eba3e9d..7a9ccd4a2c8 100644 --- a/Mage.Sets/src/mage/cards/i/IncreasingAmbition.java +++ b/Mage.Sets/src/mage/cards/i/IncreasingAmbition.java @@ -1,7 +1,6 @@ package mage.cards.i; -import java.util.List; import java.util.UUID; import mage.abilities.Ability; import mage.abilities.costs.mana.ManaCostsImpl; @@ -75,7 +74,7 @@ class IncreasingAmbitionEffect extends SearchEffect { else { target = new TargetCardInLibrary(); } - if (player.searchLibrary(target, game)) { + if (player.searchLibrary(target, source, game)) { if (!target.getTargets().isEmpty()) { for (UUID cardId: target.getTargets()) { Card card = player.getLibrary().remove(cardId, game); diff --git a/Mage.Sets/src/mage/cards/i/InsidiousDreams.java b/Mage.Sets/src/mage/cards/i/InsidiousDreams.java index b163be9b12d..fecfde77a63 100644 --- a/Mage.Sets/src/mage/cards/i/InsidiousDreams.java +++ b/Mage.Sets/src/mage/cards/i/InsidiousDreams.java @@ -1,7 +1,6 @@ package mage.cards.i; -import java.util.List; import java.util.UUID; import mage.MageObject; import mage.abilities.Ability; @@ -78,7 +77,7 @@ class InsidiousDreamsEffect extends OneShotEffect { if (controller != null && sourceObject != null) { TargetCardInLibrary target = new TargetCardInLibrary(0, amount, new FilterCard()); - if (controller.searchLibrary(target, game)) { + if (controller.searchLibrary(target, source, game)) { Cards chosen = new CardsImpl(); for (UUID cardId : target.getTargets()) { Card card = controller.getLibrary().remove(cardId, game); diff --git a/Mage.Sets/src/mage/cards/i/Intuition.java b/Mage.Sets/src/mage/cards/i/Intuition.java index 101f0ab1b9d..35c8571b421 100644 --- a/Mage.Sets/src/mage/cards/i/Intuition.java +++ b/Mage.Sets/src/mage/cards/i/Intuition.java @@ -70,7 +70,7 @@ class IntuitionEffect extends SearchEffect { if (controller == null || opponent == null) return false; - if (controller.getLibrary().size() >= 3 && controller.searchLibrary(target, game)) { + if (controller.getLibrary().size() >= 3 && controller.searchLibrary(target, source, game)) { if (target.getTargets().size() == 3) { Cards cards = new CardsImpl(); diff --git a/Mage.Sets/src/mage/cards/i/InvertInvent.java b/Mage.Sets/src/mage/cards/i/InvertInvent.java index fbeccdf652d..787a79d0706 100644 --- a/Mage.Sets/src/mage/cards/i/InvertInvent.java +++ b/Mage.Sets/src/mage/cards/i/InvertInvent.java @@ -114,14 +114,14 @@ class InventEffect extends OneShotEffect { } Cards cards = new CardsImpl(); TargetCardInLibrary target = new TargetCardInLibrary(filter1); - if (player.searchLibrary(target, game, false)) { + if (player.searchLibrary(target, source, game, false)) { Card card = game.getCard(target.getFirstTarget()); if (card != null) { cards.add(card); } } target = new TargetCardInLibrary(filter2); - if (player.searchLibrary(target, game)) { + if (player.searchLibrary(target, source, game)) { Card card = game.getCard(target.getFirstTarget()); if (card != null) { cards.add(card); diff --git a/Mage.Sets/src/mage/cards/j/JaceArchitectOfThought.java b/Mage.Sets/src/mage/cards/j/JaceArchitectOfThought.java index 8ef446b6dab..f4030e71483 100644 --- a/Mage.Sets/src/mage/cards/j/JaceArchitectOfThought.java +++ b/Mage.Sets/src/mage/cards/j/JaceArchitectOfThought.java @@ -267,7 +267,7 @@ class JaceArchitectOfThoughtEffect3 extends OneShotEffect { playerName = "your"; } TargetCardInLibrary target = new TargetCardInLibrary(new FilterNonlandCard("nonland card from " + playerName + " library")); - if (controller.searchLibrary(target, game, playerId, !checkList.contains(playerId))) { + if (controller.searchLibrary(target, source, game, playerId, !checkList.contains(playerId))) { checkList.add(playerId); UUID targetId = target.getFirstTarget(); Card card = player.getLibrary().remove(targetId, game); diff --git a/Mage.Sets/src/mage/cards/j/JaradsOrders.java b/Mage.Sets/src/mage/cards/j/JaradsOrders.java index e1f9ff9a8b0..bbee2a378bd 100644 --- a/Mage.Sets/src/mage/cards/j/JaradsOrders.java +++ b/Mage.Sets/src/mage/cards/j/JaradsOrders.java @@ -1,7 +1,6 @@ package mage.cards.j; -import java.util.List; import java.util.UUID; import mage.abilities.Ability; import mage.abilities.effects.OneShotEffect; @@ -65,7 +64,7 @@ class JaradsOrdersEffect extends OneShotEffect { Player controller = game.getPlayer(source.getControllerId()); if (controller != null) { TargetCardInLibrary target = new TargetCardInLibrary(0, 2, new FilterCreatureCard("creature cards")); - if (controller.searchLibrary(target, game)) { + if (controller.searchLibrary(target, source, game)) { if (!target.getTargets().isEmpty()) { Cards revealed = new CardsImpl(); for (UUID cardId: target.getTargets()) { diff --git a/Mage.Sets/src/mage/cards/j/JestersCap.java b/Mage.Sets/src/mage/cards/j/JestersCap.java index b2637f6ffb0..3a7c5223fb8 100644 --- a/Mage.Sets/src/mage/cards/j/JestersCap.java +++ b/Mage.Sets/src/mage/cards/j/JestersCap.java @@ -70,7 +70,7 @@ class JestersCapEffect extends OneShotEffect { Player player = game.getPlayer(source.getControllerId()); if (player != null && targetPlayer != null) { TargetCardInLibrary target = new TargetCardInLibrary(3, 3, new FilterCard()); - player.searchLibrary(target, game, targetPlayer.getId()); + player.searchLibrary(target, source, game, targetPlayer.getId()); for (UUID cardId : target.getTargets()) { final Card targetCard = game.getCard(cardId); if (targetCard != null) { diff --git a/Mage.Sets/src/mage/cards/j/JourneyForTheElixir.java b/Mage.Sets/src/mage/cards/j/JourneyForTheElixir.java index 9b3d6d4fa19..7866dcfe794 100644 --- a/Mage.Sets/src/mage/cards/j/JourneyForTheElixir.java +++ b/Mage.Sets/src/mage/cards/j/JourneyForTheElixir.java @@ -99,7 +99,7 @@ class JourneyForTheElixirEffect extends OneShotEffect { if (!walkerFound || !landFound) { TargetCardInLibrary targetWalker = new TargetCardInLibrary(0, 1, filter); targetWalker.setNotTarget(true); - if (!walkerFound && player.searchLibrary(targetWalker, game, false)) { + if (!walkerFound && player.searchLibrary(targetWalker, source, game, false)) { Card card = game.getCard(targetWalker.getFirstTarget()); if (card != null) { cardsToHand.add(card); @@ -107,7 +107,7 @@ class JourneyForTheElixirEffect extends OneShotEffect { } TargetCardInLibrary targetLand = new TargetCardInLibrary(0, 1, StaticFilters.FILTER_CARD_BASIC_LAND_A); targetLand.setNotTarget(true); - if (!landFound && player.searchLibrary(targetLand, game, false)) { + if (!landFound && player.searchLibrary(targetLand, source, game, false)) { Card card = game.getCard(targetLand.getFirstTarget()); if (card != null) { cardsToHand.add(card); diff --git a/Mage.Sets/src/mage/cards/j/JungleWayfinder.java b/Mage.Sets/src/mage/cards/j/JungleWayfinder.java index b4597029340..48d123ceee5 100644 --- a/Mage.Sets/src/mage/cards/j/JungleWayfinder.java +++ b/Mage.Sets/src/mage/cards/j/JungleWayfinder.java @@ -72,7 +72,7 @@ class JungleWayfinderEffect extends OneShotEffect { if (player != null) { TargetCardInLibrary target = new TargetCardInLibrary(0, 1, StaticFilters.FILTER_CARD_BASIC_LAND); if (player.chooseUse(Outcome.Benefit, "Search your library for a card to put into your hand?", source, game)) { - player.searchLibrary(target, game); + player.searchLibrary(target, source, game); for (UUID cardId : target.getTargets()) { Card card = player.getLibrary().getCard(cardId, game); if (card != null) { diff --git a/Mage.Sets/src/mage/cards/k/KahoMinamoHistorian.java b/Mage.Sets/src/mage/cards/k/KahoMinamoHistorian.java index 7dda8d0fb4e..cc3c297d346 100644 --- a/Mage.Sets/src/mage/cards/k/KahoMinamoHistorian.java +++ b/Mage.Sets/src/mage/cards/k/KahoMinamoHistorian.java @@ -88,7 +88,7 @@ class KahoMinamoHistorianEffect extends SearchEffect { Player controller = game.getPlayer(source.getControllerId()); MageObject sourceObject = game.getObject(source.getSourceId()); if (controller != null && sourceObject != null) { - if (controller.searchLibrary(target, game)) { + if (controller.searchLibrary(target, source, game)) { UUID exileZone = CardUtil.getCardExileZoneId(game, source); if (!target.getTargets().isEmpty()) { controller.moveCardsToExile(new CardsImpl(target.getTargets()).getCards(game), source, game, true, exileZone, sourceObject.getIdName()); diff --git a/Mage.Sets/src/mage/cards/k/KnowledgeExploitation.java b/Mage.Sets/src/mage/cards/k/KnowledgeExploitation.java index 9c12f9d0eda..577861370b1 100644 --- a/Mage.Sets/src/mage/cards/k/KnowledgeExploitation.java +++ b/Mage.Sets/src/mage/cards/k/KnowledgeExploitation.java @@ -68,7 +68,7 @@ class KnowledgeExploitationEffect extends OneShotEffect { Player opponent = game.getPlayer(this.getTargetPointer().getFirst(game, source)); if (controller != null && opponent != null) { TargetCardInLibrary target = new TargetCardInLibrary(0, 1, new FilterInstantOrSorceryCard()); - if (controller.searchLibrary(target, game, opponent.getId())) { + if (controller.searchLibrary(target, source, game, opponent.getId())) { Card card = opponent.getLibrary().remove(target.getFirstTarget(), game); if (card != null) { controller.cast(card.getSpellAbility(), game, true, new MageObjectReference(source.getSourceObject(game), game)); diff --git a/Mage.Sets/src/mage/cards/k/KodamasReach.java b/Mage.Sets/src/mage/cards/k/KodamasReach.java index 762c9303b91..853fd0da296 100644 --- a/Mage.Sets/src/mage/cards/k/KodamasReach.java +++ b/Mage.Sets/src/mage/cards/k/KodamasReach.java @@ -68,7 +68,7 @@ class KodamasReachEffect extends OneShotEffect { return false; } TargetCardInLibrary target = new TargetCardInLibrary(0, 2, StaticFilters.FILTER_CARD_BASIC_LAND); - if (controller.searchLibrary(target, game)) { + if (controller.searchLibrary(target, source, game)) { if (!target.getTargets().isEmpty()) { Cards revealed = new CardsImpl(); for (UUID cardId : target.getTargets()) { diff --git a/Mage.Sets/src/mage/cards/l/LegacyOfTheBeloved.java b/Mage.Sets/src/mage/cards/l/LegacyOfTheBeloved.java index 33e44bb526c..512f24085c8 100644 --- a/Mage.Sets/src/mage/cards/l/LegacyOfTheBeloved.java +++ b/Mage.Sets/src/mage/cards/l/LegacyOfTheBeloved.java @@ -77,7 +77,7 @@ class LegacyOfTheBelovedEffect extends OneShotEffect { filter.add(new ConvertedManaCostPredicate(ComparisonType.FEWER_THAN, p.getConvertedManaCost())); TargetCardInLibrary target = new TargetCardInLibrary(0, 2, filter); Player player = game.getPlayer(source.getControllerId()); - if (player != null && player.searchLibrary(target, game)) { + if (player != null && player.searchLibrary(target, source, game)) { player.moveCards(new CardsImpl(target.getTargets()).getCards(game), Zone.BATTLEFIELD, source, game, false, false, false, null); player.shuffleLibrary(source, game); return true; diff --git a/Mage.Sets/src/mage/cards/l/LifesFinale.java b/Mage.Sets/src/mage/cards/l/LifesFinale.java index e0c208d7a25..5c8d83a1384 100644 --- a/Mage.Sets/src/mage/cards/l/LifesFinale.java +++ b/Mage.Sets/src/mage/cards/l/LifesFinale.java @@ -70,7 +70,7 @@ class LifesFinaleEffect extends OneShotEffect { Player player = game.getPlayer(source.getControllerId()); if (player != null && opponent != null) { TargetCardInLibrary target = new TargetCardInLibrary(0, 3, new FilterCreatureCard("creature cards from his library to put in his graveyard")); - if (player.searchLibrary(target, game, opponent.getId())) { + if (player.searchLibrary(target, source, game, opponent.getId())) { player.moveCards(new CardsImpl(target.getTargets()), Zone.GRAVEYARD, source, game); } opponent.shuffleLibrary(source, game); diff --git a/Mage.Sets/src/mage/cards/l/LinSivviDefiantHero.java b/Mage.Sets/src/mage/cards/l/LinSivviDefiantHero.java index 7335771d0ac..c9ec6edc265 100644 --- a/Mage.Sets/src/mage/cards/l/LinSivviDefiantHero.java +++ b/Mage.Sets/src/mage/cards/l/LinSivviDefiantHero.java @@ -100,7 +100,7 @@ class LinSivviDefiantHeroEffect extends OneShotEffect { filter.add(new SubtypePredicate(SubType.REBEL)); TargetCardInLibrary target = new TargetCardInLibrary(filter); - if (controller.searchLibrary(target, game)) { + if (controller.searchLibrary(target, source, game)) { Card card = controller.getLibrary().getCard(target.getFirstTarget(), game); if (card != null) { controller.moveCards(card, Zone.BATTLEFIELD, source, game); diff --git a/Mage.Sets/src/mage/cards/l/Lobotomy.java b/Mage.Sets/src/mage/cards/l/Lobotomy.java index 9471944381b..c3decfd9799 100644 --- a/Mage.Sets/src/mage/cards/l/Lobotomy.java +++ b/Mage.Sets/src/mage/cards/l/Lobotomy.java @@ -114,7 +114,7 @@ class LobotomyEffect extends OneShotEffect { // If the player has no nonland cards in their hand, you can still search that player's library and have him or her shuffle it. if (chosenCard != null || controller.chooseUse(outcome, "Search library anyway?", source, game)) { TargetCardInLibrary targetCardsLibrary = new TargetCardInLibrary(0, Integer.MAX_VALUE, filterNamedCards); - controller.searchLibrary(targetCardsLibrary, game, targetPlayer.getId()); + controller.searchLibrary(targetCardsLibrary, source, game, targetPlayer.getId()); for (UUID cardId : targetCardsLibrary.getTargets()) { Card card = game.getCard(cardId); if (card != null) { diff --git a/Mage.Sets/src/mage/cards/l/LongTermPlans.java b/Mage.Sets/src/mage/cards/l/LongTermPlans.java index ee0b6f05c94..3f2b2b33e7b 100644 --- a/Mage.Sets/src/mage/cards/l/LongTermPlans.java +++ b/Mage.Sets/src/mage/cards/l/LongTermPlans.java @@ -57,7 +57,7 @@ class LongTermPlansEffect extends OneShotEffect { Player player = game.getPlayer(source.getControllerId()); if (player != null) { TargetCardInLibrary target = new TargetCardInLibrary(); - if (player.searchLibrary(target, game)) { + if (player.searchLibrary(target, source, game)) { Card card = player.getLibrary().remove(target.getFirstTarget(), game); if (card != null) { player.shuffleLibrary(source, game); diff --git a/Mage.Sets/src/mage/cards/m/ManaSeverance.java b/Mage.Sets/src/mage/cards/m/ManaSeverance.java index df991bad93b..673b7f2e3a6 100644 --- a/Mage.Sets/src/mage/cards/m/ManaSeverance.java +++ b/Mage.Sets/src/mage/cards/m/ManaSeverance.java @@ -64,7 +64,7 @@ class ManaSeveranceEffect extends SearchEffect { public boolean apply(Game game, Ability source) { Player controller = game.getPlayer(source.getControllerId()); if (controller != null) { - if (controller.searchLibrary(target, game)) { + if (controller.searchLibrary(target, source, game)) { if (!target.getTargets().isEmpty()) { for (UUID cardId : target.getTargets()) { Card card = controller.getLibrary().getCard(cardId, game); diff --git a/Mage.Sets/src/mage/cards/m/MangarasTome.java b/Mage.Sets/src/mage/cards/m/MangarasTome.java index c46179ffc40..78c7e296ef5 100644 --- a/Mage.Sets/src/mage/cards/m/MangarasTome.java +++ b/Mage.Sets/src/mage/cards/m/MangarasTome.java @@ -73,7 +73,7 @@ class MangarasTomeSearchEffect extends OneShotEffect { Permanent permanent = game.getPermanentOrLKIBattlefield(source.getSourceId()); if (controller != null && permanent != null) { TargetCardInLibrary target = new TargetCardInLibrary(5, new FilterCard()); - if (controller.searchLibrary(target, game)) { + if (controller.searchLibrary(target, source, game)) { for (UUID targetId : target.getTargets()) { Card card = controller.getLibrary().getCard(targetId, game); if (card != null) { diff --git a/Mage.Sets/src/mage/cards/m/ManipulateFate.java b/Mage.Sets/src/mage/cards/m/ManipulateFate.java index 9603ec9d5de..72f87eca90b 100644 --- a/Mage.Sets/src/mage/cards/m/ManipulateFate.java +++ b/Mage.Sets/src/mage/cards/m/ManipulateFate.java @@ -67,7 +67,7 @@ class ManipulateFateEffect extends SearchEffect { public boolean apply(Game game, Ability source) { Player player = game.getPlayer(source.getControllerId()); if(player != null) { - if (player.searchLibrary(target, game)) { + if (player.searchLibrary(target, source, game)) { for (UUID targetId : getTargets()) { Card card = player.getLibrary().getCard(targetId, game); if (card != null) { diff --git a/Mage.Sets/src/mage/cards/m/MaralenOfTheMornsong.java b/Mage.Sets/src/mage/cards/m/MaralenOfTheMornsong.java index f3f4a63f047..7167294fbf9 100644 --- a/Mage.Sets/src/mage/cards/m/MaralenOfTheMornsong.java +++ b/Mage.Sets/src/mage/cards/m/MaralenOfTheMornsong.java @@ -100,7 +100,7 @@ class MaralenOfTheMornsongEffect2 extends OneShotEffect { if (player != null) { player.loseLife(3, game, false); TargetCardInLibrary target = new TargetCardInLibrary(); - if (player.searchLibrary(target, game)) { + if (player.searchLibrary(target, source, game)) { player.moveCards(new CardsImpl(target.getTargets()), Zone.HAND, source, game); } player.shuffleLibrary(source, game); diff --git a/Mage.Sets/src/mage/cards/m/Mimeofacture.java b/Mage.Sets/src/mage/cards/m/Mimeofacture.java index 8f4237b38c1..e83670c3a98 100644 --- a/Mage.Sets/src/mage/cards/m/Mimeofacture.java +++ b/Mage.Sets/src/mage/cards/m/Mimeofacture.java @@ -79,7 +79,7 @@ class MimeofactureEffect extends OneShotEffect { FilterCard filter = new FilterCard("card named " + permanent.getName()); filter.add(new NamePredicate(permanent.getName())); TargetCardInLibrary target = new TargetCardInLibrary(0, 1, filter); - if (controller.searchLibrary(target, game, opponent.getId())) { + if (controller.searchLibrary(target, source, game, opponent.getId())) { Card card = opponent.getLibrary().getCard(target.getFirstTarget(), game); controller.moveCards(card, Zone.BATTLEFIELD, source, game); } diff --git a/Mage.Sets/src/mage/cards/m/MishraArtificerProdigy.java b/Mage.Sets/src/mage/cards/m/MishraArtificerProdigy.java index a7e9e69d51f..a801c5a83d5 100644 --- a/Mage.Sets/src/mage/cards/m/MishraArtificerProdigy.java +++ b/Mage.Sets/src/mage/cards/m/MishraArtificerProdigy.java @@ -135,7 +135,7 @@ class MishraArtificerProdigyEffect extends OneShotEffect { // Library if (card == null && controller.chooseUse(Outcome.Neutral, "Search your library?", source, game)) { TargetCardInLibrary target = new TargetCardInLibrary(0, 1, filter); - if (controller.searchLibrary(target, game)) { + if (controller.searchLibrary(target, source, game)) { card = game.getCard(target.getFirstTarget()); } controller.shuffleLibrary(source, game); diff --git a/Mage.Sets/src/mage/cards/m/MyrIncubator.java b/Mage.Sets/src/mage/cards/m/MyrIncubator.java index 916a4f0e9d0..a8996c7b95f 100644 --- a/Mage.Sets/src/mage/cards/m/MyrIncubator.java +++ b/Mage.Sets/src/mage/cards/m/MyrIncubator.java @@ -72,7 +72,7 @@ class MyrIncubatorEffect extends SearchEffect { public boolean apply(Game game, Ability source) { Player controller = game.getPlayer(source.getControllerId()); if (controller != null - && controller.searchLibrary(target, game)) { + && controller.searchLibrary(target, source, game)) { if (!target.getTargets().isEmpty()) { tokensToCreate = target.getTargets().size(); controller.moveCards(new CardsImpl(target.getTargets()), Zone.EXILED, source, game); diff --git a/Mage.Sets/src/mage/cards/n/NahiriTheHarbinger.java b/Mage.Sets/src/mage/cards/n/NahiriTheHarbinger.java index 2e0fba2b4cb..693c492a3cb 100644 --- a/Mage.Sets/src/mage/cards/n/NahiriTheHarbinger.java +++ b/Mage.Sets/src/mage/cards/n/NahiriTheHarbinger.java @@ -110,7 +110,7 @@ class NahiriTheHarbingerEffect extends SearchEffect { public boolean apply(Game game, Ability source) { Player controller = game.getPlayer(source.getControllerId()); if (controller != null) { - if (controller.searchLibrary(target, game)) { + if (controller.searchLibrary(target, source, game)) { if (!target.getTargets().isEmpty()) { Card card = controller.getLibrary().getCard(target.getFirstTarget(), game); if (card != null) { diff --git a/Mage.Sets/src/mage/cards/n/NaturalBalance.java b/Mage.Sets/src/mage/cards/n/NaturalBalance.java index 37a8f22490f..ca4658a0531 100644 --- a/Mage.Sets/src/mage/cards/n/NaturalBalance.java +++ b/Mage.Sets/src/mage/cards/n/NaturalBalance.java @@ -92,7 +92,7 @@ public final class NaturalBalance extends CardImpl { if (landCount < 5 && player.chooseUse(outcome, "Search your library for up to " + amount + " basic land cards and put them onto the battlefield?", source, game)) { // Select lands and put them onto battlefield TargetCardInLibrary target = new TargetCardInLibrary(0, amount, StaticFilters.FILTER_CARD_BASIC_LAND); - if (player.searchLibrary(target, game)) { + if (player.searchLibrary(target, source, game)) { player.moveCards(new CardsImpl(target.getTargets()).getCards(game), Zone.BATTLEFIELD, source, game); } toShuffle.add(player); diff --git a/Mage.Sets/src/mage/cards/n/Neoform.java b/Mage.Sets/src/mage/cards/n/Neoform.java index f8f4081f009..a1c48db9baf 100644 --- a/Mage.Sets/src/mage/cards/n/Neoform.java +++ b/Mage.Sets/src/mage/cards/n/Neoform.java @@ -85,7 +85,7 @@ class NeoformEffect extends OneShotEffect { filter.add(new ConvertedManaCostPredicate(ComparisonType.FEWER_THAN, newConvertedCost + 1)); filter.add(new CardTypePredicate(CardType.CREATURE)); TargetCardInLibrary target = new TargetCardInLibrary(filter); - if (controller.searchLibrary(target, game)) { + if (controller.searchLibrary(target, source, game)) { Card card = controller.getLibrary().getCard(target.getFirstTarget(), game); game.addEffect(new NeoformReplacementEffect(), source); controller.moveCards(card, Zone.BATTLEFIELD, source, game); diff --git a/Mage.Sets/src/mage/cards/n/NeverendingTorment.java b/Mage.Sets/src/mage/cards/n/NeverendingTorment.java index 0f3d26ed80d..7df007f4fc9 100644 --- a/Mage.Sets/src/mage/cards/n/NeverendingTorment.java +++ b/Mage.Sets/src/mage/cards/n/NeverendingTorment.java @@ -65,7 +65,7 @@ class NeverendingTormentEffect extends OneShotEffect { if (targetPlayer != null && you != null) { TargetCardInLibrary target = new TargetCardInLibrary(you.getHand().size(), new FilterCard()); - you.searchLibrary(target, game, targetPlayer.getId()); + you.searchLibrary(target, source, game, targetPlayer.getId()); for (UUID cardId : target.getTargets()) { final Card targetCard = game.getCard(cardId); if (targetCard != null) { diff --git a/Mage.Sets/src/mage/cards/n/NewFrontiers.java b/Mage.Sets/src/mage/cards/n/NewFrontiers.java index 340bb18a7e9..0e5357b3a70 100644 --- a/Mage.Sets/src/mage/cards/n/NewFrontiers.java +++ b/Mage.Sets/src/mage/cards/n/NewFrontiers.java @@ -64,7 +64,7 @@ class NewFrontiersEffect extends OneShotEffect { Player player = game.getPlayer(playerId); if (player != null && player.chooseUse(outcome, "Search your library for up to " + amount + " basic lands?", source, game)) { TargetCardInLibrary target = new TargetCardInLibrary(0, amount, StaticFilters.FILTER_CARD_BASIC_LAND); - if (player.searchLibrary(target, game)) { + if (player.searchLibrary(target, source, game)) { player.moveCards(new CardsImpl(target.getTargets()).getCards(game), Zone.BATTLEFIELD, source, game, true, false, false, null); player.shuffleLibrary(source, game); } diff --git a/Mage.Sets/src/mage/cards/n/NightDealings.java b/Mage.Sets/src/mage/cards/n/NightDealings.java index 033f544c218..ae7c7011a2c 100644 --- a/Mage.Sets/src/mage/cards/n/NightDealings.java +++ b/Mage.Sets/src/mage/cards/n/NightDealings.java @@ -155,7 +155,7 @@ public final class NightDealings extends CardImpl { filter.add(new ConvertedManaCostPredicate(ComparisonType.EQUAL_TO, cmc)); TargetCardInLibrary target = new TargetCardInLibrary(filter); - if (player.searchLibrary(target, game)) { + if (player.searchLibrary(target, source, game)) { Card card = player.getLibrary().getCard(target.getFirstTarget(), game); if (card != null) { card.moveToZone(Zone.HAND, source.getSourceId(), game, false); diff --git a/Mage.Sets/src/mage/cards/n/NightmareIncursion.java b/Mage.Sets/src/mage/cards/n/NightmareIncursion.java index 078fd209044..f2af74211b4 100644 --- a/Mage.Sets/src/mage/cards/n/NightmareIncursion.java +++ b/Mage.Sets/src/mage/cards/n/NightmareIncursion.java @@ -80,7 +80,7 @@ class NightmareIncursionEffect extends OneShotEffect { if (controller != null && targetPlayer != null) { int amount = new PermanentsOnBattlefieldCount(filter).calculate(game, source, this); TargetCardInLibrary target = new TargetCardInLibrary(0, amount, new FilterCard()); - if (controller.searchLibrary(target, game, targetPlayer.getId())) { + if (controller.searchLibrary(target, source, game, targetPlayer.getId())) { List targetId = target.getTargets(); for (UUID targetCard : targetId) { Card card = targetPlayer.getLibrary().remove(targetCard, game); diff --git a/Mage.Sets/src/mage/cards/n/NissaWorldwaker.java b/Mage.Sets/src/mage/cards/n/NissaWorldwaker.java index d4bb8631323..ff0d0eecc9a 100644 --- a/Mage.Sets/src/mage/cards/n/NissaWorldwaker.java +++ b/Mage.Sets/src/mage/cards/n/NissaWorldwaker.java @@ -89,7 +89,7 @@ class NissaWorldwakerSearchEffect extends OneShotEffect { return false; } TargetCardInLibrary target = new TargetCardInLibrary(0, Integer.MAX_VALUE, StaticFilters.FILTER_CARD_BASIC_LAND); - if (controller.searchLibrary(target, game)) { + if (controller.searchLibrary(target, source, game)) { if (!target.getTargets().isEmpty()) { for (UUID cardId : target.getTargets()) { Card card = controller.getLibrary().getCard(cardId, game); diff --git a/Mage.Sets/src/mage/cards/n/NissasEncouragement.java b/Mage.Sets/src/mage/cards/n/NissasEncouragement.java index 030d75b2d98..a94f7703856 100644 --- a/Mage.Sets/src/mage/cards/n/NissasEncouragement.java +++ b/Mage.Sets/src/mage/cards/n/NissasEncouragement.java @@ -77,7 +77,7 @@ class NissasEncouragementEffect extends OneShotEffect { } NissasEncouragementTarget target = new NissasEncouragementTarget(filter); - if (player.searchLibrary(target, game)) { + if (player.searchLibrary(target, source, game)) { boolean searchGY = false; if (target.getTargets().size() < 3) { diff --git a/Mage.Sets/src/mage/cards/n/NissasPilgrimage.java b/Mage.Sets/src/mage/cards/n/NissasPilgrimage.java index af4dda2a14e..14663db780b 100644 --- a/Mage.Sets/src/mage/cards/n/NissasPilgrimage.java +++ b/Mage.Sets/src/mage/cards/n/NissasPilgrimage.java @@ -81,7 +81,7 @@ class NissasPilgrimageEffect extends OneShotEffect { number++; } TargetCardInLibrary target = new TargetCardInLibrary(0, number, filter); - controller.searchLibrary(target, game); + controller.searchLibrary(target, source, game); if (!target.getTargets().isEmpty()) { Cards cards = new CardsImpl(target.getTargets()); controller.revealCards(sourceObject.getIdName(), cards, game); diff --git a/Mage.Sets/src/mage/cards/n/NobleBenefactor.java b/Mage.Sets/src/mage/cards/n/NobleBenefactor.java index 61b5936ff1c..d223291a3ca 100644 --- a/Mage.Sets/src/mage/cards/n/NobleBenefactor.java +++ b/Mage.Sets/src/mage/cards/n/NobleBenefactor.java @@ -71,7 +71,7 @@ class NobleBenefactorEffect extends OneShotEffect { if (player != null) { TargetCardInLibrary target = new TargetCardInLibrary(); if (player.chooseUse(Outcome.Benefit, "Search your library for a card to put into your hand?", source, game)) { - player.searchLibrary(target, game); + player.searchLibrary(target, source, game); for (UUID cardId : target.getTargets()) { Card card = player.getLibrary().getCard(cardId, game); if (card != null) { diff --git a/Mage.Sets/src/mage/cards/o/OldGrowthDryads.java b/Mage.Sets/src/mage/cards/o/OldGrowthDryads.java index a6ebc1b4c3f..409a599c1b6 100644 --- a/Mage.Sets/src/mage/cards/o/OldGrowthDryads.java +++ b/Mage.Sets/src/mage/cards/o/OldGrowthDryads.java @@ -71,7 +71,7 @@ class OldGrowthDryadsEffect extends OneShotEffect { Player opponent = game.getPlayer(opponentId); if (opponent != null && opponent.chooseUse(Outcome.PutLandInPlay, "Search your library for a basic land card and put it onto the battlefield tapped?", source, game)) { TargetCardInLibrary target = new TargetCardInLibrary(new FilterBasicLandCard()); - if (opponent.searchLibrary(target, game)) { + if (opponent.searchLibrary(target, source, game)) { Card targetCard = opponent.getLibrary().getCard(target.getFirstTarget(), game); if (targetCard != null) { opponent.moveCards(targetCard, Zone.BATTLEFIELD, source, game, true, false, false, null); diff --git a/Mage.Sets/src/mage/cards/o/OreskosExplorer.java b/Mage.Sets/src/mage/cards/o/OreskosExplorer.java index ceda2985141..8325374b9c9 100644 --- a/Mage.Sets/src/mage/cards/o/OreskosExplorer.java +++ b/Mage.Sets/src/mage/cards/o/OreskosExplorer.java @@ -87,7 +87,7 @@ class OreskosExplorerEffect extends OneShotEffect { filterPlains.add(new ControllerPredicate(TargetController.YOU)); filterPlains.add(new SubtypePredicate(SubType.PLAINS)); TargetCardInLibrary target = new TargetCardInLibrary(0, landsToSearch, filterPlains); - if (controller.searchLibrary(target, game)) { + if (controller.searchLibrary(target, source, game)) { Cards cards = new CardsImpl(target.getTargets()); controller.revealCards(sourceObject.getIdName(), cards, game); controller.moveCards(cards.getCards(game), Zone.HAND, source, game); diff --git a/Mage.Sets/src/mage/cards/p/ParallelThoughts.java b/Mage.Sets/src/mage/cards/p/ParallelThoughts.java index e000b528155..16306d9f348 100644 --- a/Mage.Sets/src/mage/cards/p/ParallelThoughts.java +++ b/Mage.Sets/src/mage/cards/p/ParallelThoughts.java @@ -77,7 +77,7 @@ class ParallelThoughtsSearchEffect extends OneShotEffect { if (controller != null && permanent != null) { TargetCardInLibrary target = new TargetCardInLibrary(7, new FilterCard()); - if (controller.searchLibrary(target, game)) { + if (controller.searchLibrary(target, source, game)) { for (UUID targetId : target.getTargets()) { Card card = controller.getLibrary().getCard(targetId, game); if (card != null) { diff --git a/Mage.Sets/src/mage/cards/p/PathToExile.java b/Mage.Sets/src/mage/cards/p/PathToExile.java index 591ac251072..d4cb6a64acb 100644 --- a/Mage.Sets/src/mage/cards/p/PathToExile.java +++ b/Mage.Sets/src/mage/cards/p/PathToExile.java @@ -69,7 +69,7 @@ class PathToExileEffect extends OneShotEffect { controller.moveCardToExileWithInfo(permanent, null, "", source.getSourceId(), game, Zone.BATTLEFIELD, true); if (player.chooseUse(Outcome.PutCardInPlay, "Search your library for a basic land card?", source, game)) { TargetCardInLibrary target = new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND); - if (player.searchLibrary(target, game)) { + if (player.searchLibrary(target, source, game)) { Card card = player.getLibrary().getCard(target.getFirstTarget(), game); if (card != null) { player.moveCards(card, Zone.BATTLEFIELD, source, game, true, false, false, null); diff --git a/Mage.Sets/src/mage/cards/p/Peregrination.java b/Mage.Sets/src/mage/cards/p/Peregrination.java index 5f4bce46bf7..53d6f140457 100644 --- a/Mage.Sets/src/mage/cards/p/Peregrination.java +++ b/Mage.Sets/src/mage/cards/p/Peregrination.java @@ -71,7 +71,7 @@ class PeregrinationEffect extends OneShotEffect { return false; } TargetCardInLibrary target = new TargetCardInLibrary(0, 2, StaticFilters.FILTER_CARD_BASIC_LAND); - if (controller.searchLibrary(target, game)) { + if (controller.searchLibrary(target, source, game)) { if (!target.getTargets().isEmpty()) { Cards revealed = new CardsImpl(); for (UUID cardId : target.getTargets()) { diff --git a/Mage.Sets/src/mage/cards/p/PirsWhim.java b/Mage.Sets/src/mage/cards/p/PirsWhim.java index 9ff41c79c64..b8da3732c6b 100644 --- a/Mage.Sets/src/mage/cards/p/PirsWhim.java +++ b/Mage.Sets/src/mage/cards/p/PirsWhim.java @@ -70,7 +70,7 @@ class PirsWhimEffect extends OneShotEffect { for (Player player : choice.getFriends()) { if (player != null) { TargetCardInLibrary target = new TargetCardInLibrary(0, 1, StaticFilters.FILTER_CARD_LAND); - if (player.searchLibrary(target, game)) { + if (player.searchLibrary(target, source, game)) { player.moveCards(new CardsImpl(target.getTargets()).getCards(game), Zone.BATTLEFIELD, source, game, true, false, true, null); player.shuffleLibrary(source, game); } diff --git a/Mage.Sets/src/mage/cards/p/PraetorsGrasp.java b/Mage.Sets/src/mage/cards/p/PraetorsGrasp.java index 832e284f34f..9f20c8703d1 100644 --- a/Mage.Sets/src/mage/cards/p/PraetorsGrasp.java +++ b/Mage.Sets/src/mage/cards/p/PraetorsGrasp.java @@ -68,7 +68,7 @@ class PraetorsGraspEffect extends OneShotEffect { MageObject sourceObject = source.getSourceObject(game); if (controller != null && opponent != null && sourceObject != null) { TargetCardInLibrary target = new TargetCardInLibrary(); - if (controller.searchLibrary(target, game, opponent.getId())) { + if (controller.searchLibrary(target, source, game, opponent.getId())) { UUID targetId = target.getFirstTarget(); Card card = opponent.getLibrary().getCard(targetId, game); UUID exileId = CardUtil.getExileZoneId(game, source.getSourceId(), source.getSourceObjectZoneChangeCounter()); diff --git a/Mage.Sets/src/mage/cards/p/PrimeSpeakerVannifar.java b/Mage.Sets/src/mage/cards/p/PrimeSpeakerVannifar.java index 3554ba25ade..e0c0313c7ec 100644 --- a/Mage.Sets/src/mage/cards/p/PrimeSpeakerVannifar.java +++ b/Mage.Sets/src/mage/cards/p/PrimeSpeakerVannifar.java @@ -92,7 +92,7 @@ class PrimeSpeakerVannifarEffect extends OneShotEffect { filter.add(new ConvertedManaCostPredicate(ComparisonType.EQUAL_TO, newConvertedCost)); filter.add(new CardTypePredicate(CardType.CREATURE)); TargetCardInLibrary target = new TargetCardInLibrary(filter); - if (controller.searchLibrary(target, game)) { + if (controller.searchLibrary(target, source, game)) { Card card = controller.getLibrary().getCard(target.getFirstTarget(), game); controller.moveCards(card, Zone.BATTLEFIELD, source, game); } diff --git a/Mage.Sets/src/mage/cards/q/QuestForTheHolyRelic.java b/Mage.Sets/src/mage/cards/q/QuestForTheHolyRelic.java index ac0e51c6aa6..984098d5fe5 100644 --- a/Mage.Sets/src/mage/cards/q/QuestForTheHolyRelic.java +++ b/Mage.Sets/src/mage/cards/q/QuestForTheHolyRelic.java @@ -80,7 +80,7 @@ class QuestForTheHolyRelicEffect extends OneShotEffect { FilterCard filter = new FilterCard("Equipment"); filter.add(new SubtypePredicate(SubType.EQUIPMENT)); TargetCardInLibrary target = new TargetCardInLibrary(filter); - if (controller.searchLibrary(target, game)) { + if (controller.searchLibrary(target, source, game)) { Card card = controller.getLibrary().getCard(target.getFirstTarget(), game); if (card != null && controller.moveCards(card, Zone.BATTLEFIELD, source, game)) { Permanent equipment = game.getPermanent(card.getId()); diff --git a/Mage.Sets/src/mage/cards/q/QuietSpeculation.java b/Mage.Sets/src/mage/cards/q/QuietSpeculation.java index d189e274aae..9fafe47689c 100644 --- a/Mage.Sets/src/mage/cards/q/QuietSpeculation.java +++ b/Mage.Sets/src/mage/cards/q/QuietSpeculation.java @@ -73,7 +73,7 @@ class SearchLibraryPutInGraveEffect extends SearchEffect { if (controller == null) { return false; } - if (targetPlayerID != null && controller.searchLibrary(target, game, targetPlayerID)) { + if (targetPlayerID != null && controller.searchLibrary(target, source, game, targetPlayerID)) { if (!target.getTargets().isEmpty()) { Cards cards = new CardsImpl(target.getTargets()); controller.revealCards("Quiet Speculation", cards, game); diff --git a/Mage.Sets/src/mage/cards/r/RealmsUncharted.java b/Mage.Sets/src/mage/cards/r/RealmsUncharted.java index 0e7f04e6e38..399fb4494fd 100644 --- a/Mage.Sets/src/mage/cards/r/RealmsUncharted.java +++ b/Mage.Sets/src/mage/cards/r/RealmsUncharted.java @@ -71,7 +71,7 @@ class RealmsUnchartedEffect extends OneShotEffect { } RealmsUnchartedTarget target = new RealmsUnchartedTarget(); - if (controller.searchLibrary(target, game)) { + if (controller.searchLibrary(target, source, game)) { if (!target.getTargets().isEmpty()) { Cards cards = new CardsImpl(); for (UUID cardId : target.getTargets()) { diff --git a/Mage.Sets/src/mage/cards/r/ReapIntellect.java b/Mage.Sets/src/mage/cards/r/ReapIntellect.java index 53fb7286a75..50e28670a39 100644 --- a/Mage.Sets/src/mage/cards/r/ReapIntellect.java +++ b/Mage.Sets/src/mage/cards/r/ReapIntellect.java @@ -128,7 +128,7 @@ class ReapIntellectEffect extends OneShotEffect { // search cards in Library TargetCardInLibrary targetCardsLibrary = new TargetCardInLibrary(0, Integer.MAX_VALUE, filterNamedCards); - controller.searchLibrary(targetCardsLibrary, game, targetPlayer.getId()); + controller.searchLibrary(targetCardsLibrary, source, game, targetPlayer.getId()); for (UUID cardId : targetCardsLibrary.getTargets()) { Card card = game.getCard(cardId); if (card != null) { diff --git a/Mage.Sets/src/mage/cards/r/RenownedWeaponsmith.java b/Mage.Sets/src/mage/cards/r/RenownedWeaponsmith.java index 88983794009..083aeb0eb15 100644 --- a/Mage.Sets/src/mage/cards/r/RenownedWeaponsmith.java +++ b/Mage.Sets/src/mage/cards/r/RenownedWeaponsmith.java @@ -113,7 +113,7 @@ class RenownedWeaponsmithEffect extends OneShotEffect { MageObject sourceObject = game.getObject(source.getSourceId()); if (sourceObject != null && controller != null) { TargetCardInLibrary target = new TargetCardInLibrary(filter); - if (controller.searchLibrary(target, game)) { + if (controller.searchLibrary(target, source, game)) { if (!target.getTargets().isEmpty()) { Cards revealed = new CardsImpl(); Card card = game.getCard(target.getFirstTarget()); diff --git a/Mage.Sets/src/mage/cards/r/RootwaterThief.java b/Mage.Sets/src/mage/cards/r/RootwaterThief.java index 0da71f36ad4..4b58f296380 100644 --- a/Mage.Sets/src/mage/cards/r/RootwaterThief.java +++ b/Mage.Sets/src/mage/cards/r/RootwaterThief.java @@ -76,7 +76,7 @@ class RootwaterThiefEffect extends OneShotEffect { if(controller.chooseUse(Outcome.Benefit, message, source, game) && cost.pay(source, game, source.getSourceId(), controller.getId(), false, null)) { TargetCardInLibrary target = new TargetCardInLibrary(); - if (controller.searchLibrary(target, game, damagedPlayer.getId())) { + if (controller.searchLibrary(target, source, game, damagedPlayer.getId())) { if (!target.getTargets().isEmpty()) { Card card = damagedPlayer.getLibrary().remove(target.getFirstTarget(), game); if (card != null) { diff --git a/Mage.Sets/src/mage/cards/r/RuinInTheirWake.java b/Mage.Sets/src/mage/cards/r/RuinInTheirWake.java index a4e9705c67f..1d2d0530bac 100644 --- a/Mage.Sets/src/mage/cards/r/RuinInTheirWake.java +++ b/Mage.Sets/src/mage/cards/r/RuinInTheirWake.java @@ -71,7 +71,7 @@ class RuinInTheirWakeEffect extends OneShotEffect { MageObject sourceObject = source.getSourceObject(game); if (controller != null && sourceObject != null) { TargetCardInLibrary target = new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND); - if (controller.searchLibrary(target, game)) { + if (controller.searchLibrary(target, source, game)) { Card card = game.getCard(target.getFirstTarget()); if (card != null) { Cards cardsToReveal = new CardsImpl(card); diff --git a/Mage.Sets/src/mage/cards/s/SadisticSacrament.java b/Mage.Sets/src/mage/cards/s/SadisticSacrament.java index f1f7a64ede2..2f1b08a70b1 100644 --- a/Mage.Sets/src/mage/cards/s/SadisticSacrament.java +++ b/Mage.Sets/src/mage/cards/s/SadisticSacrament.java @@ -80,7 +80,7 @@ class SadisticSacramentEffect extends OneShotEffect { Player player = game.getPlayer(source.getControllerId()); if (player != null && targetPlayer != null) { TargetCardInLibrary target = new TargetCardInLibrary(0, amount, new FilterCard("cards to exile")); - if (player.searchLibrary(target, game, targetPlayer.getId())) { + if (player.searchLibrary(target, source, game, targetPlayer.getId())) { List targets = target.getTargets(); for (UUID targetId : targets) { Card card = targetPlayer.getLibrary().remove(targetId, game); diff --git a/Mage.Sets/src/mage/cards/s/Scapeshift.java b/Mage.Sets/src/mage/cards/s/Scapeshift.java index 473044dfbd2..b4eb29e6ee3 100644 --- a/Mage.Sets/src/mage/cards/s/Scapeshift.java +++ b/Mage.Sets/src/mage/cards/s/Scapeshift.java @@ -75,7 +75,7 @@ class ScapeshiftEffect extends OneShotEffect { } } TargetCardInLibrary target = new TargetCardInLibrary(amount, new FilterLandCard("lands")); - if (controller.searchLibrary(target, game)) { + if (controller.searchLibrary(target, source, game)) { controller.moveCards(new CardsImpl(target.getTargets()).getCards(game), Zone.BATTLEFIELD, source, game, true, false, false, null); controller.shuffleLibrary(source, game); diff --git a/Mage.Sets/src/mage/cards/s/ScionOfTheUrDragon.java b/Mage.Sets/src/mage/cards/s/ScionOfTheUrDragon.java index ea6a90a501b..5fccd4eb928 100644 --- a/Mage.Sets/src/mage/cards/s/ScionOfTheUrDragon.java +++ b/Mage.Sets/src/mage/cards/s/ScionOfTheUrDragon.java @@ -79,7 +79,7 @@ class ScionOfTheUrDragonEffect extends SearchEffect { Player player = game.getPlayer(source.getControllerId()); Permanent sourcePermanent = game.getPermanent(source.getSourceId()); if (player != null && sourcePermanent != null) { - if (player.searchLibrary(target, game)) { + if (player.searchLibrary(target, source, game)) { for (UUID cardId : target.getTargets()) { Card card = player.getLibrary().getCard(cardId, game); if (card != null) { diff --git a/Mage.Sets/src/mage/cards/s/SecretSalvage.java b/Mage.Sets/src/mage/cards/s/SecretSalvage.java index 04707c8c433..50495f98a52 100644 --- a/Mage.Sets/src/mage/cards/s/SecretSalvage.java +++ b/Mage.Sets/src/mage/cards/s/SecretSalvage.java @@ -76,7 +76,7 @@ class SecretSalvageEffect extends OneShotEffect { String nameToSearch = targetCard.isSplitCard() ? ((SplitCard) targetCard).getLeftHalfCard().getName() : targetCard.getName(); nameFilter.add(new NamePredicate(nameToSearch)); TargetCardInLibrary target = new TargetCardInLibrary(0, Integer.MAX_VALUE, nameFilter); - if (controller.searchLibrary(target, game)) { + if (controller.searchLibrary(target, source, game)) { if (!target.getTargets().isEmpty()) { Cards cards = new CardsImpl(); for (UUID cardId : target.getTargets()) { diff --git a/Mage.Sets/src/mage/cards/s/SelectiveMemory.java b/Mage.Sets/src/mage/cards/s/SelectiveMemory.java index cd753fec8b1..83966eb4146 100644 --- a/Mage.Sets/src/mage/cards/s/SelectiveMemory.java +++ b/Mage.Sets/src/mage/cards/s/SelectiveMemory.java @@ -59,7 +59,7 @@ class SelectiveMemoryEffect extends OneShotEffect { Player player = game.getPlayer(source.getControllerId()); if (player != null) { TargetCardInLibrary target = new TargetCardInLibrary(0, Integer.MAX_VALUE, new FilterNonlandCard()); - if (player.searchLibrary(target, game)) { + if (player.searchLibrary(target, source, game)) { for (UUID targetId : target.getTargets()) { Card card = player.getLibrary().remove(targetId, game); if (card != null) { diff --git a/Mage.Sets/src/mage/cards/s/SettleTheWreckage.java b/Mage.Sets/src/mage/cards/s/SettleTheWreckage.java index 4a2a86accd7..8156a6bc70d 100644 --- a/Mage.Sets/src/mage/cards/s/SettleTheWreckage.java +++ b/Mage.Sets/src/mage/cards/s/SettleTheWreckage.java @@ -80,7 +80,7 @@ class SettleTheWreckageEffect extends OneShotEffect { } controller.moveCards(toExile, Zone.EXILED, source, game); TargetCardInLibrary target = new TargetCardInLibrary(0, attackers, StaticFilters.FILTER_CARD_BASIC_LAND); - if (player.chooseUse(Outcome.Benefit, "Search for up to " + attackers + " basic land" + ((attackers == 1) ? "" : "s") + "?", source, game) && player.searchLibrary(target, game)) { + if (player.chooseUse(Outcome.Benefit, "Search for up to " + attackers + " basic land" + ((attackers == 1) ? "" : "s") + "?", source, game) && player.searchLibrary(target, source, game)) { player.moveCards(new CardsImpl(target.getTargets()).getCards(game), Zone.BATTLEFIELD, source, game, true, false, false, null); player.shuffleLibrary(source, game); } diff --git a/Mage.Sets/src/mage/cards/s/ShardConvergence.java b/Mage.Sets/src/mage/cards/s/ShardConvergence.java index 704e64c7103..b0ed89c4df5 100644 --- a/Mage.Sets/src/mage/cards/s/ShardConvergence.java +++ b/Mage.Sets/src/mage/cards/s/ShardConvergence.java @@ -77,7 +77,7 @@ class ShardConvergenceEffect extends OneShotEffect { FilterLandCard filter = new FilterLandCard(subtype); filter.add(new SubtypePredicate(SubType.byDescription(subtype))); TargetCardInLibrary target = new TargetCardInLibrary(filter); - if (player.searchLibrary(target, game)) { + if (player.searchLibrary(target, source, game)) { Card card = player.getLibrary().remove(target.getFirstTarget(), game); if (card != null) { card.moveToZone(Zone.HAND, source.getSourceId(), game, false); diff --git a/Mage.Sets/src/mage/cards/s/ShimianSpecter.java b/Mage.Sets/src/mage/cards/s/ShimianSpecter.java index b10e036e413..a06d58fe985 100644 --- a/Mage.Sets/src/mage/cards/s/ShimianSpecter.java +++ b/Mage.Sets/src/mage/cards/s/ShimianSpecter.java @@ -125,7 +125,7 @@ class ShimianSpecterEffect extends OneShotEffect { // If the player has no nonland cards in their hand, you can still search that player's library and have him or her shuffle it. if (chosenCard != null || controller.chooseUse(outcome, "Search library anyway?", source, game)) { TargetCardInLibrary targetCardsLibrary = new TargetCardInLibrary(0, Integer.MAX_VALUE, filterNamedCards); - controller.searchLibrary(targetCardsLibrary, game, targetPlayer.getId()); + controller.searchLibrary(targetCardsLibrary, source, game, targetPlayer.getId()); for (UUID cardId : targetCardsLibrary.getTargets()) { Card card = game.getCard(cardId); if (card != null) { diff --git a/Mage.Sets/src/mage/cards/s/SignalTheClans.java b/Mage.Sets/src/mage/cards/s/SignalTheClans.java index bcd225c68e1..44fc5b18e5b 100644 --- a/Mage.Sets/src/mage/cards/s/SignalTheClans.java +++ b/Mage.Sets/src/mage/cards/s/SignalTheClans.java @@ -13,7 +13,6 @@ import mage.game.Game; import mage.players.Player; import mage.target.common.TargetCardInLibrary; -import java.util.List; import java.util.UUID; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -66,7 +65,7 @@ class SignalTheClansEffect extends SearchEffect { return false; } //Search your library for three creature cards - if (player.searchLibrary(target, game)) { + if (player.searchLibrary(target, source, game)) { if (!target.getTargets().isEmpty()) { Cards cards = new CardsImpl(); for (UUID cardId: target.getTargets()) { diff --git a/Mage.Sets/src/mage/cards/s/SkyshipWeatherlight.java b/Mage.Sets/src/mage/cards/s/SkyshipWeatherlight.java index e57d02047ac..da4ce8dc168 100644 --- a/Mage.Sets/src/mage/cards/s/SkyshipWeatherlight.java +++ b/Mage.Sets/src/mage/cards/s/SkyshipWeatherlight.java @@ -91,7 +91,7 @@ class SkyshipWeatherlightEffect extends SearchEffect { Player controller = game.getPlayer(source.getControllerId()); MageObject sourceObject = source.getSourceObject(game); if (sourceObject != null && controller != null) { - if (controller.searchLibrary(target, game)) { + if (controller.searchLibrary(target, source, game)) { UUID exileZone = CardUtil.getExileZoneId(game, source.getSourceId(), source.getSourceObjectZoneChangeCounter()); if (!target.getTargets().isEmpty()) { for (UUID cardID : target.getTargets()) { diff --git a/Mage.Sets/src/mage/cards/s/SovereignsOfLostAlara.java b/Mage.Sets/src/mage/cards/s/SovereignsOfLostAlara.java index bf9a5c6d90d..14990a29f00 100644 --- a/Mage.Sets/src/mage/cards/s/SovereignsOfLostAlara.java +++ b/Mage.Sets/src/mage/cards/s/SovereignsOfLostAlara.java @@ -114,7 +114,7 @@ class SovereignsOfLostAlaraEffect extends OneShotEffect { if (controller.chooseUse(Outcome.Benefit, "Do you want to search your library?", source, game)) { TargetCardInLibrary target = new TargetCardInLibrary(filter); target.setNotTarget(true); - if (controller.searchLibrary(target, game)) { + if (controller.searchLibrary(target, source, game)) { if (target.getFirstTarget() != null) { Card aura = game.getCard(target.getFirstTarget()); game.getState().setValue("attachTo:" + aura.getId(), attackingCreature); diff --git a/Mage.Sets/src/mage/cards/s/SphinxAmbassador.java b/Mage.Sets/src/mage/cards/s/SphinxAmbassador.java index f276a9393e8..61f389621c2 100644 --- a/Mage.Sets/src/mage/cards/s/SphinxAmbassador.java +++ b/Mage.Sets/src/mage/cards/s/SphinxAmbassador.java @@ -74,7 +74,7 @@ class SphinxAmbassadorEffect extends OneShotEffect { Permanent sourcePermanent = game.getPermanentOrLKIBattlefield(source.getSourceId()); if (controller != null && targetPlayer != null && sourcePermanent != null) { TargetCardInLibrary target = new TargetCardInLibrary(); - controller.searchLibrary(target, game, targetPlayer.getId()); + controller.searchLibrary(target, source, game, targetPlayer.getId()); Card card = game.getCard(target.getFirstTarget()); if (card != null) { diff --git a/Mage.Sets/src/mage/cards/s/StonehewerGiant.java b/Mage.Sets/src/mage/cards/s/StonehewerGiant.java index 8fb3a3d39c4..70de8c460b4 100644 --- a/Mage.Sets/src/mage/cards/s/StonehewerGiant.java +++ b/Mage.Sets/src/mage/cards/s/StonehewerGiant.java @@ -88,7 +88,7 @@ class StonehewerGiantEffect extends OneShotEffect { FilterCard filter = new FilterCard("Equipment"); filter.add(new SubtypePredicate(SubType.EQUIPMENT)); TargetCardInLibrary target = new TargetCardInLibrary(filter); - if (controller.searchLibrary(target, game)) { + if (controller.searchLibrary(target, source, game)) { Card card = controller.getLibrary().getCard(target.getFirstTarget(), game); if (card != null) { controller.moveCards(card, Zone.BATTLEFIELD, source, game); diff --git a/Mage.Sets/src/mage/cards/s/StrataScythe.java b/Mage.Sets/src/mage/cards/s/StrataScythe.java index 21f8c0645e3..9e362b19ff3 100644 --- a/Mage.Sets/src/mage/cards/s/StrataScythe.java +++ b/Mage.Sets/src/mage/cards/s/StrataScythe.java @@ -69,7 +69,7 @@ class StrataScytheImprintEffect extends OneShotEffect { return false; } TargetCardInLibrary target = new TargetCardInLibrary(new FilterLandCard()); - if (player.searchLibrary(target, game)) { + if (player.searchLibrary(target, source, game)) { if (!target.getTargets().isEmpty()) { UUID cardId = target.getTargets().get(0); Card card = player.getLibrary().remove(cardId, game); diff --git a/Mage.Sets/src/mage/cards/s/Sunforger.java b/Mage.Sets/src/mage/cards/s/Sunforger.java index f6bc12430a8..fe70654e64e 100644 --- a/Mage.Sets/src/mage/cards/s/Sunforger.java +++ b/Mage.Sets/src/mage/cards/s/Sunforger.java @@ -104,7 +104,7 @@ class SunforgerEffect extends OneShotEffect { filter.add(new CardTypePredicate(CardType.INSTANT)); filter.add(new ConvertedManaCostPredicate(ComparisonType.FEWER_THAN, 5)); filter.add(new CardCanBeCastPredicate(source.getControllerId())); - if (controller.searchLibrary(target, game, controller.getId())) { + if (controller.searchLibrary(target, source, game, controller.getId())) { UUID targetId = target.getFirstTarget(); Card card = game.getCard(targetId); if (card != null) { diff --git a/Mage.Sets/src/mage/cards/s/SupremeInquisitor.java b/Mage.Sets/src/mage/cards/s/SupremeInquisitor.java index 17fb5d6f117..e2a16b7fde3 100644 --- a/Mage.Sets/src/mage/cards/s/SupremeInquisitor.java +++ b/Mage.Sets/src/mage/cards/s/SupremeInquisitor.java @@ -87,7 +87,7 @@ class SupremeInquisitorEffect extends OneShotEffect { Player player = game.getPlayer(source.getControllerId()); if (player != null && targetPlayer != null) { TargetCardInLibrary target = new TargetCardInLibrary(0, 5, filter); - if (player.searchLibrary(target, game, targetPlayer.getId())) { + if (player.searchLibrary(target, source, game, targetPlayer.getId())) { List targetId = target.getTargets(); for (UUID targetCard : targetId) { Card card = targetPlayer.getLibrary().remove(targetCard, game); diff --git a/Mage.Sets/src/mage/cards/s/SurgicalExtraction.java b/Mage.Sets/src/mage/cards/s/SurgicalExtraction.java index e1f0e8ff73d..b660eb088e9 100644 --- a/Mage.Sets/src/mage/cards/s/SurgicalExtraction.java +++ b/Mage.Sets/src/mage/cards/s/SurgicalExtraction.java @@ -118,7 +118,7 @@ class SurgicalExtractionEffect extends OneShotEffect { // cards in Library filterNamedCard.setMessage("card named " + nameToSearch + " in the library of " + owner.getName()); TargetCardInLibrary targetCardInLibrary = new TargetCardInLibrary(0, Integer.MAX_VALUE, filterNamedCard); - if (controller.searchLibrary(targetCardInLibrary, game, owner.getId())) { + if (controller.searchLibrary(targetCardInLibrary, source, game, owner.getId())) { List targets = targetCardInLibrary.getTargets(); for (UUID targetId : targets) { Card targetCard = owner.getLibrary().getCard(targetId, game); diff --git a/Mage.Sets/src/mage/cards/t/TemptWithDiscovery.java b/Mage.Sets/src/mage/cards/t/TemptWithDiscovery.java index ae5e1b3c857..f1fb697b301 100644 --- a/Mage.Sets/src/mage/cards/t/TemptWithDiscovery.java +++ b/Mage.Sets/src/mage/cards/t/TemptWithDiscovery.java @@ -66,7 +66,7 @@ class TemptWithDiscoveryEffect extends OneShotEffect { Set playersShuffle = new LinkedHashSet<>(); playersShuffle.add(controller.getId()); TargetCardInLibrary target = new TargetCardInLibrary(new FilterLandCard()); - if (controller.searchLibrary(target, game)) { + if (controller.searchLibrary(target, source, game)) { for (UUID cardId : target.getTargets()) { Card card = game.getCard(cardId); if (card != null) { @@ -82,7 +82,7 @@ class TemptWithDiscoveryEffect extends OneShotEffect { target.clearChosen(); opponentsUsedSearch++; playersShuffle.add(playerId); - if (opponent.searchLibrary(target, game)) { + if (opponent.searchLibrary(target, source, game)) { for (UUID cardId : target.getTargets()) { Card card = game.getCard(cardId); if (card != null) { @@ -95,7 +95,7 @@ class TemptWithDiscoveryEffect extends OneShotEffect { } if (opponentsUsedSearch > 0) { target = new TargetCardInLibrary(0, opponentsUsedSearch, new FilterLandCard()); - if (controller.searchLibrary(target, game)) { + if (controller.searchLibrary(target, source, game)) { for (UUID cardId : target.getTargets()) { Card card = game.getCard(cardId); if (card != null) { diff --git a/Mage.Sets/src/mage/cards/t/TezzeretTheSeeker.java b/Mage.Sets/src/mage/cards/t/TezzeretTheSeeker.java index c9f2ff0ed66..bf93fc6fb61 100644 --- a/Mage.Sets/src/mage/cards/t/TezzeretTheSeeker.java +++ b/Mage.Sets/src/mage/cards/t/TezzeretTheSeeker.java @@ -91,7 +91,7 @@ class TezzeretTheSeekerEffect2 extends OneShotEffect { filter.add(new ConvertedManaCostPredicate(ComparisonType.FEWER_THAN, cmc + 1)); TargetCardInLibrary target = new TargetCardInLibrary(filter); - if (controller.searchLibrary(target, game)) { + if (controller.searchLibrary(target, source, game)) { Card card = controller.getLibrary().getCard(target.getFirstTarget(), game); if (card != null) { controller.moveCards(card, Zone.BATTLEFIELD, source, game); diff --git a/Mage.Sets/src/mage/cards/t/ThadaAdelAcquisitor.java b/Mage.Sets/src/mage/cards/t/ThadaAdelAcquisitor.java index e5777b82a6e..e7e02a1e2cc 100644 --- a/Mage.Sets/src/mage/cards/t/ThadaAdelAcquisitor.java +++ b/Mage.Sets/src/mage/cards/t/ThadaAdelAcquisitor.java @@ -72,7 +72,7 @@ class ThadaAdelAcquisitorEffect extends OneShotEffect { return false; } TargetCardInLibrary target = new TargetCardInLibrary(new FilterArtifactCard()); - if (controller.searchLibrary(target, game, damagedPlayer.getId())) { + if (controller.searchLibrary(target, source, game, damagedPlayer.getId())) { if (!target.getTargets().isEmpty()) { Card card = damagedPlayer.getLibrary().remove(target.getFirstTarget(), game); if (card != null) { diff --git a/Mage.Sets/src/mage/cards/t/ThoughtHemorrhage.java b/Mage.Sets/src/mage/cards/t/ThoughtHemorrhage.java index 5b0da23fd5e..04f7a06f21c 100644 --- a/Mage.Sets/src/mage/cards/t/ThoughtHemorrhage.java +++ b/Mage.Sets/src/mage/cards/t/ThoughtHemorrhage.java @@ -112,7 +112,7 @@ class ThoughtHemorrhageEffect extends OneShotEffect { // search cards in Library // If the player has no nonland cards in their hand, you can still search that player's library and have him or her shuffle it. TargetCardInLibrary targetCardsLibrary = new TargetCardInLibrary(0, Integer.MAX_VALUE, filterNamedCards); - controller.searchLibrary(targetCardsLibrary, game, targetPlayer.getId()); + controller.searchLibrary(targetCardsLibrary, source, game, targetPlayer.getId()); for (UUID cardId : targetCardsLibrary.getTargets()) { Card card = game.getCard(cardId); if (card != null) { diff --git a/Mage.Sets/src/mage/cards/t/TransmuteArtifact.java b/Mage.Sets/src/mage/cards/t/TransmuteArtifact.java index 416828bc926..5c781ad2981 100644 --- a/Mage.Sets/src/mage/cards/t/TransmuteArtifact.java +++ b/Mage.Sets/src/mage/cards/t/TransmuteArtifact.java @@ -78,7 +78,7 @@ class TransmuteArtifactEffect extends SearchEffect { return true; } //If you do, search your library for an artifact card. - if (sacrifice && controller.searchLibrary(target, game)) { + if (sacrifice && controller.searchLibrary(target, source, game)) { if (!target.getTargets().isEmpty()) { for (UUID cardId : target.getTargets()) { Card card = controller.getLibrary().getCard(cardId, game); diff --git a/Mage.Sets/src/mage/cards/t/TraverseTheOutlands.java b/Mage.Sets/src/mage/cards/t/TraverseTheOutlands.java index 0fc284773f5..bf4c0b41ea9 100644 --- a/Mage.Sets/src/mage/cards/t/TraverseTheOutlands.java +++ b/Mage.Sets/src/mage/cards/t/TraverseTheOutlands.java @@ -78,7 +78,7 @@ class TraverseTheOutlandsEffect extends OneShotEffect { } TargetCardInLibrary target = new TargetCardInLibrary(0, amount, StaticFilters.FILTER_CARD_BASIC_LAND); - if (controller.searchLibrary(target, game)) { + if (controller.searchLibrary(target, source, game)) { controller.moveCards(new CardsImpl(target.getTargets()).getCards(game), Zone.BATTLEFIELD, source, game, true, false, false, null); } controller.shuffleLibrary(source, game); diff --git a/Mage.Sets/src/mage/cards/u/UncageTheMenagerie.java b/Mage.Sets/src/mage/cards/u/UncageTheMenagerie.java index a002a14dcea..840fbbe22ef 100644 --- a/Mage.Sets/src/mage/cards/u/UncageTheMenagerie.java +++ b/Mage.Sets/src/mage/cards/u/UncageTheMenagerie.java @@ -75,7 +75,7 @@ class UncageTheMenagerieEffect extends OneShotEffect { int xValue = source.getManaCostsToPay().getX(); UncageTheMenagerieTarget target = new UncageTheMenagerieTarget(xValue); - if (player.searchLibrary(target, game)) { + if (player.searchLibrary(target, source, game)) { if (!target.getTargets().isEmpty()) { Cards cards = new CardsImpl(); for (UUID cardId : target.getTargets()) { diff --git a/Mage.Sets/src/mage/cards/v/VerdantSuccession.java b/Mage.Sets/src/mage/cards/v/VerdantSuccession.java index 9e0f3ee8876..cd0e14e0e45 100644 --- a/Mage.Sets/src/mage/cards/v/VerdantSuccession.java +++ b/Mage.Sets/src/mage/cards/v/VerdantSuccession.java @@ -127,7 +127,7 @@ class VerdantSuccessionEffect extends OneShotEffect { FilterCard filterCard = new FilterCard("Card named " + permanent.getName()); filterCard.add(new NamePredicate(permanent.getName())); TargetCardInLibrary target = new TargetCardInLibrary(filterCard); - controller.searchLibrary(target, game); + controller.searchLibrary(target, source, game); if (!target.getTargets().isEmpty()) { Card card = game.getCard(target.getFirstTarget()); if (card != null diff --git a/Mage.Sets/src/mage/cards/v/VeteranExplorer.java b/Mage.Sets/src/mage/cards/v/VeteranExplorer.java index 81b84fa8278..0e34e7fb8c5 100644 --- a/Mage.Sets/src/mage/cards/v/VeteranExplorer.java +++ b/Mage.Sets/src/mage/cards/v/VeteranExplorer.java @@ -91,7 +91,7 @@ class VeteranExplorerEffect extends OneShotEffect { if (player.chooseUse(Outcome.PutCardInPlay, "Search your library for up to two basic land cards and put them onto the battlefield?", source, game)) { usingPlayers.add(player); TargetCardInLibrary target = new TargetCardInLibrary(0, 2, StaticFilters.FILTER_CARD_BASIC_LAND); - if (player.searchLibrary(target, game)) { + if (player.searchLibrary(target, source, game)) { if (!target.getTargets().isEmpty()) { player.moveCards(new CardsImpl(target.getTargets()), Zone.BATTLEFIELD, source, game); } diff --git a/Mage.Sets/src/mage/cards/v/VizierOfTheAnointed.java b/Mage.Sets/src/mage/cards/v/VizierOfTheAnointed.java index 34df5d8b55c..a65c5e5d5df 100644 --- a/Mage.Sets/src/mage/cards/v/VizierOfTheAnointed.java +++ b/Mage.Sets/src/mage/cards/v/VizierOfTheAnointed.java @@ -150,7 +150,7 @@ class SearchLibraryPutInGraveyard extends SearchEffect { public boolean apply(Game game, Ability source) { Player controller = game.getPlayer(source.getControllerId()); if (controller != null) { - if (controller.searchLibrary(target, game)) { + if (controller.searchLibrary(target, source, game)) { if (!target.getTargets().isEmpty()) { Card card = controller.getLibrary().getCard(target.getFirstTarget(), game); if (card != null) { diff --git a/Mage.Sets/src/mage/cards/w/WaveOfVitriol.java b/Mage.Sets/src/mage/cards/w/WaveOfVitriol.java index e29fbc50562..5b223ec8627 100644 --- a/Mage.Sets/src/mage/cards/w/WaveOfVitriol.java +++ b/Mage.Sets/src/mage/cards/w/WaveOfVitriol.java @@ -100,7 +100,7 @@ class WaveOfVitriolEffect extends OneShotEffect { for (Map.Entry entry : sacrificedLands.entrySet()) { if (entry.getKey().chooseUse(Outcome.PutLandInPlay, "Search your library for up to " + entry.getValue() + " basic lands?", source, game)) { TargetCardInLibrary target = new TargetCardInLibrary(0, entry.getValue(), StaticFilters.FILTER_CARD_BASIC_LAND); - if (entry.getKey().searchLibrary(target, game)) { + if (entry.getKey().searchLibrary(target, source, game)) { if (!target.getTargets().isEmpty()) { toBattlefield.addAll(target.getTargets()); playersToShuffle.add(entry.getKey()); diff --git a/Mage.Sets/src/mage/cards/w/WeirdHarvest.java b/Mage.Sets/src/mage/cards/w/WeirdHarvest.java index 4ee86327acc..ca1fa3a86f3 100644 --- a/Mage.Sets/src/mage/cards/w/WeirdHarvest.java +++ b/Mage.Sets/src/mage/cards/w/WeirdHarvest.java @@ -88,7 +88,7 @@ class WeirdHarvestEffect extends OneShotEffect { if (player.chooseUse(Outcome.PutCardInPlay, "Search your library for up " + xValue + " creature cards and put them into your hand?", source, game)) { usingPlayers.add(player); TargetCardInLibrary target = new TargetCardInLibrary(0, xValue, new FilterCreatureCard()); - if (player.searchLibrary(target, game)) { + if (player.searchLibrary(target, source, game)) { if (!target.getTargets().isEmpty()) { Cards cards = new CardsImpl(target.getTargets()); player.moveCards(cards, Zone.HAND, source, game); diff --git a/Mage.Sets/src/mage/cards/w/WildPair.java b/Mage.Sets/src/mage/cards/w/WildPair.java index b832633bcc0..6349ee4aede 100644 --- a/Mage.Sets/src/mage/cards/w/WildPair.java +++ b/Mage.Sets/src/mage/cards/w/WildPair.java @@ -82,7 +82,7 @@ class WildPairEffect extends OneShotEffect { FilterCreatureCard filter = new FilterCreatureCard("creature card with total power and toughness " + totalPT); filter.add(new TotalPowerAndToughnessPredicate(ComparisonType.EQUAL_TO, totalPT)); TargetCardInLibrary target = new TargetCardInLibrary(1, filter); - if (controller.searchLibrary(target, game)) { + if (controller.searchLibrary(target, source, game)) { if (!target.getTargets().isEmpty()) { controller.moveCards(new CardsImpl(target.getTargets()), Zone.BATTLEFIELD, source, game); } diff --git a/Mage.Sets/src/mage/cards/w/WildResearch.java b/Mage.Sets/src/mage/cards/w/WildResearch.java index b4d7d9e6b51..2eb4936c37d 100644 --- a/Mage.Sets/src/mage/cards/w/WildResearch.java +++ b/Mage.Sets/src/mage/cards/w/WildResearch.java @@ -82,7 +82,7 @@ class WildResearchEffect extends OneShotEffect { MageObject sourceObject = game.getObject(source.getSourceId()); if (controller != null && sourceObject != null) { TargetCardInLibrary target = new TargetCardInLibrary(filter); - if (controller.searchLibrary(target, game)) { + if (controller.searchLibrary(target, source, game)) { if (!target.getTargets().isEmpty()) { Card card = controller.getLibrary().remove(target.getFirstTarget(), game); if (card != null) { diff --git a/Mage.Sets/src/mage/cards/w/WoodlandBellower.java b/Mage.Sets/src/mage/cards/w/WoodlandBellower.java index 9f8ff2a3bce..f7df876681d 100644 --- a/Mage.Sets/src/mage/cards/w/WoodlandBellower.java +++ b/Mage.Sets/src/mage/cards/w/WoodlandBellower.java @@ -75,7 +75,7 @@ class WoodlandBellowerEffect extends OneShotEffect { filter.add(Predicates.not(new SupertypePredicate(SuperType.LEGENDARY))); filter.add(new ConvertedManaCostPredicate(ComparisonType.FEWER_THAN, 4)); TargetCardInLibrary target = new TargetCardInLibrary(filter); - if (controller.searchLibrary(target, game)) { + if (controller.searchLibrary(target, source, game)) { if (!target.getTargets().isEmpty()) { Card card = controller.getLibrary().getCard(target.getFirstTarget(), game); controller.moveCards(card, Zone.BATTLEFIELD, source, game); diff --git a/Mage.Sets/src/mage/cards/y/YavimayaDryad.java b/Mage.Sets/src/mage/cards/y/YavimayaDryad.java index 68944bf1542..9890421bc85 100644 --- a/Mage.Sets/src/mage/cards/y/YavimayaDryad.java +++ b/Mage.Sets/src/mage/cards/y/YavimayaDryad.java @@ -80,7 +80,7 @@ class YavimayaDryadEffect extends SearchEffect { if (controller == null || targetPlayer == null) { return false; } - if (controller.searchLibrary(target, game)) { + if (controller.searchLibrary(target, source, game)) { if (!target.getTargets().isEmpty()) { targetPlayer.moveCards(new CardsImpl(target.getTargets()).getCards(game), Zone.BATTLEFIELD, source, game, true, false, false, null); diff --git a/Mage.Sets/src/mage/cards/y/YisanTheWandererBard.java b/Mage.Sets/src/mage/cards/y/YisanTheWandererBard.java index f06a2cf5763..63cbad9cc5d 100644 --- a/Mage.Sets/src/mage/cards/y/YisanTheWandererBard.java +++ b/Mage.Sets/src/mage/cards/y/YisanTheWandererBard.java @@ -85,7 +85,7 @@ class YisanTheWandererBardEffect extends OneShotEffect { filter.add(new ConvertedManaCostPredicate(ComparisonType.EQUAL_TO, newConvertedCost)); filter.add(new CardTypePredicate(CardType.CREATURE)); TargetCardInLibrary target = new TargetCardInLibrary(filter); - if (controller.searchLibrary(target, game)) { + if (controller.searchLibrary(target, source, game)) { Card card = controller.getLibrary().getCard(target.getFirstTarget(), game); controller.moveCards(card, Zone.BATTLEFIELD, source, game); } diff --git a/Mage.Sets/src/mage/cards/z/ZirilanOfTheClaw.java b/Mage.Sets/src/mage/cards/z/ZirilanOfTheClaw.java index 68325e1e241..a014a518c63 100644 --- a/Mage.Sets/src/mage/cards/z/ZirilanOfTheClaw.java +++ b/Mage.Sets/src/mage/cards/z/ZirilanOfTheClaw.java @@ -80,7 +80,7 @@ class ZirilanOfTheClawEffect extends OneShotEffect { FilterPermanentCard filter = new FilterPermanentCard("a Dragon permanent card"); filter.add(new SubtypePredicate(SubType.DRAGON)); TargetCardInLibrary target = new TargetCardInLibrary(filter); - if (controller.searchLibrary(target, game)) { + if (controller.searchLibrary(target, source, game)) { Card card = controller.getLibrary().getCard(target.getFirstTarget(), game); if (card != null) { controller.moveCards(card, Zone.BATTLEFIELD, source, game); diff --git a/Mage.Sets/src/mage/sets/WarOfTheSpark.java b/Mage.Sets/src/mage/sets/WarOfTheSpark.java index 5691e29878f..5ec521aa580 100644 --- a/Mage.Sets/src/mage/sets/WarOfTheSpark.java +++ b/Mage.Sets/src/mage/sets/WarOfTheSpark.java @@ -32,6 +32,7 @@ public final class WarOfTheSpark extends ExpansionSet { cards.add(new SetCardInfo("Angrath, Captain of Chaos", 227, Rarity.UNCOMMON, mage.cards.a.AngrathCaptainOfChaos.class)); cards.add(new SetCardInfo("Arlinn's Wolf", 151, Rarity.COMMON, mage.cards.a.ArlinnsWolf.class)); cards.add(new SetCardInfo("Arlinn, Voice of the Pack", 150, Rarity.UNCOMMON, mage.cards.a.ArlinnVoiceOfThePack.class)); + cards.add(new SetCardInfo("Ashiok, Dream Render", 228, Rarity.UNCOMMON, mage.cards.a.AshiokDreamRender.class)); cards.add(new SetCardInfo("Augur of Bolas", 41, Rarity.UNCOMMON, mage.cards.a.AugurOfBolas.class)); cards.add(new SetCardInfo("Awakening of Vitu-Ghazi", 152, Rarity.RARE, mage.cards.a.AwakeningOfVituGhazi.class)); cards.add(new SetCardInfo("Band Together", 153, Rarity.COMMON, mage.cards.b.BandTogether.class)); diff --git a/Mage.Tests/src/test/java/org/mage/test/player/TestPlayer.java b/Mage.Tests/src/test/java/org/mage/test/player/TestPlayer.java index d139d183aac..98ecad63af9 100644 --- a/Mage.Tests/src/test/java/org/mage/test/player/TestPlayer.java +++ b/Mage.Tests/src/test/java/org/mage/test/player/TestPlayer.java @@ -2634,23 +2634,23 @@ public class TestPlayer implements Player { } @Override - public boolean searchLibrary(TargetCardInLibrary target, Game game) { - return computerPlayer.searchLibrary(target, game); + public boolean searchLibrary(TargetCardInLibrary target, Ability source, Game game) { + return computerPlayer.searchLibrary(target, source, game); } @Override - public boolean searchLibrary(TargetCardInLibrary target, Game game, boolean triggerEvents) { - return computerPlayer.searchLibrary(target, game, triggerEvents); + public boolean searchLibrary(TargetCardInLibrary target, Ability source, Game game, boolean triggerEvents) { + return computerPlayer.searchLibrary(target, source, game, triggerEvents); } @Override - public boolean searchLibrary(TargetCardInLibrary target, Game game, UUID targetPlayerId) { - return computerPlayer.searchLibrary(target, game, targetPlayerId); + public boolean searchLibrary(TargetCardInLibrary target, Ability source, Game game, UUID targetPlayerId) { + return computerPlayer.searchLibrary(target, source, game, targetPlayerId); } @Override - public boolean searchLibrary(TargetCardInLibrary target, Game game, UUID targetPlayerId, boolean triggerEvents) { - return computerPlayer.searchLibrary(target, game, targetPlayerId, triggerEvents); + public boolean searchLibrary(TargetCardInLibrary target, Ability source, Game game, UUID targetPlayerId, boolean triggerEvents) { + return computerPlayer.searchLibrary(target, source, game, targetPlayerId, triggerEvents); } @Override diff --git a/Mage.Tests/src/test/java/org/mage/test/stub/PlayerStub.java b/Mage.Tests/src/test/java/org/mage/test/stub/PlayerStub.java index 384d89c21f1..056854fb9e9 100644 --- a/Mage.Tests/src/test/java/org/mage/test/stub/PlayerStub.java +++ b/Mage.Tests/src/test/java/org/mage/test/stub/PlayerStub.java @@ -583,22 +583,22 @@ public class PlayerStub implements Player { } @Override - public boolean searchLibrary(TargetCardInLibrary target, Game game) { + public boolean searchLibrary(TargetCardInLibrary target, Ability source, Game game) { return false; } @Override - public boolean searchLibrary(TargetCardInLibrary target, Game game, boolean triggerEvents) { + public boolean searchLibrary(TargetCardInLibrary target, Ability source, Game game, boolean triggerEvents) { return false; } @Override - public boolean searchLibrary(TargetCardInLibrary target, Game game, UUID targetPlayerId) { + public boolean searchLibrary(TargetCardInLibrary target, Ability source, Game game, UUID targetPlayerId) { return false; } @Override - public boolean searchLibrary(TargetCardInLibrary target, Game game, UUID targetPlayerId, boolean triggerEvents) { + public boolean searchLibrary(TargetCardInLibrary target, Ability source, Game game, UUID targetPlayerId, boolean triggerEvents) { return false; } diff --git a/Mage/src/main/java/mage/abilities/effects/common/RecruiterEffect.java b/Mage/src/main/java/mage/abilities/effects/common/RecruiterEffect.java index e7723c6d08f..1327e855497 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/RecruiterEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/RecruiterEffect.java @@ -41,7 +41,7 @@ public class RecruiterEffect extends OneShotEffect { if (controller != null) { TargetCardInLibrary targetCards = new TargetCardInLibrary(0, Integer.MAX_VALUE, filter); Cards cards = new CardsImpl(); - if (controller.searchLibrary(targetCards, game)) { + if (controller.searchLibrary(targetCards, source, game)) { cards.addAll(targetCards.getTargets()); } controller.revealCards(staticText, cards, game); diff --git a/Mage/src/main/java/mage/abilities/effects/common/ReplaceOpponentCardsInHandWithSelectedEffect.java b/Mage/src/main/java/mage/abilities/effects/common/ReplaceOpponentCardsInHandWithSelectedEffect.java index 5635316fee8..af77e9b1c3e 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/ReplaceOpponentCardsInHandWithSelectedEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/ReplaceOpponentCardsInHandWithSelectedEffect.java @@ -44,7 +44,7 @@ public class ReplaceOpponentCardsInHandWithSelectedEffect extends OneShotEffect TargetCardInLibrary target = new TargetCardInLibrary(searchLibraryForNum, searchLibraryForNum, new FilterCard()); - controller.searchLibrary(target, game, targetOpponent.getId()); + controller.searchLibrary(target, source, game, targetOpponent.getId()); for (UUID cardId : target.getTargets()) { Card targetCard = game.getCard(cardId); diff --git a/Mage/src/main/java/mage/abilities/effects/common/search/SearchLibraryGraveyardPutInHandEffect.java b/Mage/src/main/java/mage/abilities/effects/common/search/SearchLibraryGraveyardPutInHandEffect.java index 4da00d454c9..e23b92b1dcc 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/search/SearchLibraryGraveyardPutInHandEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/search/SearchLibraryGraveyardPutInHandEffect.java @@ -59,7 +59,7 @@ public class SearchLibraryGraveyardPutInHandEffect extends OneShotEffect { if (forceToSearchBoth || controller.chooseUse(outcome, "Search your library for a card named " + filter.getMessage() + '?', source, game)) { TargetCardInLibrary target = new TargetCardInLibrary(0, 1, filter); target.clearChosen(); - if (controller.searchLibrary(target, game)) { + if (controller.searchLibrary(target, source, game)) { if (!target.getTargets().isEmpty()) { cardFound = game.getCard(target.getFirstTarget()); } diff --git a/Mage/src/main/java/mage/abilities/effects/common/search/SearchLibraryPutInHandEffect.java b/Mage/src/main/java/mage/abilities/effects/common/search/SearchLibraryPutInHandEffect.java index 23a1f43d8b0..788c3e37544 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/search/SearchLibraryPutInHandEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/search/SearchLibraryPutInHandEffect.java @@ -63,7 +63,7 @@ public class SearchLibraryPutInHandEffect extends SearchEffect { return false; } target.clearChosen(); - if (controller.searchLibrary(target, game)) { + if (controller.searchLibrary(target, source, game)) { if (!target.getTargets().isEmpty()) { Cards cards = new CardsImpl(); for (UUID cardId : target.getTargets()) { diff --git a/Mage/src/main/java/mage/abilities/effects/common/search/SearchLibraryPutInHandOrOnBattlefieldEffect.java b/Mage/src/main/java/mage/abilities/effects/common/search/SearchLibraryPutInHandOrOnBattlefieldEffect.java index 87e8ed12f53..86bd7d7337f 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/search/SearchLibraryPutInHandOrOnBattlefieldEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/search/SearchLibraryPutInHandOrOnBattlefieldEffect.java @@ -66,7 +66,7 @@ public class SearchLibraryPutInHandOrOnBattlefieldEffect extends SearchEffect { return false; } target.clearChosen(); - if (controller.searchLibrary(target, game)) { + if (controller.searchLibrary(target, source, game)) { if (!target.getTargets().isEmpty()) { Cards cards = new CardsImpl(); boolean askToPutOntoBf = false; diff --git a/Mage/src/main/java/mage/abilities/effects/common/search/SearchLibraryPutInPlayEffect.java b/Mage/src/main/java/mage/abilities/effects/common/search/SearchLibraryPutInPlayEffect.java index c519f1736e3..940931dfac0 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/search/SearchLibraryPutInPlayEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/search/SearchLibraryPutInPlayEffect.java @@ -62,7 +62,7 @@ public class SearchLibraryPutInPlayEffect extends SearchEffect { if (player == null) { return false; } - if (player.searchLibrary(target, game)) { + if (player.searchLibrary(target, source, game)) { if (!target.getTargets().isEmpty()) { player.moveCards(new CardsImpl(target.getTargets()).getCards(game), Zone.BATTLEFIELD, source, game, tapped, false, false, null); diff --git a/Mage/src/main/java/mage/abilities/effects/common/search/SearchLibraryPutInPlayTargetPlayerEffect.java b/Mage/src/main/java/mage/abilities/effects/common/search/SearchLibraryPutInPlayTargetPlayerEffect.java index 507223d1f66..e2877c9fc61 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/search/SearchLibraryPutInPlayTargetPlayerEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/search/SearchLibraryPutInPlayTargetPlayerEffect.java @@ -70,7 +70,7 @@ public class SearchLibraryPutInPlayTargetPlayerEffect extends SearchEffect { public boolean apply(Game game, Ability source) { Player player = game.getPlayer(getTargetPointer().getFirst(game, source)); if (player != null) { - if (player.searchLibrary(target, game)) { + if (player.searchLibrary(target, source, game)) { if (!target.getTargets().isEmpty()) { player.moveCards(new CardsImpl(target.getTargets()).getCards(game), Zone.BATTLEFIELD, source, game, tapped, false, ownerIsController, null); diff --git a/Mage/src/main/java/mage/abilities/effects/common/search/SearchLibraryPutOnLibraryEffect.java b/Mage/src/main/java/mage/abilities/effects/common/search/SearchLibraryPutOnLibraryEffect.java index 0766baf14eb..d9923a55b0e 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/search/SearchLibraryPutOnLibraryEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/search/SearchLibraryPutOnLibraryEffect.java @@ -50,7 +50,7 @@ public class SearchLibraryPutOnLibraryEffect extends SearchEffect { if (controller == null || sourceObject == null) { return false; } - if (controller.searchLibrary(target, game)) { + if (controller.searchLibrary(target, source, game)) { Cards foundCards = new CardsImpl(target.getTargets()); if (reveal && !foundCards.isEmpty()) { controller.revealCards(sourceObject.getIdName(), foundCards, game); diff --git a/Mage/src/main/java/mage/abilities/effects/common/search/SearchLibraryWithLessCMCPutInPlayEffect.java b/Mage/src/main/java/mage/abilities/effects/common/search/SearchLibraryWithLessCMCPutInPlayEffect.java index 61d5e9e2cfd..c116004e5e4 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/search/SearchLibraryWithLessCMCPutInPlayEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/search/SearchLibraryWithLessCMCPutInPlayEffect.java @@ -43,7 +43,7 @@ public class SearchLibraryWithLessCMCPutInPlayEffect extends OneShotEffect { FilterCard advancedFilter = filter.copy(); // never change static objects so copy the object here before advancedFilter.add(new ConvertedManaCostPredicate(ComparisonType.FEWER_THAN, source.getManaCostsToPay().getX() + 1)); TargetCardInLibrary target = new TargetCardInLibrary(advancedFilter); - if (controller.searchLibrary(target, game)) { + if (controller.searchLibrary(target, source, game)) { if (!target.getTargets().isEmpty()) { Card card = controller.getLibrary().getCard(target.getFirstTarget(), game); if (card != null) { diff --git a/Mage/src/main/java/mage/abilities/keyword/PartnerWithAbility.java b/Mage/src/main/java/mage/abilities/keyword/PartnerWithAbility.java index 43bea447a7b..a9f9a82ec01 100644 --- a/Mage/src/main/java/mage/abilities/keyword/PartnerWithAbility.java +++ b/Mage/src/main/java/mage/abilities/keyword/PartnerWithAbility.java @@ -116,7 +116,7 @@ class PartnersWithSearchEffect extends OneShotEffect { filter.add(new NamePredicate(partnerName)); TargetCardInLibrary target = new TargetCardInLibrary(filter); if (player.chooseUse(Outcome.Benefit, "Search your library for a card named " + partnerName + " and put it into your hand?", source, game)) { - player.searchLibrary(target, game); + player.searchLibrary(target, source, game); for (UUID cardId : target.getTargets()) { Card card = player.getLibrary().getCard(cardId, game); if (card != null) { diff --git a/Mage/src/main/java/mage/abilities/keyword/TransmuteAbility.java b/Mage/src/main/java/mage/abilities/keyword/TransmuteAbility.java index f0143e4f0fc..7a4c9770b2b 100644 --- a/Mage/src/main/java/mage/abilities/keyword/TransmuteAbility.java +++ b/Mage/src/main/java/mage/abilities/keyword/TransmuteAbility.java @@ -80,7 +80,7 @@ class TransmuteEffect extends OneShotEffect { FilterCard filter = new FilterCard("card with converted mana cost " + sourceObject.getConvertedManaCost()); filter.add(new ConvertedManaCostPredicate(ComparisonType.EQUAL_TO, sourceObject.getConvertedManaCost())); TargetCardInLibrary target = new TargetCardInLibrary(1, filter); - if (controller.searchLibrary(target, game)) { + if (controller.searchLibrary(target, source, game)) { if (!target.getTargets().isEmpty()) { Cards revealed = new CardsImpl(target.getTargets()); controller.revealCards(sourceObject.getIdName(), revealed, game); diff --git a/Mage/src/main/java/mage/players/Player.java b/Mage/src/main/java/mage/players/Player.java index 286b98f5acc..f06f2821fe0 100644 --- a/Mage/src/main/java/mage/players/Player.java +++ b/Mage/src/main/java/mage/players/Player.java @@ -337,20 +337,21 @@ public interface Player extends MageItem, Copyable { boolean removeFromLibrary(Card card, Game game); - boolean searchLibrary(TargetCardInLibrary target, Game game); + boolean searchLibrary(TargetCardInLibrary target, Ability source, Game game); - boolean searchLibrary(TargetCardInLibrary target, Game game, boolean triggerEvents); + boolean searchLibrary(TargetCardInLibrary target, Ability source, Game game, boolean triggerEvents); - boolean searchLibrary(TargetCardInLibrary target, Game game, UUID targetPlayerId); + boolean searchLibrary(TargetCardInLibrary target, Ability source, Game game, UUID targetPlayerId); /** * @param target + * @param source * @param game * @param targetPlayerId player whose library will be searched * @param triggerEvents whether searching will trigger any game events * @return true if search was successful */ - boolean searchLibrary(TargetCardInLibrary target, Game game, UUID targetPlayerId, boolean triggerEvents); + boolean searchLibrary(TargetCardInLibrary target, Ability source, Game game, UUID targetPlayerId, boolean triggerEvents); /** * Reveals all players' libraries. Useful for abilities like Jace, Architect of Thought's -8 diff --git a/Mage/src/main/java/mage/players/PlayerImpl.java b/Mage/src/main/java/mage/players/PlayerImpl.java index d3139c37978..7749033fe47 100644 --- a/Mage/src/main/java/mage/players/PlayerImpl.java +++ b/Mage/src/main/java/mage/players/PlayerImpl.java @@ -2430,22 +2430,22 @@ public abstract class PlayerImpl implements Player, Serializable { } @Override - public boolean searchLibrary(TargetCardInLibrary target, Game game) { - return searchLibrary(target, game, playerId, true); + public boolean searchLibrary(TargetCardInLibrary target, Ability source, Game game) { + return searchLibrary(target, source, game, playerId, true); } @Override - public boolean searchLibrary(TargetCardInLibrary target, Game game, boolean triggerEvents) { - return searchLibrary(target, game, playerId, triggerEvents); + public boolean searchLibrary(TargetCardInLibrary target, Ability source, Game game, boolean triggerEvents) { + return searchLibrary(target, source, game, playerId, triggerEvents); } @Override - public boolean searchLibrary(TargetCardInLibrary target, Game game, UUID targetPlayerId) { - return searchLibrary(target, game, targetPlayerId, true); + public boolean searchLibrary(TargetCardInLibrary target, Ability source, Game game, UUID targetPlayerId) { + return searchLibrary(target, source, game, targetPlayerId, true); } @Override - public boolean searchLibrary(TargetCardInLibrary target, Game game, UUID targetPlayerId, boolean triggerEvents) { + public boolean searchLibrary(TargetCardInLibrary target, Ability source, Game game, UUID targetPlayerId, boolean triggerEvents) { //20091005 - 701.14c Library searchedLibrary = null; String searchInfo = null; @@ -2462,7 +2462,7 @@ public abstract class PlayerImpl implements Player, Serializable { if (searchedLibrary == null) { return false; } - GameEvent event = GameEvent.getEvent(GameEvent.EventType.SEARCH_LIBRARY, targetPlayerId, playerId, playerId, Integer.MAX_VALUE); + GameEvent event = GameEvent.getEvent(GameEvent.EventType.SEARCH_LIBRARY, targetPlayerId, source.getSourceId(), playerId, Integer.MAX_VALUE); if (!game.replaceEvent(event)) { if (!game.isSimulation()) { game.informPlayers(searchInfo);