diff --git a/Mage/src/mage/target/common/TargetCreatureOrPlayer.java b/Mage/src/mage/target/common/TargetCreatureOrPlayer.java index 5f0a4659b1f..13718e01924 100644 --- a/Mage/src/mage/target/common/TargetCreatureOrPlayer.java +++ b/Mage/src/mage/target/common/TargetCreatureOrPlayer.java @@ -37,7 +37,6 @@ import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; import mage.target.TargetImpl; -import mage.target.TargetObject; /** * diff --git a/Mage/src/mage/target/common/TargetDefender.java b/Mage/src/mage/target/common/TargetDefender.java index c3851d49f92..1d8fdd97de3 100644 --- a/Mage/src/mage/target/common/TargetDefender.java +++ b/Mage/src/mage/target/common/TargetDefender.java @@ -37,30 +37,32 @@ import mage.filter.common.FilterPlaneswalkerOrPlayer; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; -import mage.target.TargetObject; +import mage.target.TargetImpl; /** * * @author BetaSteward_at_googlemail.com */ -public class TargetDefender extends TargetObject { +public class TargetDefender extends TargetImpl { protected FilterPlaneswalkerOrPlayer filter; + protected UUID attackerId; - public TargetDefender(List defenders) { - this(1, 1, defenders); + public TargetDefender(List defenders, UUID attackerId) { + this(1, 1, defenders, attackerId); } - public TargetDefender(int numTargets, List defenders) { - this(numTargets, numTargets, defenders); + public TargetDefender(int numTargets, List defenders, UUID attackerId) { + this(numTargets, numTargets, defenders, attackerId); } - public TargetDefender(int minNumTargets, int maxNumTargets, List defenders) { + public TargetDefender(int minNumTargets, int maxNumTargets, List defenders, UUID attackerId) { this.minNumberOfTargets = minNumTargets; this.maxNumberOfTargets = maxNumTargets; this.zone = Zone.ALL; this.filter = new FilterPlaneswalkerOrPlayer(defenders); this.targetName = filter.getMessage(); + this.attackerId = attackerId; } @Override @@ -68,6 +70,7 @@ public class TargetDefender extends TargetObject { return this.filter; } + @Override public boolean canChoose(UUID sourceId, Game game) { int count = 0; for (Player player: game.getPlayers().values()) { @@ -83,5 +86,36 @@ public class TargetDefender extends TargetObject { return count >= this.minNumberOfTargets; } + @Override + public String getTargetedName(Game game) { + StringBuilder sb = new StringBuilder(); + for (UUID targetId: getTargets()) { + Permanent permanent = game.getPermanent(targetId); + if (permanent != null) { + sb.append(permanent.getName()); + sb.append(" "); + } + else { + Player player = game.getPlayer(targetId); + sb.append(player.getName()); + sb.append(" "); + } + } + return sb.toString(); + } + + @Override + public boolean canTarget(UUID id, Game game) { + Player player = game.getPlayer(id); + if (player != null) { + return player.canTarget(game.getObject(attackerId)) && filter.match(player); + } + Permanent permanent = game.getPermanent(id); + if (permanent != null) { + return permanent.canTarget(game.getObject(attackerId)) && filter.match(permanent); + } + return false; + } + }