diff --git a/forge-game/src/main/java/forge/game/ability/effects/DigEffect.java b/forge-game/src/main/java/forge/game/ability/effects/DigEffect.java index 6228bf0ce63..d3052689056 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/DigEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/DigEffect.java @@ -1,5 +1,7 @@ package forge.game.ability.effects; +import com.google.common.collect.Iterables; +import com.google.common.collect.Maps; import forge.card.MagicColor; import forge.game.Game; import forge.game.GameActionUtil; @@ -317,19 +319,34 @@ public class DigEffect extends SpellAbilityEffect { } if (sa.hasParam("Attacking")) { final Combat combat = game.getCombat(); - if ( null != combat ) { - final FCollectionView e = combat.getDefenders(); - - final GameEntity defender = sa.getActivatingPlayer().getController().chooseSingleEntityForEffect(e, sa, - Localizer.getInstance().getMessage("lblChooseDefenderToAttackWithCard", CardTranslation.getTranslatedName(c.getName())), null); - - if (defender != null) { - combat.addAttacker(c, defender); - game.getCombat().getBandOfAttacker(c).setBlocked(false); - game.fireEvent(new GameEventCombatChanged()); + String attacking = sa.getParam("Attacking"); + GameEntity defender = null; + FCollectionView defs = null; + if (null != combat) { + if ("True".equalsIgnoreCase(attacking)) { + defs = combat.getDefenders(); + } else if (sa.hasParam("ChoosePlayerOrPlaneswalker")) { + Player defendingPlayer = Iterables.getFirst(AbilityUtils.getDefinedPlayers(host, + attacking, sa), null); + if (defendingPlayer != null) { + defs = game.getCombat().getDefendersControlledBy(defendingPlayer); } } } + if (defs != null) { + Map params = Maps.newHashMap(); + params.put("Attacker", c); + defender = player.getController().chooseSingleEntityForEffect(defs, sa, + Localizer.getInstance().getMessage("lblChooseDefenderToAttackWithCard", + CardTranslation.getTranslatedName(c.getName())),false, + params); + } + if (defender != null) { + combat.addAttacker(c, defender); + game.getCombat().getBandOfAttacker(c).setBlocked(false); + game.fireEvent(new GameEventCombatChanged()); + } + } } else if (destZone1.equals(ZoneType.Exile)) { c.setExiledWith(effectHost); }