From dc4168efaee35a1ea551627925e6a9e55b376bd7 Mon Sep 17 00:00:00 2001
From: wetterlicht <matthias.noetzli@sunrise.ch>
Date: Sun, 22 May 2016 19:41:59 +0200
Subject: [PATCH]

---
 .../src/mage/sets/darksteel/DroolingOgre.java     |  4 +---
 .../mage/sets/darksteel/EmissaryOfDespair.java    |  4 ++--
 .../src/mage/sets/darksteel/MurderousSpoils.java  |  4 ++--
 .../src/mage/sets/darksteel/PsychicOverload.java  | 15 ++++++++++-----
 .../src/mage/sets/darksteel/PulseOfTheTangle.java |  5 +++--
 5 files changed, 18 insertions(+), 14 deletions(-)

diff --git a/Mage.Sets/src/mage/sets/darksteel/DroolingOgre.java b/Mage.Sets/src/mage/sets/darksteel/DroolingOgre.java
index b2368462b4..9dba69254a 100644
--- a/Mage.Sets/src/mage/sets/darksteel/DroolingOgre.java
+++ b/Mage.Sets/src/mage/sets/darksteel/DroolingOgre.java
@@ -31,7 +31,6 @@ import java.util.UUID;
 import mage.MageInt;
 import mage.abilities.Ability;
 import mage.abilities.TriggeredAbilityImpl;
-import mage.abilities.common.SpellCastAllTriggeredAbility;
 import mage.abilities.effects.ContinuousEffect;
 import mage.abilities.effects.Effect;
 import mage.abilities.effects.OneShotEffect;
@@ -42,7 +41,6 @@ import mage.constants.Duration;
 import mage.constants.Outcome;
 import mage.constants.Rarity;
 import mage.constants.Zone;
-import mage.filter.common.FilterArtifactSpell;
 import mage.game.Game;
 import mage.game.events.GameEvent;
 import mage.game.events.GameEvent.EventType;
@@ -139,7 +137,7 @@ public class DroolingOgre extends CardImpl {
 
         @Override
         public String getRule() {
-            return "Whenever a player casts an artifact spell, that player gains control of {this}";
+            return "Whenever a player casts an artifact spell, that player gains control of {this}.";
         }
     }
 }
diff --git a/Mage.Sets/src/mage/sets/darksteel/EmissaryOfDespair.java b/Mage.Sets/src/mage/sets/darksteel/EmissaryOfDespair.java
index 70a8a54d27..7647695b6e 100644
--- a/Mage.Sets/src/mage/sets/darksteel/EmissaryOfDespair.java
+++ b/Mage.Sets/src/mage/sets/darksteel/EmissaryOfDespair.java
@@ -75,11 +75,11 @@ class EmissaryOfDespairCount implements DynamicValue {
 
     @Override
     public int calculate(Game game, Ability sourceAbility, Effect effect) {
-        if (sourceAbility.getFirstTarget() == null) {
+        if (effect.getTargetPointer().getFirst(game, sourceAbility) == null) {
             return 0;
         }
         FilterArtifactPermanent filter = new FilterArtifactPermanent();
-        filter.add(new ControllerIdPredicate(sourceAbility.getFirstTarget()));
+        filter.add(new ControllerIdPredicate(effect.getTargetPointer().getFirst(game, sourceAbility)));
         return game.getBattlefield().count(filter, sourceAbility.getSourceId(), sourceAbility.getControllerId(), game);
     }
 
diff --git a/Mage.Sets/src/mage/sets/darksteel/MurderousSpoils.java b/Mage.Sets/src/mage/sets/darksteel/MurderousSpoils.java
index 018c2b2c71..80c5130db5 100644
--- a/Mage.Sets/src/mage/sets/darksteel/MurderousSpoils.java
+++ b/Mage.Sets/src/mage/sets/darksteel/MurderousSpoils.java
@@ -105,8 +105,8 @@ class MurderousSpoilsEffect extends OneShotEffect {
                 }
             }
             for (Permanent p : attachments) {
-                ContinuousEffect gainControl = new GainControlTargetEffect(Duration.EndOfGame);
-                gainControl.setTargetPointer(new FixedTarget(p.getId()));
+                ContinuousEffect gainControl = new GainControlTargetEffect(Duration.Custom);
+                gainControl.setTargetPointer(new FixedTarget(p, game));
                 game.addEffect(gainControl, source);
             }
             target.destroy(source.getId(), game, true);
diff --git a/Mage.Sets/src/mage/sets/darksteel/PsychicOverload.java b/Mage.Sets/src/mage/sets/darksteel/PsychicOverload.java
index 04e8c82dcc..d4fe61d82d 100644
--- a/Mage.Sets/src/mage/sets/darksteel/PsychicOverload.java
+++ b/Mage.Sets/src/mage/sets/darksteel/PsychicOverload.java
@@ -28,23 +28,25 @@
 package mage.sets.darksteel;
 
 import java.util.UUID;
+import mage.abilities.Ability;
 import mage.abilities.common.EntersBattlefieldTriggeredAbility;
 import mage.abilities.common.SimpleActivatedAbility;
 import mage.abilities.common.SimpleStaticAbility;
-import mage.abilities.costs.common.DiscardCardCost;
 import mage.abilities.costs.common.DiscardTargetCost;
-import mage.abilities.costs.common.DiscardXTargetCost;
+import mage.abilities.effects.Effect;
 import mage.abilities.effects.common.AttachEffect;
 import mage.abilities.effects.common.DontUntapInControllersUntapStepEnchantedEffect;
 import mage.abilities.effects.common.TapEnchantedEffect;
-import mage.abilities.effects.common.UntapEnchantedEffect;
+import mage.abilities.effects.common.UntapSourceEffect;
+import mage.abilities.effects.common.continuous.GainAbilityAttachedEffect;
 import mage.abilities.keyword.EnchantAbility;
 import mage.cards.CardImpl;
+import mage.constants.AttachmentType;
 import mage.constants.CardType;
+import mage.constants.Duration;
 import mage.constants.Outcome;
 import mage.constants.Rarity;
 import mage.constants.Zone;
-import mage.filter.FilterCard;
 import mage.filter.common.FilterArtifactCard;
 import mage.target.TargetPermanent;
 import mage.target.common.TargetCardInHand;
@@ -70,8 +72,11 @@ public class PsychicOverload extends CardImpl {
         this.addAbility(new EntersBattlefieldTriggeredAbility(new TapEnchantedEffect()));
         // Enchanted permanent doesn't untap during its controller's untap step.
         this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new DontUntapInControllersUntapStepEnchantedEffect()));
