diff --git a/Mage/src/main/java/mage/abilities/TriggeredAbilityImpl.java b/Mage/src/main/java/mage/abilities/TriggeredAbilityImpl.java
index 37e1b5482a..7fb0c0b225 100644
--- a/Mage/src/main/java/mage/abilities/TriggeredAbilityImpl.java
+++ b/Mage/src/main/java/mage/abilities/TriggeredAbilityImpl.java
@@ -31,6 +31,7 @@ import java.util.UUID;
 import mage.MageObject;
 import mage.abilities.effects.Effect;
 import mage.constants.AbilityType;
+import mage.constants.Outcome;
 import mage.constants.Zone;
 import mage.game.Game;
 import mage.game.events.GameEvent;
@@ -88,7 +89,7 @@ public abstract class TriggeredAbilityImpl extends AbilityImpl implements Trigge
             MageObject object = game.getObject(getSourceId());
             Player player = game.getPlayer(this.getControllerId());
             if (player != null && object != null) {
-                if (!player.chooseUse(getEffects().get(0).getOutcome(), this.getRule(object.getLogName()), this, game)) {
+                if (!player.chooseUse(getEffects().isEmpty() ? Outcome.Detriment : getEffects().get(0).getOutcome(), this.getRule(object.getLogName()), this, game)) {
                     return false;
                 }
             } else {
diff --git a/Mage/src/main/java/mage/abilities/effects/common/CreateDelayedTriggeredAbilityEffect.java b/Mage/src/main/java/mage/abilities/effects/common/CreateDelayedTriggeredAbilityEffect.java
index 1eb481c48d..b6cd8f3554 100644
--- a/Mage/src/main/java/mage/abilities/effects/common/CreateDelayedTriggeredAbilityEffect.java
+++ b/Mage/src/main/java/mage/abilities/effects/common/CreateDelayedTriggeredAbilityEffect.java
@@ -32,6 +32,7 @@ import mage.abilities.DelayedTriggeredAbility;
 import mage.abilities.Mode;
 import mage.abilities.effects.Effect;
 import mage.abilities.effects.OneShotEffect;
+import mage.constants.Outcome;
 import mage.game.Game;
 
 /**
@@ -53,7 +54,7 @@ public class CreateDelayedTriggeredAbilityEffect extends OneShotEffect {
     }
 
     public CreateDelayedTriggeredAbilityEffect(DelayedTriggeredAbility ability, boolean copyTargets, boolean initAbility) {
-        super(ability.getEffects().get(0).getOutcome());
+        super(ability.getEffects().isEmpty() ? Outcome.Detriment : ability.getEffects().get(0).getOutcome());
         this.ability = ability;
         this.copyTargets = copyTargets;
         this.initAbility = initAbility;
diff --git a/Mage/src/main/java/mage/abilities/effects/common/CreateSpecialActionEffect.java b/Mage/src/main/java/mage/abilities/effects/common/CreateSpecialActionEffect.java
index 8addab1bf0..02d0b896e9 100644
--- a/Mage/src/main/java/mage/abilities/effects/common/CreateSpecialActionEffect.java
+++ b/Mage/src/main/java/mage/abilities/effects/common/CreateSpecialActionEffect.java
@@ -25,13 +25,13 @@
  *  authors and should not be interpreted as representing official policies, either expressed
  *  or implied, of BetaSteward_at_googlemail.com.
  */
-
 package mage.abilities.effects.common;
 
 import mage.abilities.Ability;
 import mage.abilities.Mode;
 import mage.abilities.SpecialAction;
 import mage.abilities.effects.OneShotEffect;
+import mage.constants.Outcome;
 import mage.game.Game;
 
 /**
@@ -43,7 +43,7 @@ public class CreateSpecialActionEffect extends OneShotEffect {
     protected SpecialAction action;
 
     public CreateSpecialActionEffect(SpecialAction action) {
-        super(action.getEffects().get(0).getOutcome());
+        super(action.getEffects().isEmpty() ? Outcome.Detriment : action.getEffects().get(0).getOutcome());
         this.action = action;
     }
 
diff --git a/Mage/src/main/java/mage/game/stack/StackAbility.java b/Mage/src/main/java/mage/game/stack/StackAbility.java
index 34f857fa6a..98a45a40ad 100644
--- a/Mage/src/main/java/mage/game/stack/StackAbility.java
+++ b/Mage/src/main/java/mage/game/stack/StackAbility.java
@@ -54,6 +54,7 @@ import mage.constants.AbilityType;
 import mage.constants.AbilityWord;
 import mage.constants.CardType;
 import mage.constants.EffectType;
+import mage.constants.Outcome;
 import mage.constants.Zone;
 import mage.constants.ZoneDetail;
 import mage.game.Game;
@@ -194,7 +195,7 @@ public class StackAbility extends StackObjImpl implements Ability {
     public ObjectColor getColor(Game game) {
         return emptyColor;
     }
-    
+
     @Override
     public ObjectColor getFrameColor(Game game) {
         return ability.getSourceObject(game).getFrameColor(game);
@@ -220,7 +221,7 @@ public class StackAbility extends StackObjImpl implements Ability {
     public MageInt getToughness() {
         return MageInt.EmptyMageInt;
     }
-    
+
     @Override
     public int getStartingLoyalty() {
         return 0;
@@ -590,9 +591,10 @@ public class StackAbility extends StackObjImpl implements Ability {
         game.getStack().push(newStackAbility);
         if (chooseNewTargets && newAbility.getTargets().size() > 0) {
             Player controller = game.getPlayer(newControllerId);
-            if (controller.chooseUse(newAbility.getEffects().get(0).getOutcome(), "Choose new targets?", source, game)) {
+            Outcome outcome = newAbility.getEffects().isEmpty() ? Outcome.Detriment : newAbility.getEffects().get(0).getOutcome();
+            if (controller.chooseUse(outcome, "Choose new targets?", source, game)) {
                 newAbility.getTargets().clearChosen();
-                newAbility.getTargets().chooseTargets(newAbility.getEffects().get(0).getOutcome(), newControllerId, newAbility, false, game);
+                newAbility.getTargets().chooseTargets(outcome, newControllerId, newAbility, false, game);
             }
         }
         game.fireEvent(new GameEvent(GameEvent.EventType.COPIED_STACKOBJECT, newStackAbility.getId(), this.getId(), newControllerId));
diff --git a/Mage/src/main/java/mage/game/stack/StackObjImpl.java b/Mage/src/main/java/mage/game/stack/StackObjImpl.java
index d37d6f78a9..d0012217a7 100644
--- a/Mage/src/main/java/mage/game/stack/StackObjImpl.java
+++ b/Mage/src/main/java/mage/game/stack/StackObjImpl.java
@@ -163,8 +163,9 @@ public abstract class StackObjImpl implements StackObject {
         for (UUID targetId : target.getTargets()) {
             String targetNames = getNamesOftargets(targetId, game);
             // change the target?
+            Outcome outcome = mode.getEffects().isEmpty() ? Outcome.Detriment : mode.getEffects().get(0).getOutcome();
             if (targetNames != null
-                    && (forceChange || targetController.chooseUse(mode.getEffects().get(0).getOutcome(), "Change this target: " + targetNames + "?", ability, game))) {
+                    && (forceChange || targetController.chooseUse(outcome, "Change this target: " + targetNames + "?", ability, game))) {
                 Set<UUID> possibleTargets = target.possibleTargets(this.getSourceId(), getControllerId(), game);
                 // choose exactly one other target - already targeted objects are not counted
                 if (forceChange && possibleTargets != null && possibleTargets.size() > 1) { // controller of spell must be used (e.g. TargetOpponent)
@@ -176,7 +177,7 @@ public abstract class StackObjImpl implements StackObject {
                         iteration++;
                         newTarget.clearChosen();
 
-                        newTarget.chooseTarget(mode.getEffects().get(0).getOutcome(), getControllerId(), ability, game);
+                        newTarget.chooseTarget(outcome, getControllerId(), ability, game);
                         // check target restriction
                         if (newTarget.getFirstTarget() != null && filterNewTarget != null) {
                             Permanent newTargetPermanent = game.getPermanent(newTarget.getFirstTarget());
@@ -203,7 +204,7 @@ public abstract class StackObjImpl implements StackObject {
                     do {
                         again = false;
                         tempTarget.clearChosen();
-                        if (!tempTarget.chooseTarget(mode.getEffects().get(0).getOutcome(), getControllerId(), ability, game)) {
+                        if (!tempTarget.chooseTarget(outcome, getControllerId(), ability, game)) {
                             if (targetController.chooseUse(Outcome.Benefit, "No target object selected. Reset to original target?", ability, game)) {
                                 // use previous target no target was selected
                                 newTarget.addTarget(targetId, target.getTargetAmount(targetId), ability, game, false);
@@ -211,7 +212,8 @@ public abstract class StackObjImpl implements StackObject {
                                 again = true;
                             }
                         } else // if possible add the alternate Target - it may not be included in the old definition nor in the already selected targets of the new definition
-                         if (newTarget.getTargets().contains(tempTarget.getFirstTarget()) || target.getTargets().contains(tempTarget.getFirstTarget())) {
+                        {
+                            if (newTarget.getTargets().contains(tempTarget.getFirstTarget()) || target.getTargets().contains(tempTarget.getFirstTarget())) {
                                 if (targetController.isHuman()) {
                                     if (targetController.chooseUse(Outcome.Benefit, "This target was already selected from origin spell. Reset to original target?", ability, game)) {
                                         // use previous target no target was selected
@@ -240,6 +242,7 @@ public abstract class StackObjImpl implements StackObject {
                                 // valid target was selected, add it to the new target definition
                                 newTarget.addTarget(tempTarget.getFirstTarget(), target.getTargetAmount(targetId), ability, game, false);
                             }
+                        }
                     } while (again && targetController.canRespond());
                 }
             } // keep the target