From ead0141b5b69b0c83315d226759509cefe003559 Mon Sep 17 00:00:00 2001
From: igoudt <igoudt@bol.com>
Date: Sun, 6 Aug 2017 22:58:20 +0200
Subject: [PATCH] fix spreading seas

---
 .../src/mage/cards/c/ContaminatedGround.java  |  6 ++-
 Mage.Sets/src/mage/cards/e/EvilPresence.java  |  6 ++-
 .../src/mage/cards/l/LingeringMirage.java     |  6 ++-
 Mage.Sets/src/mage/cards/l/LushGrowth.java    |  6 ++-
 Mage.Sets/src/mage/cards/s/SeasClaim.java     |  6 ++-
 Mage.Sets/src/mage/cards/s/SpreadingSeas.java |  6 ++-
 Mage.Sets/src/mage/cards/t/TaintedWell.java   |  6 ++-
 .../BecomesBasicLandEnchantedEffect.java      | 39 ++++++++-----------
 8 files changed, 45 insertions(+), 36 deletions(-)

diff --git a/Mage.Sets/src/mage/cards/c/ContaminatedGround.java b/Mage.Sets/src/mage/cards/c/ContaminatedGround.java
index ccd8555aec..7b7d6f289e 100644
--- a/Mage.Sets/src/mage/cards/c/ContaminatedGround.java
+++ b/Mage.Sets/src/mage/cards/c/ContaminatedGround.java
@@ -27,7 +27,6 @@
  */
 package mage.cards.c;
 
-import java.util.UUID;
 import mage.abilities.Ability;
 import mage.abilities.common.BecomesTappedAttachedTriggeredAbility;
 import mage.abilities.common.SimpleStaticAbility;
@@ -39,10 +38,13 @@ import mage.cards.CardImpl;
 import mage.cards.CardSetInfo;
 import mage.constants.CardType;
 import mage.constants.Outcome;
+import mage.constants.SubType;
 import mage.constants.Zone;
 import mage.target.TargetPermanent;
 import mage.target.common.TargetLandPermanent;
 
+import java.util.UUID;
+
 /**
  * @author Loki
  */
@@ -61,7 +63,7 @@ public class ContaminatedGround extends CardImpl {
         this.addAbility(ability);
 
         // Enchanted land is a Swamp.
-        this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BecomesBasicLandEnchantedEffect("Swamp")));
+        this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BecomesBasicLandEnchantedEffect(SubType.SWAMP)));
 
         // Whenever enchanted land becomes tapped, its controller loses 2 life.
         this.addAbility(new BecomesTappedAttachedTriggeredAbility(new LoseLifeControllerAttachedEffect(2), "enchanted land"));
diff --git a/Mage.Sets/src/mage/cards/e/EvilPresence.java b/Mage.Sets/src/mage/cards/e/EvilPresence.java
index fa7317113b..c707000737 100644
--- a/Mage.Sets/src/mage/cards/e/EvilPresence.java
+++ b/Mage.Sets/src/mage/cards/e/EvilPresence.java
@@ -27,7 +27,6 @@
  */
 package mage.cards.e;
 
-import java.util.UUID;
 import mage.abilities.common.SimpleStaticAbility;
 import mage.abilities.effects.common.AttachEffect;
 import mage.abilities.effects.common.continuous.BecomesBasicLandEnchantedEffect;
@@ -36,10 +35,13 @@ import mage.cards.CardImpl;
 import mage.cards.CardSetInfo;
 import mage.constants.CardType;
 import mage.constants.Outcome;
+import mage.constants.SubType;
 import mage.constants.Zone;
 import mage.target.TargetPermanent;
 import mage.target.common.TargetLandPermanent;
 
+import java.util.UUID;
+
 /**
  *
  * @author North
@@ -57,7 +59,7 @@ public class EvilPresence extends CardImpl {
         this.addAbility(new EnchantAbility(auraTarget.getTargetName()));
 
         // Enchanted land is a Swamp.
-        this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BecomesBasicLandEnchantedEffect("Swamp")));
+        this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BecomesBasicLandEnchantedEffect(SubType.SWAMP)));
     }
 
     public EvilPresence(final EvilPresence card) {
diff --git a/Mage.Sets/src/mage/cards/l/LingeringMirage.java b/Mage.Sets/src/mage/cards/l/LingeringMirage.java
index 5e87bf2d1d..6123b058aa 100644
--- a/Mage.Sets/src/mage/cards/l/LingeringMirage.java
+++ b/Mage.Sets/src/mage/cards/l/LingeringMirage.java
@@ -27,7 +27,6 @@
  */
 package mage.cards.l;
 
-import java.util.UUID;
 import mage.abilities.Ability;
 import mage.abilities.common.SimpleStaticAbility;
 import mage.abilities.costs.mana.ManaCostsImpl;
@@ -39,10 +38,13 @@ import mage.cards.CardImpl;
 import mage.cards.CardSetInfo;
 import mage.constants.CardType;
 import mage.constants.Outcome;
+import mage.constants.SubType;
 import mage.constants.Zone;
 import mage.target.TargetPermanent;
 import mage.target.common.TargetLandPermanent;
 
+import java.util.UUID;
+
 /**
  *
  * @author LevelX2
@@ -61,7 +63,7 @@ public class LingeringMirage extends CardImpl {
         Ability ability = new EnchantAbility(auraTarget.getTargetName());
         this.addAbility(ability);
         // Enchanted land is an Island.
-        this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BecomesBasicLandEnchantedEffect("Island")));
+        this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BecomesBasicLandEnchantedEffect(SubType.ISLAND)));
         // Cycling {2}
         this.addAbility(new CyclingAbility(new ManaCostsImpl("{2}")));
     }
diff --git a/Mage.Sets/src/mage/cards/l/LushGrowth.java b/Mage.Sets/src/mage/cards/l/LushGrowth.java
index 19428f6d23..3cfefb9d16 100644
--- a/Mage.Sets/src/mage/cards/l/LushGrowth.java
+++ b/Mage.Sets/src/mage/cards/l/LushGrowth.java
@@ -27,7 +27,6 @@
  */
 package mage.cards.l;
 
-import java.util.UUID;
 import mage.abilities.common.SimpleStaticAbility;
 import mage.abilities.effects.common.AttachEffect;
 import mage.abilities.effects.common.continuous.BecomesBasicLandEnchantedEffect;
@@ -36,10 +35,13 @@ import mage.cards.CardImpl;
 import mage.cards.CardSetInfo;
 import mage.constants.CardType;
 import mage.constants.Outcome;
+import mage.constants.SubType;
 import mage.constants.Zone;
 import mage.target.TargetPermanent;
 import mage.target.common.TargetLandPermanent;
 
+import java.util.UUID;
+
 /**
  *
  * @author LevelX2
@@ -58,7 +60,7 @@ public class LushGrowth extends CardImpl {
         this.addAbility(new EnchantAbility(auraTarget.getTargetName()));
         
         // Enchanted land is a Mountain, Forest, and Plains.
-        this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BecomesBasicLandEnchantedEffect("Mountain", "Forest", "Plains")));
+        this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BecomesBasicLandEnchantedEffect(SubType.MOUNTAIN, SubType.FOREST, SubType.PLAINS)));
     }
 
     public LushGrowth(final LushGrowth card) {
diff --git a/Mage.Sets/src/mage/cards/s/SeasClaim.java b/Mage.Sets/src/mage/cards/s/SeasClaim.java
index 8467c0d084..c6376262e7 100644
--- a/Mage.Sets/src/mage/cards/s/SeasClaim.java
+++ b/Mage.Sets/src/mage/cards/s/SeasClaim.java
@@ -27,7 +27,6 @@
  */
 package mage.cards.s;
 
-import java.util.UUID;
 import mage.abilities.Ability;
 import mage.abilities.common.SimpleStaticAbility;
 import mage.abilities.effects.common.AttachEffect;
@@ -37,10 +36,13 @@ import mage.cards.CardImpl;
 import mage.cards.CardSetInfo;
 import mage.constants.CardType;
 import mage.constants.Outcome;
+import mage.constants.SubType;
 import mage.constants.Zone;
 import mage.target.TargetPermanent;
 import mage.target.common.TargetLandPermanent;
 
+import java.util.UUID;
+
 /**
  *
  * @author LevelX2
@@ -59,7 +61,7 @@ public class SeasClaim extends CardImpl {
         Ability ability = new EnchantAbility(auraTarget.getTargetName());
         this.addAbility(ability);
         // Enchanted land is an Island.
-        this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BecomesBasicLandEnchantedEffect("Island")));
+        this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BecomesBasicLandEnchantedEffect(SubType.ISLAND)));
     }
 
     public SeasClaim(final SeasClaim card) {
diff --git a/Mage.Sets/src/mage/cards/s/SpreadingSeas.java b/Mage.Sets/src/mage/cards/s/SpreadingSeas.java
index a6dd8c65cf..3088c744c1 100644
--- a/Mage.Sets/src/mage/cards/s/SpreadingSeas.java
+++ b/Mage.Sets/src/mage/cards/s/SpreadingSeas.java
@@ -27,7 +27,6 @@
  */
 package mage.cards.s;
 
-import java.util.UUID;
 import mage.abilities.Ability;
 import mage.abilities.common.EntersBattlefieldTriggeredAbility;
 import mage.abilities.common.SimpleStaticAbility;
@@ -39,10 +38,13 @@ import mage.cards.CardImpl;
 import mage.cards.CardSetInfo;
 import mage.constants.CardType;
 import mage.constants.Outcome;
+import mage.constants.SubType;
 import mage.constants.Zone;
 import mage.target.TargetPermanent;
 import mage.target.common.TargetLandPermanent;
 
+import java.util.UUID;
+
 /**
  *
  * @author BetaSteward_at_googlemail.com
@@ -65,7 +67,7 @@ public class SpreadingSeas extends CardImpl {
         this.addAbility(new EntersBattlefieldTriggeredAbility(new DrawCardSourceControllerEffect(1), false));
 
         // Enchanted land is an Island.
-        this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BecomesBasicLandEnchantedEffect("Island")));
+        this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BecomesBasicLandEnchantedEffect(SubType.ISLAND)));
 
     }
 
diff --git a/Mage.Sets/src/mage/cards/t/TaintedWell.java b/Mage.Sets/src/mage/cards/t/TaintedWell.java
index 273740feb7..cac1aedf92 100644
--- a/Mage.Sets/src/mage/cards/t/TaintedWell.java
+++ b/Mage.Sets/src/mage/cards/t/TaintedWell.java
@@ -27,7 +27,6 @@
  */
 package mage.cards.t;
 
-import java.util.UUID;
 import mage.abilities.Ability;
 import mage.abilities.common.EntersBattlefieldTriggeredAbility;
 import mage.abilities.common.SimpleStaticAbility;
@@ -39,10 +38,13 @@ import mage.cards.CardImpl;
 import mage.cards.CardSetInfo;
 import mage.constants.CardType;
 import mage.constants.Outcome;
+import mage.constants.SubType;
 import mage.constants.Zone;
 import mage.target.TargetPermanent;
 import mage.target.common.TargetLandPermanent;
 
+import java.util.UUID;
+
 /**
  *
  * @author LevelX2
@@ -63,7 +65,7 @@ public class TaintedWell extends CardImpl {
         // When Tainted Well enters the battlefield, draw a card.
         this.addAbility(new EntersBattlefieldTriggeredAbility(new DrawCardSourceControllerEffect(1), false));
         // Enchanted land is a Swamp.
-        this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BecomesBasicLandEnchantedEffect("Swamp")));
+        this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BecomesBasicLandEnchantedEffect(SubType.SWAMP)));
     }
 
     public TaintedWell(final TaintedWell card) {
diff --git a/Mage/src/main/java/mage/abilities/effects/common/continuous/BecomesBasicLandEnchantedEffect.java b/Mage/src/main/java/mage/abilities/effects/common/continuous/BecomesBasicLandEnchantedEffect.java
index 7218444c0f..a8007645ec 100644
--- a/Mage/src/main/java/mage/abilities/effects/common/continuous/BecomesBasicLandEnchantedEffect.java
+++ b/Mage/src/main/java/mage/abilities/effects/common/continuous/BecomesBasicLandEnchantedEffect.java
@@ -30,24 +30,19 @@ package mage.abilities.effects.common.continuous;
 import mage.abilities.Ability;
 import mage.abilities.effects.ContinuousEffectImpl;
 import mage.abilities.mana.*;
-import mage.constants.Duration;
-import mage.constants.Layer;
-import mage.constants.Outcome;
-import mage.constants.SubLayer;
+import mage.constants.*;
 import mage.game.Game;
 import mage.game.permanent.Permanent;
 
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.List;
 
 public class BecomesBasicLandEnchantedEffect extends ContinuousEffectImpl {
 
-    protected final static ArrayList<String> allLandTypes = new ArrayList<>();
+    protected List<SubType> landTypes = new ArrayList<>();
 
-
-    protected ArrayList<String> landTypes = new ArrayList<>();
-
-    public BecomesBasicLandEnchantedEffect(String... landNames) {
+    public BecomesBasicLandEnchantedEffect(SubType... landNames) {
         super(Duration.WhileOnBattlefield, Outcome.Detriment);
         landTypes.addAll(Arrays.asList(landNames));
         this.staticText = setText();
@@ -77,30 +72,30 @@ public class BecomesBasicLandEnchantedEffect extends ContinuousEffectImpl {
                 switch (layer) {
                     case AbilityAddingRemovingEffects_6:
                         permanent.removeAllAbilities(source.getSourceId(), game);
-                        for (String landType : landTypes) {
+                        for (SubType landType : landTypes) {
                             switch (landType) {
-                                case "Swamp":
-                                    if (permanent.getSubtype(game).contains("Swamp")) { // type can be removed by other effect with newer timestamp, so no ability adding
+                                case SWAMP:
+                                    if (permanent.getSubtype(game).contains(SubType.SWAMP)) { // type can be removed by other effect with newer timestamp, so no ability adding
                                         permanent.addAbility(new BlackManaAbility(), source.getSourceId(), game);
                                     }
                                     break;
-                                case "Mountain":
-                                    if (permanent.getSubtype(game).contains("Mountain")) {
+                                case MOUNTAIN:
+                                    if (permanent.getSubtype(game).contains(SubType.MOUNTAIN)) {
                                         permanent.addAbility(new RedManaAbility(), source.getSourceId(), game);
                                     }
                                     break;
-                                case "Forest":
-                                    if (permanent.getSubtype(game).contains("Forest")) {
+                                case FOREST:
+                                    if (permanent.getSubtype(game).contains(SubType.FOREST)) {
                                         permanent.addAbility(new GreenManaAbility(), source.getSourceId(), game);
                                     }
                                     break;
-                                case "Island":
-                                    if (permanent.getSubtype(game).contains("Island")) {
+                                case ISLAND:
+                                    if (permanent.getSubtype(game).contains(SubType.ISLAND)) {
                                         permanent.addAbility(new BlueManaAbility(), source.getSourceId(), game);
                                     }
                                     break;
-                                case "Plains":
-                                    if (permanent.getSubtype(game).contains("Plains")) {
+                                case PLAINS:
+                                    if (permanent.getSubtype(game).contains(SubType.PLAINS)) {
                                         permanent.addAbility(new WhiteManaAbility(), source.getSourceId(), game);
                                     }
                                     break;
@@ -109,7 +104,7 @@ public class BecomesBasicLandEnchantedEffect extends ContinuousEffectImpl {
                         break;
                     case TypeChangingEffects_4:
                         // subtypes are all removed by changing the subtype to a land type.
-                        permanent.getSubtype(game).removeAll(allLandTypes);
+                        permanent.getSubtype(game).removeAll(SubType.getLandTypes(false));
                         permanent.getSubtype(game).addAll(landTypes);
                         break;
                 }
@@ -127,7 +122,7 @@ public class BecomesBasicLandEnchantedEffect extends ContinuousEffectImpl {
     private String setText() {
         StringBuilder sb = new StringBuilder("Enchanted land is a ");
         int i = 1;
-        for (String landType : landTypes) {
+        for (SubType landType : landTypes) {
             if (i > 1) {
                 if (i == landTypes.size()) {
                     sb.append(" and ");