diff --git a/Mage.Server.Plugins/Mage.Player.AI/src/main/java/mage/player/ai/ComputerPlayer.java b/Mage.Server.Plugins/Mage.Player.AI/src/main/java/mage/player/ai/ComputerPlayer.java
index bee4a20e77..d1a76f6134 100644
--- a/Mage.Server.Plugins/Mage.Player.AI/src/main/java/mage/player/ai/ComputerPlayer.java
+++ b/Mage.Server.Plugins/Mage.Player.AI/src/main/java/mage/player/ai/ComputerPlayer.java
@@ -410,13 +410,13 @@ public class ComputerPlayer<T extends ComputerPlayer<T>> extends PlayerImpl<T> i
             List<Permanent> targets;
             boolean outcomeTargets = true;
             if (outcome.isGood()) {
-                targets = threats(playerId, source.getSourceId(), ((TargetPermanent)target).getFilter(), game, target.getTargets());
+                targets = threats(playerId, source == null?null:source.getSourceId(), ((TargetPermanent)target).getFilter(), game, target.getTargets());
             }
             else {
-                targets = threats(opponentId, source.getSourceId(), ((TargetPermanent)target).getFilter(), game, target.getTargets());
+                targets = threats(opponentId, source == null?null:source.getSourceId(), ((TargetPermanent)target).getFilter(), game, target.getTargets());
             }            
             if (targets.isEmpty() && target.isRequired()) {
-                targets = threats(null, source.getSourceId(), ((TargetPermanent)target).getFilter(), game, target.getTargets());
+                targets = threats(null, source == null?null:source.getSourceId(), ((TargetPermanent)target).getFilter(), game, target.getTargets());
                 Collections.reverse(targets);
                 outcomeTargets = false;
                 //targets = game.getBattlefield().getActivePermanents(((TargetPermanent)target).getFilter(), playerId, game);
@@ -1792,7 +1792,7 @@ public class ComputerPlayer<T extends ComputerPlayer<T>> extends PlayerImpl<T> i
     }
 
     protected List<Permanent> threats(UUID playerId, UUID sourceId, FilterPermanent filter, Game game, List<UUID> targets) {
-        List<Permanent> threats = playerId == null ?
+        List<Permanent> threats = (playerId == null || sourceId ==null) ?
                 game.getBattlefield().getActivePermanents(filter, this.getId(), sourceId, game) : // all permanents within the range of the player
                 game.getBattlefield().getAllActivePermanents(filter, playerId, game); // all controlled permanents of playerId
 
diff --git a/Mage/src/mage/game/GameImpl.java b/Mage/src/mage/game/GameImpl.java
index ec66dc04cc..55d6d8a48e 100644
--- a/Mage/src/mage/game/GameImpl.java
+++ b/Mage/src/mage/game/GameImpl.java
@@ -1308,7 +1308,7 @@ public abstract class GameImpl<T extends GameImpl<T>> implements Game, Serializa
                             Target targetPlaneswalkerToKeep = new TargetPermanent(filterPlaneswalker);
                             targetPlaneswalkerToKeep.setTargetName(new StringBuilder(planeswalker.getName()).append(" to keep?").toString());
                             targetPlaneswalkerToKeep.setRequired(true);
-                            controller.chooseTarget(Outcome.Sacrifice, targetPlaneswalkerToKeep, null, this);
+                            controller.chooseTarget(Outcome.Benefit, targetPlaneswalkerToKeep, null, this);
                             for (Permanent dupPlaneswalker: this.getBattlefield().getActivePermanents(filterPlaneswalker, planeswalker.getControllerId(), this)) {
                                 if (!targetPlaneswalkerToKeep.getTargets().contains(dupPlaneswalker.getId())) {
                                     dupPlaneswalker.moveToZone(Zone.GRAVEYARD, null, this, false);
@@ -1336,7 +1336,7 @@ public abstract class GameImpl<T extends GameImpl<T>> implements Game, Serializa
                         Target targetLegendaryToKeep = new TargetPermanent(filterLegendName);
                         targetLegendaryToKeep.setTargetName(new StringBuilder(legend.getName()).append(" to keep (Legendary Rule)?").toString());
                         targetLegendaryToKeep.setRequired(true);
-                        controller.chooseTarget(Outcome.Sacrifice, targetLegendaryToKeep, null, this);
+                        controller.chooseTarget(Outcome.Benefit, targetLegendaryToKeep, null, this);
                         for (Permanent dupLegend: getBattlefield().getActivePermanents(filterLegendName, legend.getControllerId(), this)) {
                             if (!targetLegendaryToKeep.getTargets().contains(dupLegend.getId())) {
                                 dupLegend.moveToZone(Zone.GRAVEYARD, null, this, false);