diff --git a/Mage/src/mage/abilities/effects/common/ChooseNewTargetsTargetEffect.java b/Mage/src/mage/abilities/effects/common/ChooseNewTargetsTargetEffect.java index 420076342f3..e54c6596fa8 100644 --- a/Mage/src/mage/abilities/effects/common/ChooseNewTargetsTargetEffect.java +++ b/Mage/src/mage/abilities/effects/common/ChooseNewTargetsTargetEffect.java @@ -53,7 +53,7 @@ public class ChooseNewTargetsTargetEffect extends OneShotEffect copy.setControllerId(source.getControllerId()); copy.setCopiedSpell(true); game.getStack().push(copy); - copy.chooseNewTargets(game); + copy.chooseNewTargets(game, source.getControllerId()); return true; } return false; diff --git a/Mage/src/mage/game/stack/Spell.java b/Mage/src/mage/game/stack/Spell.java index 92141239a5d..c43eaa8d743 100644 --- a/Mage/src/mage/game/stack/Spell.java +++ b/Mage/src/mage/game/stack/Spell.java @@ -135,34 +135,44 @@ public class Spell> implements StackObject, Card { return replaced; } - public boolean chooseNewTargets(Game game) { - Player player = game.getPlayer(controllerId); - for (Target target: ability.getTargets()) { - Target newTarget = target.copy(); - newTarget.clearChosen(); - for (UUID targetId: target.getTargets()) { - MageObject object = game.getObject(targetId); - String name = null; - if (object == null) { - Player targetPlayer = game.getPlayer(targetId); - if (player != null) name = targetPlayer.getName(); - } else { - name = object.getName(); - } - if (name != null && player.chooseUse(ability.getEffects().get(0).getOutcome(), "Change target from " + name + "?", game)) { - if (!player.chooseTarget(ability.getEffects().get(0).getOutcome(), newTarget, ability, game)) + /** + * Choose new targets for the spell + * + * @param game + * @param playerId Player UUID who changes the targets. + * @return + */ + public boolean chooseNewTargets(Game game, UUID playerId) { + Player player = game.getPlayer(playerId); + if (player != null) { + for (Target target: ability.getTargets()) { + Target newTarget = target.copy(); + newTarget.clearChosen(); + for (UUID targetId: target.getTargets()) { + MageObject object = game.getObject(targetId); + String name = null; + if (object == null) { + Player targetPlayer = game.getPlayer(targetId); + if (player != null) name = targetPlayer.getName(); + } else { + name = object.getName(); + } + if (name != null && player.chooseUse(ability.getEffects().get(0).getOutcome(), "Change target from " + name + "?", game)) { + if (!player.chooseTarget(ability.getEffects().get(0).getOutcome(), newTarget, ability, game)) + newTarget.addTarget(targetId, ability, game); + } + else { newTarget.addTarget(targetId, ability, game); + } } - else { - newTarget.addTarget(targetId, ability, game); + target.clearChosen(); + for (UUID newTargetId: newTarget.getTargets()) { + target.addTarget(newTargetId, ability, game); } } - target.clearChosen(); - for (UUID newTargetId: newTarget.getTargets()) { - target.addTarget(newTargetId, ability, game); - } + return true; } - return true; + return false; } @Override