+        
         // Enchanted permanent has "Discard two artifact cards: Untap this permanent."
-        this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new UntapEnchantedEffect(), new DiscardTargetCost(new TargetCardInHand(2, new FilterArtifactCard("two artifact cards")))));
+        Ability gainedAbility = new SimpleActivatedAbility(Zone.BATTLEFIELD, new UntapSourceEffect(), new DiscardTargetCost(new TargetCardInHand(2, new FilterArtifactCard("two artifact cards"))));       
+        Effect effect = new GainAbilityAttachedEffect(gainedAbility, AttachmentType.AURA, Duration.WhileOnBattlefield, "Enchanted permanent has \"Discard two artifact cards: Untap this permanent.\"");
+        this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD,  effect));
     }
 
     public PsychicOverload(final PsychicOverload card) {
diff --git a/Mage.Sets/src/mage/sets/darksteel/PulseOfTheTangle.java b/Mage.Sets/src/mage/sets/darksteel/PulseOfTheTangle.java
index 029347f42c..55e0a3d74f 100644
--- a/Mage.Sets/src/mage/sets/darksteel/PulseOfTheTangle.java
+++ b/Mage.Sets/src/mage/sets/darksteel/PulseOfTheTangle.java
@@ -76,7 +76,7 @@ class PulseOfTheTangleReturnToHandEffect extends OneShotEffect {
 
     PulseOfTheTangleReturnToHandEffect() {
         super(Outcome.Benefit);
-        this.staticText = "Then if an opponent controls more creatures than you, return Pulse of the Tangle to its owner's hand";
+        this.staticText = "Then if an opponent controls more creatures than you, return {this} to its owner's hand";
     }
 
     PulseOfTheTangleReturnToHandEffect(final PulseOfTheTangleReturnToHandEffect effect) {
@@ -93,6 +93,7 @@ class PulseOfTheTangleReturnToHandEffect extends OneShotEffect {
         Player controller = game.getPlayer(source.getControllerId());
         FilterControlledCreaturePermanent controllerFilter = new FilterControlledCreaturePermanent();
         PermanentsOnBattlefieldCount controllerCount = new PermanentsOnBattlefieldCount(controllerFilter);
+        int controllerAmount = controllerCount.calculate(game, source, this);
         boolean check = false;
         if (controller != null) {
             for (UUID opponentID : game.getOpponents(controller.getId())) {
@@ -100,7 +101,7 @@ class PulseOfTheTangleReturnToHandEffect extends OneShotEffect {
                     FilterCreaturePermanent opponentFilter = new FilterCreaturePermanent();
                     opponentFilter.add(new ControllerIdPredicate(opponentID));
                     PermanentsOnBattlefieldCount opponentCreatureCount = new PermanentsOnBattlefieldCount(opponentFilter);
-                    check = opponentCreatureCount.calculate(game, source, this) > controllerCount.calculate(game, source, this);
+                    check = opponentCreatureCount.calculate(game, source, this) > controllerAmount;
                     if (check) {
                         break;
                     }