From e904f9e6ffc2b936bd195d1913b3007e1fc255cd Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Fri, 3 May 2013 08:37:48 +0200 Subject: [PATCH] Reworked HiddenStrings. --- .../mage/sets/dragonsmaze/HiddenStrings.java | 44 +++++++------------ 1 file changed, 15 insertions(+), 29 deletions(-) diff --git a/Mage.Sets/src/mage/sets/dragonsmaze/HiddenStrings.java b/Mage.Sets/src/mage/sets/dragonsmaze/HiddenStrings.java index 2b06036c431..95cff0de2c7 100644 --- a/Mage.Sets/src/mage/sets/dragonsmaze/HiddenStrings.java +++ b/Mage.Sets/src/mage/sets/dragonsmaze/HiddenStrings.java @@ -37,6 +37,7 @@ import mage.abilities.Ability; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.CipherEffect; import mage.cards.CardImpl; +import mage.filter.FilterPermanent; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; @@ -57,8 +58,8 @@ public class HiddenStrings extends CardImpl { // You may tap or untap target permanent, then you may tap or untap another target permanent this.getSpellAbility().addEffect(new HiddenStringsEffect()); - this.getSpellAbility().addTarget(new TargetPermanent()); - this.getSpellAbility().addTarget(new TargetPermanent()); + this.getSpellAbility().addTarget(new TargetPermanent(0, 2, new FilterPermanent(), false)); + // Cipher this.getSpellAbility().addEffect(new CipherEffect()); } @@ -92,35 +93,20 @@ class HiddenStringsEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - boolean result = false; - - Player player = game.getPlayer(source.getControllerId()); - if (player != null) { - Permanent permanent = game.getPermanent(source.getFirstTarget()); - if (permanent != null) { - if (permanent.isTapped()) { - if (player.chooseUse(Constants.Outcome.Untap, "Untap that permanent?", game)) { - result |= permanent.untap(game); - } - } else { - if (player.chooseUse(Constants.Outcome.Tap, "Tap that permanent?", game)) { - result |= permanent.tap(game); + Player player = game.getPlayer(source.getControllerId()); + if (player != null) { + for (UUID targetId : source.getTargets().get(0).getTargets()) { + Permanent permanent = game.getPermanent(targetId); + if (permanent != null) { + if (player.chooseUse(Constants.Outcome.Tap, new StringBuilder("Tap ").append(permanent.getName()).append("?").toString(), game)) { + permanent.tap(game); + } else if (player.chooseUse(Constants.Outcome.Untap, new StringBuilder("Untap ").append(permanent.getName()).append("?").toString(), game)) { + permanent.untap(game); + } } } + return true; } - permanent = game.getPermanent(source.getTargets().get(1).getFirstTarget()); - if (permanent != null) { - if (permanent.isTapped()) { - if (player.chooseUse(Constants.Outcome.Untap, "Untap that permanent?", game)) { - result |= permanent.untap(game); - } - } else { - if (player.chooseUse(Constants.Outcome.Tap, "Tap that permanent?", game)) { - result |= permanent.tap(game); - } - } - } - } - return result; + return false; } }