From a43182ef4ace75bd65b8ebfba6243af1829ca613 Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Tue, 26 Aug 2014 12:00:01 +0200 Subject: [PATCH] * Fixed a bug of exile target and search other zones function searching for wrong name (fixes #541). Concerned Eradicate, Scour, Sowing Salt and Splinter. --- ...etAndSearchGraveyardHandLibraryEffect.java | 22 ++++--------------- ...dHandLibraryForCardNameAndExileEffect.java | 8 +++++++ 2 files changed, 12 insertions(+), 18 deletions(-) diff --git a/Mage/src/mage/abilities/effects/common/ExileTargetAndSearchGraveyardHandLibraryEffect.java b/Mage/src/mage/abilities/effects/common/ExileTargetAndSearchGraveyardHandLibraryEffect.java index c97b5577948..5c7d93bdaf6 100644 --- a/Mage/src/mage/abilities/effects/common/ExileTargetAndSearchGraveyardHandLibraryEffect.java +++ b/Mage/src/mage/abilities/effects/common/ExileTargetAndSearchGraveyardHandLibraryEffect.java @@ -58,38 +58,24 @@ public class ExileTargetAndSearchGraveyardHandLibraryEffect extends SearchTarget @Override public boolean apply(Game game, Ability source) { boolean result = false; - String cardName = ""; UUID targetPlayerId = null; - // define cardName - if (source instanceof SpellAbility) { - Card sourceCard = game.getCard(source.getSourceId()); - if (sourceCard != null) { - cardName = sourceCard.getName(); - } - } else { - Permanent sourcePermanent = game.getPermanent(source.getSourceId()); - if (sourcePermanent != null) { - cardName = sourcePermanent.getName(); - } - } // get Target to exile Target exileTarget = null; for (Target target : source.getTargets()) { - if (!(target instanceof TargetPlayer)) { + if (target instanceof TargetPermanent) { exileTarget = target; break; } - } - - if (exileTarget != null && exileTarget instanceof TargetPermanent) { + } + if (exileTarget != null) { Permanent permanentToExile = game.getPermanent(exileTarget.getFirstTarget()); if (permanentToExile != null) { targetPlayerId = permanentToExile.getControllerId(); result = permanentToExile.moveToExile(null, "", source.getSourceId(), game); + this.applySearchAndExile(game, source, permanentToExile.getName(), targetPlayerId); } } - this.applySearchAndExile(game, source, cardName, targetPlayerId); return result; } diff --git a/Mage/src/mage/abilities/effects/common/search/SearchTargetGraveyardHandLibraryForCardNameAndExileEffect.java b/Mage/src/mage/abilities/effects/common/search/SearchTargetGraveyardHandLibraryForCardNameAndExileEffect.java index 3a4aae4169f..74771c8e8ad 100644 --- a/Mage/src/mage/abilities/effects/common/search/SearchTargetGraveyardHandLibraryForCardNameAndExileEffect.java +++ b/Mage/src/mage/abilities/effects/common/search/SearchTargetGraveyardHandLibraryForCardNameAndExileEffect.java @@ -77,6 +77,14 @@ public abstract class SearchTargetGraveyardHandLibraryForCardNameAndExileEffect this.graveyardExileOptional = effect.graveyardExileOptional; } + /** + * + * @param game + * @param source + * @param cardName name of the card to exile + * @param targetPlayerId id of the target player to exile card name from his or her zones + * @return + */ public boolean applySearchAndExile(Game game, Ability source, String cardName, UUID targetPlayerId) { Player controller = game.getPlayer(source.getControllerId()); if (cardName != null && controller != null) {