From ed512d3a1dbd52b53a34c9402a85054540c9e4ea Mon Sep 17 00:00:00 2001
From: spjspj <spjspj4@gmail.com>
Date: Wed, 12 Jul 2017 12:40:14 +1000
Subject: [PATCH] Implement Memory Crystal (EXO)

---
 .../abilities/keyword/BuybackAbility.java     | 19 +++++++++++--------
 1 file changed, 11 insertions(+), 8 deletions(-)

diff --git a/Mage/src/main/java/mage/abilities/keyword/BuybackAbility.java b/Mage/src/main/java/mage/abilities/keyword/BuybackAbility.java
index 4f3550804e..4acdd64bbf 100644
--- a/Mage/src/main/java/mage/abilities/keyword/BuybackAbility.java
+++ b/Mage/src/main/java/mage/abilities/keyword/BuybackAbility.java
@@ -28,7 +28,6 @@
 package mage.abilities.keyword;
 
 import java.util.Iterator;
-import java.util.List;
 import mage.abilities.Ability;
 import mage.abilities.SpellAbility;
 import mage.abilities.StaticAbility;
@@ -38,7 +37,6 @@ import mage.abilities.costs.OptionalAdditionalCost;
 import mage.abilities.costs.OptionalAdditionalCostImpl;
 import mage.abilities.costs.OptionalAdditionalSourceCosts;
 import mage.abilities.costs.mana.GenericManaCost;
-import mage.abilities.costs.mana.ManaCost;
 import mage.abilities.costs.mana.ManaCostsImpl;
 import mage.abilities.effects.ReplacementEffectImpl;
 import mage.cards.Card;
@@ -98,8 +96,8 @@ public class BuybackAbility extends StaticAbility implements OptionalAdditionalS
         if (buybackCost != null) {
             ((Costs) buybackCost).add(cost);
         }
-    }    
-    
+    }
+
     public void resetReduceCost() {
         amountToReduceBy = 0;
     }
@@ -107,24 +105,29 @@ public class BuybackAbility extends StaticAbility implements OptionalAdditionalS
     // Called by Memory Crystal to reduce mana costs.
     public int reduceCost(int genericManaToReduce) {
         int amountToReduce = genericManaToReduce;
+        boolean foundCostToReduce = false;
         if (buybackCost != null) {
             for (Object cost : ((Costs) buybackCost)) {
-                if (cost instanceof ManaCostsImpl) {                                        
+                if (cost instanceof ManaCostsImpl) {
                     for (Object c : (ManaCostsImpl) cost) {
-                        if (c instanceof GenericManaCost) {                            
+                        if (c instanceof GenericManaCost) {
                             int newCostCMC = ((GenericManaCost) c).convertedManaCost() - amountToReduceBy - genericManaToReduce;
+                            foundCostToReduce = true;
                             if (newCostCMC > 0) {
                                 amountToReduceBy += genericManaToReduce;
                             } else {
                                 amountToReduce = ((GenericManaCost) c).convertedManaCost() - amountToReduceBy;
                                 amountToReduceBy = ((GenericManaCost) c).convertedManaCost();
-                            }             
+                            }
                         }
                     }
                 }
             }
         }
-        return amountToReduce;
+        if (foundCostToReduce) {
+            return amountToReduce;
+        }
+        return 0;
     }
 
     @Override