diff --git a/Mage.Sets/src/mage/cards/c/CultivatorDrone.java b/Mage.Sets/src/mage/cards/c/CultivatorDrone.java index 568d13f0ea7..a05b89470a3 100644 --- a/Mage.Sets/src/mage/cards/c/CultivatorDrone.java +++ b/Mage.Sets/src/mage/cards/c/CultivatorDrone.java @@ -118,7 +118,7 @@ class CultivatorDroneManaCondition extends ManaCondition implements Condition { } } if (costToPay instanceof ManaCost) { - return ((ManaCost) costToPay).getText().contains(SubType.{C}); + return ((ManaCost) costToPay).getText().contains("{C}"); } return false; } diff --git a/Mage.Sets/src/mage/cards/g/GaddockTeeg.java b/Mage.Sets/src/mage/cards/g/GaddockTeeg.java index 2e3cc80183e..5aeb4527399 100644 --- a/Mage.Sets/src/mage/cards/g/GaddockTeeg.java +++ b/Mage.Sets/src/mage/cards/g/GaddockTeeg.java @@ -136,7 +136,7 @@ class GaddockTeegReplacementEffectX extends ContinuousRuleModifyingEffectImpl { @Override public boolean applies(GameEvent event, Ability source, Game game) { Card card = game.getCard(event.getSourceId()); - if (card != null && !card.isCreature() && card.getManaCost().getText().contains(SubType.X)) { + if (card != null && !card.isCreature() && card.getManaCost().getText().contains("X")) { return true; } return false; diff --git a/Mage.Sets/src/mage/cards/h/HavenOfTheSpiritDragon.java b/Mage.Sets/src/mage/cards/h/HavenOfTheSpiritDragon.java index b11cdc5e74a..b0c11712659 100644 --- a/Mage.Sets/src/mage/cards/h/HavenOfTheSpiritDragon.java +++ b/Mage.Sets/src/mage/cards/h/HavenOfTheSpiritDragon.java @@ -158,7 +158,7 @@ class UginPlaneswalkerCardPredicate implements Predicate { @Override public boolean apply(Card input, Game game) { return input.isPlaneswalker() - && input.getName().contains(SubType.UGIN, THE SPIRIT DRAGON); + && input.getSubtype(game).contains(SubType.UGIN); } @Override diff --git a/Mage.Sets/src/mage/cards/r/RiptideShapeshifter.java b/Mage.Sets/src/mage/cards/r/RiptideShapeshifter.java index 3c93d9b7e5f..7628920a92c 100644 --- a/Mage.Sets/src/mage/cards/r/RiptideShapeshifter.java +++ b/Mage.Sets/src/mage/cards/r/RiptideShapeshifter.java @@ -53,7 +53,7 @@ import java.util.UUID; public class RiptideShapeshifter extends CardImpl { public RiptideShapeshifter(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}{U}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}{U}"); this.subtype.add(SubType.SHAPESHIFTER); this.power = new MageInt(3); @@ -105,7 +105,7 @@ class RiptideShapeshifterEffect extends OneShotEffect { Cards revealedCards = new CardsImpl(); while (controller.getLibrary().hasCards()) { Card card = controller.getLibrary().removeFromTop(game); - if (card.isCreature() && card.getSubtype(game).contains(choice.getChoice())) { + if (card.isCreature() && card.getSubtype(game).contains(SubType.byDescription(choice.getChoice()))) { controller.moveCards(card, Zone.BATTLEFIELD, source, game); break; } diff --git a/Mage.Sets/src/mage/cards/r/RosheenMeanderer.java b/Mage.Sets/src/mage/cards/r/RosheenMeanderer.java index 4eb01cbf132..42989c8f5a9 100644 --- a/Mage.Sets/src/mage/cards/r/RosheenMeanderer.java +++ b/Mage.Sets/src/mage/cards/r/RosheenMeanderer.java @@ -106,10 +106,10 @@ class RosheenMeandererManaCondition implements Condition { if (AbilityType.SPELL == source.getAbilityType()) { MageObject object = game.getObject(source.getSourceId()); return object != null - && object.getManaCost().getText().contains(SubType.X); + && object.getManaCost().getText().contains("X"); } else { - return source.getManaCosts().getText().contains(SubType.X); + return source.getManaCosts().getText().contains("X"); } } } diff --git a/Mage.Sets/src/mage/cards/t/Tallowisp.java b/Mage.Sets/src/mage/cards/t/Tallowisp.java index 657262e079b..497400e4175 100644 --- a/Mage.Sets/src/mage/cards/t/Tallowisp.java +++ b/Mage.Sets/src/mage/cards/t/Tallowisp.java @@ -93,7 +93,7 @@ class TallowispAbilityPredicate implements Predicate { for (int i = 0; i < abilities.size(); i++) { if (abilities.get(i) instanceof EnchantAbility) { String enchantText = abilities.get(i).getRule(); - if (enchantText.startsWith(SubType.ENCHANT) && enchantText.contains(creature)) { + if (enchantText.startsWith("Enchant") && enchantText.contains("creature")) { return true; } } diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/abilities/keywords/CrewTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/abilities/keywords/CrewTest.java index df510eb1269..8c7f7b8bd59 100644 --- a/Mage.Tests/src/test/java/org/mage/test/cards/abilities/keywords/CrewTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/cards/abilities/keywords/CrewTest.java @@ -30,6 +30,7 @@ package org.mage.test.cards.abilities.keywords; import mage.abilities.keyword.HasteAbility; import mage.constants.CardType; import mage.constants.PhaseStep; +import mage.constants.SubType; import mage.constants.Zone; import org.junit.Test; import org.mage.test.serverside.base.CardTestPlayerBase; @@ -57,7 +58,7 @@ public class CrewTest extends CardTestPlayerBase { assertTappedCount("Silvercoat Lion", true, 2); assertPowerToughness(playerA, "Cultivator's Caravan", 5, 5); - assertType("Cultivator's Caravan", CardType.CREATURE, "Vehicle"); + assertType("Cultivator's Caravan", CardType.CREATURE, SubType.VEHICLE); } @Test @@ -78,7 +79,7 @@ public class CrewTest extends CardTestPlayerBase { assertTappedCount("Speedway Fanatic", true, 1); assertPowerToughness(playerA, "Smuggler's Copter", 3, 3); assertAbility(playerA, "Smuggler's Copter", HasteAbility.getInstance(), true); - assertType("Smuggler's Copter", CardType.CREATURE, "Vehicle"); + assertType("Smuggler's Copter", CardType.CREATURE, SubType.VEHICLE); } @Test diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/continuous/BecomesCreatureTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/continuous/BecomesCreatureTest.java index 7fdf646142c..8038507fdbc 100644 --- a/Mage.Tests/src/test/java/org/mage/test/cards/continuous/BecomesCreatureTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/cards/continuous/BecomesCreatureTest.java @@ -29,6 +29,7 @@ package org.mage.test.cards.continuous; import mage.constants.CardType; import mage.constants.PhaseStep; +import mage.constants.SubType; import mage.constants.Zone; import org.junit.Assert; import org.junit.Test; @@ -57,7 +58,7 @@ public class BecomesCreatureTest extends CardTestPlayerBase { assertPermanentCount(playerA, "Chimeric Mass", 1); assertPowerToughness(playerA, "Chimeric Mass", 3, 3); - assertType("Chimeric Mass", CardType.CREATURE, "Construct"); + assertType("Chimeric Mass", CardType.CREATURE, SubType.CONSTRUCT); } diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/continuous/DaxosTheReturnedTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/continuous/DaxosTheReturnedTest.java index 39509238211..f3e52785b43 100644 --- a/Mage.Tests/src/test/java/org/mage/test/cards/continuous/DaxosTheReturnedTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/cards/continuous/DaxosTheReturnedTest.java @@ -29,6 +29,7 @@ package org.mage.test.cards.continuous; import mage.constants.CardType; import mage.constants.PhaseStep; +import mage.constants.SubType; import mage.constants.Zone; import mage.counters.CounterType; import mage.filter.Filter; @@ -69,7 +70,7 @@ public class DaxosTheReturnedTest extends CardTestPlayerBase { assertPermanentCount(playerA, "Underworld Dreams", 2); assertCounterCount(playerA, CounterType.EXPERIENCE, 2); assertPowerToughness(playerA, "Spirit", 2, 2, Filter.ComparisonScope.All); - assertType("Spirit", CardType.ENCHANTMENT, "Spirit"); + assertType("Spirit", CardType.ENCHANTMENT, SubType.SPIRIT); } diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/continuous/LandTypeChangingEffectsTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/continuous/LandTypeChangingEffectsTest.java index c2cd947b486..a973ff839ba 100644 --- a/Mage.Tests/src/test/java/org/mage/test/cards/continuous/LandTypeChangingEffectsTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/cards/continuous/LandTypeChangingEffectsTest.java @@ -74,7 +74,7 @@ public class LandTypeChangingEffectsTest extends CardTestPlayerBase { assertPermanentCount(playerB, "Chromatic Lantern", 1); - assertType("Canopy Vista", CardType.LAND, "Mountain"); + assertType("Canopy Vista", CardType.LAND, SubType.MOUNTAIN); assertAbility(playerB, "Canopy Vista", new AnyColorManaAbility(), true); } @@ -99,7 +99,7 @@ public class LandTypeChangingEffectsTest extends CardTestPlayerBase { assertPermanentCount(playerB, "Chromatic Lantern", 1); assertPermanentCount(playerA, "Magus of the Moon", 1); - assertType("Canopy Vista", CardType.LAND, "Mountain"); + assertType("Canopy Vista", CardType.LAND, SubType.MOUNTAIN); assertAbility(playerB, "Canopy Vista", new AnyColorManaAbility(), true); } @@ -131,7 +131,7 @@ public class LandTypeChangingEffectsTest extends CardTestPlayerBase { assertPermanentCount(playerB, "Forbidding Watchtower", 1); assertCounterCount("Forbidding Watchtower", CounterType.FLOOD, 1); - assertType("Forbidding Watchtower", CardType.LAND, "Island"); + assertType("Forbidding Watchtower", CardType.LAND, SubType.ISLAND); assertPowerToughness(playerB, "Forbidding Watchtower", 1, 5); } @@ -164,11 +164,11 @@ public class LandTypeChangingEffectsTest extends CardTestPlayerBase { assertPermanentCount(playerA, bloodmoon, 1); assertPermanentCount(playerA, urborgtoy, 1); - assertType(canopyvista, CardType.LAND, "Mountain"); - assertNotSubtype(canopyvista, "Island"); - assertNotSubtype(canopyvista, "Swamp"); - assertType(urborgtoy, CardType.LAND, "Mountain"); - assertNotSubtype(urborgtoy, "Swamp"); + assertType(canopyvista, CardType.LAND, SubType.MOUNTAIN); + assertNotSubtype(canopyvista, SubType.ISLAND); + assertNotSubtype(canopyvista, SubType.SWAMP); + assertType(urborgtoy, CardType.LAND, SubType.MOUNTAIN); + assertNotSubtype(urborgtoy, SubType.SWAMP); Assert.assertTrue("The mana the land can produce should be [{R}] but it's " + playerB.getManaAvailable(currentGame).toString(), playerB.getManaAvailable(currentGame).toString().equals("[{R}]")); } @@ -197,11 +197,11 @@ public class LandTypeChangingEffectsTest extends CardTestPlayerBase { assertPermanentCount(playerA, bloodmoon, 1); assertPermanentCount(playerA, urborgtoy, 1); - assertType(canopyvista, CardType.LAND, "Mountain"); - assertNotSubtype(canopyvista, "Island"); - assertNotSubtype(canopyvista, "Swamp"); - assertType(urborgtoy, CardType.LAND, "Mountain"); - assertNotSubtype(urborgtoy, "Swamp"); + assertType(canopyvista, CardType.LAND, SubType.MOUNTAIN); + assertNotSubtype(canopyvista, SubType.ISLAND); + assertNotSubtype(canopyvista, SubType.SWAMP); + assertType(urborgtoy, CardType.LAND, SubType.MOUNTAIN); + assertNotSubtype(urborgtoy, SubType.SWAMP); Assert.assertTrue("The mana the land can produce should be [{R}] but it's " + playerB.getManaAvailable(currentGame).toString(), playerB.getManaAvailable(currentGame).toString().equals("[{R}]")); } diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/continuous/LayerTests.java b/Mage.Tests/src/test/java/org/mage/test/cards/continuous/LayerTests.java index 8de5dce172a..c5e0c22786d 100644 --- a/Mage.Tests/src/test/java/org/mage/test/cards/continuous/LayerTests.java +++ b/Mage.Tests/src/test/java/org/mage/test/cards/continuous/LayerTests.java @@ -30,6 +30,7 @@ package org.mage.test.cards.continuous; import mage.constants.CardType; import mage.constants.PhaseStep; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.Filter; import org.junit.Ignore; @@ -53,10 +54,10 @@ public class LayerTests extends CardTestPlayerBase { setStopAt(1, PhaseStep.POSTCOMBAT_MAIN); execute(); - assertType("Urborg, Tomb of Yawgmoth", CardType.LAND, "Mountain"); // Urborg is a Mountain now + assertType("Urborg, Tomb of Yawgmoth", CardType.LAND, SubType.MOUNTAIN); // Urborg is a Mountain now assertPermanentCount(playerA, "Swamp", 0); // no Swamp subtypes on the battlefield assertPermanentCount(playerA, "Plains", 1); // the Plains is not affected by the Urborg - assertType("Plains", CardType.LAND, "Plains"); + assertType("Plains", CardType.LAND, SubType.PLAINS); } @@ -111,7 +112,7 @@ public class LayerTests extends CardTestPlayerBase { setStopAt(1, PhaseStep.POSTCOMBAT_MAIN); execute(); - assertType("Urborg, Tomb of Yawgmoth", CardType.CREATURE, "Swamp"); // Urborg is a creature + assertType("Urborg, Tomb of Yawgmoth", CardType.CREATURE, SubType.SWAMP); // Urborg is a creature assertPowerToughness(playerA, "Urborg, Tomb of Yawgmoth", 0, 1); // Urborg is a 0/1 creature } diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/continuous/WardenOfTheFirstTreeTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/continuous/WardenOfTheFirstTreeTest.java index fcd088bd569..edd60a8a74f 100644 --- a/Mage.Tests/src/test/java/org/mage/test/cards/continuous/WardenOfTheFirstTreeTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/cards/continuous/WardenOfTheFirstTreeTest.java @@ -31,6 +31,7 @@ import mage.abilities.keyword.LifelinkAbility; import mage.abilities.keyword.TrampleAbility; import mage.constants.CardType; import mage.constants.PhaseStep; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.Filter; import org.junit.Test; @@ -58,8 +59,8 @@ public class WardenOfTheFirstTreeTest extends CardTestPlayerBase { execute(); assertPowerToughness(playerA, "Warden of the First Tree", 3, 3, Filter.ComparisonScope.Any); - assertType("Warden of the First Tree", CardType.CREATURE, "Human"); - assertType("Warden of the First Tree", CardType.CREATURE, "Warrior"); + assertType("Warden of the First Tree", CardType.CREATURE, SubType.HUMAN); + assertType("Warden of the First Tree", CardType.CREATURE, SubType.WARRIOR); assertAbility(playerA, "Warden of the First Tree", TrampleAbility.getInstance(), false); assertAbility(playerA, "Warden of the First Tree", LifelinkAbility.getInstance(), false); } @@ -81,9 +82,9 @@ public class WardenOfTheFirstTreeTest extends CardTestPlayerBase { execute(); assertPowerToughness(playerA, "Warden of the First Tree", 3, 3, Filter.ComparisonScope.Any); - assertType("Warden of the First Tree", CardType.CREATURE, "Human"); - assertType("Warden of the First Tree", CardType.CREATURE, "Spirit"); - assertType("Warden of the First Tree", CardType.CREATURE, "Warrior"); + assertType("Warden of the First Tree", CardType.CREATURE, SubType.HUMAN); + assertType("Warden of the First Tree", CardType.CREATURE, SubType.SPIRIT); + assertType("Warden of the First Tree", CardType.CREATURE, SubType.WARRIOR); assertAbility(playerA, "Warden of the First Tree", TrampleAbility.getInstance(), true); assertAbility(playerA, "Warden of the First Tree", LifelinkAbility.getInstance(), true); } @@ -107,9 +108,9 @@ public class WardenOfTheFirstTreeTest extends CardTestPlayerBase { execute(); assertPowerToughness(playerA, "Warden of the First Tree", 8, 8, Filter.ComparisonScope.Any); - assertType("Warden of the First Tree", CardType.CREATURE, "Human"); - assertType("Warden of the First Tree", CardType.CREATURE, "Spirit"); - assertType("Warden of the First Tree", CardType.CREATURE, "Warrior"); + assertType("Warden of the First Tree", CardType.CREATURE, SubType.HUMAN); + assertType("Warden of the First Tree", CardType.CREATURE, SubType.SPIRIT); + assertType("Warden of the First Tree", CardType.CREATURE, SubType.WARRIOR); assertAbility(playerA, "Warden of the First Tree", TrampleAbility.getInstance(), true); assertAbility(playerA, "Warden of the First Tree", LifelinkAbility.getInstance(), true); } diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/enchantments/AnimateArtifactTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/enchantments/AnimateArtifactTest.java index b1a03370041..3bfe0a9d208 100644 --- a/Mage.Tests/src/test/java/org/mage/test/cards/enchantments/AnimateArtifactTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/cards/enchantments/AnimateArtifactTest.java @@ -29,6 +29,7 @@ package org.mage.test.cards.enchantments; import mage.constants.CardType; import mage.constants.PhaseStep; +import mage.constants.SubType; import mage.constants.Zone; import org.junit.Test; import org.mage.test.serverside.base.CardTestPlayerBase; @@ -79,7 +80,7 @@ public class AnimateArtifactTest extends CardTestPlayerBase { assertPermanentCount(playerA, "Juggernaut", 1); assertPermanentCount(playerA, "Animate Artifact", 1); - assertType("Juggernaut", CardType.CREATURE, "Juggernaut"); + assertType("Juggernaut", CardType.CREATURE, SubType.JUGGERNAUT); assertPowerToughness(playerA, "Juggernaut", 5, 3); } diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/enchantments/SpreadingSeasTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/enchantments/SpreadingSeasTest.java index 9711860d238..c44ce2e37d3 100644 --- a/Mage.Tests/src/test/java/org/mage/test/cards/enchantments/SpreadingSeasTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/cards/enchantments/SpreadingSeasTest.java @@ -28,6 +28,7 @@ package org.mage.test.cards.enchantments; import mage.constants.PhaseStep; +import mage.constants.SubType; import mage.constants.Zone; import org.junit.Test; import org.mage.test.serverside.base.CardTestPlayerBase; @@ -95,7 +96,7 @@ public class SpreadingSeasTest extends CardTestPlayerBase { castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Spreading Seas", "Forest"); setStopAt(1, PhaseStep.POSTCOMBAT_MAIN); execute(); - assertNotSubtype("Forest", "Forest"); + assertNotSubtype("Forest", SubType.FOREST); } @@ -107,7 +108,7 @@ public class SpreadingSeasTest extends CardTestPlayerBase { castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Spreading Seas", "Urza's Tower"); setStopAt(1, PhaseStep.POSTCOMBAT_MAIN); execute(); - assertNotSubtype("Urza's Tower", "Urza's"); - assertNotSubtype("Urza's Tower", "Tower"); + assertNotSubtype("Urza's Tower", SubType.URZAS); + assertNotSubtype("Urza's Tower", SubType.TOWER); } } diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/planeswalker/LilianaTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/planeswalker/LilianaTest.java index bc1e5de6a20..62fc6ce811b 100644 --- a/Mage.Tests/src/test/java/org/mage/test/cards/planeswalker/LilianaTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/cards/planeswalker/LilianaTest.java @@ -2,6 +2,7 @@ package org.mage.test.cards.planeswalker; import mage.constants.CardType; import mage.constants.PhaseStep; +import mage.constants.SubType; import mage.constants.Zone; import mage.counters.CounterType; import org.junit.Test; @@ -61,8 +62,8 @@ public class LilianaTest extends CardTestPlayerBase { assertPermanentCount(playerA, wShepherd, 1); assertPermanentCount(playerB, yOx, 1); assertCounterCount(playerA, liliannaDM, CounterType.LOYALTY, 2); - assertType(wShepherd, CardType.CREATURE, "Zombie"); // should have subtype zombie on top of angel type - assertType(wShepherd, CardType.CREATURE, "Angel"); + assertType(wShepherd, CardType.CREATURE, SubType.ZOMBIE); // should have subtype zombie on top of angel type + assertType(wShepherd, CardType.CREATURE, SubType.ANGEL); assertTapped(yOx, true); } } diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/single/WardenOfTheWallTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/single/WardenOfTheWallTest.java index 7551df63381..33a4947a5bc 100644 --- a/Mage.Tests/src/test/java/org/mage/test/cards/single/WardenOfTheWallTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/cards/single/WardenOfTheWallTest.java @@ -2,6 +2,7 @@ package org.mage.test.cards.single; import mage.constants.CardType; import mage.constants.PhaseStep; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.Filter; import org.junit.Test; @@ -42,7 +43,7 @@ public class WardenOfTheWallTest extends CardTestPlayerBase { assertLife(playerA, 20); assertLife(playerB, 20); assertPowerToughness(playerA, "Warden of the Wall", 2, 3, Filter.ComparisonScope.All); - assertType("Warden of the Wall", CardType.CREATURE, "Gargoyle"); + assertType("Warden of the Wall", CardType.CREATURE, SubType.GARGOYLE); } } diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/single/emn/SoulSeparatorTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/single/emn/SoulSeparatorTest.java index 8d48a5c9755..02eb4769fa5 100644 --- a/Mage.Tests/src/test/java/org/mage/test/cards/single/emn/SoulSeparatorTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/cards/single/emn/SoulSeparatorTest.java @@ -41,7 +41,7 @@ public class SoulSeparatorTest extends CardTestPlayerBase { Permanent saToken = getPermanent("Sylvan Advocate", playerA); Assert.assertTrue(saToken.getAbilities().contains(FlyingAbility.getInstance())); - Assert.assertTrue(saToken.getSubtype(currentGame).contains("Spirit")); + Assert.assertTrue(saToken.getSubtype(currentGame).contains(SubType.SPIRIT)); Assert.assertTrue(saToken.getAbilities().contains(VigilanceAbility.getInstance())); assertPowerToughness(playerA, "Sylvan Advocate", 1, 1); } diff --git a/Mage.Tests/src/test/java/org/mage/test/serverside/base/impl/CardTestPlayerAPIImpl.java b/Mage.Tests/src/test/java/org/mage/test/serverside/base/impl/CardTestPlayerAPIImpl.java index 026a5052fce..fcf5b769b0e 100644 --- a/Mage.Tests/src/test/java/org/mage/test/serverside/base/impl/CardTestPlayerAPIImpl.java +++ b/Mage.Tests/src/test/java/org/mage/test/serverside/base/impl/CardTestPlayerAPIImpl.java @@ -700,11 +700,11 @@ public abstract class CardTestPlayerAPIImpl extends MageTestPlayerBase implement * @param type A type to test for * @param subType a subtype to test for */ - public void assertType(String cardName, CardType type, String subType) throws AssertionError { + public void assertType(String cardName, CardType type, SubType subType) throws AssertionError { Permanent found = getPermanent(cardName); Assert.assertTrue("(Battlefield) card type not found (" + cardName + ':' + type + ')', found.getCardType().contains(type)); if (subType != null) { - Assert.assertTrue("(Battlefield) card sub-type not equal (" + cardName + ':' + subType + ')', found.getSubtype(currentGame).contains(subType)); + Assert.assertTrue("(Battlefield) card sub-type not equal (" + cardName + ':' + subType.getDescription() + ')', found.getSubtype(currentGame).contains(subType)); } } @@ -725,10 +725,10 @@ public abstract class CardTestPlayerAPIImpl extends MageTestPlayerBase implement * @param cardName Name of the permanent that should be checked. * @param subType a subtype to test for */ - public void assertNotSubtype(String cardName, String subType) throws AssertionError { + public void assertNotSubtype(String cardName, SubType subType) throws AssertionError { Permanent found = getPermanent(cardName); if (subType != null) { - Assert.assertFalse("(Battlefield) card sub-type equal (" + cardName + ':' + subType + ')', found.getSubtype(currentGame).contains(subType)); + Assert.assertFalse("(Battlefield) card sub-type equal (" + cardName + ':' + subType.getDescription() + ')', found.getSubtype(currentGame).contains(subType)); } } diff --git a/Mage/src/main/java/mage/abilities/common/AuraAttachedTriggeredAbility.java b/Mage/src/main/java/mage/abilities/common/AuraAttachedTriggeredAbility.java index 4ab0f259efe..375aa2ccda6 100644 --- a/Mage/src/main/java/mage/abilities/common/AuraAttachedTriggeredAbility.java +++ b/Mage/src/main/java/mage/abilities/common/AuraAttachedTriggeredAbility.java @@ -29,6 +29,7 @@ package mage.abilities.common; import mage.abilities.TriggeredAbilityImpl; import mage.abilities.effects.Effect; +import mage.constants.SubType; import mage.constants.Zone; import mage.game.Game; import mage.game.events.GameEvent; @@ -57,7 +58,7 @@ public class AuraAttachedTriggeredAbility extends TriggeredAbilityImpl { public boolean checkTrigger(GameEvent event, Game game) { if (event.getTargetId().equals(this.getSourceId())) { Permanent attachment = game.getPermanent(event.getSourceId()); - if (attachment != null && attachment.getSubtype(game).contains("Aura")) { + if (attachment != null && attachment.getSubtype(game).contains(SubType.AURA)) { return true; } } diff --git a/Mage/src/main/java/mage/abilities/condition/common/EquippedMultipleSourceCondition.java b/Mage/src/main/java/mage/abilities/condition/common/EquippedMultipleSourceCondition.java index 35249427434..5cf42544ead 100644 --- a/Mage/src/main/java/mage/abilities/condition/common/EquippedMultipleSourceCondition.java +++ b/Mage/src/main/java/mage/abilities/condition/common/EquippedMultipleSourceCondition.java @@ -33,6 +33,7 @@ import mage.game.Game; import mage.game.permanent.Permanent; import java.util.UUID; +import mage.constants.SubType; /** * Describes condition when creature is equipped with more than one Equipment. @@ -50,7 +51,7 @@ public enum EquippedMultipleSourceCondition implements Condition { if (permanent != null) { for (UUID uuid : permanent.getAttachments()) { Permanent attached = game.getBattlefield().getPermanent(uuid); - if (attached != null && attached.getSubtype(game).contains("Equipment")) { + if (attached != null && attached.getSubtype(game).contains(SubType.EQUIPMENT)) { countEquipped++; if (countEquipped >= 2) { return true; diff --git a/Mage/src/main/java/mage/abilities/condition/common/EquippedSourceCondition.java b/Mage/src/main/java/mage/abilities/condition/common/EquippedSourceCondition.java index 90d079d1b89..645ade621c8 100644 --- a/Mage/src/main/java/mage/abilities/condition/common/EquippedSourceCondition.java +++ b/Mage/src/main/java/mage/abilities/condition/common/EquippedSourceCondition.java @@ -33,6 +33,7 @@ import mage.game.Game; import mage.game.permanent.Permanent; import java.util.UUID; +import mage.constants.SubType; /** * Describes condition when creature is equipped. @@ -49,7 +50,7 @@ public enum EquippedSourceCondition implements Condition { if (permanent != null) { for (UUID uuid : permanent.getAttachments()) { Permanent attached = game.getBattlefield().getPermanent(uuid); - if (attached != null && attached.getSubtype(game).contains("Equipment")) { + if (attached != null && attached.getSubtype(game).contains(SubType.EQUIPMENT)) { return true; } } diff --git a/Mage/src/main/java/mage/abilities/dynamicvalue/common/AuraAttachedCount.java b/Mage/src/main/java/mage/abilities/dynamicvalue/common/AuraAttachedCount.java index 0f6daf25624..2bf48de780f 100644 --- a/Mage/src/main/java/mage/abilities/dynamicvalue/common/AuraAttachedCount.java +++ b/Mage/src/main/java/mage/abilities/dynamicvalue/common/AuraAttachedCount.java @@ -32,6 +32,7 @@ import java.util.UUID; import mage.abilities.Ability; import mage.abilities.dynamicvalue.DynamicValue; import mage.abilities.effects.Effect; +import mage.constants.SubType; import mage.game.Game; import mage.game.permanent.Permanent; @@ -63,7 +64,7 @@ public class AuraAttachedCount implements DynamicValue { List attachments = p.getAttachments(); for (UUID attachmentId : attachments) { Permanent attached = game.getPermanent(attachmentId); - if (attached != null && attached.getSubtype(game).contains("Aura")) { + if (attached != null && attached.getSubtype(game).contains(SubType.AURA)) { count++; } } diff --git a/Mage/src/main/java/mage/abilities/dynamicvalue/common/DomainValue.java b/Mage/src/main/java/mage/abilities/dynamicvalue/common/DomainValue.java index 22b789deecb..d6ae575e810 100644 --- a/Mage/src/main/java/mage/abilities/dynamicvalue/common/DomainValue.java +++ b/Mage/src/main/java/mage/abilities/dynamicvalue/common/DomainValue.java @@ -5,6 +5,7 @@ import mage.abilities.Ability; import mage.abilities.dynamicvalue.DynamicValue; import mage.abilities.effects.Effect; import mage.constants.CardType; +import mage.constants.SubType; import mage.game.Game; import mage.game.permanent.Permanent; @@ -62,19 +63,19 @@ public class DomainValue implements DynamicValue { } for (Permanent p : game.getBattlefield().getAllActivePermanents(targetPlayer)) { if (p.isLand()) { - if (havePlains == 0 && p.getSubtype(game).contains("Plains")) { + if (havePlains == 0 && p.getSubtype(game).contains(SubType.PLAINS)) { havePlains = 1; } - if (haveIslands == 0 && p.getSubtype(game).contains("Island")) { + if (haveIslands == 0 && p.getSubtype(game).contains(SubType.ISLAND)) { haveIslands = 1; } - if (haveMountains == 0 && p.getSubtype(game).contains("Mountain")) { + if (haveMountains == 0 && p.getSubtype(game).contains(SubType.MOUNTAIN)) { haveMountains = 1; } - if (haveSwamps == 0 && p.getSubtype(game).contains("Swamp")) { + if (haveSwamps == 0 && p.getSubtype(game).contains(SubType.SWAMP)) { haveSwamps = 1; } - if (haveForests == 0 && p.getSubtype(game).contains("Forest")) { + if (haveForests == 0 && p.getSubtype(game).contains(SubType.FOREST)) { haveForests = 1; } } diff --git a/Mage/src/main/java/mage/abilities/dynamicvalue/common/EquipmentAttachedCount.java b/Mage/src/main/java/mage/abilities/dynamicvalue/common/EquipmentAttachedCount.java index c7881cdc35e..d9c75166377 100644 --- a/Mage/src/main/java/mage/abilities/dynamicvalue/common/EquipmentAttachedCount.java +++ b/Mage/src/main/java/mage/abilities/dynamicvalue/common/EquipmentAttachedCount.java @@ -32,6 +32,7 @@ import java.util.UUID; import mage.abilities.Ability; import mage.abilities.dynamicvalue.DynamicValue; import mage.abilities.effects.Effect; +import mage.constants.SubType; import mage.game.Game; import mage.game.permanent.Permanent; @@ -63,7 +64,7 @@ public class EquipmentAttachedCount implements DynamicValue { List attachments = permanent.getAttachments(); for (UUID attachmentId : attachments) { Permanent attached = game.getPermanent(attachmentId); - if (attached != null && attached.getSubtype(game).contains("Equipment")) { + if (attached != null && attached.getSubtype(game).contains(SubType.EQUIPMENT)) { count++; } } diff --git a/Mage/src/main/java/mage/abilities/effects/common/continuous/BecomesCreatureIfVehicleEffect.java b/Mage/src/main/java/mage/abilities/effects/common/continuous/BecomesCreatureIfVehicleEffect.java index 2fc8214a365..2964330d10f 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/continuous/BecomesCreatureIfVehicleEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/continuous/BecomesCreatureIfVehicleEffect.java @@ -27,7 +27,7 @@ public class BecomesCreatureIfVehicleEffect extends ContinuousEffectImpl { Permanent aura = game.getPermanent(source.getSourceId()); if (aura != null && aura.getAttachedTo() != null) { Permanent enchanted = game.getPermanent(aura.getAttachedTo()); - if (enchanted != null && enchanted.getSubtype(game).contains("Vehicle")) { + if (enchanted != null && enchanted.getSubtype(game).contains(SubType.VEHICLE)) { enchanted.addCardType(addedType); } } diff --git a/Mage/src/main/java/mage/abilities/keyword/SpliceOntoArcaneAbility.java b/Mage/src/main/java/mage/abilities/keyword/SpliceOntoArcaneAbility.java index e0d1475826b..4926f258ff1 100644 --- a/Mage/src/main/java/mage/abilities/keyword/SpliceOntoArcaneAbility.java +++ b/Mage/src/main/java/mage/abilities/keyword/SpliceOntoArcaneAbility.java @@ -41,6 +41,7 @@ import mage.cards.Card; import mage.constants.Duration; import mage.constants.Outcome; import mage.constants.SpellAbilityType; +import mage.constants.SubType; import mage.constants.Zone; import mage.game.Game; import mage.game.stack.Spell; @@ -182,7 +183,7 @@ class SpliceOntoArcaneEffect extends SpliceCardEffectImpl { @Override public boolean applies(Ability abilityToModify, Ability source, Game game) { MageObject object = game.getObject(abilityToModify.getSourceId()); - if (object != null && object.getSubtype(game).contains("Arcane")) { + if (object != null && object.getSubtype(game).contains(SubType.ARCANE)) { return spliceSpellCanBeActivated(source, game); } return false; diff --git a/Mage/src/main/java/mage/filter/predicate/permanent/EquippedPredicate.java b/Mage/src/main/java/mage/filter/predicate/permanent/EquippedPredicate.java index a6c2abbee1c..c88f12c831a 100644 --- a/Mage/src/main/java/mage/filter/predicate/permanent/EquippedPredicate.java +++ b/Mage/src/main/java/mage/filter/predicate/permanent/EquippedPredicate.java @@ -6,6 +6,7 @@ package mage.filter.predicate.permanent; import java.util.UUID; +import mage.constants.SubType; import mage.filter.predicate.Predicate; import mage.game.Game; import mage.game.permanent.Permanent; @@ -20,7 +21,7 @@ public class EquippedPredicate implements Predicate { public boolean apply(Permanent input, Game game) { for (UUID attachmentId : input.getAttachments()) { Permanent attachment = game.getPermanent(attachmentId); - if (attachment != null && attachment.getSubtype(game).contains("Equipment")) { + if (attachment != null && attachment.getSubtype(game).contains(SubType.EQUIPMENT)) { return true; } } diff --git a/Mage/src/main/java/mage/game/GameImpl.java b/Mage/src/main/java/mage/game/GameImpl.java index 453b8911a66..23ede72e505 100644 --- a/Mage/src/main/java/mage/game/GameImpl.java +++ b/Mage/src/main/java/mage/game/GameImpl.java @@ -1900,9 +1900,9 @@ public abstract class GameImpl implements Game, Serializable { Permanent attachment = getPermanent(attachmentId); if (attachment != null && (attachment.isCreature() - || !(attachment.getSubtype(this).contains("Aura") - || attachment.getSubtype(this).contains("Equipment") - || attachment.getSubtype(this).contains("Fortification")))) { + || !(attachment.getSubtype(this).contains(SubType.AURA) + || attachment.getSubtype(this).contains(SubType.EQUIPMENT) + || attachment.getSubtype(this).contains(SubType.FORTIFICATION)))) { if (perm.removeAttachment(attachment.getId(), this)) { somethingHappened = true; break; diff --git a/Mage/src/main/java/mage/game/stack/Spell.java b/Mage/src/main/java/mage/game/stack/Spell.java index b811ffbe0f5..391939efdda 100644 --- a/Mage/src/main/java/mage/game/stack/Spell.java +++ b/Mage/src/main/java/mage/game/stack/Spell.java @@ -245,7 +245,7 @@ public class Spell extends StackObjImpl implements Card { } counter(null, game); return false; - } else if (this.isEnchantment() && this.getSubtype(game).contains("Aura")) { + } else if (this.isEnchantment() && this.getSubtype(game).contains(SubType.AURA)) { if (ability.getTargets().stillLegal(ability, game)) { updateOptionalCosts(0); boolean bestow = ability instanceof BestowAbility;