From 3d1f23e03b113ed662868c128c5c54da7752bdae Mon Sep 17 00:00:00 2001 From: North Date: Tue, 10 Jul 2012 21:49:19 +0300 Subject: [PATCH 01/12] Added base Predicates and MageObject Predicates. --- .../filter/predicate/IntComparePredicate.java | 77 ++++++ Mage/src/mage/filter/predicate/Predicate.java | 54 +++++ .../src/mage/filter/predicate/Predicates.java | 229 ++++++++++++++++++ .../mageobject/AbilityPredicate.java | 63 +++++ .../mageobject/CardTypePredicate.java | 56 +++++ .../predicate/mageobject/ColorPredicate.java | 56 +++++ .../mageobject/ColorlessPredicate.java | 49 ++++ .../ConvertedManaCostPredicate.java | 53 ++++ .../predicate/mageobject/NamePredicate.java | 55 +++++ .../predicate/mageobject/PowerPredicate.java | 53 ++++ .../mageobject/SubtypePredicate.java | 55 +++++ .../predicate/mageobject/Supertype.java | 55 +++++ .../mageobject/ToughnessPredicate.java | 53 ++++ 13 files changed, 908 insertions(+) create mode 100644 Mage/src/mage/filter/predicate/IntComparePredicate.java create mode 100644 Mage/src/mage/filter/predicate/Predicate.java create mode 100644 Mage/src/mage/filter/predicate/Predicates.java create mode 100644 Mage/src/mage/filter/predicate/mageobject/AbilityPredicate.java create mode 100644 Mage/src/mage/filter/predicate/mageobject/CardTypePredicate.java create mode 100644 Mage/src/mage/filter/predicate/mageobject/ColorPredicate.java create mode 100644 Mage/src/mage/filter/predicate/mageobject/ColorlessPredicate.java create mode 100644 Mage/src/mage/filter/predicate/mageobject/ConvertedManaCostPredicate.java create mode 100644 Mage/src/mage/filter/predicate/mageobject/NamePredicate.java create mode 100644 Mage/src/mage/filter/predicate/mageobject/PowerPredicate.java create mode 100644 Mage/src/mage/filter/predicate/mageobject/SubtypePredicate.java create mode 100644 Mage/src/mage/filter/predicate/mageobject/Supertype.java create mode 100644 Mage/src/mage/filter/predicate/mageobject/ToughnessPredicate.java diff --git a/Mage/src/mage/filter/predicate/IntComparePredicate.java b/Mage/src/mage/filter/predicate/IntComparePredicate.java new file mode 100644 index 00000000000..a40f138b90c --- /dev/null +++ b/Mage/src/mage/filter/predicate/IntComparePredicate.java @@ -0,0 +1,77 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package mage.filter.predicate; + +import mage.MageObject; +import mage.filter.Filter; +import mage.game.Game; + +/** + * + * @author North + */ +public abstract class IntComparePredicate implements Predicate { + + protected final Filter.ComparisonType type; + protected final int value; + + public IntComparePredicate(Filter.ComparisonType type, int value) { + this.type = type; + this.value = value; + } + + protected abstract int getInputValue(T input); + + @Override + public final boolean apply(T input, Game game) { + int inputValue = input.getPower().getValue(); + switch (type) { + case Equal: + if (inputValue != value) { + return false; + } + break; + case GreaterThan: + if (inputValue <= value) { + return false; + } + break; + case LessThan: + if (inputValue >= value) { + return false; + } + break; + } + return true; + } + + @Override + public String toString() { + return type.toString() + value; + } +} diff --git a/Mage/src/mage/filter/predicate/Predicate.java b/Mage/src/mage/filter/predicate/Predicate.java new file mode 100644 index 00000000000..d5d577c6ea5 --- /dev/null +++ b/Mage/src/mage/filter/predicate/Predicate.java @@ -0,0 +1,54 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package mage.filter.predicate; + +import java.io.Serializable; +import mage.game.Game; + +/** + * Determines a true or false value for a given input. + * + * @author North + */ +public interface Predicate extends Serializable { + /** + * Returns the result of applying this predicate to {@code input}. This method is generally + * expected, but not absolutely required, to have the following properties: + * + *
    + *
  • Its execution does not cause any observable side effects.
  • + *
  • The computation is consistent with equals; that is, {@link Objects#equal + * Objects.equal}{@code (a, b)} implies that {@code predicate.apply(a) == + * predicate.apply(b)}.
  • + *
+ * + * @throws NullPointerException if {@code input} is null and this predicate does not accept null + * arguments + */ + boolean apply(T input, Game game); +} diff --git a/Mage/src/mage/filter/predicate/Predicates.java b/Mage/src/mage/filter/predicate/Predicates.java new file mode 100644 index 00000000000..a8f0b0427ec --- /dev/null +++ b/Mage/src/mage/filter/predicate/Predicates.java @@ -0,0 +1,229 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package mage.filter.predicate; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import mage.game.Game; + +/** + * Static utility methods pertaining to {@code Predicate} instances. + * + *

All methods returns serializable predicates as long as they're given serializable parameters.

+ * + * @author North + */ +public final class Predicates { + + private Predicates() { + } + + /** + * Returns a predicate that evaluates to {@code true} if the given predicate evaluates to {@code false}. + */ + public static Predicate not(Predicate predicate) { + return new NotPredicate(predicate); + } + + /** + * Returns a predicate that evaluates to {@code true} if each of its components evaluates to {@code true}. The + * components are evaluated in order, and evaluation will be "short-circuited" as soon as a false predicate is + * found. It defensively copies the iterable passed in, so future changes to it won't alter the behavior of this + * predicate. If {@code components} is empty, the returned predicate will always evaluate to {@code true}. + */ + public static Predicate and(Iterable> components) { + return new AndPredicate(defensiveCopy(components)); + } + + /** + * Returns a predicate that evaluates to {@code true} if each of its components evaluates to {@code true}. The + * components are evaluated in order, and evaluation will be "short-circuited" as soon as a false predicate is + * found. It defensively copies the array passed in, so future changes to it won't alter the behavior of this + * predicate. If {@code components} is empty, the returned predicate will always evaluate to {@code true}. + */ + public static Predicate and(Predicate... components) { + return new AndPredicate(defensiveCopy(components)); + } + + /** + * Returns a predicate that evaluates to {@code true} if both of its components evaluate to {@code true}. The + * components are evaluated in order, and evaluation will be "short-circuited" as soon as a false predicate is + * found. + */ + public static Predicate and(Predicate first, Predicate second) { + return new AndPredicate(Predicates.asList(checkNotNull(first), checkNotNull(second))); + } + + /** + * Returns a predicate that evaluates to {@code true} if any one of its components evaluates to {@code true}. The + * components are evaluated in order, and evaluation will be "short-circuited" as soon as a true predicate is found. + * It defensively copies the iterable passed in, so future changes to it won't alter the behavior of this predicate. + * If {@code components} is empty, the returned predicate will always evaluate to {@code true}. + */ + public static Predicate or(Iterable> components) { + return new OrPredicate(defensiveCopy(components)); + } + + /** + * Returns a predicate that evaluates to {@code true} if any one of its components evaluates to {@code true}. The + * components are evaluated in order, and evaluation will be "short-circuited" as soon as a true predicate is found. + * It defensively copies the array passed in, so future changes to it won't alter the behavior of this predicate. If + * {@code components} is empty, the returned predicate will always evaluate to {@code true}. + */ + public static Predicate or(Predicate... components) { + return new OrPredicate(defensiveCopy(components)); + } + + /** + * Returns a predicate that evaluates to {@code true} if either of its components evaluates to {@code true}. The + * components are evaluated in order, and evaluation will be "short-circuited" as soon as a true predicate is found. + */ + public static Predicate or(Predicate first, Predicate second) { + return new OrPredicate(Predicates.asList(first, second)); + } + + /** + * @see Predicates#not(Predicate) + */ + private static class NotPredicate implements Predicate { + + final Predicate predicate; + + NotPredicate(Predicate predicate) { + this.predicate = checkNotNull(predicate); + } + + @Override + public boolean apply(T t, Game game) { + return !predicate.apply(t, game); + } + + @Override + public String toString() { + return "Not(" + predicate.toString() + ")"; + } + private static final long serialVersionUID = 0; + } + + /** + * @see Predicates#and(Iterable) + */ + private static class AndPredicate implements Predicate { + + private final List> components; + + private AndPredicate(List> components) { + this.components = components; + } + + @Override + public boolean apply(T t, Game game) { + for (int i = 0; i < components.size(); i++) { + if (!components.get(i).apply(t, game)) { + return false; + } + } + return true; + } + + @Override + public String toString() { + return "And(" + commaJoin(components) + ")"; + } + private static final long serialVersionUID = 0; + } + + /** + * @see Predicates#or(Iterable) + */ + private static class OrPredicate implements Predicate { + + private final List> components; + + private OrPredicate(List> components) { + this.components = components; + } + + @Override + public boolean apply(T t, Game game) { + for (int i = 0; i < components.size(); i++) { + if (components.get(i).apply(t, game)) { + return true; + } + } + return false; + } + + @Override + public String toString() { + return "Or(" + commaJoin(components) + ")"; + } + private static final long serialVersionUID = 0; + } + + @SuppressWarnings("unchecked") + private static List> asList(Predicate first, Predicate second) { + return Arrays.>asList(first, second); + } + + private static List defensiveCopy(T... array) { + return defensiveCopy(Arrays.asList(array)); + } + + static List defensiveCopy(Iterable iterable) { + ArrayList list = new ArrayList(); + for (T element : iterable) { + list.add(checkNotNull(element)); + } + return list; + } + + /** + * Ensures that an object reference passed as a parameter to the calling method is not null. + * + * @param reference an object reference + * @return the non-null reference that was validated + * @throws NullPointerException if {@code reference} is null + */ + private static T checkNotNull(T reference) { + if (reference == null) { + throw new NullPointerException(); + } + return reference; + } + + private static String commaJoin(List components) { + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < components.size(); i++) { + sb.append(components.get(i).toString()); + } + sb.deleteCharAt(sb.length() - 1); + return sb.toString(); + } +} diff --git a/Mage/src/mage/filter/predicate/mageobject/AbilityPredicate.java b/Mage/src/mage/filter/predicate/mageobject/AbilityPredicate.java new file mode 100644 index 00000000000..312fae73141 --- /dev/null +++ b/Mage/src/mage/filter/predicate/mageobject/AbilityPredicate.java @@ -0,0 +1,63 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package mage.filter.predicate.mageobject; + +import mage.MageObject; +import mage.abilities.Abilities; +import mage.abilities.Ability; +import mage.filter.predicate.Predicate; +import mage.game.Game; + +/** + * + * @author North + */ +public class AbilityPredicate implements Predicate { + + private final Class abilityClass; + + public AbilityPredicate(Class abilityClass) { + this.abilityClass = abilityClass; + } + + @Override + public boolean apply(T input, Game game) { + Abilities abilities = input.getAbilities(); + for (int i = 0; i < abilities.size(); i++) { + if (abilityClass.equals(abilities.get(i).getClass())) { + return true; + } + } + return false; + } + + @Override + public String toString() { + return "Ability(" + abilityClass.toString() + ')'; + } +} diff --git a/Mage/src/mage/filter/predicate/mageobject/CardTypePredicate.java b/Mage/src/mage/filter/predicate/mageobject/CardTypePredicate.java new file mode 100644 index 00000000000..f3f2ee9ac8a --- /dev/null +++ b/Mage/src/mage/filter/predicate/mageobject/CardTypePredicate.java @@ -0,0 +1,56 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package mage.filter.predicate.mageobject; + +import mage.Constants.CardType; +import mage.MageObject; +import mage.filter.predicate.Predicate; +import mage.game.Game; + +/** + * + * @author North + */ +public class CardTypePredicate implements Predicate { + + private final CardType cardType; + + public CardTypePredicate(CardType cardType) { + this.cardType = cardType; + } + + @Override + public boolean apply(T input, Game game) { + return input.getCardType().contains(cardType); + } + + @Override + public String toString() { + return "CardType(" + cardType.toString() + ')'; + } +} diff --git a/Mage/src/mage/filter/predicate/mageobject/ColorPredicate.java b/Mage/src/mage/filter/predicate/mageobject/ColorPredicate.java new file mode 100644 index 00000000000..f78c5826a2c --- /dev/null +++ b/Mage/src/mage/filter/predicate/mageobject/ColorPredicate.java @@ -0,0 +1,56 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package mage.filter.predicate.mageobject; + +import mage.MageObject; +import mage.ObjectColor; +import mage.filter.predicate.Predicate; +import mage.game.Game; + +/** + * + * @author North + */ +public class ColorPredicate implements Predicate { + + private final ObjectColor color; + + public ColorPredicate(ObjectColor color) { + this.color = color; + } + + @Override + public boolean apply(T input, Game game) { + return input.getColor().contains(color); + } + + @Override + public String toString() { + return "Color(" + color.toString() + ')'; + } +} diff --git a/Mage/src/mage/filter/predicate/mageobject/ColorlessPredicate.java b/Mage/src/mage/filter/predicate/mageobject/ColorlessPredicate.java new file mode 100644 index 00000000000..9d779a48956 --- /dev/null +++ b/Mage/src/mage/filter/predicate/mageobject/ColorlessPredicate.java @@ -0,0 +1,49 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package mage.filter.predicate.mageobject; + +import mage.MageObject; +import mage.filter.predicate.Predicate; +import mage.game.Game; + +/** + * + * @author North + */ +public class ColorlessPredicate implements Predicate { + + @Override + public boolean apply(T input, Game game) { + return input.getColor().isColorless(); + } + + @Override + public String toString() { + return "Colorless"; + } +} diff --git a/Mage/src/mage/filter/predicate/mageobject/ConvertedManaCostPredicate.java b/Mage/src/mage/filter/predicate/mageobject/ConvertedManaCostPredicate.java new file mode 100644 index 00000000000..bb2b22fabf6 --- /dev/null +++ b/Mage/src/mage/filter/predicate/mageobject/ConvertedManaCostPredicate.java @@ -0,0 +1,53 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package mage.filter.predicate.mageobject; + +import mage.MageObject; +import mage.filter.Filter; +import mage.filter.predicate.IntComparePredicate; + +/** + * + * @author North + */ +public class ConvertedManaCostPredicate extends IntComparePredicate { + + public ConvertedManaCostPredicate(Filter.ComparisonType type, int value) { + super(type, value); + } + + @Override + protected int getInputValue(T input) { + return input.getManaCost().convertedManaCost(); + } + + @Override + public String toString() { + return "ConvertedManaCost" + super.toString(); + } +} diff --git a/Mage/src/mage/filter/predicate/mageobject/NamePredicate.java b/Mage/src/mage/filter/predicate/mageobject/NamePredicate.java new file mode 100644 index 00000000000..c0bead3cf0d --- /dev/null +++ b/Mage/src/mage/filter/predicate/mageobject/NamePredicate.java @@ -0,0 +1,55 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package mage.filter.predicate.mageobject; + +import mage.MageObject; +import mage.filter.predicate.Predicate; +import mage.game.Game; + +/** + * + * @author North + */ +public class NamePredicate implements Predicate { + + private final String name; + + public NamePredicate(String name) { + this.name = name; + } + + @Override + public boolean apply(T input, Game game) { + return name.equals(input.getName()); + } + + @Override + public String toString() { + return "Name(" + name + ')'; + } +} diff --git a/Mage/src/mage/filter/predicate/mageobject/PowerPredicate.java b/Mage/src/mage/filter/predicate/mageobject/PowerPredicate.java new file mode 100644 index 00000000000..218e29aa2b2 --- /dev/null +++ b/Mage/src/mage/filter/predicate/mageobject/PowerPredicate.java @@ -0,0 +1,53 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package mage.filter.predicate.mageobject; + +import mage.MageObject; +import mage.filter.Filter; +import mage.filter.predicate.IntComparePredicate; + +/** + * + * @author North + */ +public class PowerPredicate extends IntComparePredicate { + + public PowerPredicate(Filter.ComparisonType type, int value) { + super(type, value); + } + + @Override + protected int getInputValue(T input) { + return input.getPower().getValue(); + } + + @Override + public String toString() { + return "Power" + super.toString(); + } +} diff --git a/Mage/src/mage/filter/predicate/mageobject/SubtypePredicate.java b/Mage/src/mage/filter/predicate/mageobject/SubtypePredicate.java new file mode 100644 index 00000000000..d19169f2ce3 --- /dev/null +++ b/Mage/src/mage/filter/predicate/mageobject/SubtypePredicate.java @@ -0,0 +1,55 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package mage.filter.predicate.mageobject; + +import mage.MageObject; +import mage.filter.predicate.Predicate; +import mage.game.Game; + +/** + * + * @author North + */ +public class SubtypePredicate implements Predicate { + + private final String subtype; + + public SubtypePredicate(String subtype) { + this.subtype = subtype; + } + + @Override + public boolean apply(T input, Game game) { + return input.getSubtype().contains(subtype); + } + + @Override + public String toString() { + return "Subtype(" + subtype + ')'; + } +} diff --git a/Mage/src/mage/filter/predicate/mageobject/Supertype.java b/Mage/src/mage/filter/predicate/mageobject/Supertype.java new file mode 100644 index 00000000000..233101ea096 --- /dev/null +++ b/Mage/src/mage/filter/predicate/mageobject/Supertype.java @@ -0,0 +1,55 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package mage.filter.predicate.mageobject; + +import mage.MageObject; +import mage.filter.predicate.Predicate; +import mage.game.Game; + +/** + * + * @author North + */ +public class Supertype implements Predicate { + + private final String supertype; + + public Supertype(String supertype) { + this.supertype = supertype; + } + + @Override + public boolean apply(T input, Game game) { + return input.getSupertype().contains(supertype); + } + + @Override + public String toString() { + return "Supertype(" + supertype + ')'; + } +} diff --git a/Mage/src/mage/filter/predicate/mageobject/ToughnessPredicate.java b/Mage/src/mage/filter/predicate/mageobject/ToughnessPredicate.java new file mode 100644 index 00000000000..e03231842fe --- /dev/null +++ b/Mage/src/mage/filter/predicate/mageobject/ToughnessPredicate.java @@ -0,0 +1,53 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package mage.filter.predicate.mageobject; + +import mage.MageObject; +import mage.filter.Filter; +import mage.filter.predicate.IntComparePredicate; + +/** + * + * @author North + */ +public class ToughnessPredicate extends IntComparePredicate { + + public ToughnessPredicate(Filter.ComparisonType type, int value) { + super(type, value); + } + + @Override + protected int getInputValue(T input) { + return input.getToughness().getValue(); + } + + @Override + public String toString() { + return "Toughness" + super.toString(); + } +} From 98feeb9968e9e78f7d9cceefb4d808a9f988bcdc Mon Sep 17 00:00:00 2001 From: North Date: Tue, 10 Jul 2012 22:37:53 +0300 Subject: [PATCH 02/12] [filters] replaced Name condition with Predicate --- .../sets/championsofkamigawa/Mindblaze.java | 3 ++- .../darkascension/CurseOfMisfortunes.java | 5 ++-- .../sets/innistrad/SeverTheBloodline.java | 3 ++- .../mage/sets/magic2010/HauntingEchoes.java | 3 ++- .../src/mage/sets/magic2011/SquadronHawk.java | 3 ++- .../mage/sets/magic2012/ArachnusSpinner.java | 3 ++- .../mage/sets/magic2012/DoublingChant.java | 3 ++- .../mirrodinbesieged/MitoticManipulation.java | 5 ++-- .../mage/sets/morningtide/EverbarkShaman.java | 3 ++- .../sets/newphyrexia/SurgicalExtraction.java | 3 ++- .../sets/riseoftheeldrazi/HandOfEmrakul.java | 3 ++- .../scarsofmirrodin/EzuriRenegadeLeader.java | 7 ++--- .../sets/scarsofmirrodin/StrataScythe.java | 3 ++- .../mage/sets/shardsofalara/AngelsHerald.java | 5 ++-- .../sets/shardsofalara/ClarionUltimatum.java | 5 ++-- .../shardsofalara/KnightOfTheWhiteOrchid.java | 6 ++--- Mage.Sets/src/mage/sets/tempest/Boil.java | 3 ++- .../src/mage/sets/tenth/RelentlessRats.java | 3 ++- .../src/mage/sets/zendikar/Gigantiform.java | 3 ++- .../src/mage/sets/zendikar/NissaRevane.java | 9 +++---- .../java/org/mage/test/player/TestPlayer.java | 7 ++--- .../dynamicvalue/common/UrzaTerrainValue.java | 7 ++--- .../BoostSourceWhileControlsEffect.java | 14 ++++------ Mage/src/mage/filter/Filter.java | 24 ++++++++++++++--- Mage/src/mage/filter/FilterImpl.java | 27 ++++++++++++++----- Mage/src/mage/filter/FilterObject.java | 19 +++---------- Mage/src/mage/game/GameImpl.java | 10 +++++-- .../common/TargetNonBasicLandPermanent.java | 14 +++++----- 28 files changed, 120 insertions(+), 83 deletions(-) diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/Mindblaze.java b/Mage.Sets/src/mage/sets/championsofkamigawa/Mindblaze.java index 44e39117c80..52b3d43b5c9 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/Mindblaze.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/Mindblaze.java @@ -42,6 +42,7 @@ import mage.cards.CardsImpl; import mage.choices.Choice; import mage.choices.ChoiceImpl; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.NamePredicate; import mage.game.Game; import mage.players.Player; import mage.sets.Sets; @@ -119,7 +120,7 @@ class MindblazeEffect extends OneShotEffect { cards.addAll(player.getLibrary().getCards(game)); playerControls.revealCards("Library", cards, game); FilterCard filter = new FilterCard(); - filter.getName().add(cardChoice.getChoice()); + filter.add(new NamePredicate(cardChoice.getChoice())); int count = Integer.parseInt(numberChoice.getChoice()); if (player.getLibrary().count(filter, game) == count) { player.damage(8, source.getSourceId(), game.copy(), false, true); diff --git a/Mage.Sets/src/mage/sets/darkascension/CurseOfMisfortunes.java b/Mage.Sets/src/mage/sets/darkascension/CurseOfMisfortunes.java index befbf44ad93..13b1a17b7c5 100644 --- a/Mage.Sets/src/mage/sets/darkascension/CurseOfMisfortunes.java +++ b/Mage.Sets/src/mage/sets/darkascension/CurseOfMisfortunes.java @@ -39,6 +39,8 @@ import mage.abilities.keyword.EnchantAbility; import mage.cards.Card; import mage.cards.CardImpl; import mage.filter.FilterCard; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.NamePredicate; import mage.game.Game; import mage.game.events.GameEvent; import mage.game.permanent.Permanent; @@ -105,8 +107,7 @@ class CurseOfMisfortunesEffect extends OneShotEffect { for (UUID attachmentId: targetPlayer.getAttachments()) { Permanent attachment = game.getPermanent(attachmentId); if (attachment != null && attachment.getSubtype().contains("Curse")) { - filter.getName().add(attachment.getName()); - filter.setNotName(true); + filter.add(Predicates.not(new NamePredicate(attachment.getName()))); } } diff --git a/Mage.Sets/src/mage/sets/innistrad/SeverTheBloodline.java b/Mage.Sets/src/mage/sets/innistrad/SeverTheBloodline.java index b891c3f1cb3..fb2691e7fa9 100644 --- a/Mage.Sets/src/mage/sets/innistrad/SeverTheBloodline.java +++ b/Mage.Sets/src/mage/sets/innistrad/SeverTheBloodline.java @@ -39,6 +39,7 @@ import mage.abilities.effects.OneShotEffect; import mage.abilities.keyword.FlashbackAbility; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.NamePredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.target.common.TargetCreaturePermanent; @@ -93,7 +94,7 @@ class SeverTheBloodlineEffect extends OneShotEffect { Permanent targetPermanent = game.getPermanent(targetPointer.getFirst(game, source)); if (targetPermanent != null) { FilterCreaturePermanent filter = new FilterCreaturePermanent(); - filter.getName().add(targetPermanent.getName()); + filter.add(new NamePredicate(targetPermanent.getName())); List permanents = game.getBattlefield().getActivePermanents(filter, source.getControllerId(), source.getId(), game); for (Permanent permanent : permanents) { permanent.moveToExile(null, "", source.getId(), game); diff --git a/Mage.Sets/src/mage/sets/magic2010/HauntingEchoes.java b/Mage.Sets/src/mage/sets/magic2010/HauntingEchoes.java index a9e987809ef..99bf55af659 100644 --- a/Mage.Sets/src/mage/sets/magic2010/HauntingEchoes.java +++ b/Mage.Sets/src/mage/sets/magic2010/HauntingEchoes.java @@ -44,6 +44,7 @@ import mage.target.common.TargetCardInLibrary; import java.util.List; import java.util.UUID; +import mage.filter.predicate.mageobject.NamePredicate; /** * @@ -92,7 +93,7 @@ class HauntingEchoesEffect extends OneShotEffect { card.moveToExile(null, "", source.getId(), game); FilterCard filterCard = new FilterCard("cards named " + card.getName()); - filterCard.getName().add(card.getName()); + filterCard.add(new NamePredicate(card.getName())); int count = targetPlayer.getLibrary().count(filterCard, game); TargetCardInLibrary target = new TargetCardInLibrary(count, count, filterCard); target.setRequired(true); diff --git a/Mage.Sets/src/mage/sets/magic2011/SquadronHawk.java b/Mage.Sets/src/mage/sets/magic2011/SquadronHawk.java index a33c28313cc..4fc951fbbf7 100644 --- a/Mage.Sets/src/mage/sets/magic2011/SquadronHawk.java +++ b/Mage.Sets/src/mage/sets/magic2011/SquadronHawk.java @@ -37,6 +37,7 @@ import mage.abilities.effects.common.search.SearchLibraryRevealPutInHandEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.NamePredicate; import mage.target.common.TargetCardInLibrary; /** @@ -48,7 +49,7 @@ public class SquadronHawk extends CardImpl { private static final FilterCard filter = new FilterCard("cards named Squadron Hawk"); static { - filter.getName().add("Squadron Hawk"); + filter.add(new NamePredicate("Squadron Hawk")); } public SquadronHawk(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/magic2012/ArachnusSpinner.java b/Mage.Sets/src/mage/sets/magic2012/ArachnusSpinner.java index eed25f29396..564f5cdd1bc 100644 --- a/Mage.Sets/src/mage/sets/magic2012/ArachnusSpinner.java +++ b/Mage.Sets/src/mage/sets/magic2012/ArachnusSpinner.java @@ -42,6 +42,7 @@ import mage.cards.Card; import mage.cards.CardImpl; import mage.filter.FilterCard; import mage.filter.common.FilterControlledCreaturePermanent; +import mage.filter.predicate.mageobject.NamePredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; @@ -115,7 +116,7 @@ class ArachnusSpinnerEffect extends OneShotEffect { } FilterCard filter = new FilterCard("card named Arachnus Web"); - filter.getName().add("Arachnus Web"); + filter.add(new NamePredicate("Arachnus Web")); Card card = null; Zone zone = null; diff --git a/Mage.Sets/src/mage/sets/magic2012/DoublingChant.java b/Mage.Sets/src/mage/sets/magic2012/DoublingChant.java index 73899db0987..ae0bd649d2f 100644 --- a/Mage.Sets/src/mage/sets/magic2012/DoublingChant.java +++ b/Mage.Sets/src/mage/sets/magic2012/DoublingChant.java @@ -45,6 +45,7 @@ import mage.target.common.TargetCardInLibrary; import java.util.ArrayList; import java.util.List; import java.util.UUID; +import mage.filter.predicate.mageobject.NamePredicate; /** * @@ -105,7 +106,7 @@ class DoublingChantEffect extends OneShotEffect { if (player.chooseUse(Outcome.PutCreatureInPlay, sb.toString(), game)) { FilterCreatureCard filter = new FilterCreatureCard("creature card named" + creatureName); - filter.getName().add(creatureName); + filter.add(new NamePredicate(creatureName)); TargetCardInLibrary target = new TargetCardInLibrary(filter); if (player.searchLibrary(target, game)) { diff --git a/Mage.Sets/src/mage/sets/mirrodinbesieged/MitoticManipulation.java b/Mage.Sets/src/mage/sets/mirrodinbesieged/MitoticManipulation.java index 983aa8090ca..1f29bb73b3c 100644 --- a/Mage.Sets/src/mage/sets/mirrodinbesieged/MitoticManipulation.java +++ b/Mage.Sets/src/mage/sets/mirrodinbesieged/MitoticManipulation.java @@ -41,6 +41,7 @@ import mage.cards.CardImpl; import mage.cards.Cards; import mage.cards.CardsImpl; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.NamePredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; @@ -91,8 +92,10 @@ class MitoticManipulationEffect extends OneShotEffect public boolean apply(Game game, Ability source) { List permanents = game.getBattlefield().getActivePermanents(source.getControllerId(), game); HashSet permanentNames = new HashSet(); + FilterCard filter = new FilterCard("card to put onto the battlefield"); for (Permanent permanent : permanents) { permanentNames.add(permanent.getName()); + filter.add(new NamePredicate(permanent.getName())); } Player player = game.getPlayer(source.getControllerId()); @@ -116,8 +119,6 @@ class MitoticManipulationEffect extends OneShotEffect player.lookAtCards("Mitotic Manipulation", cards, game); if (!cardsFound.isEmpty() && player.chooseUse(Outcome.PutCardInPlay, "Do you wish to put a card on the battlefield?", game)) { - FilterCard filter = new FilterCard("card to put onto the battlefield"); - filter.getName().add(permanentNames); TargetCard target = new TargetCard(Zone.PICK, filter); if (player.choose(Outcome.PutCardInPlay, cardsFound, target, game)) { diff --git a/Mage.Sets/src/mage/sets/morningtide/EverbarkShaman.java b/Mage.Sets/src/mage/sets/morningtide/EverbarkShaman.java index 2a73a130c43..fbad4c69593 100644 --- a/Mage.Sets/src/mage/sets/morningtide/EverbarkShaman.java +++ b/Mage.Sets/src/mage/sets/morningtide/EverbarkShaman.java @@ -41,6 +41,7 @@ import mage.abilities.effects.common.search.SearchLibraryPutInPlayEffect; import mage.cards.CardImpl; import mage.filter.Filter; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.NamePredicate; import mage.target.common.TargetCardInLibrary; import mage.target.common.TargetCardInYourGraveyard; @@ -54,7 +55,7 @@ public class EverbarkShaman extends CardImpl { private final static FilterCard filterTreefolk = new FilterCard("Treefolk from your graveyard"); static { - filterForest.getName().add("Forest"); + filterForest.add(new NamePredicate("Forest")); filterTreefolk.getSubtype().add("Treefolk"); filterTreefolk.setScopeSubtype(Filter.ComparisonScope.Any); } diff --git a/Mage.Sets/src/mage/sets/newphyrexia/SurgicalExtraction.java b/Mage.Sets/src/mage/sets/newphyrexia/SurgicalExtraction.java index 5ac88ae1bfa..43f5ebd262a 100644 --- a/Mage.Sets/src/mage/sets/newphyrexia/SurgicalExtraction.java +++ b/Mage.Sets/src/mage/sets/newphyrexia/SurgicalExtraction.java @@ -40,6 +40,7 @@ import mage.cards.CardImpl; import mage.cards.Cards; import mage.cards.CardsImpl; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.NamePredicate; import mage.game.Game; import mage.players.Player; import mage.target.common.TargetCardInGraveyard; @@ -104,7 +105,7 @@ class SurgicalExtractionEffect extends OneShotEffect { Player targetPlayer = game.getPlayer(card.getOwnerId()); if (targetPlayer != null) { FilterCard filter = new FilterCard("card named " + card.getName()); - filter.getName().add(card.getName()); + filter.add(new NamePredicate(card.getName())); Cards cardsInLibrary = new CardsImpl(Zone.LIBRARY); cardsInLibrary.addAll(targetPlayer.getLibrary().getCards(game)); diff --git a/Mage.Sets/src/mage/sets/riseoftheeldrazi/HandOfEmrakul.java b/Mage.Sets/src/mage/sets/riseoftheeldrazi/HandOfEmrakul.java index 64958163c48..57fe38c0b95 100644 --- a/Mage.Sets/src/mage/sets/riseoftheeldrazi/HandOfEmrakul.java +++ b/Mage.Sets/src/mage/sets/riseoftheeldrazi/HandOfEmrakul.java @@ -36,6 +36,7 @@ import mage.abilities.costs.common.SacrificeTargetCost; import mage.abilities.keyword.AnnihilatorAbility; import mage.cards.CardImpl; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.NamePredicate; import mage.target.common.TargetControlledPermanent; /** @@ -48,7 +49,7 @@ public class HandOfEmrakul extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("Eldrazi Spawn"); static { - filter.getName().add("Eldrazi Spawn"); + filter.add(new NamePredicate("Eldrazi Spawn")); } public HandOfEmrakul(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/EzuriRenegadeLeader.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/EzuriRenegadeLeader.java index 2f4bcff946d..7f7b893775d 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/EzuriRenegadeLeader.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/EzuriRenegadeLeader.java @@ -36,13 +36,15 @@ import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.mana.ManaCostsImpl; +import mage.abilities.effects.common.RegenerateTargetEffect; import mage.abilities.effects.common.continious.BoostControlledEffect; import mage.abilities.effects.common.continious.GainAbilityControlledEffect; -import mage.abilities.effects.common.RegenerateTargetEffect; import mage.abilities.keyword.TrampleAbility; import mage.cards.CardImpl; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.NamePredicate; import mage.target.common.TargetControlledCreaturePermanent; /** @@ -59,8 +61,7 @@ public class EzuriRenegadeLeader extends CardImpl { elfFilter.setMessage("Elf creatures"); notEzuri.getSubtype().add("Elf"); - notEzuri.getName().add("Ezuri, Renegade Leader"); - notEzuri.setNotName(true); + notEzuri.add(Predicates.not(new NamePredicate("Ezuri, Renegade Leader"))); } public EzuriRenegadeLeader(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/StrataScythe.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/StrataScythe.java index 1183caa3501..ab95fd54672 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/StrataScythe.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/StrataScythe.java @@ -45,6 +45,7 @@ import mage.cards.Card; import mage.cards.CardImpl; import mage.filter.FilterPermanent; import mage.filter.common.FilterLandCard; +import mage.filter.predicate.mageobject.NamePredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; @@ -132,7 +133,7 @@ class SameNameAsExiledCountValue implements DynamicValue { Permanent permanent = game.getPermanent(sourceAbility.getSourceId()); if (permanent != null && permanent.getImprinted().size() > 0) { FilterPermanent filterPermanent = new FilterPermanent(); - filterPermanent.getName().add(game.getCard(permanent.getImprinted().get(0)).getName()); + filterPermanent.add(new NamePredicate(game.getCard(permanent.getImprinted().get(0)).getName())); value = game.getBattlefield().countAll(filterPermanent, game); } return value; diff --git a/Mage.Sets/src/mage/sets/shardsofalara/AngelsHerald.java b/Mage.Sets/src/mage/sets/shardsofalara/AngelsHerald.java index 383d7f22c41..53e867660eb 100644 --- a/Mage.Sets/src/mage/sets/shardsofalara/AngelsHerald.java +++ b/Mage.Sets/src/mage/sets/shardsofalara/AngelsHerald.java @@ -42,6 +42,7 @@ import mage.abilities.effects.common.search.SearchLibraryPutInPlayEffect; import mage.cards.CardImpl; import mage.filter.FilterCard; import mage.filter.common.FilterControlledCreaturePermanent; +import mage.filter.predicate.mageobject.NamePredicate; import mage.target.common.TargetCardInLibrary; import mage.target.common.TargetControlledCreaturePermanent; @@ -63,10 +64,8 @@ public class AngelsHerald extends CardImpl { filterWhite.setUseColor(true); filterBlue.getColor().setBlue(true); filterBlue.setUseColor(true); - } - static { - filter.getName().add("Empyrial Archangel"); + filter.add(new NamePredicate("Empyrial Archangel")); } public AngelsHerald(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/shardsofalara/ClarionUltimatum.java b/Mage.Sets/src/mage/sets/shardsofalara/ClarionUltimatum.java index 4574b8620fc..1b5f5077761 100644 --- a/Mage.Sets/src/mage/sets/shardsofalara/ClarionUltimatum.java +++ b/Mage.Sets/src/mage/sets/shardsofalara/ClarionUltimatum.java @@ -39,6 +39,7 @@ import mage.abilities.effects.OneShotEffect; import mage.cards.Card; import mage.cards.CardImpl; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.NamePredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; @@ -113,8 +114,8 @@ class ClarionUltimatumEffect extends OneShotEffect { sb.append("Search for ").append(cardName).append(" in your library?"); if (player.chooseUse(Outcome.PutCardInPlay, sb.toString(), game)) { - FilterCard filter = new FilterCard("card named" + cardName); - filter.getName().add(cardName); + FilterCard filter = new FilterCard("card named " + cardName); + filter.add(new NamePredicate(cardName)); TargetCardInLibrary target = new TargetCardInLibrary(filter); if (player.searchLibrary(target, game)) { diff --git a/Mage.Sets/src/mage/sets/shardsofalara/KnightOfTheWhiteOrchid.java b/Mage.Sets/src/mage/sets/shardsofalara/KnightOfTheWhiteOrchid.java index 0de98d8dc44..639e47e33cd 100644 --- a/Mage.Sets/src/mage/sets/shardsofalara/KnightOfTheWhiteOrchid.java +++ b/Mage.Sets/src/mage/sets/shardsofalara/KnightOfTheWhiteOrchid.java @@ -28,6 +28,7 @@ package mage.sets.shardsofalara; +import java.util.UUID; import mage.Constants.CardType; import mage.Constants.Outcome; import mage.Constants.Rarity; @@ -39,11 +40,10 @@ import mage.abilities.keyword.FirstStrikeAbility; import mage.cards.CardImpl; import mage.filter.FilterCard; import mage.filter.common.FilterLandPermanent; +import mage.filter.predicate.mageobject.NamePredicate; import mage.game.Game; import mage.target.common.TargetCardInLibrary; -import java.util.UUID; - /** * * @author BetaSteward_at_googlemail.com @@ -80,7 +80,7 @@ class KnightOfTheWhiteOrchidAbility extends ZoneChangeTriggeredAbility { private final static FilterPermanent filter = new FilterPermanent("islands"); static { - filter.getName().add("Island"); + filter.add(new NamePredicate("Island")); } public Boil(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/tenth/RelentlessRats.java b/Mage.Sets/src/mage/sets/tenth/RelentlessRats.java index b303c5c6575..3c12d8ccf5c 100644 --- a/Mage.Sets/src/mage/sets/tenth/RelentlessRats.java +++ b/Mage.Sets/src/mage/sets/tenth/RelentlessRats.java @@ -42,6 +42,7 @@ import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.ContinuousEffectImpl; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.NamePredicate; import mage.game.Game; import mage.game.permanent.Permanent; @@ -54,7 +55,7 @@ public class RelentlessRats extends CardImpl { private final static FilterCreaturePermanent filter = new FilterCreaturePermanent(); static { - filter.getName().add("Relentless Rats"); + filter.add(new NamePredicate("Relentless Rats")); } public RelentlessRats(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/zendikar/Gigantiform.java b/Mage.Sets/src/mage/sets/zendikar/Gigantiform.java index 03fcc7be43c..77252815796 100644 --- a/Mage.Sets/src/mage/sets/zendikar/Gigantiform.java +++ b/Mage.Sets/src/mage/sets/zendikar/Gigantiform.java @@ -50,6 +50,7 @@ import mage.abilities.keyword.TrampleAbility; import mage.cards.Card; import mage.cards.CardImpl; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.NamePredicate; import mage.game.Game; import mage.game.events.GameEvent; import mage.game.events.ZoneChangeEvent; @@ -155,7 +156,7 @@ class GigantiformEffect extends OneShotEffect { private static final FilterCard filter = new FilterCard("card named Gigantiform"); static { - filter.getName().add("Gigantiform"); + filter.add(new NamePredicate("Gigantiform")); } public GigantiformEffect() { diff --git a/Mage.Sets/src/mage/sets/zendikar/NissaRevane.java b/Mage.Sets/src/mage/sets/zendikar/NissaRevane.java index 314824098f0..41654ed5cb3 100644 --- a/Mage.Sets/src/mage/sets/zendikar/NissaRevane.java +++ b/Mage.Sets/src/mage/sets/zendikar/NissaRevane.java @@ -41,6 +41,7 @@ import mage.cards.CardImpl; import mage.counters.CounterType; import mage.filter.FilterCard; import mage.filter.common.FilterControlledCreaturePermanent; +import mage.filter.predicate.mageobject.NamePredicate; import mage.game.Game; import mage.players.Player; import mage.target.common.TargetCardInLibrary; @@ -51,14 +52,12 @@ import mage.target.common.TargetCardInLibrary; */ public class NissaRevane extends CardImpl { - private static final FilterCard nissasChosenFilter = new FilterCard(); - private static final FilterCard elfFilter = new FilterCard(); + private static final FilterCard nissasChosenFilter = new FilterCard("card named Nissa's Chosen"); + private static final FilterCard elfFilter = new FilterCard("Elf creature cards"); static { - nissasChosenFilter.getName().add("Nissa's Chosen"); - nissasChosenFilter.setMessage("card named Nissa's Chosen"); + nissasChosenFilter.add(new NamePredicate("Nissa's Chosen")); elfFilter.getSubtype().add("Elf"); - elfFilter.setMessage("Elf creature cards"); } public NissaRevane(UUID ownerId) { diff --git a/Mage.Tests/src/test/java/org/mage/test/player/TestPlayer.java b/Mage.Tests/src/test/java/org/mage/test/player/TestPlayer.java index ceb67a7f170..d9d2eaf01eb 100644 --- a/Mage.Tests/src/test/java/org/mage/test/player/TestPlayer.java +++ b/Mage.Tests/src/test/java/org/mage/test/player/TestPlayer.java @@ -51,6 +51,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.UUID; +import mage.filter.predicate.mageobject.NamePredicate; /** * @@ -134,7 +135,7 @@ public class TestPlayer extends ComputerPlayer { String command = action.getAction(); command = command.substring(command.indexOf("attack:") + 7); FilterCreatureForCombat filter = new FilterCreatureForCombat(); - filter.getName().add(command); + filter.add(new NamePredicate(command)); Permanent attacker = findPermanent(filter, playerId, game); if (attacker != null && attacker.canAttack(game)) { this.declareAttacker(attacker.getId(), opponentId, game); @@ -152,11 +153,11 @@ public class TestPlayer extends ComputerPlayer { command = command.substring(command.indexOf("block:") + 6); String[] groups = command.split(";"); FilterCreatureForCombat filterBlocker = new FilterCreatureForCombat(); - filterBlocker.getName().add(groups[0]); + filterBlocker.add(new NamePredicate(groups[0])); Permanent blocker = findPermanent(filterBlocker, playerId, game); if (blocker != null) { FilterAttackingCreature filterAttacker = new FilterAttackingCreature(); - filterAttacker.getName().add(groups[1]); + filterAttacker.add(new NamePredicate(groups[1])); Permanent attacker = findPermanent(filterAttacker, opponentId, game); if (attacker != null) { this.declareBlocker(blocker.getId(), attacker.getId(), game); diff --git a/Mage/src/mage/abilities/dynamicvalue/common/UrzaTerrainValue.java b/Mage/src/mage/abilities/dynamicvalue/common/UrzaTerrainValue.java index e0d15b60b60..008b83b57f0 100644 --- a/Mage/src/mage/abilities/dynamicvalue/common/UrzaTerrainValue.java +++ b/Mage/src/mage/abilities/dynamicvalue/common/UrzaTerrainValue.java @@ -3,6 +3,7 @@ package mage.abilities.dynamicvalue.common; import mage.abilities.Ability; import mage.abilities.dynamicvalue.DynamicValue; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.NamePredicate; import mage.game.Game; public class UrzaTerrainValue implements DynamicValue { @@ -15,19 +16,19 @@ public class UrzaTerrainValue implements DynamicValue { @Override public int calculate(Game game, Ability sourceAbility) { FilterControlledPermanent pp = new FilterControlledPermanent("Urza's Power Plant"); - pp.getName().add("Urza's Power Plant"); + pp.add(new NamePredicate("Urza's Power Plant")); PermanentsOnBattlefieldCount ppP = new PermanentsOnBattlefieldCount(pp); if (ppP.calculate(game, sourceAbility) < 1) return 1; FilterControlledPermanent to = new FilterControlledPermanent("Urza's Tower"); - to.getName().add("Urza's Tower"); + to.add(new NamePredicate("Urza's Tower")); PermanentsOnBattlefieldCount toP = new PermanentsOnBattlefieldCount(to); if (toP.calculate(game, sourceAbility) < 1) return 1; FilterControlledPermanent mi = new FilterControlledPermanent("Urza's Mine"); - mi.getName().add("Urza's Mine"); + mi.add(new NamePredicate("Urza's Mine")); PermanentsOnBattlefieldCount miP = new PermanentsOnBattlefieldCount(mi); if (miP.calculate(game, sourceAbility) < 1) return 1; diff --git a/Mage/src/mage/abilities/effects/common/continious/BoostSourceWhileControlsEffect.java b/Mage/src/mage/abilities/effects/common/continious/BoostSourceWhileControlsEffect.java index 1d42384867c..95f4214f446 100644 --- a/Mage/src/mage/abilities/effects/common/continious/BoostSourceWhileControlsEffect.java +++ b/Mage/src/mage/abilities/effects/common/continious/BoostSourceWhileControlsEffect.java @@ -28,20 +28,17 @@ package mage.abilities.effects.common.continious; -import mage.abilities.condition.common.ControlsPermanentCondition; -import mage.abilities.effects.WhileConditionContiniousEffect; import mage.Constants.Duration; import mage.Constants.Layer; import mage.Constants.Outcome; import mage.Constants.SubLayer; import mage.abilities.Ability; +import mage.abilities.condition.common.ControlsPermanentCondition; +import mage.abilities.effects.WhileConditionContiniousEffect; import mage.filter.FilterPermanent; import mage.game.Game; import mage.game.permanent.Permanent; -import java.util.ArrayList; -import java.util.List; - /** * * @author BetaSteward_at_googlemail.com @@ -50,13 +47,13 @@ public class BoostSourceWhileControlsEffect extends WhileConditionContiniousEffe private int power; private int toughness; - private List filterDescription; + private String filterDescription; public BoostSourceWhileControlsEffect(FilterPermanent filter, int power, int toughness) { super(Duration.WhileOnBattlefield, Layer.PTChangingEffects_7, SubLayer.ModifyPT_7c, new ControlsPermanentCondition(filter), Outcome.BoostCreature); this.power = power; this.toughness = toughness; - this.filterDescription = filter.getName(); + this.filterDescription = filter.getMessage(); staticText = "{this} gets " + String.format("%1$+d/%2$+d", power, toughness) + " as long as you control a " + filterDescription; } @@ -64,8 +61,7 @@ public class BoostSourceWhileControlsEffect extends WhileConditionContiniousEffe super(effect); this.power = effect.power; this.toughness = effect.toughness; - this.filterDescription = new ArrayList(); - this.filterDescription.addAll(effect.filterDescription); + this.filterDescription = effect.filterDescription; } @Override diff --git a/Mage/src/mage/filter/Filter.java b/Mage/src/mage/filter/Filter.java index 69255936dfe..025222438e8 100644 --- a/Mage/src/mage/filter/Filter.java +++ b/Mage/src/mage/filter/Filter.java @@ -28,18 +28,33 @@ package mage.filter; -import mage.game.Game; - import java.io.Serializable; +import mage.filter.predicate.Predicate; +import mage.game.Game; /** * * @author BetaSteward_at_googlemail.com + * @author North */ public interface Filter extends Serializable { public enum ComparisonType { - GreaterThan, Equal, LessThan + + GreaterThan(">"), + Equal("=="), + LessThan("<"); + + private String text; + + ComparisonType(String text) { + this.text = text; + } + + @Override + public String toString() { + return text; + } } public enum ComparisonScope { @@ -47,9 +62,10 @@ public interface Filter extends Serializable { } public boolean match(E o, Game game); + public void add(Predicate predicate); + public String getMessage(); public void setMessage(String message); - public void setNotFilter(boolean notFilter); public Filter copy(); diff --git a/Mage/src/mage/filter/FilterImpl.java b/Mage/src/mage/filter/FilterImpl.java index 1dcc6e91eea..4a11437f2ab 100644 --- a/Mage/src/mage/filter/FilterImpl.java +++ b/Mage/src/mage/filter/FilterImpl.java @@ -28,18 +28,23 @@ package mage.filter; +import java.util.LinkedList; +import java.util.List; import mage.Constants.CardType; -import mage.ObjectColor; +import mage.filter.predicate.Predicate; +import mage.game.Game; /** * * @author BetaSteward_at_googlemail.com + * @author North */ public abstract class FilterImpl> implements Filter { protected static ListComparer compCardType = new ListComparer(); protected static ListComparer compString = new ListComparer(); + protected List predicates = new LinkedList(); protected String message; protected boolean notFilter = false; @@ -53,6 +58,7 @@ public abstract class FilterImpl> implements Filte public FilterImpl(FilterImpl filter) { this.message = filter.message; this.notFilter = filter.notFilter; + this.predicates = new LinkedList(filter.predicates); } protected boolean compareInts(int int1, int int2, ComparisonType type) { @@ -73,11 +79,19 @@ public abstract class FilterImpl> implements Filte return true; } - protected boolean compareColors(ObjectColor color1, ObjectColor color2, ComparisonScope scope) { - if (scope == ComparisonScope.All) - return color2.equals(color1); - else - return color2.contains(color1); + @Override + public boolean match(E e, Game game) { + for (int i = 0; i < predicates.size(); i++) { + if (!predicates.get(i).apply(e, game)) { + return false; + } + } + return true; + } + + @Override + public final void add(Predicate predicate) { + predicates.add(predicate); } @Override @@ -90,7 +104,6 @@ public abstract class FilterImpl> implements Filte this.message = message; } - @Override public void setNotFilter(boolean notFilter) { this.notFilter = notFilter; } diff --git a/Mage/src/mage/filter/FilterObject.java b/Mage/src/mage/filter/FilterObject.java index e55ead13c71..c04b612ea28 100644 --- a/Mage/src/mage/filter/FilterObject.java +++ b/Mage/src/mage/filter/FilterObject.java @@ -43,6 +43,7 @@ import java.util.List; /** * * @author BetaSteward_at_googlemail.com + * @author North */ public class FilterObject> extends FilterImpl implements Filter { protected Abilities abilities; @@ -57,8 +58,6 @@ public class FilterObject> ex protected ObjectColor color; protected ComparisonScope scopeColor = ComparisonScope.Any; protected boolean notColor; - protected List name = new ArrayList(); - protected boolean notName; protected List subtype = new ArrayList(); protected ComparisonScope scopeSubtype = ComparisonScope.All; protected boolean notSubtype; @@ -102,8 +101,6 @@ public class FilterObject> ex this.color = filter.color.copy(); this.scopeColor = filter.scopeColor; this.notColor = filter.notColor; - this.name.addAll(filter.name); - this.notName = filter.notName; this.subtype.addAll(filter.subtype); this.scopeSubtype = filter.scopeSubtype; this.notSubtype = filter.notSubtype; @@ -121,10 +118,8 @@ public class FilterObject> ex @Override public boolean match(E object, Game game) { - - if (name.size() > 0) { - if (name.contains(object.getName()) == notName) - return notFilter; + if (!super.match(object, game)) { + return notFilter; } if (useColor) { @@ -242,14 +237,6 @@ public class FilterObject> ex this.notColor = notColor; } - public List getName() { - return this.name; - } - - public void setNotName(boolean notName) { - this.notName = notName; - } - public List getSubtype() { return this.subtype; } diff --git a/Mage/src/mage/game/GameImpl.java b/Mage/src/mage/game/GameImpl.java index 25a3d0e2611..f8c408f85f5 100644 --- a/Mage/src/mage/game/GameImpl.java +++ b/Mage/src/mage/game/GameImpl.java @@ -28,7 +28,12 @@ package mage.game; -import mage.Constants.*; +import mage.Constants.CardType; +import mage.Constants.MultiplayerAttackOption; +import mage.Constants.Outcome; +import mage.Constants.PhaseStep; +import mage.Constants.RangeOfInfluence; +import mage.Constants.Zone; import mage.MageObject; import mage.abilities.Ability; import mage.abilities.ActivatedAbility; @@ -52,6 +57,7 @@ import mage.counters.CounterType; import mage.filter.Filter; import mage.filter.Filter.ComparisonScope; import mage.filter.common.*; +import mage.filter.predicate.mageobject.NamePredicate; import mage.game.combat.Combat; import mage.game.command.CommandObject; import mage.game.command.Emblem; @@ -1045,7 +1051,7 @@ public abstract class GameImpl> implements Game, Serializa if (legendary.size() > 1) { //don't bother checking if less than 2 legends in play for (Permanent legend: legendary) { FilterLegendaryPermanent filterLegendName = new FilterLegendaryPermanent(); - filterLegendName.getName().add(legend.getName()); + filterLegendName.add(new NamePredicate(legend.getName())); if (getBattlefield().contains(filterLegendName, legend.getControllerId(), this, 2)) { for (Permanent dupLegend: getBattlefield().getActivePermanents(filterLegendName, legend.getControllerId(), this)) { dupLegend.moveToZone(Zone.GRAVEYARD, null, this, false); diff --git a/Mage/src/mage/target/common/TargetNonBasicLandPermanent.java b/Mage/src/mage/target/common/TargetNonBasicLandPermanent.java index 582f40204c3..635b7d462cb 100644 --- a/Mage/src/mage/target/common/TargetNonBasicLandPermanent.java +++ b/Mage/src/mage/target/common/TargetNonBasicLandPermanent.java @@ -28,6 +28,9 @@ package mage.target.common; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.NamePredicate; + /** * * @author BetaSteward_at_googlemail.com @@ -35,12 +38,11 @@ package mage.target.common; public class TargetNonBasicLandPermanent extends TargetLandPermanent { public TargetNonBasicLandPermanent() { - filter.setNotName(true); - filter.getName().add("Island"); - filter.getName().add("Forest"); - filter.getName().add("Mountain"); - filter.getName().add("Swamp"); - filter.getName().add("Plains"); + filter.add(Predicates.not(new NamePredicate("Island"))); + filter.add(Predicates.not(new NamePredicate("Forest"))); + filter.add(Predicates.not(new NamePredicate("Mountain"))); + filter.add(Predicates.not(new NamePredicate("Swamp"))); + filter.add(Predicates.not(new NamePredicate("Plains"))); this.targetName = "nonbasic land"; } From 85b22de4b0b3157764b9283c45c70d168291b199 Mon Sep 17 00:00:00 2001 From: North Date: Tue, 10 Jul 2012 23:14:46 +0300 Subject: [PATCH 03/12] [filters] replaced ConvertedManaCost condition with Predicate --- .../sets/avacynrestored/AppetiteForBrains.java | 4 ++-- .../sets/avacynrestored/DriverOfTheDead.java | 4 ++-- .../sets/championsofkamigawa/Thoughtbind.java | 4 ++-- .../src/mage/sets/dissension/SpellSnare.java | 4 ++-- .../src/mage/sets/guildpact/CullingSun.java | 4 ++-- Mage.Sets/src/mage/sets/magic2011/SunTitan.java | 4 ++-- .../sets/mirrodinbesieged/GreenSunsZenith.java | 5 ++--- .../sets/mirrodinbesieged/TreasureMage.java | 6 +++--- .../src/mage/sets/newphyrexia/BirthingPod.java | 4 ++-- .../mage/sets/newphyrexia/MentalMisstep.java | 4 ++-- .../sets/riseoftheeldrazi/ConsumeTheMeek.java | 6 +++--- .../riseoftheeldrazi/InquisitionOfKozilek.java | 6 +++--- .../mage/sets/scarsofmirrodin/GenesisWave.java | 4 ++-- .../mage/sets/scarsofmirrodin/TrinketMage.java | 6 +++--- .../mage/sets/shadowmoor/MistmeadowSkulk.java | 4 ++-- .../mage/sets/shardsofalara/RangerOfEos.java | 4 ++-- .../sets/shardsofalara/TezzeretTheSeeker.java | 4 ++-- Mage.Sets/src/mage/sets/worldwake/Smother.java | 4 ++-- .../abilities/keyword/SoulshiftAbility.java | 4 ++-- .../abilities/keyword/TransmuteAbility.java | 4 ++-- Mage/src/mage/filter/FilterObject.java | 17 ----------------- 21 files changed, 44 insertions(+), 62 deletions(-) diff --git a/Mage.Sets/src/mage/sets/avacynrestored/AppetiteForBrains.java b/Mage.Sets/src/mage/sets/avacynrestored/AppetiteForBrains.java index 468f30cb20a..a91ed280238 100644 --- a/Mage.Sets/src/mage/sets/avacynrestored/AppetiteForBrains.java +++ b/Mage.Sets/src/mage/sets/avacynrestored/AppetiteForBrains.java @@ -38,6 +38,7 @@ import mage.cards.Card; import mage.cards.CardImpl; import mage.filter.Filter; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.ConvertedManaCostPredicate; import mage.game.Game; import mage.players.Player; import mage.target.TargetCard; @@ -92,8 +93,7 @@ class AppetiteForBrainsEffect extends OneShotEffect { Player targetPlayer = game.getPlayer(source.getFirstTarget()); if (player != null && targetPlayer != null) { FilterCard filter = new FilterCard("with converted mana cost 4 or greater"); - filter.setConvertedManaCost(3); - filter.setConvertedManaCostComparison(Filter.ComparisonType.GreaterThan); + filter.add(new ConvertedManaCostPredicate(Filter.ComparisonType.GreaterThan, 3)); targetPlayer.revealCards("Appetite for Brains", targetPlayer.getHand(), game); TargetCard target = new TargetCard(Zone.PICK, filter); diff --git a/Mage.Sets/src/mage/sets/avacynrestored/DriverOfTheDead.java b/Mage.Sets/src/mage/sets/avacynrestored/DriverOfTheDead.java index 8975b870377..271b2d07eb9 100644 --- a/Mage.Sets/src/mage/sets/avacynrestored/DriverOfTheDead.java +++ b/Mage.Sets/src/mage/sets/avacynrestored/DriverOfTheDead.java @@ -36,6 +36,7 @@ import mage.abilities.effects.common.ReturnFromGraveyardToBattlefieldTargetEffec import mage.cards.CardImpl; import mage.filter.Filter; import mage.filter.common.FilterCreatureCard; +import mage.filter.predicate.mageobject.ConvertedManaCostPredicate; import mage.target.Target; import mage.target.common.TargetCardInYourGraveyard; @@ -49,8 +50,7 @@ public class DriverOfTheDead extends CardImpl { private static final FilterCreatureCard filter = new FilterCreatureCard("creature card with converted mana cost 2 or less from your graveyard to the battlefield"); static { - filter.setConvertedManaCost(3); - filter.setConvertedManaCostComparison(Filter.ComparisonType.LessThan); + filter.add(new ConvertedManaCostPredicate(Filter.ComparisonType.LessThan, 3)); } public DriverOfTheDead(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/Thoughtbind.java b/Mage.Sets/src/mage/sets/championsofkamigawa/Thoughtbind.java index 4901f892b13..1fb6897ab1c 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/Thoughtbind.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/Thoughtbind.java @@ -36,6 +36,7 @@ import mage.abilities.effects.common.CounterTargetEffect; import mage.cards.CardImpl; import mage.filter.Filter; import mage.filter.FilterSpell; +import mage.filter.predicate.mageobject.ConvertedManaCostPredicate; import mage.target.TargetSpell; /** @@ -46,8 +47,7 @@ public class Thoughtbind extends CardImpl { private final static FilterSpell filter = new FilterSpell("spell with converted mana cost 4 or less"); static { - filter.setConvertedManaCost(5); - filter.setConvertedManaCostComparison(Filter.ComparisonType.LessThan); + filter.add(new ConvertedManaCostPredicate(Filter.ComparisonType.LessThan, 5)); } public Thoughtbind(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/dissension/SpellSnare.java b/Mage.Sets/src/mage/sets/dissension/SpellSnare.java index 70b6c188f54..48e608d7e57 100644 --- a/Mage.Sets/src/mage/sets/dissension/SpellSnare.java +++ b/Mage.Sets/src/mage/sets/dissension/SpellSnare.java @@ -34,6 +34,7 @@ import mage.abilities.effects.common.CounterTargetEffect; import mage.cards.CardImpl; import mage.filter.Filter; import mage.filter.FilterSpell; +import mage.filter.predicate.mageobject.ConvertedManaCostPredicate; import mage.target.TargetSpell; /** @@ -44,8 +45,7 @@ public class SpellSnare extends CardImpl { private final static FilterSpell filter = new FilterSpell("spell with converted mana cost 2"); static { - filter.setConvertedManaCost(2); - filter.setConvertedManaCostComparison(Filter.ComparisonType.Equal); + filter.add(new ConvertedManaCostPredicate(Filter.ComparisonType.Equal, 2)); } public SpellSnare(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/guildpact/CullingSun.java b/Mage.Sets/src/mage/sets/guildpact/CullingSun.java index 87db6ccee2e..1b0ff1710f5 100644 --- a/Mage.Sets/src/mage/sets/guildpact/CullingSun.java +++ b/Mage.Sets/src/mage/sets/guildpact/CullingSun.java @@ -34,6 +34,7 @@ import mage.abilities.effects.common.DestroyAllEffect; import mage.cards.CardImpl; import mage.filter.Filter; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.ConvertedManaCostPredicate; /** * @@ -43,8 +44,7 @@ public class CullingSun extends CardImpl { private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with converted mana cost 3 or less"); static { - filter.setConvertedManaCost(4); - filter.setConvertedManaCostComparison(Filter.ComparisonType.LessThan); + filter.add(new ConvertedManaCostPredicate(Filter.ComparisonType.LessThan, 4)); } public CullingSun(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/magic2011/SunTitan.java b/Mage.Sets/src/mage/sets/magic2011/SunTitan.java index 4923d404f03..c83b7687eef 100644 --- a/Mage.Sets/src/mage/sets/magic2011/SunTitan.java +++ b/Mage.Sets/src/mage/sets/magic2011/SunTitan.java @@ -40,6 +40,7 @@ import mage.cards.CardImpl; import mage.filter.Filter.ComparisonScope; import mage.filter.Filter.ComparisonType; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.ConvertedManaCostPredicate; import mage.game.Game; import mage.game.events.GameEvent; import mage.game.events.GameEvent.EventType; @@ -86,8 +87,7 @@ class SunTitanAbility extends TriggeredAbilityImpl { filter.getCardType().add(CardType.LAND); filter.getCardType().add(CardType.PLANESWALKER); filter.setScopeCardType(ComparisonScope.Any); - filter.setConvertedManaCost(4); - filter.setConvertedManaCostComparison(ComparisonType.LessThan); + filter.add(new ConvertedManaCostPredicate(ComparisonType.LessThan, 4)); } public SunTitanAbility() { diff --git a/Mage.Sets/src/mage/sets/mirrodinbesieged/GreenSunsZenith.java b/Mage.Sets/src/mage/sets/mirrodinbesieged/GreenSunsZenith.java index 5aaccf6ffe6..e173a1dc67f 100644 --- a/Mage.Sets/src/mage/sets/mirrodinbesieged/GreenSunsZenith.java +++ b/Mage.Sets/src/mage/sets/mirrodinbesieged/GreenSunsZenith.java @@ -38,12 +38,12 @@ import mage.cards.Card; import mage.cards.CardImpl; import mage.filter.Filter; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.ConvertedManaCostPredicate; import mage.game.Game; import mage.players.Player; import mage.target.common.TargetCardInLibrary; import java.util.UUID; -import mage.filter.Filter.ComparisonType; /** * @author Loki @@ -90,8 +90,7 @@ class GreenSunsZenithSearchEffect extends OneShotEffect 0) { diff --git a/Mage.Sets/src/mage/sets/mirrodinbesieged/TreasureMage.java b/Mage.Sets/src/mage/sets/mirrodinbesieged/TreasureMage.java index a4e4c3f35d3..c9b6b12e4e8 100644 --- a/Mage.Sets/src/mage/sets/mirrodinbesieged/TreasureMage.java +++ b/Mage.Sets/src/mage/sets/mirrodinbesieged/TreasureMage.java @@ -38,6 +38,7 @@ import mage.abilities.effects.common.search.SearchLibraryRevealPutInHandEffect; import mage.cards.CardImpl; import mage.filter.Filter; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.ConvertedManaCostPredicate; import mage.target.common.TargetCardInLibrary; /** @@ -46,12 +47,11 @@ import mage.target.common.TargetCardInLibrary; */ public class TreasureMage extends CardImpl { - private static FilterCard filter = new FilterCard("an artifact card with converted mana cost 6 or more"); + private static final FilterCard filter = new FilterCard("an artifact card with converted mana cost 6 or more"); static { filter.getCardType().add(CardType.ARTIFACT); - filter.setConvertedManaCost(5); - filter.setConvertedManaCostComparison(Filter.ComparisonType.GreaterThan); + filter.add(new ConvertedManaCostPredicate(Filter.ComparisonType.GreaterThan, 5)); } public TreasureMage (UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/newphyrexia/BirthingPod.java b/Mage.Sets/src/mage/sets/newphyrexia/BirthingPod.java index a7d87db7b55..78b8e5a02a1 100644 --- a/Mage.Sets/src/mage/sets/newphyrexia/BirthingPod.java +++ b/Mage.Sets/src/mage/sets/newphyrexia/BirthingPod.java @@ -43,6 +43,7 @@ import mage.cards.Card; import mage.cards.CardImpl; import mage.filter.Filter; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.ConvertedManaCostPredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; @@ -103,8 +104,7 @@ class BirthingPodEffect extends OneShotEffect { if (sacrificedPermanent != null && player != null) { int newConvertedCost = sacrificedPermanent.getManaCost().convertedManaCost() + 1; FilterCard filter = new FilterCard("creature card with converted mana cost " + newConvertedCost); - filter.setConvertedManaCost(newConvertedCost); - filter.setConvertedManaCostComparison(Filter.ComparisonType.Equal); + filter.add(new ConvertedManaCostPredicate(Filter.ComparisonType.Equal, newConvertedCost)); filter.getCardType().add(CardType.CREATURE); filter.setScopeCardType(Filter.ComparisonScope.Any); TargetCardInLibrary target = new TargetCardInLibrary(filter); diff --git a/Mage.Sets/src/mage/sets/newphyrexia/MentalMisstep.java b/Mage.Sets/src/mage/sets/newphyrexia/MentalMisstep.java index 9e35189670d..d8059f1ead4 100644 --- a/Mage.Sets/src/mage/sets/newphyrexia/MentalMisstep.java +++ b/Mage.Sets/src/mage/sets/newphyrexia/MentalMisstep.java @@ -35,6 +35,7 @@ import mage.abilities.effects.common.CounterTargetEffect; import mage.cards.CardImpl; import mage.filter.Filter; import mage.filter.FilterSpell; +import mage.filter.predicate.mageobject.ConvertedManaCostPredicate; import mage.target.TargetSpell; /** @@ -46,8 +47,7 @@ public class MentalMisstep extends CardImpl { private final static FilterSpell filter = new FilterSpell("spell with converted mana cost 1"); static { - filter.setConvertedManaCost(1); - filter.setConvertedManaCostComparison(Filter.ComparisonType.Equal); + filter.add(new ConvertedManaCostPredicate(Filter.ComparisonType.Equal, 1)); } public MentalMisstep (UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/riseoftheeldrazi/ConsumeTheMeek.java b/Mage.Sets/src/mage/sets/riseoftheeldrazi/ConsumeTheMeek.java index d0111701975..41343b1224f 100644 --- a/Mage.Sets/src/mage/sets/riseoftheeldrazi/ConsumeTheMeek.java +++ b/Mage.Sets/src/mage/sets/riseoftheeldrazi/ConsumeTheMeek.java @@ -30,10 +30,11 @@ package mage.sets.riseoftheeldrazi; import java.util.UUID; import mage.Constants.CardType; import mage.Constants.Rarity; +import mage.abilities.effects.common.DestroyAllEffect; import mage.cards.CardImpl; import mage.filter.Filter; import mage.filter.common.FilterCreaturePermanent; -import mage.abilities.effects.common.DestroyAllEffect; +import mage.filter.predicate.mageobject.ConvertedManaCostPredicate; /** * @@ -44,8 +45,7 @@ public class ConsumeTheMeek extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures with converted mana cost 3 or less"); static { - filter.setConvertedManaCost(4); - filter.setConvertedManaCostComparison(Filter.ComparisonType.LessThan); + filter.add(new ConvertedManaCostPredicate(Filter.ComparisonType.LessThan, 4)); } public ConsumeTheMeek(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/riseoftheeldrazi/InquisitionOfKozilek.java b/Mage.Sets/src/mage/sets/riseoftheeldrazi/InquisitionOfKozilek.java index a5e0a848a01..efe7fcb0fde 100644 --- a/Mage.Sets/src/mage/sets/riseoftheeldrazi/InquisitionOfKozilek.java +++ b/Mage.Sets/src/mage/sets/riseoftheeldrazi/InquisitionOfKozilek.java @@ -37,8 +37,9 @@ import mage.abilities.Ability; import mage.abilities.effects.OneShotEffect; import mage.cards.Card; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonType; +import mage.filter.Filter; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.ConvertedManaCostPredicate; import mage.game.Game; import mage.players.Player; import mage.target.TargetCard; @@ -75,8 +76,7 @@ class InquisitionOfKozilekEffect extends OneShotEffect { game.setZone(card.getId(), Zone.PICK); } FilterCard filter = new FilterCard("card with converted mana cost " + count + " or less to put onto the battlefield"); - filter.setConvertedManaCost(count + 1); - filter.setConvertedManaCostComparison(ComparisonType.LessThan); + filter.add(new ConvertedManaCostPredicate(ComparisonType.LessThan, count + 1)); TargetCard target1 = new TargetCard(Zone.PICK, filter); while (cards.size() > 0 && player.choose(Outcome.PutCardInPlay, cards, target1, game)) { Card card = cards.get(target1.getFirstTarget(), game); diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/TrinketMage.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/TrinketMage.java index 40dc5f7ea2d..eedf04cffec 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/TrinketMage.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/TrinketMage.java @@ -37,6 +37,7 @@ import mage.abilities.effects.common.search.SearchLibraryRevealPutInHandEffect; import mage.cards.CardImpl; import mage.filter.Filter; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.ConvertedManaCostPredicate; import mage.target.common.TargetCardInLibrary; import java.util.UUID; @@ -46,12 +47,11 @@ import java.util.UUID; */ public class TrinketMage extends CardImpl { - private static FilterCard filter = new FilterCard("an artifact card with converted mana cost 1 or less"); + private static final FilterCard filter = new FilterCard("an artifact card with converted mana cost 1 or less"); static { filter.getCardType().add(CardType.ARTIFACT); - filter.setConvertedManaCost(2); - filter.setConvertedManaCostComparison(Filter.ComparisonType.LessThan); + filter.add(new ConvertedManaCostPredicate(Filter.ComparisonType.LessThan, 2)); } public TrinketMage(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/shadowmoor/MistmeadowSkulk.java b/Mage.Sets/src/mage/sets/shadowmoor/MistmeadowSkulk.java index bdcbe4fc1a8..309dd52d2e9 100644 --- a/Mage.Sets/src/mage/sets/shadowmoor/MistmeadowSkulk.java +++ b/Mage.Sets/src/mage/sets/shadowmoor/MistmeadowSkulk.java @@ -36,6 +36,7 @@ import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.filter.Filter.ComparisonType; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.ConvertedManaCostPredicate; /** * @@ -46,8 +47,7 @@ public class MistmeadowSkulk extends CardImpl { private static final FilterCard filter = new FilterCard("converted mana cost 3 or greater"); static { - filter.setConvertedManaCost(2); - filter.setConvertedManaCostComparison(ComparisonType.GreaterThan); + filter.add(new ConvertedManaCostPredicate(ComparisonType.GreaterThan, 2)); } public MistmeadowSkulk(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/shardsofalara/RangerOfEos.java b/Mage.Sets/src/mage/sets/shardsofalara/RangerOfEos.java index ca2a2e64e58..b8f463d6626 100644 --- a/Mage.Sets/src/mage/sets/shardsofalara/RangerOfEos.java +++ b/Mage.Sets/src/mage/sets/shardsofalara/RangerOfEos.java @@ -37,6 +37,7 @@ import mage.abilities.effects.common.search.SearchLibraryRevealPutInHandEffect; import mage.cards.CardImpl; import mage.filter.Filter.ComparisonType; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.ConvertedManaCostPredicate; import mage.target.common.TargetCardInLibrary; /** @@ -49,8 +50,7 @@ public class RangerOfEos extends CardImpl { static { filter.getCardType().add(CardType.CREATURE); - filter.setConvertedManaCost(2); - filter.setConvertedManaCostComparison(ComparisonType.LessThan); + filter.add(new ConvertedManaCostPredicate(ComparisonType.LessThan, 2)); } public RangerOfEos(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/shardsofalara/TezzeretTheSeeker.java b/Mage.Sets/src/mage/sets/shardsofalara/TezzeretTheSeeker.java index 607cd72073a..024ed586808 100644 --- a/Mage.Sets/src/mage/sets/shardsofalara/TezzeretTheSeeker.java +++ b/Mage.Sets/src/mage/sets/shardsofalara/TezzeretTheSeeker.java @@ -43,6 +43,7 @@ import mage.counters.CounterType; import mage.filter.Filter.ComparisonType; import mage.filter.common.FilterArtifactCard; import mage.filter.common.FilterArtifactPermanent; +import mage.filter.predicate.mageobject.ConvertedManaCostPredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; @@ -117,8 +118,7 @@ class TezzeretTheSeekerEffect2 extends OneShotEffect { } FilterArtifactCard filter = new FilterArtifactCard("artifact card with converted mana cost " + cmc); - filter.setConvertedManaCost(cmc); - filter.setConvertedManaCostComparison(ComparisonType.Equal); + filter.add(new ConvertedManaCostPredicate(ComparisonType.Equal, cmc)); TargetCardInLibrary target = new TargetCardInLibrary(filter); if (player.searchLibrary(target, game)) { diff --git a/Mage.Sets/src/mage/sets/worldwake/Smother.java b/Mage.Sets/src/mage/sets/worldwake/Smother.java index ca013496652..d87b5e85c95 100644 --- a/Mage.Sets/src/mage/sets/worldwake/Smother.java +++ b/Mage.Sets/src/mage/sets/worldwake/Smother.java @@ -34,6 +34,7 @@ import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; import mage.filter.Filter.ComparisonType; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.ConvertedManaCostPredicate; import mage.target.common.TargetCreaturePermanent; /** @@ -45,8 +46,7 @@ public class Smother extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with converted mana cost 3 or less"); static { - filter.setConvertedManaCost(4); - filter.setConvertedManaCostComparison(ComparisonType.LessThan); + filter.add(new ConvertedManaCostPredicate(ComparisonType.LessThan, 4)); } public Smother(UUID ownerId) { diff --git a/Mage/src/mage/abilities/keyword/SoulshiftAbility.java b/Mage/src/mage/abilities/keyword/SoulshiftAbility.java index b4a7569ec9b..c9e0c183cc7 100644 --- a/Mage/src/mage/abilities/keyword/SoulshiftAbility.java +++ b/Mage/src/mage/abilities/keyword/SoulshiftAbility.java @@ -4,6 +4,7 @@ import mage.abilities.common.DiesTriggeredAbility; import mage.abilities.effects.common.ReturnToHandTargetEffect; import mage.filter.Filter; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.ConvertedManaCostPredicate; import mage.target.common.TargetCardInYourGraveyard; public class SoulshiftAbility extends DiesTriggeredAbility { @@ -12,8 +13,7 @@ public class SoulshiftAbility extends DiesTriggeredAbility { public SoulshiftAbility(int amount) { super(new ReturnToHandTargetEffect()); FilterCard filter = new FilterCard("Spirit card with converted mana cost " + amount + " or less from your graveyard"); - filter.setConvertedManaCost(amount + 1); - filter.setConvertedManaCostComparison(Filter.ComparisonType.LessThan); + filter.add(new ConvertedManaCostPredicate(Filter.ComparisonType.LessThan, amount + 1)); filter.getSubtype().add("Spirit"); filter.setScopeSubtype(Filter.ComparisonScope.Any); this.addTarget(new TargetCardInYourGraveyard(filter)); diff --git a/Mage/src/mage/abilities/keyword/TransmuteAbility.java b/Mage/src/mage/abilities/keyword/TransmuteAbility.java index 4de82a87559..8b8a18d2f62 100644 --- a/Mage/src/mage/abilities/keyword/TransmuteAbility.java +++ b/Mage/src/mage/abilities/keyword/TransmuteAbility.java @@ -11,6 +11,7 @@ import mage.cards.Cards; import mage.cards.CardsImpl; import mage.filter.Filter; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.ConvertedManaCostPredicate; import mage.game.Game; import mage.players.Player; import mage.target.common.TargetCardInLibrary; @@ -58,8 +59,7 @@ class TransmuteEffect extends OneShotEffect { if (sourceCard != null && player != null) { FilterCard filter = new FilterCard("card with converted mana cost " + sourceCard.getManaCost().convertedManaCost()); - filter.setConvertedManaCost(sourceCard.getManaCost().convertedManaCost()); - filter.setConvertedManaCostComparison(Filter.ComparisonType.Equal); + filter.add(new ConvertedManaCostPredicate(Filter.ComparisonType.Equal, sourceCard.getManaCost().convertedManaCost())); TargetCardInLibrary target = new TargetCardInLibrary(1, filter); if (player.searchLibrary(target, game)) { if (target.getTargets().size() > 0) { diff --git a/Mage/src/mage/filter/FilterObject.java b/Mage/src/mage/filter/FilterObject.java index c04b612ea28..6651deeee07 100644 --- a/Mage/src/mage/filter/FilterObject.java +++ b/Mage/src/mage/filter/FilterObject.java @@ -64,8 +64,6 @@ public class FilterObject> ex protected List supertype = new ArrayList(); protected ComparisonScope scopeSupertype = ComparisonScope.Any; protected boolean notSupertype; - protected int convertedManaCost; - protected ComparisonType convertedManaCostComparison; protected int power; protected ComparisonType powerComparison; protected int toughness; @@ -107,8 +105,6 @@ public class FilterObject> ex this.supertype.addAll(filter.supertype); this.scopeSupertype = filter.scopeSupertype; this.notSupertype = filter.notSupertype; - this.convertedManaCost = filter.convertedManaCost; - this.convertedManaCostComparison = filter.convertedManaCostComparison; this.power = filter.power; this.powerComparison = filter.powerComparison; this.toughness = filter.toughness; @@ -179,11 +175,6 @@ public class FilterObject> ex return notFilter; } - if (convertedManaCostComparison != null) { - if (!compareInts(object.getManaCost().convertedManaCost(), convertedManaCost, convertedManaCostComparison)) - return notFilter; - } - if (powerComparison != null) { if (!compareInts(object.getPower().getValue(), power, powerComparison)) return notFilter; @@ -261,14 +252,6 @@ public class FilterObject> ex this.notSupertype = notSupertype; } - public void setConvertedManaCost(int convertedManaCost) { - this.convertedManaCost = convertedManaCost; - } - - public void setConvertedManaCostComparison(ComparisonType convertedManaCostComparison) { - this.convertedManaCostComparison = convertedManaCostComparison; - } - public void setPower(int power) { this.power = power; } From dfd2413b89d0750575e572e478ce74edf09a8c9c Mon Sep 17 00:00:00 2001 From: North Date: Tue, 10 Jul 2012 23:44:45 +0300 Subject: [PATCH 04/12] [filters] replaced Power and Toughness conditions with Predicates --- .../alarareborn/SpellbreakerBehemoth.java | 4 +-- .../betrayersofkamigawa/TerashisVerdict.java | 4 +-- .../SoratamiMirrorGuard.java | 4 +-- .../src/mage/sets/conflux/BeaconBehemoth.java | 4 +-- .../mage/sets/conflux/VagrantPlowbeasts.java | 4 +-- .../sets/innistrad/SmiteTheMonstrous.java | 9 +++-- .../riseoftheeldrazi/BalaGedScorpion.java | 4 +-- .../sets/riseoftheeldrazi/GoblinTunneler.java | 6 ++-- .../sets/riseoftheeldrazi/KorLineSlinger.java | 4 +-- .../riseoftheeldrazi/PuncturingLight.java | 4 +-- .../sets/shardsofalara/BloodthornTaunter.java | 4 +-- .../mage/sets/shardsofalara/Godtoucher.java | 4 +-- .../shardsofalara/GustriderExuberant.java | 4 +-- .../mage/sets/shardsofalara/Mosstodon.java | 4 +-- .../shardsofalara/RakeclawGargantuan.java | 4 +-- .../shardsofalara/SpearbreakerBehemoth.java | 4 +-- .../src/mage/sets/tenth/CraftyPathmage.java | 4 +-- .../mage/sets/timeshifted/Pendelhaven.java | 10 +++--- .../src/mage/sets/urzassaga/IntrepidHero.java | 4 +-- Mage/src/mage/filter/FilterImpl.java | 18 ---------- Mage/src/mage/filter/FilterObject.java | 34 ------------------- 21 files changed, 44 insertions(+), 97 deletions(-) diff --git a/Mage.Sets/src/mage/sets/alarareborn/SpellbreakerBehemoth.java b/Mage.Sets/src/mage/sets/alarareborn/SpellbreakerBehemoth.java index bb83a5b20f6..c9f1a99d6af 100644 --- a/Mage.Sets/src/mage/sets/alarareborn/SpellbreakerBehemoth.java +++ b/Mage.Sets/src/mage/sets/alarareborn/SpellbreakerBehemoth.java @@ -40,6 +40,7 @@ import mage.abilities.effects.common.CantCounterSourceEffect; import mage.cards.CardImpl; import mage.filter.Filter; import mage.filter.FilterSpell; +import mage.filter.predicate.mageobject.PowerPredicate; /** @@ -52,8 +53,7 @@ public class SpellbreakerBehemoth extends CardImpl { static { filter.getCardType().add(CardType.CREATURE); - filter.setPower(4); - filter.setPowerComparison(Filter.ComparisonType.GreaterThan); + filter.add(new PowerPredicate(Filter.ComparisonType.GreaterThan, 4)); } public SpellbreakerBehemoth(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/betrayersofkamigawa/TerashisVerdict.java b/Mage.Sets/src/mage/sets/betrayersofkamigawa/TerashisVerdict.java index 8bab6e54f58..bc9f3809036 100644 --- a/Mage.Sets/src/mage/sets/betrayersofkamigawa/TerashisVerdict.java +++ b/Mage.Sets/src/mage/sets/betrayersofkamigawa/TerashisVerdict.java @@ -34,6 +34,7 @@ import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; import mage.filter.Filter; import mage.filter.common.FilterAttackingCreature; +import mage.filter.predicate.mageobject.PowerPredicate; import mage.target.common.TargetAttackingCreature; /** @@ -45,8 +46,7 @@ public class TerashisVerdict extends CardImpl { private final static FilterAttackingCreature filter = new FilterAttackingCreature("attacking creature with power 3 or less"); static { - filter.setPower(4); - filter.setPowerComparison(Filter.ComparisonType.LessThan); + filter.add(new PowerPredicate(Filter.ComparisonType.LessThan, 4)); } public TerashisVerdict(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/SoratamiMirrorGuard.java b/Mage.Sets/src/mage/sets/championsofkamigawa/SoratamiMirrorGuard.java index 9a2ac796115..a92d0354db7 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/SoratamiMirrorGuard.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/SoratamiMirrorGuard.java @@ -45,6 +45,7 @@ import mage.cards.CardImpl; import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.PowerPredicate; import mage.target.common.TargetControlledPermanent; import mage.target.common.TargetCreaturePermanent; @@ -59,8 +60,7 @@ public class SoratamiMirrorGuard extends CardImpl { static { filter.getCardType().add(CardType.LAND); filter.setScopeCardType(Filter.ComparisonScope.Any); - filterCreature.setPower(3); - filterCreature.setPowerComparison(Filter.ComparisonType.LessThan); + filterCreature.add(new PowerPredicate(Filter.ComparisonType.LessThan, 3)); } public SoratamiMirrorGuard(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/conflux/BeaconBehemoth.java b/Mage.Sets/src/mage/sets/conflux/BeaconBehemoth.java index 72236742171..f81fac3750d 100644 --- a/Mage.Sets/src/mage/sets/conflux/BeaconBehemoth.java +++ b/Mage.Sets/src/mage/sets/conflux/BeaconBehemoth.java @@ -42,6 +42,7 @@ import mage.abilities.keyword.VigilanceAbility; import mage.cards.CardImpl; import mage.filter.Filter.ComparisonType; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.PowerPredicate; import mage.target.common.TargetCreaturePermanent; /** @@ -53,8 +54,7 @@ public class BeaconBehemoth extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with power 5 or greater"); static { - filter.setPower(4); - filter.setPowerComparison(ComparisonType.GreaterThan); + filter.add(new PowerPredicate(ComparisonType.GreaterThan, 4)); } public BeaconBehemoth (UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/conflux/VagrantPlowbeasts.java b/Mage.Sets/src/mage/sets/conflux/VagrantPlowbeasts.java index d20c7a36595..01642fbf085 100644 --- a/Mage.Sets/src/mage/sets/conflux/VagrantPlowbeasts.java +++ b/Mage.Sets/src/mage/sets/conflux/VagrantPlowbeasts.java @@ -38,6 +38,7 @@ import mage.abilities.effects.common.RegenerateTargetEffect; import mage.cards.CardImpl; import mage.filter.Filter.ComparisonType; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.PowerPredicate; import mage.target.common.TargetCreaturePermanent; /** @@ -49,8 +50,7 @@ public class VagrantPlowbeasts extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with power 5 or greater"); static { - filter.setPower(4); - filter.setPowerComparison(ComparisonType.GreaterThan); + filter.add(new PowerPredicate(ComparisonType.GreaterThan, 4)); } public VagrantPlowbeasts(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/innistrad/SmiteTheMonstrous.java b/Mage.Sets/src/mage/sets/innistrad/SmiteTheMonstrous.java index 695423f2e75..344e57c590a 100644 --- a/Mage.Sets/src/mage/sets/innistrad/SmiteTheMonstrous.java +++ b/Mage.Sets/src/mage/sets/innistrad/SmiteTheMonstrous.java @@ -27,15 +27,15 @@ */ package mage.sets.innistrad; +import java.util.UUID; import mage.Constants.CardType; import mage.Constants.Rarity; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; -import mage.target.TargetPermanent; - -import java.util.UUID; import mage.filter.Filter; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.PowerPredicate; +import mage.target.TargetPermanent; /** * @author nantuko @@ -45,8 +45,7 @@ public class SmiteTheMonstrous extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with power 4 or greater"); static { - filter.setPower(3); - filter.setPowerComparison(Filter.ComparisonType.GreaterThan); + filter.add(new PowerPredicate(Filter.ComparisonType.GreaterThan, 3)); } public SmiteTheMonstrous(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/riseoftheeldrazi/BalaGedScorpion.java b/Mage.Sets/src/mage/sets/riseoftheeldrazi/BalaGedScorpion.java index 81aec880e40..d277fbe8dd7 100644 --- a/Mage.Sets/src/mage/sets/riseoftheeldrazi/BalaGedScorpion.java +++ b/Mage.Sets/src/mage/sets/riseoftheeldrazi/BalaGedScorpion.java @@ -36,6 +36,7 @@ import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; import mage.filter.Filter.ComparisonType; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.PowerPredicate; import mage.target.common.TargetCreaturePermanent; /** @@ -47,8 +48,7 @@ public class BalaGedScorpion extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with power 1 or less"); static { - filter.setPower(2); - filter.setPowerComparison(ComparisonType.LessThan); + filter.add(new PowerPredicate(ComparisonType.LessThan, 2)); } public BalaGedScorpion(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/riseoftheeldrazi/GoblinTunneler.java b/Mage.Sets/src/mage/sets/riseoftheeldrazi/GoblinTunneler.java index d3b6440c961..3dc758bfe5c 100644 --- a/Mage.Sets/src/mage/sets/riseoftheeldrazi/GoblinTunneler.java +++ b/Mage.Sets/src/mage/sets/riseoftheeldrazi/GoblinTunneler.java @@ -42,6 +42,7 @@ import mage.abilities.keyword.UnblockableAbility; import mage.cards.CardImpl; import mage.filter.Filter.ComparisonType; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.PowerPredicate; import mage.target.common.TargetCreaturePermanent; /** @@ -50,11 +51,10 @@ import mage.target.common.TargetCreaturePermanent; */ public class GoblinTunneler extends CardImpl { - private static FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with power 2 or less"); + private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with power 2 or less"); static { - filter.setPower(3); - filter.setPowerComparison(ComparisonType.LessThan); + filter.add(new PowerPredicate(ComparisonType.LessThan, 3)); } public GoblinTunneler(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/riseoftheeldrazi/KorLineSlinger.java b/Mage.Sets/src/mage/sets/riseoftheeldrazi/KorLineSlinger.java index b1a541be88a..0910aefea41 100644 --- a/Mage.Sets/src/mage/sets/riseoftheeldrazi/KorLineSlinger.java +++ b/Mage.Sets/src/mage/sets/riseoftheeldrazi/KorLineSlinger.java @@ -39,6 +39,7 @@ import mage.abilities.effects.common.TapTargetEffect; import mage.cards.CardImpl; import mage.filter.Filter.ComparisonType; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.PowerPredicate; import mage.target.common.TargetCreaturePermanent; /** @@ -50,8 +51,7 @@ public class KorLineSlinger extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with power 3 or less"); static { - filter.setPower(4); - filter.setPowerComparison(ComparisonType.LessThan); + filter.add(new PowerPredicate(ComparisonType.LessThan, 4)); } public KorLineSlinger(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/riseoftheeldrazi/PuncturingLight.java b/Mage.Sets/src/mage/sets/riseoftheeldrazi/PuncturingLight.java index 34ba5a799e3..c8e7a8b1d50 100644 --- a/Mage.Sets/src/mage/sets/riseoftheeldrazi/PuncturingLight.java +++ b/Mage.Sets/src/mage/sets/riseoftheeldrazi/PuncturingLight.java @@ -34,6 +34,7 @@ import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; import mage.filter.Filter.ComparisonType; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.PowerPredicate; import mage.target.common.TargetCreaturePermanent; /** @@ -49,8 +50,7 @@ public class PuncturingLight extends CardImpl { filter.setUseAttacking(true); filter.setBlocking(true); filter.setUseBlocking(true); - filter.setPower(4); - filter.setPowerComparison(ComparisonType.LessThan); + filter.add(new PowerPredicate(ComparisonType.LessThan, 4)); } public PuncturingLight(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/shardsofalara/BloodthornTaunter.java b/Mage.Sets/src/mage/sets/shardsofalara/BloodthornTaunter.java index be3b8fe4cd7..7a2b5e58913 100644 --- a/Mage.Sets/src/mage/sets/shardsofalara/BloodthornTaunter.java +++ b/Mage.Sets/src/mage/sets/shardsofalara/BloodthornTaunter.java @@ -40,6 +40,7 @@ import mage.abilities.keyword.HasteAbility; import mage.cards.CardImpl; import mage.filter.Filter.ComparisonType; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.PowerPredicate; import mage.target.common.TargetCreaturePermanent; /** @@ -51,8 +52,7 @@ public class BloodthornTaunter extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with power 5 or greater"); static { - filter.setPower(4); - filter.setPowerComparison(ComparisonType.GreaterThan); + filter.add(new PowerPredicate(ComparisonType.GreaterThan, 4)); } public BloodthornTaunter(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/shardsofalara/Godtoucher.java b/Mage.Sets/src/mage/sets/shardsofalara/Godtoucher.java index 216c7bd9315..b452323ffde 100644 --- a/Mage.Sets/src/mage/sets/shardsofalara/Godtoucher.java +++ b/Mage.Sets/src/mage/sets/shardsofalara/Godtoucher.java @@ -41,6 +41,7 @@ import mage.abilities.effects.PreventionEffectImpl; import mage.cards.CardImpl; import mage.filter.Filter.ComparisonType; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.PowerPredicate; import mage.game.Game; import mage.game.events.GameEvent; import mage.target.common.TargetCreaturePermanent; @@ -54,8 +55,7 @@ public class Godtoucher extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with power 5 or greater"); static { - filter.setPower(4); - filter.setPowerComparison(ComparisonType.GreaterThan); + filter.add(new PowerPredicate(ComparisonType.GreaterThan, 4)); } public Godtoucher(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/shardsofalara/GustriderExuberant.java b/Mage.Sets/src/mage/sets/shardsofalara/GustriderExuberant.java index d3ab75a105a..46044b6cc53 100644 --- a/Mage.Sets/src/mage/sets/shardsofalara/GustriderExuberant.java +++ b/Mage.Sets/src/mage/sets/shardsofalara/GustriderExuberant.java @@ -40,6 +40,7 @@ import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.filter.Filter.ComparisonType; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.PowerPredicate; /** * @@ -50,8 +51,7 @@ public class GustriderExuberant extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with power 5 or greater"); static { - filter.setPower(4); - filter.setPowerComparison(ComparisonType.GreaterThan); + filter.add(new PowerPredicate(ComparisonType.GreaterThan, 4)); } public GustriderExuberant(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/shardsofalara/Mosstodon.java b/Mage.Sets/src/mage/sets/shardsofalara/Mosstodon.java index cde83b3a8df..d07fde55199 100644 --- a/Mage.Sets/src/mage/sets/shardsofalara/Mosstodon.java +++ b/Mage.Sets/src/mage/sets/shardsofalara/Mosstodon.java @@ -40,6 +40,7 @@ import mage.abilities.keyword.TrampleAbility; import mage.cards.CardImpl; import mage.filter.Filter.ComparisonType; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.PowerPredicate; import mage.target.common.TargetCreaturePermanent; /** @@ -51,8 +52,7 @@ public class Mosstodon extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with power 5 or greater"); static { - filter.setPower(4); - filter.setPowerComparison(ComparisonType.GreaterThan); + filter.add(new PowerPredicate(ComparisonType.GreaterThan, 4)); } public Mosstodon(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/shardsofalara/RakeclawGargantuan.java b/Mage.Sets/src/mage/sets/shardsofalara/RakeclawGargantuan.java index 4d1f7bef1e5..88953a30eb2 100644 --- a/Mage.Sets/src/mage/sets/shardsofalara/RakeclawGargantuan.java +++ b/Mage.Sets/src/mage/sets/shardsofalara/RakeclawGargantuan.java @@ -40,6 +40,7 @@ import mage.abilities.keyword.FirstStrikeAbility; import mage.cards.CardImpl; import mage.filter.Filter.ComparisonType; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.PowerPredicate; import mage.target.common.TargetCreaturePermanent; /** @@ -51,8 +52,7 @@ public class RakeclawGargantuan extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with power 5 or greater"); static { - filter.setPower(4); - filter.setPowerComparison(ComparisonType.GreaterThan); + filter.add(new PowerPredicate(ComparisonType.GreaterThan, 4)); } public RakeclawGargantuan(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/shardsofalara/SpearbreakerBehemoth.java b/Mage.Sets/src/mage/sets/shardsofalara/SpearbreakerBehemoth.java index 866275a9440..b0e91b382f1 100644 --- a/Mage.Sets/src/mage/sets/shardsofalara/SpearbreakerBehemoth.java +++ b/Mage.Sets/src/mage/sets/shardsofalara/SpearbreakerBehemoth.java @@ -40,6 +40,7 @@ import mage.abilities.keyword.IndestructibleAbility; import mage.cards.CardImpl; import mage.filter.Filter.ComparisonType; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.PowerPredicate; import mage.target.common.TargetCreaturePermanent; /** @@ -51,8 +52,7 @@ public class SpearbreakerBehemoth extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with power 5 or greater"); static { - filter.setPower(4); - filter.setPowerComparison(ComparisonType.GreaterThan); + filter.add(new PowerPredicate(ComparisonType.GreaterThan, 4)); } public SpearbreakerBehemoth(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/tenth/CraftyPathmage.java b/Mage.Sets/src/mage/sets/tenth/CraftyPathmage.java index 3955b97d8f4..b2380d43b59 100644 --- a/Mage.Sets/src/mage/sets/tenth/CraftyPathmage.java +++ b/Mage.Sets/src/mage/sets/tenth/CraftyPathmage.java @@ -41,6 +41,7 @@ import mage.abilities.keyword.UnblockableAbility; import mage.cards.CardImpl; import mage.filter.Filter; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.PowerPredicate; import mage.target.common.TargetCreaturePermanent; /** @@ -52,8 +53,7 @@ public class CraftyPathmage extends CardImpl { private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with power 2 or less"); static { - filter.setPower(3); - filter.setPowerComparison(Filter.ComparisonType.LessThan); + filter.add(new PowerPredicate(Filter.ComparisonType.LessThan, 3)); } public CraftyPathmage(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/timeshifted/Pendelhaven.java b/Mage.Sets/src/mage/sets/timeshifted/Pendelhaven.java index 4718db53ff5..c6b870b231f 100644 --- a/Mage.Sets/src/mage/sets/timeshifted/Pendelhaven.java +++ b/Mage.Sets/src/mage/sets/timeshifted/Pendelhaven.java @@ -40,6 +40,8 @@ import mage.abilities.mana.GreenManaAbility; import mage.cards.CardImpl; import mage.filter.Filter; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.PowerPredicate; +import mage.filter.predicate.mageobject.ToughnessPredicate; import mage.target.common.TargetCreaturePermanent; /** @@ -47,13 +49,11 @@ import mage.target.common.TargetCreaturePermanent; * @author Loki */ public class Pendelhaven extends CardImpl { - private static FilterCreaturePermanent filter = new FilterCreaturePermanent("1/1 creature"); + private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("1/1 creature"); static { - filter.setPower(1); - filter.setPowerComparison(Filter.ComparisonType.Equal); - filter.setToughness(1); - filter.setToughnessComparison(Filter.ComparisonType.Equal); + filter.add(new PowerPredicate(Filter.ComparisonType.Equal, 1)); + filter.add(new ToughnessPredicate(Filter.ComparisonType.Equal, 1)); } public Pendelhaven(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/urzassaga/IntrepidHero.java b/Mage.Sets/src/mage/sets/urzassaga/IntrepidHero.java index ea793a46e46..6de445d50c1 100644 --- a/Mage.Sets/src/mage/sets/urzassaga/IntrepidHero.java +++ b/Mage.Sets/src/mage/sets/urzassaga/IntrepidHero.java @@ -39,6 +39,7 @@ import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; import mage.filter.Filter; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.PowerPredicate; import mage.target.common.TargetCreaturePermanent; /** @@ -50,8 +51,7 @@ public class IntrepidHero extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with power 4 or greater"); static { - filter.setPower(3); - filter.setPowerComparison(Filter.ComparisonType.GreaterThan); + filter.add(new PowerPredicate(Filter.ComparisonType.GreaterThan, 3)); } public IntrepidHero(UUID ownerId) { diff --git a/Mage/src/mage/filter/FilterImpl.java b/Mage/src/mage/filter/FilterImpl.java index 4a11437f2ab..bbbc1662b05 100644 --- a/Mage/src/mage/filter/FilterImpl.java +++ b/Mage/src/mage/filter/FilterImpl.java @@ -61,24 +61,6 @@ public abstract class FilterImpl> implements Filte this.predicates = new LinkedList(filter.predicates); } - protected boolean compareInts(int int1, int int2, ComparisonType type) { - switch (type) { - case Equal: - if (int1 != int2) - return false; - break; - case GreaterThan: - if (int1 <= int2) - return false; - break; - case LessThan: - if (int1 >= int2) - return false; - break; - } - return true; - } - @Override public boolean match(E e, Game game) { for (int i = 0; i < predicates.size(); i++) { diff --git a/Mage/src/mage/filter/FilterObject.java b/Mage/src/mage/filter/FilterObject.java index 6651deeee07..df5b7990fad 100644 --- a/Mage/src/mage/filter/FilterObject.java +++ b/Mage/src/mage/filter/FilterObject.java @@ -64,10 +64,6 @@ public class FilterObject> ex protected List supertype = new ArrayList(); protected ComparisonScope scopeSupertype = ComparisonScope.Any; protected boolean notSupertype; - protected int power; - protected ComparisonType powerComparison; - protected int toughness; - protected ComparisonType toughnessComparison; /** * Indicates that filter shouldn't match the source. @@ -105,10 +101,6 @@ public class FilterObject> ex this.supertype.addAll(filter.supertype); this.scopeSupertype = filter.scopeSupertype; this.notSupertype = filter.notSupertype; - this.power = filter.power; - this.powerComparison = filter.powerComparison; - this.toughness = filter.toughness; - this.toughnessComparison = filter.toughnessComparison; this.another = filter.another; } @@ -175,16 +167,6 @@ public class FilterObject> ex return notFilter; } - if (powerComparison != null) { - if (!compareInts(object.getPower().getValue(), power, powerComparison)) - return notFilter; - } - - if (toughnessComparison != null) { - if (!compareInts(object.getToughness().getValue(), toughness, toughnessComparison)) - return notFilter; - } - return !notFilter; } @@ -252,22 +234,6 @@ public class FilterObject> ex this.notSupertype = notSupertype; } - public void setPower(int power) { - this.power = power; - } - - public void setPowerComparison(ComparisonType powerComparison) { - this.powerComparison = powerComparison; - } - - public void setToughness(int toughness) { - this.toughness = toughness; - } - - public void setToughnessComparison(ComparisonType toughnessComparison) { - this.toughnessComparison = toughnessComparison; - } - public void setUseColor(boolean useColor) { this.useColor = useColor; } From 91d320eed2756a4e0cb4c27c1204f87b32c2492f Mon Sep 17 00:00:00 2001 From: North Date: Wed, 11 Jul 2012 00:17:10 +0300 Subject: [PATCH 05/12] [filters] Replaced Supertype condition with Predicate --- .../sets/alarareborn/FieldmistBorderpost.java | 6 ++--- .../sets/alarareborn/FirewildBorderpost.java | 6 ++--- .../sets/alarareborn/MistveinBorderpost.java | 4 ++-- .../sets/alarareborn/VeinfireBorderpost.java | 6 ++--- .../sets/alarareborn/WildfieldBorderpost.java | 6 ++--- .../betrayersofkamigawa/DayOfDestiny.java | 5 ++-- .../sets/betrayersofkamigawa/HerosDemise.java | 5 ++-- .../championsofkamigawa/BlindWithAnger.java | 7 +++--- .../championsofkamigawa/EiganjoCastle.java | 5 ++-- .../championsofkamigawa/HonorWornShaku.java | 5 ++-- .../championsofkamigawa/KitsuneHealer.java | 5 ++-- .../championsofkamigawa/KondasBanner.java | 5 ++-- .../championsofkamigawa/KondasHatamoto.java | 4 ++-- .../MinamoSchoolAtWatersEdge.java | 5 ++-- .../OkinaTempleToTheGrandfathers.java | 5 ++-- .../ShinkaTheBloodsoakedKeep.java | 5 ++-- .../ShizoDeathsStorehouse.java | 5 ++-- .../championsofkamigawa/TenzaGodosMaul.java | 4 ++-- .../sets/championsofkamigawa/TimeOfNeed.java | 6 ++--- .../championsofkamigawa/ZoZuThePunisher.java | 5 ++-- .../mage/sets/innistrad/GallowsWarden.java | 2 -- .../mage/sets/magic2010/GoblinChieftain.java | 2 -- .../sets/newphyrexia/SurgicalExtraction.java | 5 ++-- .../saviorsofkamigawa/KashiTribeElite.java | 4 ++-- .../RekiTheHistoryOfKamigawa.java | 5 ++-- .../mage/sets/shardsofalara/BantPanorama.java | 3 ++- .../sets/shardsofalara/EsperPanorama.java | 3 ++- .../sets/shardsofalara/GrixisPanorama.java | 3 ++- .../mage/sets/shardsofalara/JundPanorama.java | 3 ++- .../mage/sets/shardsofalara/NayaPanorama.java | 3 ++- .../src/mage/sets/tempest/Earthcraft.java | 4 ++-- .../src/mage/sets/tempest/Wasteland.java | 8 +++---- .../src/mage/sets/worldwake/HammerOfRuin.java | 1 - .../src/mage/sets/worldwake/PilgrimsEye.java | 3 ++- .../mage/sets/zendikar/TrailblazersBoots.java | 4 +++- Mage/src/mage/filter/FilterObject.java | 23 ------------------- .../filter/common/FilterBasicLandCard.java | 4 ++-- .../common/FilterLegendaryPermanent.java | 3 ++- ...Supertype.java => SupertypePredicate.java} | 4 ++-- .../target/common/TargetBasicLandCard.java | 4 ++-- 40 files changed, 81 insertions(+), 114 deletions(-) rename Mage/src/mage/filter/predicate/mageobject/{Supertype.java => SupertypePredicate.java} (91%) diff --git a/Mage.Sets/src/mage/sets/alarareborn/FieldmistBorderpost.java b/Mage.Sets/src/mage/sets/alarareborn/FieldmistBorderpost.java index 54f26811072..cd8ac7fe055 100644 --- a/Mage.Sets/src/mage/sets/alarareborn/FieldmistBorderpost.java +++ b/Mage.Sets/src/mage/sets/alarareborn/FieldmistBorderpost.java @@ -42,6 +42,7 @@ import mage.abilities.mana.WhiteManaAbility; import mage.cards.CardImpl; import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.SupertypePredicate; import mage.target.common.TargetControlledPermanent; /** @@ -49,14 +50,13 @@ import mage.target.common.TargetControlledPermanent; * @author Loki */ public class FieldmistBorderpost extends CardImpl { - private static FilterControlledPermanent filter = new FilterControlledPermanent("basic land"); + private static final FilterControlledPermanent filter = new FilterControlledPermanent("basic land"); private static final String COST_DESCRIPTION = "pay {1} and return a basic land you control to its owner's hand"; private static final String ALTERNATIVE_COST_DESCRIPTION = "You may pay {1} and return a basic land you control to its owner's hand rather than pay Fieldmist Borderpost's mana cost"; static { - filter.getSupertype().add("Basic"); - filter.setScopeSupertype(Filter.ComparisonScope.Any); + filter.add(new SupertypePredicate("Basic")); filter.getCardType().add(CardType.LAND); filter.setScopeCardType(Filter.ComparisonScope.Any); } diff --git a/Mage.Sets/src/mage/sets/alarareborn/FirewildBorderpost.java b/Mage.Sets/src/mage/sets/alarareborn/FirewildBorderpost.java index b54542044e1..d085096ece3 100644 --- a/Mage.Sets/src/mage/sets/alarareborn/FirewildBorderpost.java +++ b/Mage.Sets/src/mage/sets/alarareborn/FirewildBorderpost.java @@ -42,6 +42,7 @@ import mage.abilities.mana.RedManaAbility; import mage.cards.CardImpl; import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.SupertypePredicate; import mage.target.common.TargetControlledPermanent; /** @@ -49,14 +50,13 @@ import mage.target.common.TargetControlledPermanent; * @author Loki */ public class FirewildBorderpost extends CardImpl { - private static FilterControlledPermanent filter = new FilterControlledPermanent("basic land"); + private static final FilterControlledPermanent filter = new FilterControlledPermanent("basic land"); private static final String COST_DESCRIPTION = "pay {1} and return a basic land you control to its owner's hand"; private static final String ALTERNATIVE_COST_DESCRIPTION = "You may pay {1} and return a basic land you control to its owner's hand rather than pay Firewild Borderpost's mana cost"; static { - filter.getSupertype().add("Basic"); - filter.setScopeSupertype(Filter.ComparisonScope.Any); + filter.add(new SupertypePredicate("Basic")); filter.getCardType().add(CardType.LAND); filter.setScopeCardType(Filter.ComparisonScope.Any); } diff --git a/Mage.Sets/src/mage/sets/alarareborn/MistveinBorderpost.java b/Mage.Sets/src/mage/sets/alarareborn/MistveinBorderpost.java index c61d66fa0e1..898cd607a97 100644 --- a/Mage.Sets/src/mage/sets/alarareborn/MistveinBorderpost.java +++ b/Mage.Sets/src/mage/sets/alarareborn/MistveinBorderpost.java @@ -42,6 +42,7 @@ import mage.abilities.mana.BlueManaAbility; import mage.cards.CardImpl; import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.SupertypePredicate; import mage.target.common.TargetControlledPermanent; /** @@ -55,8 +56,7 @@ public class MistveinBorderpost extends CardImpl { private static final String ALTERNATIVE_COST_DESCRIPTION = "You may pay {1} and return a basic land you control to its owner's hand rather than pay Mistvein Borderpos's mana cost"; static { - filter.getSupertype().add("Basic"); - filter.setScopeSupertype(Filter.ComparisonScope.Any); + filter.add(new SupertypePredicate("Basic")); filter.getCardType().add(CardType.LAND); filter.setScopeCardType(Filter.ComparisonScope.Any); } diff --git a/Mage.Sets/src/mage/sets/alarareborn/VeinfireBorderpost.java b/Mage.Sets/src/mage/sets/alarareborn/VeinfireBorderpost.java index f5c6737bb04..bc69e67a289 100644 --- a/Mage.Sets/src/mage/sets/alarareborn/VeinfireBorderpost.java +++ b/Mage.Sets/src/mage/sets/alarareborn/VeinfireBorderpost.java @@ -42,6 +42,7 @@ import mage.abilities.mana.RedManaAbility; import mage.cards.CardImpl; import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.SupertypePredicate; import mage.target.common.TargetControlledPermanent; /** @@ -49,14 +50,13 @@ import mage.target.common.TargetControlledPermanent; * @author Loki */ public class VeinfireBorderpost extends CardImpl { - private static FilterControlledPermanent filter = new FilterControlledPermanent("basic land"); + private static final FilterControlledPermanent filter = new FilterControlledPermanent("basic land"); private static final String COST_DESCRIPTION = "pay {1} and return a basic land you control to its owner's hand"; private static final String ALTERNATIVE_COST_DESCRIPTION = "You may pay {1} and return a basic land you control to its owner's hand rather than pay Veinfire Borderpost's mana cost"; static { - filter.getSupertype().add("Basic"); - filter.setScopeSupertype(Filter.ComparisonScope.Any); + filter.add(new SupertypePredicate("Basic")); filter.getCardType().add(CardType.LAND); filter.setScopeCardType(Filter.ComparisonScope.Any); } diff --git a/Mage.Sets/src/mage/sets/alarareborn/WildfieldBorderpost.java b/Mage.Sets/src/mage/sets/alarareborn/WildfieldBorderpost.java index 1e346044c33..63f25220689 100644 --- a/Mage.Sets/src/mage/sets/alarareborn/WildfieldBorderpost.java +++ b/Mage.Sets/src/mage/sets/alarareborn/WildfieldBorderpost.java @@ -42,6 +42,7 @@ import mage.abilities.mana.WhiteManaAbility; import mage.cards.CardImpl; import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.SupertypePredicate; import mage.target.common.TargetControlledPermanent; /** @@ -49,14 +50,13 @@ import mage.target.common.TargetControlledPermanent; * @author Loki */ public class WildfieldBorderpost extends CardImpl { - private static FilterControlledPermanent filter = new FilterControlledPermanent("basic land"); + private static final FilterControlledPermanent filter = new FilterControlledPermanent("basic land"); private static final String COST_DESCRIPTION = "pay {1} and return a basic land you control to its owner's hand"; private static final String ALTERNATIVE_COST_DESCRIPTION = "You may pay {1} and return a basic land you control to its owner's hand rather than pay Wildfield Borderpost's mana cost"; static { - filter.getSupertype().add("Basic"); - filter.setScopeSupertype(Filter.ComparisonScope.Any); + filter.add(new SupertypePredicate("Basic")); filter.getCardType().add(CardType.LAND); filter.setScopeCardType(Filter.ComparisonScope.Any); } diff --git a/Mage.Sets/src/mage/sets/betrayersofkamigawa/DayOfDestiny.java b/Mage.Sets/src/mage/sets/betrayersofkamigawa/DayOfDestiny.java index 79dfe6ae2f1..1d6b364f8b9 100644 --- a/Mage.Sets/src/mage/sets/betrayersofkamigawa/DayOfDestiny.java +++ b/Mage.Sets/src/mage/sets/betrayersofkamigawa/DayOfDestiny.java @@ -35,8 +35,8 @@ import mage.Constants.Rarity; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.common.continious.BoostControlledEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SupertypePredicate; /** * @@ -47,8 +47,7 @@ public class DayOfDestiny extends CardImpl { private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("Legendary creatures"); static { - filter.getSupertype().add("Legendary"); - filter.setScopeSupertype(Filter.ComparisonScope.Any); + filter.add(new SupertypePredicate("Legendary")); } public DayOfDestiny(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/betrayersofkamigawa/HerosDemise.java b/Mage.Sets/src/mage/sets/betrayersofkamigawa/HerosDemise.java index dc10152e9b7..2e200daf6d8 100644 --- a/Mage.Sets/src/mage/sets/betrayersofkamigawa/HerosDemise.java +++ b/Mage.Sets/src/mage/sets/betrayersofkamigawa/HerosDemise.java @@ -32,8 +32,8 @@ import mage.Constants.CardType; import mage.Constants.Rarity; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SupertypePredicate; import mage.target.common.TargetCreaturePermanent; /** @@ -45,8 +45,7 @@ public class HerosDemise extends CardImpl { private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("legendary creature"); static { - filter.getSupertype().add("Legendary"); - filter.setScopeSupertype(Filter.ComparisonScope.Any); + filter.add(new SupertypePredicate("Legendary")); } public HerosDemise(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/BlindWithAnger.java b/Mage.Sets/src/mage/sets/championsofkamigawa/BlindWithAnger.java index d0a614f4091..eb2c20f1baf 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/BlindWithAnger.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/BlindWithAnger.java @@ -38,8 +38,9 @@ import mage.abilities.effects.common.continious.GainAbilityTargetEffect; import mage.abilities.effects.common.continious.GainControlTargetEffect; import mage.abilities.keyword.HasteAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.SupertypePredicate; import mage.target.Target; import mage.target.common.TargetCreaturePermanent; @@ -51,9 +52,7 @@ public class BlindWithAnger extends CardImpl { private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("nonlegendary creature"); static { - filter.getSupertype().add("Legendary"); - filter.setNotSupertype(true); - filter.setScopeSupertype(Filter.ComparisonScope.Any); + filter.add(Predicates.not(new SupertypePredicate("Legendary"))); } public BlindWithAnger(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/EiganjoCastle.java b/Mage.Sets/src/mage/sets/championsofkamigawa/EiganjoCastle.java index ebc20852722..df597363293 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/EiganjoCastle.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/EiganjoCastle.java @@ -40,8 +40,8 @@ import mage.abilities.costs.mana.ColoredManaCost; import mage.abilities.effects.common.PreventDamageTargetEffect; import mage.abilities.mana.WhiteManaAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SupertypePredicate; import mage.target.TargetPermanent; /** @@ -52,8 +52,7 @@ public class EiganjoCastle extends CardImpl { private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("legendary creature"); static { - filter.getSupertype().add("Legendary"); - filter.setScopeSupertype(Filter.ComparisonScope.Any); + filter.add(new SupertypePredicate("Legendary")); } public EiganjoCastle(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/HonorWornShaku.java b/Mage.Sets/src/mage/sets/championsofkamigawa/HonorWornShaku.java index 0c66b2b8ca8..69331e6c29e 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/HonorWornShaku.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/HonorWornShaku.java @@ -39,8 +39,8 @@ import mage.abilities.costs.common.TapTargetCost; import mage.abilities.effects.common.UntapSourceEffect; import mage.abilities.mana.ColorlessManaAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.SupertypePredicate; import mage.target.common.TargetControlledPermanent; /** @@ -53,8 +53,7 @@ public class HonorWornShaku extends CardImpl { static { filter.setTapped(false); filter.setUseTapped(true); - filter.getSupertype().add("Legendary"); - filter.setScopeSupertype(Filter.ComparisonScope.Any); + filter.add(new SupertypePredicate("Legendary")); } public HonorWornShaku(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/KitsuneHealer.java b/Mage.Sets/src/mage/sets/championsofkamigawa/KitsuneHealer.java index 6050fb5dccb..caad94420ed 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/KitsuneHealer.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/KitsuneHealer.java @@ -40,8 +40,8 @@ import mage.abilities.costs.common.TapSourceCost; import mage.abilities.effects.PreventionEffectImpl; import mage.abilities.effects.common.PreventDamageTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SupertypePredicate; import mage.game.Game; import mage.game.events.GameEvent; import mage.target.common.TargetCreatureOrPlayer; @@ -55,8 +55,7 @@ public class KitsuneHealer extends CardImpl { private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("legendary creature"); static { - filter.getSupertype().add("Legendary"); - filter.setScopeSupertype(Filter.ComparisonScope.Any); + filter.add(new SupertypePredicate("Legendary")); } public KitsuneHealer(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/KondasBanner.java b/Mage.Sets/src/mage/sets/championsofkamigawa/KondasBanner.java index da3aaff0fcf..bad325b3333 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/KondasBanner.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/KondasBanner.java @@ -40,9 +40,9 @@ import mage.abilities.effects.common.continious.BoostAllEffect; import mage.abilities.keyword.ChangelingAbility; import mage.abilities.keyword.EquipAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SupertypePredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.target.common.TargetControlledCreaturePermanent; @@ -58,8 +58,7 @@ public class KondasBanner extends CardImpl { private final static FilterControlledCreaturePermanent legendaryFilter = new FilterControlledCreaturePermanent("Legendary creatures"); static { - legendaryFilter.getSupertype().add("Legendary"); - legendaryFilter.setScopeSupertype(Filter.ComparisonScope.Any); + legendaryFilter.add(new SupertypePredicate("Legendary")); } public KondasBanner(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/KondasHatamoto.java b/Mage.Sets/src/mage/sets/championsofkamigawa/KondasHatamoto.java index a70459e9980..156b05d871e 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/KondasHatamoto.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/KondasHatamoto.java @@ -43,6 +43,7 @@ import mage.abilities.keyword.VigilanceAbility; import mage.cards.CardImpl; import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.SupertypePredicate; /** * @@ -55,8 +56,7 @@ public class KondasHatamoto extends CardImpl{ private static final String rule2 = "As long as you control a legendary Samurai, {this} has vigilance"; static { - filter.getSupertype().add("Legendary"); - filter.setScopeSupertype(Filter.ComparisonScope.Any); + filter.add(new SupertypePredicate("Legendary")); filter.getSubtype().add("Samurai"); filter.setScopeSubtype(Filter.ComparisonScope.Any); } diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/MinamoSchoolAtWatersEdge.java b/Mage.Sets/src/mage/sets/championsofkamigawa/MinamoSchoolAtWatersEdge.java index 592522e99b4..6370fd16ae2 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/MinamoSchoolAtWatersEdge.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/MinamoSchoolAtWatersEdge.java @@ -40,8 +40,8 @@ import mage.abilities.costs.mana.ColoredManaCost; import mage.abilities.effects.common.UntapTargetEffect; import mage.abilities.mana.BlueManaAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.SupertypePredicate; import mage.target.TargetPermanent; /** @@ -53,8 +53,7 @@ public class MinamoSchoolAtWatersEdge extends CardImpl private final static FilterPermanent filter = new FilterPermanent("legendary permanent"); static { - filter.getSupertype().add("Legendary"); - filter.setScopeSupertype(Filter.ComparisonScope.Any); + filter.add(new SupertypePredicate("Legendary")); } diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/OkinaTempleToTheGrandfathers.java b/Mage.Sets/src/mage/sets/championsofkamigawa/OkinaTempleToTheGrandfathers.java index 9e1c1dfb737..3b187152655 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/OkinaTempleToTheGrandfathers.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/OkinaTempleToTheGrandfathers.java @@ -40,8 +40,8 @@ import mage.abilities.costs.mana.ColoredManaCost; import mage.abilities.effects.common.continious.BoostTargetEffect; import mage.abilities.mana.GreenManaAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SupertypePredicate; import mage.target.TargetPermanent; /** @@ -52,8 +52,7 @@ public class OkinaTempleToTheGrandfathers extends CardImpl private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("legendary creature"); static { - filter.getSupertype().add("Legendary"); - filter.setScopeSupertype(Filter.ComparisonScope.Any); + filter.add(new SupertypePredicate("Legendary")); } public ShinkaTheBloodsoakedKeep(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/ShizoDeathsStorehouse.java b/Mage.Sets/src/mage/sets/championsofkamigawa/ShizoDeathsStorehouse.java index 0ebb4681ef0..4adceae0c12 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/ShizoDeathsStorehouse.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/ShizoDeathsStorehouse.java @@ -41,8 +41,8 @@ import mage.abilities.effects.common.continious.GainAbilityTargetEffect; import mage.abilities.keyword.FearAbility; import mage.abilities.mana.BlackManaAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SupertypePredicate; import mage.target.TargetPermanent; /** @@ -53,8 +53,7 @@ public class ShizoDeathsStorehouse extends CardImpl { private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("legendary creature"); static { - filter.getSupertype().add("Legendary"); - filter.setScopeSupertype(Filter.ComparisonScope.Any); + filter.add(new SupertypePredicate("Legendary")); } public ShizoDeathsStorehouse(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/TenzaGodosMaul.java b/Mage.Sets/src/mage/sets/championsofkamigawa/TenzaGodosMaul.java index 54fb7c589cd..9ed66d7f53d 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/TenzaGodosMaul.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/TenzaGodosMaul.java @@ -46,6 +46,7 @@ import mage.abilities.keyword.TrampleAbility; import mage.cards.CardImpl; import mage.filter.Filter; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SupertypePredicate; import mage.target.common.TargetControlledCreaturePermanent; /** @@ -62,8 +63,7 @@ public class TenzaGodosMaul extends CardImpl { private final static FilterCreaturePermanent redFilter = new FilterCreaturePermanent("red"); static { - legendaryFilter.getSupertype().add("Legendary"); - legendaryFilter.setScopeSupertype(Filter.ComparisonScope.Any); + legendaryFilter.add(new SupertypePredicate("Legendary")); redFilter.getColor().setRed(true); redFilter.setUseColor(true); redFilter.setScopeColor(Filter.ComparisonScope.Any); diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/TimeOfNeed.java b/Mage.Sets/src/mage/sets/championsofkamigawa/TimeOfNeed.java index a5de20ec183..ce02a0e2b38 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/TimeOfNeed.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/TimeOfNeed.java @@ -34,8 +34,8 @@ import mage.Constants.CardType; import mage.Constants.Rarity; import mage.abilities.effects.common.search.SearchLibraryRevealPutInHandEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.SupertypePredicate; import mage.target.common.TargetCardInLibrary; /** @@ -47,9 +47,7 @@ public class TimeOfNeed extends CardImpl { static { filter.getCardType().add(CardType.CREATURE); - filter.getSupertype().add("Legendary"); - filter.setScopeCardType(Filter.ComparisonScope.Any); - filter.setScopeSupertype(Filter.ComparisonScope.Any); + filter.add(new SupertypePredicate("Legendary")); } public TimeOfNeed(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/ZoZuThePunisher.java b/Mage.Sets/src/mage/sets/championsofkamigawa/ZoZuThePunisher.java index bbfd32ad3b2..268b0a95ed6 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/ZoZuThePunisher.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/ZoZuThePunisher.java @@ -37,8 +37,8 @@ import mage.abilities.TriggeredAbilityImpl; import mage.abilities.effects.Effect; import mage.abilities.effects.common.DamageTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.SupertypePredicate; import mage.game.Game; import mage.game.events.GameEvent; import mage.game.events.ZoneChangeEvent; @@ -55,8 +55,7 @@ public class ZoZuThePunisher extends CardImpl { private final static FilterCard filter = new FilterCard("legendary spell"); static { - filter.getSupertype().add("Legendary"); - filter.setScopeSupertype(Filter.ComparisonScope.Any); + filter.add(new SupertypePredicate("Legendary")); } public ZoZuThePunisher(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/innistrad/GallowsWarden.java b/Mage.Sets/src/mage/sets/innistrad/GallowsWarden.java index 5e8d989ea0b..08ce6d5641f 100644 --- a/Mage.Sets/src/mage/sets/innistrad/GallowsWarden.java +++ b/Mage.Sets/src/mage/sets/innistrad/GallowsWarden.java @@ -35,7 +35,6 @@ import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.common.continious.BoostControlledEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterCreaturePermanent; import java.util.UUID; @@ -49,7 +48,6 @@ public class GallowsWarden extends CardImpl { static { filter.getSubtype().add("Spirit"); - filter.setScopeSupertype(Filter.ComparisonScope.Any); } public GallowsWarden(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/magic2010/GoblinChieftain.java b/Mage.Sets/src/mage/sets/magic2010/GoblinChieftain.java index c7d07e536cf..d5beb5f1d9f 100644 --- a/Mage.Sets/src/mage/sets/magic2010/GoblinChieftain.java +++ b/Mage.Sets/src/mage/sets/magic2010/GoblinChieftain.java @@ -39,7 +39,6 @@ import mage.abilities.effects.common.continious.BoostControlledEffect; import mage.abilities.effects.common.continious.GainAbilityControlledEffect; import mage.abilities.keyword.HasteAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterCreaturePermanent; /** @@ -52,7 +51,6 @@ public class GoblinChieftain extends CardImpl { static { filter.getSubtype().add("Goblin"); - filter.setScopeSupertype(Filter.ComparisonScope.Any); } public GoblinChieftain(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/newphyrexia/SurgicalExtraction.java b/Mage.Sets/src/mage/sets/newphyrexia/SurgicalExtraction.java index 43f5ebd262a..b285f874d4a 100644 --- a/Mage.Sets/src/mage/sets/newphyrexia/SurgicalExtraction.java +++ b/Mage.Sets/src/mage/sets/newphyrexia/SurgicalExtraction.java @@ -40,7 +40,9 @@ import mage.cards.CardImpl; import mage.cards.Cards; import mage.cards.CardsImpl; import mage.filter.FilterCard; +import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.NamePredicate; +import mage.filter.predicate.mageobject.SupertypePredicate; import mage.game.Game; import mage.players.Player; import mage.target.common.TargetCardInGraveyard; @@ -56,8 +58,7 @@ public class SurgicalExtraction extends CardImpl { private static final FilterCard filter = new FilterCard("card in a graveyard other than a basic land card"); static { - filter.getSupertype().add("Basic"); - filter.setNotSupertype(true); + filter.add(Predicates.not(new SupertypePredicate("Basic"))); } public SurgicalExtraction(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/saviorsofkamigawa/KashiTribeElite.java b/Mage.Sets/src/mage/sets/saviorsofkamigawa/KashiTribeElite.java index 6b5a0b9607e..db31a3a8e64 100644 --- a/Mage.Sets/src/mage/sets/saviorsofkamigawa/KashiTribeElite.java +++ b/Mage.Sets/src/mage/sets/saviorsofkamigawa/KashiTribeElite.java @@ -42,6 +42,7 @@ import mage.abilities.keyword.ShroudAbility; import mage.cards.CardImpl; import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.SupertypePredicate; /** * @@ -52,8 +53,7 @@ public class KashiTribeElite extends CardImpl { private final static FilterControlledPermanent filter = new FilterControlledPermanent("Legendary Snakes"); static { - filter.getSupertype().add("Legendary"); - filter.setScopeSupertype(Filter.ComparisonScope.Any); + filter.add(new SupertypePredicate("Legendary")); filter.getSubtype().add("Snake"); filter.setScopeSubtype(Filter.ComparisonScope.Any); } diff --git a/Mage.Sets/src/mage/sets/saviorsofkamigawa/RekiTheHistoryOfKamigawa.java b/Mage.Sets/src/mage/sets/saviorsofkamigawa/RekiTheHistoryOfKamigawa.java index 8293e91eeb9..1c46b17f230 100644 --- a/Mage.Sets/src/mage/sets/saviorsofkamigawa/RekiTheHistoryOfKamigawa.java +++ b/Mage.Sets/src/mage/sets/saviorsofkamigawa/RekiTheHistoryOfKamigawa.java @@ -34,8 +34,8 @@ import mage.MageInt; import mage.abilities.common.SpellCastTriggeredAbility; import mage.abilities.effects.common.DrawCardControllerEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterSpell; +import mage.filter.predicate.mageobject.SupertypePredicate; /** * @@ -46,8 +46,7 @@ public class RekiTheHistoryOfKamigawa extends CardImpl private final static FilterSpell filter = new FilterSpell("legendary spell"); static { - filter.getSupertype().add("Legendary"); - filter.setScopeSupertype(Filter.ComparisonScope.Any); + filter.add(new SupertypePredicate("Legendary")); } public RekiTheHistoryOfKamigawa(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/shardsofalara/BantPanorama.java b/Mage.Sets/src/mage/sets/shardsofalara/BantPanorama.java index 185a5bbb79e..fd05a5c92ec 100644 --- a/Mage.Sets/src/mage/sets/shardsofalara/BantPanorama.java +++ b/Mage.Sets/src/mage/sets/shardsofalara/BantPanorama.java @@ -42,6 +42,7 @@ import mage.abilities.mana.ColorlessManaAbility; import mage.cards.CardImpl; import mage.filter.Filter.ComparisonScope; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.SupertypePredicate; import mage.target.common.TargetCardInLibrary; /** @@ -54,7 +55,7 @@ public class BantPanorama extends CardImpl { static { filter.getCardType().add(CardType.LAND); - filter.getSupertype().add("Basic"); + filter.add(new SupertypePredicate("Basic")); filter.getSubtype().add("Forest"); filter.getSubtype().add("Plains"); filter.getSubtype().add("Island"); diff --git a/Mage.Sets/src/mage/sets/shardsofalara/EsperPanorama.java b/Mage.Sets/src/mage/sets/shardsofalara/EsperPanorama.java index c39a4165db6..6a5e55cb789 100644 --- a/Mage.Sets/src/mage/sets/shardsofalara/EsperPanorama.java +++ b/Mage.Sets/src/mage/sets/shardsofalara/EsperPanorama.java @@ -42,6 +42,7 @@ import mage.abilities.mana.ColorlessManaAbility; import mage.cards.CardImpl; import mage.filter.Filter.ComparisonScope; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.SupertypePredicate; import mage.target.common.TargetCardInLibrary; /** @@ -54,7 +55,7 @@ public class EsperPanorama extends CardImpl { static { filter.getCardType().add(CardType.LAND); - filter.getSupertype().add("Basic"); + filter.add(new SupertypePredicate("Basic")); filter.getSubtype().add("Plains"); filter.getSubtype().add("Island"); filter.getSubtype().add("Swamp"); diff --git a/Mage.Sets/src/mage/sets/shardsofalara/GrixisPanorama.java b/Mage.Sets/src/mage/sets/shardsofalara/GrixisPanorama.java index 66d92e307d0..918869453af 100644 --- a/Mage.Sets/src/mage/sets/shardsofalara/GrixisPanorama.java +++ b/Mage.Sets/src/mage/sets/shardsofalara/GrixisPanorama.java @@ -42,6 +42,7 @@ import mage.abilities.mana.ColorlessManaAbility; import mage.cards.CardImpl; import mage.filter.Filter.ComparisonScope; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.SupertypePredicate; import mage.target.common.TargetCardInLibrary; /** @@ -54,7 +55,7 @@ public class GrixisPanorama extends CardImpl { static { filter.getCardType().add(CardType.LAND); - filter.getSupertype().add("Basic"); + filter.add(new SupertypePredicate("Basic")); filter.getSubtype().add("Island"); filter.getSubtype().add("Swamp"); filter.getSubtype().add("Mountain"); diff --git a/Mage.Sets/src/mage/sets/shardsofalara/JundPanorama.java b/Mage.Sets/src/mage/sets/shardsofalara/JundPanorama.java index fd869f74648..2f705be1fa6 100644 --- a/Mage.Sets/src/mage/sets/shardsofalara/JundPanorama.java +++ b/Mage.Sets/src/mage/sets/shardsofalara/JundPanorama.java @@ -43,6 +43,7 @@ import mage.abilities.mana.ColorlessManaAbility; import mage.cards.CardImpl; import mage.filter.Filter; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.SupertypePredicate; import mage.target.common.TargetCardInLibrary; /** @@ -55,7 +56,7 @@ public class JundPanorama extends CardImpl { static { filter.getCardType().add(CardType.LAND); - filter.getSupertype().add("Basic"); + filter.add(new SupertypePredicate("Basic")); filter.getSubtype().add("Swamp"); filter.getSubtype().add("Mountain"); filter.getSubtype().add("Forest"); diff --git a/Mage.Sets/src/mage/sets/shardsofalara/NayaPanorama.java b/Mage.Sets/src/mage/sets/shardsofalara/NayaPanorama.java index dfaa5f94210..265ff508e26 100644 --- a/Mage.Sets/src/mage/sets/shardsofalara/NayaPanorama.java +++ b/Mage.Sets/src/mage/sets/shardsofalara/NayaPanorama.java @@ -42,6 +42,7 @@ import mage.abilities.mana.ColorlessManaAbility; import mage.cards.CardImpl; import mage.filter.Filter.ComparisonScope; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.SupertypePredicate; import mage.target.common.TargetCardInLibrary; /** @@ -54,7 +55,7 @@ public class NayaPanorama extends CardImpl { static { filter.getCardType().add(CardType.LAND); - filter.getSupertype().add("Basic"); + filter.add(new SupertypePredicate("Basic")); filter.getSubtype().add("Mountain"); filter.getSubtype().add("Forest"); filter.getSubtype().add("Plains"); diff --git a/Mage.Sets/src/mage/sets/tempest/Earthcraft.java b/Mage.Sets/src/mage/sets/tempest/Earthcraft.java index ac9438bf5d3..fb4a9cedeb1 100644 --- a/Mage.Sets/src/mage/sets/tempest/Earthcraft.java +++ b/Mage.Sets/src/mage/sets/tempest/Earthcraft.java @@ -40,6 +40,7 @@ import mage.cards.CardImpl; import mage.filter.Filter; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.SupertypePredicate; import mage.target.common.TargetControlledCreaturePermanent; import mage.target.common.TargetControlledPermanent; @@ -58,8 +59,7 @@ public class Earthcraft extends CardImpl { filterCreature.setScopeSubtype(Filter.ComparisonScope.Any); filterLand.getCardType().add(CardType.LAND); filterLand.setScopeCardType(Filter.ComparisonScope.Any); - filterLand.getSupertype().add("Basic"); - filterLand.setScopeSupertype(Filter.ComparisonScope.Any); + filterLand.add(new SupertypePredicate("Basic")); } public Earthcraft(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/tempest/Wasteland.java b/Mage.Sets/src/mage/sets/tempest/Wasteland.java index 2ef2d6da8f1..6bbadf590cb 100644 --- a/Mage.Sets/src/mage/sets/tempest/Wasteland.java +++ b/Mage.Sets/src/mage/sets/tempest/Wasteland.java @@ -39,8 +39,9 @@ import mage.abilities.costs.common.TapSourceCost; import mage.abilities.effects.common.DestroyTargetEffect; import mage.abilities.mana.ColorlessManaAbility; import mage.cards.CardImpl; -import mage.filter.common.FilterLandCard; import mage.filter.common.FilterLandPermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.SupertypePredicate; import mage.target.common.TargetLandPermanent; /** @@ -48,11 +49,10 @@ import mage.target.common.TargetLandPermanent; * @author Loki */ public class Wasteland extends CardImpl { - private static FilterLandPermanent filter = new FilterLandPermanent("nonbasic land"); + private static final FilterLandPermanent filter = new FilterLandPermanent("nonbasic land"); static { - filter.getSupertype().add("Basic"); - filter.setNotSupertype(true); + filter.add(Predicates.not(new SupertypePredicate("Basic"))); } public Wasteland(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/worldwake/HammerOfRuin.java b/Mage.Sets/src/mage/sets/worldwake/HammerOfRuin.java index 6fd97282b9d..29c00495cf9 100644 --- a/Mage.Sets/src/mage/sets/worldwake/HammerOfRuin.java +++ b/Mage.Sets/src/mage/sets/worldwake/HammerOfRuin.java @@ -80,7 +80,6 @@ class HammerOfRuinTriggeredAbility extends TriggeredAbilityImpl { private static final FilterCard filter = new FilterCard("basic land card"); static { - filter.getSupertype().add("Basic"); + filter.add(new SupertypePredicate("Basic")); filter.getCardType().add(CardType.LAND); } diff --git a/Mage.Sets/src/mage/sets/zendikar/TrailblazersBoots.java b/Mage.Sets/src/mage/sets/zendikar/TrailblazersBoots.java index 0a0f88375e6..089a7cae6c6 100644 --- a/Mage.Sets/src/mage/sets/zendikar/TrailblazersBoots.java +++ b/Mage.Sets/src/mage/sets/zendikar/TrailblazersBoots.java @@ -40,6 +40,8 @@ import mage.abilities.keyword.EquipAbility; import mage.abilities.keyword.LandwalkAbility; import mage.cards.CardImpl; import mage.filter.common.FilterLandPermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.SupertypePredicate; /** * @@ -73,7 +75,7 @@ class NonbasicLandwalkAbility extends LandwalkAbility { private static final FilterLandPermanent filter = new FilterLandPermanent("nonbasic land"); static { - filter.getSupertype().add("Basic"); + filter.add(Predicates.not(new SupertypePredicate("Basic"))); } public NonbasicLandwalkAbility() { diff --git a/Mage/src/mage/filter/FilterObject.java b/Mage/src/mage/filter/FilterObject.java index df5b7990fad..21042647773 100644 --- a/Mage/src/mage/filter/FilterObject.java +++ b/Mage/src/mage/filter/FilterObject.java @@ -61,9 +61,6 @@ public class FilterObject> ex protected List subtype = new ArrayList(); protected ComparisonScope scopeSubtype = ComparisonScope.All; protected boolean notSubtype; - protected List supertype = new ArrayList(); - protected ComparisonScope scopeSupertype = ComparisonScope.Any; - protected boolean notSupertype; /** * Indicates that filter shouldn't match the source. @@ -98,9 +95,6 @@ public class FilterObject> ex this.subtype.addAll(filter.subtype); this.scopeSubtype = filter.scopeSubtype; this.notSubtype = filter.notSubtype; - this.supertype.addAll(filter.supertype); - this.scopeSupertype = filter.scopeSupertype; - this.notSupertype = filter.notSupertype; this.another = filter.another; } @@ -148,11 +142,6 @@ public class FilterObject> ex } } - if (supertype.size() > 0) { - if (!compString.compare(supertype, object.getSupertype(), scopeSupertype, notSupertype)) - return notFilter; - } - if (abilities.size() > 0) { List test = new ArrayList(abilities); for (Ability ability: object.getAbilities()) { @@ -222,18 +211,6 @@ public class FilterObject> ex this.notSubtype = notSubtype; } - public List getSupertype() { - return this.supertype; - } - - public void setScopeSupertype(ComparisonScope scopeSupertype) { - this.scopeSupertype = scopeSupertype; - } - - public void setNotSupertype(boolean notSupertype) { - this.notSupertype = notSupertype; - } - public void setUseColor(boolean useColor) { this.useColor = useColor; } diff --git a/Mage/src/mage/filter/common/FilterBasicLandCard.java b/Mage/src/mage/filter/common/FilterBasicLandCard.java index afa7efa9abe..9a7d3884280 100644 --- a/Mage/src/mage/filter/common/FilterBasicLandCard.java +++ b/Mage/src/mage/filter/common/FilterBasicLandCard.java @@ -30,6 +30,7 @@ package mage.filter.common; import mage.Constants.CardType; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.SupertypePredicate; /** * @@ -41,8 +42,7 @@ public class FilterBasicLandCard extends FilterCard { super("basic land card"); this.cardType.add(CardType.LAND); this.setScopeCardType(ComparisonScope.Any); - this.supertype.add("Basic"); - this.setScopeSupertype(ComparisonScope.Any); + this.add(new SupertypePredicate("Basic")); } public FilterBasicLandCard(final FilterBasicLandCard filter) { diff --git a/Mage/src/mage/filter/common/FilterLegendaryPermanent.java b/Mage/src/mage/filter/common/FilterLegendaryPermanent.java index df926611165..b9ccafcdddf 100644 --- a/Mage/src/mage/filter/common/FilterLegendaryPermanent.java +++ b/Mage/src/mage/filter/common/FilterLegendaryPermanent.java @@ -29,6 +29,7 @@ package mage.filter.common; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.SupertypePredicate; /** * @@ -42,7 +43,7 @@ public class FilterLegendaryPermanent extends FilterPermanent implements Predicate { +public class SupertypePredicate implements Predicate { private final String supertype; - public Supertype(String supertype) { + public SupertypePredicate(String supertype) { this.supertype = supertype; } diff --git a/Mage/src/mage/target/common/TargetBasicLandCard.java b/Mage/src/mage/target/common/TargetBasicLandCard.java index a03fffa7422..eaadb3da4c0 100644 --- a/Mage/src/mage/target/common/TargetBasicLandCard.java +++ b/Mage/src/mage/target/common/TargetBasicLandCard.java @@ -31,6 +31,7 @@ package mage.target.common; import mage.Constants.CardType; import mage.Constants.Zone; import mage.filter.Filter.ComparisonScope; +import mage.filter.predicate.mageobject.SupertypePredicate; import mage.target.TargetCard; /** @@ -41,8 +42,7 @@ public class TargetBasicLandCard extends TargetCard { public TargetBasicLandCard(Zone zone) { super(zone); - filter.getSupertype().add("Basic"); - filter.setScopeSupertype(ComparisonScope.Any); + filter.add(new SupertypePredicate("Basic")); filter.getCardType().add(CardType.LAND); filter.setScopeCardType(ComparisonScope.Any); } From 2198cae333306e18bf0f4be4cdf04e27ea69297b Mon Sep 17 00:00:00 2001 From: North Date: Wed, 11 Jul 2012 23:59:41 +0300 Subject: [PATCH 06/12] [filters] Replaced Subtype condition with Predicate --- .../mage/sets/alarareborn/LichLordOfUnx.java | 5 ++- .../avacynrestored/AngelOfGlorysRise.java | 8 ++--- .../avacynrestored/BrunaLightOfAlabaster.java | 3 +- .../sets/avacynrestored/DescendantsPath.java | 19 ++++++++--- .../sets/avacynrestored/DevoutChaplain.java | 4 +-- .../sets/avacynrestored/DiregrafEscort.java | 3 +- .../avacynrestored/GallowsAtWillowHill.java | 5 ++- .../sets/avacynrestored/HumanFrailty.java | 3 +- .../avacynrestored/KessigMalcontents.java | 3 +- .../mage/sets/avacynrestored/MassAppeal.java | 3 +- .../sets/avacynrestored/MidnightDuelist.java | 5 ++- .../sets/avacynrestored/RestorationAngel.java | 5 +-- .../sets/avacynrestored/RidersOfGavony.java | 5 +-- .../sets/avacynrestored/RiotRingleader.java | 3 +- .../sets/avacynrestored/ScrollOfAvacyn.java | 7 ++-- .../avacynrestored/ScrollOfGriselbrand.java | 7 ++-- .../betrayersofkamigawa/IreOfKaminari.java | 5 ++- .../IsaoEnlightenedBushi.java | 6 ++-- .../NezumiShadowWatcher.java | 5 ++- .../RibbonsOfTheReikai.java | 6 ++-- .../betrayersofkamigawa/TakenosCavalry.java | 5 ++- .../betrayersofkamigawa/TraprootKami.java | 5 ++- .../AzamiLadyOfScrolls.java | 6 ++-- .../championsofkamigawa/BenBenAkkiHermit.java | 5 ++- .../championsofkamigawa/BloodthirstyOgre.java | 5 ++- .../sets/championsofkamigawa/CallToGlory.java | 5 ++- .../championsofkamigawa/EerieProcession.java | 5 ++- .../sets/championsofkamigawa/HanaKami.java | 5 ++- .../championsofkamigawa/HeWhoHungers.java | 5 ++- .../championsofkamigawa/HisokasDefiance.java | 7 ++-- .../HondenOfCleansingFire.java | 5 ++- .../HondenOfInfiniteRage.java | 5 ++- .../championsofkamigawa/HondenOfLifesWeb.java | 5 ++- .../HondenOfNightsReach.java | 5 ++- .../HondenOfSeeingWinds.java | 5 ++- .../championsofkamigawa/HorobiDeathsWail.java | 5 ++- .../championsofkamigawa/InameDeathAspect.java | 5 ++- .../championsofkamigawa/InameLifeAspect.java | 5 ++- .../championsofkamigawa/KitsuneDiviner.java | 5 ++- .../KitsuneRiftwalker.java | 7 ++-- .../championsofkamigawa/KondasHatamoto.java | 5 ++- .../LongForgottenGohei.java | 3 +- .../championsofkamigawa/MarrowGnawer.java | 10 +++--- .../NagaoBoundByHonor.java | 5 ++- .../championsofkamigawa/NineRingedBo.java | 5 ++- .../championsofkamigawa/PainwrackerOni.java | 5 +-- .../sets/championsofkamigawa/RendFlesh.java | 7 ++-- .../sets/championsofkamigawa/RendSpirit.java | 5 ++- .../SachiDaughterOfSeshiro.java | 5 +-- .../SeshiroTheAnointed.java | 3 +- .../ShisatoWhisperingHunter.java | 5 ++- .../SosukeSonOfSeshiro.java | 5 ++- .../TakenoSamuraiGeneral.java | 7 ++-- .../championsofkamigawa/TheUnspeakable.java | 5 ++- .../championsofkamigawa/VillainousOgre.java | 5 ++- .../sets/conflux/KnightOfTheReliquary.java | 7 ++-- .../sets/darkascension/ArchdemonOfGreed.java | 3 +- .../sets/darkascension/CallToTheKindred.java | 14 +++++--- .../sets/darkascension/ChosenOfMarkov.java | 5 ++- .../darkascension/CurseOfMisfortunes.java | 3 +- .../sets/darkascension/DerangedOutcast.java | 5 ++- .../sets/darkascension/DiregrafCaptain.java | 8 ++--- .../sets/darkascension/DrogskolCaptain.java | 5 ++- .../sets/darkascension/FiendOfTheShadows.java | 5 ++- .../mage/sets/darkascension/Gravecrawler.java | 5 ++- .../darkascension/HavengulRunebinder.java | 5 ++- .../mage/sets/darkascension/Immerwolf.java | 14 +++----- .../darkascension/MikaeusTheUnhallowed.java | 5 +-- .../sets/darkascension/RavenousDemon.java | 9 +++-- .../mage/sets/darkascension/RequiemAngel.java | 9 ++--- .../sets/darkascension/ScorchTheFields.java | 3 +- .../sets/darkascension/SkirsdagFlayer.java | 3 +- .../sets/darkascension/StromkirkCaptain.java | 5 ++- .../sets/darkascension/WolfhuntersQuiver.java | 3 +- .../sets/darkascension/ZombieApocalypse.java | 8 ++--- .../mage/sets/darksteel/BlinkmothNexus.java | 5 ++- .../src/mage/sets/darksteel/MyrMatrix.java | 5 ++- .../sets/darksteel/SteelshaperApprentice.java | 3 +- .../sets/darksteel/WandOfTheElements.java | 8 ++--- .../sets/dissension/HaazdaExonerator.java | 5 ++- .../elspethvstezzeret/DaruEncampment.java | 3 +- .../elspethvstezzeret/MishrasFactory.java | 3 +- .../mage/sets/elspethvstezzeret/Pentavus.java | 5 ++- .../mage/sets/fifthdawn/BeaconOfCreation.java | 5 ++- .../mage/sets/guildpact/SkeletalVampire.java | 5 ++- .../innistrad/AngelOfFlightAlabaster.java | 5 ++- .../mage/sets/innistrad/AngelicOverseer.java | 5 ++- .../mage/sets/innistrad/AvacynianPriest.java | 5 +-- .../sets/innistrad/BattlegroundGeist.java | 5 ++- .../mage/sets/innistrad/BitterheartWitch.java | 3 +- .../mage/sets/innistrad/BloodlineKeeper.java | 5 ++- .../sets/innistrad/CharmbreakerDevils.java | 2 -- .../mage/sets/innistrad/ClifftopRetreat.java | 10 +++--- .../mage/sets/innistrad/DearlyDeparted.java | 5 ++- .../mage/sets/innistrad/EliteInquisitor.java | 11 +++--- .../sets/innistrad/EndlessRanksOfTheDead.java | 3 +- .../mage/sets/innistrad/FullMoonsRise.java | 5 ++- .../mage/sets/innistrad/GallowsWarden.java | 3 +- .../sets/innistrad/GhoulcallersChant.java | 5 ++- .../src/mage/sets/innistrad/Ghoulraiser.java | 5 ++- .../src/mage/sets/innistrad/GraveBramble.java | 5 ++- .../mage/sets/innistrad/HamletCaptain.java | 3 +- .../mage/sets/innistrad/HinterlandHarbor.java | 10 +++--- .../mage/sets/innistrad/HowlpackAlpha.java | 7 ++-- .../mage/sets/innistrad/IsolatedChapel.java | 10 +++--- .../mage/sets/innistrad/LordOfLineage.java | 12 +++---- .../mage/sets/innistrad/MayorOfAvabruck.java | 5 ++- .../src/mage/sets/innistrad/Moonmist.java | 11 +++--- .../mage/sets/innistrad/NightRevelers.java | 3 +- .../mage/sets/innistrad/OliviaVoldaren.java | 10 +++--- .../sets/innistrad/ReaperFromTheAbyss.java | 7 ++-- .../sets/innistrad/SlayerOfTheWicked.java | 11 +++--- .../mage/sets/innistrad/SpareFromEvil.java | 5 +-- .../src/mage/sets/innistrad/SulfurFalls.java | 10 +++--- .../sets/innistrad/TerrorOfKruinPass.java | 5 ++- .../mage/sets/innistrad/UnbreathingHorde.java | 5 +-- .../src/mage/sets/innistrad/VampiricFury.java | 7 ++-- .../mage/sets/innistrad/VictimOfNight.java | 11 +++--- .../mage/sets/innistrad/WoodlandCemetery.java | 10 +++--- .../src/mage/sets/lorwyn/Benthicore.java | 5 ++- .../mage/sets/lorwyn/BlackPoplarShaman.java | 5 ++- .../mage/sets/lorwyn/BoggartBirthRite.java | 5 ++- .../src/mage/sets/lorwyn/CloudgoatRanger.java | 5 ++- .../src/mage/sets/lorwyn/ElvishEulogist.java | 5 ++- .../mage/sets/lorwyn/ElvishHandservant.java | 4 +-- .../src/mage/sets/lorwyn/ElvishPromenade.java | 5 ++- .../mage/sets/lorwyn/EyeblightsEnding.java | 7 ++-- .../src/mage/sets/lorwyn/Facevaulter.java | 5 ++- .../src/mage/sets/lorwyn/FaerieTrickery.java | 5 +-- .../src/mage/sets/lorwyn/Goatnapper.java | 5 ++- .../sets/lorwyn/GuardianOfCloverdell.java | 5 ++- .../src/mage/sets/lorwyn/HarpoonSniper.java | 5 ++- .../src/mage/sets/lorwyn/HearthcageGiant.java | 8 ++--- .../sets/lorwyn/ImmaculateMagistrate.java | 3 +- .../mage/sets/lorwyn/ImperiousPerfect.java | 5 ++- .../mage/sets/lorwyn/LysAlanaHuntmaster.java | 5 ++- Mage.Sets/src/mage/sets/lorwyn/MadAuntie.java | 8 ++--- .../src/mage/sets/lorwyn/NectarFaerie.java | 7 ++-- .../mage/sets/lorwyn/ScarredVinebreeder.java | 3 +- .../src/mage/sets/lorwyn/ScionOfOona.java | 24 ++++++------- .../src/mage/sets/lorwyn/SeedguideAsh.java | 5 ++- .../src/mage/sets/lorwyn/SummonTheSchool.java | 5 ++- .../mage/sets/lorwyn/SunriseSovereign.java | 5 ++- .../src/mage/sets/lorwyn/TarPitcher.java | 5 ++- .../src/mage/sets/lorwyn/ThorntoothWitch.java | 5 ++- .../src/mage/sets/lorwyn/TimberProtector.java | 10 +++--- .../mage/sets/lorwyn/WarrenScourgeElf.java | 3 +- .../src/mage/sets/lorwyn/WizenedCenn.java | 5 ++- .../mage/sets/lorwyn/WortBoggartAuntie.java | 5 ++- .../mage/sets/magic2010/ArmoredAscension.java | 3 +- .../mage/sets/magic2010/AwakenerDruid.java | 3 +- .../mage/sets/magic2010/BaneslayerAngel.java | 8 ++--- .../sets/magic2010/CaptainOfTheWatch.java | 3 +- .../sets/magic2010/DragonskullSummit.java | 10 +++--- .../mage/sets/magic2010/DrownedCatacomb.java | 10 +++--- .../mage/sets/magic2010/ElvishArchdruid.java | 5 +-- .../mage/sets/magic2010/GlacialFortress.java | 10 +++--- .../mage/sets/magic2010/GoblinChieftain.java | 3 +- .../sets/magic2010/HowlOfTheNightPack.java | 3 +- .../sets/magic2010/MasterOfTheWildHunt.java | 5 ++- .../mage/sets/magic2010/MerfolkSovereign.java | 5 +-- .../mage/sets/magic2010/RhoxPikemaster.java | 3 +- .../mage/sets/magic2010/RootboundCrag.java | 10 +++--- .../mage/sets/magic2010/SeismicStrike.java | 3 +- .../magic2010/SerpentOfTheEndlessSea.java | 5 +-- .../sets/magic2010/SiegeGangCommander.java | 5 ++- .../mage/sets/magic2010/SunpetalGrove.java | 10 +++--- .../sets/magic2010/TendrilsOfCorruption.java | 3 +- .../src/mage/sets/magic2010/UndeadSlayer.java | 11 +++--- .../mage/sets/magic2010/VampireNocturnus.java | 3 +- .../sets/magic2010/VeteranArmorsmith.java | 5 ++- .../sets/magic2010/VeteranSwordsmith.java | 5 ++- .../sets/magic2011/CaptivatingVampire.java | 5 +-- .../src/mage/sets/magic2011/Corrupt.java | 5 ++- .../src/mage/sets/magic2011/EarthServant.java | 3 +- .../mage/sets/magic2011/HarborSerpent.java | 3 +- .../mage/sets/magic2011/KnightExemplar.java | 3 +- .../src/mage/sets/magic2011/QuagSickness.java | 3 +- .../mage/sets/magic2012/ArachnusSpinner.java | 3 +- .../sets/magic2012/BloodlordOfVaasgoth.java | 4 +-- .../mage/sets/magic2012/CallToTheGrave.java | 5 +-- .../mage/sets/magic2012/CemeteryReaper.java | 5 ++- .../mage/sets/magic2012/DungroveElder.java | 3 +- .../mage/sets/magic2012/GoblinGrenade.java | 4 +-- .../src/mage/sets/magic2012/GriffinRider.java | 5 ++- .../mage/sets/magic2012/LordOfTheUnreal.java | 5 ++- .../src/mage/sets/magic2013/ArcticAven.java | 3 +- .../src/mage/sets/magic2013/ArmsDealer.java | 3 +- .../mage/sets/magic2013/CrimsonMuckwader.java | 5 ++- .../mage/sets/magic2013/FlinthoofBoar.java | 5 ++- .../mage/sets/magic2013/KrenkoMobBoss.java | 3 +- .../mage/sets/magic2013/LilianasShade.java | 3 +- .../magic2013/MasterOfThePearlTrident.java | 3 +- .../src/mage/sets/magic2013/Mutilate.java | 3 +- .../mage/sets/magic2013/PrizedElephant.java | 4 +-- .../src/mage/sets/magic2013/RangersPath.java | 3 +- .../sets/magic2013/TalrandSkySummoner.java | 2 -- .../src/mage/sets/mirrodin/NightmareLash.java | 3 +- .../src/mage/sets/mirrodin/RustsporeRam.java | 5 ++- .../src/mage/sets/mirrodin/TurnToDust.java | 5 ++- .../sets/mirrodinbesieged/BrassSquire.java | 3 +- .../sets/mirrodinbesieged/MyrTurbine.java | 5 +-- .../mirrodinbesieged/ThopterAssembly.java | 5 ++- .../mage/sets/morningtide/EverbarkShaman.java | 5 ++- .../sets/morningtide/FendeepSummoner.java | 3 +- .../mage/sets/morningtide/HeritageDruid.java | 6 ++-- .../mage/sets/morningtide/InspiredSprite.java | 5 ++- .../sets/morningtide/KinsbaileCavalier.java | 10 +++--- .../sets/morningtide/LysAlanaBowmaster.java | 5 ++- .../sets/morningtide/PreeminentCaptain.java | 34 +++++-------------- .../mage/sets/morningtide/RhysTheExiled.java | 5 ++- .../mage/sets/morningtide/ScarbladeElite.java | 5 ++- .../sets/morningtide/SeethingPathblazer.java | 5 ++- .../mage/sets/morningtide/SigilTracer.java | 4 +-- .../mage/sets/morningtide/WeirdingShaman.java | 5 ++- .../sets/newphyrexia/AuriokSurvivors.java | 5 ++- .../mage/sets/newphyrexia/BladeSplicer.java | 3 +- .../mage/sets/newphyrexia/BludgeonBrawl.java | 5 +-- .../src/mage/sets/newphyrexia/Lashwrithe.java | 3 +- .../mage/sets/newphyrexia/MasterSplicer.java | 3 +- .../mage/sets/newphyrexia/MaulSplicer.java | 3 +- .../sets/newphyrexia/PuresteelPaladin.java | 18 +++++----- .../mage/sets/newphyrexia/SensorSplicer.java | 3 +- .../mage/sets/newphyrexia/VitalSplicer.java | 3 +- .../mage/sets/newphyrexia/WingSplicer.java | 3 +- .../mage/sets/onslaught/WirewoodLodge.java | 3 +- .../mage/sets/planechase/CabalCoffers.java | 3 +- .../sets/planechase/SilvergladeElemental.java | 5 ++- .../mage/sets/ravnika/DarkHeartOfTheWood.java | 5 ++- Mage.Sets/src/mage/sets/ravnika/Farseek.java | 13 +++---- .../sets/riseoftheeldrazi/AuraGnarlid.java | 3 +- .../sets/riseoftheeldrazi/BroodBirthing.java | 7 ++-- .../sets/riseoftheeldrazi/Broodwarden.java | 7 ++-- .../riseoftheeldrazi/CoralhelmCommander.java | 3 +- .../riseoftheeldrazi/JoragaTreespeaker.java | 3 +- .../riseoftheeldrazi/KorSpiritdancer.java | 3 +- .../sets/riseoftheeldrazi/SarkhanTheMad.java | 3 +- .../riseoftheeldrazi/SurrakarSpellblade.java | 8 ++--- .../sets/riseoftheeldrazi/SurrealMemoir.java | 2 -- .../saviorsofkamigawa/IizukaTheRuthless.java | 5 ++- .../saviorsofkamigawa/KashiTribeElite.java | 5 ++- .../sets/saviorsofkamigawa/ManrikiGusari.java | 5 ++- .../sets/scarsofmirrodin/AcidWebSpider.java | 7 ++-- .../scarsofmirrodin/BlackcleaveCliffs.java | 8 +---- .../sets/scarsofmirrodin/CopperlineGorge.java | 8 +---- .../sets/scarsofmirrodin/DarkslickShores.java | 8 +---- .../scarsofmirrodin/EzuriRenegadeLeader.java | 12 +++---- .../sets/scarsofmirrodin/Glimmerpost.java | 7 ++-- .../sets/scarsofmirrodin/KothOfTheHammer.java | 5 +-- .../sets/scarsofmirrodin/MyrBattlesphere.java | 3 +- .../sets/scarsofmirrodin/MyrGalvanizer.java | 7 ++-- .../sets/scarsofmirrodin/MyrReservoir.java | 3 +- .../sets/scarsofmirrodin/PrecursorGolem.java | 8 ++--- .../scarsofmirrodin/RazorvergeThicket.java | 8 +---- .../sets/scarsofmirrodin/SeachromeCoast.java | 8 +---- .../src/mage/sets/shadowmoor/FlowOfIdeas.java | 3 +- .../sets/shadowmoor/LeechriddenSwamp.java | 20 +++++------ .../src/mage/sets/shadowmoor/ReaperKing.java | 3 +- .../mage/sets/shadowmoor/SafewrightQuest.java | 7 ++-- .../mage/sets/shardsofalara/BantPanorama.java | 11 +++--- .../mage/sets/shardsofalara/DeathBaron.java | 8 ++--- .../sets/shardsofalara/EsperPanorama.java | 11 +++--- .../sets/shardsofalara/GrixisPanorama.java | 11 +++--- .../mage/sets/shardsofalara/JundPanorama.java | 11 +++--- .../shardsofalara/KnightCaptainOfEos.java | 3 +- .../mage/sets/shardsofalara/NayaPanorama.java | 11 +++--- .../mage/sets/shardsofalara/WildNacatl.java | 8 ++--- .../src/mage/sets/tempest/ArmorSliver.java | 5 ++- .../src/mage/sets/tempest/BarbedSliver.java | 5 ++- .../src/mage/sets/tempest/ClotSliver.java | 5 ++- .../src/mage/sets/tempest/Earthcraft.java | 2 -- .../sets/tempest/EladamriLordOfLeaves.java | 8 ++--- .../src/mage/sets/tempest/HeartSliver.java | 5 ++- .../src/mage/sets/tempest/HeartwoodGiant.java | 5 ++- .../src/mage/sets/tempest/HornedSliver.java | 5 ++- .../src/mage/sets/tempest/MarshLurker.java | 5 ++- .../src/mage/sets/tempest/MnemonicSliver.java | 5 ++- .../src/mage/sets/tempest/MoggRaider.java | 5 ++- .../src/mage/sets/tempest/MuscleSliver.java | 5 ++- .../src/mage/sets/tempest/TalonSliver.java | 5 ++- .../src/mage/sets/tempest/WingedSliver.java | 5 ++- .../src/mage/sets/tenth/BlanchwoodArmor.java | 3 +- .../src/mage/sets/tenth/ElvishChampion.java | 5 ++- .../src/mage/sets/tenth/FieldMarshal.java | 5 ++- Mage.Sets/src/mage/sets/tenth/GoblinKing.java | 5 ++- .../src/mage/sets/tenth/LordOfTheUndead.java | 8 ++--- .../src/mage/sets/tenth/Mobilization.java | 5 ++- Mage.Sets/src/mage/sets/tenth/Nightmare.java | 3 +- .../src/mage/sets/tenth/SpittingEarth.java | 3 +- .../src/mage/sets/urzassaga/GaeasCradle.java | 2 -- .../mage/sets/urzassaga/PriestOfTitania.java | 3 +- .../mage/sets/urzassaga/SerrasSanctum.java | 2 -- .../sets/urzassaga/TreefolkSeedlings.java | 3 +- .../sets/worldwake/AkoumBattlesinger.java | 3 +- .../sets/worldwake/AnowonTheRuinSage.java | 5 +-- .../src/mage/sets/worldwake/ArborElf.java | 5 ++- .../sets/worldwake/AvengerOfZendikar.java | 3 +- .../mage/sets/worldwake/ClawsOfValakut.java | 3 +- .../mage/sets/worldwake/HalimarExcavator.java | 5 ++- .../src/mage/sets/worldwake/HammerOfRuin.java | 3 +- .../src/mage/sets/worldwake/HarabazDruid.java | 5 ++- .../src/mage/sets/worldwake/LoamLion.java | 5 ++- .../mage/sets/worldwake/SejiriMerfolk.java | 5 ++- .../mage/sets/worldwake/StoneforgeMystic.java | 3 +- .../mage/sets/zendikar/ArmamentMaster.java | 5 +-- .../src/mage/sets/zendikar/BloodTribute.java | 5 ++- .../mage/sets/zendikar/EmeriaTheSkyRuin.java | 5 ++- .../src/mage/sets/zendikar/FeastOfBlood.java | 5 ++- .../mage/sets/zendikar/HagraDiabolist.java | 5 ++- .../src/mage/sets/zendikar/HaloHunter.java | 3 +- .../mage/sets/zendikar/HighlandBerserker.java | 5 ++- .../src/mage/sets/zendikar/JoragaBard.java | 5 ++- .../src/mage/sets/zendikar/KazuulWarlord.java | 5 ++- .../mage/sets/zendikar/KorCartographer.java | 3 +- .../src/mage/sets/zendikar/KorOutfitter.java | 3 +- .../mage/sets/zendikar/LandbindRitual.java | 3 +- .../mage/sets/zendikar/MalakirBloodwitch.java | 3 +- .../src/mage/sets/zendikar/MindSludge.java | 3 +- .../src/mage/sets/zendikar/MindlessNull.java | 3 +- .../mage/sets/zendikar/MurasaPyromancer.java | 5 ++- .../src/mage/sets/zendikar/NissaRevane.java | 5 +-- .../src/mage/sets/zendikar/OnduCleric.java | 5 ++- .../src/mage/sets/zendikar/PrimalBellow.java | 3 +- .../sets/zendikar/QuestForTheHolyRelic.java | 3 +- .../mage/sets/zendikar/SeaGateLoremaster.java | 3 +- .../mage/sets/zendikar/SeascapeAerialist.java | 5 ++- .../src/mage/sets/zendikar/SpireBarrage.java | 3 +- .../src/mage/sets/zendikar/TajuruArcher.java | 5 ++- .../mage/sets/zendikar/TimbermawLarva.java | 3 +- .../mage/sets/zendikar/TrapmakersSnare.java | 3 +- .../zendikar/ValakutTheMoltenPinnacle.java | 5 ++- .../mage/sets/zendikar/WarrenInstigator.java | 3 +- .../common/FetchLandActivatedAbility.java | 18 ++++++---- .../abilities/keyword/ForestwalkAbility.java | 5 ++- .../abilities/keyword/IslandwalkAbility.java | 5 ++- .../keyword/MountainwalkAbility.java | 5 ++- .../abilities/keyword/PlainswalkAbility.java | 5 ++- .../abilities/keyword/SoulshiftAbility.java | 4 +-- .../abilities/keyword/SwampwalkAbility.java | 5 ++- Mage/src/mage/filter/FilterObject.java | 25 -------------- Mage/src/mage/filter/common/FilterAura.java | 3 +- .../mage/filter/common/FilterEquipment.java | 3 +- .../filter/common/FilterFortification.java | 3 +- .../common/FilterSpiritOrArcaneCard.java | 7 ++-- Mage/src/mage/game/GameImpl.java | 4 +-- 345 files changed, 874 insertions(+), 1032 deletions(-) diff --git a/Mage.Sets/src/mage/sets/alarareborn/LichLordOfUnx.java b/Mage.Sets/src/mage/sets/alarareborn/LichLordOfUnx.java index 0121629fa22..3144599e37c 100644 --- a/Mage.Sets/src/mage/sets/alarareborn/LichLordOfUnx.java +++ b/Mage.Sets/src/mage/sets/alarareborn/LichLordOfUnx.java @@ -43,8 +43,8 @@ import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.LoseLifeTargetEffect; import mage.abilities.effects.common.PutLibraryIntoGraveTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.permanent.token.Token; import mage.target.TargetPlayer; @@ -56,8 +56,7 @@ public class LichLordOfUnx extends CardImpl { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Zombies you control"); static { - filter.getSubtype().add("Zombie"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Zombie")); } public LichLordOfUnx (UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/avacynrestored/AngelOfGlorysRise.java b/Mage.Sets/src/mage/sets/avacynrestored/AngelOfGlorysRise.java index 023424f8562..cfc1e06f4c7 100644 --- a/Mage.Sets/src/mage/sets/avacynrestored/AngelOfGlorysRise.java +++ b/Mage.Sets/src/mage/sets/avacynrestored/AngelOfGlorysRise.java @@ -36,12 +36,12 @@ import mage.abilities.Ability; import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterCreatureCard; import mage.filter.common.FilterCreaturePermanent; import mage.game.Game; import mage.abilities.effects.OneShotEffect; import mage.cards.Card; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.players.Player; import mage.game.permanent.Permanent; @@ -83,10 +83,8 @@ class AngelOfGlorysRiseEffect extends OneShotEffect { private static final FilterCreaturePermanent filterZombie = new FilterCreaturePermanent(); static { - filterZombie.getSubtype().add("Zombie"); - filterZombie.setScopeSubtype(Filter.ComparisonScope.Any); - filterHuman.getSubtype().add("Human"); - filterHuman.setScopeSubtype(Filter.ComparisonScope.Any); + filterZombie.add(new SubtypePredicate("Zombie")); + filterHuman.add(new SubtypePredicate("Human")); } public AngelOfGlorysRiseEffect() { diff --git a/Mage.Sets/src/mage/sets/avacynrestored/BrunaLightOfAlabaster.java b/Mage.Sets/src/mage/sets/avacynrestored/BrunaLightOfAlabaster.java index b9c00138cfe..c94fdd094c0 100644 --- a/Mage.Sets/src/mage/sets/avacynrestored/BrunaLightOfAlabaster.java +++ b/Mage.Sets/src/mage/sets/avacynrestored/BrunaLightOfAlabaster.java @@ -40,6 +40,7 @@ import mage.cards.Card; import mage.cards.CardImpl; import mage.filter.FilterCard; import mage.filter.common.FilterAura; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; @@ -89,7 +90,7 @@ class BrunaLightOfAlabasterEffect extends OneShotEffect { player.revealCards("DescendantsPath", new CardsImpl(card), game); if (card.getCardType().contains(CardType.CREATURE)) { FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent(); - filter.getSubtype().addAll(card.getSubtype()); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + + ArrayList> subtypes = new ArrayList>(); + for (String subtype: card.getSubtype()) { + subtypes.add(new SubtypePredicate(subtype)); + } + filter.add(Predicates.or(subtypes)); + int count = game.getBattlefield().getAllActivePermanents(filter, player.getId(), game).size(); if (count > 0) { game.informPlayers("DescendantsPath: Found a creature that shares a creature type with the revealed card."); diff --git a/Mage.Sets/src/mage/sets/avacynrestored/DevoutChaplain.java b/Mage.Sets/src/mage/sets/avacynrestored/DevoutChaplain.java index 9b5ed9f17b1..c603cc58178 100644 --- a/Mage.Sets/src/mage/sets/avacynrestored/DevoutChaplain.java +++ b/Mage.Sets/src/mage/sets/avacynrestored/DevoutChaplain.java @@ -40,6 +40,7 @@ import mage.cards.CardImpl; import mage.filter.Filter; import mage.filter.FilterPermanent; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.TargetPermanent; import mage.target.common.TargetControlledPermanent; @@ -63,8 +64,7 @@ public class DevoutChaplain extends CardImpl { static { humanFilter.setTapped(false); humanFilter.setUseTapped(true); - humanFilter.getSubtype().add("Human"); - humanFilter.setScopeSubtype(Filter.ComparisonScope.Any); + humanFilter.add(new SubtypePredicate("Human")); } public DevoutChaplain(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/avacynrestored/DiregrafEscort.java b/Mage.Sets/src/mage/sets/avacynrestored/DiregrafEscort.java index 4391325f2a9..6b2a8de3d36 100644 --- a/Mage.Sets/src/mage/sets/avacynrestored/DiregrafEscort.java +++ b/Mage.Sets/src/mage/sets/avacynrestored/DiregrafEscort.java @@ -38,6 +38,7 @@ import mage.abilities.keyword.SoulbondAbility; import mage.cards.CardImpl; import mage.filter.FilterPermanent; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import java.util.UUID; @@ -51,7 +52,7 @@ public class DiregrafEscort extends CardImpl { private static final FilterPermanent filter = new FilterCreaturePermanent("Zombies"); static { - filter.getSubtype().add("Zombie"); + filter.add(new SubtypePredicate("Zombie")); } public DiregrafEscort(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/avacynrestored/GallowsAtWillowHill.java b/Mage.Sets/src/mage/sets/avacynrestored/GallowsAtWillowHill.java index 4b4fed0ac7b..b185d77d378 100644 --- a/Mage.Sets/src/mage/sets/avacynrestored/GallowsAtWillowHill.java +++ b/Mage.Sets/src/mage/sets/avacynrestored/GallowsAtWillowHill.java @@ -37,8 +37,8 @@ import mage.abilities.costs.common.TapTargetCost; import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.effects.OneShotEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.game.permanent.token.SpiritWhiteToken; @@ -59,8 +59,7 @@ public class GallowsAtWillowHill extends CardImpl { static { humanFilter.setTapped(false); humanFilter.setUseTapped(true); - humanFilter.getSubtype().add("Human"); - humanFilter.setScopeSubtype(Filter.ComparisonScope.Any); + humanFilter.add(new SubtypePredicate("Human")); } public GallowsAtWillowHill(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/avacynrestored/HumanFrailty.java b/Mage.Sets/src/mage/sets/avacynrestored/HumanFrailty.java index 1b9f47f7cb5..4191073f000 100644 --- a/Mage.Sets/src/mage/sets/avacynrestored/HumanFrailty.java +++ b/Mage.Sets/src/mage/sets/avacynrestored/HumanFrailty.java @@ -32,6 +32,7 @@ import mage.Constants.Rarity; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.TargetPermanent; import java.util.UUID; @@ -44,7 +45,7 @@ public class HumanFrailty extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Human creature"); static { - filter.getSubtype().add("Human"); + filter.add(new SubtypePredicate("Human")); } public HumanFrailty(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/avacynrestored/KessigMalcontents.java b/Mage.Sets/src/mage/sets/avacynrestored/KessigMalcontents.java index eea55571e77..07511f6b288 100644 --- a/Mage.Sets/src/mage/sets/avacynrestored/KessigMalcontents.java +++ b/Mage.Sets/src/mage/sets/avacynrestored/KessigMalcontents.java @@ -36,6 +36,7 @@ import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.effects.common.DamageTargetEffect; import mage.cards.CardImpl; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.TargetPlayer; import java.util.UUID; @@ -48,7 +49,7 @@ public class KessigMalcontents extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("Humans you control"); static { - filter.getSubtype().add("Human"); + filter.add(new SubtypePredicate("Human")); } public KessigMalcontents(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/avacynrestored/MassAppeal.java b/Mage.Sets/src/mage/sets/avacynrestored/MassAppeal.java index 19f18344c1c..e3a5721c387 100644 --- a/Mage.Sets/src/mage/sets/avacynrestored/MassAppeal.java +++ b/Mage.Sets/src/mage/sets/avacynrestored/MassAppeal.java @@ -33,6 +33,7 @@ import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.effects.common.DrawCardControllerEffect; import mage.cards.CardImpl; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import java.util.UUID; @@ -45,7 +46,7 @@ public class MassAppeal extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("Human you control"); static { - filter.getSubtype().add("Human"); + filter.add(new SubtypePredicate("Human")); } public MassAppeal(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/avacynrestored/MidnightDuelist.java b/Mage.Sets/src/mage/sets/avacynrestored/MidnightDuelist.java index 574259d5995..d4abdaf93c0 100644 --- a/Mage.Sets/src/mage/sets/avacynrestored/MidnightDuelist.java +++ b/Mage.Sets/src/mage/sets/avacynrestored/MidnightDuelist.java @@ -32,9 +32,9 @@ import mage.Constants.Rarity; import mage.MageInt; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import java.util.UUID; @@ -48,8 +48,7 @@ public class MidnightDuelist extends CardImpl { private static final FilterPermanent filter = new FilterCreaturePermanent("Vampires"); static { - filter.getSubtype().add("Vampire"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Vampire")); } public MidnightDuelist(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/avacynrestored/RestorationAngel.java b/Mage.Sets/src/mage/sets/avacynrestored/RestorationAngel.java index 18fdc3845c2..549c0a6b3e7 100644 --- a/Mage.Sets/src/mage/sets/avacynrestored/RestorationAngel.java +++ b/Mage.Sets/src/mage/sets/avacynrestored/RestorationAngel.java @@ -38,6 +38,8 @@ import mage.abilities.keyword.FlashAbility; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.filter.common.FilterControlledCreaturePermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetControlledCreaturePermanent; import java.util.UUID; @@ -52,8 +54,7 @@ public class RestorationAngel extends CardImpl { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("non-Angel"); static { - filter.getSubtype().add("Angel"); - filter.setNotSubtype(true); + filter.add(Predicates.not(new SubtypePredicate("Angel"))); } public RestorationAngel(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/avacynrestored/RidersOfGavony.java b/Mage.Sets/src/mage/sets/avacynrestored/RidersOfGavony.java index 1d2e634aa05..c092bf56b45 100644 --- a/Mage.Sets/src/mage/sets/avacynrestored/RidersOfGavony.java +++ b/Mage.Sets/src/mage/sets/avacynrestored/RidersOfGavony.java @@ -43,6 +43,7 @@ import mage.choices.Choice; import mage.choices.ChoiceImpl; import mage.filter.FilterPermanent; import mage.filter.common.FilterControlledCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; @@ -124,7 +125,7 @@ class RidersOfGavonyGainAbilityControlledEffect extends ContinuousEffectImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Human creatures"); static { - filter.getSubtype().add("Human"); + filter.add(new SubtypePredicate("Human")); } public RiotRingleader(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/avacynrestored/ScrollOfAvacyn.java b/Mage.Sets/src/mage/sets/avacynrestored/ScrollOfAvacyn.java index adc5bd7052d..a34aa00f905 100644 --- a/Mage.Sets/src/mage/sets/avacynrestored/ScrollOfAvacyn.java +++ b/Mage.Sets/src/mage/sets/avacynrestored/ScrollOfAvacyn.java @@ -41,19 +41,18 @@ import mage.abilities.decorator.ConditionalOneShotEffect; import mage.abilities.effects.common.DrawCardControllerEffect; import mage.abilities.effects.common.GainLifeEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; /** * * @author Loki */ public class ScrollOfAvacyn extends CardImpl { - private static FilterPermanent filter = new FilterPermanent("an Angel"); + private static final FilterPermanent filter = new FilterPermanent(); static { - filter.getSubtype().add("Angel"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Angel")); } public ScrollOfAvacyn(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/avacynrestored/ScrollOfGriselbrand.java b/Mage.Sets/src/mage/sets/avacynrestored/ScrollOfGriselbrand.java index d20284c2e4f..a1833aaad84 100644 --- a/Mage.Sets/src/mage/sets/avacynrestored/ScrollOfGriselbrand.java +++ b/Mage.Sets/src/mage/sets/avacynrestored/ScrollOfGriselbrand.java @@ -41,8 +41,8 @@ import mage.abilities.decorator.ConditionalOneShotEffect; import mage.abilities.effects.common.DiscardTargetEffect; import mage.abilities.effects.common.LoseLifeTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetOpponent; /** @@ -50,11 +50,10 @@ import mage.target.common.TargetOpponent; * @author Loki */ public class ScrollOfGriselbrand extends CardImpl { - private static FilterPermanent filter = new FilterPermanent("a Demon"); + private static final FilterPermanent filter = new FilterPermanent(); static { - filter.getSubtype().add("Demon"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Demon")); } public ScrollOfGriselbrand(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/betrayersofkamigawa/IreOfKaminari.java b/Mage.Sets/src/mage/sets/betrayersofkamigawa/IreOfKaminari.java index c3c748d447e..aa539c65a37 100644 --- a/Mage.Sets/src/mage/sets/betrayersofkamigawa/IreOfKaminari.java +++ b/Mage.Sets/src/mage/sets/betrayersofkamigawa/IreOfKaminari.java @@ -33,8 +33,8 @@ import mage.Constants.Rarity; import mage.abilities.dynamicvalue.common.CardsInControllerGraveyardCount; import mage.abilities.effects.common.DamageTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetCreatureOrPlayer; /** @@ -46,8 +46,7 @@ public class IreOfKaminari extends CardImpl { private final static FilterCard filter = new FilterCard("Arcane"); static { - filter.getSubtype().add("Arcane"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Arcane")); } public IreOfKaminari(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/betrayersofkamigawa/IsaoEnlightenedBushi.java b/Mage.Sets/src/mage/sets/betrayersofkamigawa/IsaoEnlightenedBushi.java index c43cc3c38f9..8d4849c1b67 100644 --- a/Mage.Sets/src/mage/sets/betrayersofkamigawa/IsaoEnlightenedBushi.java +++ b/Mage.Sets/src/mage/sets/betrayersofkamigawa/IsaoEnlightenedBushi.java @@ -40,8 +40,8 @@ import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.effects.common.RegenerateTargetEffect; import mage.abilities.keyword.BushidoAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.TargetPermanent; /** @@ -53,8 +53,7 @@ public class IsaoEnlightenedBushi extends CardImpl { private final static FilterPermanent filter = new FilterPermanent("Samurai"); static { - filter.getSubtype().add("Samurai"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Samurai")); } public IsaoEnlightenedBushi(UUID ownerId) { @@ -66,6 +65,7 @@ public class IsaoEnlightenedBushi extends CardImpl { this.color.setGreen(true); this.power = new MageInt(2); this.toughness = new MageInt(1); + // Isao, Enlightened Bushi can't be countered. this.addAbility(new CantCounterAbility()); this.addAbility(new BushidoAbility(2)); diff --git a/Mage.Sets/src/mage/sets/betrayersofkamigawa/NezumiShadowWatcher.java b/Mage.Sets/src/mage/sets/betrayersofkamigawa/NezumiShadowWatcher.java index 6b4cad4cc1e..1ff953641fd 100644 --- a/Mage.Sets/src/mage/sets/betrayersofkamigawa/NezumiShadowWatcher.java +++ b/Mage.Sets/src/mage/sets/betrayersofkamigawa/NezumiShadowWatcher.java @@ -38,8 +38,8 @@ import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.common.SacrificeSourceCost; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.TargetPermanent; /** @@ -51,8 +51,7 @@ public class NezumiShadowWatcher extends CardImpl { private final static FilterPermanent filter = new FilterPermanent("Ninja"); static { - filter.getSubtype().add("Ninja"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Ninja")); } public NezumiShadowWatcher(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/betrayersofkamigawa/RibbonsOfTheReikai.java b/Mage.Sets/src/mage/sets/betrayersofkamigawa/RibbonsOfTheReikai.java index 0fb3cfd99f7..62abcfffe79 100644 --- a/Mage.Sets/src/mage/sets/betrayersofkamigawa/RibbonsOfTheReikai.java +++ b/Mage.Sets/src/mage/sets/betrayersofkamigawa/RibbonsOfTheReikai.java @@ -33,8 +33,8 @@ import mage.Constants.Rarity; import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.effects.common.DrawCardControllerEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; /** * @@ -45,8 +45,7 @@ public class RibbonsOfTheReikai extends CardImpl { private final static FilterControlledPermanent filter = new FilterControlledPermanent("Spirit you control"); static { - filter.getSubtype().add("Spirit"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Spirit")); } public RibbonsOfTheReikai(UUID ownerId) { @@ -54,6 +53,7 @@ public class RibbonsOfTheReikai extends CardImpl { this.expansionSetCode = "BOK"; this.subtype.add("Arcane"); this.color.setBlue(true); + // Draw a card for each Spirit you control. this.getSpellAbility().addEffect(new DrawCardControllerEffect(new PermanentsOnBattlefieldCount(filter))); } diff --git a/Mage.Sets/src/mage/sets/betrayersofkamigawa/TakenosCavalry.java b/Mage.Sets/src/mage/sets/betrayersofkamigawa/TakenosCavalry.java index 47076d893f3..f0e729f4dc5 100644 --- a/Mage.Sets/src/mage/sets/betrayersofkamigawa/TakenosCavalry.java +++ b/Mage.Sets/src/mage/sets/betrayersofkamigawa/TakenosCavalry.java @@ -39,8 +39,8 @@ import mage.abilities.costs.common.TapSourceCost; import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.keyword.BushidoAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterAttackingOrBlockingCreature; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetAttackingOrBlockingCreature; /** @@ -52,8 +52,7 @@ public class TakenosCavalry extends CardImpl { private final static FilterAttackingOrBlockingCreature filter = new FilterAttackingOrBlockingCreature("attacking or blocking Spirit"); static { - filter.getSubtype().add("Spirit"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Spirit")); } public TakenosCavalry(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/betrayersofkamigawa/TraprootKami.java b/Mage.Sets/src/mage/sets/betrayersofkamigawa/TraprootKami.java index 52da1673cb6..addb5a0d4b2 100644 --- a/Mage.Sets/src/mage/sets/betrayersofkamigawa/TraprootKami.java +++ b/Mage.Sets/src/mage/sets/betrayersofkamigawa/TraprootKami.java @@ -40,8 +40,8 @@ import mage.abilities.effects.common.continious.BoostSourceEffect; import mage.abilities.keyword.DefenderAbility; import mage.abilities.keyword.ReachAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; /** * @@ -52,8 +52,7 @@ public class TraprootKami extends CardImpl { private final static FilterPermanent filter = new FilterPermanent("Forest"); static { - filter.getSubtype().add("Forest"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Forest")); } public TraprootKami(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/AzamiLadyOfScrolls.java b/Mage.Sets/src/mage/sets/championsofkamigawa/AzamiLadyOfScrolls.java index a86a4128325..8c8840fc12d 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/AzamiLadyOfScrolls.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/AzamiLadyOfScrolls.java @@ -38,8 +38,8 @@ import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.common.TapTargetCost; import mage.abilities.effects.common.DrawCardControllerEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetControlledPermanent; /** @@ -52,9 +52,7 @@ public class AzamiLadyOfScrolls extends CardImpl { static { filter.setTapped(false); filter.setUseTapped(true); - filter.getSubtype().add("Wizard"); - filter.setScopeCardType(Filter.ComparisonScope.Any); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Wizard")); } public AzamiLadyOfScrolls(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/BenBenAkkiHermit.java b/Mage.Sets/src/mage/sets/championsofkamigawa/BenBenAkkiHermit.java index 4fa9d1ee89b..9bb1f03c70e 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/BenBenAkkiHermit.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/BenBenAkkiHermit.java @@ -40,8 +40,8 @@ import mage.abilities.costs.common.TapSourceCost; import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.effects.common.DamageTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterLandPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetAttackingCreature; /** @@ -55,8 +55,7 @@ public class BenBenAkkiHermit extends CardImpl { static { filter.setTapped(false); filter.setUseTapped(true); - filter.getSubtype().add("Mountain"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Mountain")); } public BenBenAkkiHermit (UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/BloodthirstyOgre.java b/Mage.Sets/src/mage/sets/championsofkamigawa/BloodthirstyOgre.java index cfaf5d97d80..f3add9680c4 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/BloodthirstyOgre.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/BloodthirstyOgre.java @@ -45,8 +45,8 @@ import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.cards.CardImpl; import mage.counters.CounterType; import mage.counters.common.DevotionCounter; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetCreaturePermanent; /** @@ -57,8 +57,7 @@ public class BloodthirstyOgre extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("Demon"); static { - filter.getSubtype().add("Demon"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Demon")); } public BloodthirstyOgre(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/CallToGlory.java b/Mage.Sets/src/mage/sets/championsofkamigawa/CallToGlory.java index 4a6a12ff5f6..9c5afabdb9a 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/CallToGlory.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/CallToGlory.java @@ -37,8 +37,8 @@ import mage.abilities.Ability; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.continious.BoostControlledEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; @@ -52,8 +52,7 @@ public class CallToGlory extends CardImpl { private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("Samurai"); static { - filter.getSubtype().add("Samurai"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Samurai")); } public CallToGlory(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/EerieProcession.java b/Mage.Sets/src/mage/sets/championsofkamigawa/EerieProcession.java index 254429b665e..d470dd375b4 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/EerieProcession.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/EerieProcession.java @@ -34,8 +34,8 @@ import mage.Constants.CardType; import mage.Constants.Rarity; import mage.abilities.effects.common.search.SearchLibraryRevealPutInHandEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetCardInLibrary; /** @@ -46,8 +46,7 @@ public class EerieProcession extends CardImpl { private final static FilterCard filter = new FilterCard("Arcane card"); static { - filter.getSubtype().add("Arcane"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Arcane")); } public EerieProcession(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/HanaKami.java b/Mage.Sets/src/mage/sets/championsofkamigawa/HanaKami.java index f0b1e7e43ea..99dd8469308 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/HanaKami.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/HanaKami.java @@ -40,8 +40,8 @@ import mage.abilities.costs.common.SacrificeSourceCost; import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.common.ReturnToHandTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetCardInYourGraveyard; /** @@ -52,8 +52,7 @@ public class HanaKami extends CardImpl { private final static FilterCard filter = new FilterCard("Arcane card from your graveyard"); static { - filter.getSubtype().add("Arcane"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Arcane")); } public HanaKami(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/HeWhoHungers.java b/Mage.Sets/src/mage/sets/championsofkamigawa/HeWhoHungers.java index 32bf6400941..e1264d318ce 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/HeWhoHungers.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/HeWhoHungers.java @@ -45,8 +45,8 @@ import mage.abilities.effects.common.discard.DiscardCardYouChooseTargetOpponentE import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.SoulshiftAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetControlledPermanent; import mage.target.common.TargetOpponent; @@ -60,8 +60,7 @@ public class HeWhoHungers extends CardImpl { private final static FilterControlledPermanent filter = new FilterControlledPermanent("a Spirit"); static { - filter.getSubtype().add("Spirit"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Spirit")); } public HeWhoHungers(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/HisokasDefiance.java b/Mage.Sets/src/mage/sets/championsofkamigawa/HisokasDefiance.java index 5913a5e3a1d..8c6c9e17a53 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/HisokasDefiance.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/HisokasDefiance.java @@ -34,8 +34,9 @@ import mage.Constants.CardType; import mage.Constants.Rarity; import mage.abilities.effects.common.CounterTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterSpell; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.TargetSpell; /** @@ -46,9 +47,7 @@ public class HisokasDefiance extends CardImpl { private final static FilterSpell filter = new FilterSpell("Spirit or Arcane spell"); static { - filter.getSubtype().add("Spirit"); - filter.getSubtype().add("Arcane"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(Predicates.or(new SubtypePredicate("Spirit"), new SubtypePredicate("Arcane"))); } public HisokasDefiance(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/HondenOfCleansingFire.java b/Mage.Sets/src/mage/sets/championsofkamigawa/HondenOfCleansingFire.java index 4f9bad4e8ed..50cc6d05895 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/HondenOfCleansingFire.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/HondenOfCleansingFire.java @@ -37,8 +37,8 @@ import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.effects.common.GainLifeEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; /** * @author Loki @@ -48,8 +48,7 @@ public class HondenOfCleansingFire extends CardImpl { final static FilterControlledPermanent filter = new FilterControlledPermanent("Shrine"); static { - filter.getSubtype().add("Shrine"); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Shrine")); } public HondenOfCleansingFire(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/HondenOfInfiniteRage.java b/Mage.Sets/src/mage/sets/championsofkamigawa/HondenOfInfiniteRage.java index e0dc86d1207..e39e85aa3ba 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/HondenOfInfiniteRage.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/HondenOfInfiniteRage.java @@ -37,8 +37,8 @@ import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.effects.common.DamageTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetCreatureOrPlayer; /** @@ -50,8 +50,7 @@ public class HondenOfInfiniteRage extends CardImpl { final static FilterControlledPermanent filter = new FilterControlledPermanent("Shrine"); static { - filter.getSubtype().add("Shrine"); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Shrine")); } public HondenOfInfiniteRage (UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/HondenOfLifesWeb.java b/Mage.Sets/src/mage/sets/championsofkamigawa/HondenOfLifesWeb.java index df700d8ec79..f58957d5411 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/HondenOfLifesWeb.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/HondenOfLifesWeb.java @@ -37,8 +37,8 @@ import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.effects.common.CreateTokenEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.permanent.token.SpiritToken; /** @@ -49,8 +49,7 @@ public class HondenOfLifesWeb extends CardImpl { final static FilterControlledPermanent filter = new FilterControlledPermanent("Shrine"); static { - filter.getSubtype().add("Shrine"); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Shrine")); } public HondenOfLifesWeb(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/HondenOfNightsReach.java b/Mage.Sets/src/mage/sets/championsofkamigawa/HondenOfNightsReach.java index 38071684871..1a49a50de99 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/HondenOfNightsReach.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/HondenOfNightsReach.java @@ -37,8 +37,8 @@ import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.effects.common.DiscardTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetOpponent; /** @@ -49,8 +49,7 @@ public class HondenOfNightsReach extends CardImpl { final static FilterControlledPermanent filter = new FilterControlledPermanent("Shrine"); static { - filter.getSubtype().add("Shrine"); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Shrine")); } public HondenOfNightsReach(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/HondenOfSeeingWinds.java b/Mage.Sets/src/mage/sets/championsofkamigawa/HondenOfSeeingWinds.java index c4bc7fcc26d..efdc9f1c2c6 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/HondenOfSeeingWinds.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/HondenOfSeeingWinds.java @@ -37,8 +37,8 @@ import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.effects.common.DrawCardControllerEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; /** * @author Loki @@ -48,8 +48,7 @@ public class HondenOfSeeingWinds extends CardImpl { final static FilterControlledPermanent filter = new FilterControlledPermanent("Shrine"); static { - filter.getSubtype().add("Shrine"); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Shrine")); } public HondenOfSeeingWinds(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/HorobiDeathsWail.java b/Mage.Sets/src/mage/sets/championsofkamigawa/HorobiDeathsWail.java index b303a975742..431444e3509 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/HorobiDeathsWail.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/HorobiDeathsWail.java @@ -37,8 +37,8 @@ import mage.abilities.effects.Effect; import mage.abilities.effects.common.DestroyTargetEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; import mage.game.events.GameEvent; import mage.game.events.GameEvent.EventType; @@ -53,8 +53,7 @@ public class HorobiDeathsWail extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("Demon"); static { - filter.getSubtype().add("Demon"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Demon")); } public HorobiDeathsWail(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/InameDeathAspect.java b/Mage.Sets/src/mage/sets/championsofkamigawa/InameDeathAspect.java index 1ba17094e49..0ceace3cb95 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/InameDeathAspect.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/InameDeathAspect.java @@ -38,8 +38,8 @@ import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.effects.SearchEffect; import mage.cards.Card; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterCreatureCard; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; import mage.players.Player; import mage.target.common.TargetCardInLibrary; @@ -76,8 +76,7 @@ class InameDeathAspectEffect extends SearchEffect { private final static FilterCreatureCard filter = new FilterCreatureCard(); static { - filter.getSubtype().add("Spirit"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Spirit")); } public InameDeathAspectEffect() { diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/InameLifeAspect.java b/Mage.Sets/src/mage/sets/championsofkamigawa/InameLifeAspect.java index 33e091349ec..58519681f79 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/InameLifeAspect.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/InameLifeAspect.java @@ -36,8 +36,8 @@ import mage.abilities.common.DiesTriggeredAbility; import mage.abilities.effects.common.ExileSourceEffect; import mage.abilities.effects.common.ReturnToHandTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetCardInYourGraveyard; /** @@ -49,8 +49,7 @@ public class InameLifeAspect extends CardImpl { private final static FilterCard filter = new FilterCard("Spirit cards from your graveyard"); static { - filter.getSubtype().add("Spirit"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Spirit")); } public InameLifeAspect(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/KitsuneDiviner.java b/Mage.Sets/src/mage/sets/championsofkamigawa/KitsuneDiviner.java index 41d911da179..d796ab0ff79 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/KitsuneDiviner.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/KitsuneDiviner.java @@ -39,8 +39,8 @@ import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.common.TapSourceCost; import mage.abilities.effects.common.TapTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.TargetPermanent; /** @@ -52,8 +52,7 @@ public class KitsuneDiviner extends CardImpl { private final static FilterPermanent filter = new FilterPermanent("Spirit"); static { - filter.getSubtype().add("Spirit"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Spirit")); } public KitsuneDiviner (UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/KitsuneRiftwalker.java b/Mage.Sets/src/mage/sets/championsofkamigawa/KitsuneRiftwalker.java index c352a40e271..98697994e5d 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/KitsuneRiftwalker.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/KitsuneRiftwalker.java @@ -33,8 +33,9 @@ import mage.Constants.Rarity; import mage.MageInt; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.FilterCard; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.SubtypePredicate; /** * @@ -45,9 +46,7 @@ public class KitsuneRiftwalker extends CardImpl { private final static FilterCard filter = new FilterCard("Spirits and from Arcane"); static { - filter.getSubtype().add("Arcane"); - filter.getSubtype().add("Spirit"); - filter.setScopeSubtype(ComparisonScope.Any); + filter.add(Predicates.or(new SubtypePredicate("Arcane"), new SubtypePredicate("Spirit"))); } public KitsuneRiftwalker(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/KondasHatamoto.java b/Mage.Sets/src/mage/sets/championsofkamigawa/KondasHatamoto.java index 156b05d871e..03d549eb6f7 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/KondasHatamoto.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/KondasHatamoto.java @@ -41,8 +41,8 @@ import mage.abilities.effects.common.continious.GainAbilitySourceEffect; import mage.abilities.keyword.BushidoAbility; import mage.abilities.keyword.VigilanceAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.filter.predicate.mageobject.SupertypePredicate; /** @@ -57,8 +57,7 @@ public class KondasHatamoto extends CardImpl{ static { filter.add(new SupertypePredicate("Legendary")); - filter.getSubtype().add("Samurai"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Samurai")); } public KondasHatamoto (UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/LongForgottenGohei.java b/Mage.Sets/src/mage/sets/championsofkamigawa/LongForgottenGohei.java index d7f1dc395bb..6a0d2254a3b 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/LongForgottenGohei.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/LongForgottenGohei.java @@ -44,6 +44,7 @@ import mage.abilities.effects.common.continious.BoostControlledEffect; import mage.cards.Card; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; import mage.util.CardUtil; @@ -56,7 +57,7 @@ public class LongForgottenGohei extends CardImpl { private final static FilterCreaturePermanent spiritFilter = new FilterCreaturePermanent("Spirits"); static { - spiritFilter.getSubtype().add("Spirit"); + spiritFilter.add(new SubtypePredicate("Spirit")); } public LongForgottenGohei(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/MarrowGnawer.java b/Mage.Sets/src/mage/sets/championsofkamigawa/MarrowGnawer.java index 2f059f9ae5c..886ddbc6951 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/MarrowGnawer.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/MarrowGnawer.java @@ -47,6 +47,7 @@ import mage.abilities.keyword.FearAbility; import mage.cards.CardImpl; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.permanent.token.Token; import mage.target.common.TargetControlledPermanent; @@ -60,10 +61,11 @@ public class MarrowGnawer extends CardImpl { private static final FilterControlledCreaturePermanent filterSacrifice = new FilterControlledCreaturePermanent("a Rat"); private static final FilterControlledCreaturePermanent filter3 = new FilterControlledCreaturePermanent("Rats you control"); - static { - filterFear.getSubtype().add("Rat"); - filterSacrifice.getSubtype().add("Rat"); - filter3.getSubtype().add("Rat"); + { + SubtypePredicate ratPredicate = new SubtypePredicate("Rat"); + filterFear.add(ratPredicate); + filterSacrifice.add(ratPredicate); + filter3.add(ratPredicate); } public MarrowGnawer (UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/NagaoBoundByHonor.java b/Mage.Sets/src/mage/sets/championsofkamigawa/NagaoBoundByHonor.java index f2f27b4ce79..7b976ef8a20 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/NagaoBoundByHonor.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/NagaoBoundByHonor.java @@ -37,8 +37,8 @@ import mage.abilities.common.AttacksTriggeredAbility; import mage.abilities.effects.common.continious.BoostControlledEffect; import mage.abilities.keyword.BushidoAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; /** * @@ -49,8 +49,7 @@ public class NagaoBoundByHonor extends CardImpl { private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("Samurai creatures"); static { - filter.getSubtype().add("Samurai"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Samurai")); } public NagaoBoundByHonor(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/NineRingedBo.java b/Mage.Sets/src/mage/sets/championsofkamigawa/NineRingedBo.java index d2d2853053d..2cd880c6375 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/NineRingedBo.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/NineRingedBo.java @@ -40,8 +40,8 @@ import mage.abilities.costs.common.TapSourceCost; import mage.abilities.effects.ReplacementEffectImpl; import mage.abilities.effects.common.DamageTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; import mage.game.events.GameEvent; import mage.game.events.GameEvent.EventType; @@ -59,8 +59,7 @@ public class NineRingedBo extends CardImpl { private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("spirit"); static { - filter.getSubtype().add("Spirit"); - filter.setScopeSubtype(ComparisonScope.Any); + filter.add(new SubtypePredicate("Spirit")); } public NineRingedBo(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/PainwrackerOni.java b/Mage.Sets/src/mage/sets/championsofkamigawa/PainwrackerOni.java index 99c24f90f0c..f851e35662f 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/PainwrackerOni.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/PainwrackerOni.java @@ -40,6 +40,7 @@ import mage.abilities.effects.common.SacrificeTargetEffect; import mage.abilities.keyword.FearAbility; import mage.cards.CardImpl; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; import mage.game.events.GameEvent; import mage.game.events.GameEvent.EventType; @@ -56,7 +57,7 @@ public class PainwrackerOni extends CardImpl { this.expansionSetCode = "CHK"; this.subtype.add("Demon"); this.subtype.add("Spirit"); - this.color.setBlack(true); + this.color.setBlack(true); this.power = new MageInt(5); this.toughness = new MageInt(4); @@ -84,7 +85,7 @@ class PainwrackerOniTriggeredAbility1 extends TriggeredAbilityImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Non-Spirit"); static { - filter.getSubtype().add("Spirit"); - filter.setNotSubtype(true); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(Predicates.not(new SubtypePredicate("Spirit"))); } public RendFlesh(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/RendSpirit.java b/Mage.Sets/src/mage/sets/championsofkamigawa/RendSpirit.java index 790bd47bf1d..7da25780c45 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/RendSpirit.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/RendSpirit.java @@ -34,8 +34,8 @@ import mage.Constants.CardType; import mage.Constants.Rarity; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.TargetPermanent; /** @@ -46,8 +46,7 @@ public class RendSpirit extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("Spirit"); static { - filter.getSubtype().add("Spirit"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Spirit")); } public RendSpirit(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/SachiDaughterOfSeshiro.java b/Mage.Sets/src/mage/sets/championsofkamigawa/SachiDaughterOfSeshiro.java index 353bda2e057..53df2925908 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/SachiDaughterOfSeshiro.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/SachiDaughterOfSeshiro.java @@ -43,6 +43,7 @@ import mage.abilities.effects.common.continious.BoostControlledEffect; import mage.abilities.effects.common.continious.GainAbilityControlledEffect; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; /** * @author Loki @@ -54,8 +55,8 @@ public class SachiDaughterOfSeshiro extends CardImpl { private final static FilterCreaturePermanent shamanFilter = new FilterCreaturePermanent("Shamans"); static { - snakeFilter.getSubtype().add("Snake"); - shamanFilter.getSubtype().add("Shaman"); + snakeFilter.add(new SubtypePredicate("Snake")); + shamanFilter.add(new SubtypePredicate("Shaman")); } public SachiDaughterOfSeshiro(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/SeshiroTheAnointed.java b/Mage.Sets/src/mage/sets/championsofkamigawa/SeshiroTheAnointed.java index d20dc5264d3..8dd767e9ddb 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/SeshiroTheAnointed.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/SeshiroTheAnointed.java @@ -40,6 +40,7 @@ import mage.abilities.effects.common.DrawCardControllerEffect; import mage.abilities.effects.common.continious.BoostControlledEffect; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; import mage.game.events.DamagedPlayerEvent; import mage.game.events.GameEvent; @@ -53,7 +54,7 @@ public class SeshiroTheAnointed extends CardImpl { private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("Snakes"); static { - filter.getSubtype().add("Snake"); + filter.add(new SubtypePredicate("Snake")); } public SeshiroTheAnointed(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/ShisatoWhisperingHunter.java b/Mage.Sets/src/mage/sets/championsofkamigawa/ShisatoWhisperingHunter.java index eb7c3558644..ecde9c34581 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/ShisatoWhisperingHunter.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/ShisatoWhisperingHunter.java @@ -31,7 +31,6 @@ import java.util.UUID; import mage.Constants; import mage.Constants.CardType; import mage.Constants.Rarity; -import mage.Constants.TargetController; import mage.MageInt; import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; import mage.abilities.common.DealsCombatDamageToAPlayerTriggeredAbility; @@ -39,6 +38,7 @@ import mage.abilities.effects.common.SacrificeControllerEffect; import mage.abilities.effects.common.SkipNextPlayerUntapStepEffect; import mage.cards.CardImpl; import mage.filter.common.FilterControlledCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; /** * @@ -50,8 +50,7 @@ public class ShisatoWhisperingHunter extends CardImpl { private final static FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Snake"); static { - filter.getSubtype().add("Snake"); - filter.setTargetController(TargetController.YOU); + filter.add(new SubtypePredicate("Snake")); } public ShisatoWhisperingHunter(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/SosukeSonOfSeshiro.java b/Mage.Sets/src/mage/sets/championsofkamigawa/SosukeSonOfSeshiro.java index e7d7dcc035c..bd49e0201ec 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/SosukeSonOfSeshiro.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/SosukeSonOfSeshiro.java @@ -41,8 +41,8 @@ import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.DestroyTargetEffect; import mage.abilities.effects.common.continious.BoostControlledEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; import mage.game.events.DamagedCreatureEvent; import mage.game.events.GameEvent; @@ -58,8 +58,7 @@ public class SosukeSonOfSeshiro extends CardImpl { private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("Snake creatures"); static { - filter.getSubtype().add("Snake"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Snake")); } public SosukeSonOfSeshiro(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/TakenoSamuraiGeneral.java b/Mage.Sets/src/mage/sets/championsofkamigawa/TakenoSamuraiGeneral.java index 7c19560990e..a5a8293b49b 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/TakenoSamuraiGeneral.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/TakenoSamuraiGeneral.java @@ -37,8 +37,8 @@ import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.ContinuousEffectImpl; import mage.abilities.keyword.BushidoAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; import mage.game.permanent.Permanent; @@ -74,11 +74,10 @@ public class TakenoSamuraiGeneral extends CardImpl { } class TakenoSamuraiGeneralEffect extends ContinuousEffectImpl { - private static FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent(); + private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent(); static { - filter.getSubtype().add("Samurai"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Samurai")); } public TakenoSamuraiGeneralEffect() { diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/TheUnspeakable.java b/Mage.Sets/src/mage/sets/championsofkamigawa/TheUnspeakable.java index bbc741a1a1e..dfa2e79ed96 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/TheUnspeakable.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/TheUnspeakable.java @@ -37,8 +37,8 @@ import mage.abilities.effects.common.ReturnToHandTargetEffect; import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.TrampleAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetCardInYourGraveyard; /** @@ -50,8 +50,7 @@ public class TheUnspeakable extends CardImpl { private final static FilterCard filter = new FilterCard("Arcane card from your graveyard"); static { - filter.getSubtype().add("Arcane"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Arcane")); } public TheUnspeakable(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/VillainousOgre.java b/Mage.Sets/src/mage/sets/championsofkamigawa/VillainousOgre.java index 33989310202..e58ebb903e8 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/VillainousOgre.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/VillainousOgre.java @@ -39,8 +39,8 @@ import mage.abilities.decorator.ConditionalActivatedAbility; import mage.abilities.effects.common.RegenerateSourceEffect; //import mage.abilities.effects.common.continious.GainAbilitySourceEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; /** * @@ -51,8 +51,7 @@ public class VillainousOgre extends CardImpl { private static final String rule = "As long as you control a Demon, {this} has {B}: Regenerate Villainous Ogre"; private static final FilterControlledPermanent filter = new FilterControlledPermanent("Demon"); static { - filter.getSubtype().add("Demon"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Demon")); } public VillainousOgre(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/conflux/KnightOfTheReliquary.java b/Mage.Sets/src/mage/sets/conflux/KnightOfTheReliquary.java index 5f04d220b0b..76fd6689937 100644 --- a/Mage.Sets/src/mage/sets/conflux/KnightOfTheReliquary.java +++ b/Mage.Sets/src/mage/sets/conflux/KnightOfTheReliquary.java @@ -47,7 +47,8 @@ import mage.cards.CardImpl; import mage.filter.Filter.ComparisonScope; import mage.filter.common.FilterControlledPermanent; import mage.filter.common.FilterLandCard; - +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetCardInLibrary; import mage.target.common.TargetControlledPermanent; @@ -62,9 +63,7 @@ public class KnightOfTheReliquary extends CardImpl { static { filter.getCardType().add(CardType.LAND); filter.setScopeCardType(ComparisonScope.Any); - filter.getSubtype().add("Forest"); - filter.getSubtype().add("Plains"); - filter.setScopeSubtype(ComparisonScope.Any); + filter.add(Predicates.or(new SubtypePredicate("Forest"), new SubtypePredicate("Plains"))); } public KnightOfTheReliquary(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/darkascension/ArchdemonOfGreed.java b/Mage.Sets/src/mage/sets/darkascension/ArchdemonOfGreed.java index 5bb0c10f06f..14ee45f8a97 100644 --- a/Mage.Sets/src/mage/sets/darkascension/ArchdemonOfGreed.java +++ b/Mage.Sets/src/mage/sets/darkascension/ArchdemonOfGreed.java @@ -39,6 +39,7 @@ import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.TrampleAbility; import mage.cards.CardImpl; import mage.filter.common.FilterControlledCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; import mage.game.events.GameEvent; import mage.game.permanent.Permanent; @@ -54,7 +55,7 @@ public class ArchdemonOfGreed extends CardImpl { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Human"); static { - filter.getSubtype().add("Human"); + filter.add(new SubtypePredicate("Human")); filter.setTargetController(Constants.TargetController.YOU); } diff --git a/Mage.Sets/src/mage/sets/darkascension/CallToTheKindred.java b/Mage.Sets/src/mage/sets/darkascension/CallToTheKindred.java index 2fe999ad103..e54b1a5e2d6 100644 --- a/Mage.Sets/src/mage/sets/darkascension/CallToTheKindred.java +++ b/Mage.Sets/src/mage/sets/darkascension/CallToTheKindred.java @@ -27,11 +27,13 @@ */ package mage.sets.darkascension; +import java.util.ArrayList; import java.util.UUID; import mage.Constants.CardType; import mage.Constants.Outcome; import mage.Constants.Rarity; import mage.Constants.Zone; +import mage.MageObject; import mage.abilities.Ability; import mage.abilities.common.OnEventTriggeredAbility; import mage.abilities.effects.OneShotEffect; @@ -44,6 +46,9 @@ import mage.cards.CardsImpl; import mage.filter.Filter.ComparisonScope; import mage.filter.FilterCard; import mage.filter.common.FilterCreatureCard; +import mage.filter.predicate.Predicate; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; import mage.game.events.GameEvent; import mage.game.permanent.Permanent; @@ -129,11 +134,12 @@ class CallToTheKindredEffect extends OneShotEffect { FilterCreatureCard filter = new FilterCreatureCard(); StringBuilder sb = new StringBuilder("creature card with at least one subtype from: "); - for (String subType : creature.getSubtype()) { - filter.getSubtype().add(subType); - sb.append(subType).append(", "); + ArrayList> subtypes = new ArrayList>(); + for (String subtype : creature.getSubtype()) { + subtypes.add(new SubtypePredicate(subtype)); + sb.append(subtype).append(", "); } - filter.setScopeSubtype(ComparisonScope.Any); + filter.add(Predicates.or(subtypes)); sb.delete(sb.length() - 2, sb.length()); filter.setMessage(sb.toString()); diff --git a/Mage.Sets/src/mage/sets/darkascension/ChosenOfMarkov.java b/Mage.Sets/src/mage/sets/darkascension/ChosenOfMarkov.java index 99b0f076778..89d676b6dee 100644 --- a/Mage.Sets/src/mage/sets/darkascension/ChosenOfMarkov.java +++ b/Mage.Sets/src/mage/sets/darkascension/ChosenOfMarkov.java @@ -40,8 +40,8 @@ import mage.abilities.costs.common.TapTargetCost; import mage.abilities.effects.common.TransformSourceEffect; import mage.abilities.keyword.TransformAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetControlledPermanent; /** @@ -54,8 +54,7 @@ public class ChosenOfMarkov extends CardImpl { static { filter.setUseTapped(true); filter.setTapped(false); - filter.getSubtype().add("Vampire"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Vampire")); } public ChosenOfMarkov(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/darkascension/CurseOfMisfortunes.java b/Mage.Sets/src/mage/sets/darkascension/CurseOfMisfortunes.java index 13b1a17b7c5..5549efcb573 100644 --- a/Mage.Sets/src/mage/sets/darkascension/CurseOfMisfortunes.java +++ b/Mage.Sets/src/mage/sets/darkascension/CurseOfMisfortunes.java @@ -41,6 +41,7 @@ import mage.cards.CardImpl; import mage.filter.FilterCard; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.NamePredicate; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; import mage.game.events.GameEvent; import mage.game.permanent.Permanent; @@ -97,7 +98,7 @@ class CurseOfMisfortunesEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { FilterCard filter = new FilterCard("Curse card that doesn't have the same name as a Curse attached to enchanted player"); - filter.getSubtype().add("Curse"); + filter.add(new SubtypePredicate("Curse")); Permanent enchantment = game.getPermanent(source.getSourceId()); if (enchantment != null && enchantment.getAttachedTo() != null) { Player targetPlayer = game.getPlayer(enchantment.getAttachedTo()); diff --git a/Mage.Sets/src/mage/sets/darkascension/DerangedOutcast.java b/Mage.Sets/src/mage/sets/darkascension/DerangedOutcast.java index 7fafdd650ee..80aee0290f6 100644 --- a/Mage.Sets/src/mage/sets/darkascension/DerangedOutcast.java +++ b/Mage.Sets/src/mage/sets/darkascension/DerangedOutcast.java @@ -40,8 +40,8 @@ import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.common.counter.AddCountersTargetEffect; import mage.cards.CardImpl; import mage.counters.CounterType; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetControlledPermanent; import mage.target.common.TargetCreaturePermanent; @@ -53,8 +53,7 @@ public class DerangedOutcast extends CardImpl { private final static FilterControlledPermanent filter = new FilterControlledPermanent("a Human"); static { - filter.getSubtype().add("Human"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Human")); } public DerangedOutcast(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/darkascension/DiregrafCaptain.java b/Mage.Sets/src/mage/sets/darkascension/DiregrafCaptain.java index 1c28ff3ba82..6e70b7604a9 100644 --- a/Mage.Sets/src/mage/sets/darkascension/DiregrafCaptain.java +++ b/Mage.Sets/src/mage/sets/darkascension/DiregrafCaptain.java @@ -37,8 +37,8 @@ import mage.abilities.effects.common.LoseLifeTargetEffect; import mage.abilities.effects.common.continious.BoostControlledEffect; import mage.abilities.keyword.DeathtouchAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; import mage.game.events.GameEvent; import mage.game.events.ZoneChangeEvent; @@ -56,8 +56,7 @@ public class DiregrafCaptain extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Zombie"); static { - filter.getSubtype().add("Zombie"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Zombie")); } public DiregrafCaptain(UUID ownerId) { @@ -93,8 +92,7 @@ class DiregrafCaptainTriggeredAbility extends TriggeredAbilityImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Spirit"); static { - filter.getSubtype().add("Spirit"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Spirit")); } public DrogskolCaptain(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/darkascension/FiendOfTheShadows.java b/Mage.Sets/src/mage/sets/darkascension/FiendOfTheShadows.java index 787a8245842..c079135c1d6 100644 --- a/Mage.Sets/src/mage/sets/darkascension/FiendOfTheShadows.java +++ b/Mage.Sets/src/mage/sets/darkascension/FiendOfTheShadows.java @@ -43,9 +43,9 @@ import mage.abilities.effects.common.RegenerateSourceEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.Card; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterCard; import mage.filter.common.FilterControlledCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.ExileZone; import mage.game.Game; import mage.target.common.TargetControlledCreaturePermanent; @@ -61,8 +61,7 @@ public class FiendOfTheShadows extends CardImpl { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("a human"); static { - filter.getSubtype().add("Human"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Human")); } public FiendOfTheShadows(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/darkascension/Gravecrawler.java b/Mage.Sets/src/mage/sets/darkascension/Gravecrawler.java index 37cb8735c2b..22548bc9932 100644 --- a/Mage.Sets/src/mage/sets/darkascension/Gravecrawler.java +++ b/Mage.Sets/src/mage/sets/darkascension/Gravecrawler.java @@ -38,8 +38,8 @@ import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.AsThoughEffectImpl; import mage.cards.Card; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; import java.util.UUID; @@ -82,8 +82,7 @@ class GravecrawlerPlayEffect extends AsThoughEffectImpl private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("zombie"); static { - filter.getSubtype().add("Zombie"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Zombie")); } public GravecrawlerPlayEffect() { diff --git a/Mage.Sets/src/mage/sets/darkascension/HavengulRunebinder.java b/Mage.Sets/src/mage/sets/darkascension/HavengulRunebinder.java index ca508da5b3e..9f5832ddf7a 100644 --- a/Mage.Sets/src/mage/sets/darkascension/HavengulRunebinder.java +++ b/Mage.Sets/src/mage/sets/darkascension/HavengulRunebinder.java @@ -40,9 +40,9 @@ import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.counter.AddCountersAllEffect; import mage.cards.CardImpl; import mage.counters.CounterType; -import mage.filter.Filter; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.common.FilterCreatureCard; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.permanent.token.ZombieToken; import mage.target.common.TargetCardInYourGraveyard; @@ -56,8 +56,7 @@ public class HavengulRunebinder extends CardImpl { private static final FilterControlledCreaturePermanent filterPermanent = new FilterControlledCreaturePermanent("Zombie creature you control"); static { - filterPermanent.getSubtype().add("Zombie"); - filterPermanent.setScopeSubtype(Filter.ComparisonScope.Any); + filterPermanent.add(new SubtypePredicate("Zombie")); } public HavengulRunebinder(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/darkascension/Immerwolf.java b/Mage.Sets/src/mage/sets/darkascension/Immerwolf.java index 7389c825ae6..88d75da7562 100644 --- a/Mage.Sets/src/mage/sets/darkascension/Immerwolf.java +++ b/Mage.Sets/src/mage/sets/darkascension/Immerwolf.java @@ -37,8 +37,9 @@ import mage.abilities.effects.ReplacementEffectImpl; import mage.abilities.effects.common.continious.BoostControlledEffect; import mage.abilities.keyword.IntimidateAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; import mage.game.events.GameEvent; import mage.game.permanent.Permanent; @@ -54,9 +55,7 @@ public class Immerwolf extends CardImpl { private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("Wolf and Werewolf creatures"); static { - filter.getSubtype().add("Wolf"); - filter.getSubtype().add("Werewolf"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(Predicates.or(new SubtypePredicate("Wolf"), new SubtypePredicate("Werewolf"))); } public Immerwolf(UUID ownerId) { @@ -95,11 +94,8 @@ class ImmerwolfEffect extends ReplacementEffectImpl { private final static FilterCreaturePermanent filterNonhuman = new FilterCreaturePermanent("Non-human creature"); static { - filterWerewolf.getSubtype().add("Werewolf"); - filterWerewolf.setScopeSubtype(Filter.ComparisonScope.Any); - filterNonhuman.getSubtype().add("Human"); - filterNonhuman.setScopeSubtype(Filter.ComparisonScope.Any); - filterNonhuman.setNotFilter(true); + filterWerewolf.add(new SubtypePredicate("Werewolf")); + filterNonhuman.add(Predicates.not(new SubtypePredicate("Human"))); } public ImmerwolfEffect() { diff --git a/Mage.Sets/src/mage/sets/darkascension/MikaeusTheUnhallowed.java b/Mage.Sets/src/mage/sets/darkascension/MikaeusTheUnhallowed.java index 9e11ff19a9b..c256c3c561d 100644 --- a/Mage.Sets/src/mage/sets/darkascension/MikaeusTheUnhallowed.java +++ b/Mage.Sets/src/mage/sets/darkascension/MikaeusTheUnhallowed.java @@ -42,6 +42,8 @@ import mage.abilities.keyword.IntimidateAbility; import mage.abilities.keyword.UndyingAbility; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; import mage.game.events.GameEvent; import mage.game.permanent.Permanent; @@ -56,8 +58,7 @@ public class MikaeusTheUnhallowed extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("non-Human creatures"); static { - filter.getSubtype().add("Human"); - filter.setNotSubtype(true); + filter.add(Predicates.not(new SubtypePredicate("Human"))); } public MikaeusTheUnhallowed(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/darkascension/RavenousDemon.java b/Mage.Sets/src/mage/sets/darkascension/RavenousDemon.java index 6f5da931ae6..cd24f74ec78 100644 --- a/Mage.Sets/src/mage/sets/darkascension/RavenousDemon.java +++ b/Mage.Sets/src/mage/sets/darkascension/RavenousDemon.java @@ -35,22 +35,21 @@ import mage.MageInt; import mage.abilities.common.ActivateAsSorceryActivatedAbility; import mage.abilities.costs.common.SacrificeTargetCost; import mage.abilities.effects.common.TransformSourceEffect; -import mage.cards.CardImpl; import mage.abilities.keyword.TransformAbility; -import mage.filter.Filter; +import mage.cards.CardImpl; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetControlledPermanent; /** * - * @author anonymous + * @author intimidatingant */ public class RavenousDemon extends CardImpl { private final static FilterControlledPermanent filter = new FilterControlledPermanent("Human"); static { - filter.getSubtype().add("Human"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Human")); } public RavenousDemon(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/darkascension/RequiemAngel.java b/Mage.Sets/src/mage/sets/darkascension/RequiemAngel.java index dc32eae6cc6..113ae2309f3 100644 --- a/Mage.Sets/src/mage/sets/darkascension/RequiemAngel.java +++ b/Mage.Sets/src/mage/sets/darkascension/RequiemAngel.java @@ -35,19 +35,20 @@ import mage.abilities.common.DiesAnotherCreatureYouControlTriggeredAbility; import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; -import mage.game.permanent.token.SpiritWhiteToken; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.SubtypePredicate; +import mage.game.permanent.token.SpiritWhiteToken; /** * * @author intimidatingant */ public class RequiemAngel extends CardImpl { - private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Human creatures"); + private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("non-Spirit creature"); static { - filter.getSubtype().add("Spirit"); - filter.setNotSubtype(true); + filter.add(Predicates.not(new SubtypePredicate("Spirit"))); } public RequiemAngel(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/darkascension/ScorchTheFields.java b/Mage.Sets/src/mage/sets/darkascension/ScorchTheFields.java index b4d65777707..817d417cd73 100644 --- a/Mage.Sets/src/mage/sets/darkascension/ScorchTheFields.java +++ b/Mage.Sets/src/mage/sets/darkascension/ScorchTheFields.java @@ -34,6 +34,7 @@ import mage.abilities.effects.common.DamageAllEffect; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetLandPermanent; /** @@ -45,7 +46,7 @@ public class ScorchTheFields extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Human creature"); static { - filter.getSubtype().add("Human"); + filter.add(new SubtypePredicate("Human")); } public ScorchTheFields(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/darkascension/SkirsdagFlayer.java b/Mage.Sets/src/mage/sets/darkascension/SkirsdagFlayer.java index bd3b96f201b..11f32edef21 100644 --- a/Mage.Sets/src/mage/sets/darkascension/SkirsdagFlayer.java +++ b/Mage.Sets/src/mage/sets/darkascension/SkirsdagFlayer.java @@ -40,6 +40,7 @@ import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; import mage.filter.common.FilterControlledCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetControlledPermanent; import mage.target.common.TargetCreaturePermanent; @@ -52,7 +53,7 @@ public class SkirsdagFlayer extends CardImpl { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Human"); static { - filter.getSubtype().add("Human"); + filter.add(new SubtypePredicate("Human")); } public SkirsdagFlayer(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/darkascension/StromkirkCaptain.java b/Mage.Sets/src/mage/sets/darkascension/StromkirkCaptain.java index d993f7de9d9..df1b768a3f1 100644 --- a/Mage.Sets/src/mage/sets/darkascension/StromkirkCaptain.java +++ b/Mage.Sets/src/mage/sets/darkascension/StromkirkCaptain.java @@ -38,8 +38,8 @@ import mage.abilities.effects.common.continious.BoostControlledEffect; import mage.abilities.effects.common.continious.GainAbilityControlledEffect; import mage.abilities.keyword.FirstStrikeAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; /** * @@ -49,8 +49,7 @@ public class StromkirkCaptain extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Vampire creatures"); static { - filter.getSubtype().add("Vampire"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Vampire")); } public StromkirkCaptain(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/darkascension/WolfhuntersQuiver.java b/Mage.Sets/src/mage/sets/darkascension/WolfhuntersQuiver.java index df2fd8218fb..5381b8fab1f 100644 --- a/Mage.Sets/src/mage/sets/darkascension/WolfhuntersQuiver.java +++ b/Mage.Sets/src/mage/sets/darkascension/WolfhuntersQuiver.java @@ -42,6 +42,7 @@ import mage.abilities.effects.common.continious.GainAbilityAttachedEffect; import mage.abilities.keyword.EquipAbility; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.Target; import mage.target.common.TargetCreatureOrPlayer; import mage.target.common.TargetCreaturePermanent; @@ -55,7 +56,7 @@ public class WolfhuntersQuiver extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Werewolf creature"); static { - filter.getSubtype().add("Werewolf"); + filter.add(new SubtypePredicate("Werewolf")); } public WolfhuntersQuiver(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/darkascension/ZombieApocalypse.java b/Mage.Sets/src/mage/sets/darkascension/ZombieApocalypse.java index db3acadfb37..477f82908fb 100644 --- a/Mage.Sets/src/mage/sets/darkascension/ZombieApocalypse.java +++ b/Mage.Sets/src/mage/sets/darkascension/ZombieApocalypse.java @@ -35,9 +35,9 @@ import mage.abilities.Ability; import mage.abilities.effects.OneShotEffect; import mage.cards.Card; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterCreatureCard; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; @@ -74,10 +74,8 @@ class ZombieApocalypseEffect extends OneShotEffect { private static final FilterCreaturePermanent filterHuman = new FilterCreaturePermanent(); static { - filterZombie.getSubtype().add("Zombie"); - filterZombie.setScopeSubtype(Filter.ComparisonScope.Any); - filterHuman.getSubtype().add("Human"); - filterHuman.setScopeSubtype(Filter.ComparisonScope.Any); + filterZombie.add(new SubtypePredicate("Zombie")); + filterHuman.add(new SubtypePredicate("Human")); } public ZombieApocalypseEffect() { diff --git a/Mage.Sets/src/mage/sets/darksteel/BlinkmothNexus.java b/Mage.Sets/src/mage/sets/darksteel/BlinkmothNexus.java index 76e43483eef..43ff17f0f01 100644 --- a/Mage.Sets/src/mage/sets/darksteel/BlinkmothNexus.java +++ b/Mage.Sets/src/mage/sets/darksteel/BlinkmothNexus.java @@ -44,8 +44,8 @@ import mage.abilities.effects.common.continious.BoostTargetEffect; import mage.abilities.keyword.FlyingAbility; import mage.abilities.mana.ColorlessManaAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.permanent.token.Token; import mage.target.TargetPermanent; @@ -57,8 +57,7 @@ public class BlinkmothNexus extends CardImpl { private final static FilterPermanent filter = new FilterPermanent("Blinkmoth"); static { - filter.getSubtype().add("Blinkmoth"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Blinkmoth")); } public BlinkmothNexus(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/darksteel/MyrMatrix.java b/Mage.Sets/src/mage/sets/darksteel/MyrMatrix.java index 2027412da2a..e35d9510814 100644 --- a/Mage.Sets/src/mage/sets/darksteel/MyrMatrix.java +++ b/Mage.Sets/src/mage/sets/darksteel/MyrMatrix.java @@ -40,8 +40,8 @@ import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.continious.BoostAllEffect; import mage.abilities.keyword.IndestructibleAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.permanent.token.MyrToken; /** @@ -53,8 +53,7 @@ public class MyrMatrix extends CardImpl { private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("Myr"); static { - filter.getSubtype().add("Myr"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Myr")); } public MyrMatrix (UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/darksteel/SteelshaperApprentice.java b/Mage.Sets/src/mage/sets/darksteel/SteelshaperApprentice.java index 2a220118449..a8c6e5f363f 100644 --- a/Mage.Sets/src/mage/sets/darksteel/SteelshaperApprentice.java +++ b/Mage.Sets/src/mage/sets/darksteel/SteelshaperApprentice.java @@ -42,6 +42,7 @@ import mage.abilities.costs.mana.ColoredManaCost; import mage.abilities.effects.common.search.SearchLibraryRevealPutInHandEffect; import mage.cards.CardImpl; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetCardInLibrary; /** @@ -53,7 +54,7 @@ public class SteelshaperApprentice extends CardImpl { static { filter.getCardType().add(CardType.ARTIFACT); - filter.getSubtype().add("Equipment"); + filter.add(new SubtypePredicate("Equipment")); } public SteelshaperApprentice(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/darksteel/WandOfTheElements.java b/Mage.Sets/src/mage/sets/darksteel/WandOfTheElements.java index 02549c74494..428f6e92baa 100644 --- a/Mage.Sets/src/mage/sets/darksteel/WandOfTheElements.java +++ b/Mage.Sets/src/mage/sets/darksteel/WandOfTheElements.java @@ -41,8 +41,8 @@ import mage.abilities.costs.common.TapSourceCost; import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.permanent.token.Token; import mage.target.common.TargetControlledPermanent; @@ -55,10 +55,8 @@ public class WandOfTheElements extends CardImpl { private static final FilterControlledPermanent mountainFilter = new FilterControlledPermanent("a Mountain"); static { - islandFilter.getSubtype().add("Island"); - islandFilter.setScopeSubtype(Filter.ComparisonScope.Any); - mountainFilter.getSubtype().add("Mountain"); - mountainFilter.setScopeSubtype(Filter.ComparisonScope.Any); + islandFilter.add(new SubtypePredicate("Island")); + mountainFilter.add(new SubtypePredicate("Mountain")); } public WandOfTheElements(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/dissension/HaazdaExonerator.java b/Mage.Sets/src/mage/sets/dissension/HaazdaExonerator.java index 04fa5c0c249..2fd8374f4c9 100644 --- a/Mage.Sets/src/mage/sets/dissension/HaazdaExonerator.java +++ b/Mage.Sets/src/mage/sets/dissension/HaazdaExonerator.java @@ -39,8 +39,8 @@ import mage.abilities.costs.common.SacrificeSourceCost; import mage.abilities.costs.common.TapSourceCost; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.TargetPermanent; /** @@ -52,8 +52,7 @@ public class HaazdaExonerator extends CardImpl { private final static FilterPermanent filter = new FilterPermanent("Aura"); static { - filter.getSubtype().add("Aura"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Aura")); } public HaazdaExonerator(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/elspethvstezzeret/DaruEncampment.java b/Mage.Sets/src/mage/sets/elspethvstezzeret/DaruEncampment.java index 5658df4fb10..88edc2d0060 100644 --- a/Mage.Sets/src/mage/sets/elspethvstezzeret/DaruEncampment.java +++ b/Mage.Sets/src/mage/sets/elspethvstezzeret/DaruEncampment.java @@ -39,6 +39,7 @@ import mage.abilities.effects.common.continious.BoostTargetEffect; import mage.abilities.mana.ColorlessManaAbility; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetCreaturePermanent; /** @@ -50,7 +51,7 @@ public class DaruEncampment extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Soldier creature"); static { - filter.getSubtype().add("Soldier"); + filter.add(new SubtypePredicate("Soldier")); } public DaruEncampment(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/elspethvstezzeret/MishrasFactory.java b/Mage.Sets/src/mage/sets/elspethvstezzeret/MishrasFactory.java index 3da3ca049d4..ee67a7c42df 100644 --- a/Mage.Sets/src/mage/sets/elspethvstezzeret/MishrasFactory.java +++ b/Mage.Sets/src/mage/sets/elspethvstezzeret/MishrasFactory.java @@ -41,6 +41,7 @@ import mage.abilities.effects.common.continious.BoostTargetEffect; import mage.abilities.mana.ColorlessManaAbility; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.permanent.token.Token; import mage.target.common.TargetCreaturePermanent; @@ -53,7 +54,7 @@ public class MishrasFactory extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Assembly-Worker creature"); static { - filter.getSubtype().add("Assembly-Worker"); + filter.add(new SubtypePredicate("Assembly-Worker")); } public MishrasFactory(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/elspethvstezzeret/Pentavus.java b/Mage.Sets/src/mage/sets/elspethvstezzeret/Pentavus.java index 11639c3c1af..34cb33f0fde 100644 --- a/Mage.Sets/src/mage/sets/elspethvstezzeret/Pentavus.java +++ b/Mage.Sets/src/mage/sets/elspethvstezzeret/Pentavus.java @@ -44,8 +44,8 @@ import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.counters.CounterType; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.permanent.token.Token; import mage.target.common.TargetControlledPermanent; @@ -58,8 +58,7 @@ public class Pentavus extends CardImpl { private final static FilterControlledPermanent filter = new FilterControlledPermanent("Pentavite"); static { - filter.getSubtype().add("Pentavite"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Pentavite")); } public Pentavus(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/fifthdawn/BeaconOfCreation.java b/Mage.Sets/src/mage/sets/fifthdawn/BeaconOfCreation.java index fe2255e82c7..eb078641ecc 100644 --- a/Mage.Sets/src/mage/sets/fifthdawn/BeaconOfCreation.java +++ b/Mage.Sets/src/mage/sets/fifthdawn/BeaconOfCreation.java @@ -34,8 +34,8 @@ import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.ShuffleSpellEffect; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.permanent.token.InsectToken; /** @@ -47,8 +47,7 @@ public class BeaconOfCreation extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("Forest you control"); static { - filter.getSubtype().add("Forest"); - filter.setScopeSubtype(ComparisonScope.Any); + filter.add(new SubtypePredicate("Forest")); } public BeaconOfCreation(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/guildpact/SkeletalVampire.java b/Mage.Sets/src/mage/sets/guildpact/SkeletalVampire.java index d16cbaf16d8..8213fca6641 100644 --- a/Mage.Sets/src/mage/sets/guildpact/SkeletalVampire.java +++ b/Mage.Sets/src/mage/sets/guildpact/SkeletalVampire.java @@ -42,8 +42,8 @@ import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.RegenerateSourceEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.permanent.token.Token; import mage.target.common.TargetControlledCreaturePermanent; @@ -56,8 +56,7 @@ public class SkeletalVampire extends CardImpl { private final static FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("a Bat"); static { - filter.getSubtype().add("Bat"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Bat")); } public SkeletalVampire(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/innistrad/AngelOfFlightAlabaster.java b/Mage.Sets/src/mage/sets/innistrad/AngelOfFlightAlabaster.java index 9fef330bc94..1d034ac5e77 100644 --- a/Mage.Sets/src/mage/sets/innistrad/AngelOfFlightAlabaster.java +++ b/Mage.Sets/src/mage/sets/innistrad/AngelOfFlightAlabaster.java @@ -7,8 +7,8 @@ import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; import mage.abilities.effects.common.ReturnToHandTargetEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.Target; import mage.target.common.TargetCardInYourGraveyard; @@ -18,8 +18,7 @@ public class AngelOfFlightAlabaster extends CardImpl { private static final FilterCard filter = new FilterCard("Spirit card from your graveyard"); static { - filter.getSubtype().add("Spirit"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Spirit")); } public AngelOfFlightAlabaster(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/innistrad/AngelicOverseer.java b/Mage.Sets/src/mage/sets/innistrad/AngelicOverseer.java index f51b69c8b60..e5520b3b084 100644 --- a/Mage.Sets/src/mage/sets/innistrad/AngelicOverseer.java +++ b/Mage.Sets/src/mage/sets/innistrad/AngelicOverseer.java @@ -38,8 +38,8 @@ import mage.abilities.decorator.ConditionalContinousEffect; import mage.abilities.effects.common.continious.GainAbilitySourceEffect; import mage.abilities.keyword.*; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; /** * @@ -52,8 +52,7 @@ public class AngelicOverseer extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("Human"); static { - filter.getSubtype().add("Human"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Human")); } public AngelicOverseer(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/innistrad/AvacynianPriest.java b/Mage.Sets/src/mage/sets/innistrad/AvacynianPriest.java index 6f71933296a..5c7c162d8e7 100644 --- a/Mage.Sets/src/mage/sets/innistrad/AvacynianPriest.java +++ b/Mage.Sets/src/mage/sets/innistrad/AvacynianPriest.java @@ -39,6 +39,8 @@ import mage.abilities.effects.common.TapTargetEffect; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; import mage.target.common.TargetCreaturePermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.SubtypePredicate; import java.util.UUID; @@ -50,8 +52,7 @@ public class AvacynianPriest extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("non-Human creature"); static { - filter.getSubtype().add("Human"); - filter.setNotSubtype(true); + filter.add(Predicates.not(new SubtypePredicate("Human"))); } public AvacynianPriest(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/innistrad/BattlegroundGeist.java b/Mage.Sets/src/mage/sets/innistrad/BattlegroundGeist.java index 276c1d0face..aa067608487 100644 --- a/Mage.Sets/src/mage/sets/innistrad/BattlegroundGeist.java +++ b/Mage.Sets/src/mage/sets/innistrad/BattlegroundGeist.java @@ -35,8 +35,8 @@ import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.common.continious.BoostControlledEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import java.util.UUID; @@ -48,8 +48,7 @@ public class BattlegroundGeist extends CardImpl { private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("Spirit creatures"); static { - filter.getSubtype().add("Spirit"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Spirit")); } public BattlegroundGeist(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/innistrad/BitterheartWitch.java b/Mage.Sets/src/mage/sets/innistrad/BitterheartWitch.java index 454703c3822..c527061a7dd 100644 --- a/Mage.Sets/src/mage/sets/innistrad/BitterheartWitch.java +++ b/Mage.Sets/src/mage/sets/innistrad/BitterheartWitch.java @@ -41,6 +41,7 @@ import mage.abilities.keyword.DeathtouchAbility; import mage.cards.Card; import mage.cards.CardImpl; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; import mage.players.Player; import mage.target.TargetPlayer; @@ -86,7 +87,7 @@ class BitterheartWitchEffect extends OneShotEffect { private final static FilterCard filter = new FilterCard("Curse card in your library"); static { - filter.getSubtype().add("Curse"); + filter.add(new SubtypePredicate("Curse")); } public BitterheartWitchEffect() { diff --git a/Mage.Sets/src/mage/sets/innistrad/BloodlineKeeper.java b/Mage.Sets/src/mage/sets/innistrad/BloodlineKeeper.java index e9dfbc7f36e..4cfa8fbe559 100644 --- a/Mage.Sets/src/mage/sets/innistrad/BloodlineKeeper.java +++ b/Mage.Sets/src/mage/sets/innistrad/BloodlineKeeper.java @@ -43,8 +43,8 @@ import mage.abilities.effects.common.TransformSourceEffect; import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.TransformAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; import mage.game.permanent.token.Token; @@ -102,8 +102,7 @@ class ControlFiveVampiresCost extends CostImpl { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent(); static { - filter.getSubtype().add("Vampire"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Vampire")); } public ControlFiveVampiresCost() { diff --git a/Mage.Sets/src/mage/sets/innistrad/CharmbreakerDevils.java b/Mage.Sets/src/mage/sets/innistrad/CharmbreakerDevils.java index 206473fb2ea..f110b242a53 100644 --- a/Mage.Sets/src/mage/sets/innistrad/CharmbreakerDevils.java +++ b/Mage.Sets/src/mage/sets/innistrad/CharmbreakerDevils.java @@ -60,7 +60,6 @@ public class CharmbreakerDevils extends CardImpl { static { filter.getCardType().add(CardType.INSTANT); filter.getCardType().add(CardType.SORCERY); - filter.setScopeSubtype(ComparisonScope.Any); } public CharmbreakerDevils(UUID ownerId) { @@ -111,7 +110,6 @@ class CharmbreakerDevilsEffect extends OneShotEffect { FilterCard filter = new FilterCard("instant or sorcery card"); filter.getCardType().add(CardType.INSTANT); filter.getCardType().add(CardType.SORCERY); - filter.setScopeSubtype(ComparisonScope.Any); Card[] cards = player.getGraveyard().getCards(filter, game).toArray(new Card[0]); if (cards.length > 0) { Random rnd = new Random(); diff --git a/Mage.Sets/src/mage/sets/innistrad/ClifftopRetreat.java b/Mage.Sets/src/mage/sets/innistrad/ClifftopRetreat.java index 547b990c5b8..bed121f05ce 100644 --- a/Mage.Sets/src/mage/sets/innistrad/ClifftopRetreat.java +++ b/Mage.Sets/src/mage/sets/innistrad/ClifftopRetreat.java @@ -39,8 +39,9 @@ import mage.abilities.effects.common.TapSourceEffect; import mage.abilities.mana.RedManaAbility; import mage.abilities.mana.WhiteManaAbility; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.common.FilterLandPermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.SubtypePredicate; import java.util.UUID; @@ -52,10 +53,7 @@ public class ClifftopRetreat extends CardImpl { private static final FilterLandPermanent filter = new FilterLandPermanent(); static { - filter.getSubtype().add("Mountain"); - filter.getSubtype().add("Plains"); - filter.setScopeSubtype(ComparisonScope.Any); - filter.setMessage("Mountain or a Plains"); + filter.add(Predicates.or(new SubtypePredicate("Mountain"), new SubtypePredicate("Plains"))); } public ClifftopRetreat(UUID ownerId) { @@ -63,7 +61,7 @@ public class ClifftopRetreat extends CardImpl { this.expansionSetCode = "ISD"; Condition controls = new UnlessCondition(new ControlsPermanentCondition(filter, ControlsPermanentCondition.CountType.MORE_THAN, 0)); - String abilityText = "tap it unless you control a " + filter.getMessage(); + String abilityText = "tap it unless you control a Mountain or a Plains"; this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(new TapSourceEffect(), controls, abilityText), abilityText)); this.addAbility(new RedManaAbility()); this.addAbility(new WhiteManaAbility()); diff --git a/Mage.Sets/src/mage/sets/innistrad/DearlyDeparted.java b/Mage.Sets/src/mage/sets/innistrad/DearlyDeparted.java index e2bc697e54c..0eac2d4f1c8 100644 --- a/Mage.Sets/src/mage/sets/innistrad/DearlyDeparted.java +++ b/Mage.Sets/src/mage/sets/innistrad/DearlyDeparted.java @@ -41,8 +41,8 @@ import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.counters.CounterType; -import mage.filter.Filter; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import java.util.UUID; @@ -56,8 +56,7 @@ public class DearlyDeparted extends CardImpl { private static final String ruleText = "As long as Dearly Departed is in your graveyard, each Human creature you control enters the battlefield with an additional +1/+1 counter on it"; static { - filterHuman.getSubtype().add("Human"); - filterHuman.setScopeSubtype(Filter.ComparisonScope.Any); + filterHuman.add(new SubtypePredicate("Human")); } public DearlyDeparted(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/innistrad/EliteInquisitor.java b/Mage.Sets/src/mage/sets/innistrad/EliteInquisitor.java index 52cadf73b1a..ee173983fd8 100644 --- a/Mage.Sets/src/mage/sets/innistrad/EliteInquisitor.java +++ b/Mage.Sets/src/mage/sets/innistrad/EliteInquisitor.java @@ -34,9 +34,9 @@ import mage.abilities.keyword.FirstStrikeAbility; import mage.abilities.keyword.ProtectionAbility; import mage.abilities.keyword.VigilanceAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import java.util.UUID; @@ -50,12 +50,9 @@ public class EliteInquisitor extends CardImpl { private static final FilterPermanent filter3 = new FilterCreaturePermanent("Zombies"); static { - filter1.getSubtype().add("Vampire"); - filter2.getSubtype().add("Werewolf"); - filter3.getSubtype().add("Zombie"); - filter1.setScopeSubtype(Filter.ComparisonScope.Any); - filter2.setScopeSubtype(Filter.ComparisonScope.Any); - filter3.setScopeSubtype(Filter.ComparisonScope.Any); + filter1.add(new SubtypePredicate("Vampire")); + filter2.add(new SubtypePredicate("Werewolf")); + filter3.add(new SubtypePredicate("Zombie")); } public EliteInquisitor(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/innistrad/EndlessRanksOfTheDead.java b/Mage.Sets/src/mage/sets/innistrad/EndlessRanksOfTheDead.java index 4cbcb7e7295..24392f4afd3 100644 --- a/Mage.Sets/src/mage/sets/innistrad/EndlessRanksOfTheDead.java +++ b/Mage.Sets/src/mage/sets/innistrad/EndlessRanksOfTheDead.java @@ -36,6 +36,7 @@ import mage.abilities.dynamicvalue.DynamicValue; import mage.abilities.effects.common.CreateTokenEffect; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; import mage.game.events.GameEvent.EventType; import mage.game.permanent.token.ZombieToken; @@ -73,7 +74,7 @@ class HalfZombiesCount implements DynamicValue { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent(); static { - filter.getSubtype().add("Zombie"); + filter.add(new SubtypePredicate("Zombie")); } public static HalfZombiesCount getInstance() { diff --git a/Mage.Sets/src/mage/sets/innistrad/FullMoonsRise.java b/Mage.Sets/src/mage/sets/innistrad/FullMoonsRise.java index 9db33012382..0d06301106a 100644 --- a/Mage.Sets/src/mage/sets/innistrad/FullMoonsRise.java +++ b/Mage.Sets/src/mage/sets/innistrad/FullMoonsRise.java @@ -41,9 +41,9 @@ import mage.abilities.effects.common.continious.BoostControlledEffect; import mage.abilities.effects.common.continious.GainAbilityControlledEffect; import mage.abilities.keyword.TrampleAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.target.targetpointer.FixedTarget; @@ -58,8 +58,7 @@ public class FullMoonsRise extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Werewolf creatures"); static { - filter.getSubtype().add("Werewolf"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Werewolf")); } public FullMoonsRise(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/innistrad/GallowsWarden.java b/Mage.Sets/src/mage/sets/innistrad/GallowsWarden.java index 08ce6d5641f..03afa754d35 100644 --- a/Mage.Sets/src/mage/sets/innistrad/GallowsWarden.java +++ b/Mage.Sets/src/mage/sets/innistrad/GallowsWarden.java @@ -36,6 +36,7 @@ import mage.abilities.effects.common.continious.BoostControlledEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import java.util.UUID; @@ -47,7 +48,7 @@ public class GallowsWarden extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Spirit creatures"); static { - filter.getSubtype().add("Spirit"); + filter.add(new SubtypePredicate("Spirit")); } public GallowsWarden(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/innistrad/GhoulcallersChant.java b/Mage.Sets/src/mage/sets/innistrad/GhoulcallersChant.java index 4bd20936cd5..81ed5709381 100644 --- a/Mage.Sets/src/mage/sets/innistrad/GhoulcallersChant.java +++ b/Mage.Sets/src/mage/sets/innistrad/GhoulcallersChant.java @@ -33,9 +33,9 @@ import mage.Constants.Rarity; import mage.abilities.Mode; import mage.abilities.effects.common.ReturnToHandTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.FilterCard; import mage.filter.common.FilterCreatureCard; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetCardInYourGraveyard; /** @@ -47,8 +47,7 @@ public class GhoulcallersChant extends CardImpl { private static final FilterCard filter = new FilterCard("Zombie cards from your graveyard"); static { - filter.getSubtype().add("Zombie"); - filter.setScopeSubtype(ComparisonScope.Any); + filter.add(new SubtypePredicate("Zombie")); } public GhoulcallersChant(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/innistrad/Ghoulraiser.java b/Mage.Sets/src/mage/sets/innistrad/Ghoulraiser.java index 1b2f380b574..a6739fad25c 100644 --- a/Mage.Sets/src/mage/sets/innistrad/Ghoulraiser.java +++ b/Mage.Sets/src/mage/sets/innistrad/Ghoulraiser.java @@ -39,8 +39,8 @@ import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.effects.OneShotEffect; import mage.cards.Card; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; import mage.players.Player; @@ -94,8 +94,7 @@ class GhoulraiserEffect extends OneShotEffect { Player player = game.getPlayer(source.getControllerId()); if (player != null) { FilterCard filter = new FilterCard("Zombie card"); - filter.getSubtype().add("Zombie"); - filter.setScopeSubtype(ComparisonScope.Any); + filter.add(new SubtypePredicate("Zombie")); Card[] cards = player.getGraveyard().getCards(filter, game).toArray(new Card[0]); if (cards.length > 0) { Random rnd = new Random(); diff --git a/Mage.Sets/src/mage/sets/innistrad/GraveBramble.java b/Mage.Sets/src/mage/sets/innistrad/GraveBramble.java index fb8aab1aca1..e3bc5a8461d 100644 --- a/Mage.Sets/src/mage/sets/innistrad/GraveBramble.java +++ b/Mage.Sets/src/mage/sets/innistrad/GraveBramble.java @@ -34,9 +34,9 @@ import mage.MageInt; import mage.abilities.keyword.DefenderAbility; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.FilterPermanent; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; /** * @@ -47,8 +47,7 @@ public class GraveBramble extends CardImpl { private static final FilterPermanent filter = new FilterCreaturePermanent("Zombies"); static { - filter.getSubtype().add("Zombie"); - filter.setScopeSubtype(ComparisonScope.Any); + filter.add(new SubtypePredicate("Zombie")); } public GraveBramble(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/innistrad/HamletCaptain.java b/Mage.Sets/src/mage/sets/innistrad/HamletCaptain.java index 6ece35514e6..0f8681a6dee 100644 --- a/Mage.Sets/src/mage/sets/innistrad/HamletCaptain.java +++ b/Mage.Sets/src/mage/sets/innistrad/HamletCaptain.java @@ -36,6 +36,7 @@ import mage.abilities.common.AttacksOrBlocksTriggeredAbility; import mage.abilities.effects.common.continious.BoostControlledEffect; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; /** * @@ -46,7 +47,7 @@ public class HamletCaptain extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Human creatures you control"); static { - filter.getSubtype().add("Human"); + filter.add(new SubtypePredicate("Human")); } public HamletCaptain(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/innistrad/HinterlandHarbor.java b/Mage.Sets/src/mage/sets/innistrad/HinterlandHarbor.java index 85c80e41371..d1445406282 100644 --- a/Mage.Sets/src/mage/sets/innistrad/HinterlandHarbor.java +++ b/Mage.Sets/src/mage/sets/innistrad/HinterlandHarbor.java @@ -39,8 +39,9 @@ import mage.abilities.effects.common.TapSourceEffect; import mage.abilities.mana.BlueManaAbility; import mage.abilities.mana.GreenManaAbility; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.common.FilterLandPermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.SubtypePredicate; import java.util.UUID; @@ -52,10 +53,7 @@ public class HinterlandHarbor extends CardImpl { private static final FilterLandPermanent filter = new FilterLandPermanent(); static { - filter.getSubtype().add("Forest"); - filter.getSubtype().add("Island"); - filter.setScopeSubtype(ComparisonScope.Any); - filter.setMessage("Forest or an Island"); + filter.add(Predicates.or(new SubtypePredicate("Forest"), new SubtypePredicate("Island"))); } public HinterlandHarbor(UUID ownerId) { @@ -63,7 +61,7 @@ public class HinterlandHarbor extends CardImpl { this.expansionSetCode = "ISD"; Condition controls = new UnlessCondition(new ControlsPermanentCondition(filter, ControlsPermanentCondition.CountType.MORE_THAN, 0)); - String abilityText = "tap it unless you control a " + filter.getMessage(); + String abilityText = "tap it unless you control a Forest or an Island"; this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(new TapSourceEffect(), controls, abilityText), abilityText)); this.addAbility(new GreenManaAbility()); this.addAbility(new BlueManaAbility()); diff --git a/Mage.Sets/src/mage/sets/innistrad/HowlpackAlpha.java b/Mage.Sets/src/mage/sets/innistrad/HowlpackAlpha.java index 96b0af4e356..7129c66e4de 100644 --- a/Mage.Sets/src/mage/sets/innistrad/HowlpackAlpha.java +++ b/Mage.Sets/src/mage/sets/innistrad/HowlpackAlpha.java @@ -41,8 +41,9 @@ import mage.abilities.effects.common.TransformSourceEffect; import mage.abilities.effects.common.continious.BoostControlledEffect; import mage.abilities.keyword.TransformAbility; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.permanent.token.WolfToken; import java.util.UUID; @@ -58,9 +59,7 @@ public class HowlpackAlpha extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Werewolf and Wolf creatures"); static { - filter.getSubtype().add("Werewolf"); - filter.getSubtype().add("Wolf"); - filter.setScopeSubtype(ComparisonScope.Any); + filter.add(Predicates.or(new SubtypePredicate("Werewolf"), new SubtypePredicate("Wolf"))); } public HowlpackAlpha(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/innistrad/IsolatedChapel.java b/Mage.Sets/src/mage/sets/innistrad/IsolatedChapel.java index 6b3fce62210..e73f77fe640 100644 --- a/Mage.Sets/src/mage/sets/innistrad/IsolatedChapel.java +++ b/Mage.Sets/src/mage/sets/innistrad/IsolatedChapel.java @@ -39,8 +39,9 @@ import mage.abilities.effects.common.TapSourceEffect; import mage.abilities.mana.BlackManaAbility; import mage.abilities.mana.WhiteManaAbility; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.common.FilterLandPermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.SubtypePredicate; import java.util.UUID; @@ -52,10 +53,7 @@ public class IsolatedChapel extends CardImpl { private static final FilterLandPermanent filter = new FilterLandPermanent(); static { - filter.getSubtype().add("Plains"); - filter.getSubtype().add("Swamp"); - filter.setScopeSubtype(ComparisonScope.Any); - filter.setMessage("Plains or a Swamp"); + filter.add(Predicates.or(new SubtypePredicate("Plains"), new SubtypePredicate("Swamp"))); } public IsolatedChapel(UUID ownerId) { @@ -63,7 +61,7 @@ public class IsolatedChapel extends CardImpl { this.expansionSetCode = "ISD"; Condition controls = new UnlessCondition(new ControlsPermanentCondition(filter, ControlsPermanentCondition.CountType.MORE_THAN, 0)); - String abilityText = "tap it unless you control a " + filter.getMessage(); + String abilityText = "tap it unless you control a Plains or a Swamp"; this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(new TapSourceEffect(), controls, abilityText), abilityText)); this.addAbility(new WhiteManaAbility()); this.addAbility(new BlackManaAbility()); diff --git a/Mage.Sets/src/mage/sets/innistrad/LordOfLineage.java b/Mage.Sets/src/mage/sets/innistrad/LordOfLineage.java index 09e74e4c147..22a86187734 100644 --- a/Mage.Sets/src/mage/sets/innistrad/LordOfLineage.java +++ b/Mage.Sets/src/mage/sets/innistrad/LordOfLineage.java @@ -29,9 +29,10 @@ package mage.sets.innistrad; import java.util.UUID; -import mage.Constants; import mage.Constants.CardType; +import mage.Constants.Duration; import mage.Constants.Rarity; +import mage.Constants.Zone; import mage.MageInt; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.common.SimpleStaticAbility; @@ -40,8 +41,8 @@ import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.continious.BoostControlledEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; /** * @@ -51,8 +52,7 @@ public class LordOfLineage extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent(); static { - filter.getSubtype().add("Vampire"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Vampire")); } public LordOfLineage(UUID ownerId) { @@ -69,10 +69,10 @@ public class LordOfLineage extends CardImpl { this.addAbility(FlyingAbility.getInstance()); // Other Vampire creatures you control get +2/+2. - this.addAbility(new SimpleStaticAbility(Constants.Zone.BATTLEFIELD, new BoostControlledEffect(2, 2, Constants.Duration.WhileOnBattlefield, filter, true))); + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostControlledEffect(2, 2, Duration.WhileOnBattlefield, filter, true))); // {tap}: Put a 2/2 black Vampire creature token with flying onto the battlefield. // {tap}: Put a 2/2 black Vampire creature token with flying onto the battlefield. - this.addAbility(new SimpleActivatedAbility(Constants.Zone.BATTLEFIELD, new CreateTokenEffect(new VampireToken()), new TapSourceCost())); + this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new CreateTokenEffect(new VampireToken()), new TapSourceCost())); } public LordOfLineage(final LordOfLineage card) { diff --git a/Mage.Sets/src/mage/sets/innistrad/MayorOfAvabruck.java b/Mage.Sets/src/mage/sets/innistrad/MayorOfAvabruck.java index be856ee2853..d8c0b64d187 100644 --- a/Mage.Sets/src/mage/sets/innistrad/MayorOfAvabruck.java +++ b/Mage.Sets/src/mage/sets/innistrad/MayorOfAvabruck.java @@ -42,8 +42,8 @@ import mage.abilities.effects.common.TransformSourceEffect; import mage.abilities.effects.common.continious.BoostControlledEffect; import mage.abilities.keyword.TransformAbility; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import java.util.UUID; @@ -58,8 +58,7 @@ public class MayorOfAvabruck extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Human creatures"); static { - filter.getSubtype().add("Human"); - filter.setScopeSubtype(ComparisonScope.Any); + filter.add(new SubtypePredicate("Human")); } public MayorOfAvabruck(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/innistrad/Moonmist.java b/Mage.Sets/src/mage/sets/innistrad/Moonmist.java index 1dfb629d2cf..aad9110f408 100644 --- a/Mage.Sets/src/mage/sets/innistrad/Moonmist.java +++ b/Mage.Sets/src/mage/sets/innistrad/Moonmist.java @@ -36,8 +36,9 @@ import mage.abilities.Ability; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.PreventAllDamageEffect; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; import mage.game.permanent.Permanent; @@ -50,10 +51,8 @@ public class Moonmist extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures other than Werewolves and Wolves"); static { - filter.getSubtype().add("Werewolf"); - filter.getSubtype().add("Wolf"); - filter.setScopeSubtype(ComparisonScope.Any); - filter.setNotFilter(true); + filter.add(Predicates.not(new SubtypePredicate("Werewolf"))); + filter.add(Predicates.not(new SubtypePredicate("Wolf"))); } public Moonmist(UUID ownerId) { @@ -82,7 +81,7 @@ class MoonmistEffect extends OneShotEffect { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("humans"); static { - filter.getSubtype().add("Human"); + filter.add(new SubtypePredicate("Human")); } public MoonmistEffect() { diff --git a/Mage.Sets/src/mage/sets/innistrad/NightRevelers.java b/Mage.Sets/src/mage/sets/innistrad/NightRevelers.java index 0087477fdfa..6c729374d24 100644 --- a/Mage.Sets/src/mage/sets/innistrad/NightRevelers.java +++ b/Mage.Sets/src/mage/sets/innistrad/NightRevelers.java @@ -43,6 +43,7 @@ import mage.game.Game; import java.util.Set; import java.util.UUID; +import mage.filter.predicate.mageobject.SubtypePredicate; /** * @@ -83,7 +84,7 @@ class NightRevelersCondition implements Condition { public boolean apply(Game game, Ability source) { boolean conditionApplies = false; FilterPermanent filter = new FilterPermanent(); - filter.getSubtype().add("Human"); + filter.add(new SubtypePredicate("Human")); Set opponents = game.getOpponents(source.getControllerId()); for (UUID opponentId : opponents) { diff --git a/Mage.Sets/src/mage/sets/innistrad/OliviaVoldaren.java b/Mage.Sets/src/mage/sets/innistrad/OliviaVoldaren.java index 6a1d90c7c97..318df6de485 100644 --- a/Mage.Sets/src/mage/sets/innistrad/OliviaVoldaren.java +++ b/Mage.Sets/src/mage/sets/innistrad/OliviaVoldaren.java @@ -43,8 +43,8 @@ import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.counters.CounterType; -import mage.filter.Filter; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetCreaturePermanent; /** @@ -53,14 +53,12 @@ import mage.target.common.TargetCreaturePermanent; */ public class OliviaVoldaren extends CardImpl { - private static FilterCreaturePermanent filter = new FilterCreaturePermanent("another creature"); - private static FilterCreaturePermanent vampireFilter = new FilterCreaturePermanent("Vampire"); + private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another creature"); + private static final FilterCreaturePermanent vampireFilter = new FilterCreaturePermanent("Vampire"); static { filter.setAnother(true); - // - vampireFilter.getSubtype().add("Vampire"); - vampireFilter.setScopeSubtype(Filter.ComparisonScope.Any); + vampireFilter.add(new SubtypePredicate("Vampire")); } public OliviaVoldaren(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/innistrad/ReaperFromTheAbyss.java b/Mage.Sets/src/mage/sets/innistrad/ReaperFromTheAbyss.java index 39408dd3c25..2979058a8fc 100644 --- a/Mage.Sets/src/mage/sets/innistrad/ReaperFromTheAbyss.java +++ b/Mage.Sets/src/mage/sets/innistrad/ReaperFromTheAbyss.java @@ -39,6 +39,8 @@ import mage.abilities.effects.common.DestroyTargetEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; import mage.game.events.GameEvent; import mage.target.common.TargetCreaturePermanent; @@ -50,11 +52,10 @@ import mage.watchers.Watcher; */ public class ReaperFromTheAbyss extends CardImpl { - private static FilterCreaturePermanent filter = new FilterCreaturePermanent("non-Demon creature"); + private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("non-Demon creature"); static { - filter.getSubtype().add("Demon"); - filter.setNotSubtype(true); + filter.add(Predicates.not(new SubtypePredicate("Demon"))); } public ReaperFromTheAbyss(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/innistrad/SlayerOfTheWicked.java b/Mage.Sets/src/mage/sets/innistrad/SlayerOfTheWicked.java index f76c88541ac..1ee4d980020 100644 --- a/Mage.Sets/src/mage/sets/innistrad/SlayerOfTheWicked.java +++ b/Mage.Sets/src/mage/sets/innistrad/SlayerOfTheWicked.java @@ -35,8 +35,9 @@ import mage.abilities.Ability; import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetCreaturePermanent; /** @@ -48,10 +49,10 @@ public class SlayerOfTheWicked extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Vampire, Werewolf, or Zombie"); static { - filter.getSubtype().add("Vampire"); - filter.getSubtype().add("Werewolf"); - filter.getSubtype().add("Zombie"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(Predicates.or( + new SubtypePredicate("Vampire"), + new SubtypePredicate("Werewolf"), + new SubtypePredicate("Zombie"))); } public SlayerOfTheWicked(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/innistrad/SpareFromEvil.java b/Mage.Sets/src/mage/sets/innistrad/SpareFromEvil.java index 44b77571ca3..625f694d8f7 100644 --- a/Mage.Sets/src/mage/sets/innistrad/SpareFromEvil.java +++ b/Mage.Sets/src/mage/sets/innistrad/SpareFromEvil.java @@ -35,6 +35,8 @@ import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.filter.common.FilterCreatureCard; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.SubtypePredicate; import java.util.UUID; @@ -46,8 +48,7 @@ public class SpareFromEvil extends CardImpl { private static final FilterCreatureCard filterNonHuman = new FilterCreatureCard("non-Human creatures"); static { - filterNonHuman.getSubtype().add("Human"); - filterNonHuman.setNotSubtype(true); + filterNonHuman.add(Predicates.not(new SubtypePredicate("Human"))); } public SpareFromEvil(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/innistrad/SulfurFalls.java b/Mage.Sets/src/mage/sets/innistrad/SulfurFalls.java index 4c9bf1c0f71..5e50d3fd103 100644 --- a/Mage.Sets/src/mage/sets/innistrad/SulfurFalls.java +++ b/Mage.Sets/src/mage/sets/innistrad/SulfurFalls.java @@ -39,8 +39,9 @@ import mage.abilities.effects.common.TapSourceEffect; import mage.abilities.mana.BlueManaAbility; import mage.abilities.mana.RedManaAbility; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.common.FilterLandPermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.SubtypePredicate; import java.util.UUID; @@ -52,10 +53,7 @@ public class SulfurFalls extends CardImpl { private static final FilterLandPermanent filter = new FilterLandPermanent(); static { - filter.getSubtype().add("Island"); - filter.getSubtype().add("Mountain"); - filter.setScopeSubtype(ComparisonScope.Any); - filter.setMessage("Island or a Mountain"); + filter.add(Predicates.or(new SubtypePredicate("Island"), new SubtypePredicate("Mountain"))); } public SulfurFalls(UUID ownerId) { @@ -63,7 +61,7 @@ public class SulfurFalls extends CardImpl { this.expansionSetCode = "ISD"; Condition controls = new UnlessCondition(new ControlsPermanentCondition(filter, ControlsPermanentCondition.CountType.MORE_THAN, 0)); - String abilityText = "tap it unless you control a " + filter.getMessage(); + String abilityText = "tap it unless you control a Island or a Mountain"; this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(new TapSourceEffect(), controls, abilityText), abilityText)); this.addAbility(new BlueManaAbility()); this.addAbility(new RedManaAbility()); diff --git a/Mage.Sets/src/mage/sets/innistrad/TerrorOfKruinPass.java b/Mage.Sets/src/mage/sets/innistrad/TerrorOfKruinPass.java index b6e22b32e9c..0a2049c9ed6 100644 --- a/Mage.Sets/src/mage/sets/innistrad/TerrorOfKruinPass.java +++ b/Mage.Sets/src/mage/sets/innistrad/TerrorOfKruinPass.java @@ -45,8 +45,8 @@ import mage.abilities.effects.common.continious.GainAbilityControlledEffect; import mage.abilities.keyword.DoubleStrikeAbility; import mage.abilities.keyword.TransformAbility; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; /** * @@ -57,8 +57,7 @@ public class TerrorOfKruinPass extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Werewolf"); static { - filter.getSubtype().add("Werewolf"); - filter.setScopeSubtype(ComparisonScope.Any); + filter.add(new SubtypePredicate("Werewolf")); } public TerrorOfKruinPass(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/innistrad/UnbreathingHorde.java b/Mage.Sets/src/mage/sets/innistrad/UnbreathingHorde.java index a9f9f1eda23..707a4cc21ae 100644 --- a/Mage.Sets/src/mage/sets/innistrad/UnbreathingHorde.java +++ b/Mage.Sets/src/mage/sets/innistrad/UnbreathingHorde.java @@ -43,6 +43,7 @@ import mage.cards.CardImpl; import mage.counters.CounterType; import mage.filter.common.FilterCreatureCard; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; import mage.game.events.GameEvent; import mage.game.permanent.Permanent; @@ -86,8 +87,8 @@ class UnbreathingHordeEffect1 extends OneShotEffect { private static final FilterCreatureCard filter2 = new FilterCreatureCard(); static { - filter1.getSubtype().add("Zombie"); - filter2.getSubtype().add("Zombie"); + filter1.add(new SubtypePredicate("Zombie")); + filter2.add(new SubtypePredicate("Zombie")); } public UnbreathingHordeEffect1() { diff --git a/Mage.Sets/src/mage/sets/innistrad/VampiricFury.java b/Mage.Sets/src/mage/sets/innistrad/VampiricFury.java index 649b965e4b7..8017b76bb53 100644 --- a/Mage.Sets/src/mage/sets/innistrad/VampiricFury.java +++ b/Mage.Sets/src/mage/sets/innistrad/VampiricFury.java @@ -35,8 +35,8 @@ import mage.abilities.effects.common.continious.BoostControlledEffect; import mage.abilities.effects.common.continious.GainAbilityControlledEffect; import mage.abilities.keyword.FirstStrikeAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import java.util.UUID; @@ -48,8 +48,7 @@ public class VampiricFury extends CardImpl { private static final FilterCreaturePermanent vampires = new FilterCreaturePermanent("Vampire creatures"); static { - vampires.getSubtype().add("Vampire"); - vampires.setScopeSubtype(Filter.ComparisonScope.Any); + vampires.add(new SubtypePredicate("Vampire")); vampires.setTargetController(Constants.TargetController.YOU); } @@ -61,7 +60,7 @@ public class VampiricFury extends CardImpl { // Vampire creatures you control get +2/+0 and gain first strike until end of turn. this.getSpellAbility().addEffect(new BoostControlledEffect(2, 0, Constants.Duration.EndOfTurn, vampires)); - this.getSpellAbility().addEffect(new GainAbilityControlledEffect(FirstStrikeAbility.getInstance(), Duration.EndOfTurn, vampires)); + this.getSpellAbility().addEffect(new GainAbilityControlledEffect(FirstStrikeAbility.getInstance(), Duration.EndOfTurn, vampires)); } public VampiricFury(final VampiricFury card) { diff --git a/Mage.Sets/src/mage/sets/innistrad/VictimOfNight.java b/Mage.Sets/src/mage/sets/innistrad/VictimOfNight.java index 53b75c81d36..c9208076e29 100644 --- a/Mage.Sets/src/mage/sets/innistrad/VictimOfNight.java +++ b/Mage.Sets/src/mage/sets/innistrad/VictimOfNight.java @@ -32,8 +32,9 @@ import mage.Constants.CardType; import mage.Constants.Rarity; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetCreaturePermanent; /** @@ -45,11 +46,9 @@ public class VictimOfNight extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("non-Vampire, non-Werewolf, non-Zombie creature"); static { - filter.getSubtype().add("Vampire"); - filter.getSubtype().add("Werewolf"); - filter.getSubtype().add("Zombie"); - filter.setNotSubtype(true); - filter.setScopeSubtype(ComparisonScope.Any); + filter.add(Predicates.not(new SubtypePredicate("Vampire"))); + filter.add(Predicates.not(new SubtypePredicate("Werewolf"))); + filter.add(Predicates.not(new SubtypePredicate("Zombie"))); } public VictimOfNight(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/innistrad/WoodlandCemetery.java b/Mage.Sets/src/mage/sets/innistrad/WoodlandCemetery.java index 2c4353ff1f4..0c1f119eeb2 100644 --- a/Mage.Sets/src/mage/sets/innistrad/WoodlandCemetery.java +++ b/Mage.Sets/src/mage/sets/innistrad/WoodlandCemetery.java @@ -39,8 +39,9 @@ import mage.abilities.effects.common.TapSourceEffect; import mage.abilities.mana.BlackManaAbility; import mage.abilities.mana.GreenManaAbility; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.common.FilterLandPermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.SubtypePredicate; import java.util.UUID; @@ -52,10 +53,7 @@ public class WoodlandCemetery extends CardImpl { private static final FilterLandPermanent filter = new FilterLandPermanent(); static { - filter.getSubtype().add("Forest"); - filter.getSubtype().add("Swamp"); - filter.setScopeSubtype(ComparisonScope.Any); - filter.setMessage("Swamp or a Forest"); + filter.add(Predicates.or(new SubtypePredicate("Forest"), new SubtypePredicate("Swamp"))); } public WoodlandCemetery(UUID ownerId) { @@ -63,7 +61,7 @@ public class WoodlandCemetery extends CardImpl { this.expansionSetCode = "ISD"; Condition controls = new UnlessCondition(new ControlsPermanentCondition(filter, ControlsPermanentCondition.CountType.MORE_THAN, 0)); - String abilityText = "tap it unless you control a " + filter.getMessage(); + String abilityText = "tap it unless you control a Swamp or a Forest"; this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(new TapSourceEffect(), controls, abilityText), abilityText)); this.addAbility(new BlackManaAbility()); this.addAbility(new GreenManaAbility()); diff --git a/Mage.Sets/src/mage/sets/lorwyn/Benthicore.java b/Mage.Sets/src/mage/sets/lorwyn/Benthicore.java index ac102946fe5..47eb0b69325 100644 --- a/Mage.Sets/src/mage/sets/lorwyn/Benthicore.java +++ b/Mage.Sets/src/mage/sets/lorwyn/Benthicore.java @@ -40,10 +40,10 @@ import mage.abilities.effects.common.UntapSourceEffect; import mage.abilities.effects.common.continious.GainAbilitySourceEffect; import mage.abilities.keyword.ShroudAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; import mage.game.permanent.token.MerfolkToken; import mage.target.common.TargetControlledPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import java.util.UUID; @@ -58,8 +58,7 @@ public class Benthicore extends CardImpl { static { filter.setTapped(false); filter.setUseTapped(true); - filter.getSubtype().add("Merfolk"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Merfolk")); } public Benthicore(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/lorwyn/BlackPoplarShaman.java b/Mage.Sets/src/mage/sets/lorwyn/BlackPoplarShaman.java index 6d45ea36bae..9d3c42e6e25 100644 --- a/Mage.Sets/src/mage/sets/lorwyn/BlackPoplarShaman.java +++ b/Mage.Sets/src/mage/sets/lorwyn/BlackPoplarShaman.java @@ -36,8 +36,8 @@ import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.common.RegenerateTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.TargetPermanent; import java.util.UUID; @@ -51,8 +51,7 @@ public class BlackPoplarShaman extends CardImpl { private final static FilterPermanent filter = new FilterPermanent("Treefolk"); static { - filter.getSubtype().add("Treefolk"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Treefolk")); } public BlackPoplarShaman(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/lorwyn/BoggartBirthRite.java b/Mage.Sets/src/mage/sets/lorwyn/BoggartBirthRite.java index 8f6a6936056..6e86e242fd5 100644 --- a/Mage.Sets/src/mage/sets/lorwyn/BoggartBirthRite.java +++ b/Mage.Sets/src/mage/sets/lorwyn/BoggartBirthRite.java @@ -31,9 +31,9 @@ import mage.Constants.CardType; import mage.Constants.Rarity; import mage.abilities.effects.common.ReturnToHandTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterCard; import mage.target.common.TargetCardInYourGraveyard; +import mage.filter.predicate.mageobject.SubtypePredicate; import java.util.UUID; @@ -46,8 +46,7 @@ public class BoggartBirthRite extends CardImpl { private final static FilterCard filter = new FilterCard("Goblin card from your graveyard"); static { - filter.getSubtype().add("Goblin"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Goblin")); } public BoggartBirthRite(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/lorwyn/CloudgoatRanger.java b/Mage.Sets/src/mage/sets/lorwyn/CloudgoatRanger.java index cb45e2f35af..dcec8faa4da 100644 --- a/Mage.Sets/src/mage/sets/lorwyn/CloudgoatRanger.java +++ b/Mage.Sets/src/mage/sets/lorwyn/CloudgoatRanger.java @@ -40,10 +40,10 @@ import mage.abilities.effects.common.continious.BoostSourceEffect; import mage.abilities.effects.common.continious.GainAbilitySourceEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; import mage.game.permanent.token.KithkinToken; import mage.target.common.TargetControlledPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import java.util.UUID; @@ -58,8 +58,7 @@ public class CloudgoatRanger extends CardImpl { static { filter.setTapped(false); filter.setUseTapped(true); - filter.getSubtype().add("Kithkin"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Kithkin")); } public CloudgoatRanger(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/lorwyn/ElvishEulogist.java b/Mage.Sets/src/mage/sets/lorwyn/ElvishEulogist.java index 8c8e532552d..155d729527d 100644 --- a/Mage.Sets/src/mage/sets/lorwyn/ElvishEulogist.java +++ b/Mage.Sets/src/mage/sets/lorwyn/ElvishEulogist.java @@ -36,8 +36,8 @@ import mage.abilities.costs.common.SacrificeSourceCost; import mage.abilities.dynamicvalue.common.CardsInControllerGraveyardCount; import mage.abilities.effects.common.GainLifeEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.SubtypePredicate; import java.util.UUID; @@ -50,8 +50,7 @@ public class ElvishEulogist extends CardImpl { private final static FilterCard filter = new FilterCard("Elf"); static { - filter.getSubtype().add("Elf"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Elf")); } public ElvishEulogist(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/lorwyn/ElvishHandservant.java b/Mage.Sets/src/mage/sets/lorwyn/ElvishHandservant.java index d849138a0f3..9b031f136dd 100644 --- a/Mage.Sets/src/mage/sets/lorwyn/ElvishHandservant.java +++ b/Mage.Sets/src/mage/sets/lorwyn/ElvishHandservant.java @@ -37,6 +37,7 @@ import mage.cards.CardImpl; import mage.counters.CounterType; import mage.filter.Filter; import mage.filter.FilterSpell; +import mage.filter.predicate.mageobject.SubtypePredicate; /** * @@ -47,8 +48,7 @@ public class ElvishHandservant extends CardImpl { private final static FilterSpell filter = new FilterSpell("Giant"); static { - filter.getSubtype().add("Giant"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Giant")); } public ElvishHandservant(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/lorwyn/ElvishPromenade.java b/Mage.Sets/src/mage/sets/lorwyn/ElvishPromenade.java index 0bdbb3cf1b2..330d95a2668 100644 --- a/Mage.Sets/src/mage/sets/lorwyn/ElvishPromenade.java +++ b/Mage.Sets/src/mage/sets/lorwyn/ElvishPromenade.java @@ -32,8 +32,8 @@ import mage.Constants.Rarity; import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.effects.common.CreateTokenEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.permanent.token.ElfToken; import java.util.UUID; @@ -47,8 +47,7 @@ public class ElvishPromenade extends CardImpl { private final static FilterControlledPermanent filter = new FilterControlledPermanent("Elf you control"); static { - filter.getSubtype().add("Elf"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Elf")); } public ElvishPromenade(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/lorwyn/EyeblightsEnding.java b/Mage.Sets/src/mage/sets/lorwyn/EyeblightsEnding.java index 6ed21415841..c13185ffb11 100644 --- a/Mage.Sets/src/mage/sets/lorwyn/EyeblightsEnding.java +++ b/Mage.Sets/src/mage/sets/lorwyn/EyeblightsEnding.java @@ -31,8 +31,9 @@ import mage.Constants.CardType; import mage.Constants.Rarity; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -46,9 +47,7 @@ public class EyeblightsEnding extends CardImpl { private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("non-Elf creature"); static { - filter.getSubtype().add("Elf"); - filter.setNotSubtype(true); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(Predicates.not(new SubtypePredicate("Elf"))); } public EyeblightsEnding(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/lorwyn/Facevaulter.java b/Mage.Sets/src/mage/sets/lorwyn/Facevaulter.java index 6f8ed9ad791..d1fd6036ef9 100644 --- a/Mage.Sets/src/mage/sets/lorwyn/Facevaulter.java +++ b/Mage.Sets/src/mage/sets/lorwyn/Facevaulter.java @@ -37,8 +37,8 @@ import mage.abilities.costs.common.SacrificeTargetCost; import mage.abilities.costs.mana.ColoredManaCost; import mage.abilities.effects.common.continious.BoostSourceEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetControlledPermanent; import java.util.UUID; @@ -52,8 +52,7 @@ public class Facevaulter extends CardImpl { private final static FilterControlledPermanent filter = new FilterControlledPermanent("Goblin"); static { - filter.getSubtype().add("Goblin"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Goblin")); } public Facevaulter(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/lorwyn/FaerieTrickery.java b/Mage.Sets/src/mage/sets/lorwyn/FaerieTrickery.java index bafdf8c7f71..5d1a46b33be 100644 --- a/Mage.Sets/src/mage/sets/lorwyn/FaerieTrickery.java +++ b/Mage.Sets/src/mage/sets/lorwyn/FaerieTrickery.java @@ -34,6 +34,8 @@ import mage.Constants.Zone; import mage.abilities.effects.common.CounterTargetWithReplacementEffect; import mage.cards.CardImpl; import mage.filter.FilterSpell; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.TargetSpell; /** @@ -45,8 +47,7 @@ public class FaerieTrickery extends CardImpl { private static final FilterSpell filter = new FilterSpell("non-Faerie spell"); static { - filter.getSubtype().add("Faerie"); - filter.setNotSubtype(true); + filter.add(Predicates.not(new SubtypePredicate("Faerie"))); } public FaerieTrickery(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/lorwyn/Goatnapper.java b/Mage.Sets/src/mage/sets/lorwyn/Goatnapper.java index b4113703187..2f50da3838d 100644 --- a/Mage.Sets/src/mage/sets/lorwyn/Goatnapper.java +++ b/Mage.Sets/src/mage/sets/lorwyn/Goatnapper.java @@ -38,8 +38,8 @@ import mage.abilities.effects.common.continious.GainAbilityTargetEffect; import mage.abilities.effects.common.continious.GainControlTargetEffect; import mage.abilities.keyword.HasteAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.TargetPermanent; import java.util.UUID; @@ -53,8 +53,7 @@ public class Goatnapper extends CardImpl { private final static FilterPermanent filter = new FilterPermanent("Goat"); static { - filter.getSubtype().add("Goat"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Goat")); } public Goatnapper(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/lorwyn/GuardianOfCloverdell.java b/Mage.Sets/src/mage/sets/lorwyn/GuardianOfCloverdell.java index 401fd832c22..44459a42a77 100644 --- a/Mage.Sets/src/mage/sets/lorwyn/GuardianOfCloverdell.java +++ b/Mage.Sets/src/mage/sets/lorwyn/GuardianOfCloverdell.java @@ -39,8 +39,8 @@ import mage.abilities.costs.mana.ColoredManaCost; import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.GainLifeEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.permanent.token.KithkinToken; import mage.target.common.TargetControlledPermanent; @@ -55,8 +55,7 @@ public class GuardianOfCloverdell extends CardImpl { private final static FilterControlledPermanent filter = new FilterControlledPermanent("Kithkin"); static { - filter.getSubtype().add("Kithkin"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Kithkin")); } public GuardianOfCloverdell(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/lorwyn/HarpoonSniper.java b/Mage.Sets/src/mage/sets/lorwyn/HarpoonSniper.java index ee0eb9dd75b..b2aedc3e913 100644 --- a/Mage.Sets/src/mage/sets/lorwyn/HarpoonSniper.java +++ b/Mage.Sets/src/mage/sets/lorwyn/HarpoonSniper.java @@ -38,8 +38,8 @@ import mage.abilities.costs.mana.ColoredManaCost; import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.effects.common.DamageTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetAttackingOrBlockingCreature; import java.util.UUID; @@ -53,8 +53,7 @@ public class HarpoonSniper extends CardImpl { private final static FilterControlledPermanent filter = new FilterControlledPermanent("Merfolk you control"); static { - filter.getSubtype().add("Merfolk"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Merfolk")); } public HarpoonSniper(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/lorwyn/HearthcageGiant.java b/Mage.Sets/src/mage/sets/lorwyn/HearthcageGiant.java index 8c648c6aea0..34fa51c5af1 100644 --- a/Mage.Sets/src/mage/sets/lorwyn/HearthcageGiant.java +++ b/Mage.Sets/src/mage/sets/lorwyn/HearthcageGiant.java @@ -38,9 +38,9 @@ import mage.abilities.costs.common.SacrificeTargetCost; import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.continious.BoostTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.permanent.token.Token; import mage.target.common.TargetControlledPermanent; import mage.target.common.TargetCreaturePermanent; @@ -57,10 +57,8 @@ public class HearthcageGiant extends CardImpl { private final static FilterCreaturePermanent filterGiant = new FilterCreaturePermanent("Giant"); static { - filterElemental.getSubtype().add("Elemental"); - filterElemental.setScopeSubtype(Filter.ComparisonScope.Any); - filterGiant.getSubtype().add("Giant"); - filterGiant.setScopeSubtype(Filter.ComparisonScope.Any); + filterElemental.add(new SubtypePredicate("Elemental")); + filterGiant.add(new SubtypePredicate("Giant")); } public HearthcageGiant(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/lorwyn/ImmaculateMagistrate.java b/Mage.Sets/src/mage/sets/lorwyn/ImmaculateMagistrate.java index 21f5b4b24af..4d412f6ab26 100644 --- a/Mage.Sets/src/mage/sets/lorwyn/ImmaculateMagistrate.java +++ b/Mage.Sets/src/mage/sets/lorwyn/ImmaculateMagistrate.java @@ -39,6 +39,7 @@ import mage.abilities.effects.OneShotEffect; import mage.cards.CardImpl; import mage.counters.CounterType; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.target.common.TargetCreaturePermanent; @@ -82,7 +83,7 @@ public class ImmaculateMagistrate extends CardImpl { class ImmaculateMagistrateEffect extends OneShotEffect { static final FilterControlledPermanent filter = new FilterControlledPermanent("Elf"); static { - filter.getSubtype().add("Elf"); + filter.add(new SubtypePredicate("Elf")); } public ImmaculateMagistrateEffect() { super(Outcome.BoostCreature); diff --git a/Mage.Sets/src/mage/sets/lorwyn/ImperiousPerfect.java b/Mage.Sets/src/mage/sets/lorwyn/ImperiousPerfect.java index 8ba2b64b571..4b8324e96bc 100644 --- a/Mage.Sets/src/mage/sets/lorwyn/ImperiousPerfect.java +++ b/Mage.Sets/src/mage/sets/lorwyn/ImperiousPerfect.java @@ -39,8 +39,8 @@ import mage.abilities.costs.mana.ColoredManaCost; import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.continious.BoostControlledEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.permanent.token.ElfToken; import java.util.UUID; @@ -54,8 +54,7 @@ public class ImperiousPerfect extends CardImpl { private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("Elf creatures"); static { - filter.getSubtype().add("Elf"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Elf")); } public ImperiousPerfect(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/lorwyn/LysAlanaHuntmaster.java b/Mage.Sets/src/mage/sets/lorwyn/LysAlanaHuntmaster.java index 8255162ee83..f4b8f158101 100644 --- a/Mage.Sets/src/mage/sets/lorwyn/LysAlanaHuntmaster.java +++ b/Mage.Sets/src/mage/sets/lorwyn/LysAlanaHuntmaster.java @@ -34,8 +34,8 @@ import mage.MageInt; import mage.abilities.common.SpellCastTriggeredAbility; import mage.abilities.effects.common.CreateTokenEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterSpell; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.permanent.token.ElfToken; /** @@ -47,8 +47,7 @@ public class LysAlanaHuntmaster extends CardImpl { private final static FilterSpell filter = new FilterSpell("Elf spell"); static { - filter.getSubtype().add("Elf"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Elf")); } public LysAlanaHuntmaster(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/lorwyn/MadAuntie.java b/Mage.Sets/src/mage/sets/lorwyn/MadAuntie.java index 98641bbc3f2..0ddf4d51b00 100644 --- a/Mage.Sets/src/mage/sets/lorwyn/MadAuntie.java +++ b/Mage.Sets/src/mage/sets/lorwyn/MadAuntie.java @@ -38,9 +38,9 @@ import mage.abilities.costs.common.TapSourceCost; import mage.abilities.effects.common.RegenerateTargetEffect; import mage.abilities.effects.common.continious.BoostControlledEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetControlledCreaturePermanent; import java.util.UUID; @@ -55,11 +55,9 @@ public class MadAuntie extends CardImpl { private final static FilterCreaturePermanent filter2 = new FilterCreaturePermanent("Goblin creatures"); static { - filter1.getSubtype().add("Goblin"); + filter1.add(new SubtypePredicate("Goblin")); filter1.setAnother(true); - filter1.setScopeSubtype(Filter.ComparisonScope.Any); - filter2.getSubtype().add("Goblin"); - filter2.setScopeSubtype(Filter.ComparisonScope.Any); + filter2.add(new SubtypePredicate("Goblin")); } public MadAuntie(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/lorwyn/NectarFaerie.java b/Mage.Sets/src/mage/sets/lorwyn/NectarFaerie.java index 13caa1e57af..8f493370bfb 100644 --- a/Mage.Sets/src/mage/sets/lorwyn/NectarFaerie.java +++ b/Mage.Sets/src/mage/sets/lorwyn/NectarFaerie.java @@ -39,8 +39,9 @@ import mage.abilities.effects.common.continious.GainAbilityTargetEffect; import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.LifelinkAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.TargetPermanent; import java.util.UUID; @@ -54,9 +55,7 @@ public class NectarFaerie extends CardImpl { private final static FilterPermanent filter = new FilterPermanent("Faerie or Elf"); static { - filter.getSubtype().add("Faerie"); - filter.getSubtype().add("Elf"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(Predicates.or(new SubtypePredicate("Faerie"),new SubtypePredicate("Elf"))); } public NectarFaerie(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/lorwyn/ScarredVinebreeder.java b/Mage.Sets/src/mage/sets/lorwyn/ScarredVinebreeder.java index 01bcd6c7763..aaed199ac2a 100644 --- a/Mage.Sets/src/mage/sets/lorwyn/ScarredVinebreeder.java +++ b/Mage.Sets/src/mage/sets/lorwyn/ScarredVinebreeder.java @@ -38,6 +38,7 @@ import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.common.continious.BoostSourceEffect; import mage.cards.CardImpl; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetCardInYourGraveyard; import java.util.UUID; @@ -51,7 +52,7 @@ public class ScarredVinebreeder extends CardImpl { private static final FilterCard filter = new FilterCard("Elf card from your graveyard"); static { - filter.getSubtype().add("Elf"); + filter.add(new SubtypePredicate("Elf")); } public ScarredVinebreeder(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/lorwyn/ScionOfOona.java b/Mage.Sets/src/mage/sets/lorwyn/ScionOfOona.java index 8fe1ffdcc44..2cb23a4672d 100644 --- a/Mage.Sets/src/mage/sets/lorwyn/ScionOfOona.java +++ b/Mage.Sets/src/mage/sets/lorwyn/ScionOfOona.java @@ -27,9 +27,12 @@ */ package mage.sets.lorwyn; -import mage.Constants; +import java.util.UUID; import mage.Constants.CardType; +import mage.Constants.Duration; import mage.Constants.Rarity; +import mage.Constants.TargetController; +import mage.Constants.Zone; import mage.MageInt; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.common.continious.BoostControlledEffect; @@ -38,11 +41,8 @@ import mage.abilities.keyword.FlashAbility; import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.ShroudAbility; import mage.cards.CardImpl; -import mage.filter.Filter; -import mage.filter.common.FilterControlledPermanent; import mage.filter.common.FilterCreaturePermanent; - -import java.util.UUID; +import mage.filter.predicate.mageobject.SubtypePredicate; /** * @@ -50,14 +50,11 @@ import java.util.UUID; */ public class ScionOfOona extends CardImpl { - private final static FilterCreaturePermanent filter1 = new FilterCreaturePermanent("Faerie creatures"); - private final static FilterControlledPermanent filter2 = new FilterControlledPermanent("Faeries"); + private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("Faeries"); static { - filter1.getSubtype().add("Faerie"); - filter1.setScopeSubtype(Filter.ComparisonScope.Any); - filter2.getSubtype().add("Faerie"); - filter2.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Faerie")); + filter.setTargetController(TargetController.YOU); } public ScionOfOona(UUID ownerId) { @@ -70,10 +67,11 @@ public class ScionOfOona extends CardImpl { this.toughness = new MageInt(1); this.addAbility(FlashAbility.getInstance()); this.addAbility(FlyingAbility.getInstance()); + // Other Faerie creatures you control get +1/+1. - this.addAbility(new SimpleStaticAbility(Constants.Zone.BATTLEFIELD, new BoostControlledEffect(1, 1, Constants.Duration.WhileOnBattlefield, filter1, true))); + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostControlledEffect(1, 1, Duration.WhileOnBattlefield, filter, true))); // Other Faeries you control have shroud. - this.addAbility(new SimpleStaticAbility(Constants.Zone.BATTLEFIELD, new GainAbilityControlledEffect(ShroudAbility.getInstance(), Constants.Duration.EndOfTurn, filter2, true))); + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityControlledEffect(ShroudAbility.getInstance(), Duration.EndOfTurn, filter, true))); } public ScionOfOona(final ScionOfOona card) { diff --git a/Mage.Sets/src/mage/sets/lorwyn/SeedguideAsh.java b/Mage.Sets/src/mage/sets/lorwyn/SeedguideAsh.java index 5479e650fcc..6fd8a87203d 100644 --- a/Mage.Sets/src/mage/sets/lorwyn/SeedguideAsh.java +++ b/Mage.Sets/src/mage/sets/lorwyn/SeedguideAsh.java @@ -34,8 +34,8 @@ import mage.MageInt; import mage.abilities.common.DiesTriggeredAbility; import mage.abilities.effects.common.search.SearchLibraryPutInPlayEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetCardInLibrary; import java.util.UUID; @@ -49,8 +49,7 @@ public class SeedguideAsh extends CardImpl { private final static FilterCard filter = new FilterCard("Forest"); static { - filter.getSubtype().add("Forest"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Forest")); } public SeedguideAsh(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/lorwyn/SummonTheSchool.java b/Mage.Sets/src/mage/sets/lorwyn/SummonTheSchool.java index 87075b071b2..9126ff904e7 100644 --- a/Mage.Sets/src/mage/sets/lorwyn/SummonTheSchool.java +++ b/Mage.Sets/src/mage/sets/lorwyn/SummonTheSchool.java @@ -35,8 +35,8 @@ import mage.abilities.costs.common.TapTargetCost; import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.ReturnToHandSourceEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.permanent.token.MerfolkToken; import mage.target.common.TargetControlledPermanent; @@ -53,8 +53,7 @@ public class SummonTheSchool extends CardImpl { static { filter.setUseTapped(true); filter.setTapped(false); - filter.getSubtype().add("Merfolk"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Merfolk")); } public SummonTheSchool(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/lorwyn/SunriseSovereign.java b/Mage.Sets/src/mage/sets/lorwyn/SunriseSovereign.java index 563004f023b..a654b17cbd0 100644 --- a/Mage.Sets/src/mage/sets/lorwyn/SunriseSovereign.java +++ b/Mage.Sets/src/mage/sets/lorwyn/SunriseSovereign.java @@ -36,8 +36,8 @@ import mage.abilities.effects.common.continious.BoostControlledEffect; import mage.abilities.effects.common.continious.GainAbilityControlledEffect; import mage.abilities.keyword.TrampleAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import java.util.UUID; @@ -50,8 +50,7 @@ public class SunriseSovereign extends CardImpl { private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("Giant"); static { - filter.getSubtype().add("Giant"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Giant")); } public SunriseSovereign(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/lorwyn/TarPitcher.java b/Mage.Sets/src/mage/sets/lorwyn/TarPitcher.java index 312e1d16bb3..21f7a6f63ff 100644 --- a/Mage.Sets/src/mage/sets/lorwyn/TarPitcher.java +++ b/Mage.Sets/src/mage/sets/lorwyn/TarPitcher.java @@ -37,10 +37,10 @@ import mage.abilities.costs.common.SacrificeTargetCost; import mage.abilities.costs.common.TapSourceCost; import mage.abilities.effects.common.DamageTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledCreaturePermanent; import mage.target.common.TargetControlledCreaturePermanent; import mage.target.common.TargetCreatureOrPlayer; +import mage.filter.predicate.mageobject.SubtypePredicate; import java.util.UUID; @@ -53,8 +53,7 @@ public class TarPitcher extends CardImpl { private final static FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Goblin"); static { - filter.getSubtype().add("Goblin"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Goblin")); } public TarPitcher(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/lorwyn/ThorntoothWitch.java b/Mage.Sets/src/mage/sets/lorwyn/ThorntoothWitch.java index 2cdae44a86a..9c230ccc1c5 100644 --- a/Mage.Sets/src/mage/sets/lorwyn/ThorntoothWitch.java +++ b/Mage.Sets/src/mage/sets/lorwyn/ThorntoothWitch.java @@ -36,8 +36,8 @@ import mage.abilities.Ability; import mage.abilities.common.SpellCastTriggeredAbility; import mage.abilities.effects.common.continious.BoostTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterSpell; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetCreaturePermanent; /** @@ -49,8 +49,7 @@ public class ThorntoothWitch extends CardImpl { private final static FilterSpell filter = new FilterSpell("Treefolk"); static { - filter.getSubtype().add("Treefolk"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Treefolk")); } public ThorntoothWitch(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/lorwyn/TimberProtector.java b/Mage.Sets/src/mage/sets/lorwyn/TimberProtector.java index ecd747286cb..9c6f9810caa 100644 --- a/Mage.Sets/src/mage/sets/lorwyn/TimberProtector.java +++ b/Mage.Sets/src/mage/sets/lorwyn/TimberProtector.java @@ -36,9 +36,10 @@ import mage.abilities.effects.common.continious.BoostControlledEffect; import mage.abilities.effects.common.continious.GainAbilityControlledEffect; import mage.abilities.keyword.IndestructibleAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.SubtypePredicate; import java.util.UUID; @@ -52,11 +53,8 @@ public class TimberProtector extends CardImpl { private final static FilterControlledPermanent filterBoth = new FilterControlledPermanent("Treefolk and Forests"); static { - filterTreefolk.getSubtype().add("Treefolk"); - filterTreefolk.setScopeSubtype(Filter.ComparisonScope.Any); - filterBoth.getSubtype().add("Treefolk"); - filterBoth.getSubtype().add("Forest"); - filterBoth.setScopeSubtype(Filter.ComparisonScope.Any); + filterTreefolk.add(new SubtypePredicate("Treefolk")); + filterBoth.add(Predicates.or(new SubtypePredicate("Treefolk"),new SubtypePredicate("Forest"))); } diff --git a/Mage.Sets/src/mage/sets/lorwyn/WarrenScourgeElf.java b/Mage.Sets/src/mage/sets/lorwyn/WarrenScourgeElf.java index 364914c3450..b0265829892 100644 --- a/Mage.Sets/src/mage/sets/lorwyn/WarrenScourgeElf.java +++ b/Mage.Sets/src/mage/sets/lorwyn/WarrenScourgeElf.java @@ -33,6 +33,7 @@ import mage.MageInt; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.SubtypePredicate; import java.util.UUID; @@ -45,7 +46,7 @@ public class WarrenScourgeElf extends CardImpl { private static final FilterCard filter = new FilterCard("Goblin"); static { - filter.getSubtype().add("Goblin"); + filter.add(new SubtypePredicate("Goblin")); } public WarrenScourgeElf(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/lorwyn/WizenedCenn.java b/Mage.Sets/src/mage/sets/lorwyn/WizenedCenn.java index 1a312bc70aa..98b25573f3a 100644 --- a/Mage.Sets/src/mage/sets/lorwyn/WizenedCenn.java +++ b/Mage.Sets/src/mage/sets/lorwyn/WizenedCenn.java @@ -34,8 +34,8 @@ import mage.MageInt; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.common.continious.BoostControlledEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import java.util.UUID; @@ -48,8 +48,7 @@ public class WizenedCenn extends CardImpl { private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("Kithkin creatures"); static { - filter.getSubtype().add("Kithkin"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Kithkin")); } public WizenedCenn(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/lorwyn/WortBoggartAuntie.java b/Mage.Sets/src/mage/sets/lorwyn/WortBoggartAuntie.java index dac17f20814..11549c60a33 100644 --- a/Mage.Sets/src/mage/sets/lorwyn/WortBoggartAuntie.java +++ b/Mage.Sets/src/mage/sets/lorwyn/WortBoggartAuntie.java @@ -36,8 +36,8 @@ import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; import mage.abilities.effects.common.ReturnToHandTargetEffect; import mage.abilities.keyword.FearAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetCardInYourGraveyard; import java.util.UUID; @@ -51,8 +51,7 @@ public class WortBoggartAuntie extends CardImpl { private final static FilterCard filter = new FilterCard("Goblin card from your graveyard"); static { - filter.getSubtype().add("Goblin"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Goblin")); } public WortBoggartAuntie(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/magic2010/ArmoredAscension.java b/Mage.Sets/src/mage/sets/magic2010/ArmoredAscension.java index 42a29d9070e..e3e21882d73 100644 --- a/Mage.Sets/src/mage/sets/magic2010/ArmoredAscension.java +++ b/Mage.Sets/src/mage/sets/magic2010/ArmoredAscension.java @@ -44,6 +44,7 @@ import mage.abilities.keyword.EnchantAbility; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.filter.common.FilterLandPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; @@ -56,7 +57,7 @@ public class ArmoredAscension extends CardImpl { private static final FilterLandPermanent filter = new FilterLandPermanent("Plains you control"); static { - filter.getSubtype().add("Plains"); + filter.add(new SubtypePredicate("Plains")); filter.setTargetController(TargetController.YOU); } diff --git a/Mage.Sets/src/mage/sets/magic2010/AwakenerDruid.java b/Mage.Sets/src/mage/sets/magic2010/AwakenerDruid.java index dd48a74eba4..6e65ab9afcb 100644 --- a/Mage.Sets/src/mage/sets/magic2010/AwakenerDruid.java +++ b/Mage.Sets/src/mage/sets/magic2010/AwakenerDruid.java @@ -38,6 +38,7 @@ import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.effects.common.continious.BecomesCreatureTargetEffect; import mage.cards.CardImpl; import mage.filter.common.FilterLandPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.permanent.token.Token; import mage.target.common.TargetLandPermanent; @@ -50,7 +51,7 @@ public class AwakenerDruid extends CardImpl { private static final FilterLandPermanent filter = new FilterLandPermanent("Forest"); static { - filter.getSubtype().add("Forest"); + filter.add(new SubtypePredicate("Forest")); } public AwakenerDruid(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/magic2010/BaneslayerAngel.java b/Mage.Sets/src/mage/sets/magic2010/BaneslayerAngel.java index 41f90e64e62..851c2534eb1 100644 --- a/Mage.Sets/src/mage/sets/magic2010/BaneslayerAngel.java +++ b/Mage.Sets/src/mage/sets/magic2010/BaneslayerAngel.java @@ -37,9 +37,9 @@ import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.LifelinkAbility; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.FilterPermanent; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; /** * @@ -50,10 +50,8 @@ public class BaneslayerAngel extends CardImpl { private static final FilterPermanent filter2 = new FilterCreaturePermanent("Dragons"); static { - filter1.getSubtype().add("Demon"); - filter2.getSubtype().add("Dragon"); - filter1.setScopeSubtype(ComparisonScope.Any); - filter2.setScopeSubtype(ComparisonScope.Any); + filter1.add(new SubtypePredicate("Demon")); + filter2.add(new SubtypePredicate("Dragon")); } public BaneslayerAngel(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/magic2010/CaptainOfTheWatch.java b/Mage.Sets/src/mage/sets/magic2010/CaptainOfTheWatch.java index 187d4146d69..823897fb5da 100644 --- a/Mage.Sets/src/mage/sets/magic2010/CaptainOfTheWatch.java +++ b/Mage.Sets/src/mage/sets/magic2010/CaptainOfTheWatch.java @@ -42,6 +42,7 @@ import mage.abilities.effects.common.continious.GainAbilityControlledEffect; import mage.abilities.keyword.VigilanceAbility; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.permanent.token.SoldierToken; /** @@ -52,7 +53,7 @@ public class CaptainOfTheWatch extends CardImpl { private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("Soldier creatures"); static { - filter.getSubtype().add("Soldier"); + filter.add(new SubtypePredicate("Soldier")); } public CaptainOfTheWatch(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/magic2010/DragonskullSummit.java b/Mage.Sets/src/mage/sets/magic2010/DragonskullSummit.java index ada8d868633..d6f84418763 100644 --- a/Mage.Sets/src/mage/sets/magic2010/DragonskullSummit.java +++ b/Mage.Sets/src/mage/sets/magic2010/DragonskullSummit.java @@ -40,8 +40,9 @@ import mage.abilities.effects.common.TapSourceEffect; import mage.abilities.mana.BlackManaAbility; import mage.abilities.mana.RedManaAbility; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.common.FilterLandPermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.SubtypePredicate; /** * @@ -52,10 +53,7 @@ public class DragonskullSummit extends CardImpl { private static final FilterLandPermanent filter = new FilterLandPermanent(); static { - filter.getSubtype().add("Swamp"); - filter.getSubtype().add("Mountain"); - filter.setScopeSubtype(ComparisonScope.Any); - filter.setMessage("Swamp or a Mountain"); + filter.add(Predicates.or(new SubtypePredicate("Swamp"), new SubtypePredicate("Mountain"))); } public DragonskullSummit(UUID ownerId) { @@ -63,7 +61,7 @@ public class DragonskullSummit extends CardImpl { this.expansionSetCode = "M10"; Condition controls = new UnlessCondition(new ControlsPermanentCondition(filter, ControlsPermanentCondition.CountType.MORE_THAN, 0)); - String abilityText = "tap it unless you control a " + filter.getMessage(); + String abilityText = "tap it unless you control a Swamp or a Mountain"; this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(new TapSourceEffect(), controls, abilityText), abilityText)); this.addAbility(new BlackManaAbility()); this.addAbility(new RedManaAbility()); diff --git a/Mage.Sets/src/mage/sets/magic2010/DrownedCatacomb.java b/Mage.Sets/src/mage/sets/magic2010/DrownedCatacomb.java index bde1eee84fc..9bb8f99c462 100644 --- a/Mage.Sets/src/mage/sets/magic2010/DrownedCatacomb.java +++ b/Mage.Sets/src/mage/sets/magic2010/DrownedCatacomb.java @@ -40,8 +40,9 @@ import mage.abilities.effects.common.TapSourceEffect; import mage.abilities.mana.BlackManaAbility; import mage.abilities.mana.BlueManaAbility; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.common.FilterLandPermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.SubtypePredicate; /** * @@ -52,10 +53,7 @@ public class DrownedCatacomb extends CardImpl { private static final FilterLandPermanent filter = new FilterLandPermanent(); static { - filter.getSubtype().add("Swamp"); - filter.getSubtype().add("Island"); - filter.setScopeSubtype(ComparisonScope.Any); - filter.setMessage("Island or a Swamp"); + filter.add(Predicates.or(new SubtypePredicate("Swamp"), new SubtypePredicate("Island"))); } public DrownedCatacomb(UUID ownerId) { @@ -63,7 +61,7 @@ public class DrownedCatacomb extends CardImpl { this.expansionSetCode = "M10"; Condition controls = new UnlessCondition(new ControlsPermanentCondition(filter, ControlsPermanentCondition.CountType.MORE_THAN, 0)); - String abilityText = "tap it unless you control a " + filter.getMessage(); + String abilityText = "tap it unless you control a Island or a Swamp"; this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(new TapSourceEffect(), controls, abilityText), abilityText)); this.addAbility(new BlackManaAbility()); this.addAbility(new BlueManaAbility()); diff --git a/Mage.Sets/src/mage/sets/magic2010/ElvishArchdruid.java b/Mage.Sets/src/mage/sets/magic2010/ElvishArchdruid.java index e9b7a9b0e57..fd847433645 100644 --- a/Mage.Sets/src/mage/sets/magic2010/ElvishArchdruid.java +++ b/Mage.Sets/src/mage/sets/magic2010/ElvishArchdruid.java @@ -42,6 +42,7 @@ import mage.abilities.mana.DynamicManaAbility; import mage.cards.CardImpl; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; /** * @@ -53,8 +54,8 @@ public class ElvishArchdruid extends CardImpl { private static final FilterControlledCreaturePermanent filterCount = new FilterControlledCreaturePermanent("Elf you control"); static { - filter.getSubtype().add("Elf"); - filterCount.getSubtype().add("Elf"); + filter.add(new SubtypePredicate("Elf")); + filterCount.add(new SubtypePredicate("Elf")); } public ElvishArchdruid(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/magic2010/GlacialFortress.java b/Mage.Sets/src/mage/sets/magic2010/GlacialFortress.java index 1aea23b5e12..1d9a2e52318 100644 --- a/Mage.Sets/src/mage/sets/magic2010/GlacialFortress.java +++ b/Mage.Sets/src/mage/sets/magic2010/GlacialFortress.java @@ -40,8 +40,9 @@ import mage.abilities.effects.common.TapSourceEffect; import mage.abilities.mana.BlueManaAbility; import mage.abilities.mana.WhiteManaAbility; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.common.FilterLandPermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.SubtypePredicate; /** * @@ -52,10 +53,7 @@ public class GlacialFortress extends CardImpl { private static final FilterLandPermanent filter = new FilterLandPermanent(); static { - filter.getSubtype().add("Plains"); - filter.getSubtype().add("Island"); - filter.setScopeSubtype(ComparisonScope.Any); - filter.setMessage("Plains or an Island"); + filter.add(Predicates.or(new SubtypePredicate("Plains"), new SubtypePredicate("Island"))); } public GlacialFortress(UUID ownerId) { @@ -63,7 +61,7 @@ public class GlacialFortress extends CardImpl { this.expansionSetCode = "M10"; Condition controls = new UnlessCondition(new ControlsPermanentCondition(filter, ControlsPermanentCondition.CountType.MORE_THAN, 0)); - String abilityText = "tap it unless you control a " + filter.getMessage(); + String abilityText = "tap it unless you control a Plains or an Island"; this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(new TapSourceEffect(), controls, abilityText), abilityText)); this.addAbility(new BlueManaAbility()); this.addAbility(new WhiteManaAbility()); diff --git a/Mage.Sets/src/mage/sets/magic2010/GoblinChieftain.java b/Mage.Sets/src/mage/sets/magic2010/GoblinChieftain.java index d5beb5f1d9f..ae6128b5b27 100644 --- a/Mage.Sets/src/mage/sets/magic2010/GoblinChieftain.java +++ b/Mage.Sets/src/mage/sets/magic2010/GoblinChieftain.java @@ -40,6 +40,7 @@ import mage.abilities.effects.common.continious.GainAbilityControlledEffect; import mage.abilities.keyword.HasteAbility; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; /** * @@ -50,7 +51,7 @@ public class GoblinChieftain extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Goblin creatures"); static { - filter.getSubtype().add("Goblin"); + filter.add(new SubtypePredicate("Goblin")); } public GoblinChieftain(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/magic2010/HowlOfTheNightPack.java b/Mage.Sets/src/mage/sets/magic2010/HowlOfTheNightPack.java index 8ebcc3a6c30..cd08cd917ed 100644 --- a/Mage.Sets/src/mage/sets/magic2010/HowlOfTheNightPack.java +++ b/Mage.Sets/src/mage/sets/magic2010/HowlOfTheNightPack.java @@ -34,6 +34,7 @@ import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.effects.common.CreateTokenEffect; import mage.cards.CardImpl; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.permanent.token.WolfToken; /** @@ -45,7 +46,7 @@ public class HowlOfTheNightPack extends CardImpl { private final static FilterControlledPermanent filter = new FilterControlledPermanent("for each Forest you control"); static { - filter.getSubtype().add("Forest"); + filter.add(new SubtypePredicate("Forest")); } public HowlOfTheNightPack(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/magic2010/MasterOfTheWildHunt.java b/Mage.Sets/src/mage/sets/magic2010/MasterOfTheWildHunt.java index 84919fdacb9..7cfe4dc5b4f 100644 --- a/Mage.Sets/src/mage/sets/magic2010/MasterOfTheWildHunt.java +++ b/Mage.Sets/src/mage/sets/magic2010/MasterOfTheWildHunt.java @@ -40,8 +40,8 @@ import mage.abilities.costs.common.TapSourceCost; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.CreateTokenEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; import mage.game.events.GameEvent.EventType; import mage.game.permanent.Permanent; @@ -91,8 +91,7 @@ class MasterOfTheWildHuntEffect extends OneShotEffect private static final FilterCreaturePermanent filter = new FilterCreaturePermanent(); static { - filter.getSubtype().add("Wolf"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Wolf")); filter.setTapped(false); filter.setUseTapped(true); } diff --git a/Mage.Sets/src/mage/sets/magic2010/MerfolkSovereign.java b/Mage.Sets/src/mage/sets/magic2010/MerfolkSovereign.java index 32edd06aa00..234f2ad30a6 100644 --- a/Mage.Sets/src/mage/sets/magic2010/MerfolkSovereign.java +++ b/Mage.Sets/src/mage/sets/magic2010/MerfolkSovereign.java @@ -43,6 +43,7 @@ import mage.abilities.effects.common.continious.GainAbilityTargetEffect; import mage.abilities.keyword.UnblockableAbility; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetCreaturePermanent; /** @@ -55,8 +56,8 @@ public class MerfolkSovereign extends CardImpl { private static final FilterCreaturePermanent filter2 = new FilterCreaturePermanent("Merfolk creature"); static { - filter1.getSubtype().add("Merfolk"); - filter2.getSubtype().add("Merfolk"); + filter1.add(new SubtypePredicate("Merfolk")); + filter2.add(new SubtypePredicate("Merfolk")); } public MerfolkSovereign(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/magic2010/RhoxPikemaster.java b/Mage.Sets/src/mage/sets/magic2010/RhoxPikemaster.java index bd1d99b0cf0..08967cbe673 100644 --- a/Mage.Sets/src/mage/sets/magic2010/RhoxPikemaster.java +++ b/Mage.Sets/src/mage/sets/magic2010/RhoxPikemaster.java @@ -39,6 +39,7 @@ import mage.abilities.effects.common.continious.GainAbilityControlledEffect; import mage.abilities.keyword.FirstStrikeAbility; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; /** * @@ -49,7 +50,7 @@ public class RhoxPikemaster extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Soldier creatures"); static { - filter.getSubtype().add("Soldier"); + filter.add(new SubtypePredicate("Soldier")); } public RhoxPikemaster(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/magic2010/RootboundCrag.java b/Mage.Sets/src/mage/sets/magic2010/RootboundCrag.java index 9d6bff218b8..d256f8b9a43 100644 --- a/Mage.Sets/src/mage/sets/magic2010/RootboundCrag.java +++ b/Mage.Sets/src/mage/sets/magic2010/RootboundCrag.java @@ -40,8 +40,9 @@ import mage.abilities.effects.common.TapSourceEffect; import mage.abilities.mana.GreenManaAbility; import mage.abilities.mana.RedManaAbility; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.common.FilterLandPermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.SubtypePredicate; /** * @@ -52,10 +53,7 @@ public class RootboundCrag extends CardImpl { private static final FilterLandPermanent filter = new FilterLandPermanent(); static { - filter.getSubtype().add("Mountain"); - filter.getSubtype().add("Forest"); - filter.setScopeSubtype(ComparisonScope.Any); - filter.setMessage("Mountain or a Forest"); + filter.add(Predicates.or(new SubtypePredicate("Mountain"), new SubtypePredicate("Forest"))); } public RootboundCrag(UUID ownerId) { @@ -63,7 +61,7 @@ public class RootboundCrag extends CardImpl { this.expansionSetCode = "M10"; Condition controls = new UnlessCondition(new ControlsPermanentCondition(filter, ControlsPermanentCondition.CountType.MORE_THAN, 0)); - String abilityText = "tap it unless you control a " + filter.getMessage(); + String abilityText = "tap it unless you control a Mountain or a Forest"; this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(new TapSourceEffect(), controls, abilityText), abilityText)); this.addAbility(new RedManaAbility()); this.addAbility(new GreenManaAbility()); diff --git a/Mage.Sets/src/mage/sets/magic2010/SeismicStrike.java b/Mage.Sets/src/mage/sets/magic2010/SeismicStrike.java index 69915988bf6..1f0b0b3ad23 100644 --- a/Mage.Sets/src/mage/sets/magic2010/SeismicStrike.java +++ b/Mage.Sets/src/mage/sets/magic2010/SeismicStrike.java @@ -34,6 +34,7 @@ import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.effects.common.DamageTargetEffect; import mage.cards.CardImpl; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetCreaturePermanent; /** @@ -45,7 +46,7 @@ public class SeismicStrike extends CardImpl { private final static FilterControlledPermanent filter = new FilterControlledPermanent("Mountains you control"); static { - filter.getSubtype().add("Mountain"); + filter.add(new SubtypePredicate("Mountain")); } public SeismicStrike(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/magic2010/SerpentOfTheEndlessSea.java b/Mage.Sets/src/mage/sets/magic2010/SerpentOfTheEndlessSea.java index 05d2096a68f..56814b786e2 100644 --- a/Mage.Sets/src/mage/sets/magic2010/SerpentOfTheEndlessSea.java +++ b/Mage.Sets/src/mage/sets/magic2010/SerpentOfTheEndlessSea.java @@ -42,6 +42,7 @@ import mage.abilities.effects.common.continious.SetPowerToughnessSourceEffect; import mage.cards.CardImpl; import mage.filter.FilterPermanent; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; import mage.game.events.GameEvent; @@ -54,7 +55,7 @@ public class SerpentOfTheEndlessSea extends CardImpl { private final static FilterControlledPermanent filter = new FilterControlledPermanent("Islands you control"); static { - filter.getSubtype().add("Island"); + filter.add(new SubtypePredicate("Island")); } public SerpentOfTheEndlessSea(UUID ownerId) { @@ -112,7 +113,7 @@ class SerpentOfTheEndlessSeaEffect extends ReplacementEffectImpl { private final static FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("a Goblin"); static { - filter.getSubtype().add("Goblin"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Goblin")); } public SiegeGangCommander(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/magic2010/SunpetalGrove.java b/Mage.Sets/src/mage/sets/magic2010/SunpetalGrove.java index d70ca1e04be..34da2ec2ac4 100644 --- a/Mage.Sets/src/mage/sets/magic2010/SunpetalGrove.java +++ b/Mage.Sets/src/mage/sets/magic2010/SunpetalGrove.java @@ -40,8 +40,9 @@ import mage.abilities.effects.common.TapSourceEffect; import mage.abilities.mana.GreenManaAbility; import mage.abilities.mana.WhiteManaAbility; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.common.FilterLandPermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.SubtypePredicate; /** * @@ -52,10 +53,7 @@ public class SunpetalGrove extends CardImpl { private static final FilterLandPermanent filter = new FilterLandPermanent(); static { - filter.getSubtype().add("Forest"); - filter.getSubtype().add("Plains"); - filter.setScopeSubtype(ComparisonScope.Any); - filter.setMessage("Forest or a Plains"); + filter.add(Predicates.or(new SubtypePredicate("Forest"), new SubtypePredicate("Plains"))); } public SunpetalGrove(UUID ownerId) { @@ -63,7 +61,7 @@ public class SunpetalGrove extends CardImpl { this.expansionSetCode = "M10"; Condition controls = new UnlessCondition(new ControlsPermanentCondition(filter, ControlsPermanentCondition.CountType.MORE_THAN, 0)); - String abilityText = "tap it unless you control a " + filter.getMessage(); + String abilityText = "tap it unless you control a Forest or a Plains"; this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(new TapSourceEffect(), controls, abilityText), abilityText)); this.addAbility(new GreenManaAbility()); this.addAbility(new WhiteManaAbility()); diff --git a/Mage.Sets/src/mage/sets/magic2010/TendrilsOfCorruption.java b/Mage.Sets/src/mage/sets/magic2010/TendrilsOfCorruption.java index cbaad2bebc6..034f785321e 100644 --- a/Mage.Sets/src/mage/sets/magic2010/TendrilsOfCorruption.java +++ b/Mage.Sets/src/mage/sets/magic2010/TendrilsOfCorruption.java @@ -35,6 +35,7 @@ import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.effects.common.GainLifeEffect; import mage.cards.CardImpl; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetCreaturePermanent; /** @@ -46,7 +47,7 @@ public class TendrilsOfCorruption extends CardImpl { private final static FilterControlledPermanent filter = new FilterControlledPermanent("Swamp you control"); static { - filter.getSubtype().add("Swamp"); + filter.add(new SubtypePredicate("Swamp")); } public TendrilsOfCorruption(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/magic2010/UndeadSlayer.java b/Mage.Sets/src/mage/sets/magic2010/UndeadSlayer.java index 5314b03aa04..ea411f5d1bd 100644 --- a/Mage.Sets/src/mage/sets/magic2010/UndeadSlayer.java +++ b/Mage.Sets/src/mage/sets/magic2010/UndeadSlayer.java @@ -39,8 +39,9 @@ import mage.abilities.costs.common.TapSourceCost; import mage.abilities.costs.mana.ColoredManaCost; import mage.abilities.effects.common.ExileTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.TargetPermanent; /** @@ -52,10 +53,10 @@ public class UndeadSlayer extends CardImpl { private final static FilterPermanent filter = new FilterPermanent("Skeleton, Vampire, or Zombie"); static { - filter.getSubtype().add("Skeleton"); - filter.getSubtype().add("Vampire"); - filter.getSubtype().add("Zombie"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(Predicates.or( + new SubtypePredicate("Skeleton"), + new SubtypePredicate("Vampire"), + new SubtypePredicate("Zombie"))); } public UndeadSlayer(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/magic2010/VampireNocturnus.java b/Mage.Sets/src/mage/sets/magic2010/VampireNocturnus.java index 49ea4c50ecf..e79534cd1e3 100644 --- a/Mage.Sets/src/mage/sets/magic2010/VampireNocturnus.java +++ b/Mage.Sets/src/mage/sets/magic2010/VampireNocturnus.java @@ -42,6 +42,7 @@ import mage.abilities.effects.common.continious.*; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; /** @@ -80,7 +81,7 @@ class VampireNocturnusAbility extends StaticAbility { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent(); static { - filter.getSubtype().add("Vampire"); + filter.add(new SubtypePredicate("Vampire")); } public VampireNocturnusAbility() { diff --git a/Mage.Sets/src/mage/sets/magic2010/VeteranArmorsmith.java b/Mage.Sets/src/mage/sets/magic2010/VeteranArmorsmith.java index b782b5c209f..df5c7f6d4b0 100644 --- a/Mage.Sets/src/mage/sets/magic2010/VeteranArmorsmith.java +++ b/Mage.Sets/src/mage/sets/magic2010/VeteranArmorsmith.java @@ -36,8 +36,8 @@ import mage.MageInt; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.common.continious.BoostControlledEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; /** * @@ -48,8 +48,7 @@ public class VeteranArmorsmith extends CardImpl { private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("Soldier creatures"); static { - filter.getSubtype().add("Soldier"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Soldier")); } public VeteranArmorsmith(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/magic2010/VeteranSwordsmith.java b/Mage.Sets/src/mage/sets/magic2010/VeteranSwordsmith.java index 7a362443369..1b52f18234c 100644 --- a/Mage.Sets/src/mage/sets/magic2010/VeteranSwordsmith.java +++ b/Mage.Sets/src/mage/sets/magic2010/VeteranSwordsmith.java @@ -36,8 +36,8 @@ import mage.MageInt; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.common.continious.BoostControlledEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; /** * @author Loki @@ -47,8 +47,7 @@ public class VeteranSwordsmith extends CardImpl { private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("Soldier"); static { - filter.getSubtype().add("Soldier"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Soldier")); } public VeteranSwordsmith(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/magic2011/CaptivatingVampire.java b/Mage.Sets/src/mage/sets/magic2011/CaptivatingVampire.java index 55a593ad8d5..2a0b642b0dc 100644 --- a/Mage.Sets/src/mage/sets/magic2011/CaptivatingVampire.java +++ b/Mage.Sets/src/mage/sets/magic2011/CaptivatingVampire.java @@ -46,6 +46,7 @@ import mage.abilities.effects.common.continious.BoostControlledEffect; import mage.cards.CardImpl; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.target.common.TargetControlledCreaturePermanent; @@ -61,8 +62,8 @@ public class CaptivatingVampire extends CardImpl { private static final FilterControlledCreaturePermanent filter2 = new FilterControlledCreaturePermanent("untapped Vampires you control"); static { - filter1.getSubtype().add("Vampire"); - filter2.getSubtype().add("Vampire"); + filter1.add(new SubtypePredicate("Vampire")); + filter2.add(new SubtypePredicate("Vampire")); filter2.setTapped(false); filter2.setUseTapped(true); } diff --git a/Mage.Sets/src/mage/sets/magic2011/Corrupt.java b/Mage.Sets/src/mage/sets/magic2011/Corrupt.java index 6606250b64a..1595d2fd7f0 100644 --- a/Mage.Sets/src/mage/sets/magic2011/Corrupt.java +++ b/Mage.Sets/src/mage/sets/magic2011/Corrupt.java @@ -36,8 +36,8 @@ import mage.Constants.TargetController; import mage.abilities.Ability; import mage.abilities.effects.OneShotEffect; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.common.FilterLandPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; @@ -73,8 +73,7 @@ class CorruptEffect extends OneShotEffect { private static final FilterLandPermanent filter = new FilterLandPermanent("Swamps"); static { - filter.getSubtype().add("Swamp"); - filter.setScopeSubtype(ComparisonScope.Any); + filter.add(new SubtypePredicate("Swamp")); filter.setTargetController(TargetController.YOU); } diff --git a/Mage.Sets/src/mage/sets/magic2011/EarthServant.java b/Mage.Sets/src/mage/sets/magic2011/EarthServant.java index a86565b6bfe..1870c478657 100644 --- a/Mage.Sets/src/mage/sets/magic2011/EarthServant.java +++ b/Mage.Sets/src/mage/sets/magic2011/EarthServant.java @@ -40,6 +40,7 @@ import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.effects.common.continious.BoostSourceEffect; import mage.cards.CardImpl; import mage.filter.common.FilterLandPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; /** * @@ -50,7 +51,7 @@ public class EarthServant extends CardImpl { private static final FilterLandPermanent filter = new FilterLandPermanent("Mountain you control"); static { - filter.getSubtype().add("Mountain"); + filter.add(new SubtypePredicate("Mountain")); filter.setTargetController(TargetController.YOU); } diff --git a/Mage.Sets/src/mage/sets/magic2011/HarborSerpent.java b/Mage.Sets/src/mage/sets/magic2011/HarborSerpent.java index a72cf06d212..603da979d0f 100644 --- a/Mage.Sets/src/mage/sets/magic2011/HarborSerpent.java +++ b/Mage.Sets/src/mage/sets/magic2011/HarborSerpent.java @@ -39,6 +39,7 @@ import mage.abilities.effects.RestrictionEffect; import mage.abilities.keyword.IslandwalkAbility; import mage.cards.CardImpl; import mage.filter.common.FilterLandPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; import mage.game.permanent.Permanent; @@ -77,7 +78,7 @@ class HarborSerpentEffect extends RestrictionEffect { public HarborSerpentEffect() { super(Duration.WhileOnBattlefield); - filter.getSubtype().add("Island"); + filter.add(new SubtypePredicate("Island")); staticText = "{this} can't attack unless there are five or more Islands on the battlefield"; } diff --git a/Mage.Sets/src/mage/sets/magic2011/KnightExemplar.java b/Mage.Sets/src/mage/sets/magic2011/KnightExemplar.java index ea1f1a5a6d7..d2aa5d40bfa 100644 --- a/Mage.Sets/src/mage/sets/magic2011/KnightExemplar.java +++ b/Mage.Sets/src/mage/sets/magic2011/KnightExemplar.java @@ -41,6 +41,7 @@ import mage.abilities.keyword.FirstStrikeAbility; import mage.abilities.keyword.IndestructibleAbility; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; /** * @@ -51,7 +52,7 @@ public class KnightExemplar extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Knight creatures"); static { - filter.getSubtype().add("Knight"); + filter.add(new SubtypePredicate("Knight")); } public KnightExemplar(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/magic2011/QuagSickness.java b/Mage.Sets/src/mage/sets/magic2011/QuagSickness.java index 2bf71153b9b..f5bbfd10d87 100644 --- a/Mage.Sets/src/mage/sets/magic2011/QuagSickness.java +++ b/Mage.Sets/src/mage/sets/magic2011/QuagSickness.java @@ -42,6 +42,7 @@ import mage.abilities.effects.common.continious.BoostEnchantedEffect; import mage.abilities.keyword.EnchantAbility; import mage.cards.CardImpl; import mage.filter.common.FilterLandPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; @@ -54,7 +55,7 @@ public class QuagSickness extends CardImpl { private static final FilterLandPermanent filter = new FilterLandPermanent("Swamp you control"); static { - filter.getSubtype().add("Swamp"); + filter.add(new SubtypePredicate("Swamp")); filter.setTargetController(TargetController.YOU); } diff --git a/Mage.Sets/src/mage/sets/magic2012/ArachnusSpinner.java b/Mage.Sets/src/mage/sets/magic2012/ArachnusSpinner.java index 564f5cdd1bc..6b17b3d4bce 100644 --- a/Mage.Sets/src/mage/sets/magic2012/ArachnusSpinner.java +++ b/Mage.Sets/src/mage/sets/magic2012/ArachnusSpinner.java @@ -43,6 +43,7 @@ import mage.cards.CardImpl; import mage.filter.FilterCard; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.predicate.mageobject.NamePredicate; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; @@ -60,7 +61,7 @@ public class ArachnusSpinner extends CardImpl { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("untapped Spider"); static { - filter.getSubtype().add("Spider"); + filter.add(new SubtypePredicate("Spider")); filter.setTapped(false); filter.setUseTapped(true); } diff --git a/Mage.Sets/src/mage/sets/magic2012/BloodlordOfVaasgoth.java b/Mage.Sets/src/mage/sets/magic2012/BloodlordOfVaasgoth.java index 6ed92cf2e59..bf38bd43958 100644 --- a/Mage.Sets/src/mage/sets/magic2012/BloodlordOfVaasgoth.java +++ b/Mage.Sets/src/mage/sets/magic2012/BloodlordOfVaasgoth.java @@ -40,6 +40,7 @@ import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.filter.Filter; import mage.filter.FilterSpell; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.game.stack.Spell; @@ -54,8 +55,7 @@ public class BloodlordOfVaasgoth extends CardImpl { static { filter.getCardType().add(CardType.CREATURE); filter.setScopeCardType(Filter.ComparisonScope.Any); - filter.getSubtype().add("Vampire"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Vampire")); } public BloodlordOfVaasgoth(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/magic2012/CallToTheGrave.java b/Mage.Sets/src/mage/sets/magic2012/CallToTheGrave.java index 14642347395..9a3755b7181 100644 --- a/Mage.Sets/src/mage/sets/magic2012/CallToTheGrave.java +++ b/Mage.Sets/src/mage/sets/magic2012/CallToTheGrave.java @@ -42,6 +42,8 @@ import mage.abilities.effects.common.SacrificeEffect; import mage.abilities.effects.common.SacrificeSourceEffect; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.events.GameEvent; /** @@ -54,8 +56,7 @@ public class CallToTheGrave extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("a non-Zombie creature"); static { - filter.getSubtype().add("Zombie"); - filter.setNotSubtype(true); + filter.add(Predicates.not(new SubtypePredicate("Zombie"))); } public CallToTheGrave(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/magic2012/CemeteryReaper.java b/Mage.Sets/src/mage/sets/magic2012/CemeteryReaper.java index 78e8935aab7..bda14ed1c94 100644 --- a/Mage.Sets/src/mage/sets/magic2012/CemeteryReaper.java +++ b/Mage.Sets/src/mage/sets/magic2012/CemeteryReaper.java @@ -43,9 +43,9 @@ import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.ExileTargetEffect; import mage.abilities.effects.common.continious.BoostControlledEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterCreatureCard; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.permanent.token.ZombieToken; import mage.target.common.TargetCardInGraveyard; @@ -56,8 +56,7 @@ public class CemeteryReaper extends CardImpl { private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("Zombie creatures"); static { - filter.getSubtype().add("Zombie"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Zombie")); } public CemeteryReaper(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/magic2012/DungroveElder.java b/Mage.Sets/src/mage/sets/magic2012/DungroveElder.java index aa3305c3581..c2dc0f75456 100644 --- a/Mage.Sets/src/mage/sets/magic2012/DungroveElder.java +++ b/Mage.Sets/src/mage/sets/magic2012/DungroveElder.java @@ -41,6 +41,7 @@ import mage.abilities.effects.common.continious.SetPowerToughnessSourceEffect; import mage.abilities.keyword.HexproofAbility; import mage.cards.CardImpl; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; /** * @@ -51,7 +52,7 @@ public class DungroveElder extends CardImpl { final static FilterControlledPermanent filterLands = new FilterControlledPermanent("Forests you control"); static { - filterLands.getSubtype().add("Forest"); + filterLands.add(new SubtypePredicate("Forest")); } public DungroveElder (UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/magic2012/GoblinGrenade.java b/Mage.Sets/src/mage/sets/magic2012/GoblinGrenade.java index a2c3bcad9ab..e02033f4653 100644 --- a/Mage.Sets/src/mage/sets/magic2012/GoblinGrenade.java +++ b/Mage.Sets/src/mage/sets/magic2012/GoblinGrenade.java @@ -37,6 +37,7 @@ import mage.abilities.effects.common.DamageTargetEffect; import mage.cards.CardImpl; import mage.filter.Filter; import mage.filter.common.FilterControlledCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetControlledCreaturePermanent; import mage.target.common.TargetCreatureOrPlayer; @@ -48,8 +49,7 @@ public class GoblinGrenade extends CardImpl { private final static FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Goblin"); static { - filter.getSubtype().add("Goblin"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Goblin")); } public GoblinGrenade(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/magic2012/GriffinRider.java b/Mage.Sets/src/mage/sets/magic2012/GriffinRider.java index 5ec9409c03f..1fb6b719bf0 100644 --- a/Mage.Sets/src/mage/sets/magic2012/GriffinRider.java +++ b/Mage.Sets/src/mage/sets/magic2012/GriffinRider.java @@ -40,9 +40,9 @@ import mage.abilities.effects.common.continious.BoostSourceEffect; import mage.abilities.effects.common.continious.GainAbilitySourceEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; /** * @@ -55,8 +55,7 @@ public class GriffinRider extends CardImpl { private static final FilterPermanent filterGriffinCard = new FilterCreaturePermanent(); static { - filterGriffinCard.getSubtype().add("Griffin"); - filterGriffinCard.setScopeSubtype(Filter.ComparisonScope.Any); + filterGriffinCard.add(new SubtypePredicate("Griffin")); } public GriffinRider(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/magic2012/LordOfTheUnreal.java b/Mage.Sets/src/mage/sets/magic2012/LordOfTheUnreal.java index d1ec5d001cf..e6674bb80e8 100644 --- a/Mage.Sets/src/mage/sets/magic2012/LordOfTheUnreal.java +++ b/Mage.Sets/src/mage/sets/magic2012/LordOfTheUnreal.java @@ -40,8 +40,8 @@ import mage.abilities.effects.common.continious.BoostControlledEffect; import mage.abilities.effects.common.continious.GainAbilityControlledEffect; import mage.abilities.keyword.HexproofAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; /** * @author Loki @@ -51,8 +51,7 @@ public class LordOfTheUnreal extends CardImpl { private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("Illusion creatures"); static { - filter.getSubtype().add("Illusion"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Illusion")); } public LordOfTheUnreal(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/magic2013/ArcticAven.java b/Mage.Sets/src/mage/sets/magic2013/ArcticAven.java index 9b9b0b2f4ff..a36287308aa 100644 --- a/Mage.Sets/src/mage/sets/magic2013/ArcticAven.java +++ b/Mage.Sets/src/mage/sets/magic2013/ArcticAven.java @@ -42,6 +42,7 @@ import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.LifelinkAbility; import mage.cards.CardImpl; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; /** * @@ -52,7 +53,7 @@ public class ArcticAven extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("Plains"); static { - filter.getSubtype().add("Plains"); + filter.add(new SubtypePredicate("Plains")); } public ArcticAven(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/magic2013/ArmsDealer.java b/Mage.Sets/src/mage/sets/magic2013/ArmsDealer.java index 61f558f4607..fea029c16c5 100644 --- a/Mage.Sets/src/mage/sets/magic2013/ArmsDealer.java +++ b/Mage.Sets/src/mage/sets/magic2013/ArmsDealer.java @@ -38,6 +38,7 @@ import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.common.DamageTargetEffect; import mage.cards.CardImpl; import mage.filter.common.FilterControlledCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetControlledPermanent; import mage.target.common.TargetCreaturePermanent; @@ -50,7 +51,7 @@ public class ArmsDealer extends CardImpl { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Goblin"); static { - filter.getSubtype().add("Goblin"); + filter.add(new SubtypePredicate("Goblin")); } public ArmsDealer(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/magic2013/CrimsonMuckwader.java b/Mage.Sets/src/mage/sets/magic2013/CrimsonMuckwader.java index 227bcb084d7..ab6d1d5ca54 100644 --- a/Mage.Sets/src/mage/sets/magic2013/CrimsonMuckwader.java +++ b/Mage.Sets/src/mage/sets/magic2013/CrimsonMuckwader.java @@ -38,8 +38,8 @@ import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.common.RegenerateSourceEffect; import mage.abilities.effects.common.continious.BoostSourceWhileControlsEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; /** * @@ -50,8 +50,7 @@ public class CrimsonMuckwader extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("Swamp"); static { - filter.getSubtype().add("Swamp"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Swamp")); } public CrimsonMuckwader(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/magic2013/FlinthoofBoar.java b/Mage.Sets/src/mage/sets/magic2013/FlinthoofBoar.java index 838ebc7af97..a7e8788f353 100644 --- a/Mage.Sets/src/mage/sets/magic2013/FlinthoofBoar.java +++ b/Mage.Sets/src/mage/sets/magic2013/FlinthoofBoar.java @@ -40,8 +40,8 @@ import mage.abilities.effects.common.continious.BoostSourceWhileControlsEffect; import mage.abilities.effects.common.continious.GainAbilitySourceEffect; import mage.abilities.keyword.HasteAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; /** * @@ -52,8 +52,7 @@ public class FlinthoofBoar extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("Mountain"); static { - filter.getSubtype().add("Mountain"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Mountain")); } public FlinthoofBoar(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/magic2013/KrenkoMobBoss.java b/Mage.Sets/src/mage/sets/magic2013/KrenkoMobBoss.java index 1c7e3344473..5e785119279 100644 --- a/Mage.Sets/src/mage/sets/magic2013/KrenkoMobBoss.java +++ b/Mage.Sets/src/mage/sets/magic2013/KrenkoMobBoss.java @@ -38,6 +38,7 @@ import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.effects.common.CreateTokenEffect; import mage.cards.CardImpl; import mage.filter.common.FilterControlledCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.permanent.token.GoblinToken; /** @@ -49,7 +50,7 @@ public class KrenkoMobBoss extends CardImpl { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Goblin you control"); static { - filter.getSubtype().add("Goblin"); + filter.add(new SubtypePredicate("Goblin")); } public KrenkoMobBoss(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/magic2013/LilianasShade.java b/Mage.Sets/src/mage/sets/magic2013/LilianasShade.java index 657520fc141..a39a54136e2 100644 --- a/Mage.Sets/src/mage/sets/magic2013/LilianasShade.java +++ b/Mage.Sets/src/mage/sets/magic2013/LilianasShade.java @@ -40,6 +40,7 @@ import mage.abilities.effects.common.continious.BoostSourceEffect; import mage.abilities.effects.common.search.SearchLibraryRevealPutInHandEffect; import mage.cards.CardImpl; import mage.filter.common.FilterLandCard; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetCardInLibrary; /** @@ -51,7 +52,7 @@ public class LilianasShade extends CardImpl { private static final FilterLandCard filter = new FilterLandCard("Swamp"); static { - filter.getSubtype().add("Swamp"); + filter.add(new SubtypePredicate("Swamp")); } public LilianasShade(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/magic2013/MasterOfThePearlTrident.java b/Mage.Sets/src/mage/sets/magic2013/MasterOfThePearlTrident.java index 56614e19a0d..e8fdcdeeeaf 100644 --- a/Mage.Sets/src/mage/sets/magic2013/MasterOfThePearlTrident.java +++ b/Mage.Sets/src/mage/sets/magic2013/MasterOfThePearlTrident.java @@ -39,6 +39,7 @@ import mage.abilities.effects.common.continious.GainAbilityControlledEffect; import mage.abilities.keyword.IslandwalkAbility; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; /** * @@ -49,7 +50,7 @@ public class MasterOfThePearlTrident extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Merfolk creatures"); static { - filter.getSubtype().add("Merfolk"); + filter.add(new SubtypePredicate("Merfolk")); } public MasterOfThePearlTrident(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/magic2013/Mutilate.java b/Mage.Sets/src/mage/sets/magic2013/Mutilate.java index 784191bc6d0..3518d18e929 100644 --- a/Mage.Sets/src/mage/sets/magic2013/Mutilate.java +++ b/Mage.Sets/src/mage/sets/magic2013/Mutilate.java @@ -36,6 +36,7 @@ import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.effects.common.continious.BoostAllEffect; import mage.cards.CardImpl; import mage.filter.common.FilterLandPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; /** * @@ -46,7 +47,7 @@ public class Mutilate extends CardImpl { private static final FilterLandPermanent filter = new FilterLandPermanent("Swamp you control"); static { - filter.getSubtype().add("Swamp"); + filter.add(new SubtypePredicate("Swamp")); filter.setTargetController(Constants.TargetController.YOU); } diff --git a/Mage.Sets/src/mage/sets/magic2013/PrizedElephant.java b/Mage.Sets/src/mage/sets/magic2013/PrizedElephant.java index 598c01d4e08..0da215ecafa 100644 --- a/Mage.Sets/src/mage/sets/magic2013/PrizedElephant.java +++ b/Mage.Sets/src/mage/sets/magic2013/PrizedElephant.java @@ -44,6 +44,7 @@ import mage.abilities.keyword.TrampleAbility; import mage.cards.CardImpl; import mage.filter.Filter; import mage.filter.common.FilterLandPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; /** * @@ -55,8 +56,7 @@ public class PrizedElephant extends CardImpl { private static final FilterLandPermanent filter = new FilterLandPermanent("a Forest"); static { - filter.getSubtype().add("Forest"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Forest")); } public PrizedElephant(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/magic2013/RangersPath.java b/Mage.Sets/src/mage/sets/magic2013/RangersPath.java index 53dcae2450b..58097c6137e 100644 --- a/Mage.Sets/src/mage/sets/magic2013/RangersPath.java +++ b/Mage.Sets/src/mage/sets/magic2013/RangersPath.java @@ -33,6 +33,7 @@ import mage.Constants.Rarity; import mage.abilities.effects.common.search.SearchLibraryPutInPlayEffect; import mage.cards.CardImpl; import mage.filter.common.FilterLandCard; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetCardInLibrary; /** @@ -44,7 +45,7 @@ public class RangersPath extends CardImpl { private static final FilterLandCard filter = new FilterLandCard("Forest cards"); static { - filter.getSubtype().add("Forest"); + filter.add(new SubtypePredicate("Forest")); } public RangersPath(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/magic2013/TalrandSkySummoner.java b/Mage.Sets/src/mage/sets/magic2013/TalrandSkySummoner.java index c5321dc8e31..b7dff246ff0 100644 --- a/Mage.Sets/src/mage/sets/magic2013/TalrandSkySummoner.java +++ b/Mage.Sets/src/mage/sets/magic2013/TalrandSkySummoner.java @@ -34,7 +34,6 @@ import mage.MageInt; import mage.abilities.common.SpellCastTriggeredAbility; import mage.abilities.effects.common.CreateTokenEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterSpell; import mage.game.permanent.token.DrakeToken; @@ -49,7 +48,6 @@ public class TalrandSkySummoner extends CardImpl { static { filter.getCardType().add(CardType.INSTANT); filter.getCardType().add(CardType.SORCERY); - filter.setScopeSubtype(Filter.ComparisonScope.Any); } public TalrandSkySummoner(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/mirrodin/NightmareLash.java b/Mage.Sets/src/mage/sets/mirrodin/NightmareLash.java index 02e25dcbb15..40071ecac85 100644 --- a/Mage.Sets/src/mage/sets/mirrodin/NightmareLash.java +++ b/Mage.Sets/src/mage/sets/mirrodin/NightmareLash.java @@ -39,6 +39,7 @@ import mage.abilities.effects.common.continious.BoostEquippedEffect; import mage.abilities.keyword.EquipAbility; import mage.cards.CardImpl; import mage.filter.common.FilterLandPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; /** * @@ -48,7 +49,7 @@ public class NightmareLash extends CardImpl { private static final FilterLandPermanent filter = new FilterLandPermanent("Swamp you control"); static { - filter.getSubtype().add("Swamp"); + filter.add(new SubtypePredicate("Swamp")); filter.setTargetController(Constants.TargetController.YOU); } diff --git a/Mage.Sets/src/mage/sets/mirrodin/RustsporeRam.java b/Mage.Sets/src/mage/sets/mirrodin/RustsporeRam.java index 8555eb4ac1d..0c596f8cb36 100644 --- a/Mage.Sets/src/mage/sets/mirrodin/RustsporeRam.java +++ b/Mage.Sets/src/mage/sets/mirrodin/RustsporeRam.java @@ -35,8 +35,8 @@ import mage.abilities.Ability; import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.TargetPermanent; /** @@ -48,8 +48,7 @@ public class RustsporeRam extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("Equipment"); static { - filter.getSubtype().add("Equipment"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Equipment")); } public RustsporeRam(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/mirrodin/TurnToDust.java b/Mage.Sets/src/mage/sets/mirrodin/TurnToDust.java index 7c3a4092d39..db78511f34d 100644 --- a/Mage.Sets/src/mage/sets/mirrodin/TurnToDust.java +++ b/Mage.Sets/src/mage/sets/mirrodin/TurnToDust.java @@ -34,8 +34,8 @@ import mage.Mana; import mage.abilities.effects.common.BasicManaEffect; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.TargetPermanent; /** @@ -47,8 +47,7 @@ public class TurnToDust extends CardImpl { private final static FilterPermanent filter = new FilterPermanent("Equipment"); static { - filter.getSubtype().add("Equipment"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Equipment")); } public TurnToDust(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/mirrodinbesieged/BrassSquire.java b/Mage.Sets/src/mage/sets/mirrodinbesieged/BrassSquire.java index 40717d0b671..03879d466d0 100644 --- a/Mage.Sets/src/mage/sets/mirrodinbesieged/BrassSquire.java +++ b/Mage.Sets/src/mage/sets/mirrodinbesieged/BrassSquire.java @@ -39,6 +39,7 @@ import mage.abilities.costs.common.TapSourceCost; import mage.abilities.effects.OneShotEffect; import mage.cards.CardImpl; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.target.common.TargetControlledCreaturePermanent; @@ -53,7 +54,7 @@ public class BrassSquire extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("Equipment you control"); static { - filter.getSubtype().add("Equipment"); + filter.add(new SubtypePredicate("Equipment")); } public BrassSquire(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/mirrodinbesieged/MyrTurbine.java b/Mage.Sets/src/mage/sets/mirrodinbesieged/MyrTurbine.java index f5e7d5db1ef..82510a0e9ff 100644 --- a/Mage.Sets/src/mage/sets/mirrodinbesieged/MyrTurbine.java +++ b/Mage.Sets/src/mage/sets/mirrodinbesieged/MyrTurbine.java @@ -39,6 +39,7 @@ import mage.abilities.effects.common.search.SearchLibraryPutInPlayEffect; import mage.cards.CardImpl; import mage.filter.common.FilterControlledPermanent; import mage.filter.common.FilterCreatureCard; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.permanent.token.MyrToken; import mage.target.common.TargetCardInLibrary; import mage.target.common.TargetControlledPermanent; @@ -53,8 +54,8 @@ public class MyrTurbine extends CardImpl { private static final FilterControlledPermanent filterMyr = new FilterControlledPermanent("Myr you control"); static { - filterCard.getSubtype().add("Myr"); - filterMyr.getSubtype().add("Myr"); + filterCard.add(new SubtypePredicate("Myr")); + filterMyr.add(new SubtypePredicate("Myr")); } diff --git a/Mage.Sets/src/mage/sets/mirrodinbesieged/ThopterAssembly.java b/Mage.Sets/src/mage/sets/mirrodinbesieged/ThopterAssembly.java index 032ef26aac3..432a90a8439 100644 --- a/Mage.Sets/src/mage/sets/mirrodinbesieged/ThopterAssembly.java +++ b/Mage.Sets/src/mage/sets/mirrodinbesieged/ThopterAssembly.java @@ -36,8 +36,8 @@ import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.ReturnToHandSourceEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; import mage.game.events.GameEvent; import mage.game.permanent.token.Token; @@ -91,8 +91,7 @@ class ThopterAssemblyTriggeredAbility extends TriggeredAbilityImpl { static { filterForest.add(new NamePredicate("Forest")); - filterTreefolk.getSubtype().add("Treefolk"); - filterTreefolk.setScopeSubtype(Filter.ComparisonScope.Any); + filterTreefolk.add(new SubtypePredicate("Treefolk")); } public EverbarkShaman(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/morningtide/FendeepSummoner.java b/Mage.Sets/src/mage/sets/morningtide/FendeepSummoner.java index c3f5797ce64..957d00d58ab 100644 --- a/Mage.Sets/src/mage/sets/morningtide/FendeepSummoner.java +++ b/Mage.Sets/src/mage/sets/morningtide/FendeepSummoner.java @@ -39,6 +39,7 @@ import mage.abilities.costs.common.TapSourceCost; import mage.abilities.effects.common.continious.BecomesCreatureTargetEffect; import mage.cards.CardImpl; import mage.filter.common.FilterLandPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.permanent.token.Token; import mage.target.common.TargetLandPermanent; @@ -50,7 +51,7 @@ public class FendeepSummoner extends CardImpl { static final FilterLandPermanent filter = new FilterLandPermanent("Swamp"); static { - filter.getSubtype().add("Swamp"); + filter.add(new SubtypePredicate("Swamp")); } public FendeepSummoner(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/morningtide/HeritageDruid.java b/Mage.Sets/src/mage/sets/morningtide/HeritageDruid.java index 0331ade1233..fd51ab7dff0 100644 --- a/Mage.Sets/src/mage/sets/morningtide/HeritageDruid.java +++ b/Mage.Sets/src/mage/sets/morningtide/HeritageDruid.java @@ -38,8 +38,8 @@ import mage.abilities.costs.common.TapTargetCost; import mage.abilities.effects.common.BasicManaEffect; import mage.abilities.mana.SimpleManaAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetControlledCreaturePermanent; /** @@ -53,9 +53,7 @@ public class HeritageDruid extends CardImpl { static { filter.setTapped(false); filter.setUseTapped(true); - filter.getSubtype().add("Elf"); - filter.setScopeCardType(Filter.ComparisonScope.Any); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Elf")); } public HeritageDruid(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/morningtide/InspiredSprite.java b/Mage.Sets/src/mage/sets/morningtide/InspiredSprite.java index 5c6f70752b7..6d261c5efef 100644 --- a/Mage.Sets/src/mage/sets/morningtide/InspiredSprite.java +++ b/Mage.Sets/src/mage/sets/morningtide/InspiredSprite.java @@ -40,8 +40,8 @@ import mage.abilities.effects.common.UntapSourceEffect; import mage.abilities.keyword.FlashAbility; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterSpell; +import mage.filter.predicate.mageobject.SubtypePredicate; /** * @@ -52,8 +52,7 @@ public class InspiredSprite extends CardImpl { private final static FilterSpell filter = new FilterSpell("Wizard"); static { - filter.getSubtype().add("Wizard"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Wizard")); } public InspiredSprite(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/morningtide/KinsbaileCavalier.java b/Mage.Sets/src/mage/sets/morningtide/KinsbaileCavalier.java index bd8ca231cac..edf106fad98 100644 --- a/Mage.Sets/src/mage/sets/morningtide/KinsbaileCavalier.java +++ b/Mage.Sets/src/mage/sets/morningtide/KinsbaileCavalier.java @@ -29,16 +29,17 @@ package mage.sets.morningtide; import java.util.UUID; -import mage.Constants; import mage.Constants.CardType; +import mage.Constants.Duration; import mage.Constants.Rarity; +import mage.Constants.Zone; import mage.MageInt; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.common.continious.GainAbilityControlledEffect; import mage.abilities.keyword.DoubleStrikeAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; /** * @@ -49,8 +50,7 @@ public class KinsbaileCavalier extends CardImpl { private final static FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Knight"); static { - filter.getSubtype().add("Knight"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Knight")); } public KinsbaileCavalier(UUID ownerId) { @@ -61,7 +61,7 @@ public class KinsbaileCavalier extends CardImpl { this.color.setWhite(true); this.power = new MageInt(2); this.toughness = new MageInt(2); - this.addAbility(new SimpleStaticAbility(Constants.Zone.BATTLEFIELD, new GainAbilityControlledEffect(DoubleStrikeAbility.getInstance(), Constants.Duration.WhileOnBattlefield, filter, false))); + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityControlledEffect(DoubleStrikeAbility.getInstance(), Duration.WhileOnBattlefield, filter, false))); } public KinsbaileCavalier(final KinsbaileCavalier card) { diff --git a/Mage.Sets/src/mage/sets/morningtide/LysAlanaBowmaster.java b/Mage.Sets/src/mage/sets/morningtide/LysAlanaBowmaster.java index 157c37e3215..b066360250a 100644 --- a/Mage.Sets/src/mage/sets/morningtide/LysAlanaBowmaster.java +++ b/Mage.Sets/src/mage/sets/morningtide/LysAlanaBowmaster.java @@ -37,9 +37,9 @@ import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.ReachAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterSpell; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetCreaturePermanent; /** @@ -52,8 +52,7 @@ public class LysAlanaBowmaster extends CardImpl { private final static FilterCreaturePermanent filterFlying = new FilterCreaturePermanent("creature with flying"); static { - filterElf.getSubtype().add("Elf"); - filterElf.setScopeSubtype(Filter.ComparisonScope.Any); + filterElf.add(new SubtypePredicate("Elf")); filterFlying.getAbilities().add(FlyingAbility.getInstance()); } diff --git a/Mage.Sets/src/mage/sets/morningtide/PreeminentCaptain.java b/Mage.Sets/src/mage/sets/morningtide/PreeminentCaptain.java index c94d105f8bb..c832e751b63 100644 --- a/Mage.Sets/src/mage/sets/morningtide/PreeminentCaptain.java +++ b/Mage.Sets/src/mage/sets/morningtide/PreeminentCaptain.java @@ -39,7 +39,8 @@ import mage.abilities.effects.OneShotEffect; import mage.abilities.keyword.FirstStrikeAbility; import mage.cards.Card; import mage.cards.CardImpl; -import mage.filter.FilterCard; +import mage.filter.common.FilterCreatureCard; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; @@ -83,6 +84,12 @@ public class PreeminentCaptain extends CardImpl { class PreeminentCaptainEffect extends OneShotEffect { + private static final FilterCreatureCard filter = new FilterCreatureCard("a soldier creature card"); + + static { + filter.add(new SubtypePredicate("Soldier")); + } + public PreeminentCaptainEffect() { super(Outcome.PutCreatureInPlay); this.staticText = "put a Soldier creature card from your hand onto the battlefield tapped and attacking."; @@ -95,7 +102,7 @@ class PreeminentCaptainEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { Player player = game.getPlayer(source.getControllerId()); - TargetCardInHand target = new TargetCardInHand(new FilterSoldierCard()); + TargetCardInHand target = new TargetCardInHand(filter); if (target.canChoose(player.getId(), game) && target.choose(getOutcome(), player.getId(), source.getSourceId(), game)) { if (target.getTargets().size() > 0) { UUID cardId = target.getFirstTarget(); @@ -130,26 +137,3 @@ class PreeminentCaptainEffect extends OneShotEffect { } } - -class FilterSoldierCard extends FilterCard { - - public FilterSoldierCard() { - this("a soldier creature card."); - } - - public FilterSoldierCard(String name) { - super(name); - cardType.add(CardType.CREATURE); - subtype.add("Soldier"); - } - - public FilterSoldierCard(final FilterSoldierCard filter) { - super(filter); - } - - @Override - public FilterSoldierCard copy() { - return new FilterSoldierCard(this); - } - -} \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/morningtide/RhysTheExiled.java b/Mage.Sets/src/mage/sets/morningtide/RhysTheExiled.java index 01008538b7f..8efe7fb77b7 100644 --- a/Mage.Sets/src/mage/sets/morningtide/RhysTheExiled.java +++ b/Mage.Sets/src/mage/sets/morningtide/RhysTheExiled.java @@ -42,8 +42,8 @@ import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.effects.common.GainLifeEffect; import mage.abilities.effects.common.RegenerateSourceEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetControlledCreaturePermanent; /** @@ -55,8 +55,7 @@ public class RhysTheExiled extends CardImpl { private final static FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Elf"); static { - filter.getSubtype().add("Elf"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Elf")); } public RhysTheExiled(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/morningtide/ScarbladeElite.java b/Mage.Sets/src/mage/sets/morningtide/ScarbladeElite.java index 42c2acbb738..7554df945af 100644 --- a/Mage.Sets/src/mage/sets/morningtide/ScarbladeElite.java +++ b/Mage.Sets/src/mage/sets/morningtide/ScarbladeElite.java @@ -39,8 +39,8 @@ import mage.abilities.costs.common.ExileFromGraveCost; import mage.abilities.costs.common.TapSourceCost; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetCardInYourGraveyard; import mage.target.common.TargetCreaturePermanent; @@ -53,8 +53,7 @@ public class ScarbladeElite extends CardImpl { private final static FilterCard filter = new FilterCard("Assassin card from your graveyard"); static { - filter.getSubtype().add("Assassin"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Assassin")); } public ScarbladeElite(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/morningtide/SeethingPathblazer.java b/Mage.Sets/src/mage/sets/morningtide/SeethingPathblazer.java index 22cab03f649..17d554d637c 100644 --- a/Mage.Sets/src/mage/sets/morningtide/SeethingPathblazer.java +++ b/Mage.Sets/src/mage/sets/morningtide/SeethingPathblazer.java @@ -40,8 +40,8 @@ import mage.abilities.effects.common.continious.BoostSourceEffect; import mage.abilities.effects.common.continious.GainAbilitySourceEffect; import mage.abilities.keyword.FirstStrikeAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetControlledCreaturePermanent; /** @@ -53,8 +53,7 @@ public class SeethingPathblazer extends CardImpl { private final static FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Elemental"); static { - filter.getSubtype().add("Elemental"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Elemental")); } public SeethingPathblazer(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/morningtide/SigilTracer.java b/Mage.Sets/src/mage/sets/morningtide/SigilTracer.java index a56c11a7b44..2c04f151ff9 100644 --- a/Mage.Sets/src/mage/sets/morningtide/SigilTracer.java +++ b/Mage.Sets/src/mage/sets/morningtide/SigilTracer.java @@ -42,6 +42,7 @@ import mage.cards.CardImpl; import mage.filter.Filter; import mage.filter.FilterSpell; import mage.filter.common.FilterControlledCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.TargetSpell; import mage.target.common.TargetControlledCreaturePermanent; @@ -56,8 +57,7 @@ public class SigilTracer extends CardImpl { static { filter.setTapped(false); filter.setUseTapped(true); - filter.getSubtype().add("Wizard"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Wizard")); filterInstorSorc.getCardType().add(CardType.INSTANT); filterInstorSorc.getCardType().add(CardType.SORCERY); filterInstorSorc.setScopeCardType(Filter.ComparisonScope.Any); diff --git a/Mage.Sets/src/mage/sets/morningtide/WeirdingShaman.java b/Mage.Sets/src/mage/sets/morningtide/WeirdingShaman.java index 2a70296037e..e48ba4defb8 100644 --- a/Mage.Sets/src/mage/sets/morningtide/WeirdingShaman.java +++ b/Mage.Sets/src/mage/sets/morningtide/WeirdingShaman.java @@ -39,8 +39,8 @@ import mage.abilities.costs.common.SacrificeTargetCost; import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.common.CreateTokenEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.permanent.token.Token; import mage.target.common.TargetControlledPermanent; @@ -53,8 +53,7 @@ public class WeirdingShaman extends CardImpl { private final static FilterControlledPermanent filter = new FilterControlledPermanent("Goblin"); static { - filter.getSubtype().add("Goblin"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Goblin")); } public WeirdingShaman(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/newphyrexia/AuriokSurvivors.java b/Mage.Sets/src/mage/sets/newphyrexia/AuriokSurvivors.java index ab8834bc002..1be8109269c 100644 --- a/Mage.Sets/src/mage/sets/newphyrexia/AuriokSurvivors.java +++ b/Mage.Sets/src/mage/sets/newphyrexia/AuriokSurvivors.java @@ -38,8 +38,8 @@ import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.ReturnFromGraveyardToBattlefieldTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; @@ -53,8 +53,7 @@ public class AuriokSurvivors extends CardImpl { private static final FilterCard filter = new FilterCard("Equipment card from your graveyard"); static { - filter.getSubtype().add("Equipment"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Equipment")); } public AuriokSurvivors(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/newphyrexia/BladeSplicer.java b/Mage.Sets/src/mage/sets/newphyrexia/BladeSplicer.java index ef848ab207e..7e1ccb81d76 100644 --- a/Mage.Sets/src/mage/sets/newphyrexia/BladeSplicer.java +++ b/Mage.Sets/src/mage/sets/newphyrexia/BladeSplicer.java @@ -42,6 +42,7 @@ import mage.abilities.effects.common.continious.GainAbilityControlledEffect; import mage.abilities.keyword.FirstStrikeAbility; import mage.cards.CardImpl; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.permanent.token.GolemToken; /** @@ -53,7 +54,7 @@ public class BladeSplicer extends CardImpl { static { filter.getCardType().add(CardType.CREATURE); - filter.getSubtype().add("Golem"); + filter.add(new SubtypePredicate("Golem")); } public BladeSplicer (UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/newphyrexia/BludgeonBrawl.java b/Mage.Sets/src/mage/sets/newphyrexia/BludgeonBrawl.java index 6eb4cb4fcd0..e66749fe36a 100644 --- a/Mage.Sets/src/mage/sets/newphyrexia/BludgeonBrawl.java +++ b/Mage.Sets/src/mage/sets/newphyrexia/BludgeonBrawl.java @@ -46,6 +46,8 @@ import mage.abilities.effects.common.continious.BoostEquippedEffect; import mage.abilities.keyword.EquipAbility; import mage.cards.CardImpl; import mage.filter.common.FilterArtifactPermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; import mage.game.permanent.Permanent; @@ -111,8 +113,7 @@ class BludgeonBrawlAddSubtypeEffect extends ContinuousEffectImpl affectedPermanents = new ArrayList(); List permanents = game.getBattlefield().getActivePermanents(filter, source.getControllerId(), game); diff --git a/Mage.Sets/src/mage/sets/newphyrexia/Lashwrithe.java b/Mage.Sets/src/mage/sets/newphyrexia/Lashwrithe.java index f7740c39cf0..1349b224a2e 100644 --- a/Mage.Sets/src/mage/sets/newphyrexia/Lashwrithe.java +++ b/Mage.Sets/src/mage/sets/newphyrexia/Lashwrithe.java @@ -41,6 +41,7 @@ import mage.abilities.keyword.EquipAbility; import mage.abilities.keyword.LivingWeaponAbility; import mage.cards.CardImpl; import mage.filter.common.FilterLandPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; /** * @@ -51,7 +52,7 @@ public class Lashwrithe extends CardImpl { private static final FilterLandPermanent filter = new FilterLandPermanent("Swamp you control"); static { - filter.getSubtype().add("Swamp"); + filter.add(new SubtypePredicate("Swamp")); filter.setTargetController(TargetController.YOU); } diff --git a/Mage.Sets/src/mage/sets/newphyrexia/MasterSplicer.java b/Mage.Sets/src/mage/sets/newphyrexia/MasterSplicer.java index 426e1b969e9..b96512b0619 100644 --- a/Mage.Sets/src/mage/sets/newphyrexia/MasterSplicer.java +++ b/Mage.Sets/src/mage/sets/newphyrexia/MasterSplicer.java @@ -39,6 +39,7 @@ import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.continious.BoostControlledEffect; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.permanent.token.GolemToken; /** @@ -50,7 +51,7 @@ public class MasterSplicer extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Golem creatures"); static { - filter.getSubtype().add("Golem"); + filter.add(new SubtypePredicate("Golem")); } public MasterSplicer(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/newphyrexia/MaulSplicer.java b/Mage.Sets/src/mage/sets/newphyrexia/MaulSplicer.java index da713268fed..bce9d591c6b 100644 --- a/Mage.Sets/src/mage/sets/newphyrexia/MaulSplicer.java +++ b/Mage.Sets/src/mage/sets/newphyrexia/MaulSplicer.java @@ -40,6 +40,7 @@ import mage.abilities.effects.common.continious.GainAbilityControlledEffect; import mage.abilities.keyword.TrampleAbility; import mage.cards.CardImpl; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.permanent.token.GolemToken; /** @@ -52,7 +53,7 @@ public class MaulSplicer extends CardImpl { static { filter.getCardType().add(CardType.CREATURE); - filter.getSubtype().add("Golem"); + filter.add(new SubtypePredicate("Golem")); } public MaulSplicer(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/newphyrexia/PuresteelPaladin.java b/Mage.Sets/src/mage/sets/newphyrexia/PuresteelPaladin.java index 7c8fdcdddae..ddaef509ce4 100644 --- a/Mage.Sets/src/mage/sets/newphyrexia/PuresteelPaladin.java +++ b/Mage.Sets/src/mage/sets/newphyrexia/PuresteelPaladin.java @@ -32,6 +32,8 @@ import java.util.UUID; import mage.Constants; import mage.Constants.CardType; +import mage.Constants.Duration; +import mage.Constants.Outcome; import mage.Constants.Rarity; import mage.MageInt; import mage.abilities.TriggeredAbilityImpl; @@ -43,8 +45,8 @@ import mage.abilities.effects.common.DrawCardControllerEffect; import mage.abilities.effects.common.continious.GainAbilityControlledEffect; import mage.abilities.keyword.EquipAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; import mage.game.events.GameEvent; import mage.game.events.ZoneChangeEvent; @@ -57,8 +59,7 @@ public class PuresteelPaladin extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("Equipment"); static { - filter.getSubtype().add("Equipment"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Equipment")); } public PuresteelPaladin(UUID ownerId) { @@ -70,13 +71,10 @@ public class PuresteelPaladin extends CardImpl { this.power = new MageInt(2); this.toughness = new MageInt(2); this.addAbility(new PuresteelPaladinTriggeredAbility()); - this.addAbility(new SimpleStaticAbility(Constants.Zone.BATTLEFIELD, - new ConditionalContinousEffect( - new GainAbilityControlledEffect( - new EquipAbility(Constants.Outcome.AddAbility, new GenericManaCost(0)), - Constants.Duration.WhileOnBattlefield, filter), - MetalcraftCondition.getInstance(), - "Metalcraft - Equipment you control have equip {0} as long as you control three or more artifacts"))); + this.addAbility(new SimpleStaticAbility(Constants.Zone.BATTLEFIELD, new ConditionalContinousEffect( + new GainAbilityControlledEffect(new EquipAbility(Outcome.AddAbility, new GenericManaCost(0)), Duration.WhileOnBattlefield, filter), + MetalcraftCondition.getInstance(), + "Metalcraft - Equipment you control have equip {0} as long as you control three or more artifacts"))); } public PuresteelPaladin(final PuresteelPaladin card) { diff --git a/Mage.Sets/src/mage/sets/newphyrexia/SensorSplicer.java b/Mage.Sets/src/mage/sets/newphyrexia/SensorSplicer.java index 4b86c8ddce1..5490e004fbc 100644 --- a/Mage.Sets/src/mage/sets/newphyrexia/SensorSplicer.java +++ b/Mage.Sets/src/mage/sets/newphyrexia/SensorSplicer.java @@ -40,6 +40,7 @@ import mage.abilities.effects.common.continious.GainAbilityControlledEffect; import mage.abilities.keyword.VigilanceAbility; import mage.cards.CardImpl; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.permanent.token.GolemToken; /** @@ -52,7 +53,7 @@ public class SensorSplicer extends CardImpl { static { filter.getCardType().add(CardType.CREATURE); - filter.getSubtype().add("Golem"); + filter.add(new SubtypePredicate("Golem")); } public SensorSplicer(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/newphyrexia/VitalSplicer.java b/Mage.Sets/src/mage/sets/newphyrexia/VitalSplicer.java index 88ae5d66a1a..13d8dfe38e7 100644 --- a/Mage.Sets/src/mage/sets/newphyrexia/VitalSplicer.java +++ b/Mage.Sets/src/mage/sets/newphyrexia/VitalSplicer.java @@ -41,6 +41,7 @@ import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.RegenerateTargetEffect; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.permanent.token.GolemToken; import mage.target.common.TargetCreaturePermanent; @@ -54,7 +55,7 @@ public class VitalSplicer extends CardImpl { static { filter.getCardType().add(CardType.CREATURE); - filter.getSubtype().add("Golem"); + filter.add(new SubtypePredicate("Golem")); filter.setTargetController(TargetController.YOU); } diff --git a/Mage.Sets/src/mage/sets/newphyrexia/WingSplicer.java b/Mage.Sets/src/mage/sets/newphyrexia/WingSplicer.java index 40831a7916e..3abee59fad1 100644 --- a/Mage.Sets/src/mage/sets/newphyrexia/WingSplicer.java +++ b/Mage.Sets/src/mage/sets/newphyrexia/WingSplicer.java @@ -40,6 +40,7 @@ import mage.abilities.effects.common.continious.GainAbilityControlledEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.permanent.token.GolemToken; /** @@ -52,7 +53,7 @@ public class WingSplicer extends CardImpl { static { filter.getCardType().add(CardType.CREATURE); - filter.getSubtype().add("Golem"); + filter.add(new SubtypePredicate("Golem")); } public WingSplicer(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/onslaught/WirewoodLodge.java b/Mage.Sets/src/mage/sets/onslaught/WirewoodLodge.java index e9a385b6bb0..c36bd9d581b 100644 --- a/Mage.Sets/src/mage/sets/onslaught/WirewoodLodge.java +++ b/Mage.Sets/src/mage/sets/onslaught/WirewoodLodge.java @@ -41,6 +41,7 @@ import mage.abilities.effects.common.UntapTargetEffect; import mage.abilities.mana.GreenManaAbility; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetCreaturePermanent; /** @@ -50,7 +51,7 @@ import mage.target.common.TargetCreaturePermanent; public class WirewoodLodge extends CardImpl { private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("Elf"); static { - filter.getSubtype().add("Elf"); + filter.add(new SubtypePredicate("Elf")); } public WirewoodLodge(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/planechase/CabalCoffers.java b/Mage.Sets/src/mage/sets/planechase/CabalCoffers.java index 3cccedc82f9..2d08a4c9c0d 100644 --- a/Mage.Sets/src/mage/sets/planechase/CabalCoffers.java +++ b/Mage.Sets/src/mage/sets/planechase/CabalCoffers.java @@ -40,6 +40,7 @@ import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.effects.common.DynamicManaEffect; import mage.cards.CardImpl; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; /** * @@ -50,7 +51,7 @@ public class CabalCoffers extends CardImpl { private final static FilterControlledPermanent filter = new FilterControlledPermanent("Swamp you control"); static { - filter.getSubtype().add("Swamp"); + filter.add(new SubtypePredicate("Swamp")); } public CabalCoffers(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/planechase/SilvergladeElemental.java b/Mage.Sets/src/mage/sets/planechase/SilvergladeElemental.java index 09fb8f51280..255de2e5a41 100644 --- a/Mage.Sets/src/mage/sets/planechase/SilvergladeElemental.java +++ b/Mage.Sets/src/mage/sets/planechase/SilvergladeElemental.java @@ -34,8 +34,8 @@ import mage.MageInt; import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.effects.common.search.SearchLibraryPutInPlayEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterLandCard; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetCardInLibrary; /** @@ -47,8 +47,7 @@ public class SilvergladeElemental extends CardImpl { private final static FilterLandCard filter = new FilterLandCard("Forest card"); static { - filter.getSubtype().add("Forest"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Forest")); } public SilvergladeElemental(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/ravnika/DarkHeartOfTheWood.java b/Mage.Sets/src/mage/sets/ravnika/DarkHeartOfTheWood.java index 6daca7d3217..8f256d158c8 100644 --- a/Mage.Sets/src/mage/sets/ravnika/DarkHeartOfTheWood.java +++ b/Mage.Sets/src/mage/sets/ravnika/DarkHeartOfTheWood.java @@ -36,8 +36,8 @@ import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.common.SacrificeTargetCost; import mage.abilities.effects.common.GainLifeEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetControlledPermanent; /** @@ -49,8 +49,7 @@ public class DarkHeartOfTheWood extends CardImpl { private final static FilterControlledPermanent filter = new FilterControlledPermanent("Forest"); static { - filter.getSubtype().add("Forest"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Forest")); } public DarkHeartOfTheWood(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/ravnika/Farseek.java b/Mage.Sets/src/mage/sets/ravnika/Farseek.java index 46efdc8ca28..b0ef57fbc1f 100644 --- a/Mage.Sets/src/mage/sets/ravnika/Farseek.java +++ b/Mage.Sets/src/mage/sets/ravnika/Farseek.java @@ -34,8 +34,9 @@ import mage.Constants.CardType; import mage.Constants.Rarity; import mage.abilities.effects.common.search.SearchLibraryPutInPlayEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterCard; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetCardInLibrary; /** @@ -47,11 +48,11 @@ public class Farseek extends CardImpl { private final static FilterCard filter = new FilterCard("Plains, Island, Swamp, or Mountain card"); static { - filter.getSubtype().add("Plains"); - filter.getSubtype().add("Island"); - filter.getSubtype().add("Swamp"); - filter.getSubtype().add("Mountain"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(Predicates.or( + new SubtypePredicate("Plains"), + new SubtypePredicate("Island"), + new SubtypePredicate("Swamp"), + new SubtypePredicate("Mountain"))); } public Farseek(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/riseoftheeldrazi/AuraGnarlid.java b/Mage.Sets/src/mage/sets/riseoftheeldrazi/AuraGnarlid.java index 4ec695438f7..07440dc801a 100644 --- a/Mage.Sets/src/mage/sets/riseoftheeldrazi/AuraGnarlid.java +++ b/Mage.Sets/src/mage/sets/riseoftheeldrazi/AuraGnarlid.java @@ -39,6 +39,7 @@ import mage.abilities.effects.common.continious.BoostSourceEffect; import mage.abilities.effects.common.continious.CantBeBlockedByCreaturesWithLessPowerEffect; import mage.cards.CardImpl; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; /** * @@ -49,7 +50,7 @@ public class AuraGnarlid extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("Aura on the battlefield"); static { - filter.getSubtype().add("Aura"); + filter.add(new SubtypePredicate("Aura")); } public AuraGnarlid(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/riseoftheeldrazi/BroodBirthing.java b/Mage.Sets/src/mage/sets/riseoftheeldrazi/BroodBirthing.java index 7ece7867d76..9caf8050c03 100644 --- a/Mage.Sets/src/mage/sets/riseoftheeldrazi/BroodBirthing.java +++ b/Mage.Sets/src/mage/sets/riseoftheeldrazi/BroodBirthing.java @@ -34,8 +34,8 @@ import mage.Constants.Rarity; import mage.abilities.Ability; import mage.abilities.effects.OneShotEffect; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.common.FilterControlledCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; import mage.game.permanent.token.EldraziSpawnToken; @@ -83,9 +83,8 @@ class BroodBirthingEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Eldrazi Spawn"); - filter.getSubtype().add("Eldrazi"); - filter.getSubtype().add("Spawn"); - filter.setScopeSubtype(ComparisonScope.All); + filter.add(new SubtypePredicate("Eldrazi")); + filter.add(new SubtypePredicate("Spawn")); EldraziSpawnToken token = new EldraziSpawnToken(); int count = game.getBattlefield().countAll(filter, source.getControllerId(), game) > 0 ? 3 : 1; diff --git a/Mage.Sets/src/mage/sets/riseoftheeldrazi/Broodwarden.java b/Mage.Sets/src/mage/sets/riseoftheeldrazi/Broodwarden.java index e0d21851e0d..fa96ecd52f0 100644 --- a/Mage.Sets/src/mage/sets/riseoftheeldrazi/Broodwarden.java +++ b/Mage.Sets/src/mage/sets/riseoftheeldrazi/Broodwarden.java @@ -36,8 +36,8 @@ import mage.MageInt; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.common.continious.BoostControlledEffect; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; /** * @@ -48,9 +48,8 @@ public class Broodwarden extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Eldrazi Spawn creatures you control"); static { - filter.getSubtype().add("Eldrazi"); - filter.getSubtype().add("Spawn"); - filter.setScopeSubtype(ComparisonScope.All); + filter.add(new SubtypePredicate("Eldrazi")); + filter.add(new SubtypePredicate("Spawn")); } public Broodwarden(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/riseoftheeldrazi/CoralhelmCommander.java b/Mage.Sets/src/mage/sets/riseoftheeldrazi/CoralhelmCommander.java index 32f1dc8dc25..1742e1911be 100644 --- a/Mage.Sets/src/mage/sets/riseoftheeldrazi/CoralhelmCommander.java +++ b/Mage.Sets/src/mage/sets/riseoftheeldrazi/CoralhelmCommander.java @@ -43,6 +43,7 @@ import mage.abilities.keyword.LevelUpAbility; import mage.abilities.keyword.LevelerCardBuilder; import mage.cards.LevelerCard; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import java.util.UUID; @@ -55,7 +56,7 @@ public class CoralhelmCommander extends LevelerCard { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Merfolk creatures"); static { - filter.getSubtype().add("Merfolk"); + filter.add(new SubtypePredicate("Merfolk")); } public CoralhelmCommander(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/riseoftheeldrazi/JoragaTreespeaker.java b/Mage.Sets/src/mage/sets/riseoftheeldrazi/JoragaTreespeaker.java index fe16dc77f79..06e28c9faae 100644 --- a/Mage.Sets/src/mage/sets/riseoftheeldrazi/JoragaTreespeaker.java +++ b/Mage.Sets/src/mage/sets/riseoftheeldrazi/JoragaTreespeaker.java @@ -48,6 +48,7 @@ import mage.abilities.keyword.LevelerCardBuilder; import mage.abilities.mana.SimpleManaAbility; import mage.cards.LevelerCard; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import java.util.UUID; @@ -60,7 +61,7 @@ public class JoragaTreespeaker extends LevelerCard { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Elves"); static { - filter.getSubtype().add("Elf"); + filter.add(new SubtypePredicate("Elf")); } public JoragaTreespeaker(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/riseoftheeldrazi/KorSpiritdancer.java b/Mage.Sets/src/mage/sets/riseoftheeldrazi/KorSpiritdancer.java index 626aedb022e..4202e7c7968 100644 --- a/Mage.Sets/src/mage/sets/riseoftheeldrazi/KorSpiritdancer.java +++ b/Mage.Sets/src/mage/sets/riseoftheeldrazi/KorSpiritdancer.java @@ -40,6 +40,7 @@ import mage.abilities.effects.common.DrawCardControllerEffect; import mage.abilities.effects.common.continious.BoostSourceEffect; import mage.cards.CardImpl; import mage.filter.FilterSpell; +import mage.filter.predicate.mageobject.SubtypePredicate; /** * @@ -50,7 +51,7 @@ public class KorSpiritdancer extends CardImpl { private static final FilterSpell filter = new FilterSpell("an Aura spell"); static { - filter.getSubtype().add("Aura"); + filter.add(new SubtypePredicate("Aura")); } public KorSpiritdancer(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/riseoftheeldrazi/SarkhanTheMad.java b/Mage.Sets/src/mage/sets/riseoftheeldrazi/SarkhanTheMad.java index 180e881b6c6..0403b26e86c 100644 --- a/Mage.Sets/src/mage/sets/riseoftheeldrazi/SarkhanTheMad.java +++ b/Mage.Sets/src/mage/sets/riseoftheeldrazi/SarkhanTheMad.java @@ -45,6 +45,7 @@ import mage.cards.Cards; import mage.cards.CardsImpl; import mage.counters.CounterType; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.game.permanent.token.Token; @@ -166,7 +167,7 @@ class SarkhanTheMadDragonDamageEffect extends OneShotEffect { static { filter.getCardType().add(CardType.INSTANT); filter.getCardType().add(CardType.SORCERY); - filter.setScopeSubtype(Filter.ComparisonScope.Any); } public SurrakarSpellblade(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/riseoftheeldrazi/SurrealMemoir.java b/Mage.Sets/src/mage/sets/riseoftheeldrazi/SurrealMemoir.java index 3a57f24dd7e..f8c67c577e1 100644 --- a/Mage.Sets/src/mage/sets/riseoftheeldrazi/SurrealMemoir.java +++ b/Mage.Sets/src/mage/sets/riseoftheeldrazi/SurrealMemoir.java @@ -38,7 +38,6 @@ import mage.abilities.effects.OneShotEffect; import mage.abilities.keyword.ReboundAbility; import mage.cards.Card; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.FilterCard; import mage.game.Game; import mage.players.Player; @@ -92,7 +91,6 @@ class SurrealMemoirEffect extends OneShotEffect { if (player != null) { FilterCard filter = new FilterCard("instant card"); filter.getCardType().add(CardType.INSTANT); - filter.setScopeSubtype(ComparisonScope.Any); Card[] cards = player.getGraveyard().getCards(filter, game).toArray(new Card[0]); if (cards.length > 0) { Random rnd = new Random(); diff --git a/Mage.Sets/src/mage/sets/saviorsofkamigawa/IizukaTheRuthless.java b/Mage.Sets/src/mage/sets/saviorsofkamigawa/IizukaTheRuthless.java index 4714fff0e0d..12b47ed6f07 100644 --- a/Mage.Sets/src/mage/sets/saviorsofkamigawa/IizukaTheRuthless.java +++ b/Mage.Sets/src/mage/sets/saviorsofkamigawa/IizukaTheRuthless.java @@ -41,8 +41,8 @@ import mage.abilities.effects.common.continious.GainAbilityControlledEffect; import mage.abilities.keyword.BushidoAbility; import mage.abilities.keyword.DoubleStrikeAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetControlledCreaturePermanent; /** @@ -54,8 +54,7 @@ public class IizukaTheRuthless extends CardImpl { private final static FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Samurai"); static { - filter.getSubtype().add("Samurai"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Samurai")); } public IizukaTheRuthless(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/saviorsofkamigawa/KashiTribeElite.java b/Mage.Sets/src/mage/sets/saviorsofkamigawa/KashiTribeElite.java index db31a3a8e64..efd1fc5402f 100644 --- a/Mage.Sets/src/mage/sets/saviorsofkamigawa/KashiTribeElite.java +++ b/Mage.Sets/src/mage/sets/saviorsofkamigawa/KashiTribeElite.java @@ -40,8 +40,8 @@ import mage.abilities.effects.common.TapTargetEffect; import mage.abilities.effects.common.continious.GainAbilityControlledEffect; import mage.abilities.keyword.ShroudAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.filter.predicate.mageobject.SupertypePredicate; /** @@ -54,8 +54,7 @@ public class KashiTribeElite extends CardImpl { static { filter.add(new SupertypePredicate("Legendary")); - filter.getSubtype().add("Snake"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Snake")); } public KashiTribeElite(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/saviorsofkamigawa/ManrikiGusari.java b/Mage.Sets/src/mage/sets/saviorsofkamigawa/ManrikiGusari.java index 7daeb47c65a..500aeff7f55 100644 --- a/Mage.Sets/src/mage/sets/saviorsofkamigawa/ManrikiGusari.java +++ b/Mage.Sets/src/mage/sets/saviorsofkamigawa/ManrikiGusari.java @@ -42,8 +42,8 @@ import mage.abilities.effects.common.continious.BoostEquippedEffect; import mage.abilities.effects.common.continious.GainAbilityAttachedEffect; import mage.abilities.keyword.EquipAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.TargetPermanent; /** @@ -55,8 +55,7 @@ public class ManrikiGusari extends CardImpl { private final static FilterPermanent filter = new FilterPermanent("Equipment"); static { - filter.getSubtype().add("Equipment"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Equipment")); } public ManrikiGusari(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/AcidWebSpider.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/AcidWebSpider.java index 2ec9e8caf3e..2aeb1b40a56 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/AcidWebSpider.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/AcidWebSpider.java @@ -37,8 +37,8 @@ import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.effects.common.DestroyTargetEffect; import mage.abilities.keyword.ReachAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.TargetPermanent; /** @@ -46,11 +46,10 @@ import mage.target.TargetPermanent; * @author Loki */ public class AcidWebSpider extends CardImpl { - private static FilterPermanent filter = new FilterPermanent("Equipment"); + private static final FilterPermanent filter = new FilterPermanent("Equipment"); static { - filter.getSubtype().add("Equipment"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Equipment")); } public AcidWebSpider (UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/BlackcleaveCliffs.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/BlackcleaveCliffs.java index be18ff0f2ff..afc26d507b4 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/BlackcleaveCliffs.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/BlackcleaveCliffs.java @@ -40,7 +40,6 @@ import mage.abilities.effects.common.TapSourceEffect; import mage.abilities.mana.BlackManaAbility; import mage.abilities.mana.RedManaAbility; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.common.FilterLandPermanent; /** @@ -51,17 +50,12 @@ public class BlackcleaveCliffs extends CardImpl { private static final FilterLandPermanent filter = new FilterLandPermanent(); - static { - filter.setScopeSubtype(ComparisonScope.Any); - filter.setMessage("lands"); - } - public BlackcleaveCliffs (UUID ownerId) { super(ownerId, 224, "Blackcleave Cliffs", Rarity.RARE, new CardType[]{CardType.LAND}, null); this.expansionSetCode = "SOM"; Condition controls = new UnlessCondition(new ControlsPermanentCondition(filter, ControlsPermanentCondition.CountType.FEWER_THAN, 4)); - String abilityText = "tap it unless you control fewer than 3 " + filter.getMessage(); + String abilityText = "tap it unless you control fewer than 3 lands"; this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(new TapSourceEffect(), controls, abilityText), abilityText)); this.addAbility(new BlackManaAbility()); this.addAbility(new RedManaAbility()); diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/CopperlineGorge.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/CopperlineGorge.java index 1d35b8d77a9..db070610f75 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/CopperlineGorge.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/CopperlineGorge.java @@ -40,7 +40,6 @@ import mage.abilities.effects.common.TapSourceEffect; import mage.abilities.mana.GreenManaAbility; import mage.abilities.mana.RedManaAbility; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.common.FilterLandPermanent; /** @@ -51,17 +50,12 @@ public class CopperlineGorge extends CardImpl { private static FilterLandPermanent filter = new FilterLandPermanent(); - static { - filter.setScopeSubtype(ComparisonScope.Any); - filter.setMessage("lands"); - } - public CopperlineGorge (UUID ownerId) { super(ownerId, 225, "Copperline Gorge", Rarity.RARE, new CardType[]{CardType.LAND}, null); this.expansionSetCode = "SOM"; Condition controls = new UnlessCondition(new ControlsPermanentCondition(filter, ControlsPermanentCondition.CountType.FEWER_THAN, 4)); - String abilityText = "tap it unless you control fewer than 3 " + filter.getMessage(); + String abilityText = "tap it unless you control fewer than 3 lands"; this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(new TapSourceEffect(), controls, abilityText), abilityText)); this.addAbility(new RedManaAbility()); this.addAbility(new GreenManaAbility()); diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/DarkslickShores.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/DarkslickShores.java index 478c7a8d9b5..20df23f42e1 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/DarkslickShores.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/DarkslickShores.java @@ -40,7 +40,6 @@ import mage.abilities.effects.common.TapSourceEffect; import mage.abilities.mana.BlackManaAbility; import mage.abilities.mana.BlueManaAbility; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.common.FilterLandPermanent; /** @@ -51,17 +50,12 @@ public class DarkslickShores extends CardImpl { private static FilterLandPermanent filter = new FilterLandPermanent(); - static { - filter.setScopeSubtype(ComparisonScope.Any); - filter.setMessage("lands"); - } - public DarkslickShores (UUID ownerId) { super(ownerId, 226, "Darkslick Shores", Rarity.RARE, new CardType[]{CardType.LAND}, null); this.expansionSetCode = "SOM"; Condition controls = new UnlessCondition(new ControlsPermanentCondition(filter, ControlsPermanentCondition.CountType.FEWER_THAN, 4)); - String abilityText = "tap it unless you control fewer than 3 " + filter.getMessage(); + String abilityText = "tap it unless you control fewer than 3 lands"; this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(new TapSourceEffect(), controls, abilityText), abilityText)); this.addAbility(new BlueManaAbility()); this.addAbility(new BlackManaAbility()); diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/EzuriRenegadeLeader.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/EzuriRenegadeLeader.java index 7f7b893775d..e5b96466ecc 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/EzuriRenegadeLeader.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/EzuriRenegadeLeader.java @@ -45,6 +45,7 @@ import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.NamePredicate; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetControlledCreaturePermanent; /** @@ -53,14 +54,13 @@ import mage.target.common.TargetControlledCreaturePermanent; */ public class EzuriRenegadeLeader extends CardImpl { - private static final FilterCreaturePermanent elfFilter = new FilterCreaturePermanent(); + private static final FilterCreaturePermanent elfFilter = new FilterCreaturePermanent("Elf creatures"); private static final FilterControlledCreaturePermanent notEzuri = new FilterControlledCreaturePermanent(); static { - elfFilter.getSubtype().add("Elf"); - elfFilter.setMessage("Elf creatures"); + elfFilter.add(new SubtypePredicate("Elf")); - notEzuri.getSubtype().add("Elf"); + notEzuri.add(new SubtypePredicate("Elf")); notEzuri.add(Predicates.not(new NamePredicate("Ezuri, Renegade Leader"))); } @@ -82,8 +82,8 @@ public class EzuriRenegadeLeader extends CardImpl { this.addAbility(ezuriRegen); Ability ezuriBoost = new SimpleActivatedAbility(Zone.BATTLEFIELD, - new BoostControlledEffect(3, 3, Duration.EndOfTurn, elfFilter, false), - new ManaCostsImpl("{2}{G}{G}{G}")); + new BoostControlledEffect(3, 3, Duration.EndOfTurn, elfFilter, false), + new ManaCostsImpl("{2}{G}{G}{G}")); ezuriBoost.addEffect(new GainAbilityControlledEffect(TrampleAbility.getInstance(), Duration.EndOfTurn, elfFilter)); this.addAbility(ezuriBoost); } diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/Glimmerpost.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/Glimmerpost.java index 77958b78b09..e273892a1b9 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/Glimmerpost.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/Glimmerpost.java @@ -38,8 +38,8 @@ import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.effects.OneShotEffect; import mage.abilities.mana.ColorlessManaAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; import mage.players.Player; @@ -69,11 +69,10 @@ public class Glimmerpost extends CardImpl { } class GlimmerpostEffect extends OneShotEffect { - private static FilterPermanent filter = new FilterPermanent(); + private static final FilterPermanent filter = new FilterPermanent(); static { - filter.getSubtype().add("Locus"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Locus")); } public GlimmerpostEffect() { diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/KothOfTheHammer.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/KothOfTheHammer.java index 7ed188c138c..7481e0364f0 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/KothOfTheHammer.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/KothOfTheHammer.java @@ -52,6 +52,7 @@ import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.cards.CardImpl; import mage.counters.CounterType; import mage.filter.common.FilterLandPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.game.permanent.token.Token; @@ -67,9 +68,9 @@ public class KothOfTheHammer extends CardImpl { private static final FilterLandPermanent filterCount = new FilterLandPermanent("Mountain you control"); static { - filter.getSubtype().add("Mountain"); + filter.add(new SubtypePredicate("Mountain")); filter.setTargetController(Constants.TargetController.YOU); - filterCount.getSubtype().add("Mountain"); + filterCount.add(new SubtypePredicate("Mountain")); filterCount.setTargetController(Constants.TargetController.YOU); } diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/MyrBattlesphere.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/MyrBattlesphere.java index 9caf986191e..eb5161d6ecd 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/MyrBattlesphere.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/MyrBattlesphere.java @@ -46,6 +46,7 @@ import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.continious.BoostSourceEffect; import mage.cards.CardImpl; import mage.filter.common.FilterControlledCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; import mage.game.events.GameEvent; import mage.game.events.GameEvent.EventType; @@ -87,7 +88,7 @@ class MyrBattlesphereAbility extends TriggeredAbilityImpl { - static FilterCreaturePermanent filter = new FilterCreaturePermanent(); + static final FilterCreaturePermanent filter = new FilterCreaturePermanent(); static { - filter.getSubtype().add("Myr"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Myr")); } public MyrGalvanizer (UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/MyrReservoir.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/MyrReservoir.java index 89f9bb81670..2555a0cd49f 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/MyrReservoir.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/MyrReservoir.java @@ -43,6 +43,7 @@ import mage.abilities.effects.common.ReturnToHandTargetEffect; import mage.abilities.mana.BasicManaAbility; import mage.cards.CardImpl; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; import mage.target.common.TargetCardInYourGraveyard; @@ -56,7 +57,7 @@ public class MyrReservoir extends CardImpl { private static final FilterCard myrCardFilter = new FilterCard("Myr card from your graveyard"); static { - myrCardFilter.getSubtype().add("Myr"); + myrCardFilter.add(new SubtypePredicate("Myr")); } public MyrReservoir(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/PrecursorGolem.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/PrecursorGolem.java index 71babb75346..bb1756fee7e 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/PrecursorGolem.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/PrecursorGolem.java @@ -42,6 +42,7 @@ import mage.cards.CardImpl; import mage.filter.Filter; import mage.filter.FilterPermanent; import mage.filter.FilterSpell; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; import mage.game.events.GameEvent; import mage.game.permanent.Permanent; @@ -83,7 +84,7 @@ public class PrecursorGolem extends CardImpl { class PrecursorGolemCopyTriggeredAbility extends TriggeredAbilityImpl { - private static FilterSpell filter = new FilterSpell(); + private static final FilterSpell filter = new FilterSpell(); static { filter.getCardType().add(CardType.INSTANT); @@ -153,11 +154,10 @@ class PrecursorGolemCopyTriggeredAbility extends TriggeredAbilityImpl { - private static FilterPermanent filterGolem = new FilterPermanent(); + private static final FilterPermanent filterGolem = new FilterPermanent(); static { - filterGolem.getSubtype().add("Golem"); - filterGolem.setScopeSubtype(Filter.ComparisonScope.Any); + filterGolem.add(new SubtypePredicate("Golem")); } public PrecursorGolemCopySpellEffect() { diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/RazorvergeThicket.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/RazorvergeThicket.java index 9f3aa217df5..33094a17bb1 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/RazorvergeThicket.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/RazorvergeThicket.java @@ -40,7 +40,6 @@ import mage.abilities.effects.common.TapSourceEffect; import mage.abilities.mana.GreenManaAbility; import mage.abilities.mana.WhiteManaAbility; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.common.FilterLandPermanent; /** @@ -51,17 +50,12 @@ public class RazorvergeThicket extends CardImpl { private static FilterLandPermanent filter = new FilterLandPermanent(); - static { - filter.setScopeSubtype(ComparisonScope.Any); - filter.setMessage("lands"); - } - public RazorvergeThicket (UUID ownerId) { super(ownerId, 228, "Razorverge Thicket", Rarity.RARE, new CardType[]{CardType.LAND}, null); this.expansionSetCode = "SOM"; Condition controls = new UnlessCondition(new ControlsPermanentCondition(filter, ControlsPermanentCondition.CountType.FEWER_THAN, 4)); - String abilityText = "tap it unless you control fewer than 3 " + filter.getMessage(); + String abilityText = "tap it unless you control fewer than 3 lands"; this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(new TapSourceEffect(), controls, abilityText), abilityText)); this.addAbility(new GreenManaAbility()); this.addAbility(new WhiteManaAbility()); diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/SeachromeCoast.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/SeachromeCoast.java index 42cb6f4c771..acfb25e03d6 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/SeachromeCoast.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/SeachromeCoast.java @@ -40,7 +40,6 @@ import mage.abilities.effects.common.TapSourceEffect; import mage.abilities.mana.BlueManaAbility; import mage.abilities.mana.WhiteManaAbility; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.common.FilterLandPermanent; /** @@ -51,17 +50,12 @@ public class SeachromeCoast extends CardImpl { private static FilterLandPermanent filter = new FilterLandPermanent(); - static { - filter.setScopeSubtype(ComparisonScope.Any); - filter.setMessage("lands"); - } - public SeachromeCoast (UUID ownerId) { super(ownerId, 229, "Seachrome Coast", Rarity.RARE, new CardType[]{CardType.LAND}, null); this.expansionSetCode = "SOM"; Condition controls = new UnlessCondition(new ControlsPermanentCondition(filter, ControlsPermanentCondition.CountType.FEWER_THAN, 4)); - String abilityText = "tap it unless you control fewer than 3 " + filter.getMessage(); + String abilityText = "tap it unless you control fewer than 3 lands"; this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(new TapSourceEffect(), controls, abilityText), abilityText)); this.addAbility(new WhiteManaAbility()); this.addAbility(new BlueManaAbility()); diff --git a/Mage.Sets/src/mage/sets/shadowmoor/FlowOfIdeas.java b/Mage.Sets/src/mage/sets/shadowmoor/FlowOfIdeas.java index 9274c116f2e..2367cce4be4 100644 --- a/Mage.Sets/src/mage/sets/shadowmoor/FlowOfIdeas.java +++ b/Mage.Sets/src/mage/sets/shadowmoor/FlowOfIdeas.java @@ -34,6 +34,7 @@ import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.effects.common.DrawCardControllerEffect; import mage.cards.CardImpl; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; /** * @@ -44,7 +45,7 @@ public class FlowOfIdeas extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("Island you control"); static { - filter.getSubtype().add("Island"); + filter.add(new SubtypePredicate("Island")); } public FlowOfIdeas(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/shadowmoor/LeechriddenSwamp.java b/Mage.Sets/src/mage/sets/shadowmoor/LeechriddenSwamp.java index 28a61608ccf..92cf92d346c 100644 --- a/Mage.Sets/src/mage/sets/shadowmoor/LeechriddenSwamp.java +++ b/Mage.Sets/src/mage/sets/shadowmoor/LeechriddenSwamp.java @@ -28,26 +28,25 @@ package mage.sets.shadowmoor; import java.util.UUID; -import mage.Constants.CardType; -import mage.Constants.Rarity; -import mage.cards.CardImpl; -import mage.abilities.mana.SimpleManaAbility; -import mage.abilities.costs.common.TapSourceCost; -import mage.abilities.effects.common.BasicManaEffect; -import mage.Mana; import mage.Constants; +import mage.Constants.CardType; +import mage.Constants.Outcome; +import mage.Constants.Rarity; +import mage.Mana; import mage.abilities.Ability; import mage.abilities.common.EntersBattlefieldTappedAbility; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.CostImpl; +import mage.abilities.costs.common.TapSourceCost; import mage.abilities.costs.mana.ManaCostsImpl; -import mage.filter.Filter; +import mage.abilities.effects.OneShotEffect; +import mage.abilities.effects.common.BasicManaEffect; +import mage.abilities.mana.SimpleManaAbility; +import mage.cards.CardImpl; import mage.filter.common.FilterControlledPermanent; import mage.game.Game; -import mage.abilities.effects.OneShotEffect; import mage.players.Player; import mage.players.Players; -import mage.Constants.Outcome; /** * @@ -89,7 +88,6 @@ class ControlTwoOrMoreBlackPermanentsCost extends CostImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Scarecrow creatures"); static { - filter.getSubtype().add("Scarecrow"); + filter.add(new SubtypePredicate("Scarecrow")); } public ReaperKing(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/shadowmoor/SafewrightQuest.java b/Mage.Sets/src/mage/sets/shadowmoor/SafewrightQuest.java index 96b755d702b..d1092053c68 100644 --- a/Mage.Sets/src/mage/sets/shadowmoor/SafewrightQuest.java +++ b/Mage.Sets/src/mage/sets/shadowmoor/SafewrightQuest.java @@ -32,8 +32,9 @@ import mage.Constants.CardType; import mage.Constants.Rarity; import mage.abilities.effects.common.search.SearchLibraryRevealPutInHandEffect; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.FilterCard; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetCardInLibrary; /** @@ -45,9 +46,7 @@ public class SafewrightQuest extends CardImpl { private static final FilterCard filter = new FilterCard("Forest or Plains card"); static { - filter.getSubtype().add("Forest"); - filter.getSubtype().add("Plains"); - filter.setScopeSubtype(ComparisonScope.Any); + filter.add(Predicates.or(new SubtypePredicate("Forest"), new SubtypePredicate("Plains"))); } public SafewrightQuest(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/shardsofalara/BantPanorama.java b/Mage.Sets/src/mage/sets/shardsofalara/BantPanorama.java index fd05a5c92ec..54ac1989f3e 100644 --- a/Mage.Sets/src/mage/sets/shardsofalara/BantPanorama.java +++ b/Mage.Sets/src/mage/sets/shardsofalara/BantPanorama.java @@ -40,8 +40,9 @@ import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.effects.common.search.SearchLibraryPutInPlayEffect; import mage.abilities.mana.ColorlessManaAbility; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.FilterCard; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.filter.predicate.mageobject.SupertypePredicate; import mage.target.common.TargetCardInLibrary; @@ -56,10 +57,10 @@ public class BantPanorama extends CardImpl { static { filter.getCardType().add(CardType.LAND); filter.add(new SupertypePredicate("Basic")); - filter.getSubtype().add("Forest"); - filter.getSubtype().add("Plains"); - filter.getSubtype().add("Island"); - filter.setScopeSubtype(ComparisonScope.Any); + filter.add(Predicates.or( + new SubtypePredicate("Forest"), + new SubtypePredicate("Plains"), + new SubtypePredicate("Island"))); } public BantPanorama(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/shardsofalara/DeathBaron.java b/Mage.Sets/src/mage/sets/shardsofalara/DeathBaron.java index 05524e4a0ab..b2c931da7f8 100644 --- a/Mage.Sets/src/mage/sets/shardsofalara/DeathBaron.java +++ b/Mage.Sets/src/mage/sets/shardsofalara/DeathBaron.java @@ -39,8 +39,8 @@ import mage.abilities.effects.common.continious.BoostControlledEffect; import mage.abilities.effects.common.continious.GainAbilityControlledEffect; import mage.abilities.keyword.DeathtouchAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; /** * @@ -52,10 +52,8 @@ public class DeathBaron extends CardImpl { private final static FilterCreaturePermanent filterZombie = new FilterCreaturePermanent("Zombie creatures"); static { - filterSkeletons.getSubtype().add("Skeleton"); - filterSkeletons.setScopeSubtype(Filter.ComparisonScope.Any); - filterZombie.getSubtype().add("Zombie"); - filterZombie.setScopeSubtype(Filter.ComparisonScope.Any); + filterSkeletons.add(new SubtypePredicate("Skeleton")); + filterZombie.add(new SubtypePredicate("Zombie")); } public DeathBaron(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/shardsofalara/EsperPanorama.java b/Mage.Sets/src/mage/sets/shardsofalara/EsperPanorama.java index 6a5e55cb789..0503cb4c44e 100644 --- a/Mage.Sets/src/mage/sets/shardsofalara/EsperPanorama.java +++ b/Mage.Sets/src/mage/sets/shardsofalara/EsperPanorama.java @@ -40,8 +40,9 @@ import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.effects.common.search.SearchLibraryPutInPlayEffect; import mage.abilities.mana.ColorlessManaAbility; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.FilterCard; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.filter.predicate.mageobject.SupertypePredicate; import mage.target.common.TargetCardInLibrary; @@ -56,10 +57,10 @@ public class EsperPanorama extends CardImpl { static { filter.getCardType().add(CardType.LAND); filter.add(new SupertypePredicate("Basic")); - filter.getSubtype().add("Plains"); - filter.getSubtype().add("Island"); - filter.getSubtype().add("Swamp"); - filter.setScopeSubtype(ComparisonScope.Any); + filter.add(Predicates.or( + new SubtypePredicate("Plains"), + new SubtypePredicate("Island"), + new SubtypePredicate("Swamp"))); } public EsperPanorama(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/shardsofalara/GrixisPanorama.java b/Mage.Sets/src/mage/sets/shardsofalara/GrixisPanorama.java index 918869453af..03209714448 100644 --- a/Mage.Sets/src/mage/sets/shardsofalara/GrixisPanorama.java +++ b/Mage.Sets/src/mage/sets/shardsofalara/GrixisPanorama.java @@ -40,8 +40,9 @@ import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.effects.common.search.SearchLibraryPutInPlayEffect; import mage.abilities.mana.ColorlessManaAbility; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.FilterCard; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.filter.predicate.mageobject.SupertypePredicate; import mage.target.common.TargetCardInLibrary; @@ -56,10 +57,10 @@ public class GrixisPanorama extends CardImpl { static { filter.getCardType().add(CardType.LAND); filter.add(new SupertypePredicate("Basic")); - filter.getSubtype().add("Island"); - filter.getSubtype().add("Swamp"); - filter.getSubtype().add("Mountain"); - filter.setScopeSubtype(ComparisonScope.Any); + filter.add(Predicates.or( + new SubtypePredicate("Island"), + new SubtypePredicate("Swamp"), + new SubtypePredicate("Mountain"))); } public GrixisPanorama(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/shardsofalara/JundPanorama.java b/Mage.Sets/src/mage/sets/shardsofalara/JundPanorama.java index 2f705be1fa6..8bd1f54365f 100644 --- a/Mage.Sets/src/mage/sets/shardsofalara/JundPanorama.java +++ b/Mage.Sets/src/mage/sets/shardsofalara/JundPanorama.java @@ -41,8 +41,9 @@ import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.effects.common.search.SearchLibraryPutInPlayEffect; import mage.abilities.mana.ColorlessManaAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterCard; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.filter.predicate.mageobject.SupertypePredicate; import mage.target.common.TargetCardInLibrary; @@ -57,10 +58,10 @@ public class JundPanorama extends CardImpl { static { filter.getCardType().add(CardType.LAND); filter.add(new SupertypePredicate("Basic")); - filter.getSubtype().add("Swamp"); - filter.getSubtype().add("Mountain"); - filter.getSubtype().add("Forest"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(Predicates.or( + new SubtypePredicate("Swamp"), + new SubtypePredicate("Mountain"), + new SubtypePredicate("Forest"))); } public JundPanorama(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/shardsofalara/KnightCaptainOfEos.java b/Mage.Sets/src/mage/sets/shardsofalara/KnightCaptainOfEos.java index e5f69df79cc..3192c4b68c7 100644 --- a/Mage.Sets/src/mage/sets/shardsofalara/KnightCaptainOfEos.java +++ b/Mage.Sets/src/mage/sets/shardsofalara/KnightCaptainOfEos.java @@ -41,6 +41,7 @@ import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.PreventAllDamageEffect; import mage.cards.CardImpl; import mage.filter.common.FilterControlledCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.permanent.token.SoldierToken; import mage.target.common.TargetControlledCreaturePermanent; @@ -53,7 +54,7 @@ public class KnightCaptainOfEos extends CardImpl { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("a Soldier"); static { - filter.getSubtype().add("Soldier"); + filter.add(new SubtypePredicate("Soldier")); } public KnightCaptainOfEos(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/shardsofalara/NayaPanorama.java b/Mage.Sets/src/mage/sets/shardsofalara/NayaPanorama.java index 265ff508e26..841592f2281 100644 --- a/Mage.Sets/src/mage/sets/shardsofalara/NayaPanorama.java +++ b/Mage.Sets/src/mage/sets/shardsofalara/NayaPanorama.java @@ -40,8 +40,9 @@ import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.effects.common.search.SearchLibraryPutInPlayEffect; import mage.abilities.mana.ColorlessManaAbility; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.FilterCard; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.filter.predicate.mageobject.SupertypePredicate; import mage.target.common.TargetCardInLibrary; @@ -56,10 +57,10 @@ public class NayaPanorama extends CardImpl { static { filter.getCardType().add(CardType.LAND); filter.add(new SupertypePredicate("Basic")); - filter.getSubtype().add("Mountain"); - filter.getSubtype().add("Forest"); - filter.getSubtype().add("Plains"); - filter.setScopeSubtype(ComparisonScope.Any); + filter.add(Predicates.or( + new SubtypePredicate("Mountain"), + new SubtypePredicate("Forest"), + new SubtypePredicate("Plains"))); } public NayaPanorama(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/shardsofalara/WildNacatl.java b/Mage.Sets/src/mage/sets/shardsofalara/WildNacatl.java index 84c1483b6f4..0fa14b9dd41 100644 --- a/Mage.Sets/src/mage/sets/shardsofalara/WildNacatl.java +++ b/Mage.Sets/src/mage/sets/shardsofalara/WildNacatl.java @@ -36,8 +36,8 @@ import mage.MageInt; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.common.continious.BoostSourceWhileControlsEffect; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; /** * @@ -49,10 +49,8 @@ public class WildNacatl extends CardImpl { private static final FilterPermanent filter2 = new FilterPermanent("Plains"); static { - filter1.getSubtype().add("Mountain"); - filter1.setScopeSubtype(ComparisonScope.Any); - filter2.getSubtype().add("Plains"); - filter2.setScopeSubtype(ComparisonScope.Any); + filter1.add(new SubtypePredicate("Mountain")); + filter2.add(new SubtypePredicate("Plains")); } public WildNacatl(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/tempest/ArmorSliver.java b/Mage.Sets/src/mage/sets/tempest/ArmorSliver.java index 8adabe14c34..a07c834af03 100644 --- a/Mage.Sets/src/mage/sets/tempest/ArmorSliver.java +++ b/Mage.Sets/src/mage/sets/tempest/ArmorSliver.java @@ -39,8 +39,8 @@ import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.effects.common.continious.BoostSourceEffect; import mage.abilities.effects.common.continious.GainAbilityAllEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; /** * @@ -51,8 +51,7 @@ public class ArmorSliver extends CardImpl { private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("Sliver creatures"); static { - filter.getSubtype().add("Sliver"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Sliver")); } public ArmorSliver(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/tempest/BarbedSliver.java b/Mage.Sets/src/mage/sets/tempest/BarbedSliver.java index 15b90aa62bf..deb270cb199 100644 --- a/Mage.Sets/src/mage/sets/tempest/BarbedSliver.java +++ b/Mage.Sets/src/mage/sets/tempest/BarbedSliver.java @@ -39,8 +39,8 @@ import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.effects.common.continious.BoostSourceEffect; import mage.abilities.effects.common.continious.GainAbilityAllEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; /** * @@ -51,8 +51,7 @@ public class BarbedSliver extends CardImpl { private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("Sliver creatures"); static { - filter.getSubtype().add("Sliver"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Sliver")); } public BarbedSliver(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/tempest/ClotSliver.java b/Mage.Sets/src/mage/sets/tempest/ClotSliver.java index 271c1ef3f8d..0e5935fe620 100644 --- a/Mage.Sets/src/mage/sets/tempest/ClotSliver.java +++ b/Mage.Sets/src/mage/sets/tempest/ClotSliver.java @@ -39,8 +39,8 @@ import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.effects.common.RegenerateSourceEffect; import mage.abilities.effects.common.continious.GainAbilityAllEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; /** * @author Loki @@ -50,8 +50,7 @@ public class ClotSliver extends CardImpl { private final static FilterPermanent filter = new FilterPermanent("Slivers"); static { - filter.getSubtype().add("Sliver"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Sliver")); } public ClotSliver(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/tempest/Earthcraft.java b/Mage.Sets/src/mage/sets/tempest/Earthcraft.java index fb4a9cedeb1..909fed63ec0 100644 --- a/Mage.Sets/src/mage/sets/tempest/Earthcraft.java +++ b/Mage.Sets/src/mage/sets/tempest/Earthcraft.java @@ -55,8 +55,6 @@ public class Earthcraft extends CardImpl { static { filterCreature.setUseTapped(true); filterCreature.setTapped(false); - filterCreature.setScopeCardType(Filter.ComparisonScope.Any); - filterCreature.setScopeSubtype(Filter.ComparisonScope.Any); filterLand.getCardType().add(CardType.LAND); filterLand.setScopeCardType(Filter.ComparisonScope.Any); filterLand.add(new SupertypePredicate("Basic")); diff --git a/Mage.Sets/src/mage/sets/tempest/EladamriLordOfLeaves.java b/Mage.Sets/src/mage/sets/tempest/EladamriLordOfLeaves.java index 6a86965b7c1..24f778d0122 100644 --- a/Mage.Sets/src/mage/sets/tempest/EladamriLordOfLeaves.java +++ b/Mage.Sets/src/mage/sets/tempest/EladamriLordOfLeaves.java @@ -38,9 +38,9 @@ import mage.abilities.effects.common.continious.GainAbilityAllEffect; import mage.abilities.keyword.ForestwalkAbility; import mage.abilities.keyword.ShroudAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; /** * @@ -52,10 +52,8 @@ public class EladamriLordOfLeaves extends CardImpl { private final static FilterPermanent filterPermanents = new FilterPermanent("Elves"); static { - filterCreatures.getSubtype().add("Elf"); - filterCreatures.setScopeSubtype(Filter.ComparisonScope.Any); - filterPermanents.getSubtype().add("Elf"); - filterPermanents.setScopeSubtype(Filter.ComparisonScope.Any); + filterCreatures.add(new SubtypePredicate("Elf")); + filterPermanents.add(new SubtypePredicate("Elf")); } public EladamriLordOfLeaves(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/tempest/HeartSliver.java b/Mage.Sets/src/mage/sets/tempest/HeartSliver.java index 1d40253651c..86bf91920b9 100644 --- a/Mage.Sets/src/mage/sets/tempest/HeartSliver.java +++ b/Mage.Sets/src/mage/sets/tempest/HeartSliver.java @@ -37,8 +37,8 @@ import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.common.continious.GainAbilityAllEffect; import mage.abilities.keyword.HasteAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; /** * @author Loki @@ -48,8 +48,7 @@ public class HeartSliver extends CardImpl { private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("All sliver creatures"); static { - filter.getSubtype().add("Sliver"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Sliver")); } public HeartSliver(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/tempest/HeartwoodGiant.java b/Mage.Sets/src/mage/sets/tempest/HeartwoodGiant.java index 5a81cc6afae..1654fda330e 100644 --- a/Mage.Sets/src/mage/sets/tempest/HeartwoodGiant.java +++ b/Mage.Sets/src/mage/sets/tempest/HeartwoodGiant.java @@ -39,8 +39,8 @@ import mage.abilities.costs.common.SacrificeTargetCost; import mage.abilities.costs.common.TapSourceCost; import mage.abilities.effects.common.DamageTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.TargetPlayer; import mage.target.common.TargetControlledPermanent; @@ -53,8 +53,7 @@ public class HeartwoodGiant extends CardImpl { private final static FilterControlledPermanent filter = new FilterControlledPermanent("a Forest"); static { - filter.getSubtype().add("Forest"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Forest")); } public HeartwoodGiant(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/tempest/HornedSliver.java b/Mage.Sets/src/mage/sets/tempest/HornedSliver.java index 7650a069a95..72e1bead98c 100644 --- a/Mage.Sets/src/mage/sets/tempest/HornedSliver.java +++ b/Mage.Sets/src/mage/sets/tempest/HornedSliver.java @@ -37,8 +37,8 @@ import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.common.continious.GainAbilityAllEffect; import mage.abilities.keyword.TrampleAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; /** * @author Loki @@ -48,8 +48,7 @@ public class HornedSliver extends CardImpl { private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("All Sliver creatures"); static { - filter.getSubtype().add("Sliver"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Sliver")); } public HornedSliver(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/tempest/MarshLurker.java b/Mage.Sets/src/mage/sets/tempest/MarshLurker.java index a7aa3ce98c7..f1cf8b0dc07 100644 --- a/Mage.Sets/src/mage/sets/tempest/MarshLurker.java +++ b/Mage.Sets/src/mage/sets/tempest/MarshLurker.java @@ -38,8 +38,8 @@ import mage.abilities.costs.common.SacrificeTargetCost; import mage.abilities.effects.common.continious.GainAbilitySourceEffect; import mage.abilities.keyword.FearAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetControlledPermanent; /** @@ -51,8 +51,7 @@ public class MarshLurker extends CardImpl { private final static FilterControlledPermanent filter = new FilterControlledPermanent("a Swamp"); static { - filter.getSubtype().add("Swamp"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Swamp")); } public MarshLurker(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/tempest/MnemonicSliver.java b/Mage.Sets/src/mage/sets/tempest/MnemonicSliver.java index 71fe48ce517..278fcbdaf48 100644 --- a/Mage.Sets/src/mage/sets/tempest/MnemonicSliver.java +++ b/Mage.Sets/src/mage/sets/tempest/MnemonicSliver.java @@ -41,8 +41,8 @@ import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.effects.common.DrawCardControllerEffect; import mage.abilities.effects.common.continious.GainAbilityAllEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; /** * @author Loki @@ -52,8 +52,7 @@ public class MnemonicSliver extends CardImpl { private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("Sliver creatures"); static { - filter.getSubtype().add("Sliver"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Sliver")); } public MnemonicSliver(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/tempest/MoggRaider.java b/Mage.Sets/src/mage/sets/tempest/MoggRaider.java index 27c6bf0c37f..98375c6c139 100644 --- a/Mage.Sets/src/mage/sets/tempest/MoggRaider.java +++ b/Mage.Sets/src/mage/sets/tempest/MoggRaider.java @@ -38,8 +38,8 @@ import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.common.SacrificeTargetCost; import mage.abilities.effects.common.continious.BoostTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetControlledPermanent; import mage.target.common.TargetCreaturePermanent; @@ -52,8 +52,7 @@ public class MoggRaider extends CardImpl { private final static FilterControlledPermanent filter = new FilterControlledPermanent("a Goblin"); static { - filter.getSubtype().add("Goblin"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Goblin")); } public MoggRaider(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/tempest/MuscleSliver.java b/Mage.Sets/src/mage/sets/tempest/MuscleSliver.java index 4981380749c..9bf6ef15097 100644 --- a/Mage.Sets/src/mage/sets/tempest/MuscleSliver.java +++ b/Mage.Sets/src/mage/sets/tempest/MuscleSliver.java @@ -36,8 +36,8 @@ import mage.MageInt; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.common.continious.BoostAllEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; /** * @author Loki @@ -47,8 +47,7 @@ public class MuscleSliver extends CardImpl { private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("All Sliver creatures"); static { - filter.getSubtype().add("Sliver"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Sliver")); } public MuscleSliver(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/tempest/TalonSliver.java b/Mage.Sets/src/mage/sets/tempest/TalonSliver.java index 4899189f444..df54db958a3 100644 --- a/Mage.Sets/src/mage/sets/tempest/TalonSliver.java +++ b/Mage.Sets/src/mage/sets/tempest/TalonSliver.java @@ -37,8 +37,8 @@ import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.common.continious.GainAbilityAllEffect; import mage.abilities.keyword.FirstStrikeAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; /** * @author Loki @@ -48,8 +48,7 @@ public class TalonSliver extends CardImpl { private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("All Sliver creatures"); static { - filter.getSubtype().add("Sliver"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Sliver")); } public TalonSliver(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/tempest/WingedSliver.java b/Mage.Sets/src/mage/sets/tempest/WingedSliver.java index 7e5dd85750f..4670cf81e87 100644 --- a/Mage.Sets/src/mage/sets/tempest/WingedSliver.java +++ b/Mage.Sets/src/mage/sets/tempest/WingedSliver.java @@ -37,8 +37,8 @@ import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.common.continious.GainAbilityAllEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; /** * @author Loki @@ -48,8 +48,7 @@ public class WingedSliver extends CardImpl { private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("All sliver creatures"); static { - filter.getSubtype().add("Sliver"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Sliver")); } public WingedSliver(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/tenth/BlanchwoodArmor.java b/Mage.Sets/src/mage/sets/tenth/BlanchwoodArmor.java index 2ffd677e2ae..a32b9cf49c9 100644 --- a/Mage.Sets/src/mage/sets/tenth/BlanchwoodArmor.java +++ b/Mage.Sets/src/mage/sets/tenth/BlanchwoodArmor.java @@ -40,6 +40,7 @@ import mage.abilities.effects.common.continious.BoostEnchantedEffect; import mage.abilities.keyword.EnchantAbility; import mage.cards.CardImpl; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; @@ -52,7 +53,7 @@ public class BlanchwoodArmor extends CardImpl { private final static FilterControlledPermanent filter = new FilterControlledPermanent("Forest you control"); static { - filter.getSubtype().add("Forest"); + filter.add(new SubtypePredicate("Forest")); } public BlanchwoodArmor(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/tenth/ElvishChampion.java b/Mage.Sets/src/mage/sets/tenth/ElvishChampion.java index 280e00f060e..5f900f7b1c5 100644 --- a/Mage.Sets/src/mage/sets/tenth/ElvishChampion.java +++ b/Mage.Sets/src/mage/sets/tenth/ElvishChampion.java @@ -38,8 +38,8 @@ import mage.abilities.effects.common.continious.BoostAllEffect; import mage.abilities.effects.common.continious.GainAbilityAllEffect; import mage.abilities.keyword.ForestwalkAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; /** * @@ -50,8 +50,7 @@ public class ElvishChampion extends CardImpl { private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("Elf creatures"); static { - filter.getSubtype().add("Elf"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Elf")); } public ElvishChampion(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/tenth/FieldMarshal.java b/Mage.Sets/src/mage/sets/tenth/FieldMarshal.java index 75ff1c87e1a..2c0eb5ca938 100644 --- a/Mage.Sets/src/mage/sets/tenth/FieldMarshal.java +++ b/Mage.Sets/src/mage/sets/tenth/FieldMarshal.java @@ -38,8 +38,8 @@ import mage.abilities.effects.common.continious.BoostAllEffect; import mage.abilities.effects.common.continious.GainAbilityAllEffect; import mage.abilities.keyword.FirstStrikeAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; /** * @author anonymous @@ -49,8 +49,7 @@ public class FieldMarshal extends CardImpl { private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("Soldier creatures"); static { - filter.getSubtype().add("Soldier"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Soldier")); } public FieldMarshal(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/tenth/GoblinKing.java b/Mage.Sets/src/mage/sets/tenth/GoblinKing.java index 25ed1089ba1..706859479ff 100644 --- a/Mage.Sets/src/mage/sets/tenth/GoblinKing.java +++ b/Mage.Sets/src/mage/sets/tenth/GoblinKing.java @@ -38,8 +38,8 @@ import mage.abilities.effects.common.continious.BoostAllEffect; import mage.abilities.effects.common.continious.GainAbilityAllEffect; import mage.abilities.keyword.MountainwalkAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; /** * @author Loki @@ -49,8 +49,7 @@ public class GoblinKing extends CardImpl { private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("Goblin creatures"); static { - filter.getSubtype().add("Goblin"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Goblin")); } public GoblinKing(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/tenth/LordOfTheUndead.java b/Mage.Sets/src/mage/sets/tenth/LordOfTheUndead.java index e108949f802..ee2d3b80379 100644 --- a/Mage.Sets/src/mage/sets/tenth/LordOfTheUndead.java +++ b/Mage.Sets/src/mage/sets/tenth/LordOfTheUndead.java @@ -41,9 +41,9 @@ import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.common.ReturnToHandTargetEffect; import mage.abilities.effects.common.continious.BoostControlledEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterCard; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetCardInYourGraveyard; /** @@ -55,10 +55,8 @@ public class LordOfTheUndead extends CardImpl { private final static FilterCard filterCard = new FilterCard("Zombie card from your graveyard"); static { - filter.getSubtype().add("Zombie"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); - filterCard.getSubtype().add("Zombie"); - filterCard.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Zombie")); + filterCard.add(new SubtypePredicate("Zombie")); } public LordOfTheUndead(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/tenth/Mobilization.java b/Mage.Sets/src/mage/sets/tenth/Mobilization.java index e6080f9ae4c..ee3c6246f17 100644 --- a/Mage.Sets/src/mage/sets/tenth/Mobilization.java +++ b/Mage.Sets/src/mage/sets/tenth/Mobilization.java @@ -39,8 +39,8 @@ import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.continious.GainAbilityAllEffect; import mage.abilities.keyword.VigilanceAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.permanent.token.SoldierToken; /** @@ -52,8 +52,7 @@ public class Mobilization extends CardImpl { private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("Soldier creatures"); static { - filter.getSubtype().add("Soldier"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Soldier")); } public Mobilization(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/tenth/Nightmare.java b/Mage.Sets/src/mage/sets/tenth/Nightmare.java index 92c8fa0cd6c..0a39f463fb6 100644 --- a/Mage.Sets/src/mage/sets/tenth/Nightmare.java +++ b/Mage.Sets/src/mage/sets/tenth/Nightmare.java @@ -39,6 +39,7 @@ import mage.abilities.effects.common.continious.SetPowerToughnessSourceEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; /** * @@ -49,7 +50,7 @@ public class Nightmare extends CardImpl { private final static FilterControlledPermanent filter = new FilterControlledPermanent("Swamps you control"); static { - filter.getSubtype().add("Swamp"); + filter.add(new SubtypePredicate("Swamp")); } public Nightmare(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/tenth/SpittingEarth.java b/Mage.Sets/src/mage/sets/tenth/SpittingEarth.java index 24e78090013..17556f96989 100644 --- a/Mage.Sets/src/mage/sets/tenth/SpittingEarth.java +++ b/Mage.Sets/src/mage/sets/tenth/SpittingEarth.java @@ -34,6 +34,7 @@ import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.effects.common.DamageTargetEffect; import mage.cards.CardImpl; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetCreaturePermanent; /** @@ -45,7 +46,7 @@ public class SpittingEarth extends CardImpl { private final static FilterControlledPermanent filter = new FilterControlledPermanent("Mountain you control"); static { - filter.getSubtype().add("Mountain"); + filter.add(new SubtypePredicate("Mountain")); } public SpittingEarth(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/urzassaga/GaeasCradle.java b/Mage.Sets/src/mage/sets/urzassaga/GaeasCradle.java index ed8eb6ea64c..a9f57346ffc 100644 --- a/Mage.Sets/src/mage/sets/urzassaga/GaeasCradle.java +++ b/Mage.Sets/src/mage/sets/urzassaga/GaeasCradle.java @@ -35,7 +35,6 @@ import mage.Mana; import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.mana.DynamicManaAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; /** @@ -49,7 +48,6 @@ public class GaeasCradle extends CardImpl { static { filter.getCardType().add(CardType.CREATURE); - filter.setScopeSubtype(Filter.ComparisonScope.Any); } public GaeasCradle(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/urzassaga/PriestOfTitania.java b/Mage.Sets/src/mage/sets/urzassaga/PriestOfTitania.java index 988aa26db0e..7bcb053b019 100644 --- a/Mage.Sets/src/mage/sets/urzassaga/PriestOfTitania.java +++ b/Mage.Sets/src/mage/sets/urzassaga/PriestOfTitania.java @@ -37,6 +37,7 @@ import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.mana.DynamicManaAbility; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; /** * @@ -47,7 +48,7 @@ public class PriestOfTitania extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Elf creatures"); static { - filter.getSubtype().add("Elf"); + filter.add(new SubtypePredicate("Elf")); } public PriestOfTitania(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/urzassaga/SerrasSanctum.java b/Mage.Sets/src/mage/sets/urzassaga/SerrasSanctum.java index ad54a4c616e..26f8e8a2a0c 100644 --- a/Mage.Sets/src/mage/sets/urzassaga/SerrasSanctum.java +++ b/Mage.Sets/src/mage/sets/urzassaga/SerrasSanctum.java @@ -35,7 +35,6 @@ import mage.Mana; import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.mana.DynamicManaAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; /** @@ -49,7 +48,6 @@ public class SerrasSanctum extends CardImpl { static { filter.getCardType().add(CardType.ENCHANTMENT); - filter.setScopeSubtype(Filter.ComparisonScope.Any); } public SerrasSanctum(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/urzassaga/TreefolkSeedlings.java b/Mage.Sets/src/mage/sets/urzassaga/TreefolkSeedlings.java index 49b447f1305..e5f48281353 100644 --- a/Mage.Sets/src/mage/sets/urzassaga/TreefolkSeedlings.java +++ b/Mage.Sets/src/mage/sets/urzassaga/TreefolkSeedlings.java @@ -40,6 +40,7 @@ import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.effects.common.continious.SetToughnessSourceEffect; import mage.cards.CardImpl; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; /** * @@ -50,7 +51,7 @@ public class TreefolkSeedlings extends CardImpl { final static FilterControlledPermanent filterLands = new FilterControlledPermanent("Forests you control"); static { - filterLands.getSubtype().add("Forest"); + filterLands.add(new SubtypePredicate("Forest")); } public TreefolkSeedlings (UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/worldwake/AkoumBattlesinger.java b/Mage.Sets/src/mage/sets/worldwake/AkoumBattlesinger.java index 2c659c6c45f..6d0003eb74a 100644 --- a/Mage.Sets/src/mage/sets/worldwake/AkoumBattlesinger.java +++ b/Mage.Sets/src/mage/sets/worldwake/AkoumBattlesinger.java @@ -37,6 +37,7 @@ import mage.abilities.common.AllyEntersBattlefieldTriggeredAbility; import mage.abilities.effects.common.continious.BoostControlledEffect; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; /** * @@ -47,7 +48,7 @@ public class AkoumBattlesinger extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Ally creatures you control"); static { - filter.getSubtype().add("Ally"); + filter.add(new SubtypePredicate("Ally")); filter.setTargetController(TargetController.YOU); } diff --git a/Mage.Sets/src/mage/sets/worldwake/AnowonTheRuinSage.java b/Mage.Sets/src/mage/sets/worldwake/AnowonTheRuinSage.java index f54a39daf88..efb96a0a320 100644 --- a/Mage.Sets/src/mage/sets/worldwake/AnowonTheRuinSage.java +++ b/Mage.Sets/src/mage/sets/worldwake/AnowonTheRuinSage.java @@ -36,6 +36,8 @@ import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; import mage.abilities.effects.common.SacrificeAllEffect; import mage.cards.CardImpl; import mage.filter.common.FilterControlledCreaturePermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.SubtypePredicate; /** * @@ -46,8 +48,7 @@ public class AnowonTheRuinSage extends CardImpl { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("non-Vampire creature"); static { - filter.getSubtype().add("Vampire"); - filter.setNotSubtype(true); + filter.add(Predicates.not(new SubtypePredicate("Vampire"))); } public AnowonTheRuinSage(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/worldwake/ArborElf.java b/Mage.Sets/src/mage/sets/worldwake/ArborElf.java index 2ceab27786a..9cd43480e64 100644 --- a/Mage.Sets/src/mage/sets/worldwake/ArborElf.java +++ b/Mage.Sets/src/mage/sets/worldwake/ArborElf.java @@ -38,8 +38,8 @@ import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.common.TapSourceCost; import mage.abilities.effects.common.UntapTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterLandPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetLandPermanent; /** @@ -51,8 +51,7 @@ public class ArborElf extends CardImpl { private static final FilterLandPermanent filter = new FilterLandPermanent(); static { - filter.getSubtype().add("Forest"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Forest")); } public ArborElf(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/worldwake/AvengerOfZendikar.java b/Mage.Sets/src/mage/sets/worldwake/AvengerOfZendikar.java index 574b59d1c15..4304125a6e8 100644 --- a/Mage.Sets/src/mage/sets/worldwake/AvengerOfZendikar.java +++ b/Mage.Sets/src/mage/sets/worldwake/AvengerOfZendikar.java @@ -41,6 +41,7 @@ import mage.abilities.effects.common.counter.AddCountersAllEffect; import mage.cards.CardImpl; import mage.counters.CounterType; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.permanent.token.PlantToken; /** @@ -53,7 +54,7 @@ public class AvengerOfZendikar extends CardImpl { static { filter.getCardType().add(CardType.CREATURE); - filter.getSubtype().add("Plant"); + filter.add(new SubtypePredicate("Plant")); filterLand.getCardType().add(CardType.LAND); } diff --git a/Mage.Sets/src/mage/sets/worldwake/ClawsOfValakut.java b/Mage.Sets/src/mage/sets/worldwake/ClawsOfValakut.java index 90f62e439cd..b22a223fc0b 100644 --- a/Mage.Sets/src/mage/sets/worldwake/ClawsOfValakut.java +++ b/Mage.Sets/src/mage/sets/worldwake/ClawsOfValakut.java @@ -44,6 +44,7 @@ import mage.abilities.keyword.EnchantAbility; import mage.abilities.keyword.FirstStrikeAbility; import mage.cards.CardImpl; import mage.filter.common.FilterLandPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; @@ -56,7 +57,7 @@ public class ClawsOfValakut extends CardImpl { private static final FilterLandPermanent filter = new FilterLandPermanent("Mountain you control"); static { - filter.getSubtype().add("Mountain"); + filter.add(new SubtypePredicate("Mountain")); filter.setTargetController(Constants.TargetController.YOU); } diff --git a/Mage.Sets/src/mage/sets/worldwake/HalimarExcavator.java b/Mage.Sets/src/mage/sets/worldwake/HalimarExcavator.java index 8909ed067b8..54e486e8304 100644 --- a/Mage.Sets/src/mage/sets/worldwake/HalimarExcavator.java +++ b/Mage.Sets/src/mage/sets/worldwake/HalimarExcavator.java @@ -38,8 +38,8 @@ import mage.abilities.common.AllyEntersBattlefieldTriggeredAbility; import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.effects.common.PutLibraryIntoGraveTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.TargetPlayer; /** @@ -51,8 +51,7 @@ public class HalimarExcavator extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Allies you control"); static { - filter.getSubtype().add("Ally"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Ally")); filter.setTargetController(TargetController.YOU); } diff --git a/Mage.Sets/src/mage/sets/worldwake/HammerOfRuin.java b/Mage.Sets/src/mage/sets/worldwake/HammerOfRuin.java index 29c00495cf9..f580b796d1a 100644 --- a/Mage.Sets/src/mage/sets/worldwake/HammerOfRuin.java +++ b/Mage.Sets/src/mage/sets/worldwake/HammerOfRuin.java @@ -42,6 +42,7 @@ import mage.abilities.effects.common.continious.BoostEquippedEffect; import mage.abilities.keyword.EquipAbility; import mage.cards.CardImpl; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; import mage.game.events.DamagedPlayerEvent; import mage.game.events.GameEvent; @@ -79,7 +80,7 @@ class HammerOfRuinTriggeredAbility extends TriggeredAbilityImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent(); static { - filter.getSubtype().add("Ally"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Ally")); } HarabazDruidManaEffect() { diff --git a/Mage.Sets/src/mage/sets/worldwake/LoamLion.java b/Mage.Sets/src/mage/sets/worldwake/LoamLion.java index 004545be4df..4a2451fc49d 100644 --- a/Mage.Sets/src/mage/sets/worldwake/LoamLion.java +++ b/Mage.Sets/src/mage/sets/worldwake/LoamLion.java @@ -38,8 +38,8 @@ import mage.abilities.condition.common.ControlsPermanentCondition; import mage.abilities.decorator.ConditionalContinousEffect; import mage.abilities.effects.common.continious.BoostSourceEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterLandPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; /** * @@ -51,8 +51,7 @@ public class LoamLion extends CardImpl { private static final FilterLandPermanent filter = new FilterLandPermanent("a Forest"); static { - filter.getSubtype().add("Forest"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Forest")); } public LoamLion(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/worldwake/SejiriMerfolk.java b/Mage.Sets/src/mage/sets/worldwake/SejiriMerfolk.java index 8a9613c0834..cec7f6676ae 100644 --- a/Mage.Sets/src/mage/sets/worldwake/SejiriMerfolk.java +++ b/Mage.Sets/src/mage/sets/worldwake/SejiriMerfolk.java @@ -39,8 +39,8 @@ import mage.abilities.effects.common.continious.GainAbilitySourceEffect; import mage.abilities.keyword.FirstStrikeAbility; import mage.abilities.keyword.LifelinkAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; /** * @@ -54,8 +54,7 @@ public class SejiriMerfolk extends CardImpl { static { filter.getCardType().add(CardType.LAND); - filter.getSubtype().add("Plains"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Plains")); } public SejiriMerfolk(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/worldwake/StoneforgeMystic.java b/Mage.Sets/src/mage/sets/worldwake/StoneforgeMystic.java index 0e198b89ebd..a92c4278b3b 100644 --- a/Mage.Sets/src/mage/sets/worldwake/StoneforgeMystic.java +++ b/Mage.Sets/src/mage/sets/worldwake/StoneforgeMystic.java @@ -40,6 +40,7 @@ import mage.abilities.effects.common.PlayTargetWithoutPayingManaEffect; import mage.abilities.effects.common.search.SearchLibraryRevealPutInHandEffect; import mage.cards.CardImpl; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetCardInHand; import mage.target.common.TargetCardInLibrary; @@ -55,7 +56,7 @@ public class StoneforgeMystic extends CardImpl { static { filter.getCardType().add(CardType.ARTIFACT); - filter.getSubtype().add("Equipment"); + filter.add(new SubtypePredicate("Equipment")); } public StoneforgeMystic(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/zendikar/ArmamentMaster.java b/Mage.Sets/src/mage/sets/zendikar/ArmamentMaster.java index 5df251c5b53..21928a6f677 100644 --- a/Mage.Sets/src/mage/sets/zendikar/ArmamentMaster.java +++ b/Mage.Sets/src/mage/sets/zendikar/ArmamentMaster.java @@ -40,6 +40,7 @@ import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.ContinuousEffectImpl; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; import mage.game.permanent.Permanent; @@ -55,7 +56,7 @@ public class ArmamentMaster extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Other Kor creatures you control"); static { - filter.getSubtype().add("Kor"); + filter.add(new SubtypePredicate("Kor")); } public ArmamentMaster(UUID ownerId) { @@ -86,7 +87,7 @@ class ArmamentMasterEffect extends ContinuousEffectImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Other Kor creatures you control"); static { - filter.getSubtype().add("Kor"); + filter.add(new SubtypePredicate("Kor")); } public ArmamentMasterEffect() { diff --git a/Mage.Sets/src/mage/sets/zendikar/BloodTribute.java b/Mage.Sets/src/mage/sets/zendikar/BloodTribute.java index 56673a045ca..72ea521d825 100644 --- a/Mage.Sets/src/mage/sets/zendikar/BloodTribute.java +++ b/Mage.Sets/src/mage/sets/zendikar/BloodTribute.java @@ -36,8 +36,8 @@ import mage.abilities.costs.common.TapTargetCost; import mage.abilities.effects.OneShotEffect; import mage.abilities.keyword.KickerAbility; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.common.FilterControlledCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; import mage.players.Player; import mage.target.common.TargetControlledCreaturePermanent; @@ -54,8 +54,7 @@ public class BloodTribute extends CardImpl { static { filter.setTapped(false); filter.setUseTapped(true); - filter.getSubtype().add("Vampire"); - filter.setScopeSubtype(ComparisonScope.Any); + filter.add(new SubtypePredicate("Vampire")); } public BloodTribute(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/zendikar/EmeriaTheSkyRuin.java b/Mage.Sets/src/mage/sets/zendikar/EmeriaTheSkyRuin.java index 63f6271ae99..b074d3965c8 100644 --- a/Mage.Sets/src/mage/sets/zendikar/EmeriaTheSkyRuin.java +++ b/Mage.Sets/src/mage/sets/zendikar/EmeriaTheSkyRuin.java @@ -35,9 +35,9 @@ import mage.abilities.common.EntersBattlefieldTappedAbility; import mage.abilities.effects.common.ReturnFromGraveyardToBattlefieldTargetEffect; import mage.abilities.mana.WhiteManaAbility; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.common.FilterCreatureCard; import mage.filter.common.FilterLandPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; import mage.game.events.GameEvent; import mage.target.common.TargetCardInYourGraveyard; @@ -78,8 +78,7 @@ class EmeriaTheSkyRuinTriggeredAbility extends TriggeredAbilityImpl { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent(); static { - filter.getSubtype().add("Vampire"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Vampire")); } public FeastOfBloodCost() { diff --git a/Mage.Sets/src/mage/sets/zendikar/HagraDiabolist.java b/Mage.Sets/src/mage/sets/zendikar/HagraDiabolist.java index 6a3c1418097..9834cb3c34d 100644 --- a/Mage.Sets/src/mage/sets/zendikar/HagraDiabolist.java +++ b/Mage.Sets/src/mage/sets/zendikar/HagraDiabolist.java @@ -38,8 +38,8 @@ import mage.abilities.common.AllyEntersBattlefieldTriggeredAbility; import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.effects.common.LoseLifeTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.TargetPlayer; /** @@ -51,8 +51,7 @@ public class HagraDiabolist extends CardImpl { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Allies you control"); static { - filter.getSubtype().add("Ally"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Ally")); filter.setTargetController(Constants.TargetController.YOU); } diff --git a/Mage.Sets/src/mage/sets/zendikar/HaloHunter.java b/Mage.Sets/src/mage/sets/zendikar/HaloHunter.java index 9c1e284febb..31adead90a4 100644 --- a/Mage.Sets/src/mage/sets/zendikar/HaloHunter.java +++ b/Mage.Sets/src/mage/sets/zendikar/HaloHunter.java @@ -37,6 +37,7 @@ import mage.abilities.effects.common.DestroyTargetEffect; import mage.abilities.keyword.IntimidateAbility; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetCreaturePermanent; /** @@ -48,7 +49,7 @@ public class HaloHunter extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Angel"); static { - filter.getSubtype().add("Angel"); + filter.add(new SubtypePredicate("Angel")); } public HaloHunter(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/zendikar/HighlandBerserker.java b/Mage.Sets/src/mage/sets/zendikar/HighlandBerserker.java index af73f7fbf58..7e7032695e1 100644 --- a/Mage.Sets/src/mage/sets/zendikar/HighlandBerserker.java +++ b/Mage.Sets/src/mage/sets/zendikar/HighlandBerserker.java @@ -38,8 +38,8 @@ import mage.abilities.common.AllyEntersBattlefieldTriggeredAbility; import mage.abilities.effects.common.continious.GainAbilityAllEffect; import mage.abilities.keyword.FirstStrikeAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; /** * @@ -50,8 +50,7 @@ public class HighlandBerserker extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Ally creatures you control"); static { - filter.getSubtype().add("Ally"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Ally")); filter.setTargetController(Constants.TargetController.YOU); } diff --git a/Mage.Sets/src/mage/sets/zendikar/JoragaBard.java b/Mage.Sets/src/mage/sets/zendikar/JoragaBard.java index 5e7a65b4eb8..b6618ef7fb0 100644 --- a/Mage.Sets/src/mage/sets/zendikar/JoragaBard.java +++ b/Mage.Sets/src/mage/sets/zendikar/JoragaBard.java @@ -38,8 +38,8 @@ import mage.abilities.common.AllyEntersBattlefieldTriggeredAbility; import mage.abilities.effects.common.continious.GainAbilityAllEffect; import mage.abilities.keyword.VigilanceAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; /** * @@ -50,8 +50,7 @@ public class JoragaBard extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Ally creatures you control"); static { - filter.getSubtype().add("Ally"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Ally")); filter.setTargetController(Constants.TargetController.YOU); } diff --git a/Mage.Sets/src/mage/sets/zendikar/KazuulWarlord.java b/Mage.Sets/src/mage/sets/zendikar/KazuulWarlord.java index 348312ef816..8a1f897f84a 100644 --- a/Mage.Sets/src/mage/sets/zendikar/KazuulWarlord.java +++ b/Mage.Sets/src/mage/sets/zendikar/KazuulWarlord.java @@ -37,8 +37,8 @@ import mage.abilities.common.AllyEntersBattlefieldTriggeredAbility; import mage.abilities.effects.common.counter.AddCountersAllEffect; import mage.cards.CardImpl; import mage.counters.CounterType; -import mage.filter.Filter; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; /** * @@ -49,8 +49,7 @@ public class KazuulWarlord extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Ally creatures you control"); static { - filter.getSubtype().add("Ally"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Ally")); filter.setTargetController(TargetController.YOU); } diff --git a/Mage.Sets/src/mage/sets/zendikar/KorCartographer.java b/Mage.Sets/src/mage/sets/zendikar/KorCartographer.java index 0cf281df668..1c4af00c6c7 100644 --- a/Mage.Sets/src/mage/sets/zendikar/KorCartographer.java +++ b/Mage.Sets/src/mage/sets/zendikar/KorCartographer.java @@ -35,6 +35,7 @@ import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.effects.common.search.SearchLibraryPutInPlayEffect; import mage.cards.CardImpl; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetCardInLibrary; /** @@ -46,7 +47,7 @@ public class KorCartographer extends CardImpl { private static final FilterCard filter = new FilterCard("Plains card"); static { - filter.getSubtype().add("Plains"); + filter.add(new SubtypePredicate("Plains")); } public KorCartographer(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/zendikar/KorOutfitter.java b/Mage.Sets/src/mage/sets/zendikar/KorOutfitter.java index 3055a03c5b2..ed343a99815 100644 --- a/Mage.Sets/src/mage/sets/zendikar/KorOutfitter.java +++ b/Mage.Sets/src/mage/sets/zendikar/KorOutfitter.java @@ -37,6 +37,7 @@ import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.effects.OneShotEffect; import mage.cards.CardImpl; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.target.common.TargetControlledCreaturePermanent; @@ -51,7 +52,7 @@ public class KorOutfitter extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("Equipment you control"); static { - filter.getSubtype().add("Equipment"); + filter.add(new SubtypePredicate("Equipment")); } public KorOutfitter(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/zendikar/LandbindRitual.java b/Mage.Sets/src/mage/sets/zendikar/LandbindRitual.java index 765bb9bf749..849b7650ed4 100644 --- a/Mage.Sets/src/mage/sets/zendikar/LandbindRitual.java +++ b/Mage.Sets/src/mage/sets/zendikar/LandbindRitual.java @@ -35,6 +35,7 @@ import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.effects.common.GainLifeEffect; import mage.cards.CardImpl; import mage.filter.common.FilterLandPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; /** * @@ -45,7 +46,7 @@ public class LandbindRitual extends CardImpl { private static final FilterLandPermanent filter = new FilterLandPermanent("Plains you control"); static { - filter.getSubtype().add("Plains"); + filter.add(new SubtypePredicate("Plains")); filter.setTargetController(TargetController.YOU); } diff --git a/Mage.Sets/src/mage/sets/zendikar/MalakirBloodwitch.java b/Mage.Sets/src/mage/sets/zendikar/MalakirBloodwitch.java index f21ca4c9b7a..e3543da6dbd 100644 --- a/Mage.Sets/src/mage/sets/zendikar/MalakirBloodwitch.java +++ b/Mage.Sets/src/mage/sets/zendikar/MalakirBloodwitch.java @@ -41,6 +41,7 @@ import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.filter.FilterCard; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; import mage.players.Player; @@ -106,7 +107,7 @@ class MalakirBloodwitchEffect extends OneShotEffect { } FilterControlledPermanent filter = new FilterControlledPermanent("Vampire"); - filter.getSubtype().add("Vampire"); + filter.add(new SubtypePredicate("Vampire")); int amount = game.getBattlefield().countAll(filter, source.getControllerId(), game); Set opponents = game.getOpponents(source.getControllerId()); diff --git a/Mage.Sets/src/mage/sets/zendikar/MindSludge.java b/Mage.Sets/src/mage/sets/zendikar/MindSludge.java index ea97505675f..3d4ecdab114 100644 --- a/Mage.Sets/src/mage/sets/zendikar/MindSludge.java +++ b/Mage.Sets/src/mage/sets/zendikar/MindSludge.java @@ -35,6 +35,7 @@ import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.effects.common.DiscardTargetEffect; import mage.cards.CardImpl; import mage.filter.common.FilterLandPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.TargetPlayer; /** @@ -46,7 +47,7 @@ public class MindSludge extends CardImpl { private static final FilterLandPermanent filter = new FilterLandPermanent("Swamp you control"); static { - filter.getSubtype().add("Swamp"); + filter.add(new SubtypePredicate("Swamp")); filter.setTargetController(TargetController.YOU); } diff --git a/Mage.Sets/src/mage/sets/zendikar/MindlessNull.java b/Mage.Sets/src/mage/sets/zendikar/MindlessNull.java index 217fbd38b3b..be1ff974fd6 100644 --- a/Mage.Sets/src/mage/sets/zendikar/MindlessNull.java +++ b/Mage.Sets/src/mage/sets/zendikar/MindlessNull.java @@ -38,6 +38,7 @@ import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.RestrictionEffect; import mage.cards.CardImpl; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; import mage.game.permanent.Permanent; @@ -75,7 +76,7 @@ class MindlessNullEffect extends RestrictionEffect { public MindlessNullEffect() { super(Duration.WhileOnBattlefield); - filter.getSubtype().add("Vampire"); + filter.add(new SubtypePredicate("Vampire")); staticText = "{this} can't block unless you control a Vampire"; } diff --git a/Mage.Sets/src/mage/sets/zendikar/MurasaPyromancer.java b/Mage.Sets/src/mage/sets/zendikar/MurasaPyromancer.java index 5fd84a5a5e0..10fd44006c9 100644 --- a/Mage.Sets/src/mage/sets/zendikar/MurasaPyromancer.java +++ b/Mage.Sets/src/mage/sets/zendikar/MurasaPyromancer.java @@ -38,8 +38,8 @@ import mage.abilities.common.AllyEntersBattlefieldTriggeredAbility; import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.effects.common.DamageTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetCreaturePermanent; /** @@ -51,8 +51,7 @@ public class MurasaPyromancer extends CardImpl { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Ally you control"); static { - filter.getSubtype().add("Ally"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Ally")); filter.setTargetController(Constants.TargetController.YOU); } diff --git a/Mage.Sets/src/mage/sets/zendikar/NissaRevane.java b/Mage.Sets/src/mage/sets/zendikar/NissaRevane.java index 41654ed5cb3..49775937c89 100644 --- a/Mage.Sets/src/mage/sets/zendikar/NissaRevane.java +++ b/Mage.Sets/src/mage/sets/zendikar/NissaRevane.java @@ -42,6 +42,7 @@ import mage.counters.CounterType; import mage.filter.FilterCard; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.predicate.mageobject.NamePredicate; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; import mage.players.Player; import mage.target.common.TargetCardInLibrary; @@ -57,7 +58,7 @@ public class NissaRevane extends CardImpl { static { nissasChosenFilter.add(new NamePredicate("Nissa's Chosen")); - elfFilter.getSubtype().add("Elf"); + elfFilter.add(new SubtypePredicate("Elf")); } public NissaRevane(UUID ownerId) { @@ -93,7 +94,7 @@ class NissaRevaneGainLifeEffect extends OneShotEffect private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent(); static { - filter.getSubtype().add("Elf"); + filter.add(new SubtypePredicate("Elf")); } public NissaRevaneGainLifeEffect() { diff --git a/Mage.Sets/src/mage/sets/zendikar/OnduCleric.java b/Mage.Sets/src/mage/sets/zendikar/OnduCleric.java index 0218a187eea..74c1400d40b 100644 --- a/Mage.Sets/src/mage/sets/zendikar/OnduCleric.java +++ b/Mage.Sets/src/mage/sets/zendikar/OnduCleric.java @@ -37,8 +37,8 @@ import mage.abilities.common.AllyEntersBattlefieldTriggeredAbility; import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.effects.common.GainLifeEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; /** * @@ -49,8 +49,7 @@ public class OnduCleric extends CardImpl { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Allies you control"); static { - filter.getSubtype().add("Ally"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Ally")); filter.setTargetController(Constants.TargetController.YOU); } diff --git a/Mage.Sets/src/mage/sets/zendikar/PrimalBellow.java b/Mage.Sets/src/mage/sets/zendikar/PrimalBellow.java index 4658bf29d01..60682f8d85d 100644 --- a/Mage.Sets/src/mage/sets/zendikar/PrimalBellow.java +++ b/Mage.Sets/src/mage/sets/zendikar/PrimalBellow.java @@ -36,6 +36,7 @@ import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.effects.common.continious.BoostTargetEffect; import mage.cards.CardImpl; import mage.filter.common.FilterLandPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetCreaturePermanent; /** @@ -47,7 +48,7 @@ public class PrimalBellow extends CardImpl { private static final FilterLandPermanent filter = new FilterLandPermanent("Forest you control"); static { - filter.getSubtype().add("Forest"); + filter.add(new SubtypePredicate("Forest")); filter.setTargetController(TargetController.YOU); } diff --git a/Mage.Sets/src/mage/sets/zendikar/QuestForTheHolyRelic.java b/Mage.Sets/src/mage/sets/zendikar/QuestForTheHolyRelic.java index 34b12a80e62..2d2ccf3dc62 100644 --- a/Mage.Sets/src/mage/sets/zendikar/QuestForTheHolyRelic.java +++ b/Mage.Sets/src/mage/sets/zendikar/QuestForTheHolyRelic.java @@ -47,6 +47,7 @@ import mage.counters.CounterType; import mage.filter.Filter; import mage.filter.FilterCard; import mage.filter.FilterSpell; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; @@ -114,7 +115,7 @@ class QuestForTheHolyRelicEffect extends OneShotEffect { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Ally you control"); static { - filter.getSubtype().add("Ally"); + filter.add(new SubtypePredicate("Ally")); } public SeaGateLoremaster(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/zendikar/SeascapeAerialist.java b/Mage.Sets/src/mage/sets/zendikar/SeascapeAerialist.java index 0fe1846dc96..2a665e439a0 100644 --- a/Mage.Sets/src/mage/sets/zendikar/SeascapeAerialist.java +++ b/Mage.Sets/src/mage/sets/zendikar/SeascapeAerialist.java @@ -38,8 +38,8 @@ import mage.abilities.common.AllyEntersBattlefieldTriggeredAbility; import mage.abilities.effects.common.continious.GainAbilityAllEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; /** * @@ -50,8 +50,7 @@ public class SeascapeAerialist extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Ally creatures you control"); static { - filter.getSubtype().add("Ally"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Ally")); filter.setTargetController(Constants.TargetController.YOU); } diff --git a/Mage.Sets/src/mage/sets/zendikar/SpireBarrage.java b/Mage.Sets/src/mage/sets/zendikar/SpireBarrage.java index 440ea810c6b..df2a5b9047d 100644 --- a/Mage.Sets/src/mage/sets/zendikar/SpireBarrage.java +++ b/Mage.Sets/src/mage/sets/zendikar/SpireBarrage.java @@ -34,6 +34,7 @@ import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.effects.common.DamageTargetEffect; import mage.cards.CardImpl; import mage.filter.common.FilterLandPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetCreatureOrPlayer; import java.util.UUID; @@ -47,7 +48,7 @@ public class SpireBarrage extends CardImpl { private static final FilterLandPermanent filter = new FilterLandPermanent("Mountains"); static { - filter.getSubtype().add("Mountain"); + filter.add(new SubtypePredicate("Mountain")); filter.setTargetController(TargetController.YOU); } diff --git a/Mage.Sets/src/mage/sets/zendikar/TajuruArcher.java b/Mage.Sets/src/mage/sets/zendikar/TajuruArcher.java index 5c9fbab0a72..7a79aa3dadd 100644 --- a/Mage.Sets/src/mage/sets/zendikar/TajuruArcher.java +++ b/Mage.Sets/src/mage/sets/zendikar/TajuruArcher.java @@ -39,8 +39,8 @@ import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetCreaturePermanent; /** @@ -53,8 +53,7 @@ public class TajuruArcher extends CardImpl { private static final FilterCreaturePermanent filterTarget = new FilterCreaturePermanent("creature with flying"); static { - filter.getSubtype().add("Ally"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Ally")); filter.setTargetController(Constants.TargetController.YOU); filterTarget.getAbilities().add(FlyingAbility.getInstance()); } diff --git a/Mage.Sets/src/mage/sets/zendikar/TimbermawLarva.java b/Mage.Sets/src/mage/sets/zendikar/TimbermawLarva.java index e5c917beada..6d06aa061b6 100644 --- a/Mage.Sets/src/mage/sets/zendikar/TimbermawLarva.java +++ b/Mage.Sets/src/mage/sets/zendikar/TimbermawLarva.java @@ -38,6 +38,7 @@ import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.effects.common.continious.BoostSourceEffect; import mage.cards.CardImpl; import mage.filter.common.FilterLandPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; /** * @@ -48,7 +49,7 @@ public class TimbermawLarva extends CardImpl { private static final FilterLandPermanent filter = new FilterLandPermanent("Forest you control"); static { - filter.getSubtype().add("Forest"); + filter.add(new SubtypePredicate("Forest")); filter.setTargetController(TargetController.YOU); } diff --git a/Mage.Sets/src/mage/sets/zendikar/TrapmakersSnare.java b/Mage.Sets/src/mage/sets/zendikar/TrapmakersSnare.java index 20ac72a1381..44c49fe8bf3 100644 --- a/Mage.Sets/src/mage/sets/zendikar/TrapmakersSnare.java +++ b/Mage.Sets/src/mage/sets/zendikar/TrapmakersSnare.java @@ -33,6 +33,7 @@ import mage.Constants.Rarity; import mage.abilities.effects.common.search.SearchLibraryRevealPutInHandEffect; import mage.cards.CardImpl; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetCardInLibrary; /** @@ -44,7 +45,7 @@ public class TrapmakersSnare extends CardImpl { private static final FilterCard filter = new FilterCard("Trap card"); static { - filter.getSubtype().add("Trap"); + filter.add(new SubtypePredicate("Trap")); } public TrapmakersSnare(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/zendikar/ValakutTheMoltenPinnacle.java b/Mage.Sets/src/mage/sets/zendikar/ValakutTheMoltenPinnacle.java index d5c0c5da5c9..d25f1c40e2c 100644 --- a/Mage.Sets/src/mage/sets/zendikar/ValakutTheMoltenPinnacle.java +++ b/Mage.Sets/src/mage/sets/zendikar/ValakutTheMoltenPinnacle.java @@ -37,8 +37,8 @@ import mage.abilities.common.EntersBattlefieldTappedAbility; import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.mana.RedManaAbility; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.common.FilterLandPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; import mage.game.events.GameEvent; import mage.game.events.GameEvent.EventType; @@ -55,8 +55,7 @@ public class ValakutTheMoltenPinnacle extends CardImpl static final FilterLandPermanent filter = new FilterLandPermanent("Mountain"); static { - filter.getSubtype().add("Mountain"); - filter.setScopeSubtype(ComparisonScope.Any); + filter.add(new SubtypePredicate("Mountain")); } public ValakutTheMoltenPinnacle(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/zendikar/WarrenInstigator.java b/Mage.Sets/src/mage/sets/zendikar/WarrenInstigator.java index d75990f5d93..bdebe1c0003 100644 --- a/Mage.Sets/src/mage/sets/zendikar/WarrenInstigator.java +++ b/Mage.Sets/src/mage/sets/zendikar/WarrenInstigator.java @@ -40,6 +40,7 @@ import mage.abilities.keyword.DoubleStrikeAbility; import mage.cards.Card; import mage.cards.CardImpl; import mage.filter.common.FilterCreatureCard; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; import mage.game.events.GameEvent; import mage.players.Player; @@ -129,7 +130,7 @@ class WarrenInstigatorEffect extends OneShotEffect { } FilterCreatureCard filter = new FilterCreatureCard("Goblin creature card from your hand"); - filter.getSubtype().add("Goblin"); + filter.add(new SubtypePredicate("Goblin")); TargetCardInHand target = new TargetCardInHand(filter); if (player.choose(Outcome.PutCreatureInPlay, target, source.getSourceId(), game)) { Card card = game.getCard(target.getFirstTarget()); diff --git a/Mage/src/mage/abilities/common/FetchLandActivatedAbility.java b/Mage/src/mage/abilities/common/FetchLandActivatedAbility.java index 859ce39acb9..89a73375499 100644 --- a/Mage/src/mage/abilities/common/FetchLandActivatedAbility.java +++ b/Mage/src/mage/abilities/common/FetchLandActivatedAbility.java @@ -28,17 +28,20 @@ package mage.abilities.common; -import java.util.Arrays; +import java.util.ArrayList; import mage.Constants.CardType; import mage.Constants.Outcome; import mage.Constants.Zone; +import mage.MageObject; import mage.abilities.ActivatedAbilityImpl; import mage.abilities.costs.common.PayLifeCost; import mage.abilities.costs.common.SacrificeSourceCost; import mage.abilities.costs.common.TapSourceCost; import mage.abilities.effects.common.search.SearchLibraryPutInPlayEffect; -import mage.filter.Filter.ComparisonScope; import mage.filter.FilterCard; +import mage.filter.predicate.Predicate; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetCardInLibrary; /** @@ -47,15 +50,18 @@ import mage.target.common.TargetCardInLibrary; */ public class FetchLandActivatedAbility extends ActivatedAbilityImpl { - public FetchLandActivatedAbility(String[] subTypes) { + public FetchLandActivatedAbility(String[] subtypes) { super(Zone.BATTLEFIELD, null); addCost(new TapSourceCost()); addCost(new PayLifeCost(1)); addCost(new SacrificeSourceCost()); - FilterCard filter = new FilterCard(subTypeNames(subTypes)); + FilterCard filter = new FilterCard(subTypeNames(subtypes)); filter.getCardType().add(CardType.LAND); - filter.getSubtype().addAll(Arrays.asList(subTypes)); - filter.setScopeSubtype(ComparisonScope.Any); + ArrayList> subtypePredicates = new ArrayList>(); + for(int i = 0; i < subtypes.length; i++){ + subtypePredicates.add(new SubtypePredicate(subtypes[i])); + } + filter.add(Predicates.or(subtypePredicates)); TargetCardInLibrary target = new TargetCardInLibrary(filter); addEffect(new SearchLibraryPutInPlayEffect(target, false, true, Outcome.PutLandInPlay)); } diff --git a/Mage/src/mage/abilities/keyword/ForestwalkAbility.java b/Mage/src/mage/abilities/keyword/ForestwalkAbility.java index 057a1bb4801..a6f6d1545b1 100644 --- a/Mage/src/mage/abilities/keyword/ForestwalkAbility.java +++ b/Mage/src/mage/abilities/keyword/ForestwalkAbility.java @@ -28,8 +28,8 @@ package mage.abilities.keyword; -import mage.filter.Filter.ComparisonScope; import mage.filter.common.FilterLandPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; /** * @@ -40,8 +40,7 @@ public class ForestwalkAbility extends LandwalkAbility { private static final FilterLandPermanent filter = new FilterLandPermanent("Forest"); static { - filter.getSubtype().add("Forest"); - filter.setScopeSubtype(ComparisonScope.Any); + filter.add(new SubtypePredicate("Forest")); } public ForestwalkAbility() { diff --git a/Mage/src/mage/abilities/keyword/IslandwalkAbility.java b/Mage/src/mage/abilities/keyword/IslandwalkAbility.java index 1243e770783..cdd8da7a4c2 100644 --- a/Mage/src/mage/abilities/keyword/IslandwalkAbility.java +++ b/Mage/src/mage/abilities/keyword/IslandwalkAbility.java @@ -28,8 +28,8 @@ package mage.abilities.keyword; -import mage.filter.Filter.ComparisonScope; import mage.filter.common.FilterLandPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; /** * @@ -40,8 +40,7 @@ public class IslandwalkAbility extends LandwalkAbility { private static final FilterLandPermanent filter = new FilterLandPermanent("Island"); static { - filter.getSubtype().add("Island"); - filter.setScopeSubtype(ComparisonScope.Any); + filter.add(new SubtypePredicate("Island")); } public IslandwalkAbility() { diff --git a/Mage/src/mage/abilities/keyword/MountainwalkAbility.java b/Mage/src/mage/abilities/keyword/MountainwalkAbility.java index ad9a9cc412e..4bb1b8c4986 100644 --- a/Mage/src/mage/abilities/keyword/MountainwalkAbility.java +++ b/Mage/src/mage/abilities/keyword/MountainwalkAbility.java @@ -28,8 +28,8 @@ package mage.abilities.keyword; -import mage.filter.Filter.ComparisonScope; import mage.filter.common.FilterLandPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; /** * @@ -40,8 +40,7 @@ public class MountainwalkAbility extends LandwalkAbility { private static final FilterLandPermanent filter = new FilterLandPermanent("Mountain"); static { - filter.getSubtype().add("Mountain"); - filter.setScopeSubtype(ComparisonScope.Any); + filter.add(new SubtypePredicate("Mountain")); } public MountainwalkAbility() { diff --git a/Mage/src/mage/abilities/keyword/PlainswalkAbility.java b/Mage/src/mage/abilities/keyword/PlainswalkAbility.java index f10b9db8220..bdd8b688d21 100644 --- a/Mage/src/mage/abilities/keyword/PlainswalkAbility.java +++ b/Mage/src/mage/abilities/keyword/PlainswalkAbility.java @@ -28,8 +28,8 @@ package mage.abilities.keyword; -import mage.filter.Filter.ComparisonScope; import mage.filter.common.FilterLandPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; /** * @@ -40,8 +40,7 @@ public class PlainswalkAbility extends LandwalkAbility { private static final FilterLandPermanent filter = new FilterLandPermanent("Plains"); static { - filter.getSubtype().add("Plains"); - filter.setScopeSubtype(ComparisonScope.Any); + filter.add(new SubtypePredicate("Plains")); } public PlainswalkAbility() { diff --git a/Mage/src/mage/abilities/keyword/SoulshiftAbility.java b/Mage/src/mage/abilities/keyword/SoulshiftAbility.java index c9e0c183cc7..c202e050fef 100644 --- a/Mage/src/mage/abilities/keyword/SoulshiftAbility.java +++ b/Mage/src/mage/abilities/keyword/SoulshiftAbility.java @@ -5,6 +5,7 @@ import mage.abilities.effects.common.ReturnToHandTargetEffect; import mage.filter.Filter; import mage.filter.FilterCard; import mage.filter.predicate.mageobject.ConvertedManaCostPredicate; +import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetCardInYourGraveyard; public class SoulshiftAbility extends DiesTriggeredAbility { @@ -14,8 +15,7 @@ public class SoulshiftAbility extends DiesTriggeredAbility { super(new ReturnToHandTargetEffect()); FilterCard filter = new FilterCard("Spirit card with converted mana cost " + amount + " or less from your graveyard"); filter.add(new ConvertedManaCostPredicate(Filter.ComparisonType.LessThan, amount + 1)); - filter.getSubtype().add("Spirit"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); + filter.add(new SubtypePredicate("Spirit")); this.addTarget(new TargetCardInYourGraveyard(filter)); this.amount = amount; } diff --git a/Mage/src/mage/abilities/keyword/SwampwalkAbility.java b/Mage/src/mage/abilities/keyword/SwampwalkAbility.java index 792ff6fda54..4da62606752 100644 --- a/Mage/src/mage/abilities/keyword/SwampwalkAbility.java +++ b/Mage/src/mage/abilities/keyword/SwampwalkAbility.java @@ -28,8 +28,8 @@ package mage.abilities.keyword; -import mage.filter.Filter.ComparisonScope; import mage.filter.common.FilterLandPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; /** * @@ -40,8 +40,7 @@ public class SwampwalkAbility extends LandwalkAbility { private static final FilterLandPermanent filter = new FilterLandPermanent("Swamp"); static { - filter.getSubtype().add("Swamp"); - filter.setScopeSubtype(ComparisonScope.Any); + filter.add(new SubtypePredicate("Swamp")); } public SwampwalkAbility() { diff --git a/Mage/src/mage/filter/FilterObject.java b/Mage/src/mage/filter/FilterObject.java index 21042647773..a3f9b6b9a05 100644 --- a/Mage/src/mage/filter/FilterObject.java +++ b/Mage/src/mage/filter/FilterObject.java @@ -58,9 +58,6 @@ public class FilterObject> ex protected ObjectColor color; protected ComparisonScope scopeColor = ComparisonScope.Any; protected boolean notColor; - protected List subtype = new ArrayList(); - protected ComparisonScope scopeSubtype = ComparisonScope.All; - protected boolean notSubtype; /** * Indicates that filter shouldn't match the source. @@ -92,9 +89,6 @@ public class FilterObject> ex this.color = filter.color.copy(); this.scopeColor = filter.scopeColor; this.notColor = filter.notColor; - this.subtype.addAll(filter.subtype); - this.scopeSubtype = filter.scopeSubtype; - this.notSubtype = filter.notSubtype; this.another = filter.another; } @@ -135,13 +129,6 @@ public class FilterObject> ex return notFilter; } - if (subtype.size() > 0) { - if (!object.getAbilities().contains(ChangelingAbility.getInstance())) { - if (!compString.compare(subtype, object.getSubtype(), scopeSubtype, notSubtype)) - return notFilter; - } - } - if (abilities.size() > 0) { List test = new ArrayList(abilities); for (Ability ability: object.getAbilities()) { @@ -199,18 +186,6 @@ public class FilterObject> ex this.notColor = notColor; } - public List getSubtype() { - return this.subtype; - } - - public void setScopeSubtype(ComparisonScope scopeSubtype) { - this.scopeSubtype = scopeSubtype; - } - - public void setNotSubtype(boolean notSubtype) { - this.notSubtype = notSubtype; - } - public void setUseColor(boolean useColor) { this.useColor = useColor; } diff --git a/Mage/src/mage/filter/common/FilterAura.java b/Mage/src/mage/filter/common/FilterAura.java index 5d80317edc0..83d137aaffd 100644 --- a/Mage/src/mage/filter/common/FilterAura.java +++ b/Mage/src/mage/filter/common/FilterAura.java @@ -30,6 +30,7 @@ package mage.filter.common; import mage.Constants.CardType; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; /** * @@ -44,7 +45,7 @@ public class FilterAura extends FilterPermanent { public FilterAura(String name) { super(name); this.cardType.add(CardType.ENCHANTMENT); - this.getSubtype().add("Aura"); + this.add(new SubtypePredicate("Aura")); } public FilterAura(final FilterAura filter) { diff --git a/Mage/src/mage/filter/common/FilterEquipment.java b/Mage/src/mage/filter/common/FilterEquipment.java index 0cc822db56e..3a01d8d7afd 100644 --- a/Mage/src/mage/filter/common/FilterEquipment.java +++ b/Mage/src/mage/filter/common/FilterEquipment.java @@ -30,6 +30,7 @@ package mage.filter.common; import mage.Constants.CardType; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; /** * @@ -44,7 +45,7 @@ public class FilterEquipment extends FilterPermanent { public FilterEquipment(String name) { super(name); this.cardType.add(CardType.ARTIFACT); - this.getSubtype().add("Equipment"); + this.add(new SubtypePredicate("Equipment")); } public FilterEquipment(final FilterEquipment filter) { diff --git a/Mage/src/mage/filter/common/FilterFortification.java b/Mage/src/mage/filter/common/FilterFortification.java index 241aa4cb643..5107d33fedc 100644 --- a/Mage/src/mage/filter/common/FilterFortification.java +++ b/Mage/src/mage/filter/common/FilterFortification.java @@ -30,6 +30,7 @@ package mage.filter.common; import mage.Constants.CardType; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; /** * @@ -44,7 +45,7 @@ public class FilterFortification extends FilterPermanent { public FilterFortification(String name) { super(name); this.cardType.add(CardType.ARTIFACT); - this.getSubtype().add("Fortification"); + this.add(new SubtypePredicate("Fortification")); } public FilterFortification(final FilterFortification filter) { diff --git a/Mage/src/mage/filter/common/FilterSpiritOrArcaneCard.java b/Mage/src/mage/filter/common/FilterSpiritOrArcaneCard.java index 7a37670528e..c7739d165bd 100644 --- a/Mage/src/mage/filter/common/FilterSpiritOrArcaneCard.java +++ b/Mage/src/mage/filter/common/FilterSpiritOrArcaneCard.java @@ -1,7 +1,8 @@ package mage.filter.common; -import mage.filter.Filter; import mage.filter.FilterSpell; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.SubtypePredicate; public class FilterSpiritOrArcaneCard extends FilterSpell { @@ -11,9 +12,7 @@ public class FilterSpiritOrArcaneCard extends FilterSpell { public FilterSpiritOrArcaneCard(String name) { super(name); - this.getSubtype().add("Spirit"); - this.getSubtype().add("Arcane"); - this.setScopeSubtype(Filter.ComparisonScope.Any); + this.add(Predicates.or(new SubtypePredicate("Spirit"),new SubtypePredicate("Arcane"))); } public FilterSpiritOrArcaneCard(final FilterSpiritOrArcaneCard filter) { diff --git a/Mage/src/mage/game/GameImpl.java b/Mage/src/mage/game/GameImpl.java index f8c408f85f5..d546af23818 100644 --- a/Mage/src/mage/game/GameImpl.java +++ b/Mage/src/mage/game/GameImpl.java @@ -85,6 +85,7 @@ import org.apache.log4j.Logger; import java.io.IOException; import java.io.Serializable; import java.util.*; +import mage.filter.predicate.mageobject.SubtypePredicate; public abstract class GameImpl> implements Game, Serializable { @@ -1036,8 +1037,7 @@ public abstract class GameImpl> implements Game, Serializa for (Permanent planeswalker: planeswalkers) { for (String planeswalkertype: planeswalker.getSubtype()) { FilterPlaneswalkerPermanent filterPlaneswalker = new FilterPlaneswalkerPermanent(); - filterPlaneswalker.getSubtype().add(planeswalkertype); - filterPlaneswalker.setScopeSubtype(ComparisonScope.Any); + filterPlaneswalker.add(new SubtypePredicate(planeswalkertype)); if (getBattlefield().contains(filterPlaneswalker, planeswalker.getControllerId(), this, 2)) { for (Permanent perm: getBattlefield().getActivePermanents(filterPlaneswalker, planeswalker.getControllerId(), this)) { perm.moveToZone(Zone.GRAVEYARD, null, this, false); From dcfd5ece0cd7f320c93c909f87731204d98d5c29 Mon Sep 17 00:00:00 2001 From: North Date: Thu, 12 Jul 2012 00:04:44 +0300 Subject: [PATCH 07/12] [filters][refactoring] Minor changes to Predicates --- Mage/src/mage/filter/FilterImpl.java | 6 +++--- .../mage/filter/predicate/mageobject/AbilityPredicate.java | 4 ++-- .../mage/filter/predicate/mageobject/CardTypePredicate.java | 4 ++-- .../mage/filter/predicate/mageobject/ColorPredicate.java | 4 ++-- .../filter/predicate/mageobject/ColorlessPredicate.java | 4 ++-- .../predicate/mageobject/ConvertedManaCostPredicate.java | 4 ++-- .../src/mage/filter/predicate/mageobject/NamePredicate.java | 4 ++-- .../mage/filter/predicate/mageobject/PowerPredicate.java | 4 ++-- .../mage/filter/predicate/mageobject/SubtypePredicate.java | 4 ++-- .../filter/predicate/mageobject/SupertypePredicate.java | 4 ++-- .../filter/predicate/mageobject/ToughnessPredicate.java | 4 ++-- 11 files changed, 23 insertions(+), 23 deletions(-) diff --git a/Mage/src/mage/filter/FilterImpl.java b/Mage/src/mage/filter/FilterImpl.java index bbbc1662b05..4757dab3325 100644 --- a/Mage/src/mage/filter/FilterImpl.java +++ b/Mage/src/mage/filter/FilterImpl.java @@ -28,7 +28,7 @@ package mage.filter; -import java.util.LinkedList; +import java.util.ArrayList; import java.util.List; import mage.Constants.CardType; import mage.filter.predicate.Predicate; @@ -44,7 +44,7 @@ public abstract class FilterImpl> implements Filte protected static ListComparer compCardType = new ListComparer(); protected static ListComparer compString = new ListComparer(); - protected List predicates = new LinkedList(); + protected List predicates = new ArrayList(); protected String message; protected boolean notFilter = false; @@ -58,7 +58,7 @@ public abstract class FilterImpl> implements Filte public FilterImpl(FilterImpl filter) { this.message = filter.message; this.notFilter = filter.notFilter; - this.predicates = new LinkedList(filter.predicates); + this.predicates = new ArrayList(filter.predicates); } @Override diff --git a/Mage/src/mage/filter/predicate/mageobject/AbilityPredicate.java b/Mage/src/mage/filter/predicate/mageobject/AbilityPredicate.java index 312fae73141..1deeefdd75a 100644 --- a/Mage/src/mage/filter/predicate/mageobject/AbilityPredicate.java +++ b/Mage/src/mage/filter/predicate/mageobject/AbilityPredicate.java @@ -37,7 +37,7 @@ import mage.game.Game; * * @author North */ -public class AbilityPredicate implements Predicate { +public class AbilityPredicate implements Predicate { private final Class abilityClass; @@ -46,7 +46,7 @@ public class AbilityPredicate implements Predicate { } @Override - public boolean apply(T input, Game game) { + public boolean apply(MageObject input, Game game) { Abilities abilities = input.getAbilities(); for (int i = 0; i < abilities.size(); i++) { if (abilityClass.equals(abilities.get(i).getClass())) { diff --git a/Mage/src/mage/filter/predicate/mageobject/CardTypePredicate.java b/Mage/src/mage/filter/predicate/mageobject/CardTypePredicate.java index f3f2ee9ac8a..a9774d766eb 100644 --- a/Mage/src/mage/filter/predicate/mageobject/CardTypePredicate.java +++ b/Mage/src/mage/filter/predicate/mageobject/CardTypePredicate.java @@ -36,7 +36,7 @@ import mage.game.Game; * * @author North */ -public class CardTypePredicate implements Predicate { +public class CardTypePredicate implements Predicate { private final CardType cardType; @@ -45,7 +45,7 @@ public class CardTypePredicate implements Predicate { } @Override - public boolean apply(T input, Game game) { + public boolean apply(MageObject input, Game game) { return input.getCardType().contains(cardType); } diff --git a/Mage/src/mage/filter/predicate/mageobject/ColorPredicate.java b/Mage/src/mage/filter/predicate/mageobject/ColorPredicate.java index f78c5826a2c..0eba7899aff 100644 --- a/Mage/src/mage/filter/predicate/mageobject/ColorPredicate.java +++ b/Mage/src/mage/filter/predicate/mageobject/ColorPredicate.java @@ -36,7 +36,7 @@ import mage.game.Game; * * @author North */ -public class ColorPredicate implements Predicate { +public class ColorPredicate implements Predicate { private final ObjectColor color; @@ -45,7 +45,7 @@ public class ColorPredicate implements Predicate { } @Override - public boolean apply(T input, Game game) { + public boolean apply(MageObject input, Game game) { return input.getColor().contains(color); } diff --git a/Mage/src/mage/filter/predicate/mageobject/ColorlessPredicate.java b/Mage/src/mage/filter/predicate/mageobject/ColorlessPredicate.java index 9d779a48956..8a7718bf386 100644 --- a/Mage/src/mage/filter/predicate/mageobject/ColorlessPredicate.java +++ b/Mage/src/mage/filter/predicate/mageobject/ColorlessPredicate.java @@ -35,10 +35,10 @@ import mage.game.Game; * * @author North */ -public class ColorlessPredicate implements Predicate { +public class ColorlessPredicate implements Predicate { @Override - public boolean apply(T input, Game game) { + public boolean apply(MageObject input, Game game) { return input.getColor().isColorless(); } diff --git a/Mage/src/mage/filter/predicate/mageobject/ConvertedManaCostPredicate.java b/Mage/src/mage/filter/predicate/mageobject/ConvertedManaCostPredicate.java index bb2b22fabf6..e6792d53330 100644 --- a/Mage/src/mage/filter/predicate/mageobject/ConvertedManaCostPredicate.java +++ b/Mage/src/mage/filter/predicate/mageobject/ConvertedManaCostPredicate.java @@ -35,14 +35,14 @@ import mage.filter.predicate.IntComparePredicate; * * @author North */ -public class ConvertedManaCostPredicate extends IntComparePredicate { +public class ConvertedManaCostPredicate extends IntComparePredicate { public ConvertedManaCostPredicate(Filter.ComparisonType type, int value) { super(type, value); } @Override - protected int getInputValue(T input) { + protected int getInputValue(MageObject input) { return input.getManaCost().convertedManaCost(); } diff --git a/Mage/src/mage/filter/predicate/mageobject/NamePredicate.java b/Mage/src/mage/filter/predicate/mageobject/NamePredicate.java index c0bead3cf0d..505e37efdef 100644 --- a/Mage/src/mage/filter/predicate/mageobject/NamePredicate.java +++ b/Mage/src/mage/filter/predicate/mageobject/NamePredicate.java @@ -35,7 +35,7 @@ import mage.game.Game; * * @author North */ -public class NamePredicate implements Predicate { +public class NamePredicate implements Predicate { private final String name; @@ -44,7 +44,7 @@ public class NamePredicate implements Predicate { } @Override - public boolean apply(T input, Game game) { + public boolean apply(MageObject input, Game game) { return name.equals(input.getName()); } diff --git a/Mage/src/mage/filter/predicate/mageobject/PowerPredicate.java b/Mage/src/mage/filter/predicate/mageobject/PowerPredicate.java index 218e29aa2b2..0fc1b03cdf9 100644 --- a/Mage/src/mage/filter/predicate/mageobject/PowerPredicate.java +++ b/Mage/src/mage/filter/predicate/mageobject/PowerPredicate.java @@ -35,14 +35,14 @@ import mage.filter.predicate.IntComparePredicate; * * @author North */ -public class PowerPredicate extends IntComparePredicate { +public class PowerPredicate extends IntComparePredicate { public PowerPredicate(Filter.ComparisonType type, int value) { super(type, value); } @Override - protected int getInputValue(T input) { + protected int getInputValue(MageObject input) { return input.getPower().getValue(); } diff --git a/Mage/src/mage/filter/predicate/mageobject/SubtypePredicate.java b/Mage/src/mage/filter/predicate/mageobject/SubtypePredicate.java index d19169f2ce3..b43518ae6e6 100644 --- a/Mage/src/mage/filter/predicate/mageobject/SubtypePredicate.java +++ b/Mage/src/mage/filter/predicate/mageobject/SubtypePredicate.java @@ -35,7 +35,7 @@ import mage.game.Game; * * @author North */ -public class SubtypePredicate implements Predicate { +public class SubtypePredicate implements Predicate { private final String subtype; @@ -44,7 +44,7 @@ public class SubtypePredicate implements Predicate { } @Override - public boolean apply(T input, Game game) { + public boolean apply(MageObject input, Game game) { return input.getSubtype().contains(subtype); } diff --git a/Mage/src/mage/filter/predicate/mageobject/SupertypePredicate.java b/Mage/src/mage/filter/predicate/mageobject/SupertypePredicate.java index dc681e1b2d3..ff0e5ed0afe 100644 --- a/Mage/src/mage/filter/predicate/mageobject/SupertypePredicate.java +++ b/Mage/src/mage/filter/predicate/mageobject/SupertypePredicate.java @@ -35,7 +35,7 @@ import mage.game.Game; * * @author North */ -public class SupertypePredicate implements Predicate { +public class SupertypePredicate implements Predicate { private final String supertype; @@ -44,7 +44,7 @@ public class SupertypePredicate implements Predicate { } @Override - public boolean apply(T input, Game game) { + public boolean apply(MageObject input, Game game) { return input.getSupertype().contains(supertype); } diff --git a/Mage/src/mage/filter/predicate/mageobject/ToughnessPredicate.java b/Mage/src/mage/filter/predicate/mageobject/ToughnessPredicate.java index e03231842fe..d1b2ef78ae5 100644 --- a/Mage/src/mage/filter/predicate/mageobject/ToughnessPredicate.java +++ b/Mage/src/mage/filter/predicate/mageobject/ToughnessPredicate.java @@ -35,14 +35,14 @@ import mage.filter.predicate.IntComparePredicate; * * @author North */ -public class ToughnessPredicate extends IntComparePredicate { +public class ToughnessPredicate extends IntComparePredicate { public ToughnessPredicate(Filter.ComparisonType type, int value) { super(type, value); } @Override - protected int getInputValue(T input) { + protected int getInputValue(MageObject input) { return input.getToughness().getValue(); } From c59087e82716c9f7f9dcc1779a9f21e3aed60d7a Mon Sep 17 00:00:00 2001 From: North Date: Thu, 12 Jul 2012 19:34:37 +0300 Subject: [PATCH 08/12] Fixed SubtypePredicate - treated case where object has Changeling --- .../mage/filter/predicate/mageobject/SubtypePredicate.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Mage/src/mage/filter/predicate/mageobject/SubtypePredicate.java b/Mage/src/mage/filter/predicate/mageobject/SubtypePredicate.java index b43518ae6e6..9c97346a187 100644 --- a/Mage/src/mage/filter/predicate/mageobject/SubtypePredicate.java +++ b/Mage/src/mage/filter/predicate/mageobject/SubtypePredicate.java @@ -28,6 +28,7 @@ package mage.filter.predicate.mageobject; import mage.MageObject; +import mage.abilities.keyword.ChangelingAbility; import mage.filter.predicate.Predicate; import mage.game.Game; @@ -45,6 +46,10 @@ public class SubtypePredicate implements Predicate { @Override public boolean apply(MageObject input, Game game) { + if (input.getAbilities().contains(ChangelingAbility.getInstance())) { + return true; + } + return input.getSubtype().contains(subtype); } From 0d2053c6342ccf1c756cfa0a8a7b08b6a5acf068 Mon Sep 17 00:00:00 2001 From: North Date: Thu, 12 Jul 2012 20:09:34 +0300 Subject: [PATCH 09/12] [filters] Replaced abilities condition with Predicate --- .../mage/sets/apocalypse/BloodfireDwarf.java | 5 +-- .../sets/avacynrestored/EatenBySpiders.java | 3 +- .../sets/avacynrestored/FavorableWinds.java | 3 +- .../mage/sets/avacynrestored/Thunderbolt.java | 3 +- .../sets/championsofkamigawa/Earthshaker.java | 6 ++-- .../sets/championsofkamigawa/GaleForce.java | 3 +- .../RyuseiTheFallingStar.java | 5 +-- .../mage/sets/conflux/ScattershotArcher.java | 3 +- .../sets/darkascension/CrushingVines.java | 3 +- .../mage/sets/guildpact/TiborAndLumia.java | 5 +-- .../mage/sets/innistrad/DaybreakRanger.java | 3 +- .../mage/sets/innistrad/GeistcatchersRig.java | 3 +- .../mage/sets/innistrad/OneEyedScarecrow.java | 3 +- .../mage/sets/innistrad/RollingTemblor.java | 5 +-- .../mage/sets/innistrad/RunicRepetition.java | 5 ++- .../src/mage/sets/lorwyn/HurlyBurly.java | 7 +++-- .../src/mage/sets/magic2010/Earthquake.java | 5 +-- .../src/mage/sets/magic2010/Windstorm.java | 3 +- .../src/mage/sets/magic2011/AirServant.java | 3 +- .../src/mage/sets/magic2011/Plummet.java | 3 +- .../sets/magic2012/StingerflingSpider.java | 3 +- .../sets/magic2013/ThundermawHellkite.java | 3 +- .../mage/sets/mirrodin/KrarkClanShaman.java | 5 +-- .../sets/mirrodinbesieged/PistusStrike.java | 7 +++-- .../sets/morningtide/LysAlanaBowmaster.java | 3 +- .../mage/sets/newphyrexia/CorrosiveGale.java | 3 +- .../mage/sets/onslaught/SilklashSpider.java | 3 +- .../mage/sets/ravnika/ElvishSkysweeper.java | 3 +- .../riseoftheeldrazi/GravitationalShift.java | 17 +++++----- .../riseoftheeldrazi/GrotagSiegeRunner.java | 3 +- .../mage/sets/riseoftheeldrazi/LeafArrow.java | 3 +- .../riseoftheeldrazi/OvergrownBattlement.java | 3 +- .../StalwartShieldBearers.java | 3 +- .../sets/riseoftheeldrazi/VentSentinel.java | 3 +- .../mage/sets/scarsofmirrodin/CorpseCur.java | 5 ++- .../scarsofmirrodin/HandOfThePraetors.java | 6 ++-- .../sets/scarsofmirrodin/WingPuncture.java | 3 +- .../src/mage/sets/tempest/NeedleStorm.java | 3 +- .../src/mage/sets/tenth/FemerefArchers.java | 3 +- Mage.Sets/src/mage/sets/tenth/Quicksand.java | 5 +-- .../sets/zendikar/MerfolkSeastalkers.java | 5 +-- .../mage/sets/zendikar/OranRiefRecluse.java | 3 +- .../mage/sets/zendikar/SeismicShudder.java | 5 +-- .../src/mage/sets/zendikar/TajuruArcher.java | 3 +- Mage/src/mage/filter/FilterObject.java | 31 ------------------- .../common/FilterCreatureForAttack.java | 5 +-- 46 files changed, 113 insertions(+), 105 deletions(-) diff --git a/Mage.Sets/src/mage/sets/apocalypse/BloodfireDwarf.java b/Mage.Sets/src/mage/sets/apocalypse/BloodfireDwarf.java index 5b1e30f1c94..3499f6b26ac 100644 --- a/Mage.Sets/src/mage/sets/apocalypse/BloodfireDwarf.java +++ b/Mage.Sets/src/mage/sets/apocalypse/BloodfireDwarf.java @@ -42,6 +42,8 @@ import mage.abilities.effects.common.DamageAllEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.AbilityPredicate; /** * @author Loki @@ -51,8 +53,7 @@ public class BloodfireDwarf extends CardImpl { private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("creature without flying"); static { - filter.getAbilities().add(FlyingAbility.getInstance()); - filter.setNotAbilities(true); + filter.add(Predicates.not(new AbilityPredicate(FlyingAbility.class))); } public BloodfireDwarf(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/avacynrestored/EatenBySpiders.java b/Mage.Sets/src/mage/sets/avacynrestored/EatenBySpiders.java index 4de169fdb8c..e3080f6dbb9 100644 --- a/Mage.Sets/src/mage/sets/avacynrestored/EatenBySpiders.java +++ b/Mage.Sets/src/mage/sets/avacynrestored/EatenBySpiders.java @@ -37,6 +37,7 @@ import mage.abilities.effects.OneShotEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.AbilityPredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.target.common.TargetCreaturePermanent; @@ -50,7 +51,7 @@ public class EatenBySpiders extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with flying"); static { - filter.getAbilities().add(FlyingAbility.getInstance()); + filter.add(new AbilityPredicate(FlyingAbility.class)); } public EatenBySpiders(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/avacynrestored/FavorableWinds.java b/Mage.Sets/src/mage/sets/avacynrestored/FavorableWinds.java index 00eccdecf1c..01d7dd3c034 100644 --- a/Mage.Sets/src/mage/sets/avacynrestored/FavorableWinds.java +++ b/Mage.Sets/src/mage/sets/avacynrestored/FavorableWinds.java @@ -35,6 +35,7 @@ import mage.abilities.effects.common.continious.BoostControlledEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.AbilityPredicate; import java.util.UUID; @@ -47,7 +48,7 @@ public class FavorableWinds extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Creatures you control with flying"); static { - filter.getAbilities().add(FlyingAbility.getInstance()); + filter.add(new AbilityPredicate(FlyingAbility.class)); } public FavorableWinds(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/avacynrestored/Thunderbolt.java b/Mage.Sets/src/mage/sets/avacynrestored/Thunderbolt.java index 1683b033deb..01f6e219e3a 100644 --- a/Mage.Sets/src/mage/sets/avacynrestored/Thunderbolt.java +++ b/Mage.Sets/src/mage/sets/avacynrestored/Thunderbolt.java @@ -35,6 +35,7 @@ import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.AbilityPredicate; import mage.target.TargetPlayer; import mage.target.common.TargetCreaturePermanent; @@ -47,7 +48,7 @@ public class Thunderbolt extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with flying"); static { - filter.getAbilities().add(FlyingAbility.getInstance()); + filter.add(new AbilityPredicate(FlyingAbility.class)); } public Thunderbolt(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/Earthshaker.java b/Mage.Sets/src/mage/sets/championsofkamigawa/Earthshaker.java index 5b07393c75a..3be850c322c 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/Earthshaker.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/Earthshaker.java @@ -33,7 +33,6 @@ import java.util.UUID; import mage.Constants.CardType; import mage.Constants.Rarity; import mage.MageInt; -import mage.abilities.Ability; import mage.abilities.common.SpellCastTriggeredAbility; import mage.abilities.dynamicvalue.common.StaticValue; import mage.abilities.effects.common.DamageAllEffect; @@ -41,6 +40,8 @@ import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; import mage.filter.common.FilterSpiritOrArcaneCard; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.AbilityPredicate; /** * @author Loki @@ -51,8 +52,7 @@ public class Earthshaker extends CardImpl { private final static FilterCreaturePermanent creatureFilter = new FilterCreaturePermanent("creature without flying"); static { - creatureFilter.getAbilities().add((Ability) FlyingAbility.getInstance()); - creatureFilter.setNotAbilities(true); + filter.add(Predicates.not(new AbilityPredicate(FlyingAbility.class))); } public Earthshaker(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/GaleForce.java b/Mage.Sets/src/mage/sets/championsofkamigawa/GaleForce.java index c9b3e757cfc..50f8970b096 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/GaleForce.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/GaleForce.java @@ -36,6 +36,7 @@ import mage.abilities.effects.common.DamageAllEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.AbilityPredicate; /** * @author Loki @@ -45,7 +46,7 @@ public class GaleForce extends CardImpl { private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with flying"); static { - filter.getAbilities().add(FlyingAbility.getInstance()); + filter.add(new AbilityPredicate(FlyingAbility.class)); } public GaleForce(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/RyuseiTheFallingStar.java b/Mage.Sets/src/mage/sets/championsofkamigawa/RyuseiTheFallingStar.java index d45bfb696f1..2e710791edd 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/RyuseiTheFallingStar.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/RyuseiTheFallingStar.java @@ -35,6 +35,8 @@ import mage.abilities.effects.common.DamageAllEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.AbilityPredicate; import java.util.UUID; @@ -46,8 +48,7 @@ public class RyuseiTheFallingStar extends CardImpl { private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("creature without flying"); static { - filter.getAbilities().add(FlyingAbility.getInstance()); - filter.setNotAbilities(true); + filter.add(Predicates.not(new AbilityPredicate(FlyingAbility.class))); } public RyuseiTheFallingStar(UUID ownerID) { diff --git a/Mage.Sets/src/mage/sets/conflux/ScattershotArcher.java b/Mage.Sets/src/mage/sets/conflux/ScattershotArcher.java index 8d52eea83bf..a9c4089fdba 100644 --- a/Mage.Sets/src/mage/sets/conflux/ScattershotArcher.java +++ b/Mage.Sets/src/mage/sets/conflux/ScattershotArcher.java @@ -38,6 +38,7 @@ import mage.abilities.effects.common.DamageAllEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.AbilityPredicate; /** * @@ -48,7 +49,7 @@ public class ScattershotArcher extends CardImpl { private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with flying"); static { - filter.getAbilities().add(FlyingAbility.getInstance()); + filter.add(new AbilityPredicate(FlyingAbility.class)); } public ScattershotArcher(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/darkascension/CrushingVines.java b/Mage.Sets/src/mage/sets/darkascension/CrushingVines.java index 7c2a91159b5..63b25dccc70 100644 --- a/Mage.Sets/src/mage/sets/darkascension/CrushingVines.java +++ b/Mage.Sets/src/mage/sets/darkascension/CrushingVines.java @@ -35,6 +35,7 @@ import mage.abilities.effects.common.DestroyTargetEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.AbilityPredicate; import mage.target.common.TargetArtifactPermanent; import mage.target.common.TargetCreaturePermanent; @@ -47,7 +48,7 @@ public class CrushingVines extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with flying"); static { - filter.getAbilities().add(FlyingAbility.getInstance()); + filter.add(new AbilityPredicate(FlyingAbility.class)); } public CrushingVines(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/guildpact/TiborAndLumia.java b/Mage.Sets/src/mage/sets/guildpact/TiborAndLumia.java index 2942d7d9794..8c555966522 100644 --- a/Mage.Sets/src/mage/sets/guildpact/TiborAndLumia.java +++ b/Mage.Sets/src/mage/sets/guildpact/TiborAndLumia.java @@ -40,6 +40,8 @@ import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.filter.FilterSpell; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.AbilityPredicate; import mage.target.common.TargetCreaturePermanent; /** @@ -55,8 +57,7 @@ public class TiborAndLumia extends CardImpl { static { filterBlue.setUseColor(true); filterBlue.getColor().setBlue(true); - filter.getAbilities().add(FlyingAbility.getInstance()); - filter.setNotAbilities(true); + filter.add(Predicates.not(new AbilityPredicate(FlyingAbility.class))); filterRed.setUseColor(true); filterRed.getColor().setRed(true); } diff --git a/Mage.Sets/src/mage/sets/innistrad/DaybreakRanger.java b/Mage.Sets/src/mage/sets/innistrad/DaybreakRanger.java index a02761e6a5e..554a9a77b6b 100644 --- a/Mage.Sets/src/mage/sets/innistrad/DaybreakRanger.java +++ b/Mage.Sets/src/mage/sets/innistrad/DaybreakRanger.java @@ -46,6 +46,7 @@ import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.TransformAbility; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.AbilityPredicate; import mage.target.common.TargetCreaturePermanent; /** @@ -57,7 +58,7 @@ public class DaybreakRanger extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with flying"); static { - filter.getAbilities().add(FlyingAbility.getInstance()); + filter.add(new AbilityPredicate(FlyingAbility.class)); } public DaybreakRanger(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/innistrad/GeistcatchersRig.java b/Mage.Sets/src/mage/sets/innistrad/GeistcatchersRig.java index 2d69001af32..ca0dad1491a 100644 --- a/Mage.Sets/src/mage/sets/innistrad/GeistcatchersRig.java +++ b/Mage.Sets/src/mage/sets/innistrad/GeistcatchersRig.java @@ -37,6 +37,7 @@ import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.AbilityPredicate; import mage.target.common.TargetCreaturePermanent; /** @@ -48,7 +49,7 @@ public class GeistcatchersRig extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with flying"); static { - filter.getAbilities().add(FlyingAbility.getInstance()); + filter.add(new AbilityPredicate(FlyingAbility.class)); } public GeistcatchersRig(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/innistrad/OneEyedScarecrow.java b/Mage.Sets/src/mage/sets/innistrad/OneEyedScarecrow.java index 7ba2d837df2..463118414d7 100644 --- a/Mage.Sets/src/mage/sets/innistrad/OneEyedScarecrow.java +++ b/Mage.Sets/src/mage/sets/innistrad/OneEyedScarecrow.java @@ -40,6 +40,7 @@ import mage.abilities.keyword.DefenderAbility; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.AbilityPredicate; /** * @@ -50,7 +51,7 @@ public class OneEyedScarecrow extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Creatures with flying your opponents control"); static { - filter.getAbilities().add(FlyingAbility.getInstance()); + filter.add(new AbilityPredicate(FlyingAbility.class)); filter.setTargetController(TargetController.OPPONENT); } diff --git a/Mage.Sets/src/mage/sets/innistrad/RollingTemblor.java b/Mage.Sets/src/mage/sets/innistrad/RollingTemblor.java index fd0a771a358..ffbff5762cf 100644 --- a/Mage.Sets/src/mage/sets/innistrad/RollingTemblor.java +++ b/Mage.Sets/src/mage/sets/innistrad/RollingTemblor.java @@ -37,6 +37,8 @@ import mage.abilities.keyword.FlashbackAbility; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.AbilityPredicate; /** * @@ -47,8 +49,7 @@ public class RollingTemblor extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature without flying"); static { - filter.getAbilities().add(FlyingAbility.getInstance()); - filter.setNotAbilities(true); + filter.add(Predicates.not(new AbilityPredicate(FlyingAbility.class))); } public RollingTemblor(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/innistrad/RunicRepetition.java b/Mage.Sets/src/mage/sets/innistrad/RunicRepetition.java index 7a59630fb51..e9cd8f2491b 100644 --- a/Mage.Sets/src/mage/sets/innistrad/RunicRepetition.java +++ b/Mage.Sets/src/mage/sets/innistrad/RunicRepetition.java @@ -31,12 +31,11 @@ import java.util.UUID; import mage.Constants.CardType; import mage.Constants.Rarity; import mage.Constants.TargetController; -import mage.Constants.TimingRule; -import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.common.ReturnToHandTargetEffect; import mage.abilities.keyword.FlashbackAbility; import mage.cards.CardImpl; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.AbilityPredicate; import mage.target.common.TargetCardInExile; /** @@ -49,7 +48,7 @@ public class RunicRepetition extends CardImpl { static { filter.setTargetOwner(TargetController.YOU); - filter.getAbilities().add(new FlashbackAbility(new ManaCostsImpl("{0}"), TimingRule.INSTANT)); + filter.add(new AbilityPredicate(FlashbackAbility.class)); } public RunicRepetition(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/lorwyn/HurlyBurly.java b/Mage.Sets/src/mage/sets/lorwyn/HurlyBurly.java index f19875f8f22..89d93cc61a0 100644 --- a/Mage.Sets/src/mage/sets/lorwyn/HurlyBurly.java +++ b/Mage.Sets/src/mage/sets/lorwyn/HurlyBurly.java @@ -34,6 +34,8 @@ import mage.abilities.effects.common.DamageAllEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.AbilityPredicate; import java.util.UUID; @@ -47,9 +49,8 @@ public class HurlyBurly extends CardImpl { private final static FilterCreaturePermanent filterWithFlying = new FilterCreaturePermanent("creature with flying"); static { - filterWithoutFlying.getAbilities().add(FlyingAbility.getInstance()); - filterWithoutFlying.setNotAbilities(true); - filterWithFlying.getAbilities().add(FlyingAbility.getInstance()); + filterWithoutFlying.add(Predicates.not(new AbilityPredicate(FlyingAbility.class))); + filterWithFlying.add(new AbilityPredicate(FlyingAbility.class)); } public HurlyBurly(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/magic2010/Earthquake.java b/Mage.Sets/src/mage/sets/magic2010/Earthquake.java index fb82a3233e0..8718f19006f 100644 --- a/Mage.Sets/src/mage/sets/magic2010/Earthquake.java +++ b/Mage.Sets/src/mage/sets/magic2010/Earthquake.java @@ -37,6 +37,8 @@ import mage.abilities.effects.OneShotEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.AbilityPredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; @@ -69,8 +71,7 @@ class EarthquakeEffect extends OneShotEffect { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent(); static { - filter.getAbilities().add(FlyingAbility.getInstance()); - filter.setNotAbilities(true); + filter.add(Predicates.not(new AbilityPredicate(FlyingAbility.class))); } public EarthquakeEffect() { diff --git a/Mage.Sets/src/mage/sets/magic2010/Windstorm.java b/Mage.Sets/src/mage/sets/magic2010/Windstorm.java index 23c1cb4f616..6665af70644 100644 --- a/Mage.Sets/src/mage/sets/magic2010/Windstorm.java +++ b/Mage.Sets/src/mage/sets/magic2010/Windstorm.java @@ -35,6 +35,7 @@ import mage.abilities.effects.common.DamageAllEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.AbilityPredicate; /** * @@ -45,7 +46,7 @@ public class Windstorm extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with flying"); static { - filter.getAbilities().add(FlyingAbility.getInstance()); + filter.add(new AbilityPredicate(FlyingAbility.class)); } public Windstorm(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/magic2011/AirServant.java b/Mage.Sets/src/mage/sets/magic2011/AirServant.java index 8fcf1fcc2d1..9ab5e6caa18 100644 --- a/Mage.Sets/src/mage/sets/magic2011/AirServant.java +++ b/Mage.Sets/src/mage/sets/magic2011/AirServant.java @@ -40,6 +40,7 @@ import mage.abilities.effects.common.TapTargetEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.AbilityPredicate; import mage.target.common.TargetCreaturePermanent; /** @@ -51,7 +52,7 @@ public class AirServant extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with flying"); static { - filter.getAbilities().add(FlyingAbility.getInstance()); + filter.add(new AbilityPredicate(FlyingAbility.class)); } public AirServant(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/magic2011/Plummet.java b/Mage.Sets/src/mage/sets/magic2011/Plummet.java index 6cfaa70d4da..e2a99a8e4aa 100644 --- a/Mage.Sets/src/mage/sets/magic2011/Plummet.java +++ b/Mage.Sets/src/mage/sets/magic2011/Plummet.java @@ -36,6 +36,7 @@ import mage.abilities.effects.common.DestroyTargetEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.AbilityPredicate; import mage.target.common.TargetCreaturePermanent; /** @@ -47,7 +48,7 @@ public class Plummet extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with flying"); static { - filter.getAbilities().add(FlyingAbility.getInstance()); + filter.add(new AbilityPredicate(FlyingAbility.class)); } public Plummet(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/magic2012/StingerflingSpider.java b/Mage.Sets/src/mage/sets/magic2012/StingerflingSpider.java index fa68340a7c9..e3303fbad5b 100644 --- a/Mage.Sets/src/mage/sets/magic2012/StingerflingSpider.java +++ b/Mage.Sets/src/mage/sets/magic2012/StingerflingSpider.java @@ -40,6 +40,7 @@ import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.ReachAbility; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.AbilityPredicate; import mage.target.common.TargetCreaturePermanent; /** @@ -50,7 +51,7 @@ public class StingerflingSpider extends CardImpl { private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with flying"); static { - filter.getAbilities().add(FlyingAbility.getInstance()); + filter.add(new AbilityPredicate(FlyingAbility.class)); } public StingerflingSpider(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/magic2013/ThundermawHellkite.java b/Mage.Sets/src/mage/sets/magic2013/ThundermawHellkite.java index 244431f3355..0077b9be78a 100644 --- a/Mage.Sets/src/mage/sets/magic2013/ThundermawHellkite.java +++ b/Mage.Sets/src/mage/sets/magic2013/ThundermawHellkite.java @@ -40,6 +40,7 @@ import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.HasteAbility; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.AbilityPredicate; import mage.game.Game; import mage.game.permanent.Permanent; @@ -52,7 +53,7 @@ public class ThundermawHellkite extends CardImpl { final static FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures with flying your opponents control"); static { - filter.getAbilities().add(FlyingAbility.getInstance()); + filter.add(new AbilityPredicate(FlyingAbility.class)); filter.setTargetController(Constants.TargetController.OPPONENT); } diff --git a/Mage.Sets/src/mage/sets/mirrodin/KrarkClanShaman.java b/Mage.Sets/src/mage/sets/mirrodin/KrarkClanShaman.java index e1fd6f67d6e..8db4b02976e 100644 --- a/Mage.Sets/src/mage/sets/mirrodin/KrarkClanShaman.java +++ b/Mage.Sets/src/mage/sets/mirrodin/KrarkClanShaman.java @@ -41,6 +41,8 @@ import mage.cards.CardImpl; import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.AbilityPredicate; import mage.target.common.TargetControlledPermanent; /** @@ -54,8 +56,7 @@ public class KrarkClanShaman extends CardImpl { static { filterSacrificed.getCardType().add(CardType.ARTIFACT); filterSacrificed.setScopeCardType(Filter.ComparisonScope.Any); - filterTargetedCreatures.getAbilities().add(FlyingAbility.getInstance()); - filterTargetedCreatures.setNotAbilities(true); + filterTargetedCreatures.add(Predicates.not(new AbilityPredicate(FlyingAbility.class))); } diff --git a/Mage.Sets/src/mage/sets/mirrodinbesieged/PistusStrike.java b/Mage.Sets/src/mage/sets/mirrodinbesieged/PistusStrike.java index def7eaa174a..b4b4dbb8cff 100644 --- a/Mage.Sets/src/mage/sets/mirrodinbesieged/PistusStrike.java +++ b/Mage.Sets/src/mage/sets/mirrodinbesieged/PistusStrike.java @@ -33,13 +33,14 @@ import mage.Constants.CardType; import mage.Constants.Outcome; import mage.Constants.Rarity; import mage.Constants.Zone; -import mage.cards.CardImpl; -import mage.counters.CounterType; import mage.abilities.Ability; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.DestroyTargetEffect; import mage.abilities.keyword.FlyingAbility; +import mage.cards.CardImpl; +import mage.counters.CounterType; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.AbilityPredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; @@ -54,7 +55,7 @@ public class PistusStrike extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with flying"); static { - filter.getAbilities().add(FlyingAbility.getInstance()); + filter.add(new AbilityPredicate(FlyingAbility.class)); } public PistusStrike(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/morningtide/LysAlanaBowmaster.java b/Mage.Sets/src/mage/sets/morningtide/LysAlanaBowmaster.java index b066360250a..f5878cdfd00 100644 --- a/Mage.Sets/src/mage/sets/morningtide/LysAlanaBowmaster.java +++ b/Mage.Sets/src/mage/sets/morningtide/LysAlanaBowmaster.java @@ -39,6 +39,7 @@ import mage.abilities.keyword.ReachAbility; import mage.cards.CardImpl; import mage.filter.FilterSpell; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.AbilityPredicate; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetCreaturePermanent; @@ -53,7 +54,7 @@ public class LysAlanaBowmaster extends CardImpl { static { filterElf.add(new SubtypePredicate("Elf")); - filterFlying.getAbilities().add(FlyingAbility.getInstance()); + filterFlying.add(new AbilityPredicate(FlyingAbility.class)); } public LysAlanaBowmaster(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/newphyrexia/CorrosiveGale.java b/Mage.Sets/src/mage/sets/newphyrexia/CorrosiveGale.java index 06361ded6b2..cdfd8f26624 100644 --- a/Mage.Sets/src/mage/sets/newphyrexia/CorrosiveGale.java +++ b/Mage.Sets/src/mage/sets/newphyrexia/CorrosiveGale.java @@ -35,6 +35,7 @@ import mage.abilities.effects.common.DamageAllEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.AbilityPredicate; /** * @@ -45,7 +46,7 @@ public class CorrosiveGale extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with flying"); static { - filter.getAbilities().add(FlyingAbility.getInstance()); + filter.add(new AbilityPredicate(FlyingAbility.class)); } public CorrosiveGale(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/onslaught/SilklashSpider.java b/Mage.Sets/src/mage/sets/onslaught/SilklashSpider.java index 2b5393b0d46..516ae41f9e6 100644 --- a/Mage.Sets/src/mage/sets/onslaught/SilklashSpider.java +++ b/Mage.Sets/src/mage/sets/onslaught/SilklashSpider.java @@ -40,6 +40,7 @@ import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.ReachAbility; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.AbilityPredicate; /** * @@ -50,7 +51,7 @@ public class SilklashSpider extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with flying"); static { - filter.getAbilities().add(FlyingAbility.getInstance()); + filter.add(new AbilityPredicate(FlyingAbility.class)); } public SilklashSpider(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/ravnika/ElvishSkysweeper.java b/Mage.Sets/src/mage/sets/ravnika/ElvishSkysweeper.java index d8547a9c919..47eb415f581 100644 --- a/Mage.Sets/src/mage/sets/ravnika/ElvishSkysweeper.java +++ b/Mage.Sets/src/mage/sets/ravnika/ElvishSkysweeper.java @@ -41,6 +41,7 @@ import mage.abilities.effects.common.DestroyTargetEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.AbilityPredicate; import mage.target.common.TargetControlledCreaturePermanent; import mage.target.common.TargetCreaturePermanent; @@ -53,7 +54,7 @@ public class ElvishSkysweeper extends CardImpl { private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with flying"); static { - filter.getAbilities().add(FlyingAbility.getInstance()); + filter.add(new AbilityPredicate(FlyingAbility.class)); } public ElvishSkysweeper(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/riseoftheeldrazi/GravitationalShift.java b/Mage.Sets/src/mage/sets/riseoftheeldrazi/GravitationalShift.java index 0eb3def153d..7e4fb573b33 100644 --- a/Mage.Sets/src/mage/sets/riseoftheeldrazi/GravitationalShift.java +++ b/Mage.Sets/src/mage/sets/riseoftheeldrazi/GravitationalShift.java @@ -29,14 +29,16 @@ package mage.sets.riseoftheeldrazi; import java.util.UUID; import mage.Constants.CardType; +import mage.Constants.Duration; import mage.Constants.Rarity; +import mage.Constants.Zone; +import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.effects.common.continious.BoostAllEffect; +import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; -import mage.abilities.keyword.FlyingAbility; -import mage.Constants.Duration; -import mage.abilities.effects.common.continious.BoostAllEffect; -import mage.abilities.common.SimpleStaticAbility; -import mage.Constants.Zone; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.AbilityPredicate; /** * @@ -48,9 +50,8 @@ public class GravitationalShift extends CardImpl { private final static FilterCreaturePermanent filter2 = new FilterCreaturePermanent("Creatures without flying"); static { - filter1.getAbilities().add(FlyingAbility.getInstance()); - filter2.getAbilities().add(FlyingAbility.getInstance()); - filter2.setNotAbilities(true); + filter1.add(new AbilityPredicate(FlyingAbility.class)); + filter2.add(Predicates.not(new AbilityPredicate(FlyingAbility.class))); } public GravitationalShift(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/riseoftheeldrazi/GrotagSiegeRunner.java b/Mage.Sets/src/mage/sets/riseoftheeldrazi/GrotagSiegeRunner.java index 9d313a31b78..aac7398004d 100644 --- a/Mage.Sets/src/mage/sets/riseoftheeldrazi/GrotagSiegeRunner.java +++ b/Mage.Sets/src/mage/sets/riseoftheeldrazi/GrotagSiegeRunner.java @@ -42,6 +42,7 @@ import mage.abilities.effects.common.DestroyTargetEffect; import mage.abilities.keyword.DefenderAbility; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.AbilityPredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; @@ -56,7 +57,7 @@ public class GrotagSiegeRunner extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with defender"); static { - filter.getAbilities().add(DefenderAbility.getInstance()); + filter.add(new AbilityPredicate(DefenderAbility.class)); } public GrotagSiegeRunner(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/riseoftheeldrazi/LeafArrow.java b/Mage.Sets/src/mage/sets/riseoftheeldrazi/LeafArrow.java index e75b0b13ebe..19da629bf74 100644 --- a/Mage.Sets/src/mage/sets/riseoftheeldrazi/LeafArrow.java +++ b/Mage.Sets/src/mage/sets/riseoftheeldrazi/LeafArrow.java @@ -34,6 +34,7 @@ import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.AbilityPredicate; import mage.target.common.TargetCreaturePermanent; /** @@ -45,7 +46,7 @@ public class LeafArrow extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with flying"); static { - filter.getAbilities().add(FlyingAbility.getInstance()); + filter.add(new AbilityPredicate(FlyingAbility.class)); } public LeafArrow(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/riseoftheeldrazi/OvergrownBattlement.java b/Mage.Sets/src/mage/sets/riseoftheeldrazi/OvergrownBattlement.java index 06ded540036..e99ed3a8827 100644 --- a/Mage.Sets/src/mage/sets/riseoftheeldrazi/OvergrownBattlement.java +++ b/Mage.Sets/src/mage/sets/riseoftheeldrazi/OvergrownBattlement.java @@ -37,6 +37,7 @@ import mage.abilities.keyword.DefenderAbility; import mage.abilities.mana.DynamicManaAbility; import mage.cards.CardImpl; import mage.filter.common.FilterControlledCreaturePermanent; +import mage.filter.predicate.mageobject.AbilityPredicate; /** * @@ -47,7 +48,7 @@ public class OvergrownBattlement extends CardImpl { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("creature with defender you control"); static { - filter.getAbilities().add(DefenderAbility.getInstance()); + filter.add(new AbilityPredicate(DefenderAbility.class)); } public OvergrownBattlement(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/riseoftheeldrazi/StalwartShieldBearers.java b/Mage.Sets/src/mage/sets/riseoftheeldrazi/StalwartShieldBearers.java index 4f0e9fbd5e3..c7d3017cd07 100644 --- a/Mage.Sets/src/mage/sets/riseoftheeldrazi/StalwartShieldBearers.java +++ b/Mage.Sets/src/mage/sets/riseoftheeldrazi/StalwartShieldBearers.java @@ -38,6 +38,7 @@ import mage.abilities.effects.common.continious.BoostControlledEffect; import mage.abilities.keyword.DefenderAbility; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.AbilityPredicate; /** * @@ -48,7 +49,7 @@ public class StalwartShieldBearers extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with defender"); static { - filter.getAbilities().add(DefenderAbility.getInstance()); + filter.add(new AbilityPredicate(DefenderAbility.class)); } public StalwartShieldBearers(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/riseoftheeldrazi/VentSentinel.java b/Mage.Sets/src/mage/sets/riseoftheeldrazi/VentSentinel.java index eda1254c9ef..d53efdde66e 100644 --- a/Mage.Sets/src/mage/sets/riseoftheeldrazi/VentSentinel.java +++ b/Mage.Sets/src/mage/sets/riseoftheeldrazi/VentSentinel.java @@ -40,6 +40,7 @@ import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.keyword.DefenderAbility; import mage.cards.CardImpl; import mage.filter.common.FilterControlledCreaturePermanent; +import mage.filter.predicate.mageobject.AbilityPredicate; import mage.target.TargetPlayer; /** @@ -49,7 +50,7 @@ import mage.target.TargetPlayer; public class VentSentinel extends CardImpl { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("creatures with defender you control"); static{ - filter.getAbilities().add(DefenderAbility.getInstance()); + filter.add(new AbilityPredicate(DefenderAbility.class)); } public VentSentinel(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/CorpseCur.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/CorpseCur.java index 66f624caa61..030a6fe254d 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/CorpseCur.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/CorpseCur.java @@ -38,6 +38,7 @@ import mage.abilities.effects.common.ReturnToHandTargetEffect; import mage.abilities.keyword.InfectAbility; import mage.cards.CardImpl; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.AbilityPredicate; import mage.target.common.TargetCardInYourGraveyard; /** @@ -49,9 +50,7 @@ public class CorpseCur extends CardImpl { private static final FilterCard filter = new FilterCard("creature card with infect from your graveyard"); static { - filter.getAbilities().add(InfectAbility.getInstance()); - filter.setNotAbilities(false); - + filter.add(new AbilityPredicate(InfectAbility.class)); } public CorpseCur (UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/HandOfThePraetors.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/HandOfThePraetors.java index f6150ded308..f4e0cf7cb7a 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/HandOfThePraetors.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/HandOfThePraetors.java @@ -45,6 +45,7 @@ import mage.abilities.effects.common.continious.BoostControlledEffect; import mage.abilities.common.SpellCastTriggeredAbility; import mage.filter.Filter; import mage.filter.FilterSpell; +import mage.filter.predicate.mageobject.AbilityPredicate; /** * @@ -56,9 +57,8 @@ public class HandOfThePraetors extends CardImpl { private static final FilterSpell filterSpell = new FilterSpell("a creature spell with infect"); static { - filter.getAbilities().add(InfectAbility.getInstance()); - filter.setNotAbilities(false); - filterSpell.getAbilities().add(InfectAbility.getInstance()); + filter.add(new AbilityPredicate(InfectAbility.class)); + filterSpell.add(new AbilityPredicate(InfectAbility.class)); filterSpell.getCardType().add(CardType.CREATURE); filterSpell.setScopeCardType(Filter.ComparisonScope.Any); } diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/WingPuncture.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/WingPuncture.java index bdc8a3eb463..9d980bee827 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/WingPuncture.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/WingPuncture.java @@ -36,6 +36,7 @@ import mage.abilities.effects.OneShotEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.AbilityPredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.target.common.TargetControlledCreaturePermanent; @@ -50,7 +51,7 @@ public class WingPuncture extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with flying"); static { - filter.getAbilities().add(FlyingAbility.getInstance()); + filter.add(new AbilityPredicate(FlyingAbility.class)); } public WingPuncture(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/tempest/NeedleStorm.java b/Mage.Sets/src/mage/sets/tempest/NeedleStorm.java index 098da068d8f..10e66f6e97f 100644 --- a/Mage.Sets/src/mage/sets/tempest/NeedleStorm.java +++ b/Mage.Sets/src/mage/sets/tempest/NeedleStorm.java @@ -35,6 +35,7 @@ import mage.abilities.effects.common.DamageAllEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.AbilityPredicate; /** * @author Loki @@ -44,7 +45,7 @@ public class NeedleStorm extends CardImpl { private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with flying"); static { - filter.getAbilities().add(FlyingAbility.getInstance()); + filter.add(new AbilityPredicate(FlyingAbility.class)); } public NeedleStorm(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/tenth/FemerefArchers.java b/Mage.Sets/src/mage/sets/tenth/FemerefArchers.java index 862f22f95a5..112da6f55e8 100644 --- a/Mage.Sets/src/mage/sets/tenth/FemerefArchers.java +++ b/Mage.Sets/src/mage/sets/tenth/FemerefArchers.java @@ -40,6 +40,7 @@ import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.filter.common.FilterAttackingCreature; +import mage.filter.predicate.mageobject.AbilityPredicate; import mage.target.common.TargetCreaturePermanent; /** @@ -51,7 +52,7 @@ public class FemerefArchers extends CardImpl { private final static FilterAttackingCreature filter = new FilterAttackingCreature("attacking creature with flying"); static { - filter.getAbilities().add(FlyingAbility.getInstance()); + filter.add(new AbilityPredicate(FlyingAbility.class)); } public FemerefArchers(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/tenth/Quicksand.java b/Mage.Sets/src/mage/sets/tenth/Quicksand.java index fbed96831de..c498403e8d8 100644 --- a/Mage.Sets/src/mage/sets/tenth/Quicksand.java +++ b/Mage.Sets/src/mage/sets/tenth/Quicksand.java @@ -40,6 +40,8 @@ import mage.abilities.keyword.FlyingAbility; import mage.abilities.mana.ColorlessManaAbility; import mage.cards.CardImpl; import mage.filter.common.FilterAttackingCreature; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.AbilityPredicate; import mage.target.common.TargetCreaturePermanent; /** @@ -51,8 +53,7 @@ public class Quicksand extends CardImpl { private static final FilterAttackingCreature filter = new FilterAttackingCreature("attacking creature without flying"); static { - filter.getAbilities().add(FlyingAbility.getInstance()); - filter.setNotAbilities(true); + filter.add(Predicates.not(new AbilityPredicate(FlyingAbility.class))); } public Quicksand(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/zendikar/MerfolkSeastalkers.java b/Mage.Sets/src/mage/sets/zendikar/MerfolkSeastalkers.java index 4714ac64829..491a118227c 100644 --- a/Mage.Sets/src/mage/sets/zendikar/MerfolkSeastalkers.java +++ b/Mage.Sets/src/mage/sets/zendikar/MerfolkSeastalkers.java @@ -39,6 +39,8 @@ import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.IslandwalkAbility; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.AbilityPredicate; import mage.target.common.TargetCreaturePermanent; /** @@ -50,8 +52,7 @@ public class MerfolkSeastalkers extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature without flying"); static { - filter.getAbilities().add(FlyingAbility.getInstance()); - filter.setNotAbilities(true); + filter.add(Predicates.not(new AbilityPredicate(FlyingAbility.class))); } public MerfolkSeastalkers(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/zendikar/OranRiefRecluse.java b/Mage.Sets/src/mage/sets/zendikar/OranRiefRecluse.java index e17185dca18..7a05e7bf40d 100644 --- a/Mage.Sets/src/mage/sets/zendikar/OranRiefRecluse.java +++ b/Mage.Sets/src/mage/sets/zendikar/OranRiefRecluse.java @@ -42,6 +42,7 @@ import mage.abilities.keyword.KickerAbility; import mage.abilities.keyword.ReachAbility; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.AbilityPredicate; import mage.target.common.TargetCreaturePermanent; /** @@ -53,7 +54,7 @@ public class OranRiefRecluse extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with flying"); static { - filter.getAbilities().add(FlyingAbility.getInstance()); + filter.add(new AbilityPredicate(FlyingAbility.class)); } public OranRiefRecluse(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/zendikar/SeismicShudder.java b/Mage.Sets/src/mage/sets/zendikar/SeismicShudder.java index 14e0f7f655e..a48a3067051 100644 --- a/Mage.Sets/src/mage/sets/zendikar/SeismicShudder.java +++ b/Mage.Sets/src/mage/sets/zendikar/SeismicShudder.java @@ -34,6 +34,8 @@ import mage.abilities.effects.common.DamageAllEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.AbilityPredicate; /** * @@ -44,8 +46,7 @@ public class SeismicShudder extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature without flying"); static { - filter.getAbilities().add(FlyingAbility.getInstance()); - filter.setNotAbilities(true); + filter.add(Predicates.not(new AbilityPredicate(FlyingAbility.class))); } public SeismicShudder(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/zendikar/TajuruArcher.java b/Mage.Sets/src/mage/sets/zendikar/TajuruArcher.java index 7a79aa3dadd..c49b55379fc 100644 --- a/Mage.Sets/src/mage/sets/zendikar/TajuruArcher.java +++ b/Mage.Sets/src/mage/sets/zendikar/TajuruArcher.java @@ -40,6 +40,7 @@ import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.AbilityPredicate; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetCreaturePermanent; @@ -55,7 +56,7 @@ public class TajuruArcher extends CardImpl { static { filter.add(new SubtypePredicate("Ally")); filter.setTargetController(Constants.TargetController.YOU); - filterTarget.getAbilities().add(FlyingAbility.getInstance()); + filterTarget.add(new AbilityPredicate(FlyingAbility.class)); } public TajuruArcher(UUID ownerId) { diff --git a/Mage/src/mage/filter/FilterObject.java b/Mage/src/mage/filter/FilterObject.java index a3f9b6b9a05..ca09a278d1a 100644 --- a/Mage/src/mage/filter/FilterObject.java +++ b/Mage/src/mage/filter/FilterObject.java @@ -31,10 +31,6 @@ package mage.filter; import mage.Constants.CardType; import mage.MageObject; import mage.ObjectColor; -import mage.abilities.Abilities; -import mage.abilities.AbilitiesImpl; -import mage.abilities.Ability; -import mage.abilities.keyword.ChangelingAbility; import mage.game.Game; import java.util.ArrayList; @@ -46,8 +42,6 @@ import java.util.List; * @author North */ public class FilterObject> extends FilterImpl implements Filter { - protected Abilities abilities; - protected boolean notAbilities; protected List cardType = new ArrayList(); protected ComparisonScope scopeCardType = ComparisonScope.Any; protected List notCardType = new ArrayList(); @@ -71,14 +65,11 @@ public class FilterObject> ex public FilterObject(String name) { super(name); - abilities = new AbilitiesImpl(); color = new ObjectColor(); } public FilterObject(FilterObject filter) { super(filter); - this.abilities = filter.abilities.copy(); - this.notAbilities = filter.notAbilities; this.cardType.addAll(filter.cardType); this.notCardType.addAll(filter.notCardType); this.scopeCardType = filter.scopeCardType; @@ -129,31 +120,9 @@ public class FilterObject> ex return notFilter; } - if (abilities.size() > 0) { - List test = new ArrayList(abilities); - for (Ability ability: object.getAbilities()) { - for (Ability abilityTest: test) { - if (ability == abilityTest || ability.getClass().equals(abilityTest.getClass())) { - test.remove(abilityTest); - break; - } - } - } - if (test.isEmpty() == notAbilities) - return notFilter; - } - return !notFilter; } - public Abilities getAbilities() { - return this.abilities; - } - - public void setNotAbilities(boolean notAbilities) { - this.notAbilities = notAbilities; - } - public List getCardType() { return this.cardType; } diff --git a/Mage/src/mage/filter/common/FilterCreatureForAttack.java b/Mage/src/mage/filter/common/FilterCreatureForAttack.java index 235b634d557..3b68b813539 100644 --- a/Mage/src/mage/filter/common/FilterCreatureForAttack.java +++ b/Mage/src/mage/filter/common/FilterCreatureForAttack.java @@ -29,6 +29,8 @@ package mage.filter.common; import mage.abilities.keyword.DefenderAbility; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.AbilityPredicate; import mage.game.Game; import mage.game.permanent.Permanent; @@ -50,8 +52,7 @@ public class FilterCreatureForAttack extends FilterCreaturePermanent Date: Thu, 12 Jul 2012 23:42:46 +0300 Subject: [PATCH 10/12] [filters] Replaced CardType conditions with Predicate --- .../mage/client/deckeditor/CardSelector.java | 133 +++++++++-------- .../deckeditor/table/CardTableSelector.java | 139 +++++++++--------- .../sets/alarareborn/FieldmistBorderpost.java | 5 +- .../mage/sets/alarareborn/FiligreeAngel.java | 6 +- .../sets/alarareborn/FirewildBorderpost.java | 5 +- .../sets/alarareborn/MistveinBorderpost.java | 5 +- .../sets/alarareborn/QasaliPridemage.java | 9 +- .../alarareborn/SpellbreakerBehemoth.java | 3 +- .../sets/alarareborn/VeinfireBorderpost.java | 5 +- .../sets/alarareborn/VithianRenegades.java | 5 +- .../sets/alarareborn/WildfieldBorderpost.java | 5 +- .../sets/apocalypse/DiversionaryTactics.java | 2 - .../mage/sets/apocalypse/GoblinTrenches.java | 5 +- .../mage/sets/apocalypse/OvergrownEstate.java | 5 +- .../mage/sets/apocalypse/QuagmireDruid.java | 5 +- Mage.Sets/src/mage/sets/apocalypse/Smash.java | 5 +- .../mage/sets/apocalypse/TranquilPath.java | 4 +- .../sets/avacynrestored/BanishingStroke.java | 11 +- .../sets/avacynrestored/BarterInBlood.java | 7 +- .../avacynrestored/BrunaLightOfAlabaster.java | 3 +- .../mage/sets/avacynrestored/Cursebreak.java | 5 +- .../sets/avacynrestored/DevoutChaplain.java | 9 +- .../mage/sets/avacynrestored/DualCasting.java | 9 +- .../mage/sets/avacynrestored/GeistSnatch.java | 3 +- .../sets/avacynrestored/GhostlyFlicker.java | 11 +- .../mage/sets/avacynrestored/LunarMystic.java | 3 +- .../mage/sets/avacynrestored/NaturalEnd.java | 9 +- .../mage/sets/avacynrestored/RiteOfRuin.java | 3 +- .../AkkiBlizzardHerder.java | 3 +- .../betrayersofkamigawa/FinalJudgment.java | 5 +- .../betrayersofkamigawa/Floodbringer.java | 5 +- .../championsofkamigawa/AkkiAvalanchers.java | 5 +- .../championsofkamigawa/AuraOfDominion.java | 2 - .../mage/sets/championsofkamigawa/Befoul.java | 12 +- .../championsofkamigawa/BudokaGardener.java | 5 +- .../sets/championsofkamigawa/Cleanfall.java | 5 +- .../CommuneWithNature.java | 8 +- .../championsofkamigawa/FeastOfWorms.java | 9 +- .../championsofkamigawa/Frostwielder.java | 5 +- .../championsofkamigawa/JoyousRespite.java | 5 +- .../championsofkamigawa/KamiOfAncientLaw.java | 5 +- .../KumanoMasterYamabushi.java | 15 +- .../championsofkamigawa/KumanosPupil.java | 5 +- .../MelokuTheCloudedMirror.java | 5 +- .../championsofkamigawa/MyojinOfLifesWeb.java | 3 +- .../PeerThroughDepths.java | 11 +- .../sets/championsofkamigawa/QuietPurity.java | 5 +- .../SoratamiCloudskater.java | 5 +- .../SoratamiMirrorGuard.java | 4 +- .../SoratamiMirrorMage.java | 5 +- .../SoratamiRainshaper.java | 5 +- .../championsofkamigawa/SoratamiSavant.java | 5 +- .../championsofkamigawa/SoratamiSeer.java | 5 +- .../championsofkamigawa/StrengthOfCedars.java | 5 +- .../sets/championsofkamigawa/TimeOfNeed.java | 3 +- .../championsofkamigawa/UyoSilentProphet.java | 9 +- .../src/mage/sets/conflux/Countersquall.java | 4 +- Mage.Sets/src/mage/sets/conflux/Esperzoa.java | 5 +- .../sets/conflux/EtherswornAdjudicator.java | 9 +- .../mage/sets/conflux/FaerieMechanist.java | 3 +- .../mage/sets/conflux/FiligreeFracture.java | 9 +- .../mage/sets/conflux/GoblinRazerunners.java | 7 +- .../sets/conflux/KnightOfTheReliquary.java | 5 +- .../src/mage/sets/conflux/MoltenFrame.java | 5 +- .../sets/conflux/NicolBolasPlaneswalker.java | 4 +- .../sets/conflux/SigilOfTheEmptyThrone.java | 3 +- .../sets/darkascension/AfflictedDeserter.java | 5 +- .../mage/sets/darkascension/BoneToAsh.java | 3 +- .../mage/sets/darkascension/Counterlash.java | 14 +- .../sets/darkascension/CurseOfEchoes.java | 9 +- .../mage/sets/darkascension/FeedThePack.java | 5 +- .../darkascension/IncreasingVengeance.java | 9 +- .../sets/darkascension/MysticRetrieval.java | 9 +- .../sets/darkascension/RayOfRevelation.java | 3 +- .../darkascension/SorinLordOfInnistrad.java | 9 +- .../mage/sets/darksteel/ArcaneSpyglass.java | 5 +- .../src/mage/sets/darksteel/Coretapper.java | 5 +- .../mage/sets/darksteel/DarksteelForge.java | 5 +- .../src/mage/sets/darksteel/EchoingCalm.java | 5 +- .../mage/sets/darksteel/EmissaryOfHope.java | 4 +- .../mage/sets/darksteel/KrarkClanStoker.java | 5 +- .../src/mage/sets/darksteel/MagneticFlux.java | 5 +- .../mage/sets/darksteel/NeurokProdigy.java | 5 +- .../src/mage/sets/darksteel/Oxidize.java | 5 +- .../src/mage/sets/darksteel/PteronGhost.java | 5 +- .../sets/darksteel/SlobadGoblinTinkerer.java | 8 +- .../src/mage/sets/darksteel/Soulscour.java | 7 +- .../sets/darksteel/SteelshaperApprentice.java | 3 +- .../mage/sets/darksteel/ViridianZealot.java | 9 +- .../mage/sets/darksteel/VoltaicConstruct.java | 5 +- .../mage/sets/dissension/AzoriusChancery.java | 5 +- .../sets/dissension/IndrikStomphowler.java | 9 +- .../mage/sets/dissension/RakdosCarnarium.java | 5 +- .../sets/dissension/SimicGrowthChamber.java | 5 +- .../sets/eventide/KithkinSpellduster.java | 5 +- .../sets/eventide/NoggleBridgebreaker.java | 5 +- .../src/mage/sets/eventide/Scarecrone.java | 7 +- .../mage/sets/eventide/WickerboughElder.java | 8 +- .../mage/sets/fifthedition/AshesToAshes.java | 4 +- .../sets/guildpact/DuneBroodNephilim.java | 5 +- .../src/mage/sets/guildpact/Gelectrode.java | 9 +- .../mage/sets/guildpact/GruulGuildmage.java | 3 +- .../mage/sets/guildpact/IzzetBoilerworks.java | 3 +- .../mage/sets/guildpact/IzzetChronarch.java | 9 +- .../src/mage/sets/guildpact/Mortify.java | 9 +- .../mage/sets/guildpact/OrzhovBasilica.java | 3 +- .../mage/sets/guildpact/WeeDragonauts.java | 9 +- .../src/mage/sets/guildpact/WreakHavoc.java | 9 +- .../mage/sets/innistrad/AncientGrudge.java | 5 +- .../src/mage/sets/innistrad/Bramblecrush.java | 4 +- .../sets/innistrad/CharmbreakerDevils.java | 13 +- .../sets/innistrad/GarrukTheVeilCursed.java | 5 +- .../mage/sets/innistrad/RunechantersPike.java | 9 +- .../mage/sets/innistrad/SilverchaseFox.java | 5 +- .../mage/sets/innistrad/SnapcasterMage.java | 9 +- .../mage/sets/innistrad/TributeToHunger.java | 3 +- .../src/mage/sets/magic2010/AcidicSlime.java | 11 +- Mage.Sets/src/mage/sets/magic2010/Duress.java | 6 +- .../mage/sets/magic2010/EssenceScatter.java | 3 +- .../src/mage/sets/magic2010/Fabricate.java | 5 +- .../mage/sets/magic2010/MesaEnchantress.java | 3 +- .../mage/sets/magic2010/NaturesSpiral.java | 15 +- Mage.Sets/src/mage/sets/magic2010/Negate.java | 4 +- .../mage/sets/magic2010/SolemnOffering.java | 9 +- .../mage/sets/magic2010/TempestOfLight.java | 5 +- .../src/mage/sets/magic2010/Twincast.java | 9 +- .../mage/sets/magic2010/YawningFissure.java | 3 +- .../src/mage/sets/magic2011/BackToNature.java | 3 +- .../src/mage/sets/magic2011/CallToMind.java | 9 +- .../mage/sets/magic2011/DestructiveForce.java | 3 +- .../src/mage/sets/magic2011/ManicVandal.java | 5 +- .../mage/sets/magic2011/PhylacteryLich.java | 5 +- .../src/mage/sets/magic2011/Reverberate.java | 9 +- .../mage/sets/magic2011/SteelOverseer.java | 7 +- .../src/mage/sets/magic2011/SunTitan.java | 15 +- .../src/mage/sets/magic2011/VoltaicKey.java | 5 +- .../mage/sets/magic2011/WarPriestOfThune.java | 5 +- .../src/mage/sets/magic2012/Auramancer.java | 5 +- .../sets/magic2012/BloodlordOfVaasgoth.java | 5 +- .../mage/sets/magic2012/BountifulHarvest.java | 3 +- .../sets/magic2012/GarrukPrimalHunter.java | 5 +- .../src/mage/sets/magic2012/Levitation.java | 3 +- .../src/mage/sets/magic2012/MasterThief.java | 5 +- .../src/mage/sets/magic2012/Smallpox.java | 12 +- .../mage/sets/magic2013/Archaeomancer.java | 9 +- .../mage/sets/magic2013/FungalSprouting.java | 3 +- .../sets/magic2013/TalrandSkySummoner.java | 7 +- .../src/mage/sets/mirrodin/AltarsLight.java | 9 +- Mage.Sets/src/mage/sets/mirrodin/Annul.java | 9 +- Mage.Sets/src/mage/sets/mirrodin/Atog.java | 5 +- .../mage/sets/mirrodin/AuriokTransfixer.java | 5 +- .../src/mage/sets/mirrodin/Deconstruct.java | 5 +- .../src/mage/sets/mirrodin/ElfReplica.java | 5 +- .../src/mage/sets/mirrodin/GalvanicKey.java | 5 +- .../src/mage/sets/mirrodin/GoblinReplica.java | 5 +- .../mage/sets/mirrodin/KrarkClanGrunt.java | 5 +- .../mage/sets/mirrodin/KrarkClanShaman.java | 5 +- .../src/mage/sets/mirrodin/LeoninAbunas.java | 3 +- .../mage/sets/mirrodin/LoomingHoverguard.java | 5 +- .../src/mage/sets/mirrodin/LoxodonMender.java | 5 +- Mage.Sets/src/mage/sets/mirrodin/Megatog.java | 5 +- .../src/mage/sets/mirrodin/MolderSlug.java | 5 +- .../src/mage/sets/mirrodin/NeurokSpy.java | 5 +- .../src/mage/sets/mirrodin/NimLasher.java | 5 +- .../src/mage/sets/mirrodin/NimShambler.java | 5 +- .../src/mage/sets/mirrodin/NimShrieker.java | 5 +- Mage.Sets/src/mage/sets/mirrodin/Shatter.java | 7 +- .../src/mage/sets/mirrodin/ShrapnelBlast.java | 5 +- .../mage/sets/mirrodin/SoldierReplica.java | 2 - .../mage/sets/mirrodin/TrashForTreasure.java | 5 +- .../mirrodinbesieged/BanishmentDecree.java | 13 +- .../src/mage/sets/mirrodinbesieged/Crush.java | 4 +- .../sets/mirrodinbesieged/DivineOffering.java | 5 +- .../mirrodinbesieged/GlissaTheTraitor.java | 5 +- .../sets/mirrodinbesieged/Gnathosaur.java | 5 +- .../sets/mirrodinbesieged/GoForTheThroat.java | 4 +- .../mirrodinbesieged/GreenSunsZenith.java | 4 +- .../sets/mirrodinbesieged/IntoTheCore.java | 3 +- .../mirrodinbesieged/LeoninRelicWarder.java | 9 +- .../mirrodinbesieged/MetallicMastery.java | 3 +- .../sets/mirrodinbesieged/RustedSlasher.java | 5 +- .../sets/mirrodinbesieged/SteelSabotage.java | 3 +- .../TezzeretAgentOfBolas.java | 5 +- .../sets/mirrodinbesieged/TreasureMage.java | 3 +- .../mirrodinbesieged/ViridianCorrupter.java | 7 +- .../mage/sets/morningtide/IdyllicTutor.java | 5 +- .../mage/sets/morningtide/ShardVolley.java | 5 +- .../src/mage/sets/morningtide/Shinewend.java | 5 +- .../mage/sets/morningtide/SigilTracer.java | 9 +- .../mage/sets/morningtide/Stingmoggie.java | 9 +- .../sets/newphyrexia/ApostlesBlessing.java | 11 +- .../mage/sets/newphyrexia/Artillerize.java | 9 +- .../mage/sets/newphyrexia/BirthingPod.java | 4 +- .../mage/sets/newphyrexia/BladeSplicer.java | 3 +- .../mage/sets/newphyrexia/BludgeonBrawl.java | 3 +- .../sets/newphyrexia/BrutalizerExarch.java | 4 +- .../newphyrexia/ChancellorOfTheSpires.java | 9 +- .../src/mage/sets/newphyrexia/Despise.java | 9 +- .../mage/sets/newphyrexia/EntomberExarch.java | 4 +- .../sets/newphyrexia/ExclusionRitual.java | 4 +- .../mage/sets/newphyrexia/GremlinMine.java | 6 +- .../mage/sets/newphyrexia/MaulSplicer.java | 3 +- .../mage/sets/newphyrexia/NumbingDose.java | 9 +- .../sets/newphyrexia/PhyrexianIngester.java | 5 +- .../sets/newphyrexia/PhyrexianMetamorph.java | 9 +- .../mage/sets/newphyrexia/PhyrexiasCore.java | 5 +- .../mage/sets/newphyrexia/PsychicBarrier.java | 3 +- .../mage/sets/newphyrexia/SensorSplicer.java | 3 +- .../newphyrexia/VictoriousDestruction.java | 12 +- .../mage/sets/newphyrexia/VitalSplicer.java | 3 +- .../src/mage/sets/newphyrexia/Whipflare.java | 7 +- .../mage/sets/newphyrexia/WingSplicer.java | 3 +- .../sets/planechase/AkromasVengeance.java | 11 +- .../mage/sets/planechase/BeaconOfUnrest.java | 9 +- .../mage/sets/planechase/BorosGarrison.java | 5 +- .../mage/sets/planechase/BoshIronGolem.java | 3 +- .../src/mage/sets/planechase/Broodstar.java | 5 +- .../mage/sets/planechase/CranialPlating.java | 5 +- .../src/mage/sets/planechase/GruulTurf.java | 3 +- .../mage/sets/planechase/LodestoneMyr.java | 5 +- .../src/mage/sets/ravnika/DimirAqueduct.java | 5 +- .../src/mage/sets/ravnika/DowsingShaman.java | 5 +- .../src/mage/sets/ravnika/GlareOfSubdual.java | 9 +- .../src/mage/sets/ravnika/GolgariRotFarm.java | 5 +- .../src/mage/sets/ravnika/HalcyonGlaze.java | 5 +- .../src/mage/sets/ravnika/LeaveNoTrace.java | 8 +- .../mage/sets/ravnika/MuddleTheMixture.java | 9 +- .../mage/sets/ravnika/NullmageShepherd.java | 9 +- .../src/mage/sets/ravnika/PrimordialSage.java | 5 +- Mage.Sets/src/mage/sets/ravnika/Putrefy.java | 11 +- .../mage/sets/ravnika/SelesnyaSanctuary.java | 5 +- .../riseoftheeldrazi/ConsumingVapors.java | 3 +- .../mage/sets/riseoftheeldrazi/Deprive.java | 5 +- .../InquisitionOfKozilek.java | 5 +- .../mage/sets/riseoftheeldrazi/KilnFiend.java | 9 +- .../mage/sets/riseoftheeldrazi/Magmaw.java | 4 +- .../sets/riseoftheeldrazi/MnemonicWall.java | 9 +- .../sets/riseoftheeldrazi/Narcolepsy.java | 15 +- .../sets/riseoftheeldrazi/SarkhanTheMad.java | 3 +- .../sets/riseoftheeldrazi/SphinxBoneWand.java | 9 +- .../riseoftheeldrazi/SurrakarSpellblade.java | 7 +- .../sets/riseoftheeldrazi/SurrealMemoir.java | 3 +- .../saviorsofkamigawa/KatakiWarsWage.java | 5 +- .../sets/saviorsofkamigawa/NikkoOnna.java | 5 +- .../saviorsofkamigawa/OboroBreezecaller.java | 5 +- .../saviorsofkamigawa/SunderFromWithin.java | 9 +- .../mage/sets/saviorsofkamigawa/YukiOnna.java | 5 +- .../sets/scarsofmirrodin/AbunaAcolyte.java | 5 +- .../sets/scarsofmirrodin/BarrageOgre.java | 5 +- .../scarsofmirrodin/BellowingTanglewurm.java | 5 +- .../sets/scarsofmirrodin/BluntTheAssault.java | 8 +- .../scarsofmirrodin/DarksteelJuggernaut.java | 5 +- .../mage/sets/scarsofmirrodin/Embersmith.java | 5 +- .../mage/sets/scarsofmirrodin/Ferrovore.java | 7 +- .../scarsofmirrodin/GethLordOfTheVault.java | 9 +- .../mage/sets/scarsofmirrodin/GlintHawk.java | 3 +- .../sets/scarsofmirrodin/GolemArtisan.java | 7 +- .../sets/scarsofmirrodin/GolemFoundry.java | 5 +- .../sets/scarsofmirrodin/GrandArchitect.java | 5 +- .../mage/sets/scarsofmirrodin/HaltOrder.java | 5 +- .../scarsofmirrodin/HandOfThePraetors.java | 5 +- .../scarsofmirrodin/HoardSmelterDragon.java | 5 +- .../scarsofmirrodin/IndomitableArchangel.java | 9 +- .../sets/scarsofmirrodin/KuldothaRebirth.java | 5 +- .../mage/sets/scarsofmirrodin/Lifesmith.java | 5 +- .../mage/sets/scarsofmirrodin/Myrsmith.java | 5 +- .../sets/scarsofmirrodin/OxiddaDaredevil.java | 7 +- .../mage/sets/scarsofmirrodin/Painsmith.java | 5 +- .../sets/scarsofmirrodin/PrecursorGolem.java | 8 +- .../sets/scarsofmirrodin/RevokeExistence.java | 11 +- .../sets/scarsofmirrodin/Riddlesmith.java | 5 +- .../scarsofmirrodin/ScrapdiverSerpent.java | 9 +- .../mage/sets/scarsofmirrodin/ShapeAnew.java | 3 +- .../sets/scarsofmirrodin/SliceinTwain.java | 9 +- .../sets/scarsofmirrodin/SylvokReplica.java | 11 +- .../sets/scarsofmirrodin/TemperedSteel.java | 7 +- .../sets/scarsofmirrodin/ThroneofGeth.java | 7 +- .../sets/scarsofmirrodin/TrinketMage.java | 3 +- .../sets/scarsofmirrodin/TumbleMagnet.java | 11 +- .../scarsofmirrodin/VedalkenCertarch.java | 13 +- .../mage/sets/shadowmoor/Cursecatcher.java | 9 +- .../mage/sets/shadowmoor/ElvishHexhunter.java | 3 +- .../sets/shadowmoor/GutturalResponse.java | 3 +- .../mage/sets/shadowmoor/ToilToRenown.java | 9 +- .../sets/shardsofalara/AjaniVengeant.java | 3 +- .../mage/sets/shardsofalara/BantPanorama.java | 3 +- .../sets/shardsofalara/DispellersCapsule.java | 11 +- .../shardsofalara/ElspethKnightErrant.java | 13 +- .../sets/shardsofalara/EsperPanorama.java | 3 +- .../sets/shardsofalara/FiligreeSages.java | 7 +- .../sets/shardsofalara/GrixisPanorama.java | 3 +- .../mage/sets/shardsofalara/JundPanorama.java | 3 +- .../sets/shardsofalara/MasterOfEtherium.java | 8 +- .../mage/sets/shardsofalara/NayaPanorama.java | 3 +- .../mage/sets/shardsofalara/RangerOfEos.java | 3 +- .../src/mage/sets/tempest/Aftershock.java | 11 +- .../mage/sets/tempest/AltarOfDementia.java | 3 +- Mage.Sets/src/mage/sets/tempest/Auratog.java | 5 +- .../mage/sets/tempest/CloudchaserEagle.java | 5 +- .../src/mage/sets/tempest/Disenchant.java | 9 +- .../src/mage/sets/tempest/Earthcraft.java | 5 +- .../src/mage/sets/tempest/HannasCustody.java | 5 +- Mage.Sets/src/mage/sets/tempest/Perish.java | 5 +- .../src/mage/sets/tempest/RatsOfRath.java | 11 +- .../src/mage/sets/tempest/Tranquility.java | 5 +- .../src/mage/sets/tempest/Verdigris.java | 5 +- .../src/mage/sets/tenth/AvenCloudchaser.java | 5 +- .../src/mage/sets/tenth/CreepingMold.java | 11 +- Mage.Sets/src/mage/sets/tenth/Demolish.java | 9 +- Mage.Sets/src/mage/sets/tenth/Demystify.java | 7 +- Mage.Sets/src/mage/sets/tenth/Distress.java | 4 +- .../src/mage/sets/tenth/IcyManipulator.java | 11 +- .../mage/sets/tenth/MolimoMaroSorcerer.java | 5 +- Mage.Sets/src/mage/sets/tenth/Naturalize.java | 9 +- Mage.Sets/src/mage/sets/tenth/RemoveSoul.java | 3 +- .../src/mage/sets/tenth/SculptingSteel.java | 3 +- Mage.Sets/src/mage/sets/tenth/Terror.java | 4 +- .../src/mage/sets/tenth/ViridianShaman.java | 5 +- .../mage/sets/tenth/YavimayaEnchantress.java | 5 +- .../mage/sets/urzasdestiny/KeldonVandals.java | 5 +- .../mage/sets/urzaslegacy/BoneShredder.java | 4 +- .../sets/urzaslegacy/BouncingBeebles.java | 5 +- .../src/mage/sets/urzaslegacy/Erase.java | 3 +- .../sets/urzassaga/ArgothianEnchantress.java | 3 +- .../sets/urzassaga/CitanulHierophants.java | 3 +- Mage.Sets/src/mage/sets/urzassaga/Clear.java | 5 +- .../src/mage/sets/urzassaga/GaeasCradle.java | 3 +- Mage.Sets/src/mage/sets/urzassaga/Hush.java | 5 +- .../src/mage/sets/urzassaga/RainOfSalt.java | 5 +- Mage.Sets/src/mage/sets/urzassaga/Scrap.java | 5 +- .../mage/sets/urzassaga/SerrasSanctum.java | 3 +- .../src/mage/sets/urzassaga/SternProctor.java | 11 +- .../mage/sets/urzassaga/TolarianAcademy.java | 5 +- .../src/mage/sets/urzassaga/Wildfire.java | 3 +- .../mage/sets/weatherlight/MaraxusOfKeld.java | 13 +- .../sets/worldwake/AvengerOfZendikar.java | 5 +- .../src/mage/sets/worldwake/BazaarTrader.java | 11 +- .../mage/sets/worldwake/BrinkOfDisaster.java | 11 +- .../mage/sets/worldwake/ButcherOfMalakir.java | 3 +- Mage.Sets/src/mage/sets/worldwake/Dispel.java | 3 +- .../src/mage/sets/worldwake/HorizonDrake.java | 10 +- .../mage/sets/worldwake/IonasJudgment.java | 11 +- .../src/mage/sets/worldwake/NaturesClaim.java | 8 +- .../src/mage/sets/worldwake/PilgrimsEye.java | 3 +- .../mage/sets/worldwake/SejiriMerfolk.java | 3 +- .../mage/sets/worldwake/StoneforgeMystic.java | 3 +- Mage.Sets/src/mage/sets/worldwake/Twitch.java | 11 +- .../src/mage/sets/worldwake/VaporSnare.java | 3 +- .../src/mage/sets/zendikar/ChandraAblaze.java | 7 +- .../sets/zendikar/GatekeeperOfMalakir.java | 6 +- Mage.Sets/src/mage/sets/zendikar/Harrow.java | 3 +- .../src/mage/sets/zendikar/KhalniGem.java | 3 +- .../mage/sets/zendikar/KorSanctifiers.java | 9 +- .../src/mage/sets/zendikar/MagmaRift.java | 3 +- .../src/mage/sets/zendikar/MoldShambler.java | 4 +- .../sets/zendikar/OranRiefTheVastwood.java | 3 +- .../sets/zendikar/PyromancerAscension.java | 11 +- .../sets/zendikar/QuestForTheHolyRelic.java | 5 +- .../mage/sets/zendikar/RuinousMinotaur.java | 3 +- .../src/mage/sets/zendikar/ScytheTiger.java | 5 +- .../src/mage/sets/zendikar/SpellPierce.java | 6 +- .../src/mage/sets/zendikar/SummonersBane.java | 3 +- .../common/FetchLandActivatedAbility.java | 3 +- .../condition/common/MetalcraftCondition.java | 3 +- .../costs/common/MetalcraftCost.java | 3 +- .../keyword/AffinityForArtifactsAbility.java | 5 +- Mage/src/mage/filter/FilterImpl.java | 4 - Mage/src/mage/filter/FilterObject.java | 38 ----- .../filter/common/FilterArtifactCard.java | 3 +- .../common/FilterArtifactPermanent.java | 3 +- Mage/src/mage/filter/common/FilterAura.java | 3 +- .../mage/filter/common/FilterAuraCard.java | 3 +- .../filter/common/FilterBasicLandCard.java | 4 +- .../FilterControlledCreaturePermanent.java | 3 +- .../filter/common/FilterCreatureCard.java | 3 +- .../common/FilterCreaturePermanent.java | 3 +- .../mage/filter/common/FilterEnchantment.java | 3 +- .../mage/filter/common/FilterEquipment.java | 3 +- .../filter/common/FilterFortification.java | 3 +- .../mage/filter/common/FilterLandCard.java | 3 +- .../filter/common/FilterLandPermanent.java | 3 +- .../mage/filter/common/FilterNonlandCard.java | 4 +- .../filter/common/FilterNonlandPermanent.java | 4 +- .../common/FilterPlaneswalkerPermanent.java | 3 +- .../target/common/TargetBasicLandCard.java | 5 +- 385 files changed, 1278 insertions(+), 1249 deletions(-) diff --git a/Mage.Client/src/main/java/mage/client/deckeditor/CardSelector.java b/Mage.Client/src/main/java/mage/client/deckeditor/CardSelector.java index 31ef0d80cb5..1d8d3a47758 100644 --- a/Mage.Client/src/main/java/mage/client/deckeditor/CardSelector.java +++ b/Mage.Client/src/main/java/mage/client/deckeditor/CardSelector.java @@ -35,6 +35,8 @@ package mage.client.deckeditor; import mage.Constants.CardType; +import mage.MageObject; +import mage.ObjectColor; import mage.cards.Card; import mage.cards.ExpansionSet; import mage.client.cards.BigCard; @@ -44,8 +46,12 @@ import mage.client.cards.ICardGrid; import mage.client.constants.Constants.SortBy; import mage.client.deckeditor.table.TableModel; import mage.client.util.sets.ConstructedFormats; -import mage.filter.Filter.ComparisonScope; import mage.filter.FilterCard; +import mage.filter.predicate.Predicate; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; +import mage.filter.predicate.mageobject.ColorPredicate; +import mage.filter.predicate.mageobject.ColorlessPredicate; import mage.sets.Sets; import mage.view.CardsView; @@ -63,7 +69,7 @@ import java.util.List; public class CardSelector extends javax.swing.JPanel implements ComponentListener { private final List cards = new ArrayList(); - private final FilterCard filter = new FilterCard(); + private FilterCard filter = new FilterCard(); private BigCard bigCard; private boolean limited = false; @@ -140,7 +146,7 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene for (Card card: sideboard) { this.cards.add(card); } - initFilter(); + filterCards(); } @@ -153,37 +159,70 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene cbExpansionSet.insertItemAt("-- All sets", 0); cbExpansionSet.insertItemAt("-- Standard", 1); cbExpansionSet.setSelectedIndex(0); - initFilter(); - if (this.cbExpansionSet.getSelectedItem() instanceof ExpansionSet) { + + filterCards(); + } + + private void buildFilter() { + filter = new FilterCard(); + ArrayList> predicates = new ArrayList>(); + + if (this.rdoGreen.isSelected()) { + predicates.add(new ColorPredicate(ObjectColor.GREEN)); + } + if (this.rdoRed.isSelected()) { + predicates.add(new ColorPredicate(ObjectColor.RED)); + } + if (this.rdoBlack.isSelected()) { + predicates.add(new ColorPredicate(ObjectColor.BLACK)); + } + if (this.rdoBlue.isSelected()) { + predicates.add(new ColorPredicate(ObjectColor.BLUE)); + } + if (this.rdoWhite.isSelected()) { + predicates.add(new ColorPredicate(ObjectColor.WHITE)); + } + if (this.rdoColorless.isSelected()) { + predicates.add(new ColorlessPredicate()); + } + filter.add(Predicates.or(predicates)); + + predicates.clear(); + if (this.rdoLand.isSelected()) { + predicates.add(new CardTypePredicate(CardType.LAND)); + } + if (this.rdoArtifacts.isSelected()) { + predicates.add(new CardTypePredicate(CardType.ARTIFACT)); + } + if (this.rdoCreatures.isSelected()) { + predicates.add(new CardTypePredicate(CardType.CREATURE)); + } + if (this.rdoEnchantments.isSelected()) { + predicates.add(new CardTypePredicate(CardType.ENCHANTMENT)); + } + if (this.rdoInstants.isSelected()) { + predicates.add(new CardTypePredicate(CardType.INSTANT)); + } + if (this.rdoSorceries.isSelected()) { + predicates.add(new CardTypePredicate(CardType.SORCERY)); + } + if (this.rdoPlaneswalkers.isSelected()) { + predicates.add(new CardTypePredicate(CardType.PLANESWALKER)); + } + filter.add(Predicates.or(predicates)); + + String name = jTextFieldSearch.getText().trim(); + filter.setText(name); + + if (this.cbExpansionSet.getSelectedItem() instanceof ExpansionSet) { filter.getExpansionSetCode().add(((ExpansionSet) this.cbExpansionSet.getSelectedItem()).getCode()); } else if (this.cbExpansionSet.getSelectedItem().equals("-- Standard")) { filter.getExpansionSetCode().addAll(ConstructedFormats.getSetsByFormat("Standard")); } - filterCards(); - } - - private void initFilter() { - filter.setUseColor(true); - filter.getColor().setBlack(true); - filter.getColor().setBlue(true); - filter.getColor().setGreen(true); - filter.getColor().setWhite(true); - filter.getColor().setRed(true); - filter.setColorless(true); - filter.setUseColorless(true); - filter.setNotColor(false); - filter.setScopeColor(ComparisonScope.Any); - filter.getCardType().add(CardType.LAND); - filter.getCardType().add(CardType.ARTIFACT); - filter.getCardType().add(CardType.CREATURE); - filter.getCardType().add(CardType.ENCHANTMENT); - filter.getCardType().add(CardType.INSTANT); - filter.getCardType().add(CardType.PLANESWALKER); - filter.getCardType().add(CardType.SORCERY); - filter.setScopeCardType(ComparisonScope.Any); } private void filterCards() { + buildFilter(); try { List filteredCards = new ArrayList(); setCursor(new Cursor(Cursor.WAIT_CURSOR)); @@ -648,99 +687,62 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene }// //GEN-END:initComponents private void rdoGreenActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_rdoGreenActionPerformed - filter.getColor().setGreen(this.rdoGreen.isSelected()); filterCards(); }//GEN-LAST:event_rdoGreenActionPerformed private void rdoBlackActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_rdoBlackActionPerformed - filter.getColor().setBlack(this.rdoBlack.isSelected()); filterCards(); }//GEN-LAST:event_rdoBlackActionPerformed private void rdoWhiteActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_rdoWhiteActionPerformed - filter.getColor().setWhite(this.rdoWhite.isSelected()); filterCards(); }//GEN-LAST:event_rdoWhiteActionPerformed private void rdoRedActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_rdoRedActionPerformed - filter.getColor().setRed(this.rdoRed.isSelected()); filterCards(); }//GEN-LAST:event_rdoRedActionPerformed private void rdoBlueActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_rdoBlueActionPerformed - filter.getColor().setBlue(this.rdoBlue.isSelected()); filterCards(); }//GEN-LAST:event_rdoBlueActionPerformed private void rdoColorlessActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_rdoColorlessActionPerformed - filter.setColorless(this.rdoColorless.isSelected()); filterCards(); }//GEN-LAST:event_rdoColorlessActionPerformed private void rdoLandActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_rdoLandActionPerformed - if (this.rdoLand.isSelected()) - filter.getCardType().add(CardType.LAND); - else - filter.getCardType().remove(CardType.LAND); filterCards(); }//GEN-LAST:event_rdoLandActionPerformed private void rdoCreaturesActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_rdoCreaturesActionPerformed - if (this.rdoCreatures.isSelected()) - filter.getCardType().add(CardType.CREATURE); - else - filter.getCardType().remove(CardType.CREATURE); filterCards(); }//GEN-LAST:event_rdoCreaturesActionPerformed private void rdoArtifactsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_rdoArtifactsActionPerformed - if (this.rdoArtifacts.isSelected()) - filter.getCardType().add(CardType.ARTIFACT); - else - filter.getCardType().remove(CardType.ARTIFACT); filterCards(); }//GEN-LAST:event_rdoArtifactsActionPerformed private void rdoEnchantmentsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_rdoEnchantmentsActionPerformed - if (this.rdoEnchantments.isSelected()) - filter.getCardType().add(CardType.ENCHANTMENT); - else - filter.getCardType().remove(CardType.ENCHANTMENT); filterCards(); }//GEN-LAST:event_rdoEnchantmentsActionPerformed private void rdoInstantsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_rdoInstantsActionPerformed - if (this.rdoInstants.isSelected()) - filter.getCardType().add(CardType.INSTANT); - else - filter.getCardType().remove(CardType.INSTANT); filterCards(); }//GEN-LAST:event_rdoInstantsActionPerformed private void rdoSorceriesActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_rdoSorceriesActionPerformed - if (this.rdoSorceries.isSelected()) - filter.getCardType().add(CardType.SORCERY); - else - filter.getCardType().remove(CardType.SORCERY); filterCards(); }//GEN-LAST:event_rdoSorceriesActionPerformed private void rdoPlaneswalkersActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_rdoPlaneswalkersActionPerformed - if (this.rdoPlaneswalkers.isSelected()) - filter.getCardType().add(CardType.PLANESWALKER); - else - filter.getCardType().remove(CardType.PLANESWALKER); filterCards(); }//GEN-LAST:event_rdoPlaneswalkersActionPerformed private void cbExpansionSetActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cbExpansionSetActionPerformed - filter.getExpansionSetCode().clear(); if (cbExpansionSet.getSelectedItem() instanceof ExpansionSet) { - filter.getExpansionSetCode().add(((ExpansionSet)this.cbExpansionSet.getSelectedItem()).getCode()); filterCards(); } else { if (this.cbExpansionSet.getSelectedItem().equals("-- Standard")) { - filter.getExpansionSetCode().addAll(ConstructedFormats.getSetsByFormat("Standard")); filterCards(); } else { // auto switch for ListView for "All sets" (too many cards to load) @@ -838,14 +840,11 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene private void jButtonSearchActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonSearchActionPerformed - String name = jTextFieldSearch.getText().trim(); - filter.setText(name); filterCards(); }//GEN-LAST:event_jButtonSearchActionPerformed private void jButtonCleanActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonCleanActionPerformed jTextFieldSearch.setText(""); - filter.setText(""); filterCards(); }//GEN-LAST:event_jButtonCleanActionPerformed diff --git a/Mage.Client/src/main/java/mage/client/deckeditor/table/CardTableSelector.java b/Mage.Client/src/main/java/mage/client/deckeditor/table/CardTableSelector.java index f0ad2a87a0d..6a473077ce5 100644 --- a/Mage.Client/src/main/java/mage/client/deckeditor/table/CardTableSelector.java +++ b/Mage.Client/src/main/java/mage/client/deckeditor/table/CardTableSelector.java @@ -29,6 +29,8 @@ package mage.client.deckeditor.table; import mage.Constants.CardType; +import mage.MageObject; +import mage.ObjectColor; import mage.cards.Card; import mage.cards.ExpansionSet; import mage.client.cards.BigCard; @@ -37,8 +39,13 @@ import mage.client.cards.CardsStorage; import mage.client.cards.ICardGrid; import mage.client.constants.Constants.DeckEditorMode; import mage.client.constants.Constants.SortBy; -import mage.filter.Filter.ComparisonScope; +import mage.client.util.sets.ConstructedFormats; import mage.filter.FilterCard; +import mage.filter.predicate.Predicate; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; +import mage.filter.predicate.mageobject.ColorPredicate; +import mage.filter.predicate.mageobject.ColorlessPredicate; import mage.sets.Sets; import mage.view.CardsView; @@ -59,7 +66,7 @@ import java.util.List; public class CardTableSelector extends javax.swing.JPanel implements ComponentListener { private final List cards = new ArrayList(); - private final FilterCard filter = new FilterCard(); + private FilterCard filter = new FilterCard(); private BigCard bigCard; protected CardEventSource cardEventSource = new CardEventSource(); private DeckEditorMode mode = DeckEditorMode.Constructed; @@ -86,6 +93,64 @@ public class CardTableSelector extends javax.swing.JPanel implements ComponentLi } + private void buildFilter() { + filter = new FilterCard(); + ArrayList> predicates = new ArrayList>(); + + if (this.rdoGreen.isSelected()) { + predicates.add(new ColorPredicate(ObjectColor.GREEN)); + } + if (this.rdoRed.isSelected()) { + predicates.add(new ColorPredicate(ObjectColor.RED)); + } + if (this.rdoBlack.isSelected()) { + predicates.add(new ColorPredicate(ObjectColor.BLACK)); + } + if (this.rdoBlue.isSelected()) { + predicates.add(new ColorPredicate(ObjectColor.BLUE)); + } + if (this.rdoWhite.isSelected()) { + predicates.add(new ColorPredicate(ObjectColor.WHITE)); + } + if (this.rdoColorless.isSelected()) { + predicates.add(new ColorlessPredicate()); + } + filter.add(Predicates.or(predicates)); + + predicates.clear(); + if (this.rdoLand.isSelected()) { + predicates.add(new CardTypePredicate(CardType.LAND)); + } + if (this.rdoArtifacts.isSelected()) { + predicates.add(new CardTypePredicate(CardType.ARTIFACT)); + } + if (this.rdoCreatures.isSelected()) { + predicates.add(new CardTypePredicate(CardType.CREATURE)); + } + if (this.rdoEnchantments.isSelected()) { + predicates.add(new CardTypePredicate(CardType.ENCHANTMENT)); + } + if (this.rdoInstants.isSelected()) { + predicates.add(new CardTypePredicate(CardType.INSTANT)); + } + if (this.rdoSorceries.isSelected()) { + predicates.add(new CardTypePredicate(CardType.SORCERY)); + } + if (this.rdoPlaneswalkers.isSelected()) { + predicates.add(new CardTypePredicate(CardType.PLANESWALKER)); + } + filter.add(Predicates.or(predicates)); + + String name = jTextFieldSearch.getText().trim(); + filter.setText(name); + + if (this.cbExpansionSet.getSelectedItem() instanceof ExpansionSet) { + filter.getExpansionSetCode().add(((ExpansionSet) this.cbExpansionSet.getSelectedItem()).getCode()); + } else if (this.cbExpansionSet.getSelectedItem().equals("-- Standard")) { + filter.getExpansionSetCode().addAll(ConstructedFormats.getSetsByFormat("Standard")); + } + } + public void loadCards(List sideboard, BigCard bigCard, boolean construct) { this.bigCard = bigCard; this.btnBooster.setVisible(false); @@ -95,7 +160,7 @@ public class CardTableSelector extends javax.swing.JPanel implements ComponentLi for (Card card: sideboard) { this.cards.add(card); } - initFilter(); + filterCards(); } @@ -114,35 +179,12 @@ public class CardTableSelector extends javax.swing.JPanel implements ComponentLi cbExpansionSet.setModel(new DefaultComboBoxModel(l)); cbExpansionSet.insertItemAt("-- All sets -- ", 0); cbExpansionSet.setSelectedIndex(0); - initFilter(); - if (this.cbExpansionSet.getSelectedItem() instanceof ExpansionSet) { - filter.getExpansionSetCode().add(((ExpansionSet)this.cbExpansionSet.getSelectedItem()).getCode()); - } + filterCards(); } - private void initFilter() { - filter.setUseColor(true); - filter.getColor().setBlack(true); - filter.getColor().setBlue(true); - filter.getColor().setGreen(true); - filter.getColor().setWhite(true); - filter.getColor().setRed(true); - filter.setColorless(true); - filter.setUseColorless(true); - filter.setNotColor(false); - filter.setScopeColor(ComparisonScope.Any); - filter.getCardType().add(CardType.LAND); - filter.getCardType().add(CardType.ARTIFACT); - filter.getCardType().add(CardType.CREATURE); - filter.getCardType().add(CardType.ENCHANTMENT); - filter.getCardType().add(CardType.INSTANT); - filter.getCardType().add(CardType.PLANESWALKER); - filter.getCardType().add(CardType.SORCERY); - filter.setScopeCardType(ComparisonScope.Any); - } - private void filterCards() { + buildFilter(); try { List filteredCards = new ArrayList(); setCursor(new Cursor(Cursor.WAIT_CURSOR)); @@ -539,96 +581,58 @@ public class CardTableSelector extends javax.swing.JPanel implements ComponentLi } private void rdoGreenActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_rdoGreenActionPerformed - filter.getColor().setGreen(this.rdoGreen.isSelected()); filterCards(); }//GEN-LAST:event_rdoGreenActionPerformed private void rdoBlackActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_rdoBlackActionPerformed - filter.getColor().setBlack(this.rdoBlack.isSelected()); filterCards(); }//GEN-LAST:event_rdoBlackActionPerformed private void rdoWhiteActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_rdoWhiteActionPerformed - filter.getColor().setWhite(this.rdoWhite.isSelected()); filterCards(); }//GEN-LAST:event_rdoWhiteActionPerformed private void rdoRedActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_rdoRedActionPerformed - filter.getColor().setRed(this.rdoRed.isSelected()); filterCards(); }//GEN-LAST:event_rdoRedActionPerformed private void rdoBlueActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_rdoBlueActionPerformed - filter.getColor().setBlue(this.rdoBlue.isSelected()); filterCards(); }//GEN-LAST:event_rdoBlueActionPerformed private void rdoColorlessActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_rdoColorlessActionPerformed - filter.setColorless(this.rdoColorless.isSelected()); filterCards(); }//GEN-LAST:event_rdoColorlessActionPerformed private void rdoLandActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_rdoLandActionPerformed - if (this.rdoLand.isSelected()) - filter.getCardType().add(CardType.LAND); - else - filter.getCardType().remove(CardType.LAND); filterCards(); }//GEN-LAST:event_rdoLandActionPerformed private void rdoCreaturesActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_rdoCreaturesActionPerformed - if (this.rdoCreatures.isSelected()) - filter.getCardType().add(CardType.CREATURE); - else - filter.getCardType().remove(CardType.CREATURE); filterCards(); }//GEN-LAST:event_rdoCreaturesActionPerformed private void rdoArtifactsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_rdoArtifactsActionPerformed - if (this.rdoArtifacts.isSelected()) - filter.getCardType().add(CardType.ARTIFACT); - else - filter.getCardType().remove(CardType.ARTIFACT); filterCards(); }//GEN-LAST:event_rdoArtifactsActionPerformed private void rdoEnchantmentsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_rdoEnchantmentsActionPerformed - if (this.rdoEnchantments.isSelected()) - filter.getCardType().add(CardType.ENCHANTMENT); - else - filter.getCardType().remove(CardType.ENCHANTMENT); filterCards(); }//GEN-LAST:event_rdoEnchantmentsActionPerformed private void rdoInstantsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_rdoInstantsActionPerformed - if (this.rdoInstants.isSelected()) - filter.getCardType().add(CardType.INSTANT); - else - filter.getCardType().remove(CardType.INSTANT); filterCards(); }//GEN-LAST:event_rdoInstantsActionPerformed private void rdoSorceriesActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_rdoSorceriesActionPerformed - if (this.rdoSorceries.isSelected()) - filter.getCardType().add(CardType.SORCERY); - else - filter.getCardType().remove(CardType.SORCERY); filterCards(); }//GEN-LAST:event_rdoSorceriesActionPerformed private void rdoPlaneswalkersActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_rdoPlaneswalkersActionPerformed - if (this.rdoPlaneswalkers.isSelected()) - filter.getCardType().add(CardType.PLANESWALKER); - else - filter.getCardType().remove(CardType.PLANESWALKER); filterCards(); }//GEN-LAST:event_rdoPlaneswalkersActionPerformed private void cbExpansionSetActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cbExpansionSetActionPerformed - filter.getExpansionSetCode().clear(); - if (cbExpansionSet.getSelectedItem() instanceof ExpansionSet) { - filter.getExpansionSetCode().add(((ExpansionSet)this.cbExpansionSet.getSelectedItem()).getCode()); - } filterCards(); }//GEN-LAST:event_cbExpansionSetActionPerformed @@ -690,14 +694,11 @@ public class CardTableSelector extends javax.swing.JPanel implements ComponentLi } private void jButtonSearchActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed - String name = jTextFieldSearch.getText().trim(); - filter.setText(name); filterCards(); }//GEN-LAST:event_jButton1ActionPerformed private void jButtonCleanActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton2ActionPerformed jTextFieldSearch.setText(""); - filter.setText(""); filterCards(); }//GEN-LAST:event_jButton2ActionPerformed diff --git a/Mage.Sets/src/mage/sets/alarareborn/FieldmistBorderpost.java b/Mage.Sets/src/mage/sets/alarareborn/FieldmistBorderpost.java index cd8ac7fe055..f595c1f62a8 100644 --- a/Mage.Sets/src/mage/sets/alarareborn/FieldmistBorderpost.java +++ b/Mage.Sets/src/mage/sets/alarareborn/FieldmistBorderpost.java @@ -40,8 +40,8 @@ import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.mana.BlueManaAbility; import mage.abilities.mana.WhiteManaAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.filter.predicate.mageobject.SupertypePredicate; import mage.target.common.TargetControlledPermanent; @@ -57,8 +57,7 @@ public class FieldmistBorderpost extends CardImpl { static { filter.add(new SupertypePredicate("Basic")); - filter.getCardType().add(CardType.LAND); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.LAND)); } public FieldmistBorderpost (UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/alarareborn/FiligreeAngel.java b/Mage.Sets/src/mage/sets/alarareborn/FiligreeAngel.java index 000b1c9776b..5e8eeb4621f 100644 --- a/Mage.Sets/src/mage/sets/alarareborn/FiligreeAngel.java +++ b/Mage.Sets/src/mage/sets/alarareborn/FiligreeAngel.java @@ -41,6 +41,7 @@ import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.Game; import mage.players.Player; @@ -73,11 +74,10 @@ public class FiligreeAngel extends CardImpl { } class FiligreeAngelEffect extends OneShotEffect { - private static FilterPermanent filter = new FilterPermanent(); + private static final FilterPermanent filter = new FilterPermanent(); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.setScopeCardType(Filter.ComparisonScope.All); + filter.add(new CardTypePredicate(CardType.ARTIFACT)); } public FiligreeAngelEffect() { diff --git a/Mage.Sets/src/mage/sets/alarareborn/FirewildBorderpost.java b/Mage.Sets/src/mage/sets/alarareborn/FirewildBorderpost.java index d085096ece3..05c37150f2c 100644 --- a/Mage.Sets/src/mage/sets/alarareborn/FirewildBorderpost.java +++ b/Mage.Sets/src/mage/sets/alarareborn/FirewildBorderpost.java @@ -40,8 +40,8 @@ import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.mana.GreenManaAbility; import mage.abilities.mana.RedManaAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.filter.predicate.mageobject.SupertypePredicate; import mage.target.common.TargetControlledPermanent; @@ -57,8 +57,7 @@ public class FirewildBorderpost extends CardImpl { static { filter.add(new SupertypePredicate("Basic")); - filter.getCardType().add(CardType.LAND); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.LAND)); } public FirewildBorderpost (UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/alarareborn/MistveinBorderpost.java b/Mage.Sets/src/mage/sets/alarareborn/MistveinBorderpost.java index 898cd607a97..79653ccadf2 100644 --- a/Mage.Sets/src/mage/sets/alarareborn/MistveinBorderpost.java +++ b/Mage.Sets/src/mage/sets/alarareborn/MistveinBorderpost.java @@ -40,8 +40,8 @@ import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.mana.BlackManaAbility; import mage.abilities.mana.BlueManaAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.filter.predicate.mageobject.SupertypePredicate; import mage.target.common.TargetControlledPermanent; @@ -57,8 +57,7 @@ public class MistveinBorderpost extends CardImpl { static { filter.add(new SupertypePredicate("Basic")); - filter.getCardType().add(CardType.LAND); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.LAND)); } public MistveinBorderpost (UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/alarareborn/QasaliPridemage.java b/Mage.Sets/src/mage/sets/alarareborn/QasaliPridemage.java index a8e132c3bac..3df7cbc6436 100644 --- a/Mage.Sets/src/mage/sets/alarareborn/QasaliPridemage.java +++ b/Mage.Sets/src/mage/sets/alarareborn/QasaliPridemage.java @@ -39,8 +39,9 @@ import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.common.DestroyTargetEffect; import mage.abilities.keyword.ExaltedAbility; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.FilterPermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetPermanent; /** @@ -52,9 +53,9 @@ public class QasaliPridemage extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("artifact or enchantment"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.getCardType().add(CardType.ENCHANTMENT); - filter.setScopeCardType(ComparisonScope.Any); + filter.add(Predicates.or( + new CardTypePredicate(CardType.ARTIFACT), + new CardTypePredicate(CardType.ENCHANTMENT))); } public QasaliPridemage(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/alarareborn/SpellbreakerBehemoth.java b/Mage.Sets/src/mage/sets/alarareborn/SpellbreakerBehemoth.java index c9f1a99d6af..efb7ca33282 100644 --- a/Mage.Sets/src/mage/sets/alarareborn/SpellbreakerBehemoth.java +++ b/Mage.Sets/src/mage/sets/alarareborn/SpellbreakerBehemoth.java @@ -40,6 +40,7 @@ import mage.abilities.effects.common.CantCounterSourceEffect; import mage.cards.CardImpl; import mage.filter.Filter; import mage.filter.FilterSpell; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.filter.predicate.mageobject.PowerPredicate; @@ -52,7 +53,7 @@ public class SpellbreakerBehemoth extends CardImpl { private static final FilterSpell filter = new FilterSpell("Creature spells you control with power 5 or greater"); static { - filter.getCardType().add(CardType.CREATURE); + filter.add(new CardTypePredicate(CardType.CREATURE)); filter.add(new PowerPredicate(Filter.ComparisonType.GreaterThan, 4)); } diff --git a/Mage.Sets/src/mage/sets/alarareborn/VeinfireBorderpost.java b/Mage.Sets/src/mage/sets/alarareborn/VeinfireBorderpost.java index bc69e67a289..bd4971d26b3 100644 --- a/Mage.Sets/src/mage/sets/alarareborn/VeinfireBorderpost.java +++ b/Mage.Sets/src/mage/sets/alarareborn/VeinfireBorderpost.java @@ -40,8 +40,8 @@ import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.mana.BlackManaAbility; import mage.abilities.mana.RedManaAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.filter.predicate.mageobject.SupertypePredicate; import mage.target.common.TargetControlledPermanent; @@ -57,8 +57,7 @@ public class VeinfireBorderpost extends CardImpl { static { filter.add(new SupertypePredicate("Basic")); - filter.getCardType().add(CardType.LAND); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.LAND)); } public VeinfireBorderpost (UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/alarareborn/VithianRenegades.java b/Mage.Sets/src/mage/sets/alarareborn/VithianRenegades.java index 9b896faf77d..c0e411b109c 100644 --- a/Mage.Sets/src/mage/sets/alarareborn/VithianRenegades.java +++ b/Mage.Sets/src/mage/sets/alarareborn/VithianRenegades.java @@ -36,8 +36,8 @@ import mage.abilities.Ability; import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetPermanent; /** @@ -48,8 +48,7 @@ public class VithianRenegades extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("artifact"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.ARTIFACT)); } public VithianRenegades (UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/alarareborn/WildfieldBorderpost.java b/Mage.Sets/src/mage/sets/alarareborn/WildfieldBorderpost.java index 63f25220689..7714f2d6345 100644 --- a/Mage.Sets/src/mage/sets/alarareborn/WildfieldBorderpost.java +++ b/Mage.Sets/src/mage/sets/alarareborn/WildfieldBorderpost.java @@ -40,8 +40,8 @@ import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.mana.GreenManaAbility; import mage.abilities.mana.WhiteManaAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.filter.predicate.mageobject.SupertypePredicate; import mage.target.common.TargetControlledPermanent; @@ -57,8 +57,7 @@ public class WildfieldBorderpost extends CardImpl { static { filter.add(new SupertypePredicate("Basic")); - filter.getCardType().add(CardType.LAND); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.LAND)); } public WildfieldBorderpost (UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/apocalypse/DiversionaryTactics.java b/Mage.Sets/src/mage/sets/apocalypse/DiversionaryTactics.java index cb506a5856a..56cecb45855 100644 --- a/Mage.Sets/src/mage/sets/apocalypse/DiversionaryTactics.java +++ b/Mage.Sets/src/mage/sets/apocalypse/DiversionaryTactics.java @@ -37,7 +37,6 @@ import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.common.TapTargetCost; import mage.abilities.effects.common.TapTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledCreaturePermanent; import mage.target.common.TargetControlledCreaturePermanent; import mage.target.common.TargetCreaturePermanent; @@ -52,7 +51,6 @@ public class DiversionaryTactics extends CardImpl { static { filter.setTapped(false); filter.setUseTapped(true); - filter.setScopeCardType(Filter.ComparisonScope.Any); } public DiversionaryTactics(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/apocalypse/GoblinTrenches.java b/Mage.Sets/src/mage/sets/apocalypse/GoblinTrenches.java index ac9548c3b08..0bc35854267 100644 --- a/Mage.Sets/src/mage/sets/apocalypse/GoblinTrenches.java +++ b/Mage.Sets/src/mage/sets/apocalypse/GoblinTrenches.java @@ -39,8 +39,8 @@ import mage.abilities.costs.common.SacrificeTargetCost; import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.effects.common.CreateTokenEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.permanent.token.Token; import mage.target.common.TargetControlledPermanent; @@ -53,8 +53,7 @@ public class GoblinTrenches extends CardImpl { final static FilterControlledPermanent filter = new FilterControlledPermanent("a land"); static { - filter.getCardType().add(CardType.LAND); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.LAND)); } public GoblinTrenches(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/apocalypse/OvergrownEstate.java b/Mage.Sets/src/mage/sets/apocalypse/OvergrownEstate.java index efabe86383b..e4299af27c4 100644 --- a/Mage.Sets/src/mage/sets/apocalypse/OvergrownEstate.java +++ b/Mage.Sets/src/mage/sets/apocalypse/OvergrownEstate.java @@ -36,8 +36,8 @@ import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.common.SacrificeTargetCost; import mage.abilities.effects.common.GainLifeEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.common.TargetControlledPermanent; /** @@ -49,8 +49,7 @@ public class OvergrownEstate extends CardImpl { private final static FilterControlledPermanent filter = new FilterControlledPermanent("a land"); static { - filter.getCardType().add(CardType.LAND); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.LAND)); } public OvergrownEstate(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/apocalypse/QuagmireDruid.java b/Mage.Sets/src/mage/sets/apocalypse/QuagmireDruid.java index 3d873909ab4..8219a86fe5b 100644 --- a/Mage.Sets/src/mage/sets/apocalypse/QuagmireDruid.java +++ b/Mage.Sets/src/mage/sets/apocalypse/QuagmireDruid.java @@ -40,8 +40,8 @@ import mage.abilities.costs.common.TapSourceCost; import mage.abilities.costs.mana.ColoredManaCost; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetPermanent; import mage.target.common.TargetControlledCreaturePermanent; @@ -54,8 +54,7 @@ public class QuagmireDruid extends CardImpl { private final static FilterPermanent filter = new FilterPermanent("enchantment"); static { - filter.getCardType().add(CardType.ENCHANTMENT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.ENCHANTMENT)); } diff --git a/Mage.Sets/src/mage/sets/apocalypse/Smash.java b/Mage.Sets/src/mage/sets/apocalypse/Smash.java index b782f108a1d..82443749ab9 100644 --- a/Mage.Sets/src/mage/sets/apocalypse/Smash.java +++ b/Mage.Sets/src/mage/sets/apocalypse/Smash.java @@ -34,8 +34,8 @@ import mage.Constants.Rarity; import mage.abilities.effects.common.DestroyTargetEffect; import mage.abilities.effects.common.DrawCardControllerEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetPermanent; /** @@ -46,8 +46,7 @@ public class Smash extends CardImpl { private final static FilterPermanent filter = new FilterPermanent("artifact"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.ARTIFACT)); } public Smash(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/apocalypse/TranquilPath.java b/Mage.Sets/src/mage/sets/apocalypse/TranquilPath.java index 74f64295451..4700cac1795 100644 --- a/Mage.Sets/src/mage/sets/apocalypse/TranquilPath.java +++ b/Mage.Sets/src/mage/sets/apocalypse/TranquilPath.java @@ -38,6 +38,7 @@ import mage.abilities.effects.common.DrawCardControllerEffect; import mage.cards.CardImpl; import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.Game; import mage.game.permanent.Permanent; @@ -70,8 +71,7 @@ class TranquilPathEffect extends OneShotEffect { private final static FilterPermanent filter = new FilterPermanent(""); static { - filter.getCardType().add(CardType.ENCHANTMENT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.ENCHANTMENT)); } public TranquilPathEffect() { diff --git a/Mage.Sets/src/mage/sets/avacynrestored/BanishingStroke.java b/Mage.Sets/src/mage/sets/avacynrestored/BanishingStroke.java index d7da7d182c8..c1bc2b39f51 100644 --- a/Mage.Sets/src/mage/sets/avacynrestored/BanishingStroke.java +++ b/Mage.Sets/src/mage/sets/avacynrestored/BanishingStroke.java @@ -33,8 +33,9 @@ import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.common.PutOnLibraryTargetEffect; import mage.abilities.keyword.MiracleAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetPermanent; import java.util.UUID; @@ -48,10 +49,10 @@ public class BanishingStroke extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("artifact, creature, or enchantment"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.getCardType().add(CardType.CREATURE); - filter.getCardType().add(CardType.ENCHANTMENT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(Predicates.or( + new CardTypePredicate(CardType.ARTIFACT), + new CardTypePredicate(CardType.CREATURE), + new CardTypePredicate(CardType.ENCHANTMENT))); } public BanishingStroke(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/avacynrestored/BarterInBlood.java b/Mage.Sets/src/mage/sets/avacynrestored/BarterInBlood.java index fa8d94e398e..1eeb442d782 100644 --- a/Mage.Sets/src/mage/sets/avacynrestored/BarterInBlood.java +++ b/Mage.Sets/src/mage/sets/avacynrestored/BarterInBlood.java @@ -27,12 +27,13 @@ */ package mage.sets.avacynrestored; +import java.util.UUID; import mage.Constants.CardType; import mage.Constants.Rarity; -import mage.cards.CardImpl; -import java.util.UUID; import mage.abilities.effects.common.SacrificeAllEffect; +import mage.cards.CardImpl; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; /** * @@ -43,7 +44,7 @@ public class BarterInBlood extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("creature"); static { - filter.getCardType().add(CardType.CREATURE); + filter.add(new CardTypePredicate(CardType.CREATURE)); } public BarterInBlood(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/avacynrestored/BrunaLightOfAlabaster.java b/Mage.Sets/src/mage/sets/avacynrestored/BrunaLightOfAlabaster.java index c94fdd094c0..12f7d65ded0 100644 --- a/Mage.Sets/src/mage/sets/avacynrestored/BrunaLightOfAlabaster.java +++ b/Mage.Sets/src/mage/sets/avacynrestored/BrunaLightOfAlabaster.java @@ -41,6 +41,7 @@ import mage.cards.CardImpl; import mage.filter.FilterCard; import mage.filter.common.FilterAura; import mage.filter.predicate.mageobject.SubtypePredicate; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; @@ -91,7 +92,7 @@ class BrunaLightOfAlabasterEffect extends OneShotEffect { private static final FilterPermanent filter = new FilterPermanent("enchantment"); static { - filter.getCardType().add(CardType.ENCHANTMENT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.ENCHANTMENT)); } public Cursebreak(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/avacynrestored/DevoutChaplain.java b/Mage.Sets/src/mage/sets/avacynrestored/DevoutChaplain.java index c603cc58178..560c3afb9d1 100644 --- a/Mage.Sets/src/mage/sets/avacynrestored/DevoutChaplain.java +++ b/Mage.Sets/src/mage/sets/avacynrestored/DevoutChaplain.java @@ -37,10 +37,11 @@ import mage.abilities.costs.common.TapSourceCost; import mage.abilities.costs.common.TapTargetCost; import mage.abilities.effects.common.ExileTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.SubtypePredicate; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetPermanent; import mage.target.common.TargetControlledPermanent; @@ -54,9 +55,9 @@ public class DevoutChaplain extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("artifact or enchantment"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.getCardType().add(CardType.ENCHANTMENT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(Predicates.or( + new CardTypePredicate(CardType.ARTIFACT), + new CardTypePredicate(CardType.ENCHANTMENT))); } private final static FilterControlledPermanent humanFilter = new FilterControlledPermanent("untapped Human you control"); diff --git a/Mage.Sets/src/mage/sets/avacynrestored/DualCasting.java b/Mage.Sets/src/mage/sets/avacynrestored/DualCasting.java index a1f16ffe7c3..f67c70b4619 100644 --- a/Mage.Sets/src/mage/sets/avacynrestored/DualCasting.java +++ b/Mage.Sets/src/mage/sets/avacynrestored/DualCasting.java @@ -42,8 +42,9 @@ import mage.abilities.effects.common.CopyTargetSpellEffect; import mage.abilities.effects.common.continious.GainAbilityAttachedEffect; import mage.abilities.keyword.EnchantAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterSpell; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetPermanent; import mage.target.TargetSpell; import mage.target.common.TargetCreaturePermanent; @@ -56,9 +57,9 @@ public class DualCasting extends CardImpl { private static final FilterSpell filter = new FilterSpell("instant or sorcery spell"); static { - filter.getCardType().add(CardType.INSTANT); - filter.getCardType().add(CardType.SORCERY); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(Predicates.or( + new CardTypePredicate(CardType.INSTANT), + new CardTypePredicate(CardType.SORCERY))); } public DualCasting(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/avacynrestored/GeistSnatch.java b/Mage.Sets/src/mage/sets/avacynrestored/GeistSnatch.java index 66b5cfcb175..a6a020ab20b 100644 --- a/Mage.Sets/src/mage/sets/avacynrestored/GeistSnatch.java +++ b/Mage.Sets/src/mage/sets/avacynrestored/GeistSnatch.java @@ -36,6 +36,7 @@ import mage.abilities.effects.OneShotEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.filter.FilterSpell; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.Game; import mage.game.permanent.token.Token; import mage.target.TargetSpell; @@ -51,7 +52,7 @@ public class GeistSnatch extends CardImpl { private static final FilterSpell filter = new FilterSpell("creature spell"); static { - filter.getCardType().add(CardType.CREATURE); + filter.add(new CardTypePredicate(CardType.CREATURE)); } public GeistSnatch(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/avacynrestored/GhostlyFlicker.java b/Mage.Sets/src/mage/sets/avacynrestored/GhostlyFlicker.java index da1229eb1f2..d5ed11d0855 100644 --- a/Mage.Sets/src/mage/sets/avacynrestored/GhostlyFlicker.java +++ b/Mage.Sets/src/mage/sets/avacynrestored/GhostlyFlicker.java @@ -34,8 +34,9 @@ import mage.abilities.Ability; import mage.abilities.effects.OneShotEffect; import mage.cards.Card; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.target.common.TargetControlledPermanent; @@ -50,10 +51,10 @@ public class GhostlyFlicker extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("artifacts, creatures, and/or lands you control"); static { - filter.getCardType().add(CardType.CREATURE); - filter.getCardType().add(CardType.LAND); - filter.getCardType().add(CardType.ARTIFACT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(Predicates.or( + new CardTypePredicate(CardType.CREATURE), + new CardTypePredicate(CardType.LAND), + new CardTypePredicate(CardType.ARTIFACT))); } public GhostlyFlicker(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/avacynrestored/LunarMystic.java b/Mage.Sets/src/mage/sets/avacynrestored/LunarMystic.java index 3bd20723178..b4524f74363 100644 --- a/Mage.Sets/src/mage/sets/avacynrestored/LunarMystic.java +++ b/Mage.Sets/src/mage/sets/avacynrestored/LunarMystic.java @@ -36,6 +36,7 @@ import mage.abilities.effects.common.DoIfCostPaid; import mage.abilities.effects.common.DrawCardControllerEffect; import mage.cards.CardImpl; import mage.filter.FilterSpell; +import mage.filter.predicate.mageobject.CardTypePredicate; import java.util.UUID; @@ -48,7 +49,7 @@ public class LunarMystic extends CardImpl { private static final FilterSpell filter = new FilterSpell("an instant spell"); static { - filter.getCardType().add(CardType.INSTANT); + filter.add(new CardTypePredicate(CardType.INSTANT)); } public LunarMystic(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/avacynrestored/NaturalEnd.java b/Mage.Sets/src/mage/sets/avacynrestored/NaturalEnd.java index 1d994ec9d91..102d25f5912 100644 --- a/Mage.Sets/src/mage/sets/avacynrestored/NaturalEnd.java +++ b/Mage.Sets/src/mage/sets/avacynrestored/NaturalEnd.java @@ -33,8 +33,9 @@ import mage.Constants.Rarity; import mage.abilities.effects.common.DestroyTargetEffect; import mage.abilities.effects.common.GainLifeEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetPermanent; /** @@ -46,9 +47,9 @@ public class NaturalEnd extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("artifact or enchantment"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.getCardType().add(CardType.ENCHANTMENT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(Predicates.or( + new CardTypePredicate(CardType.ARTIFACT), + new CardTypePredicate(CardType.ENCHANTMENT))); } public NaturalEnd(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/avacynrestored/RiteOfRuin.java b/Mage.Sets/src/mage/sets/avacynrestored/RiteOfRuin.java index 44deb82dbd9..30c57a36f08 100644 --- a/Mage.Sets/src/mage/sets/avacynrestored/RiteOfRuin.java +++ b/Mage.Sets/src/mage/sets/avacynrestored/RiteOfRuin.java @@ -38,6 +38,7 @@ import mage.abilities.effects.OneShotEffect; import mage.cards.CardImpl; import mage.choices.ChoiceImpl; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; @@ -111,7 +112,7 @@ class RiteOfRuinEffect extends OneShotEffect { int count = 1; for (CardType cardType : order) { FilterControlledPermanent filter = new FilterControlledPermanent(cardType + " permanent you control"); - filter.getCardType().add(cardType); + filter.add(new CardTypePredicate(cardType)); for (UUID playerId : controller.getInRange()) { int amount = Math.min(count, game.getBattlefield().countAll(filter, playerId, game)); diff --git a/Mage.Sets/src/mage/sets/betrayersofkamigawa/AkkiBlizzardHerder.java b/Mage.Sets/src/mage/sets/betrayersofkamigawa/AkkiBlizzardHerder.java index 146488e2036..e01a4ca32a8 100644 --- a/Mage.Sets/src/mage/sets/betrayersofkamigawa/AkkiBlizzardHerder.java +++ b/Mage.Sets/src/mage/sets/betrayersofkamigawa/AkkiBlizzardHerder.java @@ -36,6 +36,7 @@ import mage.abilities.common.DiesTriggeredAbility; import mage.abilities.effects.common.SacrificeAllEffect; import mage.cards.CardImpl; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; /** * @@ -45,7 +46,7 @@ public class AkkiBlizzardHerder extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("land"); static { - filter.getCardType().add(CardType.LAND); + filter.add(new CardTypePredicate(CardType.LAND)); } public AkkiBlizzardHerder(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/betrayersofkamigawa/FinalJudgment.java b/Mage.Sets/src/mage/sets/betrayersofkamigawa/FinalJudgment.java index 6daeba065b9..3238e54994d 100644 --- a/Mage.Sets/src/mage/sets/betrayersofkamigawa/FinalJudgment.java +++ b/Mage.Sets/src/mage/sets/betrayersofkamigawa/FinalJudgment.java @@ -33,8 +33,8 @@ import mage.Constants.Rarity; import mage.abilities.Ability; import mage.abilities.effects.OneShotEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.Game; import mage.game.permanent.Permanent; @@ -70,8 +70,7 @@ class FinalJudgmentEffect extends OneShotEffect { private final static FilterPermanent filter = new FilterPermanent(""); static { - filter.getCardType().add(CardType.CREATURE); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.CREATURE)); } public FinalJudgmentEffect() { diff --git a/Mage.Sets/src/mage/sets/betrayersofkamigawa/Floodbringer.java b/Mage.Sets/src/mage/sets/betrayersofkamigawa/Floodbringer.java index 8b9d31224c4..6521b1914ce 100644 --- a/Mage.Sets/src/mage/sets/betrayersofkamigawa/Floodbringer.java +++ b/Mage.Sets/src/mage/sets/betrayersofkamigawa/Floodbringer.java @@ -40,8 +40,8 @@ import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.effects.common.TapTargetEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.common.TargetControlledPermanent; import mage.target.common.TargetLandPermanent; @@ -54,8 +54,7 @@ public class Floodbringer extends CardImpl { private final static FilterControlledPermanent filter = new FilterControlledPermanent("a land"); static { - filter.getCardType().add(CardType.LAND); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.LAND)); } public Floodbringer(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/AkkiAvalanchers.java b/Mage.Sets/src/mage/sets/championsofkamigawa/AkkiAvalanchers.java index 3c8df4a5072..8b46a5e69ad 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/AkkiAvalanchers.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/AkkiAvalanchers.java @@ -39,8 +39,8 @@ import mage.abilities.common.ActivateOncePerTurnActivatedAbility; import mage.abilities.costs.common.SacrificeTargetCost; import mage.abilities.effects.common.continious.BoostSourceEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.common.TargetControlledPermanent; /** @@ -51,8 +51,7 @@ public class AkkiAvalanchers extends CardImpl { private final static FilterControlledPermanent filter = new FilterControlledPermanent("a land"); static { - filter.getCardType().add(CardType.LAND); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.LAND)); } public AkkiAvalanchers(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/AuraOfDominion.java b/Mage.Sets/src/mage/sets/championsofkamigawa/AuraOfDominion.java index b5bff7c94cd..cc093f6f8dc 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/AuraOfDominion.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/AuraOfDominion.java @@ -41,7 +41,6 @@ import mage.abilities.effects.common.AttachEffect; import mage.abilities.effects.common.UntapEnchantedEffect; import mage.abilities.keyword.EnchantAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledCreaturePermanent; import mage.target.TargetPermanent; import mage.target.common.TargetControlledCreaturePermanent; @@ -57,7 +56,6 @@ public class AuraOfDominion extends CardImpl { static { filter.setTapped(false); filter.setUseTapped(true); - filter.setScopeCardType(Filter.ComparisonScope.Any); } diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/Befoul.java b/Mage.Sets/src/mage/sets/championsofkamigawa/Befoul.java index 7d4d99523ab..66d0486b4bf 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/Befoul.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/Befoul.java @@ -37,6 +37,9 @@ import mage.ObjectColor; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; import mage.filter.FilterPermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; +import mage.filter.predicate.mageobject.ColorPredicate; import mage.target.TargetPermanent; /** @@ -48,10 +51,11 @@ public class Befoul extends CardImpl { public static final FilterPermanent filter = new FilterPermanent("land or nonblack creature"); static { - filter.getCardType().add(CardType.LAND); - filter.getCardType().add(CardType.CREATURE); - filter.setNotColor(true); - filter.setColor(ObjectColor.BLACK); + filter.add(Predicates.or( + new CardTypePredicate(CardType.LAND), + Predicates.and( + Predicates.not(new ColorPredicate(ObjectColor.BLACK)), + new CardTypePredicate(CardType.CREATURE)))); } public Befoul (UUID ownerId) { super(ownerId, 102, "Befoul", Rarity.COMMON, new CardType[]{CardType.SORCERY}, "{2}{B}{B}"); diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/BudokaGardener.java b/Mage.Sets/src/mage/sets/championsofkamigawa/BudokaGardener.java index 3d02edc2d6f..7aff14b150c 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/BudokaGardener.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/BudokaGardener.java @@ -45,9 +45,9 @@ import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.continious.BoostSourceEffect; import mage.cards.Card; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; import mage.filter.common.FilterLandCard; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.game.permanent.token.Token; @@ -137,8 +137,7 @@ class DokaiWeaverofLifeToken extends Token { final static FilterControlledPermanent filterLands = new FilterControlledPermanent("lands"); static { - filterLands.getCardType().add(CardType.LAND); - filterLands.setScopeCardType(Filter.ComparisonScope.Any); + filterLands.add(new CardTypePredicate(CardType.LAND)); } DokaiWeaverofLifeToken() { diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/Cleanfall.java b/Mage.Sets/src/mage/sets/championsofkamigawa/Cleanfall.java index 9400b648b80..473818646a3 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/Cleanfall.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/Cleanfall.java @@ -34,8 +34,8 @@ import mage.Constants.CardType; import mage.Constants.Rarity; import mage.abilities.effects.common.DestroyAllEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; /** * @author Loki @@ -45,8 +45,7 @@ public class Cleanfall extends CardImpl { private final static FilterPermanent filter = new FilterPermanent("enchantments"); static { - filter.getCardType().add(CardType.ENCHANTMENT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.ENCHANTMENT)); } public Cleanfall(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/CommuneWithNature.java b/Mage.Sets/src/mage/sets/championsofkamigawa/CommuneWithNature.java index e12e433a1d9..f80a814b462 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/CommuneWithNature.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/CommuneWithNature.java @@ -35,6 +35,7 @@ import mage.abilities.dynamicvalue.common.StaticValue; import mage.abilities.effects.common.LookLibraryAndPickControllerEffect; import mage.cards.CardImpl; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.CardTypePredicate; /** * @@ -44,14 +45,14 @@ public class CommuneWithNature extends CardImpl { private final static FilterCard filter = new FilterCard("creature card"); static { - filter.getCardType().add(CardType.CREATURE); - } + filter.add(new CardTypePredicate(CardType.CREATURE)); + } public CommuneWithNature (UUID ownerId) { super(ownerId, 204, "Commune with Nature", Rarity.COMMON, new CardType[]{CardType.SORCERY}, "{G}"); this.expansionSetCode = "CHK"; - this.color.setGreen(true); + this.color.setGreen(true); // Look at the top five cards of your library. You may reveal a creature card from among them and put it into your hand. Put the rest on the bottom of your library in any order. this.getSpellAbility().addEffect(new LookLibraryAndPickControllerEffect(new StaticValue(5), false, new StaticValue(1), filter, false)); @@ -67,4 +68,3 @@ public class CommuneWithNature extends CardImpl { } } - diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/FeastOfWorms.java b/Mage.Sets/src/mage/sets/championsofkamigawa/FeastOfWorms.java index d58bf454dd0..48c635ace37 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/FeastOfWorms.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/FeastOfWorms.java @@ -38,6 +38,7 @@ import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; @@ -52,15 +53,15 @@ public class FeastOfWorms extends CardImpl { private final static FilterControlledPermanent filter = new FilterControlledPermanent(); static { - filter.getCardType().add(CardType.LAND); - } + filter.add(new CardTypePredicate(CardType.LAND)); + } public FeastOfWorms (UUID ownerId) { super(ownerId, 216, "Feast of Worms", Rarity.UNCOMMON, new CardType[]{CardType.SORCERY}, "{3}{G}{G}"); this.expansionSetCode = "CHK"; this.subtype.add("Arcane"); - this.color.setGreen(true); + this.color.setGreen(true); // Destroy target land. If that land was legendary, its controller sacrifices another land. this.getSpellAbility().addEffect(new DestroyTargetEffect()); @@ -103,7 +104,7 @@ class FeastOfWormsEffect extends OneShotEffect { if (targetPlayer != null && permanent != null && (permanent.getSupertype().get(0).toString().equals("Legendary"))) { FilterControlledPermanent filter = new FilterControlledPermanent("land to sacrifice"); - filter.getCardType().add(CardType.LAND); + filter.add(new CardTypePredicate(CardType.LAND)); filter.getControllerId().add(targetPlayer.getId()); filter.setNotController(false); TargetControlledPermanent target = new TargetControlledPermanent(1, 1, filter, false); diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/Frostwielder.java b/Mage.Sets/src/mage/sets/championsofkamigawa/Frostwielder.java index 76d93099614..b1c6c0bbfb4 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/Frostwielder.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/Frostwielder.java @@ -43,8 +43,8 @@ import mage.abilities.costs.common.TapSourceCost; import mage.abilities.effects.ReplacementEffectImpl; import mage.abilities.effects.common.DamageTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.Game; import mage.game.events.GameEvent; import mage.game.events.GameEvent.EventType; @@ -61,8 +61,7 @@ public class Frostwielder extends CardImpl { private final static FilterControlledPermanent filter = new FilterControlledPermanent("a land"); static { - filter.getCardType().add(CardType.LAND); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.LAND)); } public Frostwielder(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/JoyousRespite.java b/Mage.Sets/src/mage/sets/championsofkamigawa/JoyousRespite.java index b9f721bf6fd..988b9ad0b6e 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/JoyousRespite.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/JoyousRespite.java @@ -35,6 +35,7 @@ import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.effects.common.GainLifeEffect; import mage.cards.CardImpl; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; /** * @@ -44,8 +45,8 @@ public class JoyousRespite extends CardImpl { private final static FilterControlledPermanent filter = new FilterControlledPermanent(); static { - filter.getCardType().add(CardType.LAND); - } + filter.add(new CardTypePredicate(CardType.LAND)); + } public JoyousRespite (UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/KamiOfAncientLaw.java b/Mage.Sets/src/mage/sets/championsofkamigawa/KamiOfAncientLaw.java index 7941cee4576..bf742425eb9 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/KamiOfAncientLaw.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/KamiOfAncientLaw.java @@ -39,8 +39,8 @@ import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.common.SacrificeSourceCost; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetPermanent; /** @@ -51,8 +51,7 @@ public class KamiOfAncientLaw extends CardImpl { private final static FilterPermanent filter = new FilterPermanent("enchantment"); static { - filter.getCardType().add(CardType.ENCHANTMENT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.ENCHANTMENT)); } public KamiOfAncientLaw (UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/KumanoMasterYamabushi.java b/Mage.Sets/src/mage/sets/championsofkamigawa/KumanoMasterYamabushi.java index 55d628735ce..adae10259d5 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/KumanoMasterYamabushi.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/KumanoMasterYamabushi.java @@ -45,8 +45,8 @@ import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.ReplacementEffectImpl; import mage.abilities.effects.common.DamageTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.Game; import mage.game.events.GameEvent; import mage.game.events.GameEvent.EventType; @@ -65,8 +65,7 @@ public class KumanoMasterYamabushi extends CardImpl { private final static FilterControlledPermanent filter = new FilterControlledPermanent("a land"); static { - filter.getCardType().add(CardType.LAND); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.LAND)); } public KumanoMasterYamabushi(UUID ownerId) { @@ -131,11 +130,11 @@ class KumanaoMasterYamabushiEffect extends ReplacementEffectImpl { private final static FilterControlledPermanent filter = new FilterControlledPermanent("a land"); static { - filter.getCardType().add(CardType.LAND); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.LAND)); } public KumanosPupil(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/MelokuTheCloudedMirror.java b/Mage.Sets/src/mage/sets/championsofkamigawa/MelokuTheCloudedMirror.java index e98fb136987..bded380684f 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/MelokuTheCloudedMirror.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/MelokuTheCloudedMirror.java @@ -41,8 +41,8 @@ import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.permanent.token.Token; import mage.target.common.TargetControlledPermanent; @@ -54,8 +54,7 @@ public class MelokuTheCloudedMirror extends CardImpl { private final static FilterControlledPermanent filter = new FilterControlledPermanent("a land"); static { - filter.getCardType().add(CardType.LAND); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.LAND)); } public MelokuTheCloudedMirror(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/MyojinOfLifesWeb.java b/Mage.Sets/src/mage/sets/championsofkamigawa/MyojinOfLifesWeb.java index 571c2f2b722..1c32307d8e4 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/MyojinOfLifesWeb.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/MyojinOfLifesWeb.java @@ -50,6 +50,7 @@ import mage.abilities.keyword.IndestructibleAbility; import mage.cards.CardImpl; import mage.counters.CounterType; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.common.TargetCardInHand; import mage.watchers.common.CastFromHandWatcher; @@ -60,7 +61,7 @@ public class MyojinOfLifesWeb extends CardImpl { private static final FilterCard filter = new FilterCard("any number of creature cards from your hand"); static { - filter.getCardType().add(CardType.CREATURE); + filter.add(new CardTypePredicate(CardType.CREATURE)); filter.setTargetOwner(TargetController.YOU); } diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/PeerThroughDepths.java b/Mage.Sets/src/mage/sets/championsofkamigawa/PeerThroughDepths.java index b1e2ced9ec5..7a6a9dd9971 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/PeerThroughDepths.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/PeerThroughDepths.java @@ -34,8 +34,9 @@ import mage.Constants.Rarity; import mage.abilities.dynamicvalue.common.StaticValue; import mage.abilities.effects.common.LookLibraryAndPickControllerEffect; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.FilterCard; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; /** * @@ -45,10 +46,10 @@ public class PeerThroughDepths extends CardImpl { private final static FilterCard filter = new FilterCard("instant or sorcery card"); static { - filter.getCardType().add(CardType.SORCERY); - filter.getCardType().add(CardType.INSTANT); - filter.setScopeCardType(ComparisonScope.Any); - } + filter.add(Predicates.or( + new CardTypePredicate(CardType.SORCERY), + new CardTypePredicate(CardType.INSTANT))); + } public PeerThroughDepths (UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/QuietPurity.java b/Mage.Sets/src/mage/sets/championsofkamigawa/QuietPurity.java index 64cf15ec71e..b621cc1717c 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/QuietPurity.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/QuietPurity.java @@ -34,8 +34,8 @@ import mage.Constants.CardType; import mage.Constants.Rarity; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetPermanent; /** @@ -46,8 +46,7 @@ public class QuietPurity extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("Enchantment"); static { - filter.getCardType().add(CardType.ENCHANTMENT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.ENCHANTMENT)); } public QuietPurity(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/SoratamiCloudskater.java b/Mage.Sets/src/mage/sets/championsofkamigawa/SoratamiCloudskater.java index f25206f08d6..5431075d842 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/SoratamiCloudskater.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/SoratamiCloudskater.java @@ -41,8 +41,8 @@ import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.effects.common.DrawDiscardControllerEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.common.TargetControlledPermanent; /** @@ -53,8 +53,7 @@ public class SoratamiCloudskater extends CardImpl { private final static FilterControlledPermanent filter = new FilterControlledPermanent("a land"); static { - filter.getCardType().add(CardType.LAND); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.LAND)); } public SoratamiCloudskater(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/SoratamiMirrorGuard.java b/Mage.Sets/src/mage/sets/championsofkamigawa/SoratamiMirrorGuard.java index a92d0354db7..94a373300d0 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/SoratamiMirrorGuard.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/SoratamiMirrorGuard.java @@ -45,6 +45,7 @@ import mage.cards.CardImpl; import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.filter.predicate.mageobject.PowerPredicate; import mage.target.common.TargetControlledPermanent; import mage.target.common.TargetCreaturePermanent; @@ -58,8 +59,7 @@ public class SoratamiMirrorGuard extends CardImpl { private final static FilterCreaturePermanent filterCreature = new FilterCreaturePermanent("creature with power 2 or less"); static { - filter.getCardType().add(CardType.LAND); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.LAND)); filterCreature.add(new PowerPredicate(Filter.ComparisonType.LessThan, 3)); } diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/SoratamiMirrorMage.java b/Mage.Sets/src/mage/sets/championsofkamigawa/SoratamiMirrorMage.java index 8cab76ba57b..5c4ca441123 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/SoratamiMirrorMage.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/SoratamiMirrorMage.java @@ -41,8 +41,8 @@ import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.effects.common.ReturnToHandTargetEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.common.TargetControlledPermanent; import mage.target.common.TargetCreaturePermanent; @@ -54,8 +54,7 @@ public class SoratamiMirrorMage extends CardImpl { private final static FilterControlledPermanent filter = new FilterControlledPermanent("lands"); static { - filter.getCardType().add(CardType.LAND); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.LAND)); } public SoratamiMirrorMage(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/SoratamiRainshaper.java b/Mage.Sets/src/mage/sets/championsofkamigawa/SoratamiRainshaper.java index 604807ff281..6f5840ed7e2 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/SoratamiRainshaper.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/SoratamiRainshaper.java @@ -42,8 +42,8 @@ import mage.abilities.effects.common.continious.GainAbilityTargetEffect; import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.ShroudAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.common.TargetControlledCreaturePermanent; import mage.target.common.TargetControlledPermanent; @@ -55,8 +55,7 @@ public class SoratamiRainshaper extends CardImpl { private final static FilterControlledPermanent filter = new FilterControlledPermanent("a land"); static { - filter.getCardType().add(CardType.LAND); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.LAND)); } public SoratamiRainshaper(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/SoratamiSavant.java b/Mage.Sets/src/mage/sets/championsofkamigawa/SoratamiSavant.java index 9d8837f7d5a..ff452ba9dad 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/SoratamiSavant.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/SoratamiSavant.java @@ -41,8 +41,8 @@ import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.effects.common.CounterUnlessPaysEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetSpell; import mage.target.common.TargetControlledPermanent; @@ -54,8 +54,7 @@ public class SoratamiSavant extends CardImpl { private final static FilterControlledPermanent filter = new FilterControlledPermanent("a land"); static { - filter.getCardType().add(CardType.LAND); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.LAND)); } public SoratamiSavant(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/SoratamiSeer.java b/Mage.Sets/src/mage/sets/championsofkamigawa/SoratamiSeer.java index 5240f47b501..78a2dce4adf 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/SoratamiSeer.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/SoratamiSeer.java @@ -42,8 +42,8 @@ import mage.abilities.effects.OneShotEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.Card; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.Game; import mage.players.Player; import mage.target.common.TargetControlledPermanent; @@ -56,8 +56,7 @@ public class SoratamiSeer extends CardImpl { private final static FilterControlledPermanent filter = new FilterControlledPermanent("lands"); static { - filter.getCardType().add(CardType.LAND); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.LAND)); } public SoratamiSeer(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/StrengthOfCedars.java b/Mage.Sets/src/mage/sets/championsofkamigawa/StrengthOfCedars.java index c57e28d830c..4bca368ba03 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/StrengthOfCedars.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/StrengthOfCedars.java @@ -36,8 +36,8 @@ import mage.Constants.Rarity; import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.effects.common.continious.BoostTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.common.TargetCreaturePermanent; /** @@ -48,8 +48,7 @@ public class StrengthOfCedars extends CardImpl { private final static FilterControlledPermanent filter = new FilterControlledPermanent("land your control"); static { - filter.getCardType().add(CardType.LAND); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.LAND)); } public StrengthOfCedars (UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/TimeOfNeed.java b/Mage.Sets/src/mage/sets/championsofkamigawa/TimeOfNeed.java index ce02a0e2b38..fffecc350c5 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/TimeOfNeed.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/TimeOfNeed.java @@ -35,6 +35,7 @@ import mage.Constants.Rarity; import mage.abilities.effects.common.search.SearchLibraryRevealPutInHandEffect; import mage.cards.CardImpl; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.filter.predicate.mageobject.SupertypePredicate; import mage.target.common.TargetCardInLibrary; @@ -46,7 +47,7 @@ public class TimeOfNeed extends CardImpl { private final static FilterCard filter = new FilterCard("legendary creature card"); static { - filter.getCardType().add(CardType.CREATURE); + filter.add(new CardTypePredicate(CardType.CREATURE)); filter.add(new SupertypePredicate("Legendary")); } diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/UyoSilentProphet.java b/Mage.Sets/src/mage/sets/championsofkamigawa/UyoSilentProphet.java index ccdd4357801..e49e73aa318 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/UyoSilentProphet.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/UyoSilentProphet.java @@ -40,9 +40,10 @@ import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.effects.common.CopyTargetSpellEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterSpell; import mage.filter.common.FilterLandPermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetSpell; import mage.target.common.TargetControlledPermanent; @@ -55,9 +56,9 @@ public class UyoSilentProphet extends CardImpl { private final static FilterSpell filter = new FilterSpell("instant or sorcery spell"); static { - filter.getCardType().add(CardType.INSTANT); - filter.getCardType().add(CardType.SORCERY); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(Predicates.or( + new CardTypePredicate(CardType.INSTANT), + new CardTypePredicate(CardType.SORCERY))); } public UyoSilentProphet(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/conflux/Countersquall.java b/Mage.Sets/src/mage/sets/conflux/Countersquall.java index a7f8f61e254..d3203022c54 100644 --- a/Mage.Sets/src/mage/sets/conflux/Countersquall.java +++ b/Mage.Sets/src/mage/sets/conflux/Countersquall.java @@ -34,6 +34,8 @@ import mage.abilities.effects.common.CounterTargetEffect; import mage.abilities.effects.common.LoseLifeControllerEffect; import mage.cards.CardImpl; import mage.filter.FilterSpell; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetSpell; /** @@ -45,7 +47,7 @@ public class Countersquall extends CardImpl { private static final FilterSpell filter = new FilterSpell("noncreature spell"); static { - filter.getNotCardType().add(CardType.CREATURE); + filter.add(Predicates.not(new CardTypePredicate(CardType.CREATURE))); } public Countersquall(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/conflux/Esperzoa.java b/Mage.Sets/src/mage/sets/conflux/Esperzoa.java index 365f6e87e58..c1b6b56c0ed 100644 --- a/Mage.Sets/src/mage/sets/conflux/Esperzoa.java +++ b/Mage.Sets/src/mage/sets/conflux/Esperzoa.java @@ -39,8 +39,8 @@ import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; import mage.abilities.effects.common.ReturnToHandTargetEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.common.TargetControlledPermanent; /** @@ -51,8 +51,7 @@ public class Esperzoa extends CardImpl { private final static FilterControlledPermanent filter = new FilterControlledPermanent("artifact"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.ARTIFACT)); } public Esperzoa (UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/conflux/EtherswornAdjudicator.java b/Mage.Sets/src/mage/sets/conflux/EtherswornAdjudicator.java index e421b777384..14683ecf0f1 100644 --- a/Mage.Sets/src/mage/sets/conflux/EtherswornAdjudicator.java +++ b/Mage.Sets/src/mage/sets/conflux/EtherswornAdjudicator.java @@ -41,8 +41,9 @@ import mage.abilities.effects.common.DestroyTargetEffect; import mage.abilities.effects.common.UntapSourceEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.common.TargetControlledPermanent; /** @@ -53,9 +54,9 @@ public class EtherswornAdjudicator extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("creature or enchantment"); static { - filter.getCardType().add(CardType.CREATURE); - filter.getCardType().add(CardType.ENCHANTMENT); - filter.setScopeCardType(ComparisonScope.Any); + filter.add(Predicates.or( + new CardTypePredicate(CardType.CREATURE), + new CardTypePredicate(CardType.ENCHANTMENT))); } public EtherswornAdjudicator(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/conflux/FaerieMechanist.java b/Mage.Sets/src/mage/sets/conflux/FaerieMechanist.java index 4a5d737864b..dfe4e7cfe3e 100644 --- a/Mage.Sets/src/mage/sets/conflux/FaerieMechanist.java +++ b/Mage.Sets/src/mage/sets/conflux/FaerieMechanist.java @@ -38,6 +38,7 @@ import mage.abilities.effects.common.LookLibraryAndPickControllerEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.CardTypePredicate; /** * @@ -47,7 +48,7 @@ public class FaerieMechanist extends CardImpl { private final static FilterCard filter = new FilterCard("artifact card"); static { - filter.getCardType().add(CardType.ARTIFACT); + filter.add(new CardTypePredicate(CardType.ARTIFACT)); } public FaerieMechanist(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/conflux/FiligreeFracture.java b/Mage.Sets/src/mage/sets/conflux/FiligreeFracture.java index a209ad11f6f..f93ab31f161 100644 --- a/Mage.Sets/src/mage/sets/conflux/FiligreeFracture.java +++ b/Mage.Sets/src/mage/sets/conflux/FiligreeFracture.java @@ -36,8 +36,9 @@ import mage.abilities.Ability; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.FilterPermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; @@ -52,9 +53,9 @@ public class FiligreeFracture extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("artifact or enchantment"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.getCardType().add(CardType.ENCHANTMENT); - filter.setScopeCardType(ComparisonScope.Any); + filter.add(Predicates.or( + new CardTypePredicate(CardType.ARTIFACT), + new CardTypePredicate(CardType.ENCHANTMENT))); } public FiligreeFracture(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/conflux/GoblinRazerunners.java b/Mage.Sets/src/mage/sets/conflux/GoblinRazerunners.java index 20a5f38cfa5..d7d34e92365 100644 --- a/Mage.Sets/src/mage/sets/conflux/GoblinRazerunners.java +++ b/Mage.Sets/src/mage/sets/conflux/GoblinRazerunners.java @@ -44,8 +44,8 @@ import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.cards.CardImpl; import mage.counters.CounterType; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetPlayer; import mage.target.common.TargetControlledPermanent; @@ -54,11 +54,10 @@ import mage.target.common.TargetControlledPermanent; * @author Loki */ public class GoblinRazerunners extends CardImpl { - private static FilterControlledPermanent filter = new FilterControlledPermanent("a land"); + private static final FilterControlledPermanent filter = new FilterControlledPermanent("a land"); static { - filter.getCardType().add(CardType.LAND); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.LAND)); } public GoblinRazerunners (UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/conflux/KnightOfTheReliquary.java b/Mage.Sets/src/mage/sets/conflux/KnightOfTheReliquary.java index 76fd6689937..06f488a2f63 100644 --- a/Mage.Sets/src/mage/sets/conflux/KnightOfTheReliquary.java +++ b/Mage.Sets/src/mage/sets/conflux/KnightOfTheReliquary.java @@ -44,10 +44,10 @@ import mage.abilities.dynamicvalue.common.CardsInControllerGraveyardCount; import mage.abilities.effects.common.continious.BoostSourceEffect; import mage.abilities.effects.common.search.SearchLibraryPutInPlayEffect; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.common.FilterControlledPermanent; import mage.filter.common.FilterLandCard; import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetCardInLibrary; import mage.target.common.TargetControlledPermanent; @@ -61,8 +61,7 @@ public class KnightOfTheReliquary extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("Forest or Plains"); static { - filter.getCardType().add(CardType.LAND); - filter.setScopeCardType(ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.LAND)); filter.add(Predicates.or(new SubtypePredicate("Forest"), new SubtypePredicate("Plains"))); } diff --git a/Mage.Sets/src/mage/sets/conflux/MoltenFrame.java b/Mage.Sets/src/mage/sets/conflux/MoltenFrame.java index 1e267ec4651..ccd4b4b5627 100644 --- a/Mage.Sets/src/mage/sets/conflux/MoltenFrame.java +++ b/Mage.Sets/src/mage/sets/conflux/MoltenFrame.java @@ -35,8 +35,8 @@ import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.common.DestroyTargetEffect; import mage.abilities.keyword.CyclingAbility; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.common.TargetCreaturePermanent; /** @@ -48,8 +48,7 @@ public class MoltenFrame extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("artifact creature"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.setScopeCardType(ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.ARTIFACT)); } public MoltenFrame(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/conflux/NicolBolasPlaneswalker.java b/Mage.Sets/src/mage/sets/conflux/NicolBolasPlaneswalker.java index 40c7e037216..124f9c92268 100644 --- a/Mage.Sets/src/mage/sets/conflux/NicolBolasPlaneswalker.java +++ b/Mage.Sets/src/mage/sets/conflux/NicolBolasPlaneswalker.java @@ -42,6 +42,8 @@ import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.cards.CardImpl; import mage.counters.CounterType; import mage.filter.FilterPermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetPermanent; import mage.target.TargetPlayer; import mage.target.common.TargetCreaturePermanent; @@ -55,7 +57,7 @@ public class NicolBolasPlaneswalker extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("noncreature permanent"); static { - filter.getNotCardType().add(CardType.CREATURE); + filter.add(Predicates.not(new CardTypePredicate(CardType.CREATURE))); } public NicolBolasPlaneswalker(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/conflux/SigilOfTheEmptyThrone.java b/Mage.Sets/src/mage/sets/conflux/SigilOfTheEmptyThrone.java index 3200c052b1b..f202e680d9b 100644 --- a/Mage.Sets/src/mage/sets/conflux/SigilOfTheEmptyThrone.java +++ b/Mage.Sets/src/mage/sets/conflux/SigilOfTheEmptyThrone.java @@ -35,6 +35,7 @@ import mage.abilities.common.SpellCastTriggeredAbility; import mage.abilities.effects.common.CreateTokenEffect; import mage.cards.CardImpl; import mage.filter.FilterSpell; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.permanent.token.AngelToken; /** @@ -46,7 +47,7 @@ public class SigilOfTheEmptyThrone extends CardImpl { private static final FilterSpell filter = new FilterSpell("an enchantment spell"); static { - filter.getCardType().add(CardType.ENCHANTMENT); + filter.add(new CardTypePredicate(CardType.ENCHANTMENT)); } public SigilOfTheEmptyThrone(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/darkascension/AfflictedDeserter.java b/Mage.Sets/src/mage/sets/darkascension/AfflictedDeserter.java index 5f1d0b37c26..566bc86b5f2 100644 --- a/Mage.Sets/src/mage/sets/darkascension/AfflictedDeserter.java +++ b/Mage.Sets/src/mage/sets/darkascension/AfflictedDeserter.java @@ -43,8 +43,8 @@ import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.TransformSourceEffect; import mage.abilities.keyword.TransformAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.Game; import mage.game.events.GameEvent; import mage.game.permanent.Permanent; @@ -95,8 +95,7 @@ class WerewolfRansackerAbility extends TriggeredAbilityImpl { private static final FilterSpell filter = new FilterSpell("creature spell"); static { - filter.getCardType().add(CardType.CREATURE); + filter.add(new CardTypePredicate(CardType.CREATURE)); } public BoneToAsh(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/darkascension/Counterlash.java b/Mage.Sets/src/mage/sets/darkascension/Counterlash.java index 6658e3617a3..dec7db0fb82 100644 --- a/Mage.Sets/src/mage/sets/darkascension/Counterlash.java +++ b/Mage.Sets/src/mage/sets/darkascension/Counterlash.java @@ -27,16 +27,20 @@ */ package mage.sets.darkascension; +import java.util.ArrayList; import java.util.UUID; import mage.Constants; import mage.Constants.CardType; import mage.Constants.Rarity; +import mage.MageObject; import mage.abilities.Ability; import mage.abilities.effects.OneShotEffect; import mage.cards.Card; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterCard; +import mage.filter.predicate.Predicate; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.Game; import mage.game.stack.StackObject; import mage.players.Player; @@ -94,11 +98,13 @@ class CounterlashEffect extends OneShotEffect { game.getStack().counter(source.getFirstTarget(), source.getSourceId(), game); if (player.chooseUse(Constants.Outcome.PutCardInPlay, "Cast a nonland card in your hand that shares a card type with that spell without paying its mana cost?", game)) { FilterCard filter = new FilterCard(); + ArrayList> types = new ArrayList>(); for (CardType type: stackObject.getCardType()) { - if (type != CardType.LAND) - filter.getCardType().add(type); + if (type != CardType.LAND) { + types.add(new CardTypePredicate(type)); + } } - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(Predicates.or(types)); TargetCardInHand target = new TargetCardInHand(filter); if (player.choose(Constants.Outcome.PutCardInPlay, target, source.getSourceId(), game)) { Card card = player.getHand().get(target.getFirstTarget(), game); diff --git a/Mage.Sets/src/mage/sets/darkascension/CurseOfEchoes.java b/Mage.Sets/src/mage/sets/darkascension/CurseOfEchoes.java index b4bb5626601..903b2a0e54a 100644 --- a/Mage.Sets/src/mage/sets/darkascension/CurseOfEchoes.java +++ b/Mage.Sets/src/mage/sets/darkascension/CurseOfEchoes.java @@ -38,8 +38,9 @@ import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.AttachEffect; import mage.abilities.keyword.EnchantAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterSpell; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.Game; import mage.game.events.GameEvent; import mage.game.permanent.Permanent; @@ -87,9 +88,9 @@ class CurseOfEchoesCopyTriggeredAbility extends TriggeredAbilityImpl { private static final FilterNonTokenPermanent filter = new FilterNonTokenPermanent("nontoken creature"); static { - filter.getCardType().add(CardType.CREATURE); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.CREATURE)); filter.setTargetController(Constants.TargetController.YOU); } diff --git a/Mage.Sets/src/mage/sets/darkascension/IncreasingVengeance.java b/Mage.Sets/src/mage/sets/darkascension/IncreasingVengeance.java index 49b93250db0..7fead2840bc 100644 --- a/Mage.Sets/src/mage/sets/darkascension/IncreasingVengeance.java +++ b/Mage.Sets/src/mage/sets/darkascension/IncreasingVengeance.java @@ -36,8 +36,9 @@ import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.OneShotEffect; import mage.abilities.keyword.FlashbackAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterSpell; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.Game; import mage.game.stack.Spell; import mage.target.TargetSpell; @@ -51,9 +52,9 @@ public class IncreasingVengeance extends CardImpl { private final static FilterSpell filter = new FilterSpell("instant or sorcery spell"); static { - filter.getCardType().add(CardType.INSTANT); - filter.getCardType().add(CardType.SORCERY); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(Predicates.or( + new CardTypePredicate(CardType.INSTANT), + new CardTypePredicate(CardType.SORCERY))); filter.setTargetController(Constants.TargetController.YOU); } diff --git a/Mage.Sets/src/mage/sets/darkascension/MysticRetrieval.java b/Mage.Sets/src/mage/sets/darkascension/MysticRetrieval.java index ec33f76c2f7..ac8e101a3ef 100644 --- a/Mage.Sets/src/mage/sets/darkascension/MysticRetrieval.java +++ b/Mage.Sets/src/mage/sets/darkascension/MysticRetrieval.java @@ -36,8 +36,9 @@ import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.common.ReturnToHandTargetEffect; import mage.abilities.keyword.FlashbackAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterCard; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.common.TargetCardInYourGraveyard; /** @@ -48,9 +49,9 @@ public class MysticRetrieval extends CardImpl { private static final FilterCard filter = new FilterCard("instant or sorcery card from your graveyard"); static { - filter.getCardType().add(CardType.INSTANT); - filter.getCardType().add(CardType.SORCERY); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(Predicates.or( + new CardTypePredicate(CardType.INSTANT), + new CardTypePredicate(CardType.SORCERY))); } public MysticRetrieval(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/darkascension/RayOfRevelation.java b/Mage.Sets/src/mage/sets/darkascension/RayOfRevelation.java index 65f74cdedd7..15bd3eb1302 100644 --- a/Mage.Sets/src/mage/sets/darkascension/RayOfRevelation.java +++ b/Mage.Sets/src/mage/sets/darkascension/RayOfRevelation.java @@ -36,6 +36,7 @@ import mage.abilities.effects.common.DestroyTargetEffect; import mage.abilities.keyword.FlashbackAbility; import mage.cards.CardImpl; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetPermanent; /** @@ -47,7 +48,7 @@ public class RayOfRevelation extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("enchantment"); static { - filter.getCardType().add(CardType.ENCHANTMENT); + filter.add(new CardTypePredicate(CardType.ENCHANTMENT)); } public RayOfRevelation(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/darkascension/SorinLordOfInnistrad.java b/Mage.Sets/src/mage/sets/darkascension/SorinLordOfInnistrad.java index 096a9390d04..1f931e9b19e 100644 --- a/Mage.Sets/src/mage/sets/darkascension/SorinLordOfInnistrad.java +++ b/Mage.Sets/src/mage/sets/darkascension/SorinLordOfInnistrad.java @@ -46,8 +46,9 @@ import mage.abilities.keyword.LifelinkAbility; import mage.cards.Card; import mage.cards.CardImpl; import mage.counters.CounterType; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.Game; import mage.game.command.Emblem; import mage.game.permanent.Permanent; @@ -66,9 +67,9 @@ public class SorinLordOfInnistrad extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("creature or planeswalker"); static { - filter.getCardType().add(CardType.CREATURE); - filter.getCardType().add(CardType.PLANESWALKER); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(Predicates.or( + new CardTypePredicate(CardType.CREATURE), + new CardTypePredicate(CardType.PLANESWALKER))); } public SorinLordOfInnistrad(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/darksteel/ArcaneSpyglass.java b/Mage.Sets/src/mage/sets/darksteel/ArcaneSpyglass.java index 45357677e7b..436f6a13f0a 100644 --- a/Mage.Sets/src/mage/sets/darksteel/ArcaneSpyglass.java +++ b/Mage.Sets/src/mage/sets/darksteel/ArcaneSpyglass.java @@ -43,8 +43,8 @@ import mage.abilities.effects.common.DrawCardControllerEffect; import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.cards.CardImpl; import mage.counters.CounterType; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.common.TargetControlledPermanent; /** @@ -56,8 +56,7 @@ public class ArcaneSpyglass extends CardImpl { private final static FilterControlledPermanent filter = new FilterControlledPermanent("a land"); static { - filter.getCardType().add(CardType.LAND); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.LAND)); } public ArcaneSpyglass (UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/darksteel/Coretapper.java b/Mage.Sets/src/mage/sets/darksteel/Coretapper.java index 0e60b06ee5b..cf5e53e0e95 100644 --- a/Mage.Sets/src/mage/sets/darksteel/Coretapper.java +++ b/Mage.Sets/src/mage/sets/darksteel/Coretapper.java @@ -41,8 +41,8 @@ import mage.abilities.costs.common.TapSourceCost; import mage.abilities.effects.common.counter.AddCountersTargetEffect; import mage.cards.CardImpl; import mage.counters.CounterType; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetPermanent; /** @@ -53,8 +53,7 @@ public class Coretapper extends CardImpl { private final static FilterPermanent filter = new FilterPermanent("artifact"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.ARTIFACT)); } public Coretapper(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/darksteel/DarksteelForge.java b/Mage.Sets/src/mage/sets/darksteel/DarksteelForge.java index aef0e7e4162..fe6d61c9219 100644 --- a/Mage.Sets/src/mage/sets/darksteel/DarksteelForge.java +++ b/Mage.Sets/src/mage/sets/darksteel/DarksteelForge.java @@ -37,8 +37,8 @@ import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.common.continious.GainAbilityControlledEffect; import mage.abilities.keyword.IndestructibleAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; /** * @author Loki @@ -48,8 +48,7 @@ public class DarksteelForge extends CardImpl { private final static FilterControlledPermanent filter = new FilterControlledPermanent("Artifacts"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.ARTIFACT)); } public DarksteelForge(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/darksteel/EchoingCalm.java b/Mage.Sets/src/mage/sets/darksteel/EchoingCalm.java index 84fca0f4f25..3f51b5fcdd3 100644 --- a/Mage.Sets/src/mage/sets/darksteel/EchoingCalm.java +++ b/Mage.Sets/src/mage/sets/darksteel/EchoingCalm.java @@ -35,8 +35,8 @@ import mage.Constants.Rarity; import mage.abilities.Ability; import mage.abilities.effects.OneShotEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.target.TargetPermanent; @@ -48,8 +48,7 @@ public class EchoingCalm extends CardImpl { private final static FilterPermanent filter = new FilterPermanent("enchantment"); static { - filter.getCardType().add(CardType.ENCHANTMENT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.ENCHANTMENT)); } public EchoingCalm(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/darksteel/EmissaryOfHope.java b/Mage.Sets/src/mage/sets/darksteel/EmissaryOfHope.java index 298920e6994..80a88adb325 100644 --- a/Mage.Sets/src/mage/sets/darksteel/EmissaryOfHope.java +++ b/Mage.Sets/src/mage/sets/darksteel/EmissaryOfHope.java @@ -40,6 +40,7 @@ import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.Game; import mage.players.Player; @@ -77,8 +78,7 @@ class EmissaryOfHopeEffect extends OneShotEffect { private final static FilterPermanent filter = new FilterPermanent("artifact"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.ARTIFACT)); filter.setTargetController(Constants.TargetController.YOU); } diff --git a/Mage.Sets/src/mage/sets/darksteel/KrarkClanStoker.java b/Mage.Sets/src/mage/sets/darksteel/KrarkClanStoker.java index 886e6c80b8c..5e49302135e 100644 --- a/Mage.Sets/src/mage/sets/darksteel/KrarkClanStoker.java +++ b/Mage.Sets/src/mage/sets/darksteel/KrarkClanStoker.java @@ -39,8 +39,8 @@ import mage.abilities.costs.common.SacrificeTargetCost; import mage.abilities.effects.common.BasicManaEffect; import mage.abilities.mana.BasicManaAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.common.TargetControlledPermanent; /** @@ -51,8 +51,7 @@ public class KrarkClanStoker extends CardImpl { private final static FilterControlledPermanent filter = new FilterControlledPermanent("an artifact"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.ARTIFACT)); } public KrarkClanStoker(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/darksteel/MagneticFlux.java b/Mage.Sets/src/mage/sets/darksteel/MagneticFlux.java index 0f56ec40c57..2186c78a123 100644 --- a/Mage.Sets/src/mage/sets/darksteel/MagneticFlux.java +++ b/Mage.Sets/src/mage/sets/darksteel/MagneticFlux.java @@ -37,6 +37,7 @@ import mage.abilities.effects.common.continious.GainAbilityControlledEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; /** * @author Loki @@ -46,8 +47,8 @@ public class MagneticFlux extends CardImpl { private final static FilterControlledPermanent filter = new FilterControlledPermanent("Artifact creatures"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.getCardType().add(CardType.CREATURE); + filter.add(new CardTypePredicate(CardType.ARTIFACT)); + filter.add(new CardTypePredicate(CardType.CREATURE)); } public MagneticFlux(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/darksteel/NeurokProdigy.java b/Mage.Sets/src/mage/sets/darksteel/NeurokProdigy.java index e7a38d4d2f2..5d76361502b 100644 --- a/Mage.Sets/src/mage/sets/darksteel/NeurokProdigy.java +++ b/Mage.Sets/src/mage/sets/darksteel/NeurokProdigy.java @@ -39,8 +39,8 @@ import mage.abilities.costs.common.DiscardTargetCost; import mage.abilities.effects.common.ReturnToHandSourceEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.common.TargetCardInHand; /** @@ -51,8 +51,7 @@ public class NeurokProdigy extends CardImpl { private final static FilterCard filter = new FilterCard("an artifact card"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.ARTIFACT)); } public NeurokProdigy(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/darksteel/Oxidize.java b/Mage.Sets/src/mage/sets/darksteel/Oxidize.java index c8b070309e8..6273e1ea574 100644 --- a/Mage.Sets/src/mage/sets/darksteel/Oxidize.java +++ b/Mage.Sets/src/mage/sets/darksteel/Oxidize.java @@ -34,8 +34,8 @@ import mage.Constants.CardType; import mage.Constants.Rarity; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetPermanent; /** @@ -46,8 +46,7 @@ public class Oxidize extends CardImpl { private final static FilterPermanent filter = new FilterPermanent("artifact"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.ARTIFACT)); } public Oxidize(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/darksteel/PteronGhost.java b/Mage.Sets/src/mage/sets/darksteel/PteronGhost.java index fc561afc853..f71aadaf554 100644 --- a/Mage.Sets/src/mage/sets/darksteel/PteronGhost.java +++ b/Mage.Sets/src/mage/sets/darksteel/PteronGhost.java @@ -40,8 +40,8 @@ import mage.abilities.costs.common.SacrificeSourceCost; import mage.abilities.effects.common.RegenerateTargetEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetPermanent; /** @@ -52,8 +52,7 @@ public class PteronGhost extends CardImpl { private final static FilterPermanent filter = new FilterPermanent("artifact"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.ARTIFACT)); } public PteronGhost(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/darksteel/SlobadGoblinTinkerer.java b/Mage.Sets/src/mage/sets/darksteel/SlobadGoblinTinkerer.java index 5aa69334acd..1fbf0013c72 100644 --- a/Mage.Sets/src/mage/sets/darksteel/SlobadGoblinTinkerer.java +++ b/Mage.Sets/src/mage/sets/darksteel/SlobadGoblinTinkerer.java @@ -40,9 +40,9 @@ import mage.abilities.costs.common.SacrificeTargetCost; import mage.abilities.effects.common.continious.GainAbilityTargetEffect; import mage.abilities.keyword.IndestructibleAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetPermanent; import mage.target.common.TargetControlledPermanent; @@ -55,10 +55,8 @@ public class SlobadGoblinTinkerer extends CardImpl { private final static FilterControlledPermanent filterControlled = new FilterControlledPermanent("an artifact"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.setScopeCardType(Filter.ComparisonScope.Any); - filterControlled.getCardType().add(CardType.ARTIFACT); - filterControlled.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.ARTIFACT)); + filterControlled.add(new CardTypePredicate(CardType.ARTIFACT)); } public SlobadGoblinTinkerer(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/darksteel/Soulscour.java b/Mage.Sets/src/mage/sets/darksteel/Soulscour.java index 184b1615530..ed487f156c4 100644 --- a/Mage.Sets/src/mage/sets/darksteel/Soulscour.java +++ b/Mage.Sets/src/mage/sets/darksteel/Soulscour.java @@ -36,8 +36,9 @@ import mage.Constants.Rarity; import mage.abilities.Ability; import mage.abilities.effects.OneShotEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.Game; import mage.game.permanent.Permanent; @@ -71,9 +72,7 @@ class SoulscourEffect extends OneShotEffect { private final static FilterPermanent filter = new FilterPermanent(""); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.getNotCardType().add(true); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(Predicates.not(new CardTypePredicate(CardType.ARTIFACT))); } public SoulscourEffect() { diff --git a/Mage.Sets/src/mage/sets/darksteel/SteelshaperApprentice.java b/Mage.Sets/src/mage/sets/darksteel/SteelshaperApprentice.java index a8c6e5f363f..117b025326a 100644 --- a/Mage.Sets/src/mage/sets/darksteel/SteelshaperApprentice.java +++ b/Mage.Sets/src/mage/sets/darksteel/SteelshaperApprentice.java @@ -42,6 +42,7 @@ import mage.abilities.costs.mana.ColoredManaCost; import mage.abilities.effects.common.search.SearchLibraryRevealPutInHandEffect; import mage.cards.CardImpl; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetCardInLibrary; @@ -53,7 +54,7 @@ public class SteelshaperApprentice extends CardImpl { private static final FilterCard filter = new FilterCard("Equipment card"); static { - filter.getCardType().add(CardType.ARTIFACT); + filter.add(new CardTypePredicate(CardType.ARTIFACT)); filter.add(new SubtypePredicate("Equipment")); } diff --git a/Mage.Sets/src/mage/sets/darksteel/ViridianZealot.java b/Mage.Sets/src/mage/sets/darksteel/ViridianZealot.java index 0dd26ff86c9..f43e209761c 100644 --- a/Mage.Sets/src/mage/sets/darksteel/ViridianZealot.java +++ b/Mage.Sets/src/mage/sets/darksteel/ViridianZealot.java @@ -40,8 +40,9 @@ import mage.abilities.costs.common.SacrificeSourceCost; import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetPermanent; /** @@ -52,9 +53,9 @@ public class ViridianZealot extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("artifact or enchantment"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.getCardType().add(CardType.ENCHANTMENT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(Predicates.or( + new CardTypePredicate(CardType.ARTIFACT), + new CardTypePredicate(CardType.ENCHANTMENT))); } public ViridianZealot(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/darksteel/VoltaicConstruct.java b/Mage.Sets/src/mage/sets/darksteel/VoltaicConstruct.java index acd0f51d19c..6de07591ea6 100644 --- a/Mage.Sets/src/mage/sets/darksteel/VoltaicConstruct.java +++ b/Mage.Sets/src/mage/sets/darksteel/VoltaicConstruct.java @@ -39,8 +39,8 @@ import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.effects.common.UntapTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.common.TargetCreaturePermanent; /** @@ -51,8 +51,7 @@ public class VoltaicConstruct extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("artifact"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.ARTIFACT)); } public VoltaicConstruct(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/dissension/AzoriusChancery.java b/Mage.Sets/src/mage/sets/dissension/AzoriusChancery.java index f5384df19fb..189273a9aa6 100644 --- a/Mage.Sets/src/mage/sets/dissension/AzoriusChancery.java +++ b/Mage.Sets/src/mage/sets/dissension/AzoriusChancery.java @@ -41,8 +41,8 @@ import mage.abilities.effects.common.BasicManaEffect; import mage.abilities.effects.common.ReturnToHandTargetEffect; import mage.abilities.mana.SimpleManaAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.Target; import mage.target.common.TargetControlledPermanent; @@ -54,8 +54,7 @@ public class AzoriusChancery extends CardImpl { private final static FilterControlledPermanent filter = new FilterControlledPermanent("land you control"); static { - filter.getCardType().add(CardType.LAND); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.LAND)); } public AzoriusChancery(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/dissension/IndrikStomphowler.java b/Mage.Sets/src/mage/sets/dissension/IndrikStomphowler.java index a730e872d5b..097501d6c2e 100644 --- a/Mage.Sets/src/mage/sets/dissension/IndrikStomphowler.java +++ b/Mage.Sets/src/mage/sets/dissension/IndrikStomphowler.java @@ -36,8 +36,9 @@ import mage.abilities.Ability; import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetPermanent; /** @@ -48,9 +49,9 @@ public class IndrikStomphowler extends CardImpl { private final static FilterPermanent filter = new FilterPermanent("artifact or enchantment"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.getCardType().add(CardType.ENCHANTMENT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(Predicates.or( + new CardTypePredicate(CardType.ARTIFACT), + new CardTypePredicate(CardType.ENCHANTMENT))); } public IndrikStomphowler(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/dissension/RakdosCarnarium.java b/Mage.Sets/src/mage/sets/dissension/RakdosCarnarium.java index dd4b3854955..eb1d8f120f0 100644 --- a/Mage.Sets/src/mage/sets/dissension/RakdosCarnarium.java +++ b/Mage.Sets/src/mage/sets/dissension/RakdosCarnarium.java @@ -41,8 +41,8 @@ import mage.abilities.effects.common.BasicManaEffect; import mage.abilities.effects.common.ReturnToHandTargetEffect; import mage.abilities.mana.SimpleManaAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.Target; import mage.target.common.TargetControlledPermanent; @@ -53,8 +53,7 @@ public class RakdosCarnarium extends CardImpl { private final static FilterControlledPermanent filter = new FilterControlledPermanent("land you control"); static { - filter.getCardType().add(CardType.LAND); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.LAND)); } public RakdosCarnarium(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/dissension/SimicGrowthChamber.java b/Mage.Sets/src/mage/sets/dissension/SimicGrowthChamber.java index 4f03f10d45b..95fe3ff0aed 100644 --- a/Mage.Sets/src/mage/sets/dissension/SimicGrowthChamber.java +++ b/Mage.Sets/src/mage/sets/dissension/SimicGrowthChamber.java @@ -41,8 +41,8 @@ import mage.abilities.effects.common.BasicManaEffect; import mage.abilities.effects.common.ReturnToHandTargetEffect; import mage.abilities.mana.SimpleManaAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.Target; import mage.target.common.TargetControlledPermanent; @@ -54,8 +54,7 @@ public class SimicGrowthChamber extends CardImpl { private final static FilterControlledPermanent filter = new FilterControlledPermanent("land you control"); static { - filter.getCardType().add(CardType.LAND); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.LAND)); } public SimicGrowthChamber(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/eventide/KithkinSpellduster.java b/Mage.Sets/src/mage/sets/eventide/KithkinSpellduster.java index b0ef4c06f9c..7fd961fc058 100644 --- a/Mage.Sets/src/mage/sets/eventide/KithkinSpellduster.java +++ b/Mage.Sets/src/mage/sets/eventide/KithkinSpellduster.java @@ -42,6 +42,7 @@ import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.PersistAbility; import mage.cards.CardImpl; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetPermanent; /** @@ -49,10 +50,10 @@ import mage.target.TargetPermanent; * @author Loki */ public class KithkinSpellduster extends CardImpl { - private static FilterPermanent filter = new FilterPermanent("enchantment"); + private static final FilterPermanent filter = new FilterPermanent("enchantment"); static { - filter.getCardType().add(CardType.ENCHANTMENT); + filter.add(new CardTypePredicate(CardType.ENCHANTMENT)); } public KithkinSpellduster(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/eventide/NoggleBridgebreaker.java b/Mage.Sets/src/mage/sets/eventide/NoggleBridgebreaker.java index 446fd06bd33..fedc5ca2941 100644 --- a/Mage.Sets/src/mage/sets/eventide/NoggleBridgebreaker.java +++ b/Mage.Sets/src/mage/sets/eventide/NoggleBridgebreaker.java @@ -36,8 +36,8 @@ import mage.abilities.Ability; import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.effects.common.ReturnToHandTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.common.TargetControlledPermanent; /** @@ -48,8 +48,7 @@ public class NoggleBridgebreaker extends CardImpl { private final static FilterControlledPermanent filter = new FilterControlledPermanent("land you control"); static { - filter.getCardType().add(CardType.LAND); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.LAND)); } public NoggleBridgebreaker(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/eventide/Scarecrone.java b/Mage.Sets/src/mage/sets/eventide/Scarecrone.java index eab99b60b59..38921747e0e 100644 --- a/Mage.Sets/src/mage/sets/eventide/Scarecrone.java +++ b/Mage.Sets/src/mage/sets/eventide/Scarecrone.java @@ -41,8 +41,8 @@ import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.effects.common.DrawCardControllerEffect; import mage.abilities.effects.common.ReturnFromGraveyardToBattlefieldTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.common.TargetCardInYourGraveyard; /** @@ -53,9 +53,8 @@ public class Scarecrone extends CardImpl { private final static FilterCard filter = new FilterCard("artifact creature card from your graveyard"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.getCardType().add(CardType.CREATURE); - filter.setScopeCardType(Filter.ComparisonScope.All); + filter.add(new CardTypePredicate(CardType.ARTIFACT)); + filter.add(new CardTypePredicate(CardType.CREATURE)); } public Scarecrone(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/eventide/WickerboughElder.java b/Mage.Sets/src/mage/sets/eventide/WickerboughElder.java index f706c11a80a..6dd47077e2a 100644 --- a/Mage.Sets/src/mage/sets/eventide/WickerboughElder.java +++ b/Mage.Sets/src/mage/sets/eventide/WickerboughElder.java @@ -44,6 +44,8 @@ import mage.cards.CardImpl; import mage.counters.CounterType; import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetPermanent; /** @@ -54,9 +56,9 @@ public class WickerboughElder extends CardImpl { private final static FilterPermanent filter = new FilterPermanent("artifact or enchantment"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.getCardType().add(CardType.ENCHANTMENT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(Predicates.or( + new CardTypePredicate(CardType.ARTIFACT), + new CardTypePredicate(CardType.ENCHANTMENT))); } public WickerboughElder(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/fifthedition/AshesToAshes.java b/Mage.Sets/src/mage/sets/fifthedition/AshesToAshes.java index 0c9d41644a7..11c51a77061 100644 --- a/Mage.Sets/src/mage/sets/fifthedition/AshesToAshes.java +++ b/Mage.Sets/src/mage/sets/fifthedition/AshesToAshes.java @@ -36,6 +36,8 @@ import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.DamageControllerEffect; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.target.TargetPermanent; @@ -49,7 +51,7 @@ public class AshesToAshes extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonartifact creature"); static { - filter.getNotCardType().add(CardType.ARTIFACT); + filter.add(Predicates.not(new CardTypePredicate(CardType.ARTIFACT))); } public AshesToAshes(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/guildpact/DuneBroodNephilim.java b/Mage.Sets/src/mage/sets/guildpact/DuneBroodNephilim.java index c10bfed8641..377987d1181 100644 --- a/Mage.Sets/src/mage/sets/guildpact/DuneBroodNephilim.java +++ b/Mage.Sets/src/mage/sets/guildpact/DuneBroodNephilim.java @@ -35,8 +35,8 @@ import mage.abilities.common.DealsCombatDamageToAPlayerTriggeredAbility; import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.effects.common.CreateTokenEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.permanent.token.Token; /** @@ -47,8 +47,7 @@ public class DuneBroodNephilim extends CardImpl { final static FilterControlledPermanent filterLands = new FilterControlledPermanent("land you control"); static { - filterLands.getCardType().add(CardType.LAND); - filterLands.setScopeCardType(Filter.ComparisonScope.Any); + filterLands.add(new CardTypePredicate(CardType.LAND)); } public DuneBroodNephilim(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/guildpact/Gelectrode.java b/Mage.Sets/src/mage/sets/guildpact/Gelectrode.java index 4547eda4c0b..1569cea3482 100644 --- a/Mage.Sets/src/mage/sets/guildpact/Gelectrode.java +++ b/Mage.Sets/src/mage/sets/guildpact/Gelectrode.java @@ -39,8 +39,9 @@ import mage.abilities.costs.common.TapSourceCost; import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.effects.common.UntapSourceEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterSpell; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.common.TargetCreatureOrPlayer; /** @@ -52,9 +53,9 @@ public class Gelectrode extends CardImpl { private final static FilterSpell filter = new FilterSpell("an instant or sorcery spell"); static { - filter.getCardType().add(CardType.INSTANT); - filter.getCardType().add(CardType.SORCERY); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(Predicates.or( + new CardTypePredicate(CardType.INSTANT), + new CardTypePredicate(CardType.SORCERY))); } public Gelectrode(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/guildpact/GruulGuildmage.java b/Mage.Sets/src/mage/sets/guildpact/GruulGuildmage.java index 47954316363..12bede32e5d 100644 --- a/Mage.Sets/src/mage/sets/guildpact/GruulGuildmage.java +++ b/Mage.Sets/src/mage/sets/guildpact/GruulGuildmage.java @@ -40,6 +40,7 @@ import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.effects.common.continious.BoostTargetEffect; import mage.cards.CardImpl; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetPlayer; import mage.target.common.TargetControlledPermanent; import mage.target.common.TargetCreaturePermanent; @@ -52,7 +53,7 @@ public class GruulGuildmage extends CardImpl { private final static FilterControlledPermanent filter = new FilterControlledPermanent("a land"); static { - filter.getCardType().add(CardType.LAND); + filter.add(new CardTypePredicate(CardType.LAND)); } public GruulGuildmage(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/guildpact/IzzetBoilerworks.java b/Mage.Sets/src/mage/sets/guildpact/IzzetBoilerworks.java index 15d30a2f28a..89374f6168f 100644 --- a/Mage.Sets/src/mage/sets/guildpact/IzzetBoilerworks.java +++ b/Mage.Sets/src/mage/sets/guildpact/IzzetBoilerworks.java @@ -41,6 +41,7 @@ import mage.abilities.effects.common.ReturnToHandTargetEffect; import mage.abilities.mana.SimpleManaAbility; import mage.cards.CardImpl; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.Target; import mage.target.common.TargetControlledPermanent; @@ -52,7 +53,7 @@ public class IzzetBoilerworks extends CardImpl { private final static FilterControlledPermanent filter = new FilterControlledPermanent("land"); static { - filter.getCardType().add(Constants.CardType.LAND); + filter.add(new CardTypePredicate(Constants.CardType.LAND)); } public IzzetBoilerworks(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/guildpact/IzzetChronarch.java b/Mage.Sets/src/mage/sets/guildpact/IzzetChronarch.java index 167274d8219..9427f22305d 100644 --- a/Mage.Sets/src/mage/sets/guildpact/IzzetChronarch.java +++ b/Mage.Sets/src/mage/sets/guildpact/IzzetChronarch.java @@ -35,8 +35,9 @@ import mage.abilities.Ability; import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.effects.common.ReturnToHandTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterCard; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.common.TargetCardInYourGraveyard; /** @@ -48,9 +49,9 @@ public class IzzetChronarch extends CardImpl { private final static FilterCard filter = new FilterCard("instant or sorcery card from your graveyard"); static { - filter.getCardType().add(CardType.INSTANT); - filter.getCardType().add(CardType.SORCERY); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(Predicates.or( + new CardTypePredicate(CardType.INSTANT), + new CardTypePredicate(CardType.SORCERY))); } public IzzetChronarch(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/guildpact/Mortify.java b/Mage.Sets/src/mage/sets/guildpact/Mortify.java index cd89b8224f3..708e0529198 100644 --- a/Mage.Sets/src/mage/sets/guildpact/Mortify.java +++ b/Mage.Sets/src/mage/sets/guildpact/Mortify.java @@ -32,8 +32,9 @@ import mage.Constants.CardType; import mage.Constants.Rarity; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetPermanent; /** @@ -44,9 +45,9 @@ public class Mortify extends CardImpl { private final static FilterPermanent filter = new FilterPermanent("creature or enchantment"); static { - filter.getCardType().add(CardType.CREATURE); - filter.getCardType().add(CardType.ENCHANTMENT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(Predicates.or( + new CardTypePredicate(CardType.CREATURE), + new CardTypePredicate(CardType.ENCHANTMENT))); } public Mortify(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/guildpact/OrzhovBasilica.java b/Mage.Sets/src/mage/sets/guildpact/OrzhovBasilica.java index 8040cfc8989..603c2af66be 100644 --- a/Mage.Sets/src/mage/sets/guildpact/OrzhovBasilica.java +++ b/Mage.Sets/src/mage/sets/guildpact/OrzhovBasilica.java @@ -41,6 +41,7 @@ import mage.abilities.effects.common.ReturnToHandTargetEffect; import mage.abilities.mana.SimpleManaAbility; import mage.cards.CardImpl; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.Target; import mage.target.common.TargetControlledPermanent; @@ -53,7 +54,7 @@ public class OrzhovBasilica extends CardImpl { private final static FilterControlledPermanent filter = new FilterControlledPermanent("land"); static { - filter.getCardType().add(Constants.CardType.LAND); + filter.add(new CardTypePredicate(Constants.CardType.LAND)); } public OrzhovBasilica(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/guildpact/WeeDragonauts.java b/Mage.Sets/src/mage/sets/guildpact/WeeDragonauts.java index dd54fffb6cd..e095865efe5 100644 --- a/Mage.Sets/src/mage/sets/guildpact/WeeDragonauts.java +++ b/Mage.Sets/src/mage/sets/guildpact/WeeDragonauts.java @@ -36,8 +36,9 @@ import mage.abilities.common.SpellCastTriggeredAbility; import mage.abilities.effects.common.continious.BoostSourceEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterSpell; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; /** * @author Loki @@ -47,9 +48,9 @@ public class WeeDragonauts extends CardImpl { private final static FilterSpell filter = new FilterSpell("instant or sorcery spell"); static { - filter.getCardType().add(CardType.INSTANT); - filter.getCardType().add(CardType.SORCERY); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(Predicates.or( + new CardTypePredicate(CardType.INSTANT), + new CardTypePredicate(CardType.SORCERY))); } public WeeDragonauts(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/guildpact/WreakHavoc.java b/Mage.Sets/src/mage/sets/guildpact/WreakHavoc.java index 072158f7935..ac9588bb636 100644 --- a/Mage.Sets/src/mage/sets/guildpact/WreakHavoc.java +++ b/Mage.Sets/src/mage/sets/guildpact/WreakHavoc.java @@ -33,8 +33,9 @@ import mage.Constants.Rarity; import mage.abilities.common.CantCounterAbility; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetPermanent; /** @@ -46,9 +47,9 @@ public class WreakHavoc extends CardImpl { private final static FilterPermanent filter = new FilterPermanent("artifact or land"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.getCardType().add(CardType.LAND); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(Predicates.or( + new CardTypePredicate(CardType.ARTIFACT), + new CardTypePredicate(CardType.LAND))); } public WreakHavoc(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/innistrad/AncientGrudge.java b/Mage.Sets/src/mage/sets/innistrad/AncientGrudge.java index 37b3478cef8..edc3bd6ad0e 100644 --- a/Mage.Sets/src/mage/sets/innistrad/AncientGrudge.java +++ b/Mage.Sets/src/mage/sets/innistrad/AncientGrudge.java @@ -34,8 +34,8 @@ import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.common.DestroyTargetEffect; import mage.abilities.keyword.FlashbackAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetPermanent; import java.util.UUID; @@ -48,8 +48,7 @@ public class AncientGrudge extends CardImpl { private final static FilterPermanent filter = new FilterPermanent("artifact"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.ARTIFACT)); } public AncientGrudge(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/innistrad/Bramblecrush.java b/Mage.Sets/src/mage/sets/innistrad/Bramblecrush.java index 69b45078f6c..8493d02cdcf 100644 --- a/Mage.Sets/src/mage/sets/innistrad/Bramblecrush.java +++ b/Mage.Sets/src/mage/sets/innistrad/Bramblecrush.java @@ -33,6 +33,8 @@ import mage.Constants.Rarity; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; import mage.filter.FilterPermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetPermanent; /** @@ -44,7 +46,7 @@ public class Bramblecrush extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("noncreature permanent"); static { - filter.getNotCardType().add(CardType.CREATURE); + filter.add(Predicates.not(new CardTypePredicate(CardType.CREATURE))); } public Bramblecrush(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/innistrad/CharmbreakerDevils.java b/Mage.Sets/src/mage/sets/innistrad/CharmbreakerDevils.java index f110b242a53..a4fd6365844 100644 --- a/Mage.Sets/src/mage/sets/innistrad/CharmbreakerDevils.java +++ b/Mage.Sets/src/mage/sets/innistrad/CharmbreakerDevils.java @@ -42,9 +42,10 @@ import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.continious.BoostSourceEffect; import mage.cards.Card; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.FilterCard; import mage.filter.FilterSpell; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.Game; import mage.game.events.GameEvent.EventType; import mage.players.Player; @@ -58,8 +59,9 @@ public class CharmbreakerDevils extends CardImpl { private static final FilterSpell filter = new FilterSpell("instant or sorcery card"); static { - filter.getCardType().add(CardType.INSTANT); - filter.getCardType().add(CardType.SORCERY); + filter.add(Predicates.or( + new CardTypePredicate(CardType.INSTANT), + new CardTypePredicate(CardType.SORCERY))); } public CharmbreakerDevils(UUID ownerId) { @@ -108,8 +110,9 @@ class CharmbreakerDevilsEffect extends OneShotEffect { Player player = game.getPlayer(source.getControllerId()); if (player != null) { FilterCard filter = new FilterCard("instant or sorcery card"); - filter.getCardType().add(CardType.INSTANT); - filter.getCardType().add(CardType.SORCERY); + filter.add(Predicates.or( + new CardTypePredicate(CardType.INSTANT), + new CardTypePredicate(CardType.SORCERY))); Card[] cards = player.getGraveyard().getCards(filter, game).toArray(new Card[0]); if (cards.length > 0) { Random rnd = new Random(); diff --git a/Mage.Sets/src/mage/sets/innistrad/GarrukTheVeilCursed.java b/Mage.Sets/src/mage/sets/innistrad/GarrukTheVeilCursed.java index 2037e852010..979f2b11e99 100644 --- a/Mage.Sets/src/mage/sets/innistrad/GarrukTheVeilCursed.java +++ b/Mage.Sets/src/mage/sets/innistrad/GarrukTheVeilCursed.java @@ -43,10 +43,10 @@ import mage.cards.Card; import mage.cards.CardImpl; import mage.cards.Cards; import mage.cards.CardsImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; import mage.filter.common.FilterCreatureCard; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.game.permanent.token.WolfTokenWithDeathtouch; @@ -135,8 +135,7 @@ class GarrukTheVeilCursedEffect extends OneShotEffect private static final FilterPermanent filterCreature = new FilterPermanent("a creature you control"); static { - filterCreature.getCardType().add(CardType.CREATURE); - filterCreature.setScopeCardType(Filter.ComparisonScope.Any); + filterCreature.add(new CardTypePredicate(CardType.CREATURE)); filterCreature.setTargetController(Constants.TargetController.YOU); } diff --git a/Mage.Sets/src/mage/sets/innistrad/RunechantersPike.java b/Mage.Sets/src/mage/sets/innistrad/RunechantersPike.java index 9089d421b3d..b88283c4d13 100644 --- a/Mage.Sets/src/mage/sets/innistrad/RunechantersPike.java +++ b/Mage.Sets/src/mage/sets/innistrad/RunechantersPike.java @@ -40,8 +40,9 @@ import mage.abilities.effects.common.continious.GainAbilityAttachedEffect; import mage.abilities.keyword.EquipAbility; import mage.abilities.keyword.FirstStrikeAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterCard; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.Game; import mage.players.Player; @@ -55,9 +56,9 @@ public class RunechantersPike extends CardImpl { protected static final FilterCard filterCard = new FilterCard(); static { - filterCard.getCardType().add(CardType.INSTANT); - filterCard.getCardType().add(CardType.SORCERY); - filterCard.setScopeCardType(Filter.ComparisonScope.Any); + filterCard.add(Predicates.or( + new CardTypePredicate(CardType.INSTANT), + new CardTypePredicate(CardType.SORCERY))); } public RunechantersPike(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/innistrad/SilverchaseFox.java b/Mage.Sets/src/mage/sets/innistrad/SilverchaseFox.java index 436e2abb70e..02748f205f2 100644 --- a/Mage.Sets/src/mage/sets/innistrad/SilverchaseFox.java +++ b/Mage.Sets/src/mage/sets/innistrad/SilverchaseFox.java @@ -37,8 +37,8 @@ import mage.abilities.costs.common.SacrificeSourceCost; import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.common.ExileTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetPermanent; import java.util.UUID; @@ -51,8 +51,7 @@ public class SilverchaseFox extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("enchantment"); static { - filter.getCardType().add(CardType.ENCHANTMENT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.ENCHANTMENT)); } public SilverchaseFox(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/innistrad/SnapcasterMage.java b/Mage.Sets/src/mage/sets/innistrad/SnapcasterMage.java index 59de40467b3..48b0cb81221 100644 --- a/Mage.Sets/src/mage/sets/innistrad/SnapcasterMage.java +++ b/Mage.Sets/src/mage/sets/innistrad/SnapcasterMage.java @@ -43,8 +43,9 @@ import mage.abilities.keyword.FlashAbility; import mage.abilities.keyword.FlashbackAbility; import mage.cards.Card; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.FilterCard; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.Game; import mage.target.common.TargetCardInYourGraveyard; @@ -57,9 +58,9 @@ public class SnapcasterMage extends CardImpl { private static final FilterCard filter = new FilterCard("instant or sorcery card in your graveyard"); static { - filter.getCardType().add(CardType.INSTANT); - filter.getCardType().add(CardType.SORCERY); - filter.setScopeCardType(ComparisonScope.Any); + filter.add(Predicates.or( + new CardTypePredicate(CardType.INSTANT), + new CardTypePredicate(CardType.SORCERY))); } public SnapcasterMage(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/innistrad/TributeToHunger.java b/Mage.Sets/src/mage/sets/innistrad/TributeToHunger.java index c9e201c3472..b1f23dff2a4 100644 --- a/Mage.Sets/src/mage/sets/innistrad/TributeToHunger.java +++ b/Mage.Sets/src/mage/sets/innistrad/TributeToHunger.java @@ -36,6 +36,7 @@ import mage.abilities.Ability; import mage.abilities.effects.OneShotEffect; import mage.cards.CardImpl; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; @@ -91,7 +92,7 @@ class TributeToHungerEffect extends OneShotEffect { Player controller = game.getPlayer(source.getControllerId()); FilterControlledPermanent filter = new FilterControlledPermanent("creature"); - filter.getCardType().add(CardType.CREATURE); + filter.add(new CardTypePredicate(CardType.CREATURE)); filter.setTargetController(TargetController.YOU); TargetControlledPermanent target = new TargetControlledPermanent(1, 1, filter, false); diff --git a/Mage.Sets/src/mage/sets/magic2010/AcidicSlime.java b/Mage.Sets/src/mage/sets/magic2010/AcidicSlime.java index b6c727d9e35..1dc94fc89ed 100644 --- a/Mage.Sets/src/mage/sets/magic2010/AcidicSlime.java +++ b/Mage.Sets/src/mage/sets/magic2010/AcidicSlime.java @@ -37,8 +37,9 @@ import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.effects.common.DestroyTargetEffect; import mage.abilities.keyword.DeathtouchAbility; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.FilterPermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.Target; import mage.target.TargetPermanent; @@ -51,10 +52,10 @@ public class AcidicSlime extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("artifact, enchantment, or land"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.getCardType().add(CardType.ENCHANTMENT); - filter.getCardType().add(CardType.LAND); - filter.setScopeCardType(ComparisonScope.Any); + filter.add(Predicates.or( + new CardTypePredicate(CardType.ARTIFACT), + new CardTypePredicate(CardType.ENCHANTMENT), + new CardTypePredicate(CardType.LAND))); } public AcidicSlime(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/magic2010/Duress.java b/Mage.Sets/src/mage/sets/magic2010/Duress.java index cdfafc8a60f..dd850b25604 100644 --- a/Mage.Sets/src/mage/sets/magic2010/Duress.java +++ b/Mage.Sets/src/mage/sets/magic2010/Duress.java @@ -38,6 +38,8 @@ import mage.abilities.effects.OneShotEffect; import mage.cards.Card; import mage.cards.CardImpl; import mage.filter.FilterCard; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.Game; import mage.players.Player; import mage.target.TargetCard; @@ -72,8 +74,8 @@ class DuressEffect extends OneShotEffect { private static final FilterCard filter = new FilterCard("noncreature, nonland card"); static { - filter.getNotCardType().add(CardType.CREATURE); - filter.getNotCardType().add(CardType.LAND); + filter.add(Predicates.not(new CardTypePredicate(CardType.CREATURE))); + filter.add(Predicates.not(new CardTypePredicate(CardType.LAND))); } public DuressEffect() { diff --git a/Mage.Sets/src/mage/sets/magic2010/EssenceScatter.java b/Mage.Sets/src/mage/sets/magic2010/EssenceScatter.java index e3a69a2028d..0b56afe4fd0 100644 --- a/Mage.Sets/src/mage/sets/magic2010/EssenceScatter.java +++ b/Mage.Sets/src/mage/sets/magic2010/EssenceScatter.java @@ -33,6 +33,7 @@ import mage.Constants.Rarity; import mage.abilities.effects.common.CounterTargetEffect; import mage.cards.CardImpl; import mage.filter.FilterSpell; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetSpell; /** @@ -44,7 +45,7 @@ public class EssenceScatter extends CardImpl { private static final FilterSpell filter = new FilterSpell("creature spell"); static { - filter.getCardType().add(CardType.CREATURE); + filter.add(new CardTypePredicate(CardType.CREATURE)); } public EssenceScatter(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/magic2010/Fabricate.java b/Mage.Sets/src/mage/sets/magic2010/Fabricate.java index e1bde6d5a65..a843d41d785 100644 --- a/Mage.Sets/src/mage/sets/magic2010/Fabricate.java +++ b/Mage.Sets/src/mage/sets/magic2010/Fabricate.java @@ -32,8 +32,8 @@ import mage.Constants.CardType; import mage.Constants.Rarity; import mage.abilities.effects.common.search.SearchLibraryRevealPutInHandEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.common.TargetCardInLibrary; /** @@ -45,8 +45,7 @@ public class Fabricate extends CardImpl { private final static FilterCard filter = new FilterCard("artifact"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.ARTIFACT)); } public Fabricate(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/magic2010/MesaEnchantress.java b/Mage.Sets/src/mage/sets/magic2010/MesaEnchantress.java index b4258660927..8ce67b282f2 100644 --- a/Mage.Sets/src/mage/sets/magic2010/MesaEnchantress.java +++ b/Mage.Sets/src/mage/sets/magic2010/MesaEnchantress.java @@ -35,6 +35,7 @@ import mage.abilities.common.SpellCastTriggeredAbility; import mage.abilities.effects.common.DrawCardControllerEffect; import mage.cards.CardImpl; import mage.filter.FilterSpell; +import mage.filter.predicate.mageobject.CardTypePredicate; /** * @@ -45,7 +46,7 @@ public class MesaEnchantress extends CardImpl { private static final FilterSpell filter = new FilterSpell("an enchantment spell"); static { - filter.getCardType().add(CardType.ENCHANTMENT); + filter.add(new CardTypePredicate(CardType.ENCHANTMENT)); } public MesaEnchantress(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/magic2010/NaturesSpiral.java b/Mage.Sets/src/mage/sets/magic2010/NaturesSpiral.java index 2b1d92f1e2b..a81ea9f34a8 100644 --- a/Mage.Sets/src/mage/sets/magic2010/NaturesSpiral.java +++ b/Mage.Sets/src/mage/sets/magic2010/NaturesSpiral.java @@ -33,8 +33,9 @@ import mage.Constants.CardType; import mage.Constants.Rarity; import mage.abilities.effects.common.ReturnToHandTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.FilterCard; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.common.TargetCardInYourGraveyard; /** @@ -46,12 +47,12 @@ public class NaturesSpiral extends CardImpl { private static final FilterCard filter = new FilterCard("permanent card from your graveyard"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.getCardType().add(CardType.CREATURE); - filter.getCardType().add(CardType.ENCHANTMENT); - filter.getCardType().add(CardType.LAND); - filter.getCardType().add(CardType.PLANESWALKER); - filter.setScopeCardType(ComparisonScope.Any); + filter.add(Predicates.or( + new CardTypePredicate(CardType.ARTIFACT), + new CardTypePredicate(CardType.CREATURE), + new CardTypePredicate(CardType.ENCHANTMENT), + new CardTypePredicate(CardType.LAND), + new CardTypePredicate(CardType.PLANESWALKER))); } public NaturesSpiral(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/magic2010/Negate.java b/Mage.Sets/src/mage/sets/magic2010/Negate.java index fd62f80a906..3b1f1ebe21e 100644 --- a/Mage.Sets/src/mage/sets/magic2010/Negate.java +++ b/Mage.Sets/src/mage/sets/magic2010/Negate.java @@ -34,6 +34,8 @@ import mage.Constants.Rarity; import mage.abilities.effects.common.CounterTargetEffect; import mage.cards.CardImpl; import mage.filter.FilterSpell; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetSpell; /** @@ -45,7 +47,7 @@ public class Negate extends CardImpl { private static final FilterSpell filter = new FilterSpell("noncreature spell"); static { - filter.getNotCardType().add(CardType.CREATURE); + filter.add(Predicates.not(new CardTypePredicate(CardType.CREATURE))); } public Negate(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/magic2010/SolemnOffering.java b/Mage.Sets/src/mage/sets/magic2010/SolemnOffering.java index b700cb45cc9..1ceea3516e5 100644 --- a/Mage.Sets/src/mage/sets/magic2010/SolemnOffering.java +++ b/Mage.Sets/src/mage/sets/magic2010/SolemnOffering.java @@ -34,8 +34,9 @@ import mage.Constants.Rarity; import mage.abilities.effects.common.DestroyTargetEffect; import mage.abilities.effects.common.GainLifeEffect; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.FilterPermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetPermanent; /** @@ -47,9 +48,9 @@ public class SolemnOffering extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("artifact or enchantment"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.getCardType().add(CardType.ENCHANTMENT); - filter.setScopeCardType(ComparisonScope.Any); + filter.add(Predicates.or( + new CardTypePredicate(CardType.ARTIFACT), + new CardTypePredicate(CardType.ENCHANTMENT))); } public SolemnOffering(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/magic2010/TempestOfLight.java b/Mage.Sets/src/mage/sets/magic2010/TempestOfLight.java index 42971badb00..48acffaab06 100644 --- a/Mage.Sets/src/mage/sets/magic2010/TempestOfLight.java +++ b/Mage.Sets/src/mage/sets/magic2010/TempestOfLight.java @@ -35,8 +35,8 @@ import mage.Constants.Rarity; import mage.abilities.Ability; import mage.abilities.effects.OneShotEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.Game; import mage.game.permanent.Permanent; @@ -68,8 +68,7 @@ class TempestOfLightEffect extends OneShotEffect { private final static FilterPermanent filter = new FilterPermanent(""); static { - filter.getCardType().add(CardType.ENCHANTMENT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.ENCHANTMENT)); } public TempestOfLightEffect() { diff --git a/Mage.Sets/src/mage/sets/magic2010/Twincast.java b/Mage.Sets/src/mage/sets/magic2010/Twincast.java index f8d091c6744..7beea74b08c 100644 --- a/Mage.Sets/src/mage/sets/magic2010/Twincast.java +++ b/Mage.Sets/src/mage/sets/magic2010/Twincast.java @@ -32,8 +32,9 @@ import mage.Constants.CardType; import mage.Constants.Rarity; import mage.abilities.effects.common.CopyTargetSpellEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterSpell; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetSpell; /** @@ -45,9 +46,9 @@ public class Twincast extends CardImpl { private final static FilterSpell filter = new FilterSpell("instant or sorcery spell"); static { - filter.getCardType().add(CardType.INSTANT); - filter.getCardType().add(CardType.SORCERY); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(Predicates.or( + new CardTypePredicate(CardType.INSTANT), + new CardTypePredicate(CardType.SORCERY))); } public Twincast(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/magic2010/YawningFissure.java b/Mage.Sets/src/mage/sets/magic2010/YawningFissure.java index bf41ed60bd7..f0cbdbd3410 100644 --- a/Mage.Sets/src/mage/sets/magic2010/YawningFissure.java +++ b/Mage.Sets/src/mage/sets/magic2010/YawningFissure.java @@ -37,6 +37,7 @@ import mage.abilities.Ability; import mage.abilities.effects.OneShotEffect; import mage.cards.CardImpl; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; @@ -88,7 +89,7 @@ class YawningFissureEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { FilterControlledPermanent filter = new FilterControlledPermanent("land you control"); - filter.getCardType().add(CardType.LAND); + filter.add(new CardTypePredicate(CardType.LAND)); filter.setTargetController(TargetController.YOU); Set opponents = game.getOpponents(source.getControllerId()); diff --git a/Mage.Sets/src/mage/sets/magic2011/BackToNature.java b/Mage.Sets/src/mage/sets/magic2011/BackToNature.java index ddd32fc82ef..57e592b2673 100644 --- a/Mage.Sets/src/mage/sets/magic2011/BackToNature.java +++ b/Mage.Sets/src/mage/sets/magic2011/BackToNature.java @@ -34,6 +34,7 @@ import mage.Constants.Rarity; import mage.abilities.effects.common.DestroyAllEffect; import mage.cards.CardImpl; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; /** * @@ -44,7 +45,7 @@ public class BackToNature extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("enchantments"); static { - filter.getCardType().add(CardType.ENCHANTMENT); + filter.add(new CardTypePredicate(CardType.ENCHANTMENT)); } public BackToNature(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/magic2011/CallToMind.java b/Mage.Sets/src/mage/sets/magic2011/CallToMind.java index d6b37ece79e..414ff4b242e 100644 --- a/Mage.Sets/src/mage/sets/magic2011/CallToMind.java +++ b/Mage.Sets/src/mage/sets/magic2011/CallToMind.java @@ -33,8 +33,9 @@ import mage.Constants.CardType; import mage.Constants.Rarity; import mage.abilities.effects.common.ReturnToHandTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.FilterCard; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.common.TargetCardInYourGraveyard; /** @@ -46,9 +47,9 @@ public class CallToMind extends CardImpl { private static final FilterCard filter = new FilterCard("instant or sorcery card from your graveyard"); static { - filter.getCardType().add(CardType.INSTANT); - filter.getCardType().add(CardType.SORCERY); - filter.setScopeCardType(ComparisonScope.Any); + filter.add(Predicates.or( + new CardTypePredicate(CardType.INSTANT), + new CardTypePredicate(CardType.SORCERY))); } public CallToMind(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/magic2011/DestructiveForce.java b/Mage.Sets/src/mage/sets/magic2011/DestructiveForce.java index f26bb946afd..474ef510978 100644 --- a/Mage.Sets/src/mage/sets/magic2011/DestructiveForce.java +++ b/Mage.Sets/src/mage/sets/magic2011/DestructiveForce.java @@ -36,6 +36,7 @@ import mage.abilities.effects.common.SacrificeAllEffect; import mage.cards.CardImpl; import mage.filter.common.FilterControlledPermanent; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; /** * @@ -46,7 +47,7 @@ public class DestructiveForce extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("land"); static { - filter.getCardType().add(CardType.LAND); + filter.add(new CardTypePredicate(CardType.LAND)); } public DestructiveForce(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/magic2011/ManicVandal.java b/Mage.Sets/src/mage/sets/magic2011/ManicVandal.java index 5e2a5e8e592..3ef2d35ae03 100644 --- a/Mage.Sets/src/mage/sets/magic2011/ManicVandal.java +++ b/Mage.Sets/src/mage/sets/magic2011/ManicVandal.java @@ -36,8 +36,8 @@ import mage.abilities.Ability; import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.Target; import mage.target.TargetPermanent; @@ -50,8 +50,7 @@ public class ManicVandal extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("artifact"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.setScopeCardType(ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.ARTIFACT)); } public ManicVandal(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/magic2011/PhylacteryLich.java b/Mage.Sets/src/mage/sets/magic2011/PhylacteryLich.java index cde67c089ff..a1dc1874e87 100644 --- a/Mage.Sets/src/mage/sets/magic2011/PhylacteryLich.java +++ b/Mage.Sets/src/mage/sets/magic2011/PhylacteryLich.java @@ -42,8 +42,8 @@ import mage.abilities.effects.common.SacrificeSourceEffect; import mage.abilities.keyword.IndestructibleAbility; import mage.cards.CardImpl; import mage.counters.Counter; -import mage.filter.Filter.ComparisonScope; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.Game; import mage.game.events.GameEvent; import mage.game.permanent.Permanent; @@ -116,8 +116,7 @@ class PhylacteryLichEffect extends OneShotEffect { private static final FilterControlledPermanent filter = new FilterControlledPermanent("artifact"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.setScopeCardType(ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.ARTIFACT)); } public PhylacteryLichEffect() { diff --git a/Mage.Sets/src/mage/sets/magic2011/Reverberate.java b/Mage.Sets/src/mage/sets/magic2011/Reverberate.java index 2c4513b51dd..79ff2463872 100644 --- a/Mage.Sets/src/mage/sets/magic2011/Reverberate.java +++ b/Mage.Sets/src/mage/sets/magic2011/Reverberate.java @@ -33,8 +33,9 @@ import mage.Constants.CardType; import mage.Constants.Rarity; import mage.abilities.effects.common.CopyTargetSpellEffect; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.FilterSpell; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetSpell; /** @@ -46,9 +47,9 @@ public class Reverberate extends CardImpl { private static final FilterSpell filter = new FilterSpell(); static { - filter.getCardType().add(CardType.INSTANT); - filter.getCardType().add(CardType.SORCERY); - filter.setScopeCardType(ComparisonScope.Any); + filter.add(Predicates.or( + new CardTypePredicate(CardType.INSTANT), + new CardTypePredicate(CardType.SORCERY))); } public Reverberate(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/magic2011/SteelOverseer.java b/Mage.Sets/src/mage/sets/magic2011/SteelOverseer.java index 41e2a0df7e1..e26fe71df79 100644 --- a/Mage.Sets/src/mage/sets/magic2011/SteelOverseer.java +++ b/Mage.Sets/src/mage/sets/magic2011/SteelOverseer.java @@ -39,8 +39,8 @@ import mage.abilities.costs.common.TapSourceCost; import mage.abilities.effects.common.counter.AddCountersAllEffect; import mage.cards.CardImpl; import mage.counters.CounterType; -import mage.filter.Filter.ComparisonScope; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; /** * @@ -51,9 +51,8 @@ public class SteelOverseer extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("artifact creature you control"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.getCardType().add(CardType.CREATURE); - filter.setScopeCardType(ComparisonScope.All); + filter.add(new CardTypePredicate(CardType.ARTIFACT)); + filter.add(new CardTypePredicate(CardType.CREATURE)); filter.setTargetController(TargetController.YOU); } diff --git a/Mage.Sets/src/mage/sets/magic2011/SunTitan.java b/Mage.Sets/src/mage/sets/magic2011/SunTitan.java index c83b7687eef..7eda529558c 100644 --- a/Mage.Sets/src/mage/sets/magic2011/SunTitan.java +++ b/Mage.Sets/src/mage/sets/magic2011/SunTitan.java @@ -37,9 +37,10 @@ import mage.abilities.TriggeredAbilityImpl; import mage.abilities.effects.common.ReturnFromGraveyardToBattlefieldTargetEffect; import mage.abilities.keyword.VigilanceAbility; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.Filter.ComparisonType; import mage.filter.FilterCard; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.filter.predicate.mageobject.ConvertedManaCostPredicate; import mage.game.Game; import mage.game.events.GameEvent; @@ -81,12 +82,12 @@ class SunTitanAbility extends TriggeredAbilityImpl { private static final FilterCard filter = new FilterCard("permanent card with converted mana cost 3 or less from your graveyard"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.getCardType().add(CardType.CREATURE); - filter.getCardType().add(CardType.ENCHANTMENT); - filter.getCardType().add(CardType.LAND); - filter.getCardType().add(CardType.PLANESWALKER); - filter.setScopeCardType(ComparisonScope.Any); + filter.add(Predicates.or( + new CardTypePredicate(CardType.ARTIFACT), + new CardTypePredicate(CardType.CREATURE), + new CardTypePredicate(CardType.ENCHANTMENT), + new CardTypePredicate(CardType.LAND), + new CardTypePredicate(CardType.PLANESWALKER))); filter.add(new ConvertedManaCostPredicate(ComparisonType.LessThan, 4)); } diff --git a/Mage.Sets/src/mage/sets/magic2011/VoltaicKey.java b/Mage.Sets/src/mage/sets/magic2011/VoltaicKey.java index d757ed14760..0d4c5a1bacc 100644 --- a/Mage.Sets/src/mage/sets/magic2011/VoltaicKey.java +++ b/Mage.Sets/src/mage/sets/magic2011/VoltaicKey.java @@ -38,8 +38,8 @@ import mage.abilities.costs.common.TapSourceCost; import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.effects.common.UntapTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetPermanent; /** @@ -51,8 +51,7 @@ public class VoltaicKey extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("artifact"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.setScopeCardType(ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.ARTIFACT)); } public VoltaicKey(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/magic2011/WarPriestOfThune.java b/Mage.Sets/src/mage/sets/magic2011/WarPriestOfThune.java index e2da3b5b53e..abf5dae7a75 100644 --- a/Mage.Sets/src/mage/sets/magic2011/WarPriestOfThune.java +++ b/Mage.Sets/src/mage/sets/magic2011/WarPriestOfThune.java @@ -36,8 +36,8 @@ import mage.abilities.Ability; import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.Target; import mage.target.TargetPermanent; @@ -50,8 +50,7 @@ public class WarPriestOfThune extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("enchantment"); static { - filter.getCardType().add(CardType.ENCHANTMENT); - filter.setScopeCardType(ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.ENCHANTMENT)); } public WarPriestOfThune(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/magic2012/Auramancer.java b/Mage.Sets/src/mage/sets/magic2012/Auramancer.java index 2cf7782e512..e508e0de78b 100644 --- a/Mage.Sets/src/mage/sets/magic2012/Auramancer.java +++ b/Mage.Sets/src/mage/sets/magic2012/Auramancer.java @@ -37,8 +37,8 @@ import mage.abilities.Ability; import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.effects.common.ReturnToHandTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.common.TargetCardInYourGraveyard; /** @@ -49,8 +49,7 @@ public class Auramancer extends CardImpl { private final static FilterCard filter = new FilterCard("enchantment card from your graveyard"); static { - filter.getCardType().add(CardType.ENCHANTMENT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.ENCHANTMENT)); } public Auramancer(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/magic2012/BloodlordOfVaasgoth.java b/Mage.Sets/src/mage/sets/magic2012/BloodlordOfVaasgoth.java index bf38bd43958..383fc30ca00 100644 --- a/Mage.Sets/src/mage/sets/magic2012/BloodlordOfVaasgoth.java +++ b/Mage.Sets/src/mage/sets/magic2012/BloodlordOfVaasgoth.java @@ -38,8 +38,8 @@ import mage.abilities.effects.ContinuousEffectImpl; import mage.abilities.keyword.BloodthirstAbility; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterSpell; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; import mage.game.permanent.Permanent; @@ -53,8 +53,7 @@ public class BloodlordOfVaasgoth extends CardImpl { private static final FilterSpell filter = new FilterSpell("a Vampire creature spell"); static { - filter.getCardType().add(CardType.CREATURE); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.CREATURE)); filter.add(new SubtypePredicate("Vampire")); } diff --git a/Mage.Sets/src/mage/sets/magic2012/BountifulHarvest.java b/Mage.Sets/src/mage/sets/magic2012/BountifulHarvest.java index c678ffcccd9..618fbc9ffa6 100644 --- a/Mage.Sets/src/mage/sets/magic2012/BountifulHarvest.java +++ b/Mage.Sets/src/mage/sets/magic2012/BountifulHarvest.java @@ -36,6 +36,7 @@ import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.effects.common.GainLifeEffect; import mage.cards.CardImpl; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; /** * @author Loki @@ -45,7 +46,7 @@ public class BountifulHarvest extends CardImpl { private final static FilterControlledPermanent filter = new FilterControlledPermanent("land you control"); static { - filter.getCardType().add(CardType.LAND); + filter.add(new CardTypePredicate(CardType.LAND)); } public BountifulHarvest(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/magic2012/GarrukPrimalHunter.java b/Mage.Sets/src/mage/sets/magic2012/GarrukPrimalHunter.java index a5d0a9e8669..a5eb0678a78 100644 --- a/Mage.Sets/src/mage/sets/magic2012/GarrukPrimalHunter.java +++ b/Mage.Sets/src/mage/sets/magic2012/GarrukPrimalHunter.java @@ -44,9 +44,9 @@ import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.cards.CardImpl; import mage.counters.CounterType; -import mage.filter.Filter; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.game.permanent.token.BeastToken; @@ -61,8 +61,7 @@ public class GarrukPrimalHunter extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("land your control"); static { - filter.getCardType().add(CardType.LAND); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.LAND)); } diff --git a/Mage.Sets/src/mage/sets/magic2012/Levitation.java b/Mage.Sets/src/mage/sets/magic2012/Levitation.java index e163ab34d80..858015e719f 100644 --- a/Mage.Sets/src/mage/sets/magic2012/Levitation.java +++ b/Mage.Sets/src/mage/sets/magic2012/Levitation.java @@ -38,6 +38,7 @@ import mage.abilities.effects.common.continious.GainAbilityControlledEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; /** * @@ -48,7 +49,7 @@ public class Levitation extends CardImpl { private final static FilterPermanent filter = new FilterPermanent("creatures "); static { - filter.getCardType().add(CardType.CREATURE); + filter.add(new CardTypePredicate(CardType.CREATURE)); } public Levitation (UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/magic2012/MasterThief.java b/Mage.Sets/src/mage/sets/magic2012/MasterThief.java index 0ae5b6d6ec1..e117177eb6c 100644 --- a/Mage.Sets/src/mage/sets/magic2012/MasterThief.java +++ b/Mage.Sets/src/mage/sets/magic2012/MasterThief.java @@ -38,8 +38,8 @@ import mage.abilities.Ability; import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.effects.common.continious.GainControlTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetPermanent; /** @@ -50,8 +50,7 @@ public class MasterThief extends CardImpl { private final static FilterPermanent filter = new FilterPermanent("artifact"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.ARTIFACT)); } public MasterThief(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/magic2012/Smallpox.java b/Mage.Sets/src/mage/sets/magic2012/Smallpox.java index e370a9b8ef5..686c8a0f4e7 100644 --- a/Mage.Sets/src/mage/sets/magic2012/Smallpox.java +++ b/Mage.Sets/src/mage/sets/magic2012/Smallpox.java @@ -35,8 +35,8 @@ import mage.Constants.Rarity; import mage.abilities.Ability; import mage.abilities.effects.OneShotEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; @@ -71,15 +71,13 @@ public class Smallpox extends CardImpl { class SmallpoxEffect extends OneShotEffect { - private static FilterPermanent filterCreature = new FilterPermanent("a creature you control"); - private static FilterPermanent filterLand = new FilterPermanent("a land you control"); + private static final FilterPermanent filterCreature = new FilterPermanent("a creature you control"); + private static final FilterPermanent filterLand = new FilterPermanent("a land you control"); static { - filterCreature.getCardType().add(CardType.CREATURE); - filterCreature.setScopeCardType(Filter.ComparisonScope.Any); + filterCreature.add(new CardTypePredicate(CardType.CREATURE)); filterCreature.setTargetController(Constants.TargetController.YOU); - filterLand.getCardType().add(CardType.LAND); - filterLand.setScopeCardType(Filter.ComparisonScope.Any); + filterLand.add(new CardTypePredicate(CardType.LAND)); filterLand.setTargetController(Constants.TargetController.YOU); } diff --git a/Mage.Sets/src/mage/sets/magic2013/Archaeomancer.java b/Mage.Sets/src/mage/sets/magic2013/Archaeomancer.java index 43ba2599c32..2896cae8f23 100644 --- a/Mage.Sets/src/mage/sets/magic2013/Archaeomancer.java +++ b/Mage.Sets/src/mage/sets/magic2013/Archaeomancer.java @@ -34,8 +34,9 @@ import mage.MageInt; import mage.abilities.common.EntersBattlefieldAbility; import mage.abilities.effects.common.ReturnToHandTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterCard; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.common.TargetCardInYourGraveyard; /** @@ -47,9 +48,9 @@ public class Archaeomancer extends CardImpl { private static final FilterCard filter = new FilterCard("instant or sorcery card from your graveyard"); static { - filter.getCardType().add(CardType.INSTANT); - filter.getCardType().add(CardType.SORCERY); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(Predicates.or( + new CardTypePredicate(CardType.INSTANT), + new CardTypePredicate(CardType.SORCERY))); } public Archaeomancer(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/magic2013/FungalSprouting.java b/Mage.Sets/src/mage/sets/magic2013/FungalSprouting.java index 781a9745135..4e274610432 100644 --- a/Mage.Sets/src/mage/sets/magic2013/FungalSprouting.java +++ b/Mage.Sets/src/mage/sets/magic2013/FungalSprouting.java @@ -36,6 +36,7 @@ import mage.abilities.effects.OneShotEffect; import mage.cards.CardImpl; import mage.filter.FilterPermanent; import mage.filter.common.FilterControlledCreaturePermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.game.permanent.token.SaprolingToken; @@ -72,7 +73,7 @@ class FungalSproutingEffect extends OneShotEffect { private final static FilterPermanent filter = new FilterPermanent(); static { - filter.getCardType().add(CardType.CREATURE); + filter.add(new CardTypePredicate(CardType.CREATURE)); filter.setTargetController(Constants.TargetController.YOU); } diff --git a/Mage.Sets/src/mage/sets/magic2013/TalrandSkySummoner.java b/Mage.Sets/src/mage/sets/magic2013/TalrandSkySummoner.java index b7dff246ff0..65aecbea26d 100644 --- a/Mage.Sets/src/mage/sets/magic2013/TalrandSkySummoner.java +++ b/Mage.Sets/src/mage/sets/magic2013/TalrandSkySummoner.java @@ -35,6 +35,8 @@ import mage.abilities.common.SpellCastTriggeredAbility; import mage.abilities.effects.common.CreateTokenEffect; import mage.cards.CardImpl; import mage.filter.FilterSpell; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.permanent.token.DrakeToken; /** @@ -46,8 +48,9 @@ public class TalrandSkySummoner extends CardImpl { private static final FilterSpell filter = new FilterSpell("instant or sorcery card"); static { - filter.getCardType().add(CardType.INSTANT); - filter.getCardType().add(CardType.SORCERY); + filter.add(Predicates.or( + new CardTypePredicate(CardType.INSTANT), + new CardTypePredicate(CardType.SORCERY))); } public TalrandSkySummoner(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/mirrodin/AltarsLight.java b/Mage.Sets/src/mage/sets/mirrodin/AltarsLight.java index 5e0e60fff0b..ece952f18b1 100644 --- a/Mage.Sets/src/mage/sets/mirrodin/AltarsLight.java +++ b/Mage.Sets/src/mage/sets/mirrodin/AltarsLight.java @@ -32,8 +32,9 @@ import mage.Constants.CardType; import mage.Constants.Rarity; import mage.abilities.effects.common.ExileTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetPermanent; /** @@ -45,9 +46,9 @@ public class AltarsLight extends CardImpl { private final static FilterPermanent filter = new FilterPermanent("artifact or enchantment"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.getCardType().add(CardType.ENCHANTMENT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(Predicates.or( + new CardTypePredicate(CardType.ARTIFACT), + new CardTypePredicate(CardType.ENCHANTMENT))); } public AltarsLight(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/mirrodin/Annul.java b/Mage.Sets/src/mage/sets/mirrodin/Annul.java index 5c83f8b2eb0..71364e6cc27 100644 --- a/Mage.Sets/src/mage/sets/mirrodin/Annul.java +++ b/Mage.Sets/src/mage/sets/mirrodin/Annul.java @@ -32,8 +32,9 @@ import mage.Constants.CardType; import mage.Constants.Rarity; import mage.abilities.effects.common.CounterTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterSpell; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetSpell; /** @@ -45,9 +46,9 @@ public class Annul extends CardImpl { private final static FilterSpell filter = new FilterSpell("artifact or enchantment spell"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.getCardType().add(CardType.ENCHANTMENT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(Predicates.or( + new CardTypePredicate(CardType.ARTIFACT), + new CardTypePredicate(CardType.ENCHANTMENT))); } public Annul(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/mirrodin/Atog.java b/Mage.Sets/src/mage/sets/mirrodin/Atog.java index 5438dd1fce7..1e321afd570 100644 --- a/Mage.Sets/src/mage/sets/mirrodin/Atog.java +++ b/Mage.Sets/src/mage/sets/mirrodin/Atog.java @@ -37,8 +37,8 @@ import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.common.SacrificeTargetCost; import mage.abilities.effects.common.continious.BoostSourceEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.common.TargetControlledPermanent; /** @@ -50,8 +50,7 @@ public class Atog extends CardImpl { private final static FilterControlledPermanent filter = new FilterControlledPermanent("an artifact"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.ARTIFACT)); } public Atog(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/mirrodin/AuriokTransfixer.java b/Mage.Sets/src/mage/sets/mirrodin/AuriokTransfixer.java index 2ef62ba0542..cadb9e038ac 100644 --- a/Mage.Sets/src/mage/sets/mirrodin/AuriokTransfixer.java +++ b/Mage.Sets/src/mage/sets/mirrodin/AuriokTransfixer.java @@ -39,8 +39,8 @@ import mage.abilities.costs.common.TapSourceCost; import mage.abilities.costs.mana.ColoredManaCost; import mage.abilities.effects.common.TapTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetPermanent; /** @@ -51,8 +51,7 @@ public class AuriokTransfixer extends CardImpl { private final static FilterPermanent filter = new FilterPermanent("artifact"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.ARTIFACT)); } public AuriokTransfixer(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/mirrodin/Deconstruct.java b/Mage.Sets/src/mage/sets/mirrodin/Deconstruct.java index cddf9ae7f30..0525e088f31 100644 --- a/Mage.Sets/src/mage/sets/mirrodin/Deconstruct.java +++ b/Mage.Sets/src/mage/sets/mirrodin/Deconstruct.java @@ -34,8 +34,8 @@ import mage.Mana; import mage.abilities.effects.common.BasicManaEffect; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetPermanent; /** @@ -47,8 +47,7 @@ public class Deconstruct extends CardImpl { private final static FilterPermanent filter = new FilterPermanent("artifact"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.ARTIFACT)); } public Deconstruct(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/mirrodin/ElfReplica.java b/Mage.Sets/src/mage/sets/mirrodin/ElfReplica.java index b793b162eae..91a9bc4cdd5 100644 --- a/Mage.Sets/src/mage/sets/mirrodin/ElfReplica.java +++ b/Mage.Sets/src/mage/sets/mirrodin/ElfReplica.java @@ -39,8 +39,8 @@ import mage.abilities.costs.common.SacrificeSourceCost; import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetPermanent; /** @@ -52,8 +52,7 @@ public class ElfReplica extends CardImpl { private final static FilterPermanent filter = new FilterPermanent("enchantment"); static { - filter.getCardType().add(CardType.ENCHANTMENT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.ENCHANTMENT)); } public ElfReplica(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/mirrodin/GalvanicKey.java b/Mage.Sets/src/mage/sets/mirrodin/GalvanicKey.java index b85bdd5c7a3..5d7e368df2d 100644 --- a/Mage.Sets/src/mage/sets/mirrodin/GalvanicKey.java +++ b/Mage.Sets/src/mage/sets/mirrodin/GalvanicKey.java @@ -39,8 +39,8 @@ import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.effects.common.UntapTargetEffect; import mage.abilities.keyword.FlashAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetPermanent; /** @@ -52,8 +52,7 @@ public class GalvanicKey extends CardImpl { private final static FilterPermanent filter = new FilterPermanent("artifact"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.ARTIFACT)); } public GalvanicKey(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/mirrodin/GoblinReplica.java b/Mage.Sets/src/mage/sets/mirrodin/GoblinReplica.java index bce12bdff29..5db4482bbcb 100644 --- a/Mage.Sets/src/mage/sets/mirrodin/GoblinReplica.java +++ b/Mage.Sets/src/mage/sets/mirrodin/GoblinReplica.java @@ -39,8 +39,8 @@ import mage.abilities.costs.common.SacrificeSourceCost; import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetPermanent; /** @@ -52,8 +52,7 @@ public class GoblinReplica extends CardImpl { private final static FilterPermanent filter = new FilterPermanent("artifact"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.ARTIFACT)); } public GoblinReplica(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/mirrodin/KrarkClanGrunt.java b/Mage.Sets/src/mage/sets/mirrodin/KrarkClanGrunt.java index 55def27f235..2131f1a9a0f 100644 --- a/Mage.Sets/src/mage/sets/mirrodin/KrarkClanGrunt.java +++ b/Mage.Sets/src/mage/sets/mirrodin/KrarkClanGrunt.java @@ -40,8 +40,8 @@ import mage.abilities.effects.common.continious.BoostSourceEffect; import mage.abilities.effects.common.continious.GainAbilitySourceEffect; import mage.abilities.keyword.FirstStrikeAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.common.TargetControlledPermanent; /** @@ -53,8 +53,7 @@ public class KrarkClanGrunt extends CardImpl { private final static FilterControlledPermanent filter = new FilterControlledPermanent("an artifact"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.ARTIFACT)); } public KrarkClanGrunt(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/mirrodin/KrarkClanShaman.java b/Mage.Sets/src/mage/sets/mirrodin/KrarkClanShaman.java index 8db4b02976e..a3e0a795703 100644 --- a/Mage.Sets/src/mage/sets/mirrodin/KrarkClanShaman.java +++ b/Mage.Sets/src/mage/sets/mirrodin/KrarkClanShaman.java @@ -38,11 +38,11 @@ import mage.abilities.costs.common.SacrificeTargetCost; import mage.abilities.effects.common.DamageAllEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.AbilityPredicate; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.common.TargetControlledPermanent; /** @@ -54,8 +54,7 @@ public class KrarkClanShaman extends CardImpl { private final static FilterCreaturePermanent filterTargetedCreatures = new FilterCreaturePermanent("creature without flying"); static { - filterSacrificed.getCardType().add(CardType.ARTIFACT); - filterSacrificed.setScopeCardType(Filter.ComparisonScope.Any); + filterSacrificed.add(new CardTypePredicate(CardType.ARTIFACT)); filterTargetedCreatures.add(Predicates.not(new AbilityPredicate(FlyingAbility.class))); } diff --git a/Mage.Sets/src/mage/sets/mirrodin/LeoninAbunas.java b/Mage.Sets/src/mage/sets/mirrodin/LeoninAbunas.java index bc39581a56f..5ed5165034e 100644 --- a/Mage.Sets/src/mage/sets/mirrodin/LeoninAbunas.java +++ b/Mage.Sets/src/mage/sets/mirrodin/LeoninAbunas.java @@ -38,6 +38,7 @@ import mage.abilities.effects.common.continious.GainAbilityControlledEffect; import mage.abilities.keyword.HexproofAbility; import mage.cards.CardImpl; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; /** * @author Loki @@ -47,7 +48,7 @@ public class LeoninAbunas extends CardImpl { private final static FilterControlledPermanent filter = new FilterControlledPermanent("Artifacts you control"); static { - filter.getCardType().add(CardType.ARTIFACT); + filter.add(new CardTypePredicate(CardType.ARTIFACT)); } public LeoninAbunas(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/mirrodin/LoomingHoverguard.java b/Mage.Sets/src/mage/sets/mirrodin/LoomingHoverguard.java index ac610a4f98a..a2296b9fe2c 100644 --- a/Mage.Sets/src/mage/sets/mirrodin/LoomingHoverguard.java +++ b/Mage.Sets/src/mage/sets/mirrodin/LoomingHoverguard.java @@ -36,8 +36,8 @@ import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.effects.common.PutOnLibraryTargetEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetPermanent; /** @@ -49,8 +49,7 @@ public class LoomingHoverguard extends CardImpl { private final static FilterPermanent filter = new FilterPermanent("artifact"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.ARTIFACT)); } public LoomingHoverguard(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/mirrodin/LoxodonMender.java b/Mage.Sets/src/mage/sets/mirrodin/LoxodonMender.java index 72d1eab489e..e49d4b67d08 100644 --- a/Mage.Sets/src/mage/sets/mirrodin/LoxodonMender.java +++ b/Mage.Sets/src/mage/sets/mirrodin/LoxodonMender.java @@ -39,8 +39,8 @@ import mage.abilities.costs.common.TapSourceCost; import mage.abilities.costs.mana.ColoredManaCost; import mage.abilities.effects.common.RegenerateTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetPermanent; /** @@ -51,8 +51,7 @@ public class LoxodonMender extends CardImpl { private final static FilterPermanent filter = new FilterPermanent("artifact"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.ARTIFACT)); } public LoxodonMender(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/mirrodin/Megatog.java b/Mage.Sets/src/mage/sets/mirrodin/Megatog.java index 7def776a67d..3f517b725c1 100644 --- a/Mage.Sets/src/mage/sets/mirrodin/Megatog.java +++ b/Mage.Sets/src/mage/sets/mirrodin/Megatog.java @@ -40,8 +40,8 @@ import mage.abilities.effects.common.continious.BoostSourceEffect; import mage.abilities.effects.common.continious.GainAbilitySourceEffect; import mage.abilities.keyword.TrampleAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.common.TargetControlledPermanent; /** @@ -52,8 +52,7 @@ public class Megatog extends CardImpl { private final static FilterControlledPermanent filter = new FilterControlledPermanent("an artifact"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.ARTIFACT)); } public Megatog(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/mirrodin/MolderSlug.java b/Mage.Sets/src/mage/sets/mirrodin/MolderSlug.java index 5e4de63de64..e5c4f60dff7 100644 --- a/Mage.Sets/src/mage/sets/mirrodin/MolderSlug.java +++ b/Mage.Sets/src/mage/sets/mirrodin/MolderSlug.java @@ -37,8 +37,8 @@ import mage.abilities.Ability; import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; import mage.abilities.effects.common.SacrificeEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; /** * @author Loki @@ -48,8 +48,7 @@ public class MolderSlug extends CardImpl { private final static FilterPermanent filter = new FilterPermanent("artifact"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.ARTIFACT)); } public MolderSlug(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/mirrodin/NeurokSpy.java b/Mage.Sets/src/mage/sets/mirrodin/NeurokSpy.java index 20656efab2e..9ff9344e279 100644 --- a/Mage.Sets/src/mage/sets/mirrodin/NeurokSpy.java +++ b/Mage.Sets/src/mage/sets/mirrodin/NeurokSpy.java @@ -42,8 +42,8 @@ import mage.abilities.effects.Effect; import mage.abilities.effects.common.continious.GainAbilitySourceEffect; import mage.abilities.keyword.UnblockableAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.Game; /** @@ -56,8 +56,7 @@ public class NeurokSpy extends CardImpl { private static final FilterPermanent filter = new FilterPermanent(); static { - filter.getCardType().add(Constants.CardType.ARTIFACT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(Constants.CardType.ARTIFACT)); } private class DefendingPlayerControlsArtifact implements Condition { diff --git a/Mage.Sets/src/mage/sets/mirrodin/NimLasher.java b/Mage.Sets/src/mage/sets/mirrodin/NimLasher.java index 2d4fb47793e..3e6b4069751 100644 --- a/Mage.Sets/src/mage/sets/mirrodin/NimLasher.java +++ b/Mage.Sets/src/mage/sets/mirrodin/NimLasher.java @@ -38,8 +38,8 @@ import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.dynamicvalue.common.StaticValue; import mage.abilities.effects.common.continious.BoostSourceEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; /** * @author Loki @@ -49,8 +49,7 @@ public class NimLasher extends CardImpl { private final static FilterControlledPermanent filter = new FilterControlledPermanent("artifact you control"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.ARTIFACT)); } public NimLasher(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/mirrodin/NimShambler.java b/Mage.Sets/src/mage/sets/mirrodin/NimShambler.java index ce988d191fa..cb344bde1b7 100644 --- a/Mage.Sets/src/mage/sets/mirrodin/NimShambler.java +++ b/Mage.Sets/src/mage/sets/mirrodin/NimShambler.java @@ -41,8 +41,8 @@ import mage.abilities.dynamicvalue.common.StaticValue; import mage.abilities.effects.common.RegenerateSourceEffect; import mage.abilities.effects.common.continious.BoostSourceEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.common.TargetControlledCreaturePermanent; /** @@ -53,8 +53,7 @@ public class NimShambler extends CardImpl { private final static FilterControlledPermanent filter = new FilterControlledPermanent("artifact you control"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.ARTIFACT)); } public NimShambler(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/mirrodin/NimShrieker.java b/Mage.Sets/src/mage/sets/mirrodin/NimShrieker.java index 7b3c7537ecf..76d33907533 100644 --- a/Mage.Sets/src/mage/sets/mirrodin/NimShrieker.java +++ b/Mage.Sets/src/mage/sets/mirrodin/NimShrieker.java @@ -39,8 +39,8 @@ import mage.abilities.dynamicvalue.common.StaticValue; import mage.abilities.effects.common.continious.BoostSourceEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; /** * @author Loki @@ -50,8 +50,7 @@ public class NimShrieker extends CardImpl { private final static FilterControlledPermanent filter = new FilterControlledPermanent("artifact you control"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.ARTIFACT)); } public NimShrieker(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/mirrodin/Shatter.java b/Mage.Sets/src/mage/sets/mirrodin/Shatter.java index 94dc639287f..5d1587d348e 100644 --- a/Mage.Sets/src/mage/sets/mirrodin/Shatter.java +++ b/Mage.Sets/src/mage/sets/mirrodin/Shatter.java @@ -33,8 +33,8 @@ import mage.Constants.CardType; import mage.Constants.Rarity; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetPermanent; /** @@ -42,11 +42,10 @@ import mage.target.TargetPermanent; * @author Loki */ public class Shatter extends CardImpl { - private static FilterPermanent filter = new FilterPermanent("artifact"); + private static final FilterPermanent filter = new FilterPermanent("artifact"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.ARTIFACT)); } public Shatter (UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/mirrodin/ShrapnelBlast.java b/Mage.Sets/src/mage/sets/mirrodin/ShrapnelBlast.java index 3ee5feace57..1fd665350d5 100644 --- a/Mage.Sets/src/mage/sets/mirrodin/ShrapnelBlast.java +++ b/Mage.Sets/src/mage/sets/mirrodin/ShrapnelBlast.java @@ -34,8 +34,8 @@ import mage.Constants.Rarity; import mage.abilities.costs.common.SacrificeTargetCost; import mage.abilities.effects.common.DamageTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.common.TargetControlledPermanent; import mage.target.common.TargetCreatureOrPlayer; @@ -47,8 +47,7 @@ public class ShrapnelBlast extends CardImpl { private final static FilterControlledPermanent filter = new FilterControlledPermanent("an artifact"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.ARTIFACT)); } public ShrapnelBlast(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/mirrodin/SoldierReplica.java b/Mage.Sets/src/mage/sets/mirrodin/SoldierReplica.java index a61aa85b608..5cb9c18da7e 100644 --- a/Mage.Sets/src/mage/sets/mirrodin/SoldierReplica.java +++ b/Mage.Sets/src/mage/sets/mirrodin/SoldierReplica.java @@ -39,7 +39,6 @@ import mage.abilities.costs.common.SacrificeSourceCost; import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.common.DamageTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterCreaturePermanent; import mage.target.common.TargetCreaturePermanent; @@ -54,7 +53,6 @@ public class SoldierReplica extends CardImpl { static { filter.setBlocking(true); filter.setAttacking(true); - filter.setScopeCardType(Filter.ComparisonScope.Any); } public SoldierReplica(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/mirrodin/TrashForTreasure.java b/Mage.Sets/src/mage/sets/mirrodin/TrashForTreasure.java index c702edf82c7..53f7ce07af8 100644 --- a/Mage.Sets/src/mage/sets/mirrodin/TrashForTreasure.java +++ b/Mage.Sets/src/mage/sets/mirrodin/TrashForTreasure.java @@ -35,6 +35,7 @@ import mage.abilities.effects.common.ReturnFromGraveyardToBattlefieldTargetEffec import mage.cards.CardImpl; import mage.filter.FilterCard; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.common.TargetCardInYourGraveyard; import mage.target.common.TargetControlledPermanent; @@ -48,8 +49,8 @@ public class TrashForTreasure extends CardImpl { private static final FilterCard filterCard = new FilterCard("artifact card from your graveyard"); static { - filterPermanent.getCardType().add(CardType.ARTIFACT); - filterCard.getCardType().add(CardType.ARTIFACT); + filterPermanent.add(new CardTypePredicate(CardType.ARTIFACT)); + filterCard.add(new CardTypePredicate(CardType.ARTIFACT)); } public TrashForTreasure(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/mirrodinbesieged/BanishmentDecree.java b/Mage.Sets/src/mage/sets/mirrodinbesieged/BanishmentDecree.java index fb62622dcf4..8c170024901 100644 --- a/Mage.Sets/src/mage/sets/mirrodinbesieged/BanishmentDecree.java +++ b/Mage.Sets/src/mage/sets/mirrodinbesieged/BanishmentDecree.java @@ -33,8 +33,9 @@ import mage.Constants.CardType; import mage.Constants.Rarity; import mage.abilities.effects.common.PutOnLibraryTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetPermanent; /** @@ -42,13 +43,13 @@ import mage.target.TargetPermanent; * @author Loki */ public class BanishmentDecree extends CardImpl { - private static FilterPermanent filter = new FilterPermanent("artifact, creature, or enchantment"); + private static final FilterPermanent filter = new FilterPermanent("artifact, creature, or enchantment"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.getCardType().add(CardType.CREATURE); - filter.getCardType().add(CardType.ENCHANTMENT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(Predicates.or( + new CardTypePredicate(CardType.ARTIFACT), + new CardTypePredicate(CardType.CREATURE), + new CardTypePredicate(CardType.ENCHANTMENT))); } public BanishmentDecree (UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/mirrodinbesieged/Crush.java b/Mage.Sets/src/mage/sets/mirrodinbesieged/Crush.java index c93809caa3b..66b056df03d 100644 --- a/Mage.Sets/src/mage/sets/mirrodinbesieged/Crush.java +++ b/Mage.Sets/src/mage/sets/mirrodinbesieged/Crush.java @@ -33,6 +33,8 @@ import mage.Constants.Rarity; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; import mage.filter.common.FilterArtifactPermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.common.TargetArtifactPermanent; /** @@ -44,7 +46,7 @@ public class Crush extends CardImpl { private static final FilterArtifactPermanent filter = new FilterArtifactPermanent("noncreature artifact"); static { - filter.getNotCardType().add(CardType.CREATURE); + filter.add(Predicates.not(new CardTypePredicate(CardType.CREATURE))); } public Crush(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/mirrodinbesieged/DivineOffering.java b/Mage.Sets/src/mage/sets/mirrodinbesieged/DivineOffering.java index d985d290805..c4ad707b5e3 100644 --- a/Mage.Sets/src/mage/sets/mirrodinbesieged/DivineOffering.java +++ b/Mage.Sets/src/mage/sets/mirrodinbesieged/DivineOffering.java @@ -38,8 +38,8 @@ import mage.abilities.Ability; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.Game; import mage.players.Player; import mage.target.TargetPermanent; @@ -53,8 +53,7 @@ public class DivineOffering extends CardImpl { private static FilterPermanent filter = new FilterPermanent("artifact"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.ARTIFACT)); } public DivineOffering (UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/mirrodinbesieged/GlissaTheTraitor.java b/Mage.Sets/src/mage/sets/mirrodinbesieged/GlissaTheTraitor.java index c2dd81f8f0b..de15786fae2 100644 --- a/Mage.Sets/src/mage/sets/mirrodinbesieged/GlissaTheTraitor.java +++ b/Mage.Sets/src/mage/sets/mirrodinbesieged/GlissaTheTraitor.java @@ -39,8 +39,8 @@ import mage.abilities.effects.common.ReturnToHandTargetEffect; import mage.abilities.keyword.DeathtouchAbility; import mage.abilities.keyword.FirstStrikeAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.Game; import mage.game.events.GameEvent; import mage.game.events.ZoneChangeEvent; @@ -85,8 +85,7 @@ class GlissaTheTraitorTriggeredAbility extends TriggeredAbilityImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("an artifact"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.ARTIFACT)); } public Gnathosaur(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/mirrodinbesieged/GoForTheThroat.java b/Mage.Sets/src/mage/sets/mirrodinbesieged/GoForTheThroat.java index d95d6b76861..c73f2bee18d 100644 --- a/Mage.Sets/src/mage/sets/mirrodinbesieged/GoForTheThroat.java +++ b/Mage.Sets/src/mage/sets/mirrodinbesieged/GoForTheThroat.java @@ -33,6 +33,8 @@ import mage.Constants.Rarity; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.Target; import mage.target.common.TargetCreaturePermanent; @@ -45,7 +47,7 @@ public class GoForTheThroat extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent(); static { - filter.getNotCardType().add(CardType.ARTIFACT); + filter.add(Predicates.not(new CardTypePredicate(CardType.ARTIFACT))); } public GoForTheThroat(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/mirrodinbesieged/GreenSunsZenith.java b/Mage.Sets/src/mage/sets/mirrodinbesieged/GreenSunsZenith.java index e173a1dc67f..8f2605c1b41 100644 --- a/Mage.Sets/src/mage/sets/mirrodinbesieged/GreenSunsZenith.java +++ b/Mage.Sets/src/mage/sets/mirrodinbesieged/GreenSunsZenith.java @@ -44,6 +44,7 @@ import mage.players.Player; import mage.target.common.TargetCardInLibrary; import java.util.UUID; +import mage.filter.predicate.mageobject.CardTypePredicate; /** * @author Loki @@ -87,8 +88,7 @@ class GreenSunsZenithSearchEffect extends OneShotEffect { private static final FilterPermanent filter = new FilterPermanent("artifact"); static { - filter.getCardType().add(CardType.ARTIFACT); + filter.add(new CardTypePredicate(CardType.ARTIFACT)); } public IntoTheCore(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/mirrodinbesieged/LeoninRelicWarder.java b/Mage.Sets/src/mage/sets/mirrodinbesieged/LeoninRelicWarder.java index d88b27f4597..f15bacd017a 100644 --- a/Mage.Sets/src/mage/sets/mirrodinbesieged/LeoninRelicWarder.java +++ b/Mage.Sets/src/mage/sets/mirrodinbesieged/LeoninRelicWarder.java @@ -40,8 +40,9 @@ import mage.abilities.common.LeavesBattlefieldTriggeredAbility; import mage.abilities.effects.common.ExileTargetForSourceEffect; import mage.abilities.effects.common.ReturnFromExileForSourceEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.Target; import mage.target.TargetPermanent; @@ -53,9 +54,9 @@ public class LeoninRelicWarder extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("artifact or enchantment"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.getCardType().add(CardType.ENCHANTMENT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(Predicates.or( + new CardTypePredicate(CardType.ARTIFACT), + new CardTypePredicate(CardType.ENCHANTMENT))); } public LeoninRelicWarder (UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/mirrodinbesieged/MetallicMastery.java b/Mage.Sets/src/mage/sets/mirrodinbesieged/MetallicMastery.java index f7a3a72c326..4134d5d5c91 100644 --- a/Mage.Sets/src/mage/sets/mirrodinbesieged/MetallicMastery.java +++ b/Mage.Sets/src/mage/sets/mirrodinbesieged/MetallicMastery.java @@ -37,6 +37,7 @@ import mage.abilities.effects.common.continious.GainControlTargetEffect; import mage.abilities.keyword.HasteAbility; import mage.cards.CardImpl; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetPermanent; /** @@ -48,7 +49,7 @@ public class MetallicMastery extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("artifact"); static { - filter.getCardType().add(CardType.ARTIFACT); + filter.add(new CardTypePredicate(CardType.ARTIFACT)); } public MetallicMastery(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/mirrodinbesieged/RustedSlasher.java b/Mage.Sets/src/mage/sets/mirrodinbesieged/RustedSlasher.java index c530da1ecec..7cb9be64dcd 100644 --- a/Mage.Sets/src/mage/sets/mirrodinbesieged/RustedSlasher.java +++ b/Mage.Sets/src/mage/sets/mirrodinbesieged/RustedSlasher.java @@ -38,8 +38,8 @@ import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.common.SacrificeTargetCost; import mage.abilities.effects.common.RegenerateSourceEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.common.TargetControlledPermanent; /** @@ -50,8 +50,7 @@ public class RustedSlasher extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("an artifact"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.ARTIFACT)); } public RustedSlasher (UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/mirrodinbesieged/SteelSabotage.java b/Mage.Sets/src/mage/sets/mirrodinbesieged/SteelSabotage.java index 01b5b124c05..45611cba240 100644 --- a/Mage.Sets/src/mage/sets/mirrodinbesieged/SteelSabotage.java +++ b/Mage.Sets/src/mage/sets/mirrodinbesieged/SteelSabotage.java @@ -35,6 +35,7 @@ import mage.abilities.effects.common.CounterTargetEffect; import mage.abilities.effects.common.ReturnToHandTargetEffect; import mage.cards.CardImpl; import mage.filter.FilterSpell; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetSpell; import mage.target.common.TargetArtifactPermanent; @@ -47,7 +48,7 @@ public class SteelSabotage extends CardImpl { private static final FilterSpell filter = new FilterSpell("artifact spell"); static { - filter.getCardType().add(CardType.ARTIFACT); + filter.add(new CardTypePredicate(CardType.ARTIFACT)); } public SteelSabotage(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/mirrodinbesieged/TezzeretAgentOfBolas.java b/Mage.Sets/src/mage/sets/mirrodinbesieged/TezzeretAgentOfBolas.java index 216cf03f84c..e01f663ede5 100644 --- a/Mage.Sets/src/mage/sets/mirrodinbesieged/TezzeretAgentOfBolas.java +++ b/Mage.Sets/src/mage/sets/mirrodinbesieged/TezzeretAgentOfBolas.java @@ -47,10 +47,10 @@ import mage.cards.CardImpl; import mage.cards.Cards; import mage.cards.CardsImpl; import mage.counters.CounterType; -import mage.filter.Filter; import mage.filter.FilterCard; import mage.filter.common.FilterArtifactCard; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.Game; import mage.game.permanent.token.Token; import mage.players.Player; @@ -184,8 +184,7 @@ class TezzeretAgentOfBolasEffect2 extends OneShotEffect { private static final FilterCard filter = new FilterCard("an artifact card with converted mana cost 6 or more"); static { - filter.getCardType().add(CardType.ARTIFACT); + filter.add(new CardTypePredicate(CardType.ARTIFACT)); filter.add(new ConvertedManaCostPredicate(Filter.ComparisonType.GreaterThan, 5)); } diff --git a/Mage.Sets/src/mage/sets/mirrodinbesieged/ViridianCorrupter.java b/Mage.Sets/src/mage/sets/mirrodinbesieged/ViridianCorrupter.java index 0e0f049ac32..b0c2a67d8ba 100644 --- a/Mage.Sets/src/mage/sets/mirrodinbesieged/ViridianCorrupter.java +++ b/Mage.Sets/src/mage/sets/mirrodinbesieged/ViridianCorrupter.java @@ -37,8 +37,8 @@ import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.effects.common.DestroyTargetEffect; import mage.abilities.keyword.InfectAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.Target; import mage.target.TargetPermanent; @@ -48,11 +48,10 @@ import mage.target.TargetPermanent; */ public class ViridianCorrupter extends CardImpl { - private static FilterPermanent filter = new FilterPermanent("artifact"); + private static final FilterPermanent filter = new FilterPermanent("artifact"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.ARTIFACT)); } public ViridianCorrupter (UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/morningtide/IdyllicTutor.java b/Mage.Sets/src/mage/sets/morningtide/IdyllicTutor.java index b21ce005702..27d34129885 100644 --- a/Mage.Sets/src/mage/sets/morningtide/IdyllicTutor.java +++ b/Mage.Sets/src/mage/sets/morningtide/IdyllicTutor.java @@ -33,8 +33,8 @@ import mage.Constants.CardType; import mage.Constants.Rarity; import mage.abilities.effects.common.search.SearchLibraryRevealPutInHandEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.common.TargetCardInLibrary; /** @@ -45,8 +45,7 @@ public class IdyllicTutor extends CardImpl { private final static FilterCard filter = new FilterCard("enchantment"); static { - filter.getCardType().add(CardType.ENCHANTMENT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.ENCHANTMENT)); } public IdyllicTutor(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/morningtide/ShardVolley.java b/Mage.Sets/src/mage/sets/morningtide/ShardVolley.java index c2c799553f1..79ae27345de 100644 --- a/Mage.Sets/src/mage/sets/morningtide/ShardVolley.java +++ b/Mage.Sets/src/mage/sets/morningtide/ShardVolley.java @@ -33,8 +33,8 @@ import mage.Constants.Rarity; import mage.abilities.costs.common.SacrificeTargetCost; import mage.abilities.effects.common.DamageTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.common.TargetControlledPermanent; import mage.target.common.TargetCreatureOrPlayer; @@ -47,8 +47,7 @@ public class ShardVolley extends CardImpl { private final static FilterControlledPermanent filter = new FilterControlledPermanent("land"); static { - filter.getCardType().add(CardType.LAND); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.LAND)); } public ShardVolley(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/morningtide/Shinewend.java b/Mage.Sets/src/mage/sets/morningtide/Shinewend.java index 8008e477945..6cce8fe2031 100644 --- a/Mage.Sets/src/mage/sets/morningtide/Shinewend.java +++ b/Mage.Sets/src/mage/sets/morningtide/Shinewend.java @@ -43,8 +43,8 @@ import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.counters.CounterType; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetPermanent; /** @@ -56,8 +56,7 @@ public class Shinewend extends CardImpl { private final static FilterPermanent filter = new FilterPermanent("enchantment"); static { - filter.getCardType().add(CardType.ENCHANTMENT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.ENCHANTMENT)); } public Shinewend(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/morningtide/SigilTracer.java b/Mage.Sets/src/mage/sets/morningtide/SigilTracer.java index 2c04f151ff9..40c2796a00e 100644 --- a/Mage.Sets/src/mage/sets/morningtide/SigilTracer.java +++ b/Mage.Sets/src/mage/sets/morningtide/SigilTracer.java @@ -39,9 +39,10 @@ import mage.abilities.costs.common.TapTargetCost; import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.common.CopyTargetSpellEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterSpell; import mage.filter.common.FilterControlledCreaturePermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.TargetSpell; import mage.target.common.TargetControlledCreaturePermanent; @@ -58,9 +59,9 @@ public class SigilTracer extends CardImpl { filter.setTapped(false); filter.setUseTapped(true); filter.add(new SubtypePredicate("Wizard")); - filterInstorSorc.getCardType().add(CardType.INSTANT); - filterInstorSorc.getCardType().add(CardType.SORCERY); - filterInstorSorc.setScopeCardType(Filter.ComparisonScope.Any); + filterInstorSorc.add(Predicates.or( + new CardTypePredicate(CardType.INSTANT), + new CardTypePredicate(CardType.SORCERY))); } public SigilTracer(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/morningtide/Stingmoggie.java b/Mage.Sets/src/mage/sets/morningtide/Stingmoggie.java index b673e184dd4..1efd4b91d92 100644 --- a/Mage.Sets/src/mage/sets/morningtide/Stingmoggie.java +++ b/Mage.Sets/src/mage/sets/morningtide/Stingmoggie.java @@ -42,8 +42,9 @@ import mage.abilities.effects.common.DestroyTargetEffect; import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.cards.CardImpl; import mage.counters.CounterType; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetPermanent; /** @@ -55,9 +56,9 @@ public class Stingmoggie extends CardImpl { private final static FilterPermanent filter = new FilterPermanent("artifact or land"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.getCardType().add(CardType.LAND); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(Predicates.or( + new CardTypePredicate(CardType.ARTIFACT), + new CardTypePredicate(CardType.LAND))); } public Stingmoggie(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/newphyrexia/ApostlesBlessing.java b/Mage.Sets/src/mage/sets/newphyrexia/ApostlesBlessing.java index ff64431e416..9193c900eba 100644 --- a/Mage.Sets/src/mage/sets/newphyrexia/ApostlesBlessing.java +++ b/Mage.Sets/src/mage/sets/newphyrexia/ApostlesBlessing.java @@ -42,6 +42,8 @@ import mage.choices.ChoiceColorOrArtifact; import mage.filter.Filter.ComparisonScope; import mage.filter.FilterCard; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.target.common.TargetControlledPermanent; @@ -53,9 +55,9 @@ public class ApostlesBlessing extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("artifact or creature you control"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.getCardType().add(CardType.CREATURE); - filter.setScopeCardType(mage.filter.Filter.ComparisonScope.Any); + filter.add(Predicates.or( + new CardTypePredicate(CardType.ARTIFACT), + new CardTypePredicate(CardType.CREATURE))); } public ApostlesBlessing(UUID ownerId) { @@ -99,8 +101,7 @@ class ApostlesBlessingEffect extends GainAbilityTargetEffect { FilterCard protectionFilter = new FilterCard(); ChoiceColorOrArtifact choice = (ChoiceColorOrArtifact) source.getChoices().get(0); if (choice.isArtifactSelected()) { - protectionFilter.getCardType().add(Constants.CardType.ARTIFACT); - protectionFilter.setScopeCardType(ComparisonScope.Any); + protectionFilter.add(new CardTypePredicate(Constants.CardType.ARTIFACT)); } else { protectionFilter.setColor(choice.getColor()); protectionFilter.setUseColor(true); diff --git a/Mage.Sets/src/mage/sets/newphyrexia/Artillerize.java b/Mage.Sets/src/mage/sets/newphyrexia/Artillerize.java index bfc6df04669..e096a7224b1 100644 --- a/Mage.Sets/src/mage/sets/newphyrexia/Artillerize.java +++ b/Mage.Sets/src/mage/sets/newphyrexia/Artillerize.java @@ -33,8 +33,9 @@ import mage.Constants.Rarity; import mage.abilities.costs.common.SacrificeTargetCost; import mage.abilities.effects.common.DamageTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.common.TargetControlledPermanent; import mage.target.common.TargetCreatureOrPlayer; @@ -47,9 +48,9 @@ public class Artillerize extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("artifact or creature"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.getCardType().add(CardType.CREATURE); - filter.setScopeCardType(ComparisonScope.Any); + filter.add(Predicates.or( + new CardTypePredicate(CardType.ARTIFACT), + new CardTypePredicate(CardType.CREATURE))); } public Artillerize(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/newphyrexia/BirthingPod.java b/Mage.Sets/src/mage/sets/newphyrexia/BirthingPod.java index 78b8e5a02a1..0272abfde48 100644 --- a/Mage.Sets/src/mage/sets/newphyrexia/BirthingPod.java +++ b/Mage.Sets/src/mage/sets/newphyrexia/BirthingPod.java @@ -43,6 +43,7 @@ import mage.cards.Card; import mage.cards.CardImpl; import mage.filter.Filter; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.filter.predicate.mageobject.ConvertedManaCostPredicate; import mage.game.Game; import mage.game.permanent.Permanent; @@ -105,8 +106,7 @@ class BirthingPodEffect extends OneShotEffect { int newConvertedCost = sacrificedPermanent.getManaCost().convertedManaCost() + 1; FilterCard filter = new FilterCard("creature card with converted mana cost " + newConvertedCost); filter.add(new ConvertedManaCostPredicate(Filter.ComparisonType.Equal, newConvertedCost)); - filter.getCardType().add(CardType.CREATURE); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.CREATURE)); TargetCardInLibrary target = new TargetCardInLibrary(filter); if (player.searchLibrary(target, game)) { for (UUID cardId : target.getTargets()) { diff --git a/Mage.Sets/src/mage/sets/newphyrexia/BladeSplicer.java b/Mage.Sets/src/mage/sets/newphyrexia/BladeSplicer.java index 7e1ccb81d76..6d461cbbe88 100644 --- a/Mage.Sets/src/mage/sets/newphyrexia/BladeSplicer.java +++ b/Mage.Sets/src/mage/sets/newphyrexia/BladeSplicer.java @@ -42,6 +42,7 @@ import mage.abilities.effects.common.continious.GainAbilityControlledEffect; import mage.abilities.keyword.FirstStrikeAbility; import mage.cards.CardImpl; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.permanent.token.GolemToken; @@ -53,7 +54,7 @@ public class BladeSplicer extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("Golem creatures"); static { - filter.getCardType().add(CardType.CREATURE); + filter.add(new CardTypePredicate(CardType.CREATURE)); filter.add(new SubtypePredicate("Golem")); } diff --git a/Mage.Sets/src/mage/sets/newphyrexia/BludgeonBrawl.java b/Mage.Sets/src/mage/sets/newphyrexia/BludgeonBrawl.java index e66749fe36a..aa553124464 100644 --- a/Mage.Sets/src/mage/sets/newphyrexia/BludgeonBrawl.java +++ b/Mage.Sets/src/mage/sets/newphyrexia/BludgeonBrawl.java @@ -47,6 +47,7 @@ import mage.abilities.keyword.EquipAbility; import mage.cards.CardImpl; import mage.filter.common.FilterArtifactPermanent; import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; import mage.game.permanent.Permanent; @@ -112,7 +113,7 @@ class BludgeonBrawlAddSubtypeEffect extends ContinuousEffectImpl affectedPermanents = new ArrayList(); diff --git a/Mage.Sets/src/mage/sets/newphyrexia/BrutalizerExarch.java b/Mage.Sets/src/mage/sets/newphyrexia/BrutalizerExarch.java index b27946a1e86..d600196185d 100644 --- a/Mage.Sets/src/mage/sets/newphyrexia/BrutalizerExarch.java +++ b/Mage.Sets/src/mage/sets/newphyrexia/BrutalizerExarch.java @@ -43,6 +43,8 @@ import mage.cards.Cards; import mage.cards.CardsImpl; import mage.filter.FilterPermanent; import mage.filter.common.FilterCreatureCard; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; @@ -58,7 +60,7 @@ public class BrutalizerExarch extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("noncreature permanent"); static { - filter.getNotCardType().add(CardType.CREATURE); + filter.add(Predicates.not(new CardTypePredicate(CardType.CREATURE))); } public BrutalizerExarch(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/newphyrexia/ChancellorOfTheSpires.java b/Mage.Sets/src/mage/sets/newphyrexia/ChancellorOfTheSpires.java index 6873e6a4cb2..e418fe61211 100644 --- a/Mage.Sets/src/mage/sets/newphyrexia/ChancellorOfTheSpires.java +++ b/Mage.Sets/src/mage/sets/newphyrexia/ChancellorOfTheSpires.java @@ -42,8 +42,9 @@ import mage.abilities.effects.common.PlayTargetWithoutPayingManaEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.Card; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.FilterCard; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.Game; import mage.game.events.GameEvent; import mage.players.Player; @@ -60,9 +61,9 @@ public class ChancellorOfTheSpires extends CardImpl { private static final FilterCard filter = new FilterCard("instant or sorcery card from an opponent's graveyard"); static { - filter.getCardType().add(CardType.INSTANT); - filter.getCardType().add(CardType.SORCERY); - filter.setScopeCardType(ComparisonScope.Any); + filter.add(Predicates.or( + new CardTypePredicate(CardType.INSTANT), + new CardTypePredicate(CardType.SORCERY))); } public ChancellorOfTheSpires(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/newphyrexia/Despise.java b/Mage.Sets/src/mage/sets/newphyrexia/Despise.java index 362b6f34075..c144c9820a5 100644 --- a/Mage.Sets/src/mage/sets/newphyrexia/Despise.java +++ b/Mage.Sets/src/mage/sets/newphyrexia/Despise.java @@ -36,8 +36,9 @@ import mage.abilities.Ability; import mage.abilities.effects.OneShotEffect; import mage.cards.Card; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterCard; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.Game; import mage.players.Player; import mage.target.TargetCard; @@ -75,9 +76,9 @@ class DespiseEffect extends OneShotEffect { private static final FilterCard filter = new FilterCard("creature or planeswalker card"); static { - filter.getCardType().add(CardType.CREATURE); - filter.getCardType().add(CardType.PLANESWALKER); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(Predicates.or( + new CardTypePredicate(CardType.CREATURE), + new CardTypePredicate(CardType.PLANESWALKER))); } public DespiseEffect() { diff --git a/Mage.Sets/src/mage/sets/newphyrexia/EntomberExarch.java b/Mage.Sets/src/mage/sets/newphyrexia/EntomberExarch.java index b07bbd2da81..3c2e76f930a 100644 --- a/Mage.Sets/src/mage/sets/newphyrexia/EntomberExarch.java +++ b/Mage.Sets/src/mage/sets/newphyrexia/EntomberExarch.java @@ -42,6 +42,8 @@ import mage.cards.Card; import mage.cards.CardImpl; import mage.filter.FilterCard; import mage.filter.common.FilterCreatureCard; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.Game; import mage.players.Player; import mage.target.TargetCard; @@ -87,7 +89,7 @@ class EntomberExarchEffect extends OneShotEffect { private static final FilterCard filter = new FilterCard("noncreature card"); static { - filter.getNotCardType().add(CardType.CREATURE); + filter.add(Predicates.not(new CardTypePredicate(CardType.CREATURE))); } EntomberExarchEffect() { diff --git a/Mage.Sets/src/mage/sets/newphyrexia/ExclusionRitual.java b/Mage.Sets/src/mage/sets/newphyrexia/ExclusionRitual.java index 496ed4a9856..88ecc4e53b3 100644 --- a/Mage.Sets/src/mage/sets/newphyrexia/ExclusionRitual.java +++ b/Mage.Sets/src/mage/sets/newphyrexia/ExclusionRitual.java @@ -40,6 +40,8 @@ import mage.abilities.effects.ReplacementEffectImpl; import mage.cards.Card; import mage.cards.CardImpl; import mage.filter.FilterPermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.Game; import mage.game.events.GameEvent; import mage.game.permanent.Permanent; @@ -52,7 +54,7 @@ public class ExclusionRitual extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("nonland permanent"); static { - filter.getNotCardType().add(CardType.LAND); + filter.add(Predicates.not(new CardTypePredicate(CardType.LAND))); } public ExclusionRitual(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/newphyrexia/GremlinMine.java b/Mage.Sets/src/mage/sets/newphyrexia/GremlinMine.java index a50421f61a5..aa15f353571 100644 --- a/Mage.Sets/src/mage/sets/newphyrexia/GremlinMine.java +++ b/Mage.Sets/src/mage/sets/newphyrexia/GremlinMine.java @@ -44,6 +44,8 @@ import mage.choices.Choice; import mage.choices.ChoiceImpl; import mage.counters.CounterType; import mage.filter.common.FilterArtifactPermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; @@ -59,8 +61,8 @@ public class GremlinMine extends CardImpl { private static final FilterArtifactPermanent filterNonCreature = new FilterArtifactPermanent("noncreature artifact"); static { - filterCreature.getCardType().add(CardType.CREATURE); - filterNonCreature.getNotCardType().add(CardType.CREATURE); + filterCreature.add(new CardTypePredicate(CardType.CREATURE)); + filterNonCreature.add(Predicates.not(new CardTypePredicate(CardType.CREATURE))); } public GremlinMine(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/newphyrexia/MaulSplicer.java b/Mage.Sets/src/mage/sets/newphyrexia/MaulSplicer.java index bce9d591c6b..206a3893326 100644 --- a/Mage.Sets/src/mage/sets/newphyrexia/MaulSplicer.java +++ b/Mage.Sets/src/mage/sets/newphyrexia/MaulSplicer.java @@ -40,6 +40,7 @@ import mage.abilities.effects.common.continious.GainAbilityControlledEffect; import mage.abilities.keyword.TrampleAbility; import mage.cards.CardImpl; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.permanent.token.GolemToken; @@ -52,7 +53,7 @@ public class MaulSplicer extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("Golem creatures"); static { - filter.getCardType().add(CardType.CREATURE); + filter.add(new CardTypePredicate(CardType.CREATURE)); filter.add(new SubtypePredicate("Golem")); } diff --git a/Mage.Sets/src/mage/sets/newphyrexia/NumbingDose.java b/Mage.Sets/src/mage/sets/newphyrexia/NumbingDose.java index 558eeab16c7..44925caf2a6 100644 --- a/Mage.Sets/src/mage/sets/newphyrexia/NumbingDose.java +++ b/Mage.Sets/src/mage/sets/newphyrexia/NumbingDose.java @@ -38,8 +38,9 @@ import mage.abilities.effects.common.LoseLifeTargetEffect; import mage.abilities.effects.common.SkipEnchantedUntapEffect; import mage.abilities.keyword.EnchantAbility; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.FilterPermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.Game; import mage.game.events.GameEvent; import mage.game.permanent.Permanent; @@ -55,9 +56,9 @@ public class NumbingDose extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("artifact or creature"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.getCardType().add(CardType.CREATURE); - filter.setScopeCardType(ComparisonScope.Any); + filter.add(Predicates.or( + new CardTypePredicate(CardType.ARTIFACT), + new CardTypePredicate(CardType.CREATURE))); } public NumbingDose(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/newphyrexia/PhyrexianIngester.java b/Mage.Sets/src/mage/sets/newphyrexia/PhyrexianIngester.java index baed65f50fe..8e7519edf45 100644 --- a/Mage.Sets/src/mage/sets/newphyrexia/PhyrexianIngester.java +++ b/Mage.Sets/src/mage/sets/newphyrexia/PhyrexianIngester.java @@ -43,8 +43,8 @@ import mage.abilities.effects.ContinuousEffectImpl; import mage.abilities.effects.OneShotEffect; import mage.cards.Card; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterNonTokenPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.target.TargetPermanent; @@ -58,8 +58,7 @@ public class PhyrexianIngester extends CardImpl { private static final FilterNonTokenPermanent filter = new FilterNonTokenPermanent("nontoken creature"); static { - filter.getCardType().add(CardType.CREATURE); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.CREATURE)); } public PhyrexianIngester(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/newphyrexia/PhyrexianMetamorph.java b/Mage.Sets/src/mage/sets/newphyrexia/PhyrexianMetamorph.java index f4583d015a7..bd21bec69bd 100644 --- a/Mage.Sets/src/mage/sets/newphyrexia/PhyrexianMetamorph.java +++ b/Mage.Sets/src/mage/sets/newphyrexia/PhyrexianMetamorph.java @@ -37,8 +37,9 @@ import mage.abilities.common.EntersBattlefieldAbility; import mage.abilities.effects.EntersBattlefieldEffect; import mage.abilities.effects.OneShotEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; @@ -81,9 +82,9 @@ class PhyrexianMetamorphEffect extends OneShotEffect { private static final FilterPermanent filter = new FilterPermanent("artifact or creature"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.getCardType().add(CardType.CREATURE); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(Predicates.or( + new CardTypePredicate(CardType.ARTIFACT), + new CardTypePredicate(CardType.CREATURE))); } public PhyrexianMetamorphEffect() { diff --git a/Mage.Sets/src/mage/sets/newphyrexia/PhyrexiasCore.java b/Mage.Sets/src/mage/sets/newphyrexia/PhyrexiasCore.java index 0bfd70ecb34..23ea54543cf 100644 --- a/Mage.Sets/src/mage/sets/newphyrexia/PhyrexiasCore.java +++ b/Mage.Sets/src/mage/sets/newphyrexia/PhyrexiasCore.java @@ -38,8 +38,8 @@ import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.effects.common.GainLifeEffect; import mage.abilities.mana.ColorlessManaAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.common.TargetControlledPermanent; /** @@ -51,8 +51,7 @@ public class PhyrexiasCore extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("artifact"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.ARTIFACT)); } public PhyrexiasCore(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/newphyrexia/PsychicBarrier.java b/Mage.Sets/src/mage/sets/newphyrexia/PsychicBarrier.java index 29a0d409532..7edc5747482 100644 --- a/Mage.Sets/src/mage/sets/newphyrexia/PsychicBarrier.java +++ b/Mage.Sets/src/mage/sets/newphyrexia/PsychicBarrier.java @@ -34,6 +34,7 @@ import mage.abilities.effects.common.CounterTargetEffect; import mage.abilities.effects.common.LoseLifeControllerEffect; import mage.cards.CardImpl; import mage.filter.FilterSpell; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetSpell; /** @@ -45,7 +46,7 @@ public class PsychicBarrier extends CardImpl { private static final FilterSpell filter = new FilterSpell("creature spell"); static { - filter.getCardType().add(CardType.CREATURE); + filter.add(new CardTypePredicate(CardType.CREATURE)); } public PsychicBarrier(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/newphyrexia/SensorSplicer.java b/Mage.Sets/src/mage/sets/newphyrexia/SensorSplicer.java index 5490e004fbc..08969e60a22 100644 --- a/Mage.Sets/src/mage/sets/newphyrexia/SensorSplicer.java +++ b/Mage.Sets/src/mage/sets/newphyrexia/SensorSplicer.java @@ -40,6 +40,7 @@ import mage.abilities.effects.common.continious.GainAbilityControlledEffect; import mage.abilities.keyword.VigilanceAbility; import mage.cards.CardImpl; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.permanent.token.GolemToken; @@ -52,7 +53,7 @@ public class SensorSplicer extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("Golem creatures"); static { - filter.getCardType().add(CardType.CREATURE); + filter.add(new CardTypePredicate(CardType.CREATURE)); filter.add(new SubtypePredicate("Golem")); } diff --git a/Mage.Sets/src/mage/sets/newphyrexia/VictoriousDestruction.java b/Mage.Sets/src/mage/sets/newphyrexia/VictoriousDestruction.java index 3863ea40f16..3e4ed9e51a3 100644 --- a/Mage.Sets/src/mage/sets/newphyrexia/VictoriousDestruction.java +++ b/Mage.Sets/src/mage/sets/newphyrexia/VictoriousDestruction.java @@ -33,8 +33,9 @@ import mage.Constants.Rarity; import mage.abilities.effects.common.DestroyTargetEffect; import mage.abilities.effects.common.LoseLifeControllerEffect; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; -import mage.filter.common.FilterArtifactPermanent; +import mage.filter.FilterPermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetPermanent; /** @@ -43,11 +44,12 @@ import mage.target.TargetPermanent; */ public class VictoriousDestruction extends CardImpl { - private static final FilterArtifactPermanent filter = new FilterArtifactPermanent("artifact or land"); + private final static FilterPermanent filter = new FilterPermanent("artifact or land"); static { - filter.getCardType().add(CardType.LAND); - filter.setScopeCardType(ComparisonScope.Any); + filter.add(Predicates.or( + new CardTypePredicate(CardType.ARTIFACT), + new CardTypePredicate(CardType.LAND))); } public VictoriousDestruction(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/newphyrexia/VitalSplicer.java b/Mage.Sets/src/mage/sets/newphyrexia/VitalSplicer.java index 13d8dfe38e7..81eeb94c797 100644 --- a/Mage.Sets/src/mage/sets/newphyrexia/VitalSplicer.java +++ b/Mage.Sets/src/mage/sets/newphyrexia/VitalSplicer.java @@ -41,6 +41,7 @@ import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.RegenerateTargetEffect; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.permanent.token.GolemToken; import mage.target.common.TargetCreaturePermanent; @@ -54,7 +55,7 @@ public class VitalSplicer extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Golem you control"); static { - filter.getCardType().add(CardType.CREATURE); + filter.add(new CardTypePredicate(CardType.CREATURE)); filter.add(new SubtypePredicate("Golem")); filter.setTargetController(TargetController.YOU); } diff --git a/Mage.Sets/src/mage/sets/newphyrexia/Whipflare.java b/Mage.Sets/src/mage/sets/newphyrexia/Whipflare.java index 9aaa8309c67..92ef12f0a15 100644 --- a/Mage.Sets/src/mage/sets/newphyrexia/Whipflare.java +++ b/Mage.Sets/src/mage/sets/newphyrexia/Whipflare.java @@ -27,13 +27,14 @@ */ package mage.sets.newphyrexia; +import java.util.UUID; import mage.Constants.CardType; import mage.Constants.Rarity; import mage.abilities.effects.common.DamageAllEffect; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; - -import java.util.UUID; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; /** * @@ -44,7 +45,7 @@ public class Whipflare extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonartifact creature"); static { - filter.getNotCardType().add(CardType.ARTIFACT); + filter.add(Predicates.not(new CardTypePredicate(CardType.ARTIFACT))); } public Whipflare(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/newphyrexia/WingSplicer.java b/Mage.Sets/src/mage/sets/newphyrexia/WingSplicer.java index 3abee59fad1..e4f500fac8e 100644 --- a/Mage.Sets/src/mage/sets/newphyrexia/WingSplicer.java +++ b/Mage.Sets/src/mage/sets/newphyrexia/WingSplicer.java @@ -40,6 +40,7 @@ import mage.abilities.effects.common.continious.GainAbilityControlledEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.permanent.token.GolemToken; @@ -52,7 +53,7 @@ public class WingSplicer extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("Golem creatures"); static { - filter.getCardType().add(CardType.CREATURE); + filter.add(new CardTypePredicate(CardType.CREATURE)); filter.add(new SubtypePredicate("Golem")); } diff --git a/Mage.Sets/src/mage/sets/planechase/AkromasVengeance.java b/Mage.Sets/src/mage/sets/planechase/AkromasVengeance.java index 9abfc8065fa..faf2a5ee375 100644 --- a/Mage.Sets/src/mage/sets/planechase/AkromasVengeance.java +++ b/Mage.Sets/src/mage/sets/planechase/AkromasVengeance.java @@ -37,8 +37,9 @@ import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.OneShotEffect; import mage.abilities.keyword.CyclingAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.Game; import mage.game.permanent.Permanent; @@ -71,10 +72,10 @@ class AkromasVengeanceEffect extends OneShotEffect { private final static FilterPermanent filter = new FilterPermanent(""); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.getCardType().add(CardType.CREATURE); - filter.getCardType().add(CardType.ENCHANTMENT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(Predicates.or( + new CardTypePredicate(CardType.ARTIFACT), + new CardTypePredicate(CardType.CREATURE), + new CardTypePredicate(CardType.ENCHANTMENT))); } public AkromasVengeanceEffect() { diff --git a/Mage.Sets/src/mage/sets/planechase/BeaconOfUnrest.java b/Mage.Sets/src/mage/sets/planechase/BeaconOfUnrest.java index 54752a676e5..b0f7588d177 100644 --- a/Mage.Sets/src/mage/sets/planechase/BeaconOfUnrest.java +++ b/Mage.Sets/src/mage/sets/planechase/BeaconOfUnrest.java @@ -33,8 +33,9 @@ import mage.Constants.Rarity; import mage.abilities.effects.common.ReturnFromGraveyardToBattlefieldTargetEffect; import mage.abilities.effects.common.ShuffleSpellEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterCard; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.common.TargetCardInGraveyard; /** @@ -45,9 +46,9 @@ public class BeaconOfUnrest extends CardImpl { private static final FilterCard filter = new FilterCard("artifact or creature"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.getCardType().add(CardType.CREATURE); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(Predicates.or( + new CardTypePredicate(CardType.ARTIFACT), + new CardTypePredicate(CardType.CREATURE))); } public BeaconOfUnrest(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/planechase/BorosGarrison.java b/Mage.Sets/src/mage/sets/planechase/BorosGarrison.java index 87f4593a9d8..ee291f888b5 100644 --- a/Mage.Sets/src/mage/sets/planechase/BorosGarrison.java +++ b/Mage.Sets/src/mage/sets/planechase/BorosGarrison.java @@ -41,8 +41,8 @@ import mage.abilities.effects.common.BasicManaEffect; import mage.abilities.effects.common.ReturnToHandTargetEffect; import mage.abilities.mana.SimpleManaAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.Target; import mage.target.common.TargetControlledPermanent; @@ -55,8 +55,7 @@ public class BorosGarrison extends CardImpl { private final static FilterControlledPermanent filter = new FilterControlledPermanent("land you control"); static { - filter.getCardType().add(CardType.LAND); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.LAND)); } public BorosGarrison(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/planechase/BoshIronGolem.java b/Mage.Sets/src/mage/sets/planechase/BoshIronGolem.java index 6b208e1db9f..a6bca4e488d 100644 --- a/Mage.Sets/src/mage/sets/planechase/BoshIronGolem.java +++ b/Mage.Sets/src/mage/sets/planechase/BoshIronGolem.java @@ -41,6 +41,7 @@ import mage.abilities.effects.OneShotEffect; import mage.abilities.keyword.TrampleAbility; import mage.cards.CardImpl; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; @@ -56,7 +57,7 @@ public class BoshIronGolem extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("artifact"); static { - filter.getCardType().add(CardType.ARTIFACT); + filter.add(new CardTypePredicate(CardType.ARTIFACT)); } public BoshIronGolem(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/planechase/Broodstar.java b/Mage.Sets/src/mage/sets/planechase/Broodstar.java index 2d332310f9b..b1e0eda62d1 100644 --- a/Mage.Sets/src/mage/sets/planechase/Broodstar.java +++ b/Mage.Sets/src/mage/sets/planechase/Broodstar.java @@ -39,8 +39,8 @@ import mage.abilities.effects.common.continious.SetPowerToughnessSourceEffect; import mage.abilities.keyword.AffinityForArtifactsAbility; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; /** * @@ -50,8 +50,7 @@ public class Broodstar extends CardImpl { private final static FilterControlledPermanent filter = new FilterControlledPermanent("artifacts you control"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.ARTIFACT)); } public Broodstar(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/planechase/CranialPlating.java b/Mage.Sets/src/mage/sets/planechase/CranialPlating.java index a3a95cb74a4..c8b53281814 100644 --- a/Mage.Sets/src/mage/sets/planechase/CranialPlating.java +++ b/Mage.Sets/src/mage/sets/planechase/CranialPlating.java @@ -43,8 +43,8 @@ import mage.abilities.effects.common.AttachEffect; import mage.abilities.effects.common.continious.BoostEquippedEffect; import mage.abilities.keyword.EquipAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.common.TargetControlledCreaturePermanent; /** @@ -55,8 +55,7 @@ public class CranialPlating extends CardImpl { private final static FilterControlledPermanent filterCounted = new FilterControlledPermanent("artifacts you control"); static { - filterCounted.getCardType().add(CardType.ARTIFACT); - filterCounted.setScopeCardType(Filter.ComparisonScope.Any); + filterCounted.add(new CardTypePredicate(CardType.ARTIFACT)); } public CranialPlating(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/planechase/GruulTurf.java b/Mage.Sets/src/mage/sets/planechase/GruulTurf.java index 097c1d03da7..00edaca390a 100644 --- a/Mage.Sets/src/mage/sets/planechase/GruulTurf.java +++ b/Mage.Sets/src/mage/sets/planechase/GruulTurf.java @@ -41,6 +41,7 @@ import mage.abilities.effects.common.ReturnToHandTargetEffect; import mage.abilities.mana.SimpleManaAbility; import mage.cards.CardImpl; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.Target; import mage.target.common.TargetControlledPermanent; @@ -52,7 +53,7 @@ public class GruulTurf extends CardImpl { private final static FilterControlledPermanent filter = new FilterControlledPermanent("land"); static { - filter.getCardType().add(Constants.CardType.LAND); + filter.add(new CardTypePredicate(Constants.CardType.LAND)); } public GruulTurf(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/planechase/LodestoneMyr.java b/Mage.Sets/src/mage/sets/planechase/LodestoneMyr.java index 8414f3468fc..20b0eda03f4 100644 --- a/Mage.Sets/src/mage/sets/planechase/LodestoneMyr.java +++ b/Mage.Sets/src/mage/sets/planechase/LodestoneMyr.java @@ -38,8 +38,8 @@ import mage.abilities.costs.common.TapTargetCost; import mage.abilities.effects.common.continious.BoostSourceEffect; import mage.abilities.keyword.TrampleAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledCreaturePermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.common.TargetControlledPermanent; /** @@ -52,8 +52,7 @@ public class LodestoneMyr extends CardImpl { static { filter.setTapped(false); filter.setUseTapped(true); - filter.getCardType().add(CardType.ARTIFACT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.ARTIFACT)); } public LodestoneMyr(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/ravnika/DimirAqueduct.java b/Mage.Sets/src/mage/sets/ravnika/DimirAqueduct.java index 334afa86b18..7773cadb42f 100644 --- a/Mage.Sets/src/mage/sets/ravnika/DimirAqueduct.java +++ b/Mage.Sets/src/mage/sets/ravnika/DimirAqueduct.java @@ -41,8 +41,8 @@ import mage.abilities.effects.common.BasicManaEffect; import mage.abilities.effects.common.ReturnToHandTargetEffect; import mage.abilities.mana.SimpleManaAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.Target; import mage.target.common.TargetControlledPermanent; @@ -53,8 +53,7 @@ public class DimirAqueduct extends CardImpl { private final static FilterControlledPermanent filter = new FilterControlledPermanent("land you control"); static { - filter.getCardType().add(CardType.LAND); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.LAND)); } diff --git a/Mage.Sets/src/mage/sets/ravnika/DowsingShaman.java b/Mage.Sets/src/mage/sets/ravnika/DowsingShaman.java index 85c891ff512..bbade838796 100644 --- a/Mage.Sets/src/mage/sets/ravnika/DowsingShaman.java +++ b/Mage.Sets/src/mage/sets/ravnika/DowsingShaman.java @@ -39,8 +39,8 @@ import mage.abilities.costs.common.TapSourceCost; import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.common.ReturnToHandTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.common.TargetCardInYourGraveyard; /** @@ -52,8 +52,7 @@ public class DowsingShaman extends CardImpl { private final static FilterCard filter = new FilterCard("enchantment card from your graveyard"); static { - filter.getCardType().add(CardType.ENCHANTMENT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.ENCHANTMENT)); } public DowsingShaman(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/ravnika/GlareOfSubdual.java b/Mage.Sets/src/mage/sets/ravnika/GlareOfSubdual.java index a97812d2d00..6eb1d3b8b7e 100644 --- a/Mage.Sets/src/mage/sets/ravnika/GlareOfSubdual.java +++ b/Mage.Sets/src/mage/sets/ravnika/GlareOfSubdual.java @@ -37,9 +37,10 @@ import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.common.TapTargetCost; import mage.abilities.effects.common.TapTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; import mage.filter.common.FilterControlledCreaturePermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetPermanent; import mage.target.common.TargetControlledCreaturePermanent; @@ -55,9 +56,9 @@ public class GlareOfSubdual extends CardImpl { static { filterCost.setTapped(false); filterCost.setUseTapped(true); - filterTarget.getCardType().add(CardType.ARTIFACT); - filterTarget.getCardType().add(CardType.CREATURE); - filterTarget.setScopeCardType(Filter.ComparisonScope.Any); + filterTarget.add(Predicates.or( + new CardTypePredicate(CardType.ARTIFACT), + new CardTypePredicate(CardType.CREATURE))); } public GlareOfSubdual(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/ravnika/GolgariRotFarm.java b/Mage.Sets/src/mage/sets/ravnika/GolgariRotFarm.java index 17d2746533e..cece174bc9a 100644 --- a/Mage.Sets/src/mage/sets/ravnika/GolgariRotFarm.java +++ b/Mage.Sets/src/mage/sets/ravnika/GolgariRotFarm.java @@ -41,8 +41,8 @@ import mage.abilities.effects.common.BasicManaEffect; import mage.abilities.effects.common.ReturnToHandTargetEffect; import mage.abilities.mana.SimpleManaAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.Target; import mage.target.common.TargetControlledPermanent; @@ -54,8 +54,7 @@ public class GolgariRotFarm extends CardImpl { private final static FilterControlledPermanent filter = new FilterControlledPermanent("land you control"); static { - filter.getCardType().add(CardType.LAND); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.LAND)); } public GolgariRotFarm(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/ravnika/HalcyonGlaze.java b/Mage.Sets/src/mage/sets/ravnika/HalcyonGlaze.java index ff1419f3ea9..5f766df1d8c 100644 --- a/Mage.Sets/src/mage/sets/ravnika/HalcyonGlaze.java +++ b/Mage.Sets/src/mage/sets/ravnika/HalcyonGlaze.java @@ -36,8 +36,8 @@ import mage.abilities.common.SpellCastTriggeredAbility; import mage.abilities.effects.common.continious.BecomesCreatureSourceEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterSpell; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.permanent.token.Token; /** @@ -49,8 +49,7 @@ public class HalcyonGlaze extends CardImpl { private static final FilterSpell filter = new FilterSpell("a creature spell"); static { - filter.getCardType().add(CardType.CREATURE); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.CREATURE)); } public HalcyonGlaze(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/ravnika/LeaveNoTrace.java b/Mage.Sets/src/mage/sets/ravnika/LeaveNoTrace.java index cf805e2f867..a25304c8079 100644 --- a/Mage.Sets/src/mage/sets/ravnika/LeaveNoTrace.java +++ b/Mage.Sets/src/mage/sets/ravnika/LeaveNoTrace.java @@ -36,8 +36,8 @@ import mage.ObjectColor; import mage.abilities.Ability; import mage.abilities.effects.OneShotEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.target.TargetPermanent; @@ -49,8 +49,7 @@ public class LeaveNoTrace extends CardImpl { static final FilterPermanent filter = new FilterPermanent("enchantment"); static { - filter.getCardType().add(CardType.ENCHANTMENT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.ENCHANTMENT)); } public LeaveNoTrace(UUID ownerId) { @@ -78,8 +77,7 @@ class LeaveNoTraceEffect extends OneShotEffect { static final FilterPermanent filter = new FilterPermanent("enchantment"); static { - filter.getCardType().add(CardType.ENCHANTMENT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.ENCHANTMENT)); } LeaveNoTraceEffect() { diff --git a/Mage.Sets/src/mage/sets/ravnika/MuddleTheMixture.java b/Mage.Sets/src/mage/sets/ravnika/MuddleTheMixture.java index a7580cb676c..51fee86e60e 100644 --- a/Mage.Sets/src/mage/sets/ravnika/MuddleTheMixture.java +++ b/Mage.Sets/src/mage/sets/ravnika/MuddleTheMixture.java @@ -33,8 +33,9 @@ import mage.Constants.Rarity; import mage.abilities.effects.common.CounterTargetEffect; import mage.abilities.keyword.TransmuteAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterSpell; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetSpell; /** @@ -45,9 +46,9 @@ public class MuddleTheMixture extends CardImpl { private static final FilterSpell filter = new FilterSpell("instant or sorcery spell"); static { - filter.getCardType().add(CardType.INSTANT); - filter.getCardType().add(CardType.SORCERY); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(Predicates.or( + new CardTypePredicate(CardType.INSTANT), + new CardTypePredicate(CardType.SORCERY))); } public MuddleTheMixture(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/ravnika/NullmageShepherd.java b/Mage.Sets/src/mage/sets/ravnika/NullmageShepherd.java index 0278a0f816d..0d5739aab98 100644 --- a/Mage.Sets/src/mage/sets/ravnika/NullmageShepherd.java +++ b/Mage.Sets/src/mage/sets/ravnika/NullmageShepherd.java @@ -38,9 +38,10 @@ import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.common.TapTargetCost; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; import mage.filter.common.FilterControlledCreaturePermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetPermanent; import mage.target.common.TargetControlledCreaturePermanent; @@ -56,9 +57,9 @@ public class NullmageShepherd extends CardImpl { static { filterCost.setTapped(false); filterCost.setUseTapped(true); - filterTarget.getCardType().add(CardType.ARTIFACT); - filterTarget.getCardType().add(CardType.ENCHANTMENT); - filterTarget.setScopeCardType(Filter.ComparisonScope.Any); + filterTarget.add(Predicates.or( + new CardTypePredicate(CardType.ARTIFACT), + new CardTypePredicate(CardType.ENCHANTMENT))); } public NullmageShepherd(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/ravnika/PrimordialSage.java b/Mage.Sets/src/mage/sets/ravnika/PrimordialSage.java index 63523697d03..a42a628410b 100644 --- a/Mage.Sets/src/mage/sets/ravnika/PrimordialSage.java +++ b/Mage.Sets/src/mage/sets/ravnika/PrimordialSage.java @@ -34,8 +34,8 @@ import mage.MageInt; import mage.abilities.common.SpellCastTriggeredAbility; import mage.abilities.effects.common.DrawCardControllerEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterSpell; +import mage.filter.predicate.mageobject.CardTypePredicate; /** * @@ -46,8 +46,7 @@ public class PrimordialSage extends CardImpl { private static final FilterSpell filter = new FilterSpell("a creature spell"); static { - filter.getCardType().add(CardType.CREATURE); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.CREATURE)); } public PrimordialSage(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/ravnika/Putrefy.java b/Mage.Sets/src/mage/sets/ravnika/Putrefy.java index a639c808011..f7dcb961d5a 100644 --- a/Mage.Sets/src/mage/sets/ravnika/Putrefy.java +++ b/Mage.Sets/src/mage/sets/ravnika/Putrefy.java @@ -33,8 +33,9 @@ import mage.Constants.CardType; import mage.Constants.Rarity; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.FilterPermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetPermanent; /** @@ -42,12 +43,12 @@ import mage.target.TargetPermanent; * @author Loki */ public class Putrefy extends CardImpl { - private static FilterPermanent filter = new FilterPermanent("artifact or creature"); + private static final FilterPermanent filter = new FilterPermanent("artifact or creature"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.getCardType().add(CardType.CREATURE); - filter.setScopeCardType(ComparisonScope.Any); + filter.add(Predicates.or( + new CardTypePredicate(CardType.ARTIFACT), + new CardTypePredicate(CardType.CREATURE))); } public Putrefy (UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/ravnika/SelesnyaSanctuary.java b/Mage.Sets/src/mage/sets/ravnika/SelesnyaSanctuary.java index 4d3d8fdd225..bd30b072c47 100644 --- a/Mage.Sets/src/mage/sets/ravnika/SelesnyaSanctuary.java +++ b/Mage.Sets/src/mage/sets/ravnika/SelesnyaSanctuary.java @@ -41,8 +41,8 @@ import mage.abilities.effects.common.BasicManaEffect; import mage.abilities.effects.common.ReturnToHandTargetEffect; import mage.abilities.mana.SimpleManaAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.Target; import mage.target.common.TargetControlledPermanent; @@ -54,8 +54,7 @@ public class SelesnyaSanctuary extends CardImpl { private final static FilterControlledPermanent filter = new FilterControlledPermanent("land you control"); static { - filter.getCardType().add(CardType.LAND); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.LAND)); } public SelesnyaSanctuary(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/riseoftheeldrazi/ConsumingVapors.java b/Mage.Sets/src/mage/sets/riseoftheeldrazi/ConsumingVapors.java index ee0fcea4860..b55fb49e5fa 100644 --- a/Mage.Sets/src/mage/sets/riseoftheeldrazi/ConsumingVapors.java +++ b/Mage.Sets/src/mage/sets/riseoftheeldrazi/ConsumingVapors.java @@ -37,6 +37,7 @@ import mage.abilities.effects.OneShotEffect; import mage.abilities.keyword.ReboundAbility; import mage.cards.CardImpl; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; @@ -88,7 +89,7 @@ class ConsumingVaporsEffect extends OneShotEffect { Player controller = game.getPlayer(source.getControllerId()); FilterControlledPermanent filter = new FilterControlledPermanent("creature"); - filter.getCardType().add(CardType.CREATURE); + filter.add(new CardTypePredicate(CardType.CREATURE)); filter.setTargetController(TargetController.YOU); TargetControlledPermanent target = new TargetControlledPermanent(1, 1, filter, false); diff --git a/Mage.Sets/src/mage/sets/riseoftheeldrazi/Deprive.java b/Mage.Sets/src/mage/sets/riseoftheeldrazi/Deprive.java index a069ddf70a0..6892b16b2ac 100644 --- a/Mage.Sets/src/mage/sets/riseoftheeldrazi/Deprive.java +++ b/Mage.Sets/src/mage/sets/riseoftheeldrazi/Deprive.java @@ -34,8 +34,8 @@ import mage.Constants.Rarity; import mage.abilities.costs.common.ReturnToHandTargetCost; import mage.abilities.effects.common.CounterTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetSpell; import mage.target.common.TargetControlledPermanent; @@ -48,8 +48,7 @@ public class Deprive extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("land"); static { - filter.getCardType().add(CardType.LAND); - filter.setScopeCardType(ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.LAND)); } public Deprive(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/riseoftheeldrazi/InquisitionOfKozilek.java b/Mage.Sets/src/mage/sets/riseoftheeldrazi/InquisitionOfKozilek.java index efe7fcb0fde..5127b494de1 100644 --- a/Mage.Sets/src/mage/sets/riseoftheeldrazi/InquisitionOfKozilek.java +++ b/Mage.Sets/src/mage/sets/riseoftheeldrazi/InquisitionOfKozilek.java @@ -39,6 +39,8 @@ import mage.cards.Card; import mage.cards.CardImpl; import mage.filter.Filter; import mage.filter.FilterCard; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.filter.predicate.mageobject.ConvertedManaCostPredicate; import mage.game.Game; import mage.players.Player; @@ -74,8 +76,7 @@ class InquisitionOfKozilekEffect extends OneShotEffect { private static final FilterSpell filter = new FilterSpell("an instant or sorcery spell"); static { - filter.getCardType().add(CardType.INSTANT); - filter.getCardType().add(CardType.SORCERY); - filter.setScopeCardType(ComparisonScope.Any); + filter.add(Predicates.or( + new CardTypePredicate(CardType.INSTANT), + new CardTypePredicate(CardType.SORCERY))); } public KilnFiend(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/riseoftheeldrazi/Magmaw.java b/Mage.Sets/src/mage/sets/riseoftheeldrazi/Magmaw.java index 5fe7e731011..d3f7675e073 100644 --- a/Mage.Sets/src/mage/sets/riseoftheeldrazi/Magmaw.java +++ b/Mage.Sets/src/mage/sets/riseoftheeldrazi/Magmaw.java @@ -37,6 +37,8 @@ import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.effects.common.DamageTargetEffect; import mage.cards.CardImpl; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.common.TargetControlledPermanent; import mage.target.common.TargetCreatureOrPlayer; @@ -51,7 +53,7 @@ public class Magmaw extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("nonland permanent"); static { - filter.getNotCardType().add(CardType.LAND); + filter.add(Predicates.not(new CardTypePredicate(CardType.LAND))); } public Magmaw(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/riseoftheeldrazi/MnemonicWall.java b/Mage.Sets/src/mage/sets/riseoftheeldrazi/MnemonicWall.java index dea9ef5127e..9f9ed2f941d 100644 --- a/Mage.Sets/src/mage/sets/riseoftheeldrazi/MnemonicWall.java +++ b/Mage.Sets/src/mage/sets/riseoftheeldrazi/MnemonicWall.java @@ -36,8 +36,9 @@ import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.effects.common.ReturnToHandTargetEffect; import mage.abilities.keyword.DefenderAbility; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.FilterCard; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.common.TargetCardInYourGraveyard; /** @@ -49,9 +50,9 @@ public class MnemonicWall extends CardImpl { private static final FilterCard filter = new FilterCard("instant or sorcery card from your graveyard"); static { - filter.getCardType().add(CardType.INSTANT); - filter.getCardType().add(CardType.SORCERY); - filter.setScopeCardType(ComparisonScope.Any); + filter.add(Predicates.or( + new CardTypePredicate(CardType.INSTANT), + new CardTypePredicate(CardType.SORCERY))); } public MnemonicWall(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/riseoftheeldrazi/Narcolepsy.java b/Mage.Sets/src/mage/sets/riseoftheeldrazi/Narcolepsy.java index fcccef728e7..3fed288ecab 100644 --- a/Mage.Sets/src/mage/sets/riseoftheeldrazi/Narcolepsy.java +++ b/Mage.Sets/src/mage/sets/riseoftheeldrazi/Narcolepsy.java @@ -31,18 +31,17 @@ import java.util.UUID; import mage.Constants; import mage.Constants.CardType; import mage.Constants.Rarity; +import mage.Constants.Zone; +import mage.abilities.Ability; +import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.AttachEffect; import mage.abilities.keyword.EnchantAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterCreaturePermanent; -import mage.target.TargetPermanent; -import mage.Constants.Zone; -import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; -import mage.game.permanent.Permanent; -import mage.abilities.Ability; import mage.game.Game; +import mage.game.permanent.Permanent; +import mage.target.TargetPermanent; /** * @@ -52,10 +51,6 @@ public class Narcolepsy extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature"); - static { - filter.setScopeCardType(Filter.ComparisonScope.Any); - } - public Narcolepsy(UUID ownerId) { super(ownerId, 79, "Narcolepsy", Rarity.COMMON, new CardType[]{CardType.ENCHANTMENT}, "{1}{U}"); this.expansionSetCode = "ROE"; diff --git a/Mage.Sets/src/mage/sets/riseoftheeldrazi/SarkhanTheMad.java b/Mage.Sets/src/mage/sets/riseoftheeldrazi/SarkhanTheMad.java index 0403b26e86c..12f5f1bca1a 100644 --- a/Mage.Sets/src/mage/sets/riseoftheeldrazi/SarkhanTheMad.java +++ b/Mage.Sets/src/mage/sets/riseoftheeldrazi/SarkhanTheMad.java @@ -45,6 +45,7 @@ import mage.cards.Cards; import mage.cards.CardsImpl; import mage.counters.CounterType; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; import mage.game.permanent.Permanent; @@ -166,7 +167,7 @@ class SarkhanTheMadDragonDamageEffect extends OneShotEffect { private static final FilterSpell filter = new FilterSpell("an instant or sorcery spell"); static { - filter.getCardType().add(CardType.INSTANT); - filter.getCardType().add(CardType.SORCERY); - filter.setScopeCardType(ComparisonScope.Any); + filter.add(Predicates.or( + new CardTypePredicate(CardType.INSTANT), + new CardTypePredicate(CardType.SORCERY))); } public SphinxBoneWand(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/riseoftheeldrazi/SurrakarSpellblade.java b/Mage.Sets/src/mage/sets/riseoftheeldrazi/SurrakarSpellblade.java index 8471598d8fa..8e381c4cb3f 100644 --- a/Mage.Sets/src/mage/sets/riseoftheeldrazi/SurrakarSpellblade.java +++ b/Mage.Sets/src/mage/sets/riseoftheeldrazi/SurrakarSpellblade.java @@ -39,6 +39,8 @@ import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.cards.CardImpl; import mage.counters.CounterType; import mage.filter.FilterSpell; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; /** * @@ -49,8 +51,9 @@ public class SurrakarSpellblade extends CardImpl { private static final FilterSpell filter = new FilterSpell("instant or sorcery card"); static { - filter.getCardType().add(CardType.INSTANT); - filter.getCardType().add(CardType.SORCERY); + filter.add(Predicates.or( + new CardTypePredicate(CardType.INSTANT), + new CardTypePredicate(CardType.SORCERY))); } public SurrakarSpellblade(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/riseoftheeldrazi/SurrealMemoir.java b/Mage.Sets/src/mage/sets/riseoftheeldrazi/SurrealMemoir.java index f8c67c577e1..72317d69cdb 100644 --- a/Mage.Sets/src/mage/sets/riseoftheeldrazi/SurrealMemoir.java +++ b/Mage.Sets/src/mage/sets/riseoftheeldrazi/SurrealMemoir.java @@ -39,6 +39,7 @@ import mage.abilities.keyword.ReboundAbility; import mage.cards.Card; import mage.cards.CardImpl; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.Game; import mage.players.Player; @@ -90,7 +91,7 @@ class SurrealMemoirEffect extends OneShotEffect { Player player = game.getPlayer(source.getControllerId()); if (player != null) { FilterCard filter = new FilterCard("instant card"); - filter.getCardType().add(CardType.INSTANT); + filter.add(new CardTypePredicate(CardType.INSTANT)); Card[] cards = player.getGraveyard().getCards(filter, game).toArray(new Card[0]); if (cards.length > 0) { Random rnd = new Random(); diff --git a/Mage.Sets/src/mage/sets/saviorsofkamigawa/KatakiWarsWage.java b/Mage.Sets/src/mage/sets/saviorsofkamigawa/KatakiWarsWage.java index df646a7085c..8b6f4682216 100644 --- a/Mage.Sets/src/mage/sets/saviorsofkamigawa/KatakiWarsWage.java +++ b/Mage.Sets/src/mage/sets/saviorsofkamigawa/KatakiWarsWage.java @@ -40,8 +40,8 @@ import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.effects.common.SacrificeSourceUnlessPaysEffect; import mage.abilities.effects.common.continious.GainAbilityAllEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; /** * @@ -52,8 +52,7 @@ public class KatakiWarsWage extends CardImpl { private final static FilterPermanent filter = new FilterPermanent("artifacts"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.ARTIFACT)); } public KatakiWarsWage(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/saviorsofkamigawa/NikkoOnna.java b/Mage.Sets/src/mage/sets/saviorsofkamigawa/NikkoOnna.java index ea531d0c57c..72d9dcc5bfc 100644 --- a/Mage.Sets/src/mage/sets/saviorsofkamigawa/NikkoOnna.java +++ b/Mage.Sets/src/mage/sets/saviorsofkamigawa/NikkoOnna.java @@ -37,9 +37,9 @@ import mage.abilities.common.SpellCastTriggeredAbility; import mage.abilities.effects.common.DestroyTargetEffect; import mage.abilities.effects.common.ReturnToHandSourceEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; import mage.filter.common.FilterSpiritOrArcaneCard; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetPermanent; /** @@ -52,8 +52,7 @@ public class NikkoOnna extends CardImpl { private final static FilterPermanent filterTarget = new FilterPermanent("enchantment"); static { - filter.getCardType().add(CardType.ENCHANTMENT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.ENCHANTMENT)); } public NikkoOnna(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/saviorsofkamigawa/OboroBreezecaller.java b/Mage.Sets/src/mage/sets/saviorsofkamigawa/OboroBreezecaller.java index dcc1d7917d4..e27f8210f76 100644 --- a/Mage.Sets/src/mage/sets/saviorsofkamigawa/OboroBreezecaller.java +++ b/Mage.Sets/src/mage/sets/saviorsofkamigawa/OboroBreezecaller.java @@ -40,8 +40,8 @@ import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.effects.common.UntapTargetEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.common.TargetControlledPermanent; import mage.target.common.TargetLandPermanent; @@ -54,8 +54,7 @@ public class OboroBreezecaller extends CardImpl { private final static FilterControlledPermanent filter = new FilterControlledPermanent("land"); static { - filter.getCardType().add(CardType.LAND); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.LAND)); } public OboroBreezecaller(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/saviorsofkamigawa/SunderFromWithin.java b/Mage.Sets/src/mage/sets/saviorsofkamigawa/SunderFromWithin.java index 42242b1a957..c31db2ceff6 100644 --- a/Mage.Sets/src/mage/sets/saviorsofkamigawa/SunderFromWithin.java +++ b/Mage.Sets/src/mage/sets/saviorsofkamigawa/SunderFromWithin.java @@ -32,8 +32,9 @@ import mage.Constants.CardType; import mage.Constants.Rarity; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetPermanent; /** @@ -45,9 +46,9 @@ public class SunderFromWithin extends CardImpl { private final static FilterPermanent filter = new FilterPermanent("artifact or land"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.getCardType().add(CardType.LAND); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(Predicates.or( + new CardTypePredicate(CardType.ARTIFACT), + new CardTypePredicate(CardType.LAND))); } public SunderFromWithin(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/saviorsofkamigawa/YukiOnna.java b/Mage.Sets/src/mage/sets/saviorsofkamigawa/YukiOnna.java index 4fb0de4e27a..ed53e6551da 100644 --- a/Mage.Sets/src/mage/sets/saviorsofkamigawa/YukiOnna.java +++ b/Mage.Sets/src/mage/sets/saviorsofkamigawa/YukiOnna.java @@ -38,9 +38,9 @@ import mage.abilities.common.SpellCastTriggeredAbility; import mage.abilities.effects.common.DestroyTargetEffect; import mage.abilities.effects.common.ReturnToHandSourceEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; import mage.filter.common.FilterSpiritOrArcaneCard; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetPermanent; /** @@ -52,8 +52,7 @@ public class YukiOnna extends CardImpl { private final static FilterPermanent filterTarget = new FilterPermanent("artifact"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.ARTIFACT)); } public YukiOnna(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/AbunaAcolyte.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/AbunaAcolyte.java index 81ccbe5a91b..09028bf86ee 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/AbunaAcolyte.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/AbunaAcolyte.java @@ -37,8 +37,8 @@ import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.common.TapSourceCost; import mage.abilities.effects.common.PreventDamageTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.common.TargetCreatureOrPlayer; import mage.target.common.TargetCreaturePermanent; @@ -53,8 +53,7 @@ public class AbunaAcolyte extends CardImpl { final static FilterCreaturePermanent filter = new FilterCreaturePermanent("artifact creature"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.setScopeCardType(ComparisonScope.All); + filter.add(new CardTypePredicate(CardType.ARTIFACT)); } public AbunaAcolyte(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/BarrageOgre.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/BarrageOgre.java index 81c08816162..91d33a6ea55 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/BarrageOgre.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/BarrageOgre.java @@ -38,8 +38,8 @@ import mage.abilities.costs.common.SacrificeTargetCost; import mage.abilities.costs.common.TapSourceCost; import mage.abilities.effects.common.DamageTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.common.TargetControlledPermanent; import mage.target.common.TargetCreatureOrPlayer; @@ -53,8 +53,7 @@ public class BarrageOgre extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("an artifact"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.ARTIFACT)); } public BarrageOgre (UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/BellowingTanglewurm.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/BellowingTanglewurm.java index 6cb61e5455d..ea4472cb6b7 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/BellowingTanglewurm.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/BellowingTanglewurm.java @@ -38,8 +38,8 @@ import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.common.continious.GainAbilityControlledEffect; import mage.abilities.keyword.IntimidateAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; /** * @@ -49,8 +49,7 @@ public class BellowingTanglewurm extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("green creatures"); static { - filter.getCardType().add(CardType.CREATURE); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.CREATURE)); filter.setUseColor(true); filter.getColor().setGreen(true); } diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/BluntTheAssault.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/BluntTheAssault.java index 9e290f7832e..79eda671449 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/BluntTheAssault.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/BluntTheAssault.java @@ -37,7 +37,7 @@ import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.effects.common.GainLifeEffect; import mage.abilities.effects.common.PreventAllDamageEffect; import mage.cards.CardImpl; -import mage.filter.FilterPermanent; +import mage.filter.common.FilterCreaturePermanent; /** * @@ -45,11 +45,7 @@ import mage.filter.FilterPermanent; */ public class BluntTheAssault extends CardImpl { - private static final FilterPermanent filter = new FilterPermanent("creature on the battlefield"); - - static { - filter.getCardType().add(Constants.CardType.CREATURE); - } + private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature on the battlefield"); public BluntTheAssault (UUID ownerId) { super(ownerId, 113, "Blunt the Assault", Rarity.COMMON, new CardType[]{CardType.INSTANT}, "{3}{G}"); diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/DarksteelJuggernaut.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/DarksteelJuggernaut.java index 51ad7874520..6ea29579612 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/DarksteelJuggernaut.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/DarksteelJuggernaut.java @@ -40,17 +40,16 @@ import mage.abilities.effects.common.continious.SetPowerToughnessSourceEffect; import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.keyword.IndestructibleAbility; import mage.cards.CardImpl; -import mage.filter.FilterPermanent; +import mage.filter.common.FilterArtifactPermanent; /** * * @author Loki */ public class DarksteelJuggernaut extends CardImpl { - private static final FilterPermanent filter = new FilterPermanent("artifacts you control"); + private static final FilterArtifactPermanent filter = new FilterArtifactPermanent("artifacts you control"); static { - filter.getCardType().add(Constants.CardType.ARTIFACT); filter.setTargetController(Constants.TargetController.YOU); } diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/Embersmith.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/Embersmith.java index 510d34301de..d712fb4609b 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/Embersmith.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/Embersmith.java @@ -39,8 +39,8 @@ import mage.abilities.costs.Cost; import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.effects.OneShotEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterSpell; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; @@ -53,8 +53,7 @@ public class Embersmith extends CardImpl { private static final FilterSpell filter = new FilterSpell("an artifact spell"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.ARTIFACT)); } public Embersmith(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/Ferrovore.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/Ferrovore.java index 090989aff73..3a012cc0013 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/Ferrovore.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/Ferrovore.java @@ -40,8 +40,8 @@ import mage.abilities.costs.common.SacrificeTargetCost; import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.common.continious.BoostSourceEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.common.TargetControlledPermanent; /** @@ -49,11 +49,10 @@ import mage.target.common.TargetControlledPermanent; * @author Loki */ public class Ferrovore extends CardImpl { - private static FilterControlledPermanent filter = new FilterControlledPermanent("artifact"); + private static final FilterControlledPermanent filter = new FilterControlledPermanent("artifact"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.ARTIFACT)); } public Ferrovore (UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/GethLordOfTheVault.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/GethLordOfTheVault.java index 38bbc68ea28..23714430f07 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/GethLordOfTheVault.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/GethLordOfTheVault.java @@ -45,8 +45,9 @@ import mage.abilities.effects.OneShotEffect; import mage.abilities.keyword.IntimidateAbility; import mage.cards.Card; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.FilterCard; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; @@ -61,9 +62,9 @@ public class GethLordOfTheVault extends CardImpl { private static final FilterCard filter = new FilterCard("artifact or creature card from an opponent's graveyard"); static { - filter.getCardType().add(CardType.CREATURE); - filter.getCardType().add(CardType.ARTIFACT); - filter.setScopeCardType(ComparisonScope.Any); + filter.add(Predicates.or( + new CardTypePredicate(CardType.ARTIFACT), + new CardTypePredicate(CardType.CREATURE))); } public GethLordOfTheVault (UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/GlintHawk.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/GlintHawk.java index 1d8c9d68b56..1b48fd47c27 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/GlintHawk.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/GlintHawk.java @@ -40,6 +40,7 @@ import mage.abilities.effects.common.SacrificeSourceEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; @@ -81,7 +82,7 @@ class GlintHawkEffect extends OneShotEffect { static { filter = new FilterControlledPermanent(); - filter.getCardType().add(CardType.ARTIFACT); + filter.add(new CardTypePredicate(CardType.ARTIFACT)); } GlintHawkEffect ( ) { diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/GolemArtisan.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/GolemArtisan.java index 2a32d62331d..1415e279e17 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/GolemArtisan.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/GolemArtisan.java @@ -44,8 +44,8 @@ import mage.abilities.keyword.TrampleAbility; import mage.cards.CardImpl; import mage.choices.Choice; import mage.choices.ChoiceImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; @@ -64,9 +64,8 @@ public class GolemArtisan extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("artifact creature"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.getCardType().add(CardType.CREATURE); - filter.setScopeCardType(Filter.ComparisonScope.All); + filter.add(new CardTypePredicate(CardType.ARTIFACT)); + filter.add(new CardTypePredicate(CardType.CREATURE)); } public GolemArtisan(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/GolemFoundry.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/GolemFoundry.java index 822644a3e4d..d96452f33a4 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/GolemFoundry.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/GolemFoundry.java @@ -40,8 +40,8 @@ import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.cards.CardImpl; import mage.counters.CounterType; -import mage.filter.Filter; import mage.filter.FilterSpell; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.permanent.token.Token; /** @@ -52,8 +52,7 @@ public class GolemFoundry extends CardImpl { private static final FilterSpell filter = new FilterSpell("an artifact spell"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.ARTIFACT)); } public GolemFoundry (UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/GrandArchitect.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/GrandArchitect.java index ff951a52ce0..c4374447de3 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/GrandArchitect.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/GrandArchitect.java @@ -52,9 +52,9 @@ import mage.abilities.effects.common.BasicManaEffect; import mage.abilities.effects.common.continious.BoostControlledEffect; import mage.abilities.mana.ManaAbility; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.target.TargetPermanent; @@ -72,8 +72,7 @@ public class GrandArchitect extends CardImpl { static { boostFilter.getColor().setBlue(true); boostFilter.setUseColor(true); - targetFilter.getCardType().add(CardType.ARTIFACT); - targetFilter.setScopeCardType(ComparisonScope.All); + targetFilter.add(new CardTypePredicate(CardType.ARTIFACT)); } public GrandArchitect(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/HaltOrder.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/HaltOrder.java index 012c08716b5..3464b4505ed 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/HaltOrder.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/HaltOrder.java @@ -34,8 +34,8 @@ import mage.Constants.Rarity; import mage.abilities.effects.common.CounterTargetEffect; import mage.abilities.effects.common.DrawCardControllerEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterSpell; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetSpell; /** @@ -47,8 +47,7 @@ public class HaltOrder extends CardImpl { private static final FilterSpell filter = new FilterSpell("artifact spell"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.ARTIFACT)); } public HaltOrder (UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/HandOfThePraetors.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/HandOfThePraetors.java index f4e0cf7cb7a..d2772b2814c 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/HandOfThePraetors.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/HandOfThePraetors.java @@ -43,9 +43,9 @@ import mage.filter.common.FilterCreaturePermanent; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.common.continious.BoostControlledEffect; import mage.abilities.common.SpellCastTriggeredAbility; -import mage.filter.Filter; import mage.filter.FilterSpell; import mage.filter.predicate.mageobject.AbilityPredicate; +import mage.filter.predicate.mageobject.CardTypePredicate; /** * @@ -59,8 +59,7 @@ public class HandOfThePraetors extends CardImpl { static { filter.add(new AbilityPredicate(InfectAbility.class)); filterSpell.add(new AbilityPredicate(InfectAbility.class)); - filterSpell.getCardType().add(CardType.CREATURE); - filterSpell.setScopeCardType(Filter.ComparisonScope.Any); + filterSpell.add(new CardTypePredicate(CardType.CREATURE)); } public HandOfThePraetors (UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/HoardSmelterDragon.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/HoardSmelterDragon.java index b8ff6198ad6..d88df9cca04 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/HoardSmelterDragon.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/HoardSmelterDragon.java @@ -43,6 +43,7 @@ import mage.abilities.keyword.FlyingAbility; import mage.cards.Card; import mage.cards.CardImpl; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.target.TargetPermanent; @@ -52,10 +53,10 @@ import mage.target.TargetPermanent; * @author Loki */ public class HoardSmelterDragon extends CardImpl { - private static FilterPermanent filter = new FilterPermanent("artifact"); + private static final FilterPermanent filter = new FilterPermanent("artifact"); static { - filter.getCardType().add(CardType.ARTIFACT); + filter.add(new CardTypePredicate(CardType.ARTIFACT)); } public HoardSmelterDragon (UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/IndomitableArchangel.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/IndomitableArchangel.java index 9a052edaa50..113ae6b5423 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/IndomitableArchangel.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/IndomitableArchangel.java @@ -44,18 +44,19 @@ import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.ShroudAbility; import mage.cards.CardImpl; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; /** * @author nantuko */ public class IndomitableArchangel extends CardImpl { - private final String text = "Metalcraft - Artifacts you control have shroud as long as you control three or more artifacts."; + private static final String rule = "Metalcraft - Artifacts you control have shroud as long as you control three or more artifacts."; - private static FilterPermanent filter = new FilterPermanent("Artifacts"); + private static final FilterPermanent filter = new FilterPermanent("Artifacts"); static { - filter.getCardType().add(CardType.ARTIFACT); + filter.add(new CardTypePredicate(CardType.ARTIFACT)); } public IndomitableArchangel(UUID ownerId) { @@ -67,7 +68,7 @@ public class IndomitableArchangel extends CardImpl { this.toughness = new MageInt(4); this.addAbility(FlyingAbility.getInstance()); ContinuousEffect gainAbilityEffect = new GainAbilityControlledEffect(ShroudAbility.getInstance(), Duration.WhileOnBattlefield, filter); - ConditionalContinousEffect effect = new ConditionalContinousEffect(gainAbilityEffect, MetalcraftCondition.getInstance(), text); + ConditionalContinousEffect effect = new ConditionalContinousEffect(gainAbilityEffect, MetalcraftCondition.getInstance(), rule); this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect)); } diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/KuldothaRebirth.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/KuldothaRebirth.java index bfb52771139..2177c5f5a01 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/KuldothaRebirth.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/KuldothaRebirth.java @@ -33,8 +33,8 @@ import mage.Constants.Rarity; import mage.abilities.costs.common.SacrificeTargetCost; import mage.abilities.effects.common.CreateTokenEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.permanent.token.GoblinToken; import mage.target.common.TargetControlledPermanent; @@ -48,8 +48,7 @@ public class KuldothaRebirth extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("an artifact"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.ARTIFACT)); } public KuldothaRebirth (UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/Lifesmith.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/Lifesmith.java index 0f3b7e00dc4..c3e5cbbbeb4 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/Lifesmith.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/Lifesmith.java @@ -39,8 +39,8 @@ import mage.abilities.costs.Cost; import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.effects.OneShotEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterSpell; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.Game; import mage.players.Player; @@ -52,8 +52,7 @@ public class Lifesmith extends CardImpl { private static final FilterSpell filter = new FilterSpell("an artifact spell"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.ARTIFACT)); } public Lifesmith (UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/Myrsmith.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/Myrsmith.java index c44eeddff26..de00f528da9 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/Myrsmith.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/Myrsmith.java @@ -39,8 +39,8 @@ import mage.abilities.costs.Cost; import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.effects.OneShotEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterSpell; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.Game; import mage.game.permanent.token.MyrToken; @@ -52,8 +52,7 @@ public class Myrsmith extends CardImpl { private static final FilterSpell filter = new FilterSpell("an artifact spell"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.ARTIFACT)); } public Myrsmith (UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/OxiddaDaredevil.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/OxiddaDaredevil.java index 798940c6fe8..1f4570c18c1 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/OxiddaDaredevil.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/OxiddaDaredevil.java @@ -38,8 +38,8 @@ import mage.abilities.costs.common.SacrificeTargetCost; import mage.abilities.effects.common.continious.GainAbilitySourceEffect; import mage.abilities.keyword.HasteAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.common.TargetControlledPermanent; import java.util.UUID; @@ -49,11 +49,10 @@ import java.util.UUID; * @author Loki */ public class OxiddaDaredevil extends CardImpl { - private static FilterControlledPermanent filter = new FilterControlledPermanent("an artifact"); + private static final FilterControlledPermanent filter = new FilterControlledPermanent("an artifact"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.ARTIFACT)); } public OxiddaDaredevil (UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/Painsmith.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/Painsmith.java index dc5a3c5c5e5..3204d43ff8b 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/Painsmith.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/Painsmith.java @@ -38,8 +38,8 @@ import mage.abilities.effects.common.continious.BoostTargetEffect; import mage.abilities.effects.common.continious.GainAbilityTargetEffect; import mage.abilities.keyword.DeathtouchAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterSpell; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.common.TargetCreaturePermanent; /** @@ -50,8 +50,7 @@ public class Painsmith extends CardImpl { private static final FilterSpell filter = new FilterSpell("an artifact spell"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.ARTIFACT)); } public Painsmith (UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/PrecursorGolem.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/PrecursorGolem.java index bb1756fee7e..3bb22ea164f 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/PrecursorGolem.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/PrecursorGolem.java @@ -51,6 +51,8 @@ import mage.target.Target; import mage.target.targetpointer.FixedTarget; import java.util.UUID; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; /** * @author nantuko @@ -87,9 +89,9 @@ class PrecursorGolemCopyTriggeredAbility extends TriggeredAbilityImpl { - private static FilterPermanent filter = new FilterPermanent("artifact or enchantment"); + private static final FilterPermanent filter = new FilterPermanent("artifact or enchantment"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.getCardType().add(CardType.ENCHANTMENT); - filter.setScopeCardType(ComparisonScope.Any); + filter.add(Predicates.or( + new CardTypePredicate(CardType.ARTIFACT), + new CardTypePredicate(CardType.ENCHANTMENT))); } public RevokeExistence (UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/Riddlesmith.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/Riddlesmith.java index d09b9fb0ed2..fad5a6e39f1 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/Riddlesmith.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/Riddlesmith.java @@ -35,8 +35,8 @@ import mage.MageInt; import mage.abilities.common.SpellCastTriggeredAbility; import mage.abilities.effects.common.DrawDiscardControllerEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterSpell; +import mage.filter.predicate.mageobject.CardTypePredicate; /** * @@ -46,8 +46,7 @@ public class Riddlesmith extends CardImpl { private static final FilterSpell filter = new FilterSpell("an artifact spell"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.ARTIFACT)); } public Riddlesmith (UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/ScrapdiverSerpent.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/ScrapdiverSerpent.java index 8f37c3fb543..ae285bacf81 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/ScrapdiverSerpent.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/ScrapdiverSerpent.java @@ -43,8 +43,8 @@ import mage.abilities.effects.Effect; import mage.abilities.effects.common.continious.GainAbilitySourceEffect; import mage.abilities.keyword.UnblockableAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.Game; /** @@ -53,13 +53,12 @@ import mage.game.Game; */ public class ScrapdiverSerpent extends CardImpl { - private static final String text = "Scrapdiver Serpent is unblockable as long as defending player controls an artifact"; + private static final String rule = "Scrapdiver Serpent is unblockable as long as defending player controls an artifact"; private static final FilterPermanent filter = new FilterPermanent(); static { - filter.getCardType().add(Constants.CardType.ARTIFACT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(Constants.CardType.ARTIFACT)); } private class DefendingPlayerControlsArtifact implements Condition { @@ -81,7 +80,7 @@ public class ScrapdiverSerpent extends CardImpl { this.power = new MageInt(5); this.toughness = new MageInt(5); ContinuousEffect gainAbility = new GainAbilitySourceEffect(UnblockableAbility.getInstance(), Constants.Duration.WhileOnBattlefield); - Effect effect = new ConditionalContinousEffect(gainAbility, new DefendingPlayerControlsArtifact(), text); + Effect effect = new ConditionalContinousEffect(gainAbility, new DefendingPlayerControlsArtifact(), rule); this.addAbility(new SimpleStaticAbility(Constants.Zone.BATTLEFIELD, effect)); } diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/ShapeAnew.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/ShapeAnew.java index 227e03c2136..0ad082aca84 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/ShapeAnew.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/ShapeAnew.java @@ -41,6 +41,7 @@ import mage.cards.CardImpl; import mage.cards.Cards; import mage.cards.CardsImpl; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; @@ -55,7 +56,7 @@ public class ShapeAnew extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("an artifact"); static { - filter.getCardType().add(CardType.ARTIFACT); + filter.add(new CardTypePredicate(CardType.ARTIFACT)); } public ShapeAnew (UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/SliceinTwain.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/SliceinTwain.java index 5c58186aa4c..8245e9868a2 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/SliceinTwain.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/SliceinTwain.java @@ -34,8 +34,9 @@ import mage.Constants.Rarity; import mage.abilities.effects.common.DestroyTargetEffect; import mage.abilities.effects.common.DrawCardControllerEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetPermanent; /** @@ -46,9 +47,9 @@ public class SliceinTwain extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("artifact or enchantment"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.getCardType().add(CardType.ENCHANTMENT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(Predicates.or( + new CardTypePredicate(CardType.ARTIFACT), + new CardTypePredicate(CardType.ENCHANTMENT))); } public SliceinTwain (UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/SylvokReplica.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/SylvokReplica.java index 15499be4fb2..7103d0eee36 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/SylvokReplica.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/SylvokReplica.java @@ -39,8 +39,9 @@ import mage.abilities.costs.common.SacrificeSourceCost; import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.FilterPermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetPermanent; /** @@ -48,12 +49,12 @@ import mage.target.TargetPermanent; * @author Loki */ public class SylvokReplica extends CardImpl { - private static FilterPermanent filter = new FilterPermanent("artifact or enchantment"); + private static final FilterPermanent filter = new FilterPermanent("artifact or enchantment"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.getCardType().add(CardType.ENCHANTMENT); - filter.setScopeCardType(ComparisonScope.Any); + filter.add(Predicates.or( + new CardTypePredicate(CardType.ARTIFACT), + new CardTypePredicate(CardType.ENCHANTMENT))); } public SylvokReplica (UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/TemperedSteel.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/TemperedSteel.java index 06e3b78d6a2..e08a1177c3d 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/TemperedSteel.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/TemperedSteel.java @@ -37,19 +37,18 @@ import mage.Constants.Rarity; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.common.continious.BoostControlledEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; /** * * @author Loki */ public class TemperedSteel extends CardImpl { - private static FilterCreaturePermanent filter = new FilterCreaturePermanent("Artifact creatures"); + private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Artifact creatures"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.setScopeCardType(Filter.ComparisonScope.All); + filter.add(new CardTypePredicate(CardType.ARTIFACT)); } public TemperedSteel (UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/ThroneofGeth.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/ThroneofGeth.java index 4f4af272a81..c25f7c90a80 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/ThroneofGeth.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/ThroneofGeth.java @@ -38,8 +38,8 @@ import mage.abilities.costs.common.SacrificeTargetCost; import mage.abilities.costs.common.TapSourceCost; import mage.abilities.effects.common.counter.ProliferateEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.common.TargetControlledPermanent; /** @@ -47,11 +47,10 @@ import mage.target.common.TargetControlledPermanent; * @author Loki */ public class ThroneofGeth extends CardImpl { - private static FilterControlledPermanent filter = new FilterControlledPermanent("an artifact"); + private static final FilterControlledPermanent filter = new FilterControlledPermanent("an artifact"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.ARTIFACT)); } public ThroneofGeth (UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/TrinketMage.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/TrinketMage.java index eedf04cffec..0d409da8235 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/TrinketMage.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/TrinketMage.java @@ -38,6 +38,7 @@ import mage.cards.CardImpl; import mage.filter.Filter; import mage.filter.FilterCard; import mage.filter.predicate.mageobject.ConvertedManaCostPredicate; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.common.TargetCardInLibrary; import java.util.UUID; @@ -50,7 +51,7 @@ public class TrinketMage extends CardImpl { private static final FilterCard filter = new FilterCard("an artifact card with converted mana cost 1 or less"); static { - filter.getCardType().add(CardType.ARTIFACT); + filter.add(new CardTypePredicate(CardType.ARTIFACT)); filter.add(new ConvertedManaCostPredicate(Filter.ComparisonType.LessThan, 2)); } diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/TumbleMagnet.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/TumbleMagnet.java index fc1b6ca54a7..37ff7dd7cfd 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/TumbleMagnet.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/TumbleMagnet.java @@ -37,12 +37,13 @@ import mage.abilities.common.EntersBattlefieldAbility; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.common.RemoveCountersSourceCost; import mage.abilities.costs.common.TapSourceCost; -import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.abilities.effects.common.TapTargetEffect; +import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.cards.CardImpl; import mage.counters.CounterType; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetPermanent; /** @@ -53,9 +54,9 @@ public class TumbleMagnet extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("artifact or creature"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.getCardType().add(CardType.CREATURE); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(Predicates.or( + new CardTypePredicate(CardType.ARTIFACT), + new CardTypePredicate(CardType.CREATURE))); } public TumbleMagnet (UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/VedalkenCertarch.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/VedalkenCertarch.java index 2d0ba5ab938..dd94fbaeb28 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/VedalkenCertarch.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/VedalkenCertarch.java @@ -37,8 +37,9 @@ import mage.abilities.common.MetalcraftActivatedAbility; import mage.abilities.costs.common.TapSourceCost; import mage.abilities.effects.common.TapTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.FilterPermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetPermanent; import java.util.UUID; @@ -48,13 +49,13 @@ import java.util.UUID; * @author Loki */ public class VedalkenCertarch extends CardImpl { - private static FilterPermanent filter = new FilterPermanent("artifact, creature, or land"); + private static final FilterPermanent filter = new FilterPermanent("artifact, creature, or land"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.getCardType().add(CardType.CREATURE); - filter.getCardType().add(CardType.LAND); - filter.setScopeCardType(ComparisonScope.Any); + filter.add(Predicates.or( + new CardTypePredicate(CardType.ARTIFACT), + new CardTypePredicate(CardType.CREATURE), + new CardTypePredicate(CardType.LAND))); } public VedalkenCertarch (UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/shadowmoor/Cursecatcher.java b/Mage.Sets/src/mage/sets/shadowmoor/Cursecatcher.java index 76281c82f9b..9ee18fb19c7 100644 --- a/Mage.Sets/src/mage/sets/shadowmoor/Cursecatcher.java +++ b/Mage.Sets/src/mage/sets/shadowmoor/Cursecatcher.java @@ -37,8 +37,9 @@ import mage.abilities.costs.common.SacrificeSourceCost; import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.effects.common.CounterUnlessPaysEffect; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.FilterSpell; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetSpell; /** @@ -50,9 +51,9 @@ public class Cursecatcher extends CardImpl { private static final FilterSpell filter = new FilterSpell("instant or sorcery spell"); static { - filter.getCardType().add(CardType.INSTANT); - filter.getCardType().add(CardType.SORCERY); - filter.setScopeCardType(ComparisonScope.Any); + filter.add(Predicates.or( + new CardTypePredicate(CardType.INSTANT), + new CardTypePredicate(CardType.SORCERY))); } public Cursecatcher(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/shadowmoor/ElvishHexhunter.java b/Mage.Sets/src/mage/sets/shadowmoor/ElvishHexhunter.java index 2dab532c097..68ca0b53932 100644 --- a/Mage.Sets/src/mage/sets/shadowmoor/ElvishHexhunter.java +++ b/Mage.Sets/src/mage/sets/shadowmoor/ElvishHexhunter.java @@ -40,6 +40,7 @@ import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetPermanent; /** @@ -51,7 +52,7 @@ public class ElvishHexhunter extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("enchantment"); static { - filter.getCardType().add(CardType.ENCHANTMENT); + filter.add(new CardTypePredicate(CardType.ENCHANTMENT)); } public ElvishHexhunter(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/shadowmoor/GutturalResponse.java b/Mage.Sets/src/mage/sets/shadowmoor/GutturalResponse.java index 1c72319aa45..b34b20069d4 100644 --- a/Mage.Sets/src/mage/sets/shadowmoor/GutturalResponse.java +++ b/Mage.Sets/src/mage/sets/shadowmoor/GutturalResponse.java @@ -33,6 +33,7 @@ import mage.Constants.Rarity; import mage.abilities.effects.common.CounterTargetEffect; import mage.cards.CardImpl; import mage.filter.FilterSpell; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetSpell; /** @@ -44,7 +45,7 @@ public class GutturalResponse extends CardImpl { private static final FilterSpell filter = new FilterSpell("blue instant spell"); static { - filter.getCardType().add(CardType.INSTANT); + filter.add(new CardTypePredicate(CardType.INSTANT)); filter.getColor().setBlue(true); filter.setUseColor(true); } diff --git a/Mage.Sets/src/mage/sets/shadowmoor/ToilToRenown.java b/Mage.Sets/src/mage/sets/shadowmoor/ToilToRenown.java index 5f4409ffacc..b11340fb3b9 100644 --- a/Mage.Sets/src/mage/sets/shadowmoor/ToilToRenown.java +++ b/Mage.Sets/src/mage/sets/shadowmoor/ToilToRenown.java @@ -35,6 +35,8 @@ import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.effects.common.GainLifeEffect; import mage.cards.CardImpl; import mage.filter.FilterPermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; /** * @@ -46,9 +48,10 @@ public class ToilToRenown extends CardImpl { static { filter.setTapped(true); - filter.getCardType().add(CardType.ARTIFACT); - filter.getCardType().add(CardType.CREATURE); - filter.getCardType().add(CardType.LAND); + filter.add(Predicates.or( + new CardTypePredicate(CardType.ARTIFACT), + new CardTypePredicate(CardType.CREATURE), + new CardTypePredicate(CardType.LAND))); filter.setTargetController(TargetController.YOU); } diff --git a/Mage.Sets/src/mage/sets/shardsofalara/AjaniVengeant.java b/Mage.Sets/src/mage/sets/shardsofalara/AjaniVengeant.java index 42b724685d5..d3068b6d677 100644 --- a/Mage.Sets/src/mage/sets/shardsofalara/AjaniVengeant.java +++ b/Mage.Sets/src/mage/sets/shardsofalara/AjaniVengeant.java @@ -42,6 +42,7 @@ import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.cards.CardImpl; import mage.counters.CounterType; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetPermanent; import mage.target.TargetPlayer; import mage.target.common.TargetCreatureOrPlayer; @@ -54,7 +55,7 @@ public class AjaniVengeant extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("lands"); static { - filter.getCardType().add(CardType.LAND); + filter.add(new CardTypePredicate(CardType.LAND)); } public AjaniVengeant(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/shardsofalara/BantPanorama.java b/Mage.Sets/src/mage/sets/shardsofalara/BantPanorama.java index 54ac1989f3e..efe738fa304 100644 --- a/Mage.Sets/src/mage/sets/shardsofalara/BantPanorama.java +++ b/Mage.Sets/src/mage/sets/shardsofalara/BantPanorama.java @@ -42,6 +42,7 @@ import mage.abilities.mana.ColorlessManaAbility; import mage.cards.CardImpl; import mage.filter.FilterCard; import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.filter.predicate.mageobject.SupertypePredicate; import mage.target.common.TargetCardInLibrary; @@ -55,7 +56,7 @@ public class BantPanorama extends CardImpl { private static final FilterCard filter = new FilterCard("a basic Forest, Plains, or Island card"); static { - filter.getCardType().add(CardType.LAND); + filter.add(new CardTypePredicate(CardType.LAND)); filter.add(new SupertypePredicate("Basic")); filter.add(Predicates.or( new SubtypePredicate("Forest"), diff --git a/Mage.Sets/src/mage/sets/shardsofalara/DispellersCapsule.java b/Mage.Sets/src/mage/sets/shardsofalara/DispellersCapsule.java index 18f61c1169d..76e63e6e337 100644 --- a/Mage.Sets/src/mage/sets/shardsofalara/DispellersCapsule.java +++ b/Mage.Sets/src/mage/sets/shardsofalara/DispellersCapsule.java @@ -39,8 +39,9 @@ import mage.abilities.costs.common.SacrificeSourceCost; import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.FilterPermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetPermanent; /** @@ -48,12 +49,12 @@ import mage.target.TargetPermanent; * @author Loki */ public class DispellersCapsule extends CardImpl { - private static FilterPermanent filter = new FilterPermanent("artifact or enchantment"); + private static final FilterPermanent filter = new FilterPermanent("artifact or enchantment"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.getCardType().add(CardType.ENCHANTMENT); - filter.setScopeCardType(ComparisonScope.Any); + filter.add(Predicates.or( + new CardTypePredicate(CardType.ARTIFACT), + new CardTypePredicate(CardType.ENCHANTMENT))); } public DispellersCapsule (UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/shardsofalara/ElspethKnightErrant.java b/Mage.Sets/src/mage/sets/shardsofalara/ElspethKnightErrant.java index faf6f0ada37..862c78c1e72 100644 --- a/Mage.Sets/src/mage/sets/shardsofalara/ElspethKnightErrant.java +++ b/Mage.Sets/src/mage/sets/shardsofalara/ElspethKnightErrant.java @@ -48,8 +48,9 @@ import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.IndestructibleAbility; import mage.cards.CardImpl; import mage.counters.CounterType; -import mage.filter.Filter.ComparisonScope; import mage.filter.FilterPermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.game.permanent.token.SoldierToken; @@ -99,11 +100,11 @@ class ElspethKnightErrantEffect extends ContinuousEffectImpl { private static final FilterCard filter = new FilterCard("a basic Plains, Island, or Swamp"); static { - filter.getCardType().add(CardType.LAND); + filter.add(new CardTypePredicate(CardType.LAND)); filter.add(new SupertypePredicate("Basic")); filter.add(Predicates.or( new SubtypePredicate("Plains"), diff --git a/Mage.Sets/src/mage/sets/shardsofalara/FiligreeSages.java b/Mage.Sets/src/mage/sets/shardsofalara/FiligreeSages.java index 7748e87ee14..af3bca95348 100644 --- a/Mage.Sets/src/mage/sets/shardsofalara/FiligreeSages.java +++ b/Mage.Sets/src/mage/sets/shardsofalara/FiligreeSages.java @@ -38,8 +38,8 @@ import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.common.UntapTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetPermanent; /** @@ -47,11 +47,10 @@ import mage.target.TargetPermanent; * @author Loki */ public class FiligreeSages extends CardImpl { - private static FilterPermanent filter = new FilterPermanent("artifact"); + private static final FilterPermanent filter = new FilterPermanent("artifact"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.ARTIFACT)); } public FiligreeSages (UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/shardsofalara/GrixisPanorama.java b/Mage.Sets/src/mage/sets/shardsofalara/GrixisPanorama.java index 03209714448..d1bcc477385 100644 --- a/Mage.Sets/src/mage/sets/shardsofalara/GrixisPanorama.java +++ b/Mage.Sets/src/mage/sets/shardsofalara/GrixisPanorama.java @@ -42,6 +42,7 @@ import mage.abilities.mana.ColorlessManaAbility; import mage.cards.CardImpl; import mage.filter.FilterCard; import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.filter.predicate.mageobject.SupertypePredicate; import mage.target.common.TargetCardInLibrary; @@ -55,7 +56,7 @@ public class GrixisPanorama extends CardImpl { private static final FilterCard filter = new FilterCard("a basic Island, Swamp, or Mountain card"); static { - filter.getCardType().add(CardType.LAND); + filter.add(new CardTypePredicate(CardType.LAND)); filter.add(new SupertypePredicate("Basic")); filter.add(Predicates.or( new SubtypePredicate("Island"), diff --git a/Mage.Sets/src/mage/sets/shardsofalara/JundPanorama.java b/Mage.Sets/src/mage/sets/shardsofalara/JundPanorama.java index 8bd1f54365f..c61c45d9149 100644 --- a/Mage.Sets/src/mage/sets/shardsofalara/JundPanorama.java +++ b/Mage.Sets/src/mage/sets/shardsofalara/JundPanorama.java @@ -43,6 +43,7 @@ import mage.abilities.mana.ColorlessManaAbility; import mage.cards.CardImpl; import mage.filter.FilterCard; import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.filter.predicate.mageobject.SupertypePredicate; import mage.target.common.TargetCardInLibrary; @@ -56,7 +57,7 @@ public class JundPanorama extends CardImpl { private static final FilterCard filter = new FilterCard("a basic Swamp, Mountain, or Forest card"); static { - filter.getCardType().add(CardType.LAND); + filter.add(new CardTypePredicate(CardType.LAND)); filter.add(new SupertypePredicate("Basic")); filter.add(Predicates.or( new SubtypePredicate("Swamp"), diff --git a/Mage.Sets/src/mage/sets/shardsofalara/MasterOfEtherium.java b/Mage.Sets/src/mage/sets/shardsofalara/MasterOfEtherium.java index 6a3d7722d3f..10995dfa634 100644 --- a/Mage.Sets/src/mage/sets/shardsofalara/MasterOfEtherium.java +++ b/Mage.Sets/src/mage/sets/shardsofalara/MasterOfEtherium.java @@ -38,9 +38,9 @@ import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.effects.common.continious.BoostControlledEffect; import mage.abilities.effects.common.continious.SetPowerToughnessSourceEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; /** * @@ -52,10 +52,8 @@ public class MasterOfEtherium extends CardImpl { private final static FilterCreaturePermanent filterBoosted = new FilterCreaturePermanent("artifact creatures you control"); static { - filterCounted.getCardType().add(CardType.ARTIFACT); - filterCounted.setScopeCardType(Filter.ComparisonScope.Any); - filterBoosted.getCardType().add(CardType.ARTIFACT); - filterBoosted.setScopeCardType(Filter.ComparisonScope.All); + filterCounted.add(new CardTypePredicate(CardType.ARTIFACT)); + filterBoosted.add(new CardTypePredicate(CardType.ARTIFACT)); filterBoosted.setTargetController(Constants.TargetController.YOU); } diff --git a/Mage.Sets/src/mage/sets/shardsofalara/NayaPanorama.java b/Mage.Sets/src/mage/sets/shardsofalara/NayaPanorama.java index 841592f2281..d562ddab5f5 100644 --- a/Mage.Sets/src/mage/sets/shardsofalara/NayaPanorama.java +++ b/Mage.Sets/src/mage/sets/shardsofalara/NayaPanorama.java @@ -42,6 +42,7 @@ import mage.abilities.mana.ColorlessManaAbility; import mage.cards.CardImpl; import mage.filter.FilterCard; import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.filter.predicate.mageobject.SupertypePredicate; import mage.target.common.TargetCardInLibrary; @@ -55,7 +56,7 @@ public class NayaPanorama extends CardImpl { private static final FilterCard filter = new FilterCard("a basic Mountain, Forest, or Plains card"); static { - filter.getCardType().add(CardType.LAND); + filter.add(new CardTypePredicate(CardType.LAND)); filter.add(new SupertypePredicate("Basic")); filter.add(Predicates.or( new SubtypePredicate("Mountain"), diff --git a/Mage.Sets/src/mage/sets/shardsofalara/RangerOfEos.java b/Mage.Sets/src/mage/sets/shardsofalara/RangerOfEos.java index b8f463d6626..1edef336abf 100644 --- a/Mage.Sets/src/mage/sets/shardsofalara/RangerOfEos.java +++ b/Mage.Sets/src/mage/sets/shardsofalara/RangerOfEos.java @@ -37,6 +37,7 @@ import mage.abilities.effects.common.search.SearchLibraryRevealPutInHandEffect; import mage.cards.CardImpl; import mage.filter.Filter.ComparisonType; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.filter.predicate.mageobject.ConvertedManaCostPredicate; import mage.target.common.TargetCardInLibrary; @@ -49,7 +50,7 @@ public class RangerOfEos extends CardImpl { private static final FilterCard filter = new FilterCard("creature cards with converted mana cost 1 or less"); static { - filter.getCardType().add(CardType.CREATURE); + filter.add(new CardTypePredicate(CardType.CREATURE)); filter.add(new ConvertedManaCostPredicate(ComparisonType.LessThan, 2)); } diff --git a/Mage.Sets/src/mage/sets/tempest/Aftershock.java b/Mage.Sets/src/mage/sets/tempest/Aftershock.java index f9acf4954a9..efba5d027bb 100644 --- a/Mage.Sets/src/mage/sets/tempest/Aftershock.java +++ b/Mage.Sets/src/mage/sets/tempest/Aftershock.java @@ -33,8 +33,9 @@ import mage.Constants.Rarity; import mage.abilities.effects.common.DamageControllerEffect; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetPermanent; /** @@ -46,10 +47,10 @@ public class Aftershock extends CardImpl { private final static FilterPermanent filter = new FilterPermanent("artifact, creature, or land"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.getCardType().add(CardType.CREATURE); - filter.getCardType().add(CardType.LAND); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(Predicates.or( + new CardTypePredicate(CardType.ARTIFACT), + new CardTypePredicate(CardType.CREATURE), + new CardTypePredicate(CardType.LAND))); } public Aftershock(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/tempest/AltarOfDementia.java b/Mage.Sets/src/mage/sets/tempest/AltarOfDementia.java index f8ea0999f8e..66869a56a3b 100644 --- a/Mage.Sets/src/mage/sets/tempest/AltarOfDementia.java +++ b/Mage.Sets/src/mage/sets/tempest/AltarOfDementia.java @@ -39,6 +39,7 @@ import mage.abilities.effects.OneShotEffect; import mage.cards.Card; import mage.cards.CardImpl; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.Game; import mage.players.Player; import mage.target.TargetPlayer; @@ -53,7 +54,7 @@ public class AltarOfDementia extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("creature"); static { - filter.getCardType().add(CardType.CREATURE); + filter.add(new CardTypePredicate(CardType.CREATURE)); } public AltarOfDementia(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/tempest/Auratog.java b/Mage.Sets/src/mage/sets/tempest/Auratog.java index 0b79e9f361d..ec0800abbb2 100644 --- a/Mage.Sets/src/mage/sets/tempest/Auratog.java +++ b/Mage.Sets/src/mage/sets/tempest/Auratog.java @@ -37,8 +37,8 @@ import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.common.SacrificeTargetCost; import mage.abilities.effects.common.continious.BoostSourceEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.common.TargetControlledPermanent; /** @@ -50,8 +50,7 @@ public class Auratog extends CardImpl { private final static FilterControlledPermanent filter = new FilterControlledPermanent("an enchantment"); static { - filter.getCardType().add(CardType.ENCHANTMENT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.ENCHANTMENT)); } public Auratog(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/tempest/CloudchaserEagle.java b/Mage.Sets/src/mage/sets/tempest/CloudchaserEagle.java index 5b7584bff87..ee1950f6409 100644 --- a/Mage.Sets/src/mage/sets/tempest/CloudchaserEagle.java +++ b/Mage.Sets/src/mage/sets/tempest/CloudchaserEagle.java @@ -36,8 +36,8 @@ import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.effects.common.DestroyTargetEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetPermanent; /** @@ -49,8 +49,7 @@ public class CloudchaserEagle extends CardImpl { private final static FilterPermanent filter = new FilterPermanent("enchantment"); static { - filter.getCardType().add(CardType.ENCHANTMENT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.ENCHANTMENT)); } public CloudchaserEagle(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/tempest/Disenchant.java b/Mage.Sets/src/mage/sets/tempest/Disenchant.java index b4420965dc3..d6bc1fc3c5b 100644 --- a/Mage.Sets/src/mage/sets/tempest/Disenchant.java +++ b/Mage.Sets/src/mage/sets/tempest/Disenchant.java @@ -32,8 +32,9 @@ import mage.Constants.CardType; import mage.Constants.Rarity; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetPermanent; /** @@ -45,9 +46,9 @@ public class Disenchant extends CardImpl { private final static FilterPermanent filter = new FilterPermanent("artifact or enchantment"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.getCardType().add(CardType.ENCHANTMENT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(Predicates.or( + new CardTypePredicate(CardType.ARTIFACT), + new CardTypePredicate(CardType.ENCHANTMENT))); } public Disenchant(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/tempest/Earthcraft.java b/Mage.Sets/src/mage/sets/tempest/Earthcraft.java index 909fed63ec0..32bf3bee8b3 100644 --- a/Mage.Sets/src/mage/sets/tempest/Earthcraft.java +++ b/Mage.Sets/src/mage/sets/tempest/Earthcraft.java @@ -37,9 +37,9 @@ import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.common.TapTargetCost; import mage.abilities.effects.common.UntapTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.filter.predicate.mageobject.SupertypePredicate; import mage.target.common.TargetControlledCreaturePermanent; import mage.target.common.TargetControlledPermanent; @@ -55,8 +55,7 @@ public class Earthcraft extends CardImpl { static { filterCreature.setUseTapped(true); filterCreature.setTapped(false); - filterLand.getCardType().add(CardType.LAND); - filterLand.setScopeCardType(Filter.ComparisonScope.Any); + filterLand.add(new CardTypePredicate(CardType.LAND)); filterLand.add(new SupertypePredicate("Basic")); } diff --git a/Mage.Sets/src/mage/sets/tempest/HannasCustody.java b/Mage.Sets/src/mage/sets/tempest/HannasCustody.java index 6fa85fcf411..fd81a9c386f 100644 --- a/Mage.Sets/src/mage/sets/tempest/HannasCustody.java +++ b/Mage.Sets/src/mage/sets/tempest/HannasCustody.java @@ -36,8 +36,8 @@ import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.common.continious.GainAbilityAllEffect; import mage.abilities.keyword.ShroudAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; /** * @@ -48,8 +48,7 @@ public class HannasCustody extends CardImpl { private final static FilterPermanent filter = new FilterPermanent("artifacts"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.ARTIFACT)); } public HannasCustody(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/tempest/Perish.java b/Mage.Sets/src/mage/sets/tempest/Perish.java index 4fd629b4728..faa6298768d 100644 --- a/Mage.Sets/src/mage/sets/tempest/Perish.java +++ b/Mage.Sets/src/mage/sets/tempest/Perish.java @@ -32,8 +32,8 @@ import mage.Constants.CardType; import mage.Constants.Rarity; import mage.abilities.effects.common.DestroyAllEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; /** * @@ -46,8 +46,7 @@ public class Perish extends CardImpl { static { filter.getColor().setGreen(true); filter.setUseColor(true); - filter.getCardType().add(CardType.CREATURE); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.CREATURE)); } public Perish(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/tempest/RatsOfRath.java b/Mage.Sets/src/mage/sets/tempest/RatsOfRath.java index b2defbb0a3a..17833afc1c3 100644 --- a/Mage.Sets/src/mage/sets/tempest/RatsOfRath.java +++ b/Mage.Sets/src/mage/sets/tempest/RatsOfRath.java @@ -38,8 +38,9 @@ import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.mana.ColoredManaCost; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.common.TargetControlledPermanent; /** @@ -51,10 +52,10 @@ public class RatsOfRath extends CardImpl { private final static FilterControlledPermanent filter = new FilterControlledPermanent("artifact, creature, or land you control"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.getCardType().add(CardType.CREATURE); - filter.getCardType().add(CardType.LAND); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(Predicates.or( + new CardTypePredicate(CardType.ARTIFACT), + new CardTypePredicate(CardType.CREATURE), + new CardTypePredicate(CardType.LAND))); } public RatsOfRath(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/tempest/Tranquility.java b/Mage.Sets/src/mage/sets/tempest/Tranquility.java index 1d510781358..2eb5bf28a7b 100644 --- a/Mage.Sets/src/mage/sets/tempest/Tranquility.java +++ b/Mage.Sets/src/mage/sets/tempest/Tranquility.java @@ -35,8 +35,8 @@ import mage.Constants.Rarity; import mage.abilities.Ability; import mage.abilities.effects.OneShotEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.Game; import mage.game.permanent.Permanent; @@ -68,8 +68,7 @@ class TranquilityEffect extends OneShotEffect { private final static FilterPermanent filter = new FilterPermanent(""); static { - filter.getCardType().add(CardType.ENCHANTMENT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.ENCHANTMENT)); } public TranquilityEffect() { diff --git a/Mage.Sets/src/mage/sets/tempest/Verdigris.java b/Mage.Sets/src/mage/sets/tempest/Verdigris.java index 2afc2f65654..628d25d8615 100644 --- a/Mage.Sets/src/mage/sets/tempest/Verdigris.java +++ b/Mage.Sets/src/mage/sets/tempest/Verdigris.java @@ -32,8 +32,8 @@ import mage.Constants.CardType; import mage.Constants.Rarity; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetPermanent; /** @@ -45,8 +45,7 @@ public class Verdigris extends CardImpl { private final static FilterPermanent filter = new FilterPermanent("artifact"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.ARTIFACT)); } public Verdigris(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/tenth/AvenCloudchaser.java b/Mage.Sets/src/mage/sets/tenth/AvenCloudchaser.java index 375300af1c9..a0e5fa1f34c 100644 --- a/Mage.Sets/src/mage/sets/tenth/AvenCloudchaser.java +++ b/Mage.Sets/src/mage/sets/tenth/AvenCloudchaser.java @@ -36,8 +36,8 @@ import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.effects.common.DestroyTargetEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetPermanent; /** @@ -49,8 +49,7 @@ public class AvenCloudchaser extends CardImpl { private final static FilterPermanent filter = new FilterPermanent("enchantment"); static { - filter.getCardType().add(CardType.ENCHANTMENT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.ENCHANTMENT)); } public AvenCloudchaser(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/tenth/CreepingMold.java b/Mage.Sets/src/mage/sets/tenth/CreepingMold.java index a103bdc26e0..6be987ebb42 100644 --- a/Mage.Sets/src/mage/sets/tenth/CreepingMold.java +++ b/Mage.Sets/src/mage/sets/tenth/CreepingMold.java @@ -32,8 +32,9 @@ import mage.Constants.CardType; import mage.Constants.Rarity; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetPermanent; /** @@ -45,10 +46,10 @@ public class CreepingMold extends CardImpl { private final static FilterPermanent filter = new FilterPermanent("artifact, enchantment, or land"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.getCardType().add(CardType.ENCHANTMENT); - filter.getCardType().add(CardType.LAND); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(Predicates.or( + new CardTypePredicate(CardType.ARTIFACT), + new CardTypePredicate(CardType.ENCHANTMENT), + new CardTypePredicate(CardType.LAND))); } public CreepingMold(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/tenth/Demolish.java b/Mage.Sets/src/mage/sets/tenth/Demolish.java index 70ea584c1cb..567a7835e99 100644 --- a/Mage.Sets/src/mage/sets/tenth/Demolish.java +++ b/Mage.Sets/src/mage/sets/tenth/Demolish.java @@ -33,8 +33,9 @@ import mage.Constants.CardType; import mage.Constants.Rarity; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.FilterPermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetPermanent; /** @@ -46,9 +47,9 @@ public class Demolish extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("artifact or land"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.getCardType().add(CardType.LAND); - filter.setScopeCardType(ComparisonScope.Any); + filter.add(Predicates.or( + new CardTypePredicate(CardType.ARTIFACT), + new CardTypePredicate(CardType.LAND))); } public Demolish(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/tenth/Demystify.java b/Mage.Sets/src/mage/sets/tenth/Demystify.java index 491c6b8ca79..e77a87156c3 100644 --- a/Mage.Sets/src/mage/sets/tenth/Demystify.java +++ b/Mage.Sets/src/mage/sets/tenth/Demystify.java @@ -33,8 +33,8 @@ import mage.Constants.CardType; import mage.Constants.Rarity; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetPermanent; /** @@ -43,11 +43,10 @@ import mage.target.TargetPermanent; */ public class Demystify extends CardImpl { - private static FilterPermanent filter = new FilterPermanent("enchantment"); + private static final FilterPermanent filter = new FilterPermanent("enchantment"); static { - filter.getCardType().add(CardType.ENCHANTMENT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.ENCHANTMENT)); } public Demystify (UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/tenth/Distress.java b/Mage.Sets/src/mage/sets/tenth/Distress.java index f9bab57ef32..b12364a3b0a 100644 --- a/Mage.Sets/src/mage/sets/tenth/Distress.java +++ b/Mage.Sets/src/mage/sets/tenth/Distress.java @@ -35,6 +35,8 @@ import mage.abilities.effects.OneShotEffect; import mage.cards.Card; import mage.cards.CardImpl; import mage.filter.FilterCard; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.Game; import mage.players.Player; import mage.target.TargetCard; @@ -73,7 +75,7 @@ class DistressEffect extends OneShotEffect { private static final FilterCard filter = new FilterCard("nonland card"); static { - filter.getNotCardType().add(CardType.LAND); + filter.add(Predicates.not(new CardTypePredicate(CardType.LAND))); } public DistressEffect() { diff --git a/Mage.Sets/src/mage/sets/tenth/IcyManipulator.java b/Mage.Sets/src/mage/sets/tenth/IcyManipulator.java index 80bfe791f31..b0362bc3254 100644 --- a/Mage.Sets/src/mage/sets/tenth/IcyManipulator.java +++ b/Mage.Sets/src/mage/sets/tenth/IcyManipulator.java @@ -38,8 +38,9 @@ import mage.abilities.costs.common.TapSourceCost; import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.effects.common.TapTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetPermanent; /** @@ -51,10 +52,10 @@ public class IcyManipulator extends CardImpl { private final static FilterPermanent filter = new FilterPermanent("artifact, creature, or land"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.getCardType().add(CardType.CREATURE); - filter.getCardType().add(CardType.LAND); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(Predicates.or( + new CardTypePredicate(CardType.ARTIFACT), + new CardTypePredicate(CardType.CREATURE), + new CardTypePredicate(CardType.LAND))); } public IcyManipulator(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/tenth/MolimoMaroSorcerer.java b/Mage.Sets/src/mage/sets/tenth/MolimoMaroSorcerer.java index e637b5013a3..9a6f6a9fde8 100644 --- a/Mage.Sets/src/mage/sets/tenth/MolimoMaroSorcerer.java +++ b/Mage.Sets/src/mage/sets/tenth/MolimoMaroSorcerer.java @@ -38,8 +38,8 @@ import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.effects.common.continious.SetPowerToughnessSourceEffect; import mage.abilities.keyword.TrampleAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; /** * @@ -50,8 +50,7 @@ public class MolimoMaroSorcerer extends CardImpl { private final static FilterControlledPermanent filter = new FilterControlledPermanent("lands you control"); static { - filter.getCardType().add(CardType.LAND); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.LAND)); } public MolimoMaroSorcerer(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/tenth/Naturalize.java b/Mage.Sets/src/mage/sets/tenth/Naturalize.java index 0e17bd89fa0..10f07f1090d 100644 --- a/Mage.Sets/src/mage/sets/tenth/Naturalize.java +++ b/Mage.Sets/src/mage/sets/tenth/Naturalize.java @@ -33,8 +33,9 @@ import mage.Constants.CardType; import mage.Constants.Rarity; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.FilterPermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetPermanent; /** @@ -46,9 +47,9 @@ public class Naturalize extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("artifact or enchantment"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.getCardType().add(CardType.ENCHANTMENT); - filter.setScopeCardType(ComparisonScope.Any); + filter.add(Predicates.or( + new CardTypePredicate(CardType.ARTIFACT), + new CardTypePredicate(CardType.ENCHANTMENT))); } public Naturalize(UUID ownerId){ diff --git a/Mage.Sets/src/mage/sets/tenth/RemoveSoul.java b/Mage.Sets/src/mage/sets/tenth/RemoveSoul.java index 40e3c9816ee..52617b298a3 100644 --- a/Mage.Sets/src/mage/sets/tenth/RemoveSoul.java +++ b/Mage.Sets/src/mage/sets/tenth/RemoveSoul.java @@ -33,6 +33,7 @@ import mage.Constants.Rarity; import mage.abilities.effects.common.CounterTargetEffect; import mage.cards.CardImpl; import mage.filter.FilterSpell; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetSpell; /** @@ -44,7 +45,7 @@ public class RemoveSoul extends CardImpl { private static final FilterSpell filter = new FilterSpell("creature spell"); static { - filter.getCardType().add(CardType.CREATURE); + filter.add(new CardTypePredicate(CardType.CREATURE)); } public RemoveSoul(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/tenth/SculptingSteel.java b/Mage.Sets/src/mage/sets/tenth/SculptingSteel.java index f4dc251a619..d5106eb3d98 100644 --- a/Mage.Sets/src/mage/sets/tenth/SculptingSteel.java +++ b/Mage.Sets/src/mage/sets/tenth/SculptingSteel.java @@ -36,6 +36,7 @@ import mage.abilities.effects.EntersBattlefieldEffect; import mage.abilities.effects.common.CopyPermanentEffect; import mage.cards.CardImpl; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; /** * @@ -46,7 +47,7 @@ public class SculptingSteel extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("artifact"); static { - filter.getCardType().add(CardType.ARTIFACT); + filter.add(new CardTypePredicate(CardType.ARTIFACT)); } public SculptingSteel(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/tenth/Terror.java b/Mage.Sets/src/mage/sets/tenth/Terror.java index d2724552fb2..2eb8a955828 100644 --- a/Mage.Sets/src/mage/sets/tenth/Terror.java +++ b/Mage.Sets/src/mage/sets/tenth/Terror.java @@ -33,6 +33,8 @@ import mage.Constants.Rarity; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.common.TargetCreaturePermanent; /** @@ -44,7 +46,7 @@ public class Terror extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonartifact, nonblack creature"); static { - filter.getNotCardType().add(CardType.ARTIFACT); + filter.add(Predicates.not(new CardTypePredicate(CardType.ARTIFACT))); filter.getColor().setBlack(true); filter.setNotColor(true); filter.setUseColor(true); diff --git a/Mage.Sets/src/mage/sets/tenth/ViridianShaman.java b/Mage.Sets/src/mage/sets/tenth/ViridianShaman.java index b615c7591e1..8227d9638a3 100644 --- a/Mage.Sets/src/mage/sets/tenth/ViridianShaman.java +++ b/Mage.Sets/src/mage/sets/tenth/ViridianShaman.java @@ -35,8 +35,8 @@ import mage.abilities.Ability; import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetPermanent; /** @@ -48,8 +48,7 @@ public class ViridianShaman extends CardImpl { private final static FilterPermanent filter = new FilterPermanent("artifact"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.ARTIFACT)); } public ViridianShaman(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/tenth/YavimayaEnchantress.java b/Mage.Sets/src/mage/sets/tenth/YavimayaEnchantress.java index dcef5f52eec..134788324e1 100644 --- a/Mage.Sets/src/mage/sets/tenth/YavimayaEnchantress.java +++ b/Mage.Sets/src/mage/sets/tenth/YavimayaEnchantress.java @@ -37,8 +37,8 @@ import mage.abilities.common.SimpleStaticAbility; import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.effects.common.continious.BoostSourceEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; /** * @@ -49,8 +49,7 @@ public class YavimayaEnchantress extends CardImpl { private final static FilterPermanent filter = new FilterPermanent("enchantment on the battlefield"); static { - filter.getCardType().add(CardType.ENCHANTMENT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.ENCHANTMENT)); } public YavimayaEnchantress(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/urzasdestiny/KeldonVandals.java b/Mage.Sets/src/mage/sets/urzasdestiny/KeldonVandals.java index eb933c79dde..b3debbb1d71 100644 --- a/Mage.Sets/src/mage/sets/urzasdestiny/KeldonVandals.java +++ b/Mage.Sets/src/mage/sets/urzasdestiny/KeldonVandals.java @@ -36,8 +36,8 @@ import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.effects.common.DestroyTargetEffect; import mage.abilities.keyword.EchoAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetPermanent; /** @@ -49,8 +49,7 @@ public class KeldonVandals extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("artifact"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.ARTIFACT)); } public KeldonVandals(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/urzaslegacy/BoneShredder.java b/Mage.Sets/src/mage/sets/urzaslegacy/BoneShredder.java index 2c5cf6a3bdf..997b5cdcf2d 100644 --- a/Mage.Sets/src/mage/sets/urzaslegacy/BoneShredder.java +++ b/Mage.Sets/src/mage/sets/urzaslegacy/BoneShredder.java @@ -38,6 +38,8 @@ import mage.abilities.keyword.EchoAbility; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.Target; import mage.target.common.TargetCreaturePermanent; @@ -50,7 +52,7 @@ public class BoneShredder extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonartifact, nonblack creature"); static { - filter.getNotCardType().add(CardType.ARTIFACT); + filter.add(Predicates.not(new CardTypePredicate(CardType.ARTIFACT))); filter.getColor().setBlack(true); filter.setNotColor(true); filter.setUseColor(true); diff --git a/Mage.Sets/src/mage/sets/urzaslegacy/BouncingBeebles.java b/Mage.Sets/src/mage/sets/urzaslegacy/BouncingBeebles.java index 102dc92a4d0..5db60ff9427 100644 --- a/Mage.Sets/src/mage/sets/urzaslegacy/BouncingBeebles.java +++ b/Mage.Sets/src/mage/sets/urzaslegacy/BouncingBeebles.java @@ -42,8 +42,8 @@ import mage.abilities.effects.Effect; import mage.abilities.effects.common.continious.GainAbilitySourceEffect; import mage.abilities.keyword.UnblockableAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.Game; /** @@ -56,8 +56,7 @@ public class BouncingBeebles extends CardImpl { private static final FilterPermanent filter = new FilterPermanent(); static { - filter.getCardType().add(Constants.CardType.ARTIFACT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(Constants.CardType.ARTIFACT)); } private class DefendingPlayerControlsArtifact implements Condition { diff --git a/Mage.Sets/src/mage/sets/urzaslegacy/Erase.java b/Mage.Sets/src/mage/sets/urzaslegacy/Erase.java index 73a242c7560..99eefbc1054 100644 --- a/Mage.Sets/src/mage/sets/urzaslegacy/Erase.java +++ b/Mage.Sets/src/mage/sets/urzaslegacy/Erase.java @@ -33,6 +33,7 @@ import mage.Constants.Rarity; import mage.abilities.effects.common.ExileTargetEffect; import mage.cards.CardImpl; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetPermanent; /** @@ -43,7 +44,7 @@ public class Erase extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("enchantment"); static { - filter.getCardType().add(CardType.ENCHANTMENT); + filter.add(new CardTypePredicate(CardType.ENCHANTMENT)); } public Erase(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/urzassaga/ArgothianEnchantress.java b/Mage.Sets/src/mage/sets/urzassaga/ArgothianEnchantress.java index 672d45b33c4..62da0b8bef0 100644 --- a/Mage.Sets/src/mage/sets/urzassaga/ArgothianEnchantress.java +++ b/Mage.Sets/src/mage/sets/urzassaga/ArgothianEnchantress.java @@ -36,6 +36,7 @@ import mage.abilities.effects.common.DrawCardControllerEffect; import mage.abilities.keyword.ShroudAbility; import mage.cards.CardImpl; import mage.filter.FilterSpell; +import mage.filter.predicate.mageobject.CardTypePredicate; /** * @@ -46,7 +47,7 @@ public class ArgothianEnchantress extends CardImpl { private static final FilterSpell filter = new FilterSpell("an Enchantment spell"); static { - filter.getCardType().add(CardType.ENCHANTMENT); + filter.add(new CardTypePredicate(CardType.ENCHANTMENT)); } public ArgothianEnchantress(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/urzassaga/CitanulHierophants.java b/Mage.Sets/src/mage/sets/urzassaga/CitanulHierophants.java index d345712016b..482c2807035 100644 --- a/Mage.Sets/src/mage/sets/urzassaga/CitanulHierophants.java +++ b/Mage.Sets/src/mage/sets/urzassaga/CitanulHierophants.java @@ -38,6 +38,7 @@ import mage.abilities.effects.common.continious.GainAbilityControlledEffect; import mage.abilities.mana.GreenManaAbility; import mage.cards.CardImpl; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; /** * @@ -48,7 +49,7 @@ public class CitanulHierophants extends CardImpl { private final static FilterPermanent filter = new FilterPermanent("creatures"); static { - filter.getCardType().add(CardType.CREATURE); + filter.add(new CardTypePredicate(CardType.CREATURE)); } public CitanulHierophants(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/urzassaga/Clear.java b/Mage.Sets/src/mage/sets/urzassaga/Clear.java index cbec903f28d..4b3a22685aa 100644 --- a/Mage.Sets/src/mage/sets/urzassaga/Clear.java +++ b/Mage.Sets/src/mage/sets/urzassaga/Clear.java @@ -35,8 +35,8 @@ import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.common.DestroyTargetEffect; import mage.abilities.keyword.CyclingAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetPermanent; /** @@ -48,8 +48,7 @@ public class Clear extends CardImpl { private final static FilterPermanent filter = new FilterPermanent("enchantment"); static { - filter.getCardType().add(CardType.ENCHANTMENT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.ENCHANTMENT)); } public Clear(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/urzassaga/GaeasCradle.java b/Mage.Sets/src/mage/sets/urzassaga/GaeasCradle.java index a9f57346ffc..31e3e60f238 100644 --- a/Mage.Sets/src/mage/sets/urzassaga/GaeasCradle.java +++ b/Mage.Sets/src/mage/sets/urzassaga/GaeasCradle.java @@ -36,6 +36,7 @@ import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.mana.DynamicManaAbility; import mage.cards.CardImpl; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; /** * @@ -47,7 +48,7 @@ public class GaeasCradle extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("creature you control");; static { - filter.getCardType().add(CardType.CREATURE); + filter.add(new CardTypePredicate(CardType.CREATURE)); } public GaeasCradle(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/urzassaga/Hush.java b/Mage.Sets/src/mage/sets/urzassaga/Hush.java index a11d9b9d952..8359b19045e 100644 --- a/Mage.Sets/src/mage/sets/urzassaga/Hush.java +++ b/Mage.Sets/src/mage/sets/urzassaga/Hush.java @@ -36,8 +36,8 @@ import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.OneShotEffect; import mage.abilities.keyword.CyclingAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.Game; import mage.game.permanent.Permanent; @@ -71,8 +71,7 @@ class HushEffect extends OneShotEffect { private final static FilterPermanent filter = new FilterPermanent(""); static { - filter.getCardType().add(CardType.ENCHANTMENT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.ENCHANTMENT)); } public HushEffect() { diff --git a/Mage.Sets/src/mage/sets/urzassaga/RainOfSalt.java b/Mage.Sets/src/mage/sets/urzassaga/RainOfSalt.java index 5a05a246def..b0797bd645b 100644 --- a/Mage.Sets/src/mage/sets/urzassaga/RainOfSalt.java +++ b/Mage.Sets/src/mage/sets/urzassaga/RainOfSalt.java @@ -33,8 +33,8 @@ import mage.Constants.CardType; import mage.Constants.Rarity; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetPermanent; /** @@ -46,8 +46,7 @@ public class RainOfSalt extends CardImpl { private final static FilterPermanent filter = new FilterPermanent("land"); static { - filter.getCardType().add(CardType.LAND); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.LAND)); } public RainOfSalt(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/urzassaga/Scrap.java b/Mage.Sets/src/mage/sets/urzassaga/Scrap.java index 1ea5969432c..50a591a9008 100644 --- a/Mage.Sets/src/mage/sets/urzassaga/Scrap.java +++ b/Mage.Sets/src/mage/sets/urzassaga/Scrap.java @@ -35,8 +35,8 @@ import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.common.DestroyTargetEffect; import mage.abilities.keyword.CyclingAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetPermanent; /** @@ -48,8 +48,7 @@ public class Scrap extends CardImpl { private final static FilterPermanent filter = new FilterPermanent("artifact"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.ARTIFACT)); } public Scrap(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/urzassaga/SerrasSanctum.java b/Mage.Sets/src/mage/sets/urzassaga/SerrasSanctum.java index 26f8e8a2a0c..a897adf6bfb 100644 --- a/Mage.Sets/src/mage/sets/urzassaga/SerrasSanctum.java +++ b/Mage.Sets/src/mage/sets/urzassaga/SerrasSanctum.java @@ -36,6 +36,7 @@ import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.mana.DynamicManaAbility; import mage.cards.CardImpl; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; /** * @@ -47,7 +48,7 @@ public class SerrasSanctum extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("enchantment you control");; static { - filter.getCardType().add(CardType.ENCHANTMENT); + filter.add(new CardTypePredicate(CardType.ENCHANTMENT)); } public SerrasSanctum(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/urzassaga/SternProctor.java b/Mage.Sets/src/mage/sets/urzassaga/SternProctor.java index b379699f7af..e951455daa6 100644 --- a/Mage.Sets/src/mage/sets/urzassaga/SternProctor.java +++ b/Mage.Sets/src/mage/sets/urzassaga/SternProctor.java @@ -29,17 +29,16 @@ package mage.sets.urzassaga; import java.util.UUID; -import mage.Constants; import mage.Constants.CardType; import mage.Constants.Rarity; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.EntersBattlefieldTriggeredAbility; -import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.effects.common.ReturnToHandTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetPermanent; /** @@ -50,9 +49,9 @@ public class SternProctor extends CardImpl { private final static FilterPermanent filter = new FilterPermanent("artifact or enchantment"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.getCardType().add(CardType.ENCHANTMENT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(Predicates.or( + new CardTypePredicate(CardType.ARTIFACT), + new CardTypePredicate(CardType.ENCHANTMENT))); } public SternProctor(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/urzassaga/TolarianAcademy.java b/Mage.Sets/src/mage/sets/urzassaga/TolarianAcademy.java index 61bd768cab3..b07f425df14 100644 --- a/Mage.Sets/src/mage/sets/urzassaga/TolarianAcademy.java +++ b/Mage.Sets/src/mage/sets/urzassaga/TolarianAcademy.java @@ -35,8 +35,8 @@ import mage.Mana; import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.mana.DynamicManaAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; /** * @@ -48,8 +48,7 @@ public class TolarianAcademy extends CardImpl { private final static FilterControlledPermanent filter = new FilterControlledPermanent("artifact you control"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.ARTIFACT)); } public TolarianAcademy(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/urzassaga/Wildfire.java b/Mage.Sets/src/mage/sets/urzassaga/Wildfire.java index 082d57df3ac..0f4c117bbd9 100644 --- a/Mage.Sets/src/mage/sets/urzassaga/Wildfire.java +++ b/Mage.Sets/src/mage/sets/urzassaga/Wildfire.java @@ -35,6 +35,7 @@ import mage.abilities.effects.common.SacrificeAllEffect; import mage.cards.CardImpl; import mage.filter.common.FilterControlledPermanent; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; /** * @@ -45,7 +46,7 @@ public class Wildfire extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("land"); static { - filter.getCardType().add(CardType.LAND); + filter.add(new CardTypePredicate(CardType.LAND)); } public Wildfire(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/weatherlight/MaraxusOfKeld.java b/Mage.Sets/src/mage/sets/weatherlight/MaraxusOfKeld.java index e1703ba36b4..75e082cf37d 100644 --- a/Mage.Sets/src/mage/sets/weatherlight/MaraxusOfKeld.java +++ b/Mage.Sets/src/mage/sets/weatherlight/MaraxusOfKeld.java @@ -35,8 +35,9 @@ import mage.abilities.common.SimpleStaticAbility; import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.effects.common.continious.SetPowerToughnessSourceEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import java.util.UUID; @@ -46,16 +47,16 @@ import java.util.UUID; */ public class MaraxusOfKeld extends CardImpl { - private static FilterControlledPermanent filterUntapped = new FilterControlledPermanent("untapped artifacts, creatures, and lands you control"); + private static final FilterControlledPermanent filterUntapped = new FilterControlledPermanent("untapped artifacts, creatures, and lands you control"); static { filterUntapped.setUseTapped(true); filterUntapped.setTapped(false); - filterUntapped.getCardType().add(CardType.CREATURE); - filterUntapped.getCardType().add(CardType.ARTIFACT); - filterUntapped.getCardType().add(CardType.LAND); - filterUntapped.setScopeCardType(Filter.ComparisonScope.Any); + filterUntapped.add(Predicates.or( + new CardTypePredicate(CardType.ARTIFACT), + new CardTypePredicate(CardType.CREATURE), + new CardTypePredicate(CardType.LAND))); } public MaraxusOfKeld(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/worldwake/AvengerOfZendikar.java b/Mage.Sets/src/mage/sets/worldwake/AvengerOfZendikar.java index 4304125a6e8..6dd3430ce9a 100644 --- a/Mage.Sets/src/mage/sets/worldwake/AvengerOfZendikar.java +++ b/Mage.Sets/src/mage/sets/worldwake/AvengerOfZendikar.java @@ -41,6 +41,7 @@ import mage.abilities.effects.common.counter.AddCountersAllEffect; import mage.cards.CardImpl; import mage.counters.CounterType; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.permanent.token.PlantToken; @@ -53,10 +54,10 @@ public class AvengerOfZendikar extends CardImpl { private static final FilterControlledPermanent filterLand = new FilterControlledPermanent("land you control"); static { - filter.getCardType().add(CardType.CREATURE); + filter.add(new CardTypePredicate(CardType.CREATURE)); filter.add(new SubtypePredicate("Plant")); - filterLand.getCardType().add(CardType.LAND); + filterLand.add(new CardTypePredicate(CardType.LAND)); } public AvengerOfZendikar (UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/worldwake/BazaarTrader.java b/Mage.Sets/src/mage/sets/worldwake/BazaarTrader.java index acd0b7bfe5a..fed14f3002c 100644 --- a/Mage.Sets/src/mage/sets/worldwake/BazaarTrader.java +++ b/Mage.Sets/src/mage/sets/worldwake/BazaarTrader.java @@ -41,8 +41,9 @@ import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.common.TapSourceCost; import mage.abilities.effects.ContinuousEffectImpl; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; @@ -58,10 +59,10 @@ public class BazaarTrader extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("artifact, creature, or land you control"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.getCardType().add(CardType.CREATURE); - filter.getCardType().add(CardType.LAND); - filter.setScopeCardType(ComparisonScope.Any); + filter.add(Predicates.or( + new CardTypePredicate(CardType.ARTIFACT), + new CardTypePredicate(CardType.CREATURE), + new CardTypePredicate(CardType.LAND))); } public BazaarTrader(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/worldwake/BrinkOfDisaster.java b/Mage.Sets/src/mage/sets/worldwake/BrinkOfDisaster.java index 32ae0b63d84..1b4c82dcf43 100644 --- a/Mage.Sets/src/mage/sets/worldwake/BrinkOfDisaster.java +++ b/Mage.Sets/src/mage/sets/worldwake/BrinkOfDisaster.java @@ -37,8 +37,9 @@ import mage.abilities.effects.Effect; import mage.abilities.effects.common.AttachEffect; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.Game; import mage.game.events.GameEvent; import mage.game.permanent.Permanent; @@ -51,12 +52,12 @@ import mage.target.targetpointer.FixedTarget; */ public class BrinkOfDisaster extends CardImpl { - private static FilterPermanent filter = new FilterPermanent(); + private static final FilterPermanent filter = new FilterPermanent(); static { - filter.getCardType().add(CardType.CREATURE); - filter.getCardType().add(CardType.LAND); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(Predicates.or( + new CardTypePredicate(CardType.CREATURE), + new CardTypePredicate(CardType.LAND))); } public BrinkOfDisaster(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/worldwake/ButcherOfMalakir.java b/Mage.Sets/src/mage/sets/worldwake/ButcherOfMalakir.java index a21807e9f29..815b4a34bb4 100644 --- a/Mage.Sets/src/mage/sets/worldwake/ButcherOfMalakir.java +++ b/Mage.Sets/src/mage/sets/worldwake/ButcherOfMalakir.java @@ -39,6 +39,7 @@ import mage.abilities.effects.OneShotEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; @@ -97,7 +98,7 @@ class ButcherOfMalakirEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { FilterControlledPermanent filter = new FilterControlledPermanent("creature you control"); - filter.getCardType().add(CardType.CREATURE); + filter.add(new CardTypePredicate(CardType.CREATURE)); filter.setTargetController(Constants.TargetController.YOU); Set opponents = game.getOpponents(source.getControllerId()); diff --git a/Mage.Sets/src/mage/sets/worldwake/Dispel.java b/Mage.Sets/src/mage/sets/worldwake/Dispel.java index b80e7787039..1f1fad26209 100644 --- a/Mage.Sets/src/mage/sets/worldwake/Dispel.java +++ b/Mage.Sets/src/mage/sets/worldwake/Dispel.java @@ -33,6 +33,7 @@ import mage.Constants.Rarity; import mage.abilities.effects.common.CounterTargetEffect; import mage.cards.CardImpl; import mage.filter.FilterSpell; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetSpell; /** @@ -44,7 +45,7 @@ public class Dispel extends CardImpl { private static FilterSpell filter = new FilterSpell("instant spell"); static { - filter.getCardType().add(CardType.INSTANT); + filter.add(new CardTypePredicate(CardType.INSTANT)); } public Dispel(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/worldwake/HorizonDrake.java b/Mage.Sets/src/mage/sets/worldwake/HorizonDrake.java index 166977fdf6b..84eac17a1a7 100644 --- a/Mage.Sets/src/mage/sets/worldwake/HorizonDrake.java +++ b/Mage.Sets/src/mage/sets/worldwake/HorizonDrake.java @@ -34,8 +34,7 @@ import mage.MageInt; import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; -import mage.filter.FilterCard; +import mage.filter.common.FilterLandCard; import java.util.UUID; @@ -44,12 +43,7 @@ import java.util.UUID; */ public class HorizonDrake extends CardImpl { - private static FilterCard filter = new FilterCard("lands"); - - static { - filter.getCardType().add(CardType.LAND); - filter.setScopeCardType(ComparisonScope.Any); - } + private static FilterLandCard filter = new FilterLandCard("lands"); public HorizonDrake(UUID ownerId) { super(ownerId, 30, "Horizon Drake", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{1}{U}{U}"); diff --git a/Mage.Sets/src/mage/sets/worldwake/IonasJudgment.java b/Mage.Sets/src/mage/sets/worldwake/IonasJudgment.java index 63fe5c8ff2e..afdc947b0f4 100644 --- a/Mage.Sets/src/mage/sets/worldwake/IonasJudgment.java +++ b/Mage.Sets/src/mage/sets/worldwake/IonasJudgment.java @@ -33,8 +33,9 @@ import mage.Constants.CardType; import mage.Constants.Rarity; import mage.abilities.effects.common.ExileTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.FilterPermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetPermanent; /** @@ -42,12 +43,12 @@ import mage.target.TargetPermanent; * @author Loki */ public class IonasJudgment extends CardImpl { - private static FilterPermanent filter = new FilterPermanent("creature or enchantment"); + private static final FilterPermanent filter = new FilterPermanent("creature or enchantment"); static { - filter.getCardType().add(CardType.CREATURE); - filter.getCardType().add(CardType.ENCHANTMENT); - filter.setScopeCardType(ComparisonScope.Any); + filter.add(Predicates.or( + new CardTypePredicate(CardType.CREATURE), + new CardTypePredicate(CardType.ENCHANTMENT))); } public IonasJudgment (UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/worldwake/NaturesClaim.java b/Mage.Sets/src/mage/sets/worldwake/NaturesClaim.java index e9258652387..9c3f5ab5aea 100644 --- a/Mage.Sets/src/mage/sets/worldwake/NaturesClaim.java +++ b/Mage.Sets/src/mage/sets/worldwake/NaturesClaim.java @@ -38,6 +38,8 @@ import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; import mage.filter.FilterPermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; @@ -51,9 +53,9 @@ public class NaturesClaim extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("artifact or enchantment"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.getCardType().add(CardType.ENCHANTMENT); - filter.setScopeCardType(mage.filter.Filter.ComparisonScope.Any); + filter.add(Predicates.or( + new CardTypePredicate(CardType.ARTIFACT), + new CardTypePredicate(CardType.ENCHANTMENT))); } public NaturesClaim (UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/worldwake/PilgrimsEye.java b/Mage.Sets/src/mage/sets/worldwake/PilgrimsEye.java index 17796380adb..9c75761e59d 100644 --- a/Mage.Sets/src/mage/sets/worldwake/PilgrimsEye.java +++ b/Mage.Sets/src/mage/sets/worldwake/PilgrimsEye.java @@ -37,6 +37,7 @@ import mage.abilities.effects.common.search.SearchLibraryRevealPutInHandEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.filter.predicate.mageobject.SupertypePredicate; import mage.target.common.TargetCardInLibrary; @@ -49,7 +50,7 @@ public class PilgrimsEye extends CardImpl { static { filter.add(new SupertypePredicate("Basic")); - filter.getCardType().add(CardType.LAND); + filter.add(new CardTypePredicate(CardType.LAND)); } public PilgrimsEye (UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/worldwake/SejiriMerfolk.java b/Mage.Sets/src/mage/sets/worldwake/SejiriMerfolk.java index cec7f6676ae..734e22692dd 100644 --- a/Mage.Sets/src/mage/sets/worldwake/SejiriMerfolk.java +++ b/Mage.Sets/src/mage/sets/worldwake/SejiriMerfolk.java @@ -40,6 +40,7 @@ import mage.abilities.keyword.FirstStrikeAbility; import mage.abilities.keyword.LifelinkAbility; import mage.cards.CardImpl; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.filter.predicate.mageobject.SubtypePredicate; /** @@ -53,7 +54,7 @@ public class SejiriMerfolk extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("Plains"); static { - filter.getCardType().add(CardType.LAND); + filter.add(new CardTypePredicate(CardType.LAND)); filter.add(new SubtypePredicate("Plains")); } diff --git a/Mage.Sets/src/mage/sets/worldwake/StoneforgeMystic.java b/Mage.Sets/src/mage/sets/worldwake/StoneforgeMystic.java index a92c4278b3b..67a0f611ed5 100644 --- a/Mage.Sets/src/mage/sets/worldwake/StoneforgeMystic.java +++ b/Mage.Sets/src/mage/sets/worldwake/StoneforgeMystic.java @@ -41,6 +41,7 @@ import mage.abilities.effects.common.search.SearchLibraryRevealPutInHandEffect; import mage.cards.CardImpl; import mage.filter.FilterCard; import mage.filter.predicate.mageobject.SubtypePredicate; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.common.TargetCardInHand; import mage.target.common.TargetCardInLibrary; @@ -55,7 +56,7 @@ public class StoneforgeMystic extends CardImpl { private static final FilterCard filter = new FilterCard("an Equipment card"); static { - filter.getCardType().add(CardType.ARTIFACT); + filter.add(new CardTypePredicate(CardType.ARTIFACT)); filter.add(new SubtypePredicate("Equipment")); } diff --git a/Mage.Sets/src/mage/sets/worldwake/Twitch.java b/Mage.Sets/src/mage/sets/worldwake/Twitch.java index 9f81dc8e6ff..3340aff6009 100644 --- a/Mage.Sets/src/mage/sets/worldwake/Twitch.java +++ b/Mage.Sets/src/mage/sets/worldwake/Twitch.java @@ -33,8 +33,9 @@ import mage.Constants.Rarity; import mage.abilities.effects.common.DrawCardControllerEffect; import mage.abilities.effects.common.MayTapOrUntapTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetPermanent; /** @@ -46,10 +47,10 @@ public class Twitch extends CardImpl { private final static FilterPermanent filter = new FilterPermanent("artifact, creature, or land"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.getCardType().add(CardType.CREATURE); - filter.getCardType().add(CardType.LAND); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(Predicates.or( + new CardTypePredicate(CardType.ARTIFACT), + new CardTypePredicate(CardType.CREATURE), + new CardTypePredicate(CardType.LAND))); } public Twitch(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/worldwake/VaporSnare.java b/Mage.Sets/src/mage/sets/worldwake/VaporSnare.java index fb0253e4722..68a92256ac7 100644 --- a/Mage.Sets/src/mage/sets/worldwake/VaporSnare.java +++ b/Mage.Sets/src/mage/sets/worldwake/VaporSnare.java @@ -41,6 +41,7 @@ import mage.abilities.effects.common.continious.ControlEnchantedEffect; import mage.abilities.keyword.EnchantAbility; import mage.cards.CardImpl; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; @@ -91,7 +92,7 @@ class VaporSnareEffect extends OneShotEffect { static { filter = new FilterControlledPermanent("land"); - filter.getCardType().add(CardType.LAND); + filter.add(new CardTypePredicate(CardType.LAND)); } VaporSnareEffect( ) { diff --git a/Mage.Sets/src/mage/sets/zendikar/ChandraAblaze.java b/Mage.Sets/src/mage/sets/zendikar/ChandraAblaze.java index 9d102e4a5ac..4bc419d1cad 100644 --- a/Mage.Sets/src/mage/sets/zendikar/ChandraAblaze.java +++ b/Mage.Sets/src/mage/sets/zendikar/ChandraAblaze.java @@ -42,6 +42,8 @@ import mage.cards.Card; import mage.cards.CardImpl; import mage.counters.CounterType; import mage.filter.FilterCard; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; @@ -229,8 +231,9 @@ class ChandraAblazeEffect5 extends OneShotEffect { if (player != null) { FilterCard filter = new FilterCard("red instant or sorcery card from your graveyard to play"); filter.getColor().setRed(true); - filter.getCardType().add(CardType.INSTANT); - filter.getCardType().add(CardType.SORCERY); + filter.add(Predicates.or( + new CardTypePredicate(CardType.INSTANT), + new CardTypePredicate(CardType.SORCERY))); String message = "Play red instant or sorcery card from your graveyard without paying its mana cost?"; Set cards = player.getGraveyard().getCards(filter, game); diff --git a/Mage.Sets/src/mage/sets/zendikar/GatekeeperOfMalakir.java b/Mage.Sets/src/mage/sets/zendikar/GatekeeperOfMalakir.java index 0efff7a6c60..b677dc1b36b 100644 --- a/Mage.Sets/src/mage/sets/zendikar/GatekeeperOfMalakir.java +++ b/Mage.Sets/src/mage/sets/zendikar/GatekeeperOfMalakir.java @@ -38,6 +38,7 @@ import mage.abilities.decorator.ConditionalTriggeredAbility; import mage.abilities.effects.common.SacrificeEffect; import mage.cards.CardImpl; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetPlayer; import java.util.UUID; @@ -51,9 +52,8 @@ public class GatekeeperOfMalakir extends CardImpl { private static final FilterControlledPermanent filter; static { - filter = new FilterControlledPermanent(); - filter.getCardType().add(CardType.CREATURE); - filter.setMessage(" a creature"); + filter = new FilterControlledPermanent(" a creature"); + filter.add(new CardTypePredicate(CardType.CREATURE)); } public GatekeeperOfMalakir(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/zendikar/Harrow.java b/Mage.Sets/src/mage/sets/zendikar/Harrow.java index 18c510bb38a..9b90e0c2a35 100644 --- a/Mage.Sets/src/mage/sets/zendikar/Harrow.java +++ b/Mage.Sets/src/mage/sets/zendikar/Harrow.java @@ -37,6 +37,7 @@ import mage.abilities.effects.common.search.SearchLibraryPutInPlayEffect; import mage.cards.CardImpl; import mage.filter.common.FilterBasicLandCard; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.common.TargetCardInLibrary; import mage.target.common.TargetControlledPermanent; @@ -49,7 +50,7 @@ public class Harrow extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("a land."); static{ - filter.getCardType().add(CardType.LAND); + filter.add(new CardTypePredicate(CardType.LAND)); } public Harrow(UUID ownerId){ diff --git a/Mage.Sets/src/mage/sets/zendikar/KhalniGem.java b/Mage.Sets/src/mage/sets/zendikar/KhalniGem.java index 2ae681bdf08..21104f69e96 100644 --- a/Mage.Sets/src/mage/sets/zendikar/KhalniGem.java +++ b/Mage.Sets/src/mage/sets/zendikar/KhalniGem.java @@ -42,6 +42,7 @@ import mage.abilities.effects.common.BasicManaEffect; import mage.abilities.mana.SimpleManaAbility; import mage.cards.CardImpl; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.target.Target; @@ -57,7 +58,7 @@ public class KhalniGem extends CardImpl { static { filter = new FilterControlledPermanent("land you control"); - filter.getCardType().add(CardType.LAND); + filter.add(new CardTypePredicate(CardType.LAND)); } public KhalniGem (UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/zendikar/KorSanctifiers.java b/Mage.Sets/src/mage/sets/zendikar/KorSanctifiers.java index 9475b6a8d89..7c899be660b 100644 --- a/Mage.Sets/src/mage/sets/zendikar/KorSanctifiers.java +++ b/Mage.Sets/src/mage/sets/zendikar/KorSanctifiers.java @@ -39,8 +39,9 @@ import mage.abilities.costs.mana.KickerManaCost; import mage.abilities.decorator.ConditionalTriggeredAbility; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetPermanent; /** @@ -51,9 +52,9 @@ public class KorSanctifiers extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("artifact or enchantment"); static { - filter.getCardType().add(CardType.ARTIFACT); - filter.getCardType().add(CardType.ENCHANTMENT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(Predicates.or( + new CardTypePredicate(CardType.ARTIFACT), + new CardTypePredicate(CardType.ENCHANTMENT))); } public KorSanctifiers (UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/zendikar/MagmaRift.java b/Mage.Sets/src/mage/sets/zendikar/MagmaRift.java index 4e1a5c9f221..f856683e9fb 100644 --- a/Mage.Sets/src/mage/sets/zendikar/MagmaRift.java +++ b/Mage.Sets/src/mage/sets/zendikar/MagmaRift.java @@ -34,6 +34,7 @@ import mage.abilities.costs.common.SacrificeTargetCost; import mage.abilities.effects.common.DamageTargetEffect; import mage.cards.CardImpl; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.common.TargetControlledPermanent; import mage.target.common.TargetCreaturePermanent; @@ -46,7 +47,7 @@ public class MagmaRift extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("land"); static { - filter.getCardType().add(CardType.LAND); + filter.add(new CardTypePredicate(CardType.LAND)); } public MagmaRift(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/zendikar/MoldShambler.java b/Mage.Sets/src/mage/sets/zendikar/MoldShambler.java index b89adb11067..d5bd496db6c 100644 --- a/Mage.Sets/src/mage/sets/zendikar/MoldShambler.java +++ b/Mage.Sets/src/mage/sets/zendikar/MoldShambler.java @@ -36,6 +36,8 @@ import mage.abilities.effects.common.DestroyTargetEffect; import mage.abilities.keyword.KickerAbility; import mage.cards.CardImpl; import mage.filter.FilterPermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetPermanent; /** @@ -47,7 +49,7 @@ public class MoldShambler extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("noncreature permanent"); static { - filter.getNotCardType().add(CardType.CREATURE); + filter.add(Predicates.not(new CardTypePredicate(CardType.CREATURE))); } public MoldShambler(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/zendikar/OranRiefTheVastwood.java b/Mage.Sets/src/mage/sets/zendikar/OranRiefTheVastwood.java index dce09d577a7..0d405cc5b34 100644 --- a/Mage.Sets/src/mage/sets/zendikar/OranRiefTheVastwood.java +++ b/Mage.Sets/src/mage/sets/zendikar/OranRiefTheVastwood.java @@ -43,6 +43,7 @@ import mage.cards.CardImpl; import mage.counters.CounterType; import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.Game; import mage.game.permanent.Permanent; @@ -90,7 +91,7 @@ class OranRiefTheVastwoodEffect extends OneShotEffect @Override public boolean apply(Game game, Ability source) { FilterPermanent filter = new FilterPermanent(); - filter.getCardType().add(CardType.CREATURE); + filter.add(new CardTypePredicate(CardType.CREATURE)); filter.getColor().setGreen(true); filter.setScopeColor(Filter.ComparisonScope.Any); filter.setUseColor(true); diff --git a/Mage.Sets/src/mage/sets/zendikar/PyromancerAscension.java b/Mage.Sets/src/mage/sets/zendikar/PyromancerAscension.java index 40f91dc4425..71eceb2b40d 100644 --- a/Mage.Sets/src/mage/sets/zendikar/PyromancerAscension.java +++ b/Mage.Sets/src/mage/sets/zendikar/PyromancerAscension.java @@ -39,8 +39,9 @@ import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.cards.Card; import mage.cards.CardImpl; import mage.counters.CounterType; -import mage.filter.Filter.ComparisonScope; import mage.filter.FilterSpell; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.Game; import mage.game.events.GameEvent; import mage.game.permanent.Permanent; @@ -122,12 +123,12 @@ class PyromancerAscensionQuestTriggeredAbility extends TriggeredAbilityImpl { - private static FilterSpell filter = new FilterSpell(); + private static final FilterSpell filter = new FilterSpell(); static { - filter.getCardType().add(CardType.INSTANT); - filter.getCardType().add(CardType.SORCERY); - filter.setScopeCardType(ComparisonScope.Any); + filter.add(Predicates.or( + new CardTypePredicate(CardType.INSTANT), + new CardTypePredicate(CardType.SORCERY))); } PyromancerAscensionCopyTriggeredAbility() { diff --git a/Mage.Sets/src/mage/sets/zendikar/QuestForTheHolyRelic.java b/Mage.Sets/src/mage/sets/zendikar/QuestForTheHolyRelic.java index 2d2ccf3dc62..9f98dcd626c 100644 --- a/Mage.Sets/src/mage/sets/zendikar/QuestForTheHolyRelic.java +++ b/Mage.Sets/src/mage/sets/zendikar/QuestForTheHolyRelic.java @@ -44,9 +44,9 @@ import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.cards.Card; import mage.cards.CardImpl; import mage.counters.CounterType; -import mage.filter.Filter; import mage.filter.FilterCard; import mage.filter.FilterSpell; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; import mage.game.permanent.Permanent; @@ -63,8 +63,7 @@ public class QuestForTheHolyRelic extends CardImpl { private static final FilterSpell filter = new FilterSpell("a creature spell"); static { - filter.getCardType().add(CardType.CREATURE); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.CREATURE)); } public QuestForTheHolyRelic(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/zendikar/RuinousMinotaur.java b/Mage.Sets/src/mage/sets/zendikar/RuinousMinotaur.java index 93b7c777f10..0fbcdce2f11 100644 --- a/Mage.Sets/src/mage/sets/zendikar/RuinousMinotaur.java +++ b/Mage.Sets/src/mage/sets/zendikar/RuinousMinotaur.java @@ -36,6 +36,7 @@ import mage.abilities.TriggeredAbilityImpl; import mage.abilities.effects.common.SacrificeTargetEffect; import mage.cards.CardImpl; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.Game; import mage.game.events.GameEvent; import mage.target.common.TargetControlledPermanent; @@ -75,7 +76,7 @@ class RuinousMinotaurTriggeredAbility extends TriggeredAbilityImpl { this.addAbility(ShroudAbility.getInstance()); // When Scythe Tiger enters the battlefield, sacrifice it unless you // sacrifice a land. - FilterControlledPermanent filter = new FilterControlledPermanent("a land."); - filter.getCardType().add(CardType.LAND); + FilterControlledPermanent filter = new FilterControlledPermanent("a land"); + filter.add(new CardTypePredicate(CardType.LAND)); this.addAbility(new EntersBattlefieldTriggeredAbility(new SacrificeSourceUnlessPaysEffect(new SacrificeTargetCost(new TargetControlledPermanent(filter))))); } diff --git a/Mage.Sets/src/mage/sets/zendikar/SpellPierce.java b/Mage.Sets/src/mage/sets/zendikar/SpellPierce.java index 9d76fe340ed..3b73f470463 100644 --- a/Mage.Sets/src/mage/sets/zendikar/SpellPierce.java +++ b/Mage.Sets/src/mage/sets/zendikar/SpellPierce.java @@ -35,6 +35,8 @@ import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.effects.common.CounterUnlessPaysEffect; import mage.cards.CardImpl; import mage.filter.FilterSpell; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetSpell; /** @@ -43,10 +45,10 @@ import mage.target.TargetSpell; */ public class SpellPierce extends CardImpl { - private static FilterSpell filter = new FilterSpell("noncreature spell"); + private static final FilterSpell filter = new FilterSpell("noncreature spell"); static { - filter.getNotCardType().add(CardType.CREATURE); + filter.add(Predicates.not(new CardTypePredicate(CardType.CREATURE))); } public SpellPierce(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/zendikar/SummonersBane.java b/Mage.Sets/src/mage/sets/zendikar/SummonersBane.java index 751752808a5..61b7cb7ec27 100644 --- a/Mage.Sets/src/mage/sets/zendikar/SummonersBane.java +++ b/Mage.Sets/src/mage/sets/zendikar/SummonersBane.java @@ -36,6 +36,7 @@ import mage.abilities.effects.common.CounterTargetEffect; import mage.abilities.effects.common.CreateTokenEffect; import mage.cards.CardImpl; import mage.filter.FilterSpell; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.permanent.token.Token; import mage.target.TargetSpell; @@ -48,7 +49,7 @@ public class SummonersBane extends CardImpl { private static final FilterSpell filter = new FilterSpell("creature spell"); static { - filter.getCardType().add(CardType.CREATURE); + filter.add(new CardTypePredicate(CardType.CREATURE)); } public SummonersBane(UUID ownerId) { diff --git a/Mage/src/mage/abilities/common/FetchLandActivatedAbility.java b/Mage/src/mage/abilities/common/FetchLandActivatedAbility.java index 89a73375499..c61eb6fd670 100644 --- a/Mage/src/mage/abilities/common/FetchLandActivatedAbility.java +++ b/Mage/src/mage/abilities/common/FetchLandActivatedAbility.java @@ -41,6 +41,7 @@ import mage.abilities.effects.common.search.SearchLibraryPutInPlayEffect; import mage.filter.FilterCard; import mage.filter.predicate.Predicate; import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetCardInLibrary; @@ -56,7 +57,7 @@ public class FetchLandActivatedAbility extends ActivatedAbilityImpl> subtypePredicates = new ArrayList>(); for(int i = 0; i < subtypes.length; i++){ subtypePredicates.add(new SubtypePredicate(subtypes[i])); diff --git a/Mage/src/mage/abilities/condition/common/MetalcraftCondition.java b/Mage/src/mage/abilities/condition/common/MetalcraftCondition.java index eb587fcbda0..248486aa763 100644 --- a/Mage/src/mage/abilities/condition/common/MetalcraftCondition.java +++ b/Mage/src/mage/abilities/condition/common/MetalcraftCondition.java @@ -4,6 +4,7 @@ import mage.Constants; import mage.abilities.Ability; import mage.abilities.condition.Condition; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.Game; /** @@ -16,7 +17,7 @@ public class MetalcraftCondition implements Condition { private static final FilterPermanent filter = new FilterPermanent("artifact"); static { - filter.getCardType().add(Constants.CardType.ARTIFACT); + filter.add(new CardTypePredicate(Constants.CardType.ARTIFACT)); } private static MetalcraftCondition fInstance = new MetalcraftCondition(); diff --git a/Mage/src/mage/abilities/costs/common/MetalcraftCost.java b/Mage/src/mage/abilities/costs/common/MetalcraftCost.java index c850bc341cc..7e0fd0d6551 100644 --- a/Mage/src/mage/abilities/costs/common/MetalcraftCost.java +++ b/Mage/src/mage/abilities/costs/common/MetalcraftCost.java @@ -33,6 +33,7 @@ import mage.Constants.CardType; import mage.abilities.Ability; import mage.abilities.costs.CostImpl; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.Game; /** @@ -44,7 +45,7 @@ public class MetalcraftCost extends CostImpl { private static final FilterPermanent filter = new FilterPermanent("artifact"); static { - filter.getCardType().add(CardType.ARTIFACT); + filter.add(new CardTypePredicate(CardType.ARTIFACT)); } public MetalcraftCost() { diff --git a/Mage/src/mage/abilities/keyword/AffinityForArtifactsAbility.java b/Mage/src/mage/abilities/keyword/AffinityForArtifactsAbility.java index 1732aa5efe8..572b74bbda1 100644 --- a/Mage/src/mage/abilities/keyword/AffinityForArtifactsAbility.java +++ b/Mage/src/mage/abilities/keyword/AffinityForArtifactsAbility.java @@ -33,8 +33,8 @@ import mage.abilities.SpellAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.costs.AdjustingSourceCosts; import mage.abilities.effects.common.AffinityEffect; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.Game; import mage.util.CardUtil; @@ -45,8 +45,7 @@ public class AffinityForArtifactsAbility extends SimpleStaticAbility implements private static final FilterControlledPermanent filter = new FilterControlledPermanent(); static { - filter.getCardType().add(Constants.CardType.ARTIFACT); - filter.setScopeCardType(Filter.ComparisonScope.Any); + filter.add(new CardTypePredicate(Constants.CardType.ARTIFACT)); } public AffinityForArtifactsAbility() { diff --git a/Mage/src/mage/filter/FilterImpl.java b/Mage/src/mage/filter/FilterImpl.java index 4757dab3325..9654236b7a1 100644 --- a/Mage/src/mage/filter/FilterImpl.java +++ b/Mage/src/mage/filter/FilterImpl.java @@ -30,7 +30,6 @@ package mage.filter; import java.util.ArrayList; import java.util.List; -import mage.Constants.CardType; import mage.filter.predicate.Predicate; import mage.game.Game; @@ -41,9 +40,6 @@ import mage.game.Game; */ public abstract class FilterImpl> implements Filter { - protected static ListComparer compCardType = new ListComparer(); - protected static ListComparer compString = new ListComparer(); - protected List predicates = new ArrayList(); protected String message; protected boolean notFilter = false; diff --git a/Mage/src/mage/filter/FilterObject.java b/Mage/src/mage/filter/FilterObject.java index ca09a278d1a..ce1f0e05449 100644 --- a/Mage/src/mage/filter/FilterObject.java +++ b/Mage/src/mage/filter/FilterObject.java @@ -28,24 +28,16 @@ package mage.filter; -import mage.Constants.CardType; import mage.MageObject; import mage.ObjectColor; import mage.game.Game; -import java.util.ArrayList; -import java.util.List; - /** * * @author BetaSteward_at_googlemail.com * @author North */ public class FilterObject> extends FilterImpl implements Filter { - protected List cardType = new ArrayList(); - protected ComparisonScope scopeCardType = ComparisonScope.Any; - protected List notCardType = new ArrayList(); - protected ComparisonScope scopeNotCardType = ComparisonScope.Any; protected boolean colorless; protected boolean useColorless; protected boolean useColor; @@ -70,10 +62,6 @@ public class FilterObject> ex public FilterObject(FilterObject filter) { super(filter); - this.cardType.addAll(filter.cardType); - this.notCardType.addAll(filter.notCardType); - this.scopeCardType = filter.scopeCardType; - this.scopeNotCardType = filter.scopeNotCardType; this.colorless = filter.colorless; this.useColorless = filter.useColorless; this.useColor = filter.useColor; @@ -110,35 +98,9 @@ public class FilterObject> ex return notFilter; } - if (cardType.size() > 0) { - if (!compCardType.compare(cardType, object.getCardType(), scopeCardType, false)) - return notFilter; - } - - if (notCardType.size() > 0) { - if (compCardType.compare(notCardType, object.getCardType(), scopeNotCardType, false)) - return notFilter; - } - return !notFilter; } - public List getCardType() { - return this.cardType; - } - - public List getNotCardType() { - return this.notCardType; - } - - public void setScopeCardType(ComparisonScope scopeCardType) { - this.scopeCardType = scopeCardType; - } - - public void setScopeNotCardType(ComparisonScope scopeNotCardType) { - this.scopeNotCardType = scopeNotCardType; - } - public void setColor(ObjectColor color) { this.color = color; } diff --git a/Mage/src/mage/filter/common/FilterArtifactCard.java b/Mage/src/mage/filter/common/FilterArtifactCard.java index a6b9c6b7261..f67a1722318 100644 --- a/Mage/src/mage/filter/common/FilterArtifactCard.java +++ b/Mage/src/mage/filter/common/FilterArtifactCard.java @@ -30,6 +30,7 @@ package mage.filter.common; import mage.Constants.CardType; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.CardTypePredicate; /** * @@ -43,7 +44,7 @@ public class FilterArtifactCard extends FilterCard { public FilterArtifactCard(String name) { super(name); - this.cardType.add(CardType.ARTIFACT); + this.add(new CardTypePredicate(CardType.ARTIFACT)); } public FilterArtifactCard(final FilterArtifactCard filter) { diff --git a/Mage/src/mage/filter/common/FilterArtifactPermanent.java b/Mage/src/mage/filter/common/FilterArtifactPermanent.java index 8072a52527c..2ff6c5bf17c 100644 --- a/Mage/src/mage/filter/common/FilterArtifactPermanent.java +++ b/Mage/src/mage/filter/common/FilterArtifactPermanent.java @@ -30,6 +30,7 @@ package mage.filter.common; import mage.Constants.CardType; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.Game; import mage.game.permanent.Permanent; @@ -50,7 +51,7 @@ public class FilterArtifactPermanent> exten public FilterArtifactPermanent(String name) { super(name); - cardType.add(CardType.ARTIFACT); + this.add(new CardTypePredicate(CardType.ARTIFACT)); } public FilterArtifactPermanent(final FilterArtifactPermanent filter) { diff --git a/Mage/src/mage/filter/common/FilterAura.java b/Mage/src/mage/filter/common/FilterAura.java index 83d137aaffd..e4c6cfd5611 100644 --- a/Mage/src/mage/filter/common/FilterAura.java +++ b/Mage/src/mage/filter/common/FilterAura.java @@ -30,6 +30,7 @@ package mage.filter.common; import mage.Constants.CardType; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.filter.predicate.mageobject.SubtypePredicate; /** @@ -44,7 +45,7 @@ public class FilterAura extends FilterPermanent { public FilterAura(String name) { super(name); - this.cardType.add(CardType.ENCHANTMENT); + this.add(new CardTypePredicate(CardType.ENCHANTMENT)); this.add(new SubtypePredicate("Aura")); } diff --git a/Mage/src/mage/filter/common/FilterAuraCard.java b/Mage/src/mage/filter/common/FilterAuraCard.java index e9ae06cfdee..1608027ad17 100644 --- a/Mage/src/mage/filter/common/FilterAuraCard.java +++ b/Mage/src/mage/filter/common/FilterAuraCard.java @@ -30,6 +30,7 @@ package mage.filter.common; import mage.Constants.CardType; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.CardTypePredicate; /** * @@ -43,7 +44,7 @@ public class FilterAuraCard extends FilterCard { public FilterAuraCard(String name) { super(name); - this.cardType.add(CardType.ENCHANTMENT); + this.add(new CardTypePredicate(CardType.ENCHANTMENT)); } public FilterAuraCard(final FilterAuraCard filter) { diff --git a/Mage/src/mage/filter/common/FilterBasicLandCard.java b/Mage/src/mage/filter/common/FilterBasicLandCard.java index 9a7d3884280..fc033c7ed1d 100644 --- a/Mage/src/mage/filter/common/FilterBasicLandCard.java +++ b/Mage/src/mage/filter/common/FilterBasicLandCard.java @@ -30,6 +30,7 @@ package mage.filter.common; import mage.Constants.CardType; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.filter.predicate.mageobject.SupertypePredicate; /** @@ -40,8 +41,7 @@ public class FilterBasicLandCard extends FilterCard { public FilterBasicLandCard() { super("basic land card"); - this.cardType.add(CardType.LAND); - this.setScopeCardType(ComparisonScope.Any); + this.add(new CardTypePredicate(CardType.LAND)); this.add(new SupertypePredicate("Basic")); } diff --git a/Mage/src/mage/filter/common/FilterControlledCreaturePermanent.java b/Mage/src/mage/filter/common/FilterControlledCreaturePermanent.java index 245936e7c09..fcbac5d5f90 100644 --- a/Mage/src/mage/filter/common/FilterControlledCreaturePermanent.java +++ b/Mage/src/mage/filter/common/FilterControlledCreaturePermanent.java @@ -29,6 +29,7 @@ package mage.filter.common; import mage.Constants.CardType; +import mage.filter.predicate.mageobject.CardTypePredicate; /** * @@ -42,7 +43,7 @@ public class FilterControlledCreaturePermanent { public FilterCreatureCard(String name) { super(name); - cardType.add(CardType.CREATURE); + this.add(new CardTypePredicate(CardType.CREATURE)); } public FilterCreatureCard(final FilterCreatureCard filter) { diff --git a/Mage/src/mage/filter/common/FilterCreaturePermanent.java b/Mage/src/mage/filter/common/FilterCreaturePermanent.java index eb6622e0e65..a5f3c971623 100644 --- a/Mage/src/mage/filter/common/FilterCreaturePermanent.java +++ b/Mage/src/mage/filter/common/FilterCreaturePermanent.java @@ -30,6 +30,7 @@ package mage.filter.common; import mage.Constants.CardType; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.Game; import mage.game.permanent.Permanent; @@ -52,7 +53,7 @@ public class FilterCreaturePermanent> exten public FilterCreaturePermanent(String name) { super(name); - cardType.add(CardType.CREATURE); + this.add(new CardTypePredicate(CardType.CREATURE)); } public FilterCreaturePermanent(final FilterCreaturePermanent filter) { diff --git a/Mage/src/mage/filter/common/FilterEnchantment.java b/Mage/src/mage/filter/common/FilterEnchantment.java index 7b105a022ca..7a6beeba418 100644 --- a/Mage/src/mage/filter/common/FilterEnchantment.java +++ b/Mage/src/mage/filter/common/FilterEnchantment.java @@ -30,6 +30,7 @@ package mage.filter.common; import mage.Constants.CardType; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; /** * @@ -43,7 +44,7 @@ public class FilterEnchantment extends FilterPermanent { public FilterEnchantment(String name) { super(name); - this.cardType.add(CardType.ENCHANTMENT); + this.add(new CardTypePredicate(CardType.ENCHANTMENT)); } public FilterEnchantment(final FilterEnchantment filter) { diff --git a/Mage/src/mage/filter/common/FilterEquipment.java b/Mage/src/mage/filter/common/FilterEquipment.java index 3a01d8d7afd..03769465ba1 100644 --- a/Mage/src/mage/filter/common/FilterEquipment.java +++ b/Mage/src/mage/filter/common/FilterEquipment.java @@ -30,6 +30,7 @@ package mage.filter.common; import mage.Constants.CardType; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.filter.predicate.mageobject.SubtypePredicate; /** @@ -44,7 +45,7 @@ public class FilterEquipment extends FilterPermanent { public FilterEquipment(String name) { super(name); - this.cardType.add(CardType.ARTIFACT); + this.add(new CardTypePredicate(CardType.ARTIFACT)); this.add(new SubtypePredicate("Equipment")); } diff --git a/Mage/src/mage/filter/common/FilterFortification.java b/Mage/src/mage/filter/common/FilterFortification.java index 5107d33fedc..d55ed1bc24f 100644 --- a/Mage/src/mage/filter/common/FilterFortification.java +++ b/Mage/src/mage/filter/common/FilterFortification.java @@ -30,6 +30,7 @@ package mage.filter.common; import mage.Constants.CardType; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.filter.predicate.mageobject.SubtypePredicate; /** @@ -44,7 +45,7 @@ public class FilterFortification extends FilterPermanent { public FilterFortification(String name) { super(name); - this.cardType.add(CardType.ARTIFACT); + this.add(new CardTypePredicate(CardType.ARTIFACT)); this.add(new SubtypePredicate("Fortification")); } diff --git a/Mage/src/mage/filter/common/FilterLandCard.java b/Mage/src/mage/filter/common/FilterLandCard.java index ddee1319c59..f98b1c1fd2b 100644 --- a/Mage/src/mage/filter/common/FilterLandCard.java +++ b/Mage/src/mage/filter/common/FilterLandCard.java @@ -30,6 +30,7 @@ package mage.filter.common; import mage.Constants.CardType; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.CardTypePredicate; /** * @@ -43,7 +44,7 @@ public class FilterLandCard extends FilterCard { public FilterLandCard(String name) { super(name); - cardType.add(CardType.LAND); + this.add(new CardTypePredicate(CardType.LAND)); } public FilterLandCard(final FilterLandCard filter) { diff --git a/Mage/src/mage/filter/common/FilterLandPermanent.java b/Mage/src/mage/filter/common/FilterLandPermanent.java index db01bd89bf7..e329adc3253 100644 --- a/Mage/src/mage/filter/common/FilterLandPermanent.java +++ b/Mage/src/mage/filter/common/FilterLandPermanent.java @@ -30,6 +30,7 @@ package mage.filter.common; import mage.Constants.CardType; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; /** * @@ -43,7 +44,7 @@ public class FilterLandPermanent extends FilterPermanent { public FilterLandPermanent(String name) { super(name); - cardType.add(CardType.LAND); + this.add(new CardTypePredicate(CardType.LAND)); } public FilterLandPermanent(final FilterLandPermanent filter) { diff --git a/Mage/src/mage/filter/common/FilterNonlandCard.java b/Mage/src/mage/filter/common/FilterNonlandCard.java index b73abf153cb..eb6484795f1 100644 --- a/Mage/src/mage/filter/common/FilterNonlandCard.java +++ b/Mage/src/mage/filter/common/FilterNonlandCard.java @@ -30,6 +30,8 @@ package mage.filter.common; import mage.Constants.CardType; import mage.filter.FilterCard; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; /** * @@ -43,7 +45,7 @@ public class FilterNonlandCard extends FilterCard { public FilterNonlandCard(String name) { super(name); - this.notCardType.add(CardType.LAND); + this.add(Predicates.not(new CardTypePredicate(CardType.LAND))); } public FilterNonlandCard(final FilterNonlandCard filter) { diff --git a/Mage/src/mage/filter/common/FilterNonlandPermanent.java b/Mage/src/mage/filter/common/FilterNonlandPermanent.java index 1db9d9c142a..d2fcbd2aca3 100644 --- a/Mage/src/mage/filter/common/FilterNonlandPermanent.java +++ b/Mage/src/mage/filter/common/FilterNonlandPermanent.java @@ -30,6 +30,8 @@ package mage.filter.common; import mage.Constants.CardType; import mage.filter.FilterPermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; /** * @@ -43,7 +45,7 @@ public class FilterNonlandPermanent extends FilterPermanent { public TargetBasicLandCard(Zone zone) { super(zone); filter.add(new SupertypePredicate("Basic")); - filter.getCardType().add(CardType.LAND); - filter.setScopeCardType(ComparisonScope.Any); + filter.add(new CardTypePredicate(CardType.LAND)); } public TargetBasicLandCard(final TargetBasicLandCard target) { From 13f744f09fefedf2dea584ee32680f869126a254 Mon Sep 17 00:00:00 2001 From: North Date: Fri, 13 Jul 2012 22:46:45 +0300 Subject: [PATCH 11/12] [filters] Replaced color conditions with Predicates --- .../alarareborn/SphinxOfTheSteelWind.java | 13 ++-- .../src/mage/sets/apocalypse/BogGnarr.java | 4 +- .../src/mage/sets/apocalypse/GladeGnarr.java | 4 +- .../avacynrestored/AngelOfJubilation.java | 6 +- .../mage/sets/avacynrestored/CallToServe.java | 9 ++- .../sets/betrayersofkamigawa/PusKami.java | 7 +- .../championsofkamigawa/AkkiLavarunner.java | 5 +- .../EightAndAHalfTale.java | 4 +- .../championsofkamigawa/TenzaGodosMaul.java | 7 +- .../src/mage/sets/conflux/BloodhallOoze.java | 10 +-- .../src/mage/sets/conflux/CelestialPurge.java | 12 +-- .../sets/conflux/CliffrunnerBehemoth.java | 8 +- .../sets/conflux/ControlledInstincts.java | 11 +-- .../src/mage/sets/conflux/DarkTemper.java | 5 +- .../src/mage/sets/conflux/EmberWeaver.java | 5 +- .../mage/sets/conflux/GoblinOutlander.java | 7 +- .../mage/sets/conflux/NacatlOutlander.java | 7 +- .../src/mage/sets/conflux/ToxicIguanar.java | 5 +- .../mage/sets/conflux/ValeronOutlander.java | 7 +- .../mage/sets/conflux/VedalkenOutlander.java | 7 +- .../src/mage/sets/conflux/ViewFromAbove.java | 5 +- .../mage/sets/conflux/ZombieOutlander.java | 7 +- .../mage/sets/darkascension/FaithsShield.java | 6 +- .../sets/darksteel/SwordOfFireAndIce.java | 11 +-- .../sets/darksteel/SwordOfLightAndShadow.java | 11 +-- .../src/mage/sets/dissension/SealOfDoom.java | 6 +- .../elspethvstezzeret/CelestialCrusader.java | 5 +- .../mage/sets/elspethvstezzeret/Crusade.java | 5 +- .../src/mage/sets/eventide/BalefireLiege.java | 13 ++-- .../mage/sets/eventide/BallynockTrapper.java | 4 +- .../sets/eventide/BelligerentHatchling.java | 7 +- .../mage/sets/eventide/CinderPyromancer.java | 5 +- .../mage/sets/eventide/CreakwoodLiege.java | 7 +- .../mage/sets/eventide/DeathbringerLiege.java | 14 ++-- .../mage/sets/eventide/FableOfWolfAndOwl.java | 7 +- .../src/mage/sets/eventide/FangSkulkin.java | 4 +- .../src/mage/sets/eventide/HoofSkulkin.java | 4 +- .../mage/sets/eventide/JawboneSkulkin.java | 4 +- .../mage/sets/eventide/MerrowLevitator.java | 4 +- .../mage/sets/eventide/NoxiousHatchling.java | 7 +- .../src/mage/sets/eventide/ShellSkulkin.java | 4 +- .../mage/sets/eventide/SturdyHatchling.java | 7 +- .../sets/eventide/VoraciousHatchling.java | 7 +- .../sets/eventide/WildernessHypnotist.java | 9 ++- .../src/mage/sets/fifthedition/BadMoon.java | 5 +- .../src/mage/sets/guildpact/Frazzle.java | 7 +- .../mage/sets/guildpact/TiborAndLumia.java | 8 +- .../mage/sets/guildpact/WurmweaverCoil.java | 4 +- .../src/mage/sets/magic2010/BlackKnight.java | 7 +- .../src/mage/sets/magic2010/DoomBlade.java | 7 +- .../mage/sets/magic2010/GreatSableStag.java | 11 +-- .../mage/sets/magic2010/HonorOfThePure.java | 5 +- .../mage/sets/magic2010/IgniteDisorder.java | 9 ++- .../sets/magic2010/LightwielderPaladin.java | 11 +-- .../src/mage/sets/magic2010/MoldAdder.java | 11 +-- .../src/mage/sets/magic2010/WhiteKnight.java | 7 +- .../src/mage/sets/magic2011/AutumnsVeil.java | 10 ++- .../src/mage/sets/magic2011/Combust.java | 11 +-- .../sets/magic2011/DemonOfDeathsGate.java | 5 +- .../src/mage/sets/magic2011/GaeasRevenge.java | 7 +- Mage.Sets/src/mage/sets/magic2011/Incite.java | 40 +--------- .../mage/sets/magic2012/GuardiansPledge.java | 5 +- .../mage/sets/magic2013/AkromasMemorial.java | 11 +-- .../sets/magic2013/GoblinBattleJester.java | 5 +- .../mage/sets/magic2013/KnightOfGlory.java | 9 +-- .../mage/sets/magic2013/KnightOfInfamy.java | 7 +- Mage.Sets/src/mage/sets/magic2013/Revive.java | 5 +- .../mage/sets/mirrodin/TrollsOfTelJilad.java | 5 +- .../mirrodinbesieged/GreenSunsZenith.java | 7 +- .../sets/mirrodinbesieged/MirranCrusader.java | 16 ++-- .../mirrodinbesieged/PhyrexianCrusader.java | 8 +- .../SwordOfFeastAndFamine.java | 9 ++- .../sets/morningtide/ChameleonColossus.java | 5 +- .../src/mage/sets/morningtide/VioletPall.java | 6 +- .../sets/newphyrexia/ApostlesBlessing.java | 6 +- .../newphyrexia/ShrineOfBoundlessGrowth.java | 5 +- .../sets/newphyrexia/ShrineOfBurningRage.java | 7 +- .../newphyrexia/ShrineOfLimitlessPower.java | 5 +- .../newphyrexia/ShrineOfLoyalLegions.java | 5 +- .../newphyrexia/ShrineOfPiercingVision.java | 5 +- .../sets/newphyrexia/SwordOfWarAndPeace.java | 11 +-- .../mage/sets/newphyrexia/VulshokRefugee.java | 7 +- .../sets/planarchaos/CrovaxAscendantHero.java | 14 ++-- .../sets/planarchaos/DuneriderOutlaw.java | 4 +- .../sets/planechase/AscendantEvincar.java | 10 +-- .../sets/ravnika/AgrusKosWojekVeteran.java | 7 +- .../src/mage/sets/ravnika/HuntedHorror.java | 4 +- .../riseoftheeldrazi/AncientStirrings.java | 4 +- .../sets/riseoftheeldrazi/Corpsehatch.java | 7 +- .../riseoftheeldrazi/EmrakulTheAeonsTorn.java | 5 +- .../sets/riseoftheeldrazi/KhalniHydra.java | 4 +- .../mage/sets/riseoftheeldrazi/Vendetta.java | 5 +- .../saviorsofkamigawa/EiganjoFreeRiders.java | 5 +- .../sets/saviorsofkamigawa/HandOfCruelty.java | 5 +- .../sets/saviorsofkamigawa/HandOfHonor.java | 5 +- .../saviorsofkamigawa/OniOfWildPlaces.java | 5 +- .../saviorsofkamigawa/SkullCollector.java | 5 +- .../saviorsofkamigawa/StampedingSerow.java | 5 +- .../scarsofmirrodin/BellowingTanglewurm.java | 5 +- .../sets/scarsofmirrodin/EtchedChampion.java | 17 +++-- .../sets/scarsofmirrodin/GrandArchitect.java | 8 +- .../scarsofmirrodin/SwordOfBodyAndMind.java | 11 +-- .../mage/sets/shadowmoor/BloodmarkMentor.java | 5 +- .../mage/sets/shadowmoor/BoartuskLiege.java | 8 +- .../mage/sets/shadowmoor/CorrosiveMentor.java | 5 +- .../mage/sets/shadowmoor/CrowdOfCinders.java | 5 +- .../sets/shadowmoor/DeepchannelMentor.java | 5 +- .../mage/sets/shadowmoor/DroveOfElves.java | 5 +- .../mage/sets/shadowmoor/EmberstrikeDuo.java | 8 +- .../src/mage/sets/shadowmoor/FaerieSwarm.java | 5 +- .../sets/shadowmoor/GlenElendraLiege.java | 8 +- .../mage/sets/shadowmoor/GravelgillDuo.java | 8 +- .../sets/shadowmoor/GutturalResponse.java | 5 +- .../mage/sets/shadowmoor/HordeOfBoggarts.java | 5 +- .../mage/sets/shadowmoor/KithkinRabble.java | 5 +- .../sets/shadowmoor/LeechriddenSwamp.java | 5 +- .../src/mage/sets/shadowmoor/MassCalcify.java | 7 +- .../mage/sets/shadowmoor/MidnightBanshee.java | 7 +- .../mage/sets/shadowmoor/OversoulOfDusk.java | 13 ++-- .../sets/shadowmoor/ResplendentMentor.java | 5 +- .../mage/sets/shadowmoor/RoughshodMentor.java | 5 +- .../src/mage/sets/shadowmoor/SafeholdDuo.java | 8 +- .../sets/shadowmoor/SootstokeKindler.java | 11 +-- .../mage/sets/shadowmoor/TattermungeDuo.java | 8 +- .../mage/sets/shadowmoor/ThistledownDuo.java | 8 +- .../sets/shadowmoor/ThistledownLiege.java | 8 +- .../mage/sets/shardsofalara/AngelsHerald.java | 11 ++- .../shardsofalara/ExecutionersCapsule.java | 7 +- .../src/mage/sets/tempest/DarkBanishing.java | 7 +- .../src/mage/sets/tempest/DreadOfNight.java | 5 +- Mage.Sets/src/mage/sets/tempest/Perish.java | 5 +- .../src/mage/sets/tempest/RecklessSpite.java | 7 +- Mage.Sets/src/mage/sets/tenth/Deathmark.java | 11 +-- .../src/mage/sets/tenth/Flashfreeze.java | 11 +-- Mage.Sets/src/mage/sets/tenth/HateWeaver.java | 11 +-- .../src/mage/sets/tenth/MightWeaver.java | 11 +-- .../src/mage/sets/tenth/QuirionDryad.java | 15 ++-- Mage.Sets/src/mage/sets/tenth/RageWeaver.java | 11 +-- Mage.Sets/src/mage/sets/tenth/SkyWeaver.java | 11 +-- .../src/mage/sets/tenth/SpiritWeaver.java | 11 +-- Mage.Sets/src/mage/sets/tenth/Terror.java | 6 +- .../sets/timeshifted/AkromaAngelOfWrath.java | 15 ++-- .../sets/timeshifted/WhirlingDervish.java | 4 +- .../mage/sets/urzaslegacy/BloatedToad.java | 7 +- .../mage/sets/urzaslegacy/BoneShredder.java | 6 +- .../mage/sets/urzaslegacy/DarkwatchElves.java | 7 +- .../sets/urzaslegacy/DefenderOfChaos.java | 7 +- .../mage/sets/urzaslegacy/DefenderOfLaw.java | 7 +- .../mage/sets/urzassaga/AbsoluteGrace.java | 7 +- .../src/mage/sets/urzassaga/AbsoluteLaw.java | 7 +- .../mage/sets/urzassaga/DiscipleOfGrace.java | 7 +- .../mage/sets/urzassaga/DiscipleOfLaw.java | 7 +- .../mage/sets/urzassaga/EasternPaladin.java | 7 +- Mage.Sets/src/mage/sets/urzassaga/Guma.java | 7 +- .../src/mage/sets/urzassaga/VoiceOfGrace.java | 7 +- .../src/mage/sets/urzassaga/VoiceOfLaw.java | 7 +- .../mage/sets/urzassaga/WesternPaladin.java | 7 +- .../src/mage/sets/worldwake/EyeOfUgin.java | 4 +- .../mage/sets/worldwake/KorFirewalker.java | 9 +-- .../mage/sets/zendikar/BraveTheElements.java | 11 +-- .../src/mage/sets/zendikar/ChandraAblaze.java | 4 +- .../mage/sets/zendikar/CryptOfAgadeem.java | 4 +- .../mage/sets/zendikar/DevoutLightcaster.java | 10 +-- .../src/mage/sets/zendikar/HideousEnd.java | 7 +- .../mage/sets/zendikar/MalakirBloodwitch.java | 5 +- .../sets/zendikar/OranRiefTheVastwood.java | 7 +- .../GainProtectionFromColorTargetEffect.java | 6 +- Mage/src/mage/filter/FilterObject.java | 75 +------------------ 168 files changed, 618 insertions(+), 697 deletions(-) diff --git a/Mage.Sets/src/mage/sets/alarareborn/SphinxOfTheSteelWind.java b/Mage.Sets/src/mage/sets/alarareborn/SphinxOfTheSteelWind.java index 538606f4279..d29a577a1a1 100644 --- a/Mage.Sets/src/mage/sets/alarareborn/SphinxOfTheSteelWind.java +++ b/Mage.Sets/src/mage/sets/alarareborn/SphinxOfTheSteelWind.java @@ -32,23 +32,24 @@ import java.util.UUID; import mage.Constants.CardType; import mage.Constants.Rarity; import mage.MageInt; +import mage.ObjectColor; import mage.abilities.keyword.*; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterCard; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.ColorPredicate; /** * * @author Loki */ public class SphinxOfTheSteelWind extends CardImpl { - private static FilterCard filter = new FilterCard("red and from green"); + private static final FilterCard filter = new FilterCard("red and from green"); static { - filter.setUseColor(true); - filter.getColor().setRed(true); - filter.getColor().setGreen(true); - filter.setScopeColor(Filter.ComparisonScope.Any); + filter.add(Predicates.or( + new ColorPredicate(ObjectColor.RED), + new ColorPredicate(ObjectColor.GREEN))); } public SphinxOfTheSteelWind (UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/apocalypse/BogGnarr.java b/Mage.Sets/src/mage/sets/apocalypse/BogGnarr.java index 4495bb4600d..5aef251731c 100644 --- a/Mage.Sets/src/mage/sets/apocalypse/BogGnarr.java +++ b/Mage.Sets/src/mage/sets/apocalypse/BogGnarr.java @@ -39,6 +39,7 @@ import mage.abilities.TriggeredAbilityImpl; import mage.abilities.effects.common.continious.BoostSourceEffect; import mage.cards.CardImpl; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.ColorPredicate; import mage.game.Game; import mage.game.events.GameEvent; import mage.game.stack.Spell; @@ -74,8 +75,7 @@ class BogGnarrTriggeredAbility extends TriggeredAbilityImpl { private final static FilterCreaturePermanent filterNonBlack = new FilterCreaturePermanent("nonblack creatures"); static { - filterNonBlack.setUseColor(true); - filterNonBlack.setColor(ObjectColor.BLACK); - filterNonBlack.setNotColor(true); + filterNonBlack.add(Predicates.not(new ColorPredicate(ObjectColor.BLACK))); } public AngelOfJubilation(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/avacynrestored/CallToServe.java b/Mage.Sets/src/mage/sets/avacynrestored/CallToServe.java index e1aff94eecd..8a09669bff3 100644 --- a/Mage.Sets/src/mage/sets/avacynrestored/CallToServe.java +++ b/Mage.Sets/src/mage/sets/avacynrestored/CallToServe.java @@ -32,6 +32,7 @@ import java.util.UUID; import mage.Constants; import mage.Constants.CardType; import mage.Constants.Rarity; +import mage.ObjectColor; import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.common.AttachEffect; @@ -42,6 +43,8 @@ import mage.abilities.keyword.EnchantAbility; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.ColorPredicate; import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; @@ -50,12 +53,10 @@ import mage.target.common.TargetCreaturePermanent; * @author Loki */ public class CallToServe extends CardImpl { - private static FilterCreaturePermanent filter = new FilterCreaturePermanent("nonblack creature"); + private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonblack creature"); static { - filter.setUseColor(true); - filter.setNotColor(true); - filter.getColor().setBlack(true); + filter.add(Predicates.not(new ColorPredicate(ObjectColor.BLACK))); } public CallToServe(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/betrayersofkamigawa/PusKami.java b/Mage.Sets/src/mage/sets/betrayersofkamigawa/PusKami.java index 31829446d5c..2e5b0c6400e 100644 --- a/Mage.Sets/src/mage/sets/betrayersofkamigawa/PusKami.java +++ b/Mage.Sets/src/mage/sets/betrayersofkamigawa/PusKami.java @@ -33,6 +33,7 @@ import mage.Constants; import mage.Constants.CardType; import mage.Constants.Rarity; import mage.MageInt; +import mage.ObjectColor; import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.common.SacrificeSourceCost; @@ -41,6 +42,8 @@ import mage.abilities.effects.common.DestroyTargetEffect; import mage.abilities.keyword.SoulshiftAbility; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.ColorPredicate; import mage.target.common.TargetCreaturePermanent; /** @@ -52,9 +55,7 @@ public class PusKami extends CardImpl { private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("nonblack creature"); static { - filter.setUseColor(true); - filter.getColor().setBlack(true); - filter.setNotColor(true); + filter.add(Predicates.not(new ColorPredicate(ObjectColor.BLACK))); } public PusKami(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/AkkiLavarunner.java b/Mage.Sets/src/mage/sets/championsofkamigawa/AkkiLavarunner.java index 1eb8644725d..0e64c865b7e 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/AkkiLavarunner.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/AkkiLavarunner.java @@ -15,8 +15,8 @@ import mage.abilities.keyword.HasteAbility; import mage.abilities.keyword.ProtectionAbility; import mage.cards.Card; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.ColorPredicate; import mage.game.Game; import mage.game.events.DamagedPlayerEvent; import mage.game.events.GameEvent; @@ -90,8 +90,7 @@ class TokTokVolcanoBorn extends Token { private final static FilterCard filter = new FilterCard("red"); static { - filter.setColor(ObjectColor.RED); - filter.setScopeColor(Filter.ComparisonScope.Any); + filter.add(new ColorPredicate(ObjectColor.RED)); } TokTokVolcanoBorn() { diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/EightAndAHalfTale.java b/Mage.Sets/src/mage/sets/championsofkamigawa/EightAndAHalfTale.java index 10047d30743..04aee3d3bfb 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/EightAndAHalfTale.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/EightAndAHalfTale.java @@ -43,6 +43,7 @@ import mage.abilities.effects.common.continious.SetCardColorTargetEffect; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.ColorPredicate; import mage.target.common.TargetControlledPermanent; import mage.target.common.TargetSpellOrPermanent; @@ -55,8 +56,7 @@ public class EightAndAHalfTale extends CardImpl { private final static FilterCard filter = new FilterCard("white"); static { - filter.setUseColor(true); - filter.getColor().setWhite(true); + filter.add(new ColorPredicate(ObjectColor.WHITE)); } public EightAndAHalfTale(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/TenzaGodosMaul.java b/Mage.Sets/src/mage/sets/championsofkamigawa/TenzaGodosMaul.java index 9ed66d7f53d..2eaf3ad1809 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/TenzaGodosMaul.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/TenzaGodosMaul.java @@ -35,6 +35,7 @@ import mage.Constants.AttachmentType; import mage.Constants.CardType; import mage.Constants.Rarity; import mage.Constants.Zone; +import mage.ObjectColor; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.condition.common.EquippedMatchesFilterCondition; import mage.abilities.costs.mana.GenericManaCost; @@ -44,8 +45,8 @@ import mage.abilities.effects.common.continious.GainAbilityAttachedEffect; import mage.abilities.keyword.EquipAbility; import mage.abilities.keyword.TrampleAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.ColorPredicate; import mage.filter.predicate.mageobject.SupertypePredicate; import mage.target.common.TargetControlledCreaturePermanent; @@ -64,9 +65,7 @@ public class TenzaGodosMaul extends CardImpl { static { legendaryFilter.add(new SupertypePredicate("Legendary")); - redFilter.getColor().setRed(true); - redFilter.setUseColor(true); - redFilter.setScopeColor(Filter.ComparisonScope.Any); + redFilter.add(new ColorPredicate(ObjectColor.RED)); } public TenzaGodosMaul(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/conflux/BloodhallOoze.java b/Mage.Sets/src/mage/sets/conflux/BloodhallOoze.java index cd5f5f017a4..ec74f91b4b7 100644 --- a/Mage.Sets/src/mage/sets/conflux/BloodhallOoze.java +++ b/Mage.Sets/src/mage/sets/conflux/BloodhallOoze.java @@ -32,12 +32,14 @@ import mage.Constants.CardType; import mage.Constants.Rarity; import mage.Constants.Zone; import mage.MageInt; +import mage.ObjectColor; import mage.abilities.TriggeredAbilityImpl; import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.cards.CardImpl; import mage.counters.CounterType; import mage.filter.FilterPermanent; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.ColorPredicate; import mage.game.Game; import mage.game.events.GameEvent; import mage.game.events.GameEvent.EventType; @@ -56,7 +58,7 @@ public class BloodhallOoze extends CardImpl { this.color.setRed(true); this.subtype.add("Ooze"); this.power = new MageInt(1); - this.toughness = new MageInt(1); + this.toughness = new MageInt(1); this.addAbility(new BloodhallOozeTriggeredAbility1()); this.addAbility(new BloodhallOozeTriggeredAbility2()); } @@ -77,8 +79,7 @@ class BloodhallOozeTriggeredAbility1 extends TriggeredAbilityImpl { private static final FilterPermanent filter = new FilterPermanent("black or red permanent"); static { - filter.setUseColor(true); - filter.setScopeColor(ComparisonScope.Any); - filter.getColor().setBlack(true); - filter.getColor().setRed(true); + filter.add(Predicates.or( + new ColorPredicate(ObjectColor.BLACK), + new ColorPredicate(ObjectColor.RED))); } public CelestialPurge(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/conflux/CliffrunnerBehemoth.java b/Mage.Sets/src/mage/sets/conflux/CliffrunnerBehemoth.java index b3558568904..f8940938c8a 100644 --- a/Mage.Sets/src/mage/sets/conflux/CliffrunnerBehemoth.java +++ b/Mage.Sets/src/mage/sets/conflux/CliffrunnerBehemoth.java @@ -33,6 +33,7 @@ import mage.Constants; import mage.Constants.CardType; import mage.Constants.Rarity; import mage.MageInt; +import mage.ObjectColor; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.condition.common.ControlsPermanentCondition; import mage.abilities.decorator.ConditionalContinousEffect; @@ -41,6 +42,7 @@ import mage.abilities.keyword.HasteAbility; import mage.abilities.keyword.LifelinkAbility; import mage.cards.CardImpl; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -51,10 +53,8 @@ public class CliffrunnerBehemoth extends CardImpl { private static final FilterPermanent whitePermanentFilter = new FilterPermanent("white"); static { - redPermanentFilter.setUseColor(true); - redPermanentFilter.getColor().setRed(true); - whitePermanentFilter.setUseColor(true); - whitePermanentFilter.getColor().setWhite(true); + redPermanentFilter.add(new ColorPredicate(ObjectColor.RED)); + whitePermanentFilter.add(new ColorPredicate(ObjectColor.WHITE)); } diff --git a/Mage.Sets/src/mage/sets/conflux/ControlledInstincts.java b/Mage.Sets/src/mage/sets/conflux/ControlledInstincts.java index ae92fc8c99d..efcd0361d2a 100644 --- a/Mage.Sets/src/mage/sets/conflux/ControlledInstincts.java +++ b/Mage.Sets/src/mage/sets/conflux/ControlledInstincts.java @@ -32,13 +32,15 @@ import mage.Constants.CardType; import mage.Constants.Outcome; import mage.Constants.Rarity; import mage.Constants.Zone; +import mage.ObjectColor; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.common.AttachEffect; import mage.abilities.effects.common.SkipEnchantedUntapEffect; import mage.abilities.keyword.EnchantAbility; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.ColorPredicate; import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; @@ -51,10 +53,9 @@ public class ControlledInstincts extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("red or green creature"); static { - filter.getColor().setRed(true); - filter.getColor().setGreen(true); - filter.setUseColor(true); - filter.setScopeColor(ComparisonScope.Any); + filter.add(Predicates.or( + new ColorPredicate(ObjectColor.RED), + new ColorPredicate(ObjectColor.GREEN))); } public ControlledInstincts(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/conflux/DarkTemper.java b/Mage.Sets/src/mage/sets/conflux/DarkTemper.java index 44e40703c9a..324cd2bd634 100644 --- a/Mage.Sets/src/mage/sets/conflux/DarkTemper.java +++ b/Mage.Sets/src/mage/sets/conflux/DarkTemper.java @@ -30,10 +30,12 @@ package mage.sets.conflux; import mage.Constants.CardType; import mage.Constants.Outcome; import mage.Constants.Rarity; +import mage.ObjectColor; import mage.abilities.Ability; import mage.abilities.effects.OneShotEffect; import mage.cards.CardImpl; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.ColorPredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.target.common.TargetCreaturePermanent; @@ -91,8 +93,7 @@ class DarkTemperEffect extends OneShotEffect { } FilterPermanent filter = new FilterPermanent("black permanent"); - filter.getColor().setBlack(true); - filter.setUseColor(true); + filter.add(new ColorPredicate(ObjectColor.BLACK)); if (game.getBattlefield().countAll(filter, source.getControllerId(), game) == 0) { permanent.damage(2, source.getSourceId(), game, true, false); diff --git a/Mage.Sets/src/mage/sets/conflux/EmberWeaver.java b/Mage.Sets/src/mage/sets/conflux/EmberWeaver.java index fac732b158c..9d8a11dfb88 100644 --- a/Mage.Sets/src/mage/sets/conflux/EmberWeaver.java +++ b/Mage.Sets/src/mage/sets/conflux/EmberWeaver.java @@ -33,6 +33,7 @@ import mage.Constants; import mage.Constants.CardType; import mage.Constants.Rarity; import mage.MageInt; +import mage.ObjectColor; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.condition.common.ControlsPermanentCondition; import mage.abilities.decorator.ConditionalContinousEffect; @@ -42,6 +43,7 @@ import mage.abilities.keyword.FirstStrikeAbility; import mage.abilities.keyword.ReachAbility; import mage.cards.CardImpl; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.ColorPredicate; /** * @author Loki @@ -50,8 +52,7 @@ public class EmberWeaver extends CardImpl { private static final FilterPermanent redPermanentFilter = new FilterPermanent("red"); static { - redPermanentFilter.setUseColor(true); - redPermanentFilter.getColor().setRed(true); + redPermanentFilter.add(new ColorPredicate(ObjectColor.RED)); } public EmberWeaver(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/conflux/GoblinOutlander.java b/Mage.Sets/src/mage/sets/conflux/GoblinOutlander.java index fe74e521225..20624cf7f74 100644 --- a/Mage.Sets/src/mage/sets/conflux/GoblinOutlander.java +++ b/Mage.Sets/src/mage/sets/conflux/GoblinOutlander.java @@ -32,10 +32,11 @@ import java.util.UUID; import mage.Constants.CardType; import mage.Constants.Rarity; import mage.MageInt; +import mage.ObjectColor; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -45,9 +46,7 @@ public class GoblinOutlander extends CardImpl { private static final FilterCard filter = new FilterCard("white"); static { - filter.setUseColor(true); - filter.getColor().setWhite(true); - filter.setScopeColor(ComparisonScope.Any); + filter.add(new ColorPredicate(ObjectColor.WHITE)); } public GoblinOutlander(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/conflux/NacatlOutlander.java b/Mage.Sets/src/mage/sets/conflux/NacatlOutlander.java index 1bc54d3d9ee..50ba65c968a 100644 --- a/Mage.Sets/src/mage/sets/conflux/NacatlOutlander.java +++ b/Mage.Sets/src/mage/sets/conflux/NacatlOutlander.java @@ -32,10 +32,11 @@ import java.util.UUID; import mage.Constants.CardType; import mage.Constants.Rarity; import mage.MageInt; +import mage.ObjectColor; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -45,9 +46,7 @@ public class NacatlOutlander extends CardImpl { private static final FilterCard filter = new FilterCard("blue"); static { - filter.setUseColor(true); - filter.getColor().setBlue(true); - filter.setScopeColor(ComparisonScope.Any); + filter.add(new ColorPredicate(ObjectColor.BLUE)); } public NacatlOutlander(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/conflux/ToxicIguanar.java b/Mage.Sets/src/mage/sets/conflux/ToxicIguanar.java index cf95751024e..7334c19b7fe 100644 --- a/Mage.Sets/src/mage/sets/conflux/ToxicIguanar.java +++ b/Mage.Sets/src/mage/sets/conflux/ToxicIguanar.java @@ -33,6 +33,7 @@ import mage.Constants.Duration; import mage.Constants.Rarity; import mage.Constants.Zone; import mage.MageInt; +import mage.ObjectColor; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.condition.common.ControlsPermanentCondition; import mage.abilities.decorator.ConditionalContinousEffect; @@ -40,6 +41,7 @@ import mage.abilities.effects.common.continious.GainAbilitySourceEffect; import mage.abilities.keyword.DeathtouchAbility; import mage.cards.CardImpl; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -50,8 +52,7 @@ public class ToxicIguanar extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("green"); static { - filter.setUseColor(true); - filter.getColor().setGreen(true); + filter.add(new ColorPredicate(ObjectColor.GREEN)); } public ToxicIguanar(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/conflux/ValeronOutlander.java b/Mage.Sets/src/mage/sets/conflux/ValeronOutlander.java index 9d1bfd98667..9d1e07e7bbe 100644 --- a/Mage.Sets/src/mage/sets/conflux/ValeronOutlander.java +++ b/Mage.Sets/src/mage/sets/conflux/ValeronOutlander.java @@ -32,10 +32,11 @@ import java.util.UUID; import mage.Constants.CardType; import mage.Constants.Rarity; import mage.MageInt; +import mage.ObjectColor; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -45,9 +46,7 @@ public class ValeronOutlander extends CardImpl { private static final FilterCard filter = new FilterCard("black"); static { - filter.setUseColor(true); - filter.getColor().setBlack(true); - filter.setScopeColor(ComparisonScope.Any); + filter.add(new ColorPredicate(ObjectColor.BLACK)); } public ValeronOutlander(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/conflux/VedalkenOutlander.java b/Mage.Sets/src/mage/sets/conflux/VedalkenOutlander.java index a5e7b23d9b4..7377aef0514 100644 --- a/Mage.Sets/src/mage/sets/conflux/VedalkenOutlander.java +++ b/Mage.Sets/src/mage/sets/conflux/VedalkenOutlander.java @@ -32,10 +32,11 @@ import java.util.UUID; import mage.Constants.CardType; import mage.Constants.Rarity; import mage.MageInt; +import mage.ObjectColor; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -45,9 +46,7 @@ public class VedalkenOutlander extends CardImpl { private static final FilterCard filter = new FilterCard("red"); static { - filter.setUseColor(true); - filter.getColor().setRed(true); - filter.setScopeColor(ComparisonScope.Any); + filter.add(new ColorPredicate(ObjectColor.RED)); } public VedalkenOutlander(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/conflux/ViewFromAbove.java b/Mage.Sets/src/mage/sets/conflux/ViewFromAbove.java index aa736581b43..776318bc1d8 100644 --- a/Mage.Sets/src/mage/sets/conflux/ViewFromAbove.java +++ b/Mage.Sets/src/mage/sets/conflux/ViewFromAbove.java @@ -31,6 +31,7 @@ import mage.Constants.CardType; import mage.Constants.Duration; import mage.Constants.Rarity; import mage.Constants.Zone; +import mage.ObjectColor; import mage.abilities.Ability; import mage.abilities.effects.PostResolveEffect; import mage.abilities.effects.common.continious.GainAbilityTargetEffect; @@ -38,6 +39,7 @@ import mage.abilities.keyword.FlyingAbility; import mage.cards.Card; import mage.cards.CardImpl; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.ColorPredicate; import mage.game.Game; import mage.target.common.TargetCreaturePermanent; @@ -90,8 +92,7 @@ class ViewFromAboveEffect extends PostResolveEffect { @Override public void postResolve(Card card, Ability source, UUID controllerId, Game game) { FilterPermanent filter = new FilterPermanent("white permanent"); - filter.getColor().setWhite(true); - filter.setUseColor(true); + filter.add(new ColorPredicate(ObjectColor.WHITE)); if (game.getBattlefield().countAll(filter, source.getControllerId(), game) > 0) { card.moveToZone(Zone.HAND, source.getId(), game, false); diff --git a/Mage.Sets/src/mage/sets/conflux/ZombieOutlander.java b/Mage.Sets/src/mage/sets/conflux/ZombieOutlander.java index 6aeb8214ac1..d0456ebf2a0 100644 --- a/Mage.Sets/src/mage/sets/conflux/ZombieOutlander.java +++ b/Mage.Sets/src/mage/sets/conflux/ZombieOutlander.java @@ -32,10 +32,11 @@ import java.util.UUID; import mage.Constants.CardType; import mage.Constants.Rarity; import mage.MageInt; +import mage.ObjectColor; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -45,9 +46,7 @@ public class ZombieOutlander extends CardImpl { private static final FilterCard filter = new FilterCard("green"); static { - filter.setUseColor(true); - filter.getColor().setGreen(true); - filter.setScopeColor(ComparisonScope.Any); + filter.add(new ColorPredicate(ObjectColor.GREEN)); } public ZombieOutlander(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/darkascension/FaithsShield.java b/Mage.Sets/src/mage/sets/darkascension/FaithsShield.java index 314a5f0a202..dd214182e1d 100644 --- a/Mage.Sets/src/mage/sets/darkascension/FaithsShield.java +++ b/Mage.Sets/src/mage/sets/darkascension/FaithsShield.java @@ -40,8 +40,8 @@ import mage.abilities.effects.common.continious.GainProtectionFromColorTargetEff import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.choices.ChoiceColor; -import mage.filter.Filter; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.ColorPredicate; import mage.game.Game; import mage.target.common.TargetControlledPermanent; @@ -93,10 +93,8 @@ class FaithsShieldEffect extends OneShotEffect { if (FatefulHourCondition.getInstance().apply(game, source)) { ChoiceColor choice = (ChoiceColor) source.getChoices().get(0); FilterCard filter = new FilterCard(); - filter.setUseColor(true); - filter.setColor(choice.getColor()); + filter.add(new ColorPredicate(choice.getColor())); filter.setMessage(choice.getChoice()); - filter.setScopeColor(Filter.ComparisonScope.Any); Ability ability = new ProtectionAbility(filter) ; game.addEffect(new GainAbilityControlledEffect(ability, Duration.EndOfTurn), source); diff --git a/Mage.Sets/src/mage/sets/darksteel/SwordOfFireAndIce.java b/Mage.Sets/src/mage/sets/darksteel/SwordOfFireAndIce.java index 02a1e8ff4a5..b802bf6d94d 100644 --- a/Mage.Sets/src/mage/sets/darksteel/SwordOfFireAndIce.java +++ b/Mage.Sets/src/mage/sets/darksteel/SwordOfFireAndIce.java @@ -35,6 +35,7 @@ import mage.Constants.CardType; import mage.Constants.Outcome; import mage.Constants.Rarity; import mage.Constants.Zone; +import mage.ObjectColor; import mage.abilities.TriggeredAbilityImpl; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.costs.mana.GenericManaCost; @@ -45,8 +46,9 @@ import mage.abilities.effects.common.continious.GainAbilityAttachedEffect; import mage.abilities.keyword.EquipAbility; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterCard; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.ColorPredicate; import mage.game.Game; import mage.game.events.DamagedPlayerEvent; import mage.game.events.GameEvent; @@ -61,10 +63,9 @@ public class SwordOfFireAndIce extends CardImpl { private static final FilterCard filter = new FilterCard("red and from blue"); static { - filter.setUseColor(true); - filter.getColor().setRed(true); - filter.getColor().setGreen(true); - filter.setScopeColor(Filter.ComparisonScope.Any); + filter.add(Predicates.or( + new ColorPredicate(ObjectColor.RED), + new ColorPredicate(ObjectColor.BLUE))); } diff --git a/Mage.Sets/src/mage/sets/darksteel/SwordOfLightAndShadow.java b/Mage.Sets/src/mage/sets/darksteel/SwordOfLightAndShadow.java index 1b7059f9ad1..074ab282e44 100644 --- a/Mage.Sets/src/mage/sets/darksteel/SwordOfLightAndShadow.java +++ b/Mage.Sets/src/mage/sets/darksteel/SwordOfLightAndShadow.java @@ -35,6 +35,7 @@ import mage.Constants.CardType; import mage.Constants.Outcome; import mage.Constants.Rarity; import mage.Constants.Zone; +import mage.ObjectColor; import mage.abilities.TriggeredAbilityImpl; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.costs.mana.GenericManaCost; @@ -45,9 +46,10 @@ import mage.abilities.effects.common.continious.GainAbilityAttachedEffect; import mage.abilities.keyword.EquipAbility; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterCard; import mage.filter.common.FilterCreatureCard; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.ColorPredicate; import mage.game.Game; import mage.game.events.DamagedPlayerEvent; import mage.game.events.GameEvent; @@ -62,10 +64,9 @@ public class SwordOfLightAndShadow extends CardImpl { private static final FilterCard filter = new FilterCard("white and from black"); static { - filter.setUseColor(true); - filter.getColor().setWhite(true); - filter.getColor().setBlack(true); - filter.setScopeColor(Filter.ComparisonScope.Any); + filter.add(Predicates.or( + new ColorPredicate(ObjectColor.WHITE), + new ColorPredicate(ObjectColor.BLACK))); } public SwordOfLightAndShadow(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/dissension/SealOfDoom.java b/Mage.Sets/src/mage/sets/dissension/SealOfDoom.java index 12f9cfd0171..c8ea6dd038d 100644 --- a/Mage.Sets/src/mage/sets/dissension/SealOfDoom.java +++ b/Mage.Sets/src/mage/sets/dissension/SealOfDoom.java @@ -39,6 +39,8 @@ import mage.abilities.costs.common.SacrificeSourceCost; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.ColorPredicate; import mage.target.common.TargetCreaturePermanent; /** @@ -49,9 +51,7 @@ public class SealOfDoom extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonblack creature"); static { - filter.setUseColor(true); - filter.setColor(ObjectColor.BLACK); - filter.setNotColor(true); + filter.add(Predicates.not(new ColorPredicate(ObjectColor.BLACK))); } public SealOfDoom(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/elspethvstezzeret/CelestialCrusader.java b/Mage.Sets/src/mage/sets/elspethvstezzeret/CelestialCrusader.java index 7e0eacff9ec..93fdb817434 100644 --- a/Mage.Sets/src/mage/sets/elspethvstezzeret/CelestialCrusader.java +++ b/Mage.Sets/src/mage/sets/elspethvstezzeret/CelestialCrusader.java @@ -33,6 +33,7 @@ import mage.Constants; import mage.Constants.CardType; import mage.Constants.Rarity; import mage.MageInt; +import mage.ObjectColor; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.common.continious.BoostControlledEffect; import mage.abilities.keyword.FlashAbility; @@ -40,6 +41,7 @@ import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.SplitSecondAbility; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -49,8 +51,7 @@ public class CelestialCrusader extends CardImpl { private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("white creatures"); static { - filter.setUseColor(true); - filter.getColor().setWhite(true); + filter.add(new ColorPredicate(ObjectColor.WHITE)); } public CelestialCrusader(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/elspethvstezzeret/Crusade.java b/Mage.Sets/src/mage/sets/elspethvstezzeret/Crusade.java index 992fc27275e..dc1738338c0 100644 --- a/Mage.Sets/src/mage/sets/elspethvstezzeret/Crusade.java +++ b/Mage.Sets/src/mage/sets/elspethvstezzeret/Crusade.java @@ -32,10 +32,12 @@ import mage.Constants.CardType; import mage.Constants.Duration; import mage.Constants.Rarity; import mage.Constants.Zone; +import mage.ObjectColor; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.common.continious.BoostAllEffect; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -46,8 +48,7 @@ public class Crusade extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("White creatures"); static { - filter.getColor().setWhite(true); - filter.setUseColor(true); + filter.add(new ColorPredicate(ObjectColor.WHITE)); } public Crusade(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/eventide/BalefireLiege.java b/Mage.Sets/src/mage/sets/eventide/BalefireLiege.java index 2f0818af033..60aec5c0e7c 100644 --- a/Mage.Sets/src/mage/sets/eventide/BalefireLiege.java +++ b/Mage.Sets/src/mage/sets/eventide/BalefireLiege.java @@ -42,6 +42,7 @@ import mage.abilities.effects.common.continious.BoostControlledEffect; import mage.cards.CardImpl; import mage.filter.FilterSpell; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.ColorPredicate; import mage.target.TargetPlayer; /** @@ -55,14 +56,10 @@ public class BalefireLiege extends CardImpl { private final static FilterSpell filterWhiteSpell = new FilterSpell("a white spell"); static { - filterRedCreature.setUseColor(true); - filterRedCreature.setColor(ObjectColor.RED); - filterWhiteCreature.setUseColor(true); - filterWhiteCreature.setColor(ObjectColor.WHITE); - filterRedSpell.setUseColor(true); - filterRedSpell.setColor(ObjectColor.RED); - filterWhiteSpell.setUseColor(true); - filterWhiteSpell.setColor(ObjectColor.WHITE); + filterRedCreature.add(new ColorPredicate(ObjectColor.RED)); + filterWhiteCreature.add(new ColorPredicate(ObjectColor.WHITE)); + filterRedSpell.add(new ColorPredicate(ObjectColor.RED)); + filterWhiteSpell.add(new ColorPredicate(ObjectColor.WHITE)); } public BalefireLiege(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/eventide/BallynockTrapper.java b/Mage.Sets/src/mage/sets/eventide/BallynockTrapper.java index 513f2354b9f..79e12d50aec 100644 --- a/Mage.Sets/src/mage/sets/eventide/BallynockTrapper.java +++ b/Mage.Sets/src/mage/sets/eventide/BallynockTrapper.java @@ -41,6 +41,7 @@ import mage.abilities.effects.common.TapTargetEffect; import mage.abilities.effects.common.UntapSourceEffect; import mage.cards.CardImpl; import mage.filter.FilterSpell; +import mage.filter.predicate.mageobject.ColorPredicate; import mage.target.common.TargetCreaturePermanent; /** @@ -51,8 +52,7 @@ public class BallynockTrapper extends CardImpl { private final static FilterSpell filterWhiteSpell = new FilterSpell("a white spell"); static { - filterWhiteSpell.setUseColor(true); - filterWhiteSpell.setColor(ObjectColor.WHITE); + filterWhiteSpell.add(new ColorPredicate(ObjectColor.WHITE)); } public BallynockTrapper(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/eventide/BelligerentHatchling.java b/Mage.Sets/src/mage/sets/eventide/BelligerentHatchling.java index 246ba9dc6ef..089fb432254 100644 --- a/Mage.Sets/src/mage/sets/eventide/BelligerentHatchling.java +++ b/Mage.Sets/src/mage/sets/eventide/BelligerentHatchling.java @@ -40,6 +40,7 @@ import mage.abilities.keyword.FirstStrikeAbility; import mage.cards.CardImpl; import mage.counters.CounterType; import mage.filter.FilterSpell; +import mage.filter.predicate.mageobject.ColorPredicate; /** * @author Loki @@ -50,10 +51,8 @@ public class BelligerentHatchling extends CardImpl { private final static FilterSpell filterWhiteSpell = new FilterSpell("a white spell"); static { - filterRedSpell.setUseColor(true); - filterRedSpell.setColor(ObjectColor.RED); - filterWhiteSpell.setUseColor(true); - filterWhiteSpell.setColor(ObjectColor.WHITE); + filterRedSpell.add(new ColorPredicate(ObjectColor.RED)); + filterWhiteSpell.add(new ColorPredicate(ObjectColor.WHITE)); } public BelligerentHatchling(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/eventide/CinderPyromancer.java b/Mage.Sets/src/mage/sets/eventide/CinderPyromancer.java index 43a06a14078..a14932f2423 100644 --- a/Mage.Sets/src/mage/sets/eventide/CinderPyromancer.java +++ b/Mage.Sets/src/mage/sets/eventide/CinderPyromancer.java @@ -33,6 +33,7 @@ import mage.Constants; import mage.Constants.CardType; import mage.Constants.Rarity; import mage.MageInt; +import mage.ObjectColor; import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.common.SpellCastTriggeredAbility; @@ -41,6 +42,7 @@ import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.effects.common.UntapSourceEffect; import mage.cards.CardImpl; import mage.filter.FilterSpell; +import mage.filter.predicate.mageobject.ColorPredicate; import mage.target.TargetPlayer; /** @@ -51,8 +53,7 @@ public class CinderPyromancer extends CardImpl { private static final FilterSpell filter = new FilterSpell("a red spell"); static { - filter.getColor().setRed(true); - filter.setUseColor(true); + filter.add(new ColorPredicate(ObjectColor.RED)); } public CinderPyromancer (UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/eventide/CreakwoodLiege.java b/Mage.Sets/src/mage/sets/eventide/CreakwoodLiege.java index beea25f93ac..9b2d7765571 100644 --- a/Mage.Sets/src/mage/sets/eventide/CreakwoodLiege.java +++ b/Mage.Sets/src/mage/sets/eventide/CreakwoodLiege.java @@ -40,6 +40,7 @@ import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.continious.BoostControlledEffect; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.ColorPredicate; import mage.game.permanent.token.Token; /** @@ -52,10 +53,8 @@ public class CreakwoodLiege extends CardImpl { private final static FilterCreaturePermanent filterGreenCreature = new FilterCreaturePermanent("green creatures"); static { - filterBlackCreature.setUseColor(true); - filterBlackCreature.setColor(ObjectColor.BLACK); - filterGreenCreature.setUseColor(true); - filterGreenCreature.setColor(ObjectColor.GREEN); + filterBlackCreature.add(new ColorPredicate(ObjectColor.BLACK)); + filterGreenCreature.add(new ColorPredicate(ObjectColor.GREEN)); } diff --git a/Mage.Sets/src/mage/sets/eventide/DeathbringerLiege.java b/Mage.Sets/src/mage/sets/eventide/DeathbringerLiege.java index e210fc13c0c..a285ab1554e 100644 --- a/Mage.Sets/src/mage/sets/eventide/DeathbringerLiege.java +++ b/Mage.Sets/src/mage/sets/eventide/DeathbringerLiege.java @@ -33,6 +33,7 @@ import mage.Constants; import mage.Constants.CardType; import mage.Constants.Rarity; import mage.MageInt; +import mage.ObjectColor; import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SpellCastTriggeredAbility; @@ -42,6 +43,7 @@ import mage.abilities.effects.common.continious.BoostControlledEffect; import mage.cards.CardImpl; import mage.filter.FilterSpell; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.ColorPredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.target.common.TargetCreaturePermanent; @@ -57,14 +59,10 @@ public class DeathbringerLiege extends CardImpl { private final static FilterSpell filterBlackSpellCard = new FilterSpell("a black spell"); static { - filterWhite.setUseColor(true); - filterWhite.getColor().setWhite(true); - filterBlack.setUseColor(true); - filterBlack.getColor().setBlack(true); - filterWhiteSpellCard.setUseColor(true); - filterWhiteSpellCard.getColor().setWhite(true); - filterBlackSpellCard.setUseColor(true); - filterBlackSpellCard.getColor().setBlack(true); + filterWhite.add(new ColorPredicate(ObjectColor.WHITE)); + filterBlack.add(new ColorPredicate(ObjectColor.BLACK)); + filterWhiteSpellCard.add(new ColorPredicate(ObjectColor.WHITE)); + filterBlackSpellCard.add(new ColorPredicate(ObjectColor.BLACK)); } public DeathbringerLiege (UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/eventide/FableOfWolfAndOwl.java b/Mage.Sets/src/mage/sets/eventide/FableOfWolfAndOwl.java index 34327b6f81c..756eaffd343 100644 --- a/Mage.Sets/src/mage/sets/eventide/FableOfWolfAndOwl.java +++ b/Mage.Sets/src/mage/sets/eventide/FableOfWolfAndOwl.java @@ -37,6 +37,7 @@ import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.filter.FilterSpell; +import mage.filter.predicate.mageobject.ColorPredicate; import mage.game.permanent.token.Token; import mage.game.permanent.token.WolfToken; @@ -49,10 +50,8 @@ public class FableOfWolfAndOwl extends CardImpl { private final static FilterSpell filterBlueSpell = new FilterSpell("a blue spell"); static { - filterGreenSpell.setUseColor(true); - filterGreenSpell.setColor(ObjectColor.GREEN); - filterBlueSpell.setUseColor(true); - filterBlueSpell.setColor(ObjectColor.BLUE); + filterGreenSpell.add(new ColorPredicate(ObjectColor.GREEN)); + filterBlueSpell.add(new ColorPredicate(ObjectColor.BLUE)); } public FableOfWolfAndOwl(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/eventide/FangSkulkin.java b/Mage.Sets/src/mage/sets/eventide/FangSkulkin.java index c2dad3df18f..e5017d4f826 100644 --- a/Mage.Sets/src/mage/sets/eventide/FangSkulkin.java +++ b/Mage.Sets/src/mage/sets/eventide/FangSkulkin.java @@ -41,6 +41,7 @@ import mage.abilities.effects.common.continious.GainAbilityTargetEffect; import mage.abilities.keyword.WitherAbility; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.ColorPredicate; import mage.target.common.TargetCreaturePermanent; /** @@ -51,8 +52,7 @@ public class FangSkulkin extends CardImpl { private final static FilterCreaturePermanent filterBlackCreature = new FilterCreaturePermanent("black creature"); static { - filterBlackCreature.setUseColor(true); - filterBlackCreature.setColor(ObjectColor.BLACK); + filterBlackCreature.add(new ColorPredicate(ObjectColor.BLACK)); } public FangSkulkin(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/eventide/HoofSkulkin.java b/Mage.Sets/src/mage/sets/eventide/HoofSkulkin.java index e6e89601290..cece2b9d8d1 100644 --- a/Mage.Sets/src/mage/sets/eventide/HoofSkulkin.java +++ b/Mage.Sets/src/mage/sets/eventide/HoofSkulkin.java @@ -40,6 +40,7 @@ import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.effects.common.continious.BoostTargetEffect; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.ColorPredicate; import mage.target.common.TargetCreaturePermanent; /** @@ -50,8 +51,7 @@ public class HoofSkulkin extends CardImpl { private final static FilterCreaturePermanent filterGreenCreature = new FilterCreaturePermanent("green creature"); static { - filterGreenCreature.setUseColor(true); - filterGreenCreature.setColor(ObjectColor.GREEN); + filterGreenCreature.add(new ColorPredicate(ObjectColor.GREEN)); } public HoofSkulkin(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/eventide/JawboneSkulkin.java b/Mage.Sets/src/mage/sets/eventide/JawboneSkulkin.java index 8b97bcfe768..127ebd74d34 100644 --- a/Mage.Sets/src/mage/sets/eventide/JawboneSkulkin.java +++ b/Mage.Sets/src/mage/sets/eventide/JawboneSkulkin.java @@ -41,6 +41,7 @@ import mage.abilities.effects.common.continious.GainAbilityTargetEffect; import mage.abilities.keyword.HasteAbility; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.ColorPredicate; import mage.target.common.TargetCreaturePermanent; /** @@ -51,8 +52,7 @@ public class JawboneSkulkin extends CardImpl { private final static FilterCreaturePermanent filterRedCreature = new FilterCreaturePermanent("red creature"); static { - filterRedCreature.setUseColor(true); - filterRedCreature.setColor(ObjectColor.RED); + filterRedCreature.add(new ColorPredicate(ObjectColor.RED)); } public JawboneSkulkin(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/eventide/MerrowLevitator.java b/Mage.Sets/src/mage/sets/eventide/MerrowLevitator.java index 42706641781..93b6cbd86d8 100644 --- a/Mage.Sets/src/mage/sets/eventide/MerrowLevitator.java +++ b/Mage.Sets/src/mage/sets/eventide/MerrowLevitator.java @@ -42,6 +42,7 @@ import mage.abilities.effects.common.continious.GainAbilityTargetEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.filter.FilterSpell; +import mage.filter.predicate.mageobject.ColorPredicate; import mage.target.common.TargetCreaturePermanent; /** @@ -54,8 +55,7 @@ public class MerrowLevitator extends CardImpl { private final static FilterSpell filterBlueSpell = new FilterSpell("a blue spell"); static { - filterBlueSpell.setUseColor(true); - filterBlueSpell.setColor(ObjectColor.BLUE); + filterBlueSpell.add(new ColorPredicate(ObjectColor.BLUE)); } public MerrowLevitator(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/eventide/NoxiousHatchling.java b/Mage.Sets/src/mage/sets/eventide/NoxiousHatchling.java index 58fe830f7fe..4e64bddc70d 100644 --- a/Mage.Sets/src/mage/sets/eventide/NoxiousHatchling.java +++ b/Mage.Sets/src/mage/sets/eventide/NoxiousHatchling.java @@ -40,6 +40,7 @@ import mage.abilities.keyword.WitherAbility; import mage.cards.CardImpl; import mage.counters.CounterType; import mage.filter.FilterSpell; +import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -51,10 +52,8 @@ public class NoxiousHatchling extends CardImpl { private final static FilterSpell filterGreenSpell = new FilterSpell("a green spell"); static { - filterBlackSpell.setUseColor(true); - filterBlackSpell.setColor(ObjectColor.BLACK); - filterGreenSpell.setUseColor(true); - filterGreenSpell.setColor(ObjectColor.GREEN); + filterBlackSpell.add(new ColorPredicate(ObjectColor.BLACK)); + filterGreenSpell.add(new ColorPredicate(ObjectColor.GREEN)); } public NoxiousHatchling(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/eventide/ShellSkulkin.java b/Mage.Sets/src/mage/sets/eventide/ShellSkulkin.java index 8a8ce568451..116922b91c3 100644 --- a/Mage.Sets/src/mage/sets/eventide/ShellSkulkin.java +++ b/Mage.Sets/src/mage/sets/eventide/ShellSkulkin.java @@ -41,6 +41,7 @@ import mage.abilities.effects.common.continious.GainAbilityTargetEffect; import mage.abilities.keyword.ShroudAbility; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.ColorPredicate; import mage.target.common.TargetCreaturePermanent; /** @@ -51,8 +52,7 @@ public class ShellSkulkin extends CardImpl { private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("blue creature"); static { - filter.setUseColor(true); - filter.setColor(ObjectColor.BLUE); + filter.add(new ColorPredicate(ObjectColor.BLUE)); } public ShellSkulkin(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/eventide/SturdyHatchling.java b/Mage.Sets/src/mage/sets/eventide/SturdyHatchling.java index 4b5c9f67b21..a0e2851cba7 100644 --- a/Mage.Sets/src/mage/sets/eventide/SturdyHatchling.java +++ b/Mage.Sets/src/mage/sets/eventide/SturdyHatchling.java @@ -44,6 +44,7 @@ import mage.abilities.keyword.ShroudAbility; import mage.cards.CardImpl; import mage.counters.CounterType; import mage.filter.FilterSpell; +import mage.filter.predicate.mageobject.ColorPredicate; /** * @author Loki @@ -54,10 +55,8 @@ public class SturdyHatchling extends CardImpl { private final static FilterSpell filterBlueSpell = new FilterSpell("a blue spell"); static { - filterGreenSpell.setUseColor(true); - filterGreenSpell.setColor(ObjectColor.GREEN); - filterBlueSpell.setUseColor(true); - filterBlueSpell.setColor(ObjectColor.BLUE); + filterGreenSpell.add(new ColorPredicate(ObjectColor.GREEN)); + filterBlueSpell.add(new ColorPredicate(ObjectColor.BLUE)); } public SturdyHatchling(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/eventide/VoraciousHatchling.java b/Mage.Sets/src/mage/sets/eventide/VoraciousHatchling.java index 2ff0d7cc464..ceaec8c70f2 100644 --- a/Mage.Sets/src/mage/sets/eventide/VoraciousHatchling.java +++ b/Mage.Sets/src/mage/sets/eventide/VoraciousHatchling.java @@ -40,6 +40,7 @@ import mage.abilities.keyword.LifelinkAbility; import mage.cards.CardImpl; import mage.counters.CounterType; import mage.filter.FilterSpell; +import mage.filter.predicate.mageobject.ColorPredicate; /** * @author Loki @@ -50,10 +51,8 @@ public class VoraciousHatchling extends CardImpl { private final static FilterSpell filterBlackSpell = new FilterSpell("a black spell"); static { - filterWhiteSpell.setUseColor(true); - filterWhiteSpell.setColor(ObjectColor.WHITE); - filterBlackSpell.setUseColor(true); - filterBlackSpell.setColor(ObjectColor.BLACK); + filterWhiteSpell.add(new ColorPredicate(ObjectColor.WHITE)); + filterBlackSpell.add(new ColorPredicate(ObjectColor.BLACK)); } public VoraciousHatchling(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/eventide/WildernessHypnotist.java b/Mage.Sets/src/mage/sets/eventide/WildernessHypnotist.java index 276f2f756a5..9d62dc0d2dc 100644 --- a/Mage.Sets/src/mage/sets/eventide/WildernessHypnotist.java +++ b/Mage.Sets/src/mage/sets/eventide/WildernessHypnotist.java @@ -33,12 +33,15 @@ import mage.Constants; import mage.Constants.CardType; import mage.Constants.Rarity; import mage.MageInt; +import mage.ObjectColor; import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.common.TapSourceCost; import mage.abilities.effects.common.continious.BoostTargetEffect; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.ColorPredicate; import mage.target.common.TargetCreaturePermanent; /** @@ -49,9 +52,9 @@ public class WildernessHypnotist extends CardImpl { private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("red or green creature"); static { - filter.setUseColor(true); - filter.getColor().setRed(true); - filter.getColor().setGreen(true); + filter.add(Predicates.or( + new ColorPredicate(ObjectColor.RED), + new ColorPredicate(ObjectColor.GREEN))); } public WildernessHypnotist(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/fifthedition/BadMoon.java b/Mage.Sets/src/mage/sets/fifthedition/BadMoon.java index c34fe8bcaf9..7308e3a3a13 100644 --- a/Mage.Sets/src/mage/sets/fifthedition/BadMoon.java +++ b/Mage.Sets/src/mage/sets/fifthedition/BadMoon.java @@ -31,10 +31,12 @@ import java.util.UUID; import mage.Constants; import mage.Constants.CardType; import mage.Constants.Rarity; +import mage.ObjectColor; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.common.continious.BoostAllEffect; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -45,8 +47,7 @@ public class BadMoon extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Black creatures"); static { - filter.getColor().setBlack(true); - filter.setUseColor(true); + filter.add(new ColorPredicate(ObjectColor.BLACK)); } public BadMoon(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/guildpact/Frazzle.java b/Mage.Sets/src/mage/sets/guildpact/Frazzle.java index d160cfb5388..b8d45cf5652 100644 --- a/Mage.Sets/src/mage/sets/guildpact/Frazzle.java +++ b/Mage.Sets/src/mage/sets/guildpact/Frazzle.java @@ -30,9 +30,12 @@ package mage.sets.guildpact; import java.util.UUID; import mage.Constants.CardType; import mage.Constants.Rarity; +import mage.ObjectColor; import mage.abilities.effects.common.CounterTargetEffect; import mage.cards.CardImpl; import mage.filter.FilterSpell; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.ColorPredicate; import mage.target.TargetSpell; /** @@ -43,9 +46,7 @@ public class Frazzle extends CardImpl { private final static FilterSpell filter = new FilterSpell("nonblue spell"); static { - filter.setUseColor(true); - filter.getColor().setBlue(true); - filter.setNotColor(true); + filter.add(Predicates.not(new ColorPredicate(ObjectColor.BLUE))); } public Frazzle(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/guildpact/TiborAndLumia.java b/Mage.Sets/src/mage/sets/guildpact/TiborAndLumia.java index 8c555966522..9769243b369 100644 --- a/Mage.Sets/src/mage/sets/guildpact/TiborAndLumia.java +++ b/Mage.Sets/src/mage/sets/guildpact/TiborAndLumia.java @@ -32,6 +32,7 @@ import mage.Constants; import mage.Constants.CardType; import mage.Constants.Rarity; import mage.MageInt; +import mage.ObjectColor; import mage.abilities.Ability; import mage.abilities.common.SpellCastTriggeredAbility; import mage.abilities.effects.common.DamageAllEffect; @@ -42,6 +43,7 @@ import mage.filter.FilterSpell; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.AbilityPredicate; +import mage.filter.predicate.mageobject.ColorPredicate; import mage.target.common.TargetCreaturePermanent; /** @@ -55,11 +57,9 @@ public class TiborAndLumia extends CardImpl { private final static FilterSpell filterRed = new FilterSpell("a red spell"); static { - filterBlue.setUseColor(true); - filterBlue.getColor().setBlue(true); + filterBlue.add(new ColorPredicate(ObjectColor.BLUE)); filter.add(Predicates.not(new AbilityPredicate(FlyingAbility.class))); - filterRed.setUseColor(true); - filterRed.getColor().setRed(true); + filterRed.add(new ColorPredicate(ObjectColor.RED)); } public TiborAndLumia(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/guildpact/WurmweaverCoil.java b/Mage.Sets/src/mage/sets/guildpact/WurmweaverCoil.java index 95b5da8a966..30a18758db0 100644 --- a/Mage.Sets/src/mage/sets/guildpact/WurmweaverCoil.java +++ b/Mage.Sets/src/mage/sets/guildpact/WurmweaverCoil.java @@ -44,6 +44,7 @@ import mage.abilities.effects.common.continious.BoostEnchantedEffect; import mage.abilities.keyword.EnchantAbility; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.ColorPredicate; import mage.game.permanent.token.Token; import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; @@ -57,8 +58,7 @@ public class WurmweaverCoil extends CardImpl { private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("green creature"); static { - filter.setUseColor(true); - filter.getColor().setGreen(true); + filter.add(new ColorPredicate(ObjectColor.GREEN)); } public WurmweaverCoil(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/magic2010/BlackKnight.java b/Mage.Sets/src/mage/sets/magic2010/BlackKnight.java index 996d08e1cfd..a3a7c28418c 100644 --- a/Mage.Sets/src/mage/sets/magic2010/BlackKnight.java +++ b/Mage.Sets/src/mage/sets/magic2010/BlackKnight.java @@ -32,11 +32,12 @@ import java.util.UUID; import mage.Constants.CardType; import mage.Constants.Rarity; import mage.MageInt; +import mage.ObjectColor; import mage.abilities.keyword.FirstStrikeAbility; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -47,9 +48,7 @@ public class BlackKnight extends CardImpl { private static final FilterCard filter = new FilterCard("White"); static { - filter.setUseColor(true); - filter.getColor().setWhite(true); - filter.setScopeColor(ComparisonScope.Any); + filter.add(new ColorPredicate(ObjectColor.WHITE)); } public BlackKnight(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/magic2010/DoomBlade.java b/Mage.Sets/src/mage/sets/magic2010/DoomBlade.java index fbaf5aa223d..1c2b7dbb701 100644 --- a/Mage.Sets/src/mage/sets/magic2010/DoomBlade.java +++ b/Mage.Sets/src/mage/sets/magic2010/DoomBlade.java @@ -31,9 +31,12 @@ package mage.sets.magic2010; import java.util.UUID; import mage.Constants.CardType; import mage.Constants.Rarity; +import mage.ObjectColor; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.ColorPredicate; import mage.target.common.TargetCreaturePermanent; /** @@ -45,9 +48,7 @@ public class DoomBlade extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonblack creature"); static { - filter.setUseColor(true); - filter.getColor().setBlack(true); - filter.setNotColor(true); + filter.add(Predicates.not(new ColorPredicate(ObjectColor.BLACK))); } public DoomBlade(UUID ownerId){ diff --git a/Mage.Sets/src/mage/sets/magic2010/GreatSableStag.java b/Mage.Sets/src/mage/sets/magic2010/GreatSableStag.java index 1eba9ab2c9e..ca32771f3b0 100644 --- a/Mage.Sets/src/mage/sets/magic2010/GreatSableStag.java +++ b/Mage.Sets/src/mage/sets/magic2010/GreatSableStag.java @@ -33,12 +33,13 @@ import mage.Constants.CardType; import mage.Constants.Rarity; import mage.Constants.Zone; import mage.MageInt; +import mage.ObjectColor; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.common.CantCounterSourceEffect; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -49,12 +50,8 @@ public class GreatSableStag extends CardImpl { private static final FilterCard filter2 = new FilterCard("Black"); static { - filter1.setUseColor(true); - filter1.getColor().setBlue(true); - filter1.setScopeColor(ComparisonScope.Any); - filter2.setUseColor(true); - filter2.getColor().setBlack(true); - filter2.setScopeColor(ComparisonScope.Any); + filter1.add(new ColorPredicate(ObjectColor.BLUE)); + filter2.add(new ColorPredicate(ObjectColor.BLACK)); } public GreatSableStag(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/magic2010/HonorOfThePure.java b/Mage.Sets/src/mage/sets/magic2010/HonorOfThePure.java index 699e61e6bad..e634236f044 100644 --- a/Mage.Sets/src/mage/sets/magic2010/HonorOfThePure.java +++ b/Mage.Sets/src/mage/sets/magic2010/HonorOfThePure.java @@ -33,10 +33,12 @@ import mage.Constants.CardType; import mage.Constants.Duration; import mage.Constants.Rarity; import mage.Constants.Zone; +import mage.ObjectColor; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.common.continious.BoostControlledEffect; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -47,8 +49,7 @@ public class HonorOfThePure extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("White creatures"); static { - filter.setUseColor(true); - filter.getColor().setWhite(true); + filter.add(new ColorPredicate(ObjectColor.WHITE)); } public HonorOfThePure(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/magic2010/IgniteDisorder.java b/Mage.Sets/src/mage/sets/magic2010/IgniteDisorder.java index c59d8afb07d..38bb2b2bbf1 100644 --- a/Mage.Sets/src/mage/sets/magic2010/IgniteDisorder.java +++ b/Mage.Sets/src/mage/sets/magic2010/IgniteDisorder.java @@ -30,9 +30,12 @@ package mage.sets.magic2010; import java.util.UUID; import mage.Constants.CardType; import mage.Constants.Rarity; +import mage.ObjectColor; import mage.abilities.effects.common.DamageMultiEffect; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.ColorPredicate; import mage.target.common.TargetCreaturePermanentAmount; /** @@ -44,9 +47,9 @@ public class IgniteDisorder extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("white and/or blue creatures"); static { - filter.getColor().setWhite(true); - filter.getColor().setBlue(true); - filter.setUseColor(true); + filter.add(Predicates.or( + new ColorPredicate(ObjectColor.WHITE), + new ColorPredicate(ObjectColor.BLUE))); } public IgniteDisorder(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/magic2010/LightwielderPaladin.java b/Mage.Sets/src/mage/sets/magic2010/LightwielderPaladin.java index c6e011a7164..fc46abfc62c 100644 --- a/Mage.Sets/src/mage/sets/magic2010/LightwielderPaladin.java +++ b/Mage.Sets/src/mage/sets/magic2010/LightwielderPaladin.java @@ -32,12 +32,14 @@ import mage.Constants.CardType; import mage.Constants.Rarity; import mage.Constants.Zone; import mage.MageInt; +import mage.ObjectColor; import mage.abilities.TriggeredAbilityImpl; import mage.abilities.effects.common.ExileTargetEffect; import mage.abilities.keyword.FirstStrikeAbility; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.FilterPermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.ColorPredicate; import mage.game.Game; import mage.game.events.DamagedPlayerEvent; import mage.game.events.GameEvent; @@ -94,10 +96,9 @@ class LightwielderPaladinTriggeredAbility extends TriggeredAbilityImpl { private static final FilterCard filter = new FilterCard("blue or black spell"); static { - filter.getColor().setBlue(true); - filter.getColor().setBlack(true); - filter.setUseColor(true); - filter.setScopeColor(ComparisonScope.Any); + filter.add(Predicates.or( + new ColorPredicate(ObjectColor.BLUE), + new ColorPredicate(ObjectColor.BLACK))); } public MoldAdder(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/magic2010/WhiteKnight.java b/Mage.Sets/src/mage/sets/magic2010/WhiteKnight.java index a067c491208..1285a51abfc 100644 --- a/Mage.Sets/src/mage/sets/magic2010/WhiteKnight.java +++ b/Mage.Sets/src/mage/sets/magic2010/WhiteKnight.java @@ -32,11 +32,12 @@ import java.util.UUID; import mage.Constants.CardType; import mage.Constants.Rarity; import mage.MageInt; +import mage.ObjectColor; import mage.abilities.keyword.FirstStrikeAbility; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -47,9 +48,7 @@ public class WhiteKnight extends CardImpl { private static final FilterCard filter = new FilterCard("Black"); static { - filter.setUseColor(true); - filter.getColor().setBlack(true); - filter.setScopeColor(ComparisonScope.Any); + filter.add(new ColorPredicate(ObjectColor.BLACK)); } public WhiteKnight(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/magic2011/AutumnsVeil.java b/Mage.Sets/src/mage/sets/magic2011/AutumnsVeil.java index 90ecf577666..558982ab811 100644 --- a/Mage.Sets/src/mage/sets/magic2011/AutumnsVeil.java +++ b/Mage.Sets/src/mage/sets/magic2011/AutumnsVeil.java @@ -32,13 +32,15 @@ import java.util.UUID; import mage.Constants.CardType; import mage.Constants.Duration; import mage.Constants.Rarity; +import mage.ObjectColor; import mage.abilities.effects.common.CantCounterControlledEffect; import mage.abilities.effects.common.CantTargetControlledEffect; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.FilterSpell; import mage.filter.FilterStackObject; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -51,9 +53,9 @@ public class AutumnsVeil extends CardImpl { private static final FilterStackObject filterSource = new FilterStackObject("blue or black spells"); static { - filterSource.getColor().setBlue(true); - filterSource.getColor().setBlack(true); - filterSource.setScopeColor(ComparisonScope.Any); + filterSource.add(Predicates.or( + new ColorPredicate(ObjectColor.BLUE), + new ColorPredicate(ObjectColor.BLACK))); } public AutumnsVeil(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/magic2011/Combust.java b/Mage.Sets/src/mage/sets/magic2011/Combust.java index 36dbc01936f..55aba73dba4 100644 --- a/Mage.Sets/src/mage/sets/magic2011/Combust.java +++ b/Mage.Sets/src/mage/sets/magic2011/Combust.java @@ -32,12 +32,14 @@ import java.util.UUID; import mage.Constants.CardType; import mage.Constants.Rarity; import mage.Constants.Zone; +import mage.ObjectColor; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.common.CantCounterSourceEffect; import mage.abilities.effects.common.DamageTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.ColorPredicate; import mage.target.common.TargetCreaturePermanent; /** @@ -49,10 +51,9 @@ public class Combust extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("white or blue creature"); static { - filter.getColor().setWhite(true); - filter.getColor().setBlue(true); - filter.setUseColor(true); - filter.setScopeColor(ComparisonScope.Any); + filter.add(Predicates.or( + new ColorPredicate(ObjectColor.WHITE), + new ColorPredicate(ObjectColor.BLUE))); } public Combust(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/magic2011/DemonOfDeathsGate.java b/Mage.Sets/src/mage/sets/magic2011/DemonOfDeathsGate.java index f5d9fdf329c..db30158ff20 100644 --- a/Mage.Sets/src/mage/sets/magic2011/DemonOfDeathsGate.java +++ b/Mage.Sets/src/mage/sets/magic2011/DemonOfDeathsGate.java @@ -31,6 +31,7 @@ package mage.sets.magic2011; import mage.Constants.CardType; import mage.Constants.Rarity; import mage.MageInt; +import mage.ObjectColor; import mage.abilities.costs.AlternativeCostImpl; import mage.abilities.costs.common.PayLifeCost; import mage.abilities.costs.common.SacrificeTargetCost; @@ -38,6 +39,7 @@ import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.TrampleAbility; import mage.cards.CardImpl; import mage.filter.common.FilterControlledCreaturePermanent; +import mage.filter.predicate.mageobject.ColorPredicate; import mage.target.common.TargetControlledPermanent; import java.util.UUID; @@ -76,8 +78,7 @@ class DemonOfDeathsGateAlternativeCost extends AlternativeCostImpl { private static final FilterStackObject filter = new FilterStackObject("nongreen spells or abilities from nongreen sources"); static { - filter.getColor().setGreen(true); - filter.setNotColor(true); - filter.setUseColor(true); + filter.add(Predicates.not(new ColorPredicate(ObjectColor.GREEN))); } public GaeasRevenge(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/magic2011/Incite.java b/Mage.Sets/src/mage/sets/magic2011/Incite.java index 7c563d0ccc0..c627bc8edca 100644 --- a/Mage.Sets/src/mage/sets/magic2011/Incite.java +++ b/Mage.Sets/src/mage/sets/magic2011/Incite.java @@ -49,10 +49,10 @@ public class Incite extends CardImpl { super(ownerId, 145, "Incite", Rarity.COMMON, new CardType[]{CardType.INSTANT}, "{R}"); this.expansionSetCode = "M11"; this.color.setRed(true); - // Target creature becomes red until end of turn and attacks this turn if able. - this.getSpellAbility().addTarget(new TargetCreaturePermanent()); -// this.getSpellAbility().addEffect(new InciteEffect()); - this.getSpellAbility().addEffect(new SetCardColorTargetEffect(ObjectColor.RED, Constants.Duration.EndOfTurn, "Target creature becomes red until end of turn")); + + // Target creature becomes red until end of turn and attacks this turn if able. + this.getSpellAbility().addTarget(new TargetCreaturePermanent()); + this.getSpellAbility().addEffect(new SetCardColorTargetEffect(ObjectColor.RED, Constants.Duration.EndOfTurn, "Target creature becomes red until end of turn")); this.getSpellAbility().addEffect(new AttacksIfAbleTargetEffect(Duration.EndOfTurn)); } @@ -65,35 +65,3 @@ public class Incite extends CardImpl { return new Incite(this); } } - -//class InciteEffect extends ContinuousEffectImpl { -// -// public InciteEffect() { -// super(Duration.EndOfTurn, Layer.ColorChangingEffects_5, SubLayer.NA, Outcome.Detriment); -// staticText = "Target creature becomes red until end of turn"; -// } -// -// public InciteEffect(final InciteEffect effect) { -// super(effect); -// } -// -// @Override -// public InciteEffect copy() { -// return new InciteEffect(this); -// } -// -// @Override -// public boolean apply(Game game, Ability source) { -// Permanent permanent = game.getPermanent(source.getFirstTarget()); -// if (permanent != null) { -// permanent.getColor().setRed(true); -// permanent.getColor().setWhite(false); -// permanent.getColor().setGreen(false); -// permanent.getColor().setBlue(false); -// permanent.getColor().setBlack(false); -// return true; -// } -// return false; -// } -// -//} diff --git a/Mage.Sets/src/mage/sets/magic2012/GuardiansPledge.java b/Mage.Sets/src/mage/sets/magic2012/GuardiansPledge.java index 2f38ea6fbf9..815e972539f 100644 --- a/Mage.Sets/src/mage/sets/magic2012/GuardiansPledge.java +++ b/Mage.Sets/src/mage/sets/magic2012/GuardiansPledge.java @@ -33,9 +33,11 @@ import java.util.UUID; import mage.Constants; import mage.Constants.CardType; import mage.Constants.Rarity; +import mage.ObjectColor; import mage.abilities.effects.common.continious.BoostControlledEffect; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -46,8 +48,7 @@ public class GuardiansPledge extends CardImpl { private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("White creatures"); static { - filter.setUseColor(true); - filter.getColor().setWhite(true); + filter.add(new ColorPredicate(ObjectColor.WHITE)); } public GuardiansPledge (UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/magic2013/AkromasMemorial.java b/Mage.Sets/src/mage/sets/magic2013/AkromasMemorial.java index 01433b05212..7d30bde7f16 100644 --- a/Mage.Sets/src/mage/sets/magic2013/AkromasMemorial.java +++ b/Mage.Sets/src/mage/sets/magic2013/AkromasMemorial.java @@ -30,14 +30,15 @@ package mage.sets.magic2013; import mage.Constants; import mage.Constants.CardType; import mage.Constants.Rarity; +import mage.ObjectColor; import mage.abilities.CompoundAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.common.continious.GainAbilityControlledEffect; import mage.abilities.keyword.*; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterCard; import mage.filter.common.FilterControlledCreaturePermanent; +import mage.filter.predicate.mageobject.ColorPredicate; import java.util.UUID; @@ -49,12 +50,8 @@ public class AkromasMemorial extends CardImpl { private static final FilterCard filterRed = new FilterCard("Red"); static { - filterBlack.setUseColor(true); - filterBlack.getColor().setBlack(true); - filterBlack.setScopeColor(Filter.ComparisonScope.Any); - filterRed.setUseColor(true); - filterRed.getColor().setRed(true); - filterRed.setScopeColor(Filter.ComparisonScope.Any); + filterBlack.add(new ColorPredicate(ObjectColor.BLACK)); + filterRed.add(new ColorPredicate(ObjectColor.RED)); } public AkromasMemorial(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/magic2013/GoblinBattleJester.java b/Mage.Sets/src/mage/sets/magic2013/GoblinBattleJester.java index fbcf09cd43d..70976bc94bb 100644 --- a/Mage.Sets/src/mage/sets/magic2013/GoblinBattleJester.java +++ b/Mage.Sets/src/mage/sets/magic2013/GoblinBattleJester.java @@ -32,11 +32,13 @@ import mage.Constants.CardType; import mage.Constants.Duration; import mage.Constants.Rarity; import mage.MageInt; +import mage.ObjectColor; import mage.abilities.Ability; import mage.abilities.common.SpellCastTriggeredAbility; import mage.abilities.effects.common.CantBlockTargetEffect; import mage.cards.CardImpl; import mage.filter.FilterSpell; +import mage.filter.predicate.mageobject.ColorPredicate; import mage.target.common.TargetCreaturePermanent; /** @@ -48,8 +50,7 @@ public class GoblinBattleJester extends CardImpl { private static final FilterSpell filter = new FilterSpell("a red spell"); static { - filter.getColor().setRed(true); - filter.setUseColor(true); + filter.add(new ColorPredicate(ObjectColor.RED)); } public GoblinBattleJester(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/magic2013/KnightOfGlory.java b/Mage.Sets/src/mage/sets/magic2013/KnightOfGlory.java index 118b29a84c7..bf99203a8c1 100644 --- a/Mage.Sets/src/mage/sets/magic2013/KnightOfGlory.java +++ b/Mage.Sets/src/mage/sets/magic2013/KnightOfGlory.java @@ -31,11 +31,12 @@ import java.util.UUID; import mage.Constants.CardType; import mage.Constants.Rarity; import mage.MageInt; +import mage.ObjectColor; import mage.abilities.keyword.ExaltedAbility; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -43,12 +44,10 @@ import mage.filter.FilterCard; */ public class KnightOfGlory extends CardImpl { - private static FilterCard filter = new FilterCard("Black"); + private static final FilterCard filter = new FilterCard("Black"); static { - filter.setUseColor(true); - filter.getColor().setBlack(true); - filter.setScopeColor(Filter.ComparisonScope.Any); + filter.add(new ColorPredicate(ObjectColor.BLACK)); } public KnightOfGlory(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/magic2013/KnightOfInfamy.java b/Mage.Sets/src/mage/sets/magic2013/KnightOfInfamy.java index c544f6711ad..16c71b2a5ec 100644 --- a/Mage.Sets/src/mage/sets/magic2013/KnightOfInfamy.java +++ b/Mage.Sets/src/mage/sets/magic2013/KnightOfInfamy.java @@ -31,11 +31,12 @@ import java.util.UUID; import mage.Constants.CardType; import mage.Constants.Rarity; import mage.MageInt; +import mage.ObjectColor; import mage.abilities.keyword.ExaltedAbility; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -46,9 +47,7 @@ public class KnightOfInfamy extends CardImpl { private static final FilterCard filter = new FilterCard("white"); static { - filter.getColor().setWhite(true); - filter.setUseColor(true); - filter.setScopeColor(Filter.ComparisonScope.Any); + filter.add(new ColorPredicate(ObjectColor.WHITE)); } public KnightOfInfamy(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/magic2013/Revive.java b/Mage.Sets/src/mage/sets/magic2013/Revive.java index cc125701ad3..083c5ece5fa 100644 --- a/Mage.Sets/src/mage/sets/magic2013/Revive.java +++ b/Mage.Sets/src/mage/sets/magic2013/Revive.java @@ -30,9 +30,11 @@ package mage.sets.magic2013; import java.util.UUID; import mage.Constants.CardType; import mage.Constants.Rarity; +import mage.ObjectColor; import mage.abilities.effects.common.ReturnToHandTargetEffect; import mage.cards.CardImpl; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.ColorPredicate; import mage.target.common.TargetCardInYourGraveyard; /** @@ -44,8 +46,7 @@ public class Revive extends CardImpl { private static final FilterCard filter = new FilterCard("green card from your graveyard"); static { - filter.getColor().setGreen(true); - filter.setUseColor(true); + filter.add(new ColorPredicate(ObjectColor.GREEN)); } public Revive(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/mirrodin/TrollsOfTelJilad.java b/Mage.Sets/src/mage/sets/mirrodin/TrollsOfTelJilad.java index 6e4e34f8127..3128e818dab 100644 --- a/Mage.Sets/src/mage/sets/mirrodin/TrollsOfTelJilad.java +++ b/Mage.Sets/src/mage/sets/mirrodin/TrollsOfTelJilad.java @@ -33,12 +33,14 @@ import mage.Constants; import mage.Constants.CardType; import mage.Constants.Rarity; import mage.MageInt; +import mage.ObjectColor; import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.common.RegenerateTargetEffect; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.ColorPredicate; import mage.target.common.TargetCreaturePermanent; /** @@ -50,8 +52,7 @@ public class TrollsOfTelJilad extends CardImpl { private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("green creature"); static { - filter.setUseColor(true); - filter.getColor().setGreen(true); + filter.add(new ColorPredicate(ObjectColor.GREEN)); } public TrollsOfTelJilad(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/mirrodinbesieged/GreenSunsZenith.java b/Mage.Sets/src/mage/sets/mirrodinbesieged/GreenSunsZenith.java index 8f2605c1b41..3567f4ca4dd 100644 --- a/Mage.Sets/src/mage/sets/mirrodinbesieged/GreenSunsZenith.java +++ b/Mage.Sets/src/mage/sets/mirrodinbesieged/GreenSunsZenith.java @@ -31,6 +31,7 @@ package mage.sets.mirrodinbesieged; import mage.Constants; import mage.Constants.CardType; import mage.Constants.Rarity; +import mage.ObjectColor; import mage.abilities.Ability; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.ShuffleSpellEffect; @@ -38,13 +39,14 @@ import mage.cards.Card; import mage.cards.CardImpl; import mage.filter.Filter; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.CardTypePredicate; +import mage.filter.predicate.mageobject.ColorPredicate; import mage.filter.predicate.mageobject.ConvertedManaCostPredicate; import mage.game.Game; import mage.players.Player; import mage.target.common.TargetCardInLibrary; import java.util.UUID; -import mage.filter.predicate.mageobject.CardTypePredicate; /** * @author Loki @@ -86,8 +88,7 @@ class GreenSunsZenithSearchEffect extends OneShotEffect { - private static FilterCard filter = new FilterCard("Black"); - private static FilterCard filter2 = new FilterCard("Green"); + private static final FilterCard filter = new FilterCard("Black"); + private static final FilterCard filter2 = new FilterCard("Green"); static { - filter.setUseColor(true); - filter.getColor().setBlack(true); - filter.setScopeColor(ComparisonScope.Any); - - filter2.setUseColor(true); - filter2.getColor().setGreen(true); - filter2.setScopeColor(ComparisonScope.Any); + filter.add(new ColorPredicate(ObjectColor.BLACK)); + filter2.add(new ColorPredicate(ObjectColor.GREEN)); } public MirranCrusader (UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/mirrodinbesieged/PhyrexianCrusader.java b/Mage.Sets/src/mage/sets/mirrodinbesieged/PhyrexianCrusader.java index 362ee145cec..71c03cca125 100644 --- a/Mage.Sets/src/mage/sets/mirrodinbesieged/PhyrexianCrusader.java +++ b/Mage.Sets/src/mage/sets/mirrodinbesieged/PhyrexianCrusader.java @@ -32,11 +32,13 @@ import java.util.UUID; import mage.Constants.CardType; import mage.Constants.Rarity; import mage.MageInt; +import mage.ObjectColor; import mage.abilities.keyword.FirstStrikeAbility; import mage.abilities.keyword.InfectAbility; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -48,11 +50,9 @@ public class PhyrexianCrusader extends CardImpl { private static final FilterCard filter2 = new FilterCard("White"); static { - filter.setUseColor(true); - filter.getColor().setRed(true); + filter.add(new ColorPredicate(ObjectColor.RED)); - filter2.setUseColor(true); - filter2.getColor().setWhite(true); + filter2.add(new ColorPredicate(ObjectColor.WHITE)); } public PhyrexianCrusader (UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/mirrodinbesieged/SwordOfFeastAndFamine.java b/Mage.Sets/src/mage/sets/mirrodinbesieged/SwordOfFeastAndFamine.java index 8a68328bbe1..a721b98f43a 100644 --- a/Mage.Sets/src/mage/sets/mirrodinbesieged/SwordOfFeastAndFamine.java +++ b/Mage.Sets/src/mage/sets/mirrodinbesieged/SwordOfFeastAndFamine.java @@ -34,6 +34,7 @@ import mage.Constants; import mage.Constants.CardType; import mage.Constants.Rarity; import mage.Constants.Zone; +import mage.ObjectColor; import mage.abilities.TriggeredAbilityImpl; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.costs.mana.GenericManaCost; @@ -46,6 +47,8 @@ import mage.abilities.keyword.EquipAbility; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.filter.FilterCard; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.ColorPredicate; import mage.game.Game; import mage.game.events.DamagedPlayerEvent; import mage.game.events.GameEvent; @@ -60,9 +63,9 @@ public class SwordOfFeastAndFamine extends CardImpl { private static final FilterCard filter = new FilterCard("green and from black"); static { - filter.setUseColor(true); - filter.getColor().setBlack(true); - filter.getColor().setGreen(true); + filter.add(Predicates.or( + new ColorPredicate(ObjectColor.GREEN), + new ColorPredicate(ObjectColor.BLACK))); } diff --git a/Mage.Sets/src/mage/sets/morningtide/ChameleonColossus.java b/Mage.Sets/src/mage/sets/morningtide/ChameleonColossus.java index 42f887c9621..671b1b165ef 100644 --- a/Mage.Sets/src/mage/sets/morningtide/ChameleonColossus.java +++ b/Mage.Sets/src/mage/sets/morningtide/ChameleonColossus.java @@ -33,6 +33,7 @@ import mage.Constants; import mage.Constants.CardType; import mage.Constants.Rarity; import mage.MageInt; +import mage.ObjectColor; import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.mana.ManaCostsImpl; @@ -41,6 +42,7 @@ import mage.abilities.keyword.ChangelingAbility; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.ColorPredicate; import mage.game.Game; import mage.game.permanent.Permanent; @@ -53,8 +55,7 @@ public class ChameleonColossus extends CardImpl { private final static FilterCard filter = new FilterCard("black"); static { - filter.setUseColor(true); - filter.getColor().setBlack(true); + filter.add(new ColorPredicate(ObjectColor.BLACK)); } public ChameleonColossus(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/morningtide/VioletPall.java b/Mage.Sets/src/mage/sets/morningtide/VioletPall.java index 1826c6fd645..08b3a1a9ae3 100644 --- a/Mage.Sets/src/mage/sets/morningtide/VioletPall.java +++ b/Mage.Sets/src/mage/sets/morningtide/VioletPall.java @@ -35,6 +35,8 @@ import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.ColorPredicate; import mage.target.common.TargetCreaturePermanent; /** @@ -46,9 +48,7 @@ public class VioletPall extends CardImpl { private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("nonblack creature"); static { - filter.setUseColor(true); - filter.setColor(ObjectColor.BLACK); - filter.setNotColor(true); + filter.add(Predicates.not(new ColorPredicate(ObjectColor.BLACK))); } public VioletPall(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/newphyrexia/ApostlesBlessing.java b/Mage.Sets/src/mage/sets/newphyrexia/ApostlesBlessing.java index 9193c900eba..6123ba82ce0 100644 --- a/Mage.Sets/src/mage/sets/newphyrexia/ApostlesBlessing.java +++ b/Mage.Sets/src/mage/sets/newphyrexia/ApostlesBlessing.java @@ -39,11 +39,11 @@ import mage.abilities.effects.common.continious.GainAbilityTargetEffect; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.choices.ChoiceColorOrArtifact; -import mage.filter.Filter.ComparisonScope; import mage.filter.FilterCard; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.CardTypePredicate; +import mage.filter.predicate.mageobject.ColorPredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.target.common.TargetControlledPermanent; @@ -103,9 +103,7 @@ class ApostlesBlessingEffect extends GainAbilityTargetEffect { if (choice.isArtifactSelected()) { protectionFilter.add(new CardTypePredicate(Constants.CardType.ARTIFACT)); } else { - protectionFilter.setColor(choice.getColor()); - protectionFilter.setUseColor(true); - protectionFilter.setScopeColor(ComparisonScope.Any); + protectionFilter.add(new ColorPredicate(choice.getColor())); } protectionFilter.setMessage(choice.getChoice()); diff --git a/Mage.Sets/src/mage/sets/newphyrexia/ShrineOfBoundlessGrowth.java b/Mage.Sets/src/mage/sets/newphyrexia/ShrineOfBoundlessGrowth.java index 7fda6038416..38cefe8ec06 100644 --- a/Mage.Sets/src/mage/sets/newphyrexia/ShrineOfBoundlessGrowth.java +++ b/Mage.Sets/src/mage/sets/newphyrexia/ShrineOfBoundlessGrowth.java @@ -34,6 +34,7 @@ import mage.Constants.Rarity; import mage.Constants.TargetController; import mage.Constants.Zone; import mage.Mana; +import mage.ObjectColor; import mage.abilities.Ability; import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; import mage.abilities.common.SimpleActivatedAbility; @@ -46,6 +47,7 @@ import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.cards.CardImpl; import mage.counters.CounterType; import mage.filter.FilterSpell; +import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -56,8 +58,7 @@ public class ShrineOfBoundlessGrowth extends CardImpl { private static final FilterSpell filter = new FilterSpell("a green spell"); static { - filter.getColor().setGreen(true); - filter.setUseColor(true); + filter.add(new ColorPredicate(ObjectColor.GREEN)); } public ShrineOfBoundlessGrowth (UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/newphyrexia/ShrineOfBurningRage.java b/Mage.Sets/src/mage/sets/newphyrexia/ShrineOfBurningRage.java index 3438400e958..af30d446424 100644 --- a/Mage.Sets/src/mage/sets/newphyrexia/ShrineOfBurningRage.java +++ b/Mage.Sets/src/mage/sets/newphyrexia/ShrineOfBurningRage.java @@ -32,6 +32,7 @@ import java.util.UUID; import mage.Constants; import mage.Constants.CardType; import mage.Constants.Rarity; +import mage.ObjectColor; import mage.abilities.Ability; import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; import mage.abilities.common.SimpleActivatedAbility; @@ -45,18 +46,18 @@ import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.cards.CardImpl; import mage.counters.CounterType; import mage.filter.FilterSpell; +import mage.filter.predicate.mageobject.ColorPredicate; import mage.target.common.TargetCreatureOrPlayer; /** * - * @author + * @author BetaSteward */ public class ShrineOfBurningRage extends CardImpl { private final static FilterSpell filter = new FilterSpell("a red spell"); static { - filter.getColor().setRed(true); - filter.setUseColor(true); + filter.add(new ColorPredicate(ObjectColor.RED)); } public ShrineOfBurningRage (UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/newphyrexia/ShrineOfLimitlessPower.java b/Mage.Sets/src/mage/sets/newphyrexia/ShrineOfLimitlessPower.java index a8089f0b6a2..9029b4a277d 100644 --- a/Mage.Sets/src/mage/sets/newphyrexia/ShrineOfLimitlessPower.java +++ b/Mage.Sets/src/mage/sets/newphyrexia/ShrineOfLimitlessPower.java @@ -32,6 +32,7 @@ import mage.Constants.CardType; import mage.Constants.Rarity; import mage.Constants.TargetController; import mage.Constants.Zone; +import mage.ObjectColor; import mage.abilities.Ability; import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; import mage.abilities.common.SimpleActivatedAbility; @@ -45,6 +46,7 @@ import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.cards.CardImpl; import mage.counters.CounterType; import mage.filter.FilterSpell; +import mage.filter.predicate.mageobject.ColorPredicate; import mage.target.TargetPlayer; /** @@ -56,8 +58,7 @@ public class ShrineOfLimitlessPower extends CardImpl { private static final FilterSpell filter = new FilterSpell("a black spell"); static { - filter.getColor().setBlack(true); - filter.setUseColor(true); + filter.add(new ColorPredicate(ObjectColor.BLACK)); } public ShrineOfLimitlessPower(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/newphyrexia/ShrineOfLoyalLegions.java b/Mage.Sets/src/mage/sets/newphyrexia/ShrineOfLoyalLegions.java index 810ddd92195..ad0825f50ef 100644 --- a/Mage.Sets/src/mage/sets/newphyrexia/ShrineOfLoyalLegions.java +++ b/Mage.Sets/src/mage/sets/newphyrexia/ShrineOfLoyalLegions.java @@ -32,6 +32,7 @@ import mage.Constants.CardType; import mage.Constants.Rarity; import mage.Constants.TargetController; import mage.Constants.Zone; +import mage.ObjectColor; import mage.abilities.Ability; import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; import mage.abilities.common.SimpleActivatedAbility; @@ -45,6 +46,7 @@ import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.cards.CardImpl; import mage.counters.CounterType; import mage.filter.FilterSpell; +import mage.filter.predicate.mageobject.ColorPredicate; import mage.game.permanent.token.MyrToken; /** @@ -56,8 +58,7 @@ public class ShrineOfLoyalLegions extends CardImpl { private static final FilterSpell filter = new FilterSpell("a white spell"); static { - filter.getColor().setWhite(true); - filter.setUseColor(true); + filter.add(new ColorPredicate(ObjectColor.WHITE)); } public ShrineOfLoyalLegions(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/newphyrexia/ShrineOfPiercingVision.java b/Mage.Sets/src/mage/sets/newphyrexia/ShrineOfPiercingVision.java index 88f8076efde..25be90ac34f 100644 --- a/Mage.Sets/src/mage/sets/newphyrexia/ShrineOfPiercingVision.java +++ b/Mage.Sets/src/mage/sets/newphyrexia/ShrineOfPiercingVision.java @@ -33,6 +33,7 @@ import mage.Constants.Outcome; import mage.Constants.Rarity; import mage.Constants.TargetController; import mage.Constants.Zone; +import mage.ObjectColor; import mage.abilities.Ability; import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; import mage.abilities.common.SimpleActivatedAbility; @@ -48,6 +49,7 @@ import mage.cards.CardsImpl; import mage.counters.CounterType; import mage.filter.FilterCard; import mage.filter.FilterSpell; +import mage.filter.predicate.mageobject.ColorPredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; @@ -62,8 +64,7 @@ public class ShrineOfPiercingVision extends CardImpl { private static final FilterSpell filter = new FilterSpell("a blue spell"); static { - filter.getColor().setBlue(true); - filter.setUseColor(true); + filter.add(new ColorPredicate(ObjectColor.BLUE)); } public ShrineOfPiercingVision(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/newphyrexia/SwordOfWarAndPeace.java b/Mage.Sets/src/mage/sets/newphyrexia/SwordOfWarAndPeace.java index e8403806af2..eb2733d6da9 100644 --- a/Mage.Sets/src/mage/sets/newphyrexia/SwordOfWarAndPeace.java +++ b/Mage.Sets/src/mage/sets/newphyrexia/SwordOfWarAndPeace.java @@ -35,6 +35,7 @@ import mage.Constants.CardType; import mage.Constants.Outcome; import mage.Constants.Rarity; import mage.Constants.Zone; +import mage.ObjectColor; import mage.abilities.Ability; import mage.abilities.TriggeredAbilityImpl; import mage.abilities.common.SimpleStaticAbility; @@ -47,8 +48,9 @@ import mage.abilities.effects.common.continious.GainAbilityAttachedEffect; import mage.abilities.keyword.EquipAbility; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterCard; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.ColorPredicate; import mage.game.Game; import mage.game.events.DamagedPlayerEvent; import mage.game.events.GameEvent; @@ -64,10 +66,9 @@ public class SwordOfWarAndPeace extends CardImpl { private static final FilterCard filter = new FilterCard("red and from white"); static { - filter.setUseColor(true); - filter.getColor().setRed(true); - filter.getColor().setWhite(true); - filter.setScopeColor(Filter.ComparisonScope.Any); + filter.add(Predicates.or( + new ColorPredicate(ObjectColor.RED), + new ColorPredicate(ObjectColor.WHITE))); } public SwordOfWarAndPeace (UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/newphyrexia/VulshokRefugee.java b/Mage.Sets/src/mage/sets/newphyrexia/VulshokRefugee.java index ac76c583280..86cae6ddd25 100644 --- a/Mage.Sets/src/mage/sets/newphyrexia/VulshokRefugee.java +++ b/Mage.Sets/src/mage/sets/newphyrexia/VulshokRefugee.java @@ -31,10 +31,11 @@ import java.util.UUID; import mage.Constants.CardType; import mage.Constants.Rarity; import mage.MageInt; +import mage.ObjectColor; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -45,9 +46,7 @@ public class VulshokRefugee extends CardImpl { private static final FilterCard filter = new FilterCard("Red"); static { - filter.setUseColor(true); - filter.getColor().setRed(true); - filter.setScopeColor(ComparisonScope.Any); + filter.add(new ColorPredicate(ObjectColor.RED)); } public VulshokRefugee(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/planarchaos/CrovaxAscendantHero.java b/Mage.Sets/src/mage/sets/planarchaos/CrovaxAscendantHero.java index afe3a2ccde8..b6d3bb0df8c 100644 --- a/Mage.Sets/src/mage/sets/planarchaos/CrovaxAscendantHero.java +++ b/Mage.Sets/src/mage/sets/planarchaos/CrovaxAscendantHero.java @@ -33,6 +33,7 @@ import mage.Constants; import mage.Constants.CardType; import mage.Constants.Rarity; import mage.MageInt; +import mage.ObjectColor; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.costs.common.PayLifeCost; @@ -40,21 +41,20 @@ import mage.abilities.effects.common.ReturnToHandSourceEffect; import mage.abilities.effects.common.continious.BoostAllEffect; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.ColorPredicate; /** * * @author Loki */ public class CrovaxAscendantHero extends CardImpl { - private static FilterCreaturePermanent filter1 = new FilterCreaturePermanent("white creatures"); - private static FilterCreaturePermanent filter2 = new FilterCreaturePermanent("Nonwhite creatures"); + private static final FilterCreaturePermanent filter1 = new FilterCreaturePermanent("white creatures"); + private static final FilterCreaturePermanent filter2 = new FilterCreaturePermanent("Nonwhite creatures"); static { - filter1.getColor().setWhite(true); - filter1.setUseColor(true); - filter2.getColor().setWhite(true); - filter2.setUseColor(true); - filter2.setNotColor(true); + filter1.add(new ColorPredicate(ObjectColor.WHITE)); + filter2.add(Predicates.not(new ColorPredicate(ObjectColor.WHITE))); } public CrovaxAscendantHero(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/planarchaos/DuneriderOutlaw.java b/Mage.Sets/src/mage/sets/planarchaos/DuneriderOutlaw.java index c84cd388ab4..24a9a94d632 100644 --- a/Mage.Sets/src/mage/sets/planarchaos/DuneriderOutlaw.java +++ b/Mage.Sets/src/mage/sets/planarchaos/DuneriderOutlaw.java @@ -41,6 +41,7 @@ import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.counters.CounterType; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.ColorPredicate; import mage.game.events.GameEvent; /** @@ -53,8 +54,7 @@ public class DuneriderOutlaw extends CardImpl { private static final FilterCard filter = new FilterCard("green"); static { - filter.setColor(ObjectColor.GREEN); - filter.setUseColor(true); + filter.add(new ColorPredicate(ObjectColor.GREEN)); } public DuneriderOutlaw(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/planechase/AscendantEvincar.java b/Mage.Sets/src/mage/sets/planechase/AscendantEvincar.java index 809c4333183..76557915914 100644 --- a/Mage.Sets/src/mage/sets/planechase/AscendantEvincar.java +++ b/Mage.Sets/src/mage/sets/planechase/AscendantEvincar.java @@ -33,11 +33,14 @@ import mage.Constants; import mage.Constants.CardType; import mage.Constants.Rarity; import mage.MageInt; +import mage.ObjectColor; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.common.continious.BoostAllEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -49,11 +52,8 @@ public class AscendantEvincar extends CardImpl { private final static FilterCreaturePermanent filterNonBlack = new FilterCreaturePermanent("Nonblack creatures"); static { - filterBlack.setUseColor(true); - filterBlack.getColor().setBlack(true); - filterNonBlack.setUseColor(true); - filterNonBlack.getColor().setBlack(true); - filterNonBlack.setNotColor(true); + filterBlack.add(new ColorPredicate(ObjectColor.BLACK)); + filterNonBlack.add(Predicates.not(new ColorPredicate(ObjectColor.BLACK))); } public AscendantEvincar(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/ravnika/AgrusKosWojekVeteran.java b/Mage.Sets/src/mage/sets/ravnika/AgrusKosWojekVeteran.java index 11420666e4a..8f3015172b8 100644 --- a/Mage.Sets/src/mage/sets/ravnika/AgrusKosWojekVeteran.java +++ b/Mage.Sets/src/mage/sets/ravnika/AgrusKosWojekVeteran.java @@ -38,6 +38,7 @@ import mage.abilities.common.AttacksTriggeredAbility; import mage.abilities.effects.common.continious.BoostAllEffect; import mage.cards.CardImpl; import mage.filter.common.FilterAttackingCreature; +import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -49,10 +50,8 @@ public class AgrusKosWojekVeteran extends CardImpl { private final static FilterAttackingCreature filterWhite = new FilterAttackingCreature("attacking white creatures"); static { - filterRed.setUseColor(true); - filterRed.setColor(ObjectColor.RED); - filterWhite.setUseColor(true); - filterWhite.setColor(ObjectColor.WHITE); + filterRed.add(new ColorPredicate(ObjectColor.RED)); + filterWhite.add(new ColorPredicate(ObjectColor.WHITE)); } diff --git a/Mage.Sets/src/mage/sets/ravnika/HuntedHorror.java b/Mage.Sets/src/mage/sets/ravnika/HuntedHorror.java index 71efa5d6533..06159364153 100644 --- a/Mage.Sets/src/mage/sets/ravnika/HuntedHorror.java +++ b/Mage.Sets/src/mage/sets/ravnika/HuntedHorror.java @@ -40,6 +40,7 @@ import mage.abilities.keyword.ProtectionAbility; import mage.abilities.keyword.TrampleAbility; import mage.cards.CardImpl; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.ColorPredicate; import mage.game.permanent.token.Token; import mage.target.Target; import mage.target.common.TargetOpponent; @@ -83,8 +84,7 @@ class CentaurToken extends Token { private final static FilterCard filter = new FilterCard("black"); static { - filter.setUseColor(true); - filter.setColor(ObjectColor.BLACK); + filter.add(new ColorPredicate(ObjectColor.BLACK)); } CentaurToken() { diff --git a/Mage.Sets/src/mage/sets/riseoftheeldrazi/AncientStirrings.java b/Mage.Sets/src/mage/sets/riseoftheeldrazi/AncientStirrings.java index 4204df0d2b0..b671b1390b1 100644 --- a/Mage.Sets/src/mage/sets/riseoftheeldrazi/AncientStirrings.java +++ b/Mage.Sets/src/mage/sets/riseoftheeldrazi/AncientStirrings.java @@ -34,6 +34,7 @@ import mage.abilities.dynamicvalue.common.StaticValue; import mage.abilities.effects.common.LookLibraryAndPickControllerEffect; import mage.cards.CardImpl; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.ColorlessPredicate; import java.util.UUID; @@ -45,8 +46,7 @@ public class AncientStirrings extends CardImpl { private final static FilterCard filter = new FilterCard("colorless card"); static { - filter.setColorless(true); - filter.setUseColorless(true); + filter.add(new ColorlessPredicate()); } diff --git a/Mage.Sets/src/mage/sets/riseoftheeldrazi/Corpsehatch.java b/Mage.Sets/src/mage/sets/riseoftheeldrazi/Corpsehatch.java index 97c76865c04..cd83e19ab21 100644 --- a/Mage.Sets/src/mage/sets/riseoftheeldrazi/Corpsehatch.java +++ b/Mage.Sets/src/mage/sets/riseoftheeldrazi/Corpsehatch.java @@ -30,10 +30,13 @@ package mage.sets.riseoftheeldrazi; import java.util.UUID; import mage.Constants.CardType; import mage.Constants.Rarity; +import mage.ObjectColor; import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.ColorPredicate; import mage.game.permanent.token.EldraziSpawnToken; import mage.target.common.TargetCreaturePermanent; @@ -46,9 +49,7 @@ public class Corpsehatch extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonblack creature"); static { - filter.setUseColor(true); - filter.getColor().setBlack(true); - filter.setNotColor(true); + filter.add(Predicates.not(new ColorPredicate(ObjectColor.BLACK))); } public Corpsehatch(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/riseoftheeldrazi/EmrakulTheAeonsTorn.java b/Mage.Sets/src/mage/sets/riseoftheeldrazi/EmrakulTheAeonsTorn.java index c40fa85f7ca..8ffc9e61db3 100644 --- a/Mage.Sets/src/mage/sets/riseoftheeldrazi/EmrakulTheAeonsTorn.java +++ b/Mage.Sets/src/mage/sets/riseoftheeldrazi/EmrakulTheAeonsTorn.java @@ -44,6 +44,8 @@ import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.filter.FilterSpell; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.ColorlessPredicate; import mage.game.Game; import mage.game.events.GameEvent; import mage.game.stack.Spell; @@ -59,8 +61,7 @@ public class EmrakulTheAeonsTorn extends CardImpl { private static final FilterSpell filter = new FilterSpell("colored spells"); static { - filter.setColorless(false); - filter.setUseColorless(true); + filter.add(Predicates.not(new ColorlessPredicate())); } public EmrakulTheAeonsTorn(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/riseoftheeldrazi/KhalniHydra.java b/Mage.Sets/src/mage/sets/riseoftheeldrazi/KhalniHydra.java index 8eee232eb61..3bf9beaf414 100644 --- a/Mage.Sets/src/mage/sets/riseoftheeldrazi/KhalniHydra.java +++ b/Mage.Sets/src/mage/sets/riseoftheeldrazi/KhalniHydra.java @@ -42,6 +42,7 @@ import mage.abilities.effects.OneShotEffect; import mage.abilities.keyword.TrampleAbility; import mage.cards.CardImpl; import mage.filter.common.FilterControlledCreaturePermanent; +import mage.filter.predicate.mageobject.ColorPredicate; import mage.game.Game; /** @@ -54,8 +55,7 @@ public class KhalniHydra extends CardImpl { static { filter = new FilterControlledCreaturePermanent(); - filter.setUseColor(true); - filter.setColor(ObjectColor.GREEN); + filter.add(new ColorPredicate(ObjectColor.GREEN)); } public KhalniHydra(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/riseoftheeldrazi/Vendetta.java b/Mage.Sets/src/mage/sets/riseoftheeldrazi/Vendetta.java index 9d5a2553546..388e40dbe33 100644 --- a/Mage.Sets/src/mage/sets/riseoftheeldrazi/Vendetta.java +++ b/Mage.Sets/src/mage/sets/riseoftheeldrazi/Vendetta.java @@ -39,6 +39,8 @@ import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.ColorPredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; @@ -53,8 +55,7 @@ public class Vendetta extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonblack creature"); static { - filter.setColor(ObjectColor.BLACK); - filter.setNotColor(true); + filter.add(Predicates.not(new ColorPredicate(ObjectColor.BLACK))); } public Vendetta(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/saviorsofkamigawa/EiganjoFreeRiders.java b/Mage.Sets/src/mage/sets/saviorsofkamigawa/EiganjoFreeRiders.java index eb9cdd8b7de..84c797c3873 100644 --- a/Mage.Sets/src/mage/sets/saviorsofkamigawa/EiganjoFreeRiders.java +++ b/Mage.Sets/src/mage/sets/saviorsofkamigawa/EiganjoFreeRiders.java @@ -33,12 +33,14 @@ import mage.Constants; import mage.Constants.CardType; import mage.Constants.Rarity; import mage.MageInt; +import mage.ObjectColor; import mage.abilities.Ability; import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; import mage.abilities.effects.common.ReturnToHandTargetEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.filter.common.FilterControlledCreaturePermanent; +import mage.filter.predicate.mageobject.ColorPredicate; import mage.target.common.TargetControlledCreaturePermanent; /** @@ -49,8 +51,7 @@ public class EiganjoFreeRiders extends CardImpl { private final static FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("white creature you control"); static { - filter.setUseColor(true); - filter.getColor().setWhite(true); + filter.add(new ColorPredicate(ObjectColor.WHITE)); } public EiganjoFreeRiders(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/saviorsofkamigawa/HandOfCruelty.java b/Mage.Sets/src/mage/sets/saviorsofkamigawa/HandOfCruelty.java index 2bcf308c5eb..ef341181c27 100644 --- a/Mage.Sets/src/mage/sets/saviorsofkamigawa/HandOfCruelty.java +++ b/Mage.Sets/src/mage/sets/saviorsofkamigawa/HandOfCruelty.java @@ -31,10 +31,12 @@ import java.util.UUID; import mage.Constants.CardType; import mage.Constants.Rarity; import mage.MageInt; +import mage.ObjectColor; import mage.abilities.keyword.BushidoAbility; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -45,8 +47,7 @@ public class HandOfCruelty extends CardImpl { private final static FilterCard filter = new FilterCard("white"); static { - filter.setUseColor(true); - filter.getColor().setWhite(true); + filter.add(new ColorPredicate(ObjectColor.WHITE)); } public HandOfCruelty(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/saviorsofkamigawa/HandOfHonor.java b/Mage.Sets/src/mage/sets/saviorsofkamigawa/HandOfHonor.java index 7a52a90cb82..a14fcf92388 100644 --- a/Mage.Sets/src/mage/sets/saviorsofkamigawa/HandOfHonor.java +++ b/Mage.Sets/src/mage/sets/saviorsofkamigawa/HandOfHonor.java @@ -32,10 +32,12 @@ import java.util.UUID; import mage.Constants.CardType; import mage.Constants.Rarity; import mage.MageInt; +import mage.ObjectColor; import mage.abilities.keyword.BushidoAbility; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.ColorPredicate; /** * @author anonymous @@ -45,8 +47,7 @@ public class HandOfHonor extends CardImpl { private final static FilterCard filter = new FilterCard("black"); static { - filter.setUseColor(true); - filter.getColor().setBlack(true); + filter.add(new ColorPredicate(ObjectColor.BLACK)); } public HandOfHonor(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/saviorsofkamigawa/OniOfWildPlaces.java b/Mage.Sets/src/mage/sets/saviorsofkamigawa/OniOfWildPlaces.java index 26b54c992d4..c5237cf1cdd 100644 --- a/Mage.Sets/src/mage/sets/saviorsofkamigawa/OniOfWildPlaces.java +++ b/Mage.Sets/src/mage/sets/saviorsofkamigawa/OniOfWildPlaces.java @@ -33,12 +33,14 @@ import mage.Constants; import mage.Constants.CardType; import mage.Constants.Rarity; import mage.MageInt; +import mage.ObjectColor; import mage.abilities.Ability; import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; import mage.abilities.effects.common.ReturnToHandTargetEffect; import mage.abilities.keyword.HasteAbility; import mage.cards.CardImpl; import mage.filter.common.FilterControlledCreaturePermanent; +import mage.filter.predicate.mageobject.ColorPredicate; import mage.target.common.TargetControlledCreaturePermanent; /** @@ -50,8 +52,7 @@ public class OniOfWildPlaces extends CardImpl { private final static FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("red creature you control"); static { - filter.setUseColor(true); - filter.getColor().setRed(true); + filter.add(new ColorPredicate(ObjectColor.RED)); } public OniOfWildPlaces(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/saviorsofkamigawa/SkullCollector.java b/Mage.Sets/src/mage/sets/saviorsofkamigawa/SkullCollector.java index cc8d75004f5..36f6b37322d 100644 --- a/Mage.Sets/src/mage/sets/saviorsofkamigawa/SkullCollector.java +++ b/Mage.Sets/src/mage/sets/saviorsofkamigawa/SkullCollector.java @@ -33,6 +33,7 @@ import mage.Constants; import mage.Constants.CardType; import mage.Constants.Rarity; import mage.MageInt; +import mage.ObjectColor; import mage.abilities.Ability; import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; import mage.abilities.common.SimpleActivatedAbility; @@ -41,6 +42,7 @@ import mage.abilities.effects.common.RegenerateSourceEffect; import mage.abilities.effects.common.ReturnToHandTargetEffect; import mage.cards.CardImpl; import mage.filter.common.FilterControlledCreaturePermanent; +import mage.filter.predicate.mageobject.ColorPredicate; import mage.target.common.TargetControlledCreaturePermanent; /** @@ -52,8 +54,7 @@ public class SkullCollector extends CardImpl { private final static FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("black creature you control"); static { - filter.setUseColor(true); - filter.getColor().setBlack(true); + filter.add(new ColorPredicate(ObjectColor.BLACK)); } public SkullCollector(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/saviorsofkamigawa/StampedingSerow.java b/Mage.Sets/src/mage/sets/saviorsofkamigawa/StampedingSerow.java index e21c48c9de6..68966f84bc0 100644 --- a/Mage.Sets/src/mage/sets/saviorsofkamigawa/StampedingSerow.java +++ b/Mage.Sets/src/mage/sets/saviorsofkamigawa/StampedingSerow.java @@ -31,12 +31,14 @@ import mage.Constants; import mage.Constants.CardType; import mage.Constants.Rarity; import mage.MageInt; +import mage.ObjectColor; import mage.abilities.Ability; import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; import mage.abilities.effects.common.ReturnToHandTargetEffect; import mage.abilities.keyword.TrampleAbility; import mage.cards.CardImpl; import mage.filter.common.FilterControlledCreaturePermanent; +import mage.filter.predicate.mageobject.ColorPredicate; import mage.target.Target; import mage.target.common.TargetControlledCreaturePermanent; @@ -50,8 +52,7 @@ public class StampedingSerow extends CardImpl { private final static FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("green creature you control"); static { - filter.setUseColor(true); - filter.getColor().setGreen(true); + filter.add(new ColorPredicate(ObjectColor.GREEN)); } public StampedingSerow(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/BellowingTanglewurm.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/BellowingTanglewurm.java index ea4472cb6b7..56ea3791cd1 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/BellowingTanglewurm.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/BellowingTanglewurm.java @@ -34,12 +34,14 @@ import mage.Constants.Duration; import mage.Constants.Rarity; import mage.Constants.Zone; import mage.MageInt; +import mage.ObjectColor; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.common.continious.GainAbilityControlledEffect; import mage.abilities.keyword.IntimidateAbility; import mage.cards.CardImpl; import mage.filter.FilterPermanent; import mage.filter.predicate.mageobject.CardTypePredicate; +import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -50,8 +52,7 @@ public class BellowingTanglewurm extends CardImpl { static { filter.add(new CardTypePredicate(CardType.CREATURE)); - filter.setUseColor(true); - filter.getColor().setGreen(true); + filter.add(new ColorPredicate(ObjectColor.GREEN)); } public BellowingTanglewurm (UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/EtchedChampion.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/EtchedChampion.java index 5a9ba173c37..075d25c34ea 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/EtchedChampion.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/EtchedChampion.java @@ -33,6 +33,7 @@ import mage.Constants.Duration; import mage.Constants.Rarity; import mage.Constants.Zone; import mage.MageInt; +import mage.ObjectColor; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.condition.common.MetalcraftCondition; import mage.abilities.decorator.ConditionalContinousEffect; @@ -40,8 +41,9 @@ import mage.abilities.effects.ContinuousEffect; import mage.abilities.effects.common.continious.GainAbilitySourceEffect; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.FilterCard; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -53,13 +55,12 @@ public class EtchedChampion extends CardImpl { private static final FilterCard filter = new FilterCard("all colors"); static { - filter.setUseColor(true); - filter.getColor().setBlack(true); - filter.getColor().setBlue(true); - filter.getColor().setGreen(true); - filter.getColor().setRed(true); - filter.getColor().setWhite(true); - filter.setScopeColor(ComparisonScope.Any); + filter.add(Predicates.or( + new ColorPredicate(ObjectColor.BLACK), + new ColorPredicate(ObjectColor.BLUE), + new ColorPredicate(ObjectColor.GREEN), + new ColorPredicate(ObjectColor.RED), + new ColorPredicate(ObjectColor.WHITE))); } public EtchedChampion(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/GrandArchitect.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/GrandArchitect.java index c4374447de3..07353e3ed0e 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/GrandArchitect.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/GrandArchitect.java @@ -41,6 +41,7 @@ import mage.Constants.Zone; import mage.MageInt; import mage.MageObject; import mage.Mana; +import mage.ObjectColor; import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.common.SimpleStaticAbility; @@ -55,6 +56,7 @@ import mage.cards.CardImpl; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.CardTypePredicate; +import mage.filter.predicate.mageobject.ColorPredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.target.TargetPermanent; @@ -70,8 +72,7 @@ public class GrandArchitect extends CardImpl { private static final FilterCreaturePermanent targetFilter = new FilterCreaturePermanent("artifact creature"); static { - boostFilter.getColor().setBlue(true); - boostFilter.setUseColor(true); + boostFilter.add(new ColorPredicate(ObjectColor.BLUE)); targetFilter.add(new CardTypePredicate(CardType.ARTIFACT)); } @@ -139,8 +140,7 @@ class GrandArchitectManaAbility extends ManaAbility { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("untapped blue creature"); static { - filter.getColor().setBlue(true); - filter.setUseColor(true); + filter.add(new ColorPredicate(ObjectColor.BLUE)); filter.setTapped(false); filter.setUseTapped(true); } diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/SwordOfBodyAndMind.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/SwordOfBodyAndMind.java index c397b2cd399..5a0f8a08005 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/SwordOfBodyAndMind.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/SwordOfBodyAndMind.java @@ -33,6 +33,7 @@ import mage.Constants.CardType; import mage.Constants.Outcome; import mage.Constants.Rarity; import mage.Constants.Zone; +import mage.ObjectColor; import mage.abilities.TriggeredAbilityImpl; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.costs.mana.GenericManaCost; @@ -44,8 +45,9 @@ import mage.abilities.effects.common.continious.GainAbilityAttachedEffect; import mage.abilities.keyword.EquipAbility; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterCard; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.ColorPredicate; import mage.game.Game; import mage.game.events.DamagedPlayerEvent; import mage.game.events.GameEvent; @@ -64,10 +66,9 @@ public class SwordOfBodyAndMind extends CardImpl { private static final FilterCard filter = new FilterCard("green and from blue"); static { - filter.setUseColor(true); - filter.getColor().setBlue(true); - filter.getColor().setGreen(true); - filter.setScopeColor(Filter.ComparisonScope.Any); + filter.add(Predicates.or( + new ColorPredicate(ObjectColor.GREEN), + new ColorPredicate(ObjectColor.BLUE))); } diff --git a/Mage.Sets/src/mage/sets/shadowmoor/BloodmarkMentor.java b/Mage.Sets/src/mage/sets/shadowmoor/BloodmarkMentor.java index 8445f075826..269811790df 100644 --- a/Mage.Sets/src/mage/sets/shadowmoor/BloodmarkMentor.java +++ b/Mage.Sets/src/mage/sets/shadowmoor/BloodmarkMentor.java @@ -33,11 +33,13 @@ import mage.Constants.Duration; import mage.Constants.Rarity; import mage.Constants.Zone; import mage.MageInt; +import mage.ObjectColor; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.common.continious.GainAbilityControlledEffect; import mage.abilities.keyword.FirstStrikeAbility; import mage.cards.CardImpl; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -48,8 +50,7 @@ public class BloodmarkMentor extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("Red creatures"); static { - filter.getColor().setRed(true); - filter.setUseColor(true); + filter.add(new ColorPredicate(ObjectColor.RED)); } public BloodmarkMentor(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/shadowmoor/BoartuskLiege.java b/Mage.Sets/src/mage/sets/shadowmoor/BoartuskLiege.java index 9ea630f3809..061f7b059c4 100644 --- a/Mage.Sets/src/mage/sets/shadowmoor/BoartuskLiege.java +++ b/Mage.Sets/src/mage/sets/shadowmoor/BoartuskLiege.java @@ -33,11 +33,13 @@ import mage.Constants.Duration; import mage.Constants.Rarity; import mage.Constants.Zone; import mage.MageInt; +import mage.ObjectColor; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.common.continious.BoostControlledEffect; import mage.abilities.keyword.TrampleAbility; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -49,10 +51,8 @@ public class BoartuskLiege extends CardImpl { private static final FilterCreaturePermanent filterGreen = new FilterCreaturePermanent("green creatures"); static { - filterRed.getColor().setRed(true); - filterRed.setUseColor(true); - filterGreen.getColor().setGreen(true); - filterGreen.setUseColor(true); + filterRed.add(new ColorPredicate(ObjectColor.RED)); + filterGreen.add(new ColorPredicate(ObjectColor.GREEN)); } public BoartuskLiege(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/shadowmoor/CorrosiveMentor.java b/Mage.Sets/src/mage/sets/shadowmoor/CorrosiveMentor.java index 6a165348bbd..7cfb64c9b63 100644 --- a/Mage.Sets/src/mage/sets/shadowmoor/CorrosiveMentor.java +++ b/Mage.Sets/src/mage/sets/shadowmoor/CorrosiveMentor.java @@ -33,11 +33,13 @@ import mage.Constants.Duration; import mage.Constants.Rarity; import mage.Constants.Zone; import mage.MageInt; +import mage.ObjectColor; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.common.continious.GainAbilityControlledEffect; import mage.abilities.keyword.WitherAbility; import mage.cards.CardImpl; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -48,8 +50,7 @@ public class CorrosiveMentor extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("Black creatures"); static { - filter.getColor().setBlack(true); - filter.setUseColor(true); + filter.add(new ColorPredicate(ObjectColor.BLACK)); } public CorrosiveMentor(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/shadowmoor/CrowdOfCinders.java b/Mage.Sets/src/mage/sets/shadowmoor/CrowdOfCinders.java index b3e2af188c5..6f18305f524 100644 --- a/Mage.Sets/src/mage/sets/shadowmoor/CrowdOfCinders.java +++ b/Mage.Sets/src/mage/sets/shadowmoor/CrowdOfCinders.java @@ -33,12 +33,14 @@ import mage.Constants.Duration; import mage.Constants.Rarity; import mage.Constants.Zone; import mage.MageInt; +import mage.ObjectColor; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.effects.common.continious.SetPowerToughnessSourceEffect; import mage.abilities.keyword.FearAbility; import mage.cards.CardImpl; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -49,8 +51,7 @@ public class CrowdOfCinders extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("black permanents you control"); static { - filter.getColor().setBlack(true); - filter.setUseColor(true); + filter.add(new ColorPredicate(ObjectColor.BLACK)); } public CrowdOfCinders(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/shadowmoor/DeepchannelMentor.java b/Mage.Sets/src/mage/sets/shadowmoor/DeepchannelMentor.java index 2c28c50e931..04477c78d42 100644 --- a/Mage.Sets/src/mage/sets/shadowmoor/DeepchannelMentor.java +++ b/Mage.Sets/src/mage/sets/shadowmoor/DeepchannelMentor.java @@ -33,11 +33,13 @@ import mage.Constants.Duration; import mage.Constants.Rarity; import mage.Constants.Zone; import mage.MageInt; +import mage.ObjectColor; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.common.continious.GainAbilityControlledEffect; import mage.abilities.keyword.UnblockableAbility; import mage.cards.CardImpl; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -48,8 +50,7 @@ public class DeepchannelMentor extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("Blue creatures"); static { - filter.getColor().setBlue(true); - filter.setUseColor(true); + filter.add(new ColorPredicate(ObjectColor.BLUE)); } public DeepchannelMentor(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/shadowmoor/DroveOfElves.java b/Mage.Sets/src/mage/sets/shadowmoor/DroveOfElves.java index c750720eb4d..cf9813a902a 100644 --- a/Mage.Sets/src/mage/sets/shadowmoor/DroveOfElves.java +++ b/Mage.Sets/src/mage/sets/shadowmoor/DroveOfElves.java @@ -33,12 +33,14 @@ import mage.Constants.Duration; import mage.Constants.Rarity; import mage.Constants.Zone; import mage.MageInt; +import mage.ObjectColor; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.effects.common.continious.SetPowerToughnessSourceEffect; import mage.abilities.keyword.HexproofAbility; import mage.cards.CardImpl; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -49,8 +51,7 @@ public class DroveOfElves extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("green permanents you control"); static { - filter.getColor().setGreen(true); - filter.setUseColor(true); + filter.add(new ColorPredicate(ObjectColor.GREEN)); } public DroveOfElves(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/shadowmoor/EmberstrikeDuo.java b/Mage.Sets/src/mage/sets/shadowmoor/EmberstrikeDuo.java index 52ecf38d018..c330a45f7ac 100644 --- a/Mage.Sets/src/mage/sets/shadowmoor/EmberstrikeDuo.java +++ b/Mage.Sets/src/mage/sets/shadowmoor/EmberstrikeDuo.java @@ -32,12 +32,14 @@ import mage.Constants.CardType; import mage.Constants.Duration; import mage.Constants.Rarity; import mage.MageInt; +import mage.ObjectColor; import mage.abilities.common.SpellCastTriggeredAbility; import mage.abilities.effects.common.continious.BoostSourceEffect; import mage.abilities.effects.common.continious.GainAbilitySourceEffect; import mage.abilities.keyword.FirstStrikeAbility; import mage.cards.CardImpl; import mage.filter.FilterSpell; +import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -49,10 +51,8 @@ public class EmberstrikeDuo extends CardImpl { private static final FilterSpell redFilter = new FilterSpell("a red spell"); static { - blackFilter.getColor().setBlack(true); - blackFilter.setUseColor(true); - redFilter.getColor().setRed(true); - redFilter.setUseColor(true); + blackFilter.add(new ColorPredicate(ObjectColor.BLACK)); + redFilter.add(new ColorPredicate(ObjectColor.RED)); } public EmberstrikeDuo(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/shadowmoor/FaerieSwarm.java b/Mage.Sets/src/mage/sets/shadowmoor/FaerieSwarm.java index 257f942320f..c33b3d7bcd8 100644 --- a/Mage.Sets/src/mage/sets/shadowmoor/FaerieSwarm.java +++ b/Mage.Sets/src/mage/sets/shadowmoor/FaerieSwarm.java @@ -33,12 +33,14 @@ import mage.Constants.Duration; import mage.Constants.Rarity; import mage.Constants.Zone; import mage.MageInt; +import mage.ObjectColor; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.effects.common.continious.SetPowerToughnessSourceEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -49,8 +51,7 @@ public class FaerieSwarm extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("blue permanents you control"); static { - filter.getColor().setBlue(true); - filter.setUseColor(true); + filter.add(new ColorPredicate(ObjectColor.BLUE)); } public FaerieSwarm(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/shadowmoor/GlenElendraLiege.java b/Mage.Sets/src/mage/sets/shadowmoor/GlenElendraLiege.java index c3d3b03e2f4..7a1e3603c89 100644 --- a/Mage.Sets/src/mage/sets/shadowmoor/GlenElendraLiege.java +++ b/Mage.Sets/src/mage/sets/shadowmoor/GlenElendraLiege.java @@ -33,11 +33,13 @@ import mage.Constants.Duration; import mage.Constants.Rarity; import mage.Constants.Zone; import mage.MageInt; +import mage.ObjectColor; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.common.continious.BoostControlledEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -49,10 +51,8 @@ public class GlenElendraLiege extends CardImpl { private static final FilterCreaturePermanent filterBlack = new FilterCreaturePermanent("black creatures"); static { - filterBlue.getColor().setBlue(true); - filterBlue.setUseColor(true); - filterBlack.getColor().setBlack(true); - filterBlack.setUseColor(true); + filterBlue.add(new ColorPredicate(ObjectColor.BLUE)); + filterBlack.add(new ColorPredicate(ObjectColor.BLACK)); } public GlenElendraLiege(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/shadowmoor/GravelgillDuo.java b/Mage.Sets/src/mage/sets/shadowmoor/GravelgillDuo.java index 379d84cc328..b19145a859b 100644 --- a/Mage.Sets/src/mage/sets/shadowmoor/GravelgillDuo.java +++ b/Mage.Sets/src/mage/sets/shadowmoor/GravelgillDuo.java @@ -32,12 +32,14 @@ import mage.Constants.CardType; import mage.Constants.Duration; import mage.Constants.Rarity; import mage.MageInt; +import mage.ObjectColor; import mage.abilities.common.SpellCastTriggeredAbility; import mage.abilities.effects.common.continious.BoostSourceEffect; import mage.abilities.effects.common.continious.GainAbilitySourceEffect; import mage.abilities.keyword.FearAbility; import mage.cards.CardImpl; import mage.filter.FilterSpell; +import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -49,10 +51,8 @@ public class GravelgillDuo extends CardImpl { private static final FilterSpell blackFilter = new FilterSpell("a black spell"); static { - blueFilter.getColor().setBlue(true); - blueFilter.setUseColor(true); - blackFilter.getColor().setBlack(true); - blackFilter.setUseColor(true); + blueFilter.add(new ColorPredicate(ObjectColor.BLUE)); + blackFilter.add(new ColorPredicate(ObjectColor.BLACK)); } public GravelgillDuo(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/shadowmoor/GutturalResponse.java b/Mage.Sets/src/mage/sets/shadowmoor/GutturalResponse.java index b34b20069d4..19be1d2daba 100644 --- a/Mage.Sets/src/mage/sets/shadowmoor/GutturalResponse.java +++ b/Mage.Sets/src/mage/sets/shadowmoor/GutturalResponse.java @@ -30,10 +30,12 @@ package mage.sets.shadowmoor; import java.util.UUID; import mage.Constants.CardType; import mage.Constants.Rarity; +import mage.ObjectColor; import mage.abilities.effects.common.CounterTargetEffect; import mage.cards.CardImpl; import mage.filter.FilterSpell; import mage.filter.predicate.mageobject.CardTypePredicate; +import mage.filter.predicate.mageobject.ColorPredicate; import mage.target.TargetSpell; /** @@ -46,8 +48,7 @@ public class GutturalResponse extends CardImpl { static { filter.add(new CardTypePredicate(CardType.INSTANT)); - filter.getColor().setBlue(true); - filter.setUseColor(true); + filter.add(new ColorPredicate(ObjectColor.BLUE)); } public GutturalResponse(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/shadowmoor/HordeOfBoggarts.java b/Mage.Sets/src/mage/sets/shadowmoor/HordeOfBoggarts.java index a46be0365f1..803e5b7bccd 100644 --- a/Mage.Sets/src/mage/sets/shadowmoor/HordeOfBoggarts.java +++ b/Mage.Sets/src/mage/sets/shadowmoor/HordeOfBoggarts.java @@ -33,12 +33,14 @@ import mage.Constants.Duration; import mage.Constants.Rarity; import mage.Constants.Zone; import mage.MageInt; +import mage.ObjectColor; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.effects.common.continious.CantBeBlockedByOneEffect; import mage.abilities.effects.common.continious.SetPowerToughnessSourceEffect; import mage.cards.CardImpl; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -49,8 +51,7 @@ public class HordeOfBoggarts extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("red permanents you control"); static { - filter.getColor().setRed(true); - filter.setUseColor(true); + filter.add(new ColorPredicate(ObjectColor.RED)); } public HordeOfBoggarts(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/shadowmoor/KithkinRabble.java b/Mage.Sets/src/mage/sets/shadowmoor/KithkinRabble.java index 1425bed9f4b..6d20637f546 100644 --- a/Mage.Sets/src/mage/sets/shadowmoor/KithkinRabble.java +++ b/Mage.Sets/src/mage/sets/shadowmoor/KithkinRabble.java @@ -33,12 +33,14 @@ import mage.Constants.Duration; import mage.Constants.Rarity; import mage.Constants.Zone; import mage.MageInt; +import mage.ObjectColor; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.effects.common.continious.SetPowerToughnessSourceEffect; import mage.abilities.keyword.VigilanceAbility; import mage.cards.CardImpl; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -49,8 +51,7 @@ public class KithkinRabble extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("white permanents you control"); static { - filter.getColor().setWhite(true); - filter.setUseColor(true); + filter.add(new ColorPredicate(ObjectColor.WHITE)); } public KithkinRabble(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/shadowmoor/LeechriddenSwamp.java b/Mage.Sets/src/mage/sets/shadowmoor/LeechriddenSwamp.java index 92cf92d346c..0448b777dd1 100644 --- a/Mage.Sets/src/mage/sets/shadowmoor/LeechriddenSwamp.java +++ b/Mage.Sets/src/mage/sets/shadowmoor/LeechriddenSwamp.java @@ -33,6 +33,7 @@ import mage.Constants.CardType; import mage.Constants.Outcome; import mage.Constants.Rarity; import mage.Mana; +import mage.ObjectColor; import mage.abilities.Ability; import mage.abilities.common.EntersBattlefieldTappedAbility; import mage.abilities.common.SimpleActivatedAbility; @@ -44,6 +45,7 @@ import mage.abilities.effects.common.BasicManaEffect; import mage.abilities.mana.SimpleManaAbility; import mage.cards.CardImpl; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.ColorPredicate; import mage.game.Game; import mage.players.Player; import mage.players.Players; @@ -86,8 +88,7 @@ class ControlTwoOrMoreBlackPermanentsCost extends CostImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonwhite creatures"); static { - filter.getColor().setWhite(true); - filter.setUseColor(true); - filter.setNotColor(true); + filter.add(Predicates.not(new ColorPredicate(ObjectColor.WHITE))); } public MassCalcify(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/shadowmoor/MidnightBanshee.java b/Mage.Sets/src/mage/sets/shadowmoor/MidnightBanshee.java index bbc7d15056d..28044a471bb 100644 --- a/Mage.Sets/src/mage/sets/shadowmoor/MidnightBanshee.java +++ b/Mage.Sets/src/mage/sets/shadowmoor/MidnightBanshee.java @@ -32,12 +32,15 @@ import mage.Constants; import mage.Constants.CardType; import mage.Constants.Rarity; import mage.MageInt; +import mage.ObjectColor; import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; import mage.abilities.effects.common.counter.AddCountersAllEffect; import mage.abilities.keyword.WitherAbility; import mage.cards.CardImpl; import mage.counters.CounterType; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -48,9 +51,7 @@ public class MidnightBanshee extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonblack creature"); static { - filter.getColor().setBlack(true); - filter.setUseColor(true); - filter.setNotColor(true); + filter.add(Predicates.not(new ColorPredicate(ObjectColor.BLACK))); } public MidnightBanshee(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/shadowmoor/OversoulOfDusk.java b/Mage.Sets/src/mage/sets/shadowmoor/OversoulOfDusk.java index 4c32e38cddf..7ef3c628eb3 100644 --- a/Mage.Sets/src/mage/sets/shadowmoor/OversoulOfDusk.java +++ b/Mage.Sets/src/mage/sets/shadowmoor/OversoulOfDusk.java @@ -31,10 +31,12 @@ import java.util.UUID; import mage.Constants.CardType; import mage.Constants.Rarity; import mage.MageInt; +import mage.ObjectColor; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.FilterCard; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -45,11 +47,10 @@ public class OversoulOfDusk extends CardImpl { private static final FilterCard filter = new FilterCard("blue, from black, and from red"); static { - filter.getColor().setBlue(true); - filter.getColor().setBlack(true); - filter.getColor().setRed(true); - filter.setUseColor(true); - filter.setScopeColor(ComparisonScope.Any); + filter.add(Predicates.or( + new ColorPredicate(ObjectColor.BLUE), + new ColorPredicate(ObjectColor.BLACK), + new ColorPredicate(ObjectColor.RED))); } public OversoulOfDusk(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/shadowmoor/ResplendentMentor.java b/Mage.Sets/src/mage/sets/shadowmoor/ResplendentMentor.java index cc9c55d0d60..72ccf405b05 100644 --- a/Mage.Sets/src/mage/sets/shadowmoor/ResplendentMentor.java +++ b/Mage.Sets/src/mage/sets/shadowmoor/ResplendentMentor.java @@ -33,6 +33,7 @@ import mage.Constants.Duration; import mage.Constants.Rarity; import mage.Constants.Zone; import mage.MageInt; +import mage.ObjectColor; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.costs.common.TapSourceCost; @@ -40,6 +41,7 @@ import mage.abilities.effects.common.GainLifeEffect; import mage.abilities.effects.common.continious.GainAbilityControlledEffect; import mage.cards.CardImpl; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -50,8 +52,7 @@ public class ResplendentMentor extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("White creatures"); static { - filter.getColor().setWhite(true); - filter.setUseColor(true); + filter.add(new ColorPredicate(ObjectColor.WHITE)); } public ResplendentMentor(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/shadowmoor/RoughshodMentor.java b/Mage.Sets/src/mage/sets/shadowmoor/RoughshodMentor.java index 078abf3ec01..d7845635615 100644 --- a/Mage.Sets/src/mage/sets/shadowmoor/RoughshodMentor.java +++ b/Mage.Sets/src/mage/sets/shadowmoor/RoughshodMentor.java @@ -33,11 +33,13 @@ import mage.Constants.Duration; import mage.Constants.Rarity; import mage.Constants.Zone; import mage.MageInt; +import mage.ObjectColor; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.common.continious.GainAbilityControlledEffect; import mage.abilities.keyword.TrampleAbility; import mage.cards.CardImpl; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -48,8 +50,7 @@ public class RoughshodMentor extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("Green creatures"); static { - filter.getColor().setGreen(true); - filter.setUseColor(true); + filter.add(new ColorPredicate(ObjectColor.GREEN)); } public RoughshodMentor(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/shadowmoor/SafeholdDuo.java b/Mage.Sets/src/mage/sets/shadowmoor/SafeholdDuo.java index d4df8f4c0dc..01498147549 100644 --- a/Mage.Sets/src/mage/sets/shadowmoor/SafeholdDuo.java +++ b/Mage.Sets/src/mage/sets/shadowmoor/SafeholdDuo.java @@ -32,12 +32,14 @@ import mage.Constants.CardType; import mage.Constants.Duration; import mage.Constants.Rarity; import mage.MageInt; +import mage.ObjectColor; import mage.abilities.common.SpellCastTriggeredAbility; import mage.abilities.effects.common.continious.BoostSourceEffect; import mage.abilities.effects.common.continious.GainAbilitySourceEffect; import mage.abilities.keyword.VigilanceAbility; import mage.cards.CardImpl; import mage.filter.FilterSpell; +import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -49,10 +51,8 @@ public class SafeholdDuo extends CardImpl { private static final FilterSpell greenFilter = new FilterSpell("a green spell"); static { - whiteFilter.getColor().setWhite(true); - whiteFilter.setUseColor(true); - greenFilter.getColor().setGreen(true); - greenFilter.setUseColor(true); + whiteFilter.add(new ColorPredicate(ObjectColor.WHITE)); + greenFilter.add(new ColorPredicate(ObjectColor.GREEN)); } public SafeholdDuo(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/shadowmoor/SootstokeKindler.java b/Mage.Sets/src/mage/sets/shadowmoor/SootstokeKindler.java index 77df9aea7c0..e80d0ddd814 100644 --- a/Mage.Sets/src/mage/sets/shadowmoor/SootstokeKindler.java +++ b/Mage.Sets/src/mage/sets/shadowmoor/SootstokeKindler.java @@ -33,13 +33,15 @@ import mage.Constants.Duration; import mage.Constants.Rarity; import mage.Constants.Zone; import mage.MageInt; +import mage.ObjectColor; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.common.TapSourceCost; import mage.abilities.effects.common.continious.GainAbilityTargetEffect; import mage.abilities.keyword.HasteAbility; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.ColorPredicate; import mage.target.common.TargetCreaturePermanent; /** @@ -51,10 +53,9 @@ public class SootstokeKindler extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("black or red creature"); static { - filter.getColor().setBlack(true); - filter.getColor().setRed(true); - filter.setUseColor(true); - filter.setScopeColor(ComparisonScope.Any); + filter.add(Predicates.or( + new ColorPredicate(ObjectColor.BLACK), + new ColorPredicate(ObjectColor.RED))); } public SootstokeKindler(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/shadowmoor/TattermungeDuo.java b/Mage.Sets/src/mage/sets/shadowmoor/TattermungeDuo.java index 7fa28e33c3b..1527f27818b 100644 --- a/Mage.Sets/src/mage/sets/shadowmoor/TattermungeDuo.java +++ b/Mage.Sets/src/mage/sets/shadowmoor/TattermungeDuo.java @@ -32,12 +32,14 @@ import mage.Constants.CardType; import mage.Constants.Duration; import mage.Constants.Rarity; import mage.MageInt; +import mage.ObjectColor; import mage.abilities.common.SpellCastTriggeredAbility; import mage.abilities.effects.common.continious.BoostSourceEffect; import mage.abilities.effects.common.continious.GainAbilitySourceEffect; import mage.abilities.keyword.ForestwalkAbility; import mage.cards.CardImpl; import mage.filter.FilterSpell; +import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -49,10 +51,8 @@ public class TattermungeDuo extends CardImpl { private static final FilterSpell greenFilter = new FilterSpell("a green spell"); static { - redFilter.getColor().setRed(true); - redFilter.setUseColor(true); - greenFilter.getColor().setGreen(true); - greenFilter.setUseColor(true); + redFilter.add(new ColorPredicate(ObjectColor.RED)); + greenFilter.add(new ColorPredicate(ObjectColor.GREEN)); } public TattermungeDuo(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/shadowmoor/ThistledownDuo.java b/Mage.Sets/src/mage/sets/shadowmoor/ThistledownDuo.java index 370198640f5..5338d148e4c 100644 --- a/Mage.Sets/src/mage/sets/shadowmoor/ThistledownDuo.java +++ b/Mage.Sets/src/mage/sets/shadowmoor/ThistledownDuo.java @@ -32,12 +32,14 @@ import mage.Constants.CardType; import mage.Constants.Duration; import mage.Constants.Rarity; import mage.MageInt; +import mage.ObjectColor; import mage.abilities.common.SpellCastTriggeredAbility; import mage.abilities.effects.common.continious.BoostSourceEffect; import mage.abilities.effects.common.continious.GainAbilitySourceEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.filter.FilterSpell; +import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -49,10 +51,8 @@ public class ThistledownDuo extends CardImpl { private static final FilterSpell blueFilter = new FilterSpell("a blue spell"); static { - whiteFilter.getColor().setWhite(true); - whiteFilter.setUseColor(true); - blueFilter.getColor().setBlue(true); - blueFilter.setUseColor(true); + whiteFilter.add(new ColorPredicate(ObjectColor.WHITE)); + blueFilter.add(new ColorPredicate(ObjectColor.BLUE)); } public ThistledownDuo(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/shadowmoor/ThistledownLiege.java b/Mage.Sets/src/mage/sets/shadowmoor/ThistledownLiege.java index 5c8ce0a9738..f334c1c1f88 100644 --- a/Mage.Sets/src/mage/sets/shadowmoor/ThistledownLiege.java +++ b/Mage.Sets/src/mage/sets/shadowmoor/ThistledownLiege.java @@ -33,11 +33,13 @@ import mage.Constants.Duration; import mage.Constants.Rarity; import mage.Constants.Zone; import mage.MageInt; +import mage.ObjectColor; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.common.continious.BoostControlledEffect; import mage.abilities.keyword.FlashAbility; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -49,10 +51,8 @@ public class ThistledownLiege extends CardImpl { private static final FilterCreaturePermanent filterBlue = new FilterCreaturePermanent("blue creatures"); static { - filterWhite.getColor().setWhite(true); - filterWhite.setUseColor(true); - filterBlue.getColor().setBlue(true); - filterBlue.setUseColor(true); + filterWhite.add(new ColorPredicate(ObjectColor.WHITE)); + filterBlue.add(new ColorPredicate(ObjectColor.BLUE)); } public ThistledownLiege(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/shardsofalara/AngelsHerald.java b/Mage.Sets/src/mage/sets/shardsofalara/AngelsHerald.java index 53e867660eb..457d3d9dbb0 100644 --- a/Mage.Sets/src/mage/sets/shardsofalara/AngelsHerald.java +++ b/Mage.Sets/src/mage/sets/shardsofalara/AngelsHerald.java @@ -33,6 +33,7 @@ import mage.Constants; import mage.Constants.CardType; import mage.Constants.Rarity; import mage.MageInt; +import mage.ObjectColor; import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.common.SacrificeTargetCost; @@ -42,6 +43,7 @@ import mage.abilities.effects.common.search.SearchLibraryPutInPlayEffect; import mage.cards.CardImpl; import mage.filter.FilterCard; import mage.filter.common.FilterControlledCreaturePermanent; +import mage.filter.predicate.mageobject.ColorPredicate; import mage.filter.predicate.mageobject.NamePredicate; import mage.target.common.TargetCardInLibrary; import mage.target.common.TargetControlledCreaturePermanent; @@ -58,12 +60,9 @@ public class AngelsHerald extends CardImpl { private static final FilterControlledCreaturePermanent filterBlue = new FilterControlledCreaturePermanent("a blue creature"); static { - filterGreen.getColor().setGreen(true); - filterGreen.setUseColor(true); - filterWhite.getColor().setWhite(true); - filterWhite.setUseColor(true); - filterBlue.getColor().setBlue(true); - filterBlue.setUseColor(true); + filterGreen.add(new ColorPredicate(ObjectColor.GREEN)); + filterWhite.add(new ColorPredicate(ObjectColor.WHITE)); + filterBlue.add(new ColorPredicate(ObjectColor.BLUE)); filter.add(new NamePredicate("Empyrial Archangel")); } diff --git a/Mage.Sets/src/mage/sets/shardsofalara/ExecutionersCapsule.java b/Mage.Sets/src/mage/sets/shardsofalara/ExecutionersCapsule.java index 30ffd5be537..92e8d6eb910 100644 --- a/Mage.Sets/src/mage/sets/shardsofalara/ExecutionersCapsule.java +++ b/Mage.Sets/src/mage/sets/shardsofalara/ExecutionersCapsule.java @@ -31,6 +31,7 @@ import java.util.UUID; import mage.Constants.CardType; import mage.Constants.Rarity; import mage.Constants.Zone; +import mage.ObjectColor; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.common.SacrificeSourceCost; import mage.abilities.costs.common.TapSourceCost; @@ -38,6 +39,8 @@ import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.ColorPredicate; import mage.target.common.TargetCreaturePermanent; /** @@ -49,9 +52,7 @@ public class ExecutionersCapsule extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonblack creature"); static { - filter.getColor().setBlack(true); - filter.setUseColor(true); - filter.setNotColor(true); + filter.add(Predicates.not(new ColorPredicate(ObjectColor.BLACK))); } public ExecutionersCapsule(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/tempest/DarkBanishing.java b/Mage.Sets/src/mage/sets/tempest/DarkBanishing.java index 884080f6464..5e2f2a052b8 100644 --- a/Mage.Sets/src/mage/sets/tempest/DarkBanishing.java +++ b/Mage.Sets/src/mage/sets/tempest/DarkBanishing.java @@ -30,9 +30,12 @@ package mage.sets.tempest; import java.util.UUID; import mage.Constants.CardType; import mage.Constants.Rarity; +import mage.ObjectColor; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.ColorPredicate; import mage.target.common.TargetCreaturePermanent; /** @@ -44,9 +47,7 @@ public class DarkBanishing extends CardImpl { private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("nonblack creature"); static { - filter.setUseColor(true); - filter.getColor().setBlack(true); - filter.setNotColor(true); + filter.add(Predicates.not(new ColorPredicate(ObjectColor.BLACK))); } public DarkBanishing(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/tempest/DreadOfNight.java b/Mage.Sets/src/mage/sets/tempest/DreadOfNight.java index d62fbc0b284..de9b7e6f5e1 100644 --- a/Mage.Sets/src/mage/sets/tempest/DreadOfNight.java +++ b/Mage.Sets/src/mage/sets/tempest/DreadOfNight.java @@ -32,10 +32,12 @@ import java.util.UUID; import mage.Constants; import mage.Constants.CardType; import mage.Constants.Rarity; +import mage.ObjectColor; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.common.continious.BoostAllEffect; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -46,8 +48,7 @@ public class DreadOfNight extends CardImpl { private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("White creatures"); static { - filter.setUseColor(true); - filter.getColor().setWhite(true); + filter.add(new ColorPredicate(ObjectColor.WHITE)); } public DreadOfNight(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/tempest/Perish.java b/Mage.Sets/src/mage/sets/tempest/Perish.java index faa6298768d..0430a4dd02f 100644 --- a/Mage.Sets/src/mage/sets/tempest/Perish.java +++ b/Mage.Sets/src/mage/sets/tempest/Perish.java @@ -30,10 +30,12 @@ package mage.sets.tempest; import java.util.UUID; import mage.Constants.CardType; import mage.Constants.Rarity; +import mage.ObjectColor; import mage.abilities.effects.common.DestroyAllEffect; import mage.cards.CardImpl; import mage.filter.FilterPermanent; import mage.filter.predicate.mageobject.CardTypePredicate; +import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -44,8 +46,7 @@ public class Perish extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("green creatures"); static { - filter.getColor().setGreen(true); - filter.setUseColor(true); + filter.add(new ColorPredicate(ObjectColor.GREEN)); filter.add(new CardTypePredicate(CardType.CREATURE)); } diff --git a/Mage.Sets/src/mage/sets/tempest/RecklessSpite.java b/Mage.Sets/src/mage/sets/tempest/RecklessSpite.java index 65e84789c53..7a85fae81d3 100644 --- a/Mage.Sets/src/mage/sets/tempest/RecklessSpite.java +++ b/Mage.Sets/src/mage/sets/tempest/RecklessSpite.java @@ -30,10 +30,13 @@ package mage.sets.tempest; import java.util.UUID; import mage.Constants.CardType; import mage.Constants.Rarity; +import mage.ObjectColor; import mage.abilities.effects.common.DestroyTargetEffect; import mage.abilities.effects.common.LoseLifeSourceEffect; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.ColorPredicate; import mage.target.common.TargetCreaturePermanent; /** @@ -45,9 +48,7 @@ public class RecklessSpite extends CardImpl { private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("nonblack creature"); static { - filter.setUseColor(true); - filter.getColor().setBlack(true); - filter.setNotColor(true); + filter.add(Predicates.not(new ColorPredicate(ObjectColor.BLACK))); } public RecklessSpite(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/tenth/Deathmark.java b/Mage.Sets/src/mage/sets/tenth/Deathmark.java index e842f51a384..15618d7248c 100644 --- a/Mage.Sets/src/mage/sets/tenth/Deathmark.java +++ b/Mage.Sets/src/mage/sets/tenth/Deathmark.java @@ -31,10 +31,12 @@ package mage.sets.tenth; import java.util.UUID; import mage.Constants.CardType; import mage.Constants.Rarity; +import mage.ObjectColor; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.ColorPredicate; import mage.target.common.TargetCreaturePermanent; /** @@ -46,10 +48,9 @@ public class Deathmark extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("green or white creature"); static { - filter.getColor().setGreen(true); - filter.getColor().setWhite(true); - filter.setUseColor(true); - filter.setScopeColor(Filter.ComparisonScope.Any); + filter.add(Predicates.or( + new ColorPredicate(ObjectColor.GREEN), + new ColorPredicate(ObjectColor.WHITE))); } public Deathmark(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/tenth/Flashfreeze.java b/Mage.Sets/src/mage/sets/tenth/Flashfreeze.java index 3fcd36beba4..01d10f9c21b 100644 --- a/Mage.Sets/src/mage/sets/tenth/Flashfreeze.java +++ b/Mage.Sets/src/mage/sets/tenth/Flashfreeze.java @@ -31,10 +31,12 @@ package mage.sets.tenth; import java.util.UUID; import mage.Constants.CardType; import mage.Constants.Rarity; +import mage.ObjectColor; import mage.abilities.effects.common.CounterTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.FilterSpell; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.ColorPredicate; import mage.target.TargetSpell; /** @@ -46,10 +48,9 @@ public class Flashfreeze extends CardImpl { private static final FilterSpell filter = new FilterSpell("red or green spell"); static { - filter.getColor().setRed(true); - filter.getColor().setGreen(true); - filter.setScopeColor(ComparisonScope.Any); - filter.setUseColor(true); + filter.add(Predicates.or( + new ColorPredicate(ObjectColor.RED), + new ColorPredicate(ObjectColor.GREEN))); } public Flashfreeze(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/tenth/HateWeaver.java b/Mage.Sets/src/mage/sets/tenth/HateWeaver.java index 61cc24d9c80..c771b75bda8 100644 --- a/Mage.Sets/src/mage/sets/tenth/HateWeaver.java +++ b/Mage.Sets/src/mage/sets/tenth/HateWeaver.java @@ -33,13 +33,15 @@ import mage.Constants; import mage.Constants.CardType; import mage.Constants.Rarity; import mage.MageInt; +import mage.ObjectColor; import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.effects.common.continious.BoostTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.ColorPredicate; import mage.target.common.TargetCreaturePermanent; /** @@ -51,10 +53,9 @@ public class HateWeaver extends CardImpl { private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("blue or red creature"); static { - filter.setUseColor(true); - filter.getColor().setBlue(true); - filter.getColor().setRed(true); - filter.setScopeColor(Filter.ComparisonScope.Any); + filter.add(Predicates.or( + new ColorPredicate(ObjectColor.BLUE), + new ColorPredicate(ObjectColor.RED))); } public HateWeaver(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/tenth/MightWeaver.java b/Mage.Sets/src/mage/sets/tenth/MightWeaver.java index 46233d7d53f..2a642d48c87 100644 --- a/Mage.Sets/src/mage/sets/tenth/MightWeaver.java +++ b/Mage.Sets/src/mage/sets/tenth/MightWeaver.java @@ -33,14 +33,16 @@ import mage.Constants; import mage.Constants.CardType; import mage.Constants.Rarity; import mage.MageInt; +import mage.ObjectColor; import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.effects.common.continious.GainAbilityTargetEffect; import mage.abilities.keyword.TrampleAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.ColorPredicate; import mage.target.common.TargetCreaturePermanent; /** @@ -52,10 +54,9 @@ public class MightWeaver extends CardImpl { private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("red or white creature"); static { - filter.setUseColor(true); - filter.getColor().setRed(true); - filter.getColor().setWhite(true); - filter.setScopeColor(Filter.ComparisonScope.Any); + filter.add(Predicates.or( + new ColorPredicate(ObjectColor.RED), + new ColorPredicate(ObjectColor.WHITE))); } public MightWeaver(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/tenth/QuirionDryad.java b/Mage.Sets/src/mage/sets/tenth/QuirionDryad.java index 793c80bb745..54088aff6cc 100644 --- a/Mage.Sets/src/mage/sets/tenth/QuirionDryad.java +++ b/Mage.Sets/src/mage/sets/tenth/QuirionDryad.java @@ -31,12 +31,14 @@ import java.util.UUID; import mage.Constants.CardType; import mage.Constants.Rarity; import mage.MageInt; +import mage.ObjectColor; import mage.abilities.common.SpellCastTriggeredAbility; import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.cards.CardImpl; import mage.counters.CounterType; -import mage.filter.Filter; import mage.filter.FilterSpell; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -47,12 +49,11 @@ public class QuirionDryad extends CardImpl { private final static FilterSpell filter = new FilterSpell("white, blue, black, or red spell"); static { - filter.setUseColor(true); - filter.getColor().setWhite(true); - filter.getColor().setBlue(true); - filter.getColor().setBlack(true); - filter.getColor().setRed(true); - filter.setScopeColor(Filter.ComparisonScope.Any); + filter.add(Predicates.or( + new ColorPredicate(ObjectColor.WHITE), + new ColorPredicate(ObjectColor.BLUE), + new ColorPredicate(ObjectColor.BLACK), + new ColorPredicate(ObjectColor.RED))); } public QuirionDryad(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/tenth/RageWeaver.java b/Mage.Sets/src/mage/sets/tenth/RageWeaver.java index 822c9076e0d..b8e768dff47 100644 --- a/Mage.Sets/src/mage/sets/tenth/RageWeaver.java +++ b/Mage.Sets/src/mage/sets/tenth/RageWeaver.java @@ -33,14 +33,16 @@ import mage.Constants; import mage.Constants.CardType; import mage.Constants.Rarity; import mage.MageInt; +import mage.ObjectColor; import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.effects.common.continious.GainAbilityTargetEffect; import mage.abilities.keyword.HasteAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.ColorPredicate; import mage.target.common.TargetCreaturePermanent; /** @@ -52,10 +54,9 @@ public class RageWeaver extends CardImpl { private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("black or green creature"); static { - filter.setUseColor(true); - filter.getColor().setBlack(true); - filter.getColor().setGreen(true); - filter.setScopeColor(Filter.ComparisonScope.Any); + filter.add(Predicates.or( + new ColorPredicate(ObjectColor.BLACK), + new ColorPredicate(ObjectColor.GREEN))); } public RageWeaver(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/tenth/SkyWeaver.java b/Mage.Sets/src/mage/sets/tenth/SkyWeaver.java index 73911b706b5..70dfe3549f8 100644 --- a/Mage.Sets/src/mage/sets/tenth/SkyWeaver.java +++ b/Mage.Sets/src/mage/sets/tenth/SkyWeaver.java @@ -33,14 +33,16 @@ import mage.Constants; import mage.Constants.CardType; import mage.Constants.Rarity; import mage.MageInt; +import mage.ObjectColor; import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.effects.common.continious.GainAbilityTargetEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.ColorPredicate; import mage.target.common.TargetCreaturePermanent; /** @@ -52,10 +54,9 @@ public class SkyWeaver extends CardImpl { private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("white or black creature"); static { - filter.setUseColor(true); - filter.getColor().setWhite(true); - filter.getColor().setBlack(true); - filter.setScopeColor(Filter.ComparisonScope.Any); + filter.add(Predicates.or( + new ColorPredicate(ObjectColor.WHITE), + new ColorPredicate(ObjectColor.BLACK))); } public SkyWeaver(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/tenth/SpiritWeaver.java b/Mage.Sets/src/mage/sets/tenth/SpiritWeaver.java index 0e63131cc3a..1f63e8ed34b 100644 --- a/Mage.Sets/src/mage/sets/tenth/SpiritWeaver.java +++ b/Mage.Sets/src/mage/sets/tenth/SpiritWeaver.java @@ -33,13 +33,15 @@ import mage.Constants; import mage.Constants.CardType; import mage.Constants.Rarity; import mage.MageInt; +import mage.ObjectColor; import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.effects.common.continious.BoostTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.ColorPredicate; import mage.target.common.TargetCreaturePermanent; /** @@ -51,10 +53,9 @@ public class SpiritWeaver extends CardImpl { private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("green or blue creature"); static { - filter.setUseColor(true); - filter.getColor().setGreen(true); - filter.getColor().setBlue(true); - filter.setScopeColor(Filter.ComparisonScope.Any); + filter.add(Predicates.or( + new ColorPredicate(ObjectColor.GREEN), + new ColorPredicate(ObjectColor.BLUE))); } public SpiritWeaver(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/tenth/Terror.java b/Mage.Sets/src/mage/sets/tenth/Terror.java index 2eb8a955828..09cc9fae496 100644 --- a/Mage.Sets/src/mage/sets/tenth/Terror.java +++ b/Mage.Sets/src/mage/sets/tenth/Terror.java @@ -30,11 +30,13 @@ package mage.sets.tenth; import java.util.UUID; import mage.Constants.CardType; import mage.Constants.Rarity; +import mage.ObjectColor; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.CardTypePredicate; +import mage.filter.predicate.mageobject.ColorPredicate; import mage.target.common.TargetCreaturePermanent; /** @@ -47,9 +49,7 @@ public class Terror extends CardImpl { static { filter.add(Predicates.not(new CardTypePredicate(CardType.ARTIFACT))); - filter.getColor().setBlack(true); - filter.setNotColor(true); - filter.setUseColor(true); + filter.add(Predicates.not(new ColorPredicate(ObjectColor.BLACK))); } public Terror(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/timeshifted/AkromaAngelOfWrath.java b/Mage.Sets/src/mage/sets/timeshifted/AkromaAngelOfWrath.java index 911583ac934..3dd6a72cfd6 100644 --- a/Mage.Sets/src/mage/sets/timeshifted/AkromaAngelOfWrath.java +++ b/Mage.Sets/src/mage/sets/timeshifted/AkromaAngelOfWrath.java @@ -31,27 +31,24 @@ import java.util.UUID; import mage.Constants.CardType; import mage.Constants.Rarity; import mage.MageInt; +import mage.ObjectColor; import mage.abilities.keyword.*; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.ColorPredicate; /** * * @author Loki */ public class AkromaAngelOfWrath extends CardImpl { - private static FilterCard filter = new FilterCard("Black"); - private static FilterCard filter2 = new FilterCard("Red"); + private static final FilterCard filter = new FilterCard("Black"); + private static final FilterCard filter2 = new FilterCard("Red"); static { - filter.setUseColor(true); - filter.getColor().setBlack(true); - filter.setScopeColor(Filter.ComparisonScope.Any); + filter.add(new ColorPredicate(ObjectColor.BLACK)); - filter2.setUseColor(true); - filter2.getColor().setRed(true); - filter2.setScopeColor(Filter.ComparisonScope.Any); + filter2.add(new ColorPredicate(ObjectColor.RED)); } public AkromaAngelOfWrath(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/timeshifted/WhirlingDervish.java b/Mage.Sets/src/mage/sets/timeshifted/WhirlingDervish.java index 385b0cd64ca..cceaa6664b0 100644 --- a/Mage.Sets/src/mage/sets/timeshifted/WhirlingDervish.java +++ b/Mage.Sets/src/mage/sets/timeshifted/WhirlingDervish.java @@ -41,6 +41,7 @@ import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.counters.CounterType; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.ColorPredicate; import mage.game.events.GameEvent; /** @@ -53,8 +54,7 @@ public class WhirlingDervish extends CardImpl { private static final FilterCard filter = new FilterCard("black"); static { - filter.setColor(ObjectColor.BLACK); - filter.setUseColor(true); + filter.add(new ColorPredicate(ObjectColor.BLACK)); } public WhirlingDervish(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/urzaslegacy/BloatedToad.java b/Mage.Sets/src/mage/sets/urzaslegacy/BloatedToad.java index 4887b43041d..a9d54782148 100644 --- a/Mage.Sets/src/mage/sets/urzaslegacy/BloatedToad.java +++ b/Mage.Sets/src/mage/sets/urzaslegacy/BloatedToad.java @@ -31,12 +31,13 @@ import java.util.UUID; import mage.Constants.CardType; import mage.Constants.Rarity; import mage.MageInt; +import mage.ObjectColor; import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.keyword.CyclingAbility; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -47,9 +48,7 @@ public class BloatedToad extends CardImpl { private static final FilterCard filter = new FilterCard("Blue"); static { - filter.setUseColor(true); - filter.getColor().setBlue(true); - filter.setScopeColor(ComparisonScope.Any); + filter.add(new ColorPredicate(ObjectColor.BLUE)); } public BloatedToad(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/urzaslegacy/BoneShredder.java b/Mage.Sets/src/mage/sets/urzaslegacy/BoneShredder.java index 997b5cdcf2d..556fb9f0f5d 100644 --- a/Mage.Sets/src/mage/sets/urzaslegacy/BoneShredder.java +++ b/Mage.Sets/src/mage/sets/urzaslegacy/BoneShredder.java @@ -31,6 +31,7 @@ import java.util.UUID; import mage.Constants.CardType; import mage.Constants.Rarity; import mage.MageInt; +import mage.ObjectColor; import mage.abilities.Ability; import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.effects.common.DestroyTargetEffect; @@ -40,6 +41,7 @@ import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.CardTypePredicate; +import mage.filter.predicate.mageobject.ColorPredicate; import mage.target.Target; import mage.target.common.TargetCreaturePermanent; @@ -53,9 +55,7 @@ public class BoneShredder extends CardImpl { static { filter.add(Predicates.not(new CardTypePredicate(CardType.ARTIFACT))); - filter.getColor().setBlack(true); - filter.setNotColor(true); - filter.setUseColor(true); + filter.add(Predicates.not(new ColorPredicate(ObjectColor.BLACK))); } public BoneShredder(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/urzaslegacy/DarkwatchElves.java b/Mage.Sets/src/mage/sets/urzaslegacy/DarkwatchElves.java index 8ad79538c73..8f8057c0b1f 100644 --- a/Mage.Sets/src/mage/sets/urzaslegacy/DarkwatchElves.java +++ b/Mage.Sets/src/mage/sets/urzaslegacy/DarkwatchElves.java @@ -30,12 +30,13 @@ package mage.sets.urzaslegacy; import mage.Constants.CardType; import mage.Constants.Rarity; import mage.MageInt; +import mage.ObjectColor; import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.keyword.CyclingAbility; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.ColorPredicate; import java.util.UUID; @@ -47,9 +48,7 @@ public class DarkwatchElves extends CardImpl { private static final FilterCard filter = new FilterCard("Black"); static { - filter.setUseColor(true); - filter.getColor().setBlack(true); - filter.setScopeColor(ComparisonScope.Any); + filter.add(new ColorPredicate(ObjectColor.BLACK)); } public DarkwatchElves(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/urzaslegacy/DefenderOfChaos.java b/Mage.Sets/src/mage/sets/urzaslegacy/DefenderOfChaos.java index 7a2b4209461..549c37c2f39 100644 --- a/Mage.Sets/src/mage/sets/urzaslegacy/DefenderOfChaos.java +++ b/Mage.Sets/src/mage/sets/urzaslegacy/DefenderOfChaos.java @@ -30,11 +30,12 @@ package mage.sets.urzaslegacy; import mage.Constants.CardType; import mage.Constants.Rarity; import mage.MageInt; +import mage.ObjectColor; import mage.abilities.keyword.FlashAbility; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.ColorPredicate; import java.util.UUID; @@ -46,9 +47,7 @@ public class DefenderOfChaos extends CardImpl { private static final FilterCard filter = new FilterCard("White"); static { - filter.setUseColor(true); - filter.getColor().setWhite(true); - filter.setScopeColor(ComparisonScope.Any); + filter.add(new ColorPredicate(ObjectColor.WHITE)); } public DefenderOfChaos(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/urzaslegacy/DefenderOfLaw.java b/Mage.Sets/src/mage/sets/urzaslegacy/DefenderOfLaw.java index 28024b96330..381f19bbb09 100644 --- a/Mage.Sets/src/mage/sets/urzaslegacy/DefenderOfLaw.java +++ b/Mage.Sets/src/mage/sets/urzaslegacy/DefenderOfLaw.java @@ -30,11 +30,12 @@ package mage.sets.urzaslegacy; import mage.Constants.CardType; import mage.Constants.Rarity; import mage.MageInt; +import mage.ObjectColor; import mage.abilities.keyword.FlashAbility; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.ColorPredicate; import java.util.UUID; @@ -46,9 +47,7 @@ public class DefenderOfLaw extends CardImpl { private static final FilterCard filter = new FilterCard("Red"); static { - filter.setUseColor(true); - filter.getColor().setRed(true); - filter.setScopeColor(ComparisonScope.Any); + filter.add(new ColorPredicate(ObjectColor.RED)); } public DefenderOfLaw(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/urzassaga/AbsoluteGrace.java b/Mage.Sets/src/mage/sets/urzassaga/AbsoluteGrace.java index ba79655ea6b..e31dd87d1a5 100644 --- a/Mage.Sets/src/mage/sets/urzassaga/AbsoluteGrace.java +++ b/Mage.Sets/src/mage/sets/urzassaga/AbsoluteGrace.java @@ -33,14 +33,15 @@ import mage.Constants.CardType; import mage.Constants.Duration; import mage.Constants.Rarity; import mage.Constants.Zone; +import mage.ObjectColor; import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.common.continious.GainAbilityAllEffect; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.FilterCard; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -51,9 +52,7 @@ public class AbsoluteGrace extends CardImpl { private static final FilterCard filter = new FilterCard("Black"); static { - filter.setUseColor(true); - filter.getColor().setBlack(true); - filter.setScopeColor(ComparisonScope.Any); + filter.add(new ColorPredicate(ObjectColor.BLACK)); } public AbsoluteGrace(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/urzassaga/AbsoluteLaw.java b/Mage.Sets/src/mage/sets/urzassaga/AbsoluteLaw.java index b687584cd78..a3b7d717c46 100644 --- a/Mage.Sets/src/mage/sets/urzassaga/AbsoluteLaw.java +++ b/Mage.Sets/src/mage/sets/urzassaga/AbsoluteLaw.java @@ -33,14 +33,15 @@ import mage.Constants.CardType; import mage.Constants.Duration; import mage.Constants.Rarity; import mage.Constants.Zone; +import mage.ObjectColor; import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.common.continious.GainAbilityAllEffect; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.FilterCard; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -51,9 +52,7 @@ public class AbsoluteLaw extends CardImpl { private static final FilterCard filter = new FilterCard("Red"); static { - filter.setUseColor(true); - filter.getColor().setRed(true); - filter.setScopeColor(ComparisonScope.Any); + filter.add(new ColorPredicate(ObjectColor.RED)); } public AbsoluteLaw(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/urzassaga/DiscipleOfGrace.java b/Mage.Sets/src/mage/sets/urzassaga/DiscipleOfGrace.java index 22ebda45fb4..725fe057294 100644 --- a/Mage.Sets/src/mage/sets/urzassaga/DiscipleOfGrace.java +++ b/Mage.Sets/src/mage/sets/urzassaga/DiscipleOfGrace.java @@ -31,12 +31,13 @@ package mage.sets.urzassaga; import mage.Constants.CardType; import mage.Constants.Rarity; import mage.MageInt; +import mage.ObjectColor; import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.keyword.CyclingAbility; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.ColorPredicate; import java.util.UUID; @@ -48,9 +49,7 @@ public class DiscipleOfGrace extends CardImpl { private static final FilterCard filter = new FilterCard("Black"); static { - filter.setUseColor(true); - filter.getColor().setBlack(true); - filter.setScopeColor(ComparisonScope.Any); + filter.add(new ColorPredicate(ObjectColor.BLACK)); } public DiscipleOfGrace(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/urzassaga/DiscipleOfLaw.java b/Mage.Sets/src/mage/sets/urzassaga/DiscipleOfLaw.java index 3ec29f316c4..b5253f72fd5 100644 --- a/Mage.Sets/src/mage/sets/urzassaga/DiscipleOfLaw.java +++ b/Mage.Sets/src/mage/sets/urzassaga/DiscipleOfLaw.java @@ -32,12 +32,13 @@ import java.util.UUID; import mage.Constants.CardType; import mage.Constants.Rarity; import mage.MageInt; +import mage.ObjectColor; import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.keyword.CyclingAbility; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -48,9 +49,7 @@ public class DiscipleOfLaw extends CardImpl { private static final FilterCard filter = new FilterCard("Red"); static { - filter.setUseColor(true); - filter.getColor().setRed(true); - filter.setScopeColor(ComparisonScope.Any); + filter.add(new ColorPredicate(ObjectColor.RED)); } public DiscipleOfLaw(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/urzassaga/EasternPaladin.java b/Mage.Sets/src/mage/sets/urzassaga/EasternPaladin.java index dcb4d06153d..2fb1bbddd1f 100644 --- a/Mage.Sets/src/mage/sets/urzassaga/EasternPaladin.java +++ b/Mage.Sets/src/mage/sets/urzassaga/EasternPaladin.java @@ -34,14 +34,15 @@ import mage.Constants.CardType; import mage.Constants.Rarity; import mage.Constants.Zone; import mage.MageInt; +import mage.ObjectColor; import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.common.TapSourceCost; import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.ColorPredicate; import mage.target.common.TargetCreaturePermanent; /** @@ -53,9 +54,7 @@ public class EasternPaladin extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("green creature"); static { - filter.getColor().setGreen(true); - filter.setUseColor(true); - filter.setScopeColor(Filter.ComparisonScope.Any); + filter.add(new ColorPredicate(ObjectColor.GREEN)); } public EasternPaladin(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/urzassaga/Guma.java b/Mage.Sets/src/mage/sets/urzassaga/Guma.java index 3db35ad5817..4732e88144f 100644 --- a/Mage.Sets/src/mage/sets/urzassaga/Guma.java +++ b/Mage.Sets/src/mage/sets/urzassaga/Guma.java @@ -32,10 +32,11 @@ import java.util.UUID; import mage.Constants.CardType; import mage.Constants.Rarity; import mage.MageInt; +import mage.ObjectColor; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -46,9 +47,7 @@ public class Guma extends CardImpl { private static final FilterCard filter = new FilterCard("Blue"); static { - filter.setUseColor(true); - filter.getColor().setBlue(true); - filter.setScopeColor(ComparisonScope.Any); + filter.add(new ColorPredicate(ObjectColor.BLUE)); } public Guma(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/urzassaga/VoiceOfGrace.java b/Mage.Sets/src/mage/sets/urzassaga/VoiceOfGrace.java index 7185e2f38fa..fa0277e3802 100644 --- a/Mage.Sets/src/mage/sets/urzassaga/VoiceOfGrace.java +++ b/Mage.Sets/src/mage/sets/urzassaga/VoiceOfGrace.java @@ -33,11 +33,12 @@ import java.util.UUID; import mage.Constants.CardType; import mage.Constants.Rarity; import mage.MageInt; +import mage.ObjectColor; import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -48,9 +49,7 @@ public class VoiceOfGrace extends CardImpl { private static final FilterCard filter = new FilterCard("Black"); static { - filter.setUseColor(true); - filter.getColor().setBlack(true); - filter.setScopeColor(ComparisonScope.Any); + filter.add(new ColorPredicate(ObjectColor.BLACK)); } public VoiceOfGrace(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/urzassaga/VoiceOfLaw.java b/Mage.Sets/src/mage/sets/urzassaga/VoiceOfLaw.java index c130bfce443..fec915a2974 100644 --- a/Mage.Sets/src/mage/sets/urzassaga/VoiceOfLaw.java +++ b/Mage.Sets/src/mage/sets/urzassaga/VoiceOfLaw.java @@ -32,11 +32,12 @@ import java.util.UUID; import mage.Constants.CardType; import mage.Constants.Rarity; import mage.MageInt; +import mage.ObjectColor; import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -47,9 +48,7 @@ public class VoiceOfLaw extends CardImpl { private static final FilterCard filter = new FilterCard("Red"); static { - filter.setUseColor(true); - filter.getColor().setRed(true); - filter.setScopeColor(ComparisonScope.Any); + filter.add(new ColorPredicate(ObjectColor.RED)); } public VoiceOfLaw(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/urzassaga/WesternPaladin.java b/Mage.Sets/src/mage/sets/urzassaga/WesternPaladin.java index 25071a2ec3d..75235259864 100644 --- a/Mage.Sets/src/mage/sets/urzassaga/WesternPaladin.java +++ b/Mage.Sets/src/mage/sets/urzassaga/WesternPaladin.java @@ -34,14 +34,15 @@ import mage.Constants.CardType; import mage.Constants.Rarity; import mage.Constants.Zone; import mage.MageInt; +import mage.ObjectColor; import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.common.TapSourceCost; import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.ColorPredicate; import mage.target.common.TargetCreaturePermanent; /** @@ -53,9 +54,7 @@ public class WesternPaladin extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("white creature"); static { - filter.getColor().setWhite(true); - filter.setUseColor(true); - filter.setScopeColor(Filter.ComparisonScope.Any); + filter.add(new ColorPredicate(ObjectColor.WHITE)); } public WesternPaladin(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/worldwake/EyeOfUgin.java b/Mage.Sets/src/mage/sets/worldwake/EyeOfUgin.java index 42f8b76586e..78fecd8d52d 100644 --- a/Mage.Sets/src/mage/sets/worldwake/EyeOfUgin.java +++ b/Mage.Sets/src/mage/sets/worldwake/EyeOfUgin.java @@ -45,6 +45,7 @@ import mage.abilities.effects.common.search.SearchLibraryRevealPutInHandEffect; import mage.cards.Card; import mage.cards.CardImpl; import mage.filter.common.FilterCreatureCard; +import mage.filter.predicate.mageobject.ColorlessPredicate; import mage.game.Game; import mage.target.common.TargetCardInLibrary; @@ -59,8 +60,7 @@ public class EyeOfUgin extends CardImpl { static { filter = new FilterCreatureCard(); - filter.setColorless(true); - filter.setUseColorless(true); + filter.add(new ColorlessPredicate()); } public EyeOfUgin (UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/worldwake/KorFirewalker.java b/Mage.Sets/src/mage/sets/worldwake/KorFirewalker.java index 73d9aeb462d..252f324ba0e 100644 --- a/Mage.Sets/src/mage/sets/worldwake/KorFirewalker.java +++ b/Mage.Sets/src/mage/sets/worldwake/KorFirewalker.java @@ -33,12 +33,13 @@ import mage.Constants.CardType; import mage.Constants.Rarity; import mage.Constants.Zone; import mage.MageInt; +import mage.ObjectColor; import mage.abilities.TriggeredAbilityImpl; import mage.abilities.effects.common.GainLifeEffect; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.ColorPredicate; import mage.game.Game; import mage.game.events.GameEvent; import mage.game.stack.Spell; @@ -48,12 +49,10 @@ import mage.game.stack.Spell; * @author Loki */ public class KorFirewalker extends CardImpl { - private static FilterCard filter = new FilterCard("Red"); + private static final FilterCard filter = new FilterCard("Red"); static { - filter.setUseColor(true); - filter.getColor().setRed(true); - filter.setScopeColor(ComparisonScope.Any); + filter.add(new ColorPredicate(ObjectColor.RED)); } public KorFirewalker (UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/zendikar/BraveTheElements.java b/Mage.Sets/src/mage/sets/zendikar/BraveTheElements.java index 53671f7c96c..18d6598ff9d 100644 --- a/Mage.Sets/src/mage/sets/zendikar/BraveTheElements.java +++ b/Mage.Sets/src/mage/sets/zendikar/BraveTheElements.java @@ -31,14 +31,15 @@ package mage.sets.zendikar; import mage.Constants.CardType; import mage.Constants.Duration; import mage.Constants.Rarity; +import mage.ObjectColor; import mage.abilities.Ability; import mage.abilities.effects.common.continious.GainAbilityControlledEffect; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.choices.ChoiceColor; -import mage.filter.Filter.ComparisonScope; import mage.filter.FilterCard; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.ColorPredicate; import mage.game.Game; import java.util.UUID; @@ -73,9 +74,7 @@ class BraveTheElementsEffect extends GainAbilityControlledEffect { private static final FilterCreaturePermanent filter1 = new FilterCreaturePermanent(); static { - filter1.setUseColor(true); - filter1.getColor().setWhite(true); - filter1.setScopeColor(ComparisonScope.Any); + filter1.add(new ColorPredicate(ObjectColor.WHITE)); } FilterCard filter2; @@ -83,8 +82,6 @@ class BraveTheElementsEffect extends GainAbilityControlledEffect { public BraveTheElementsEffect() { super(new ProtectionAbility(new FilterCard()), Duration.EndOfTurn, filter1); filter2 = (FilterCard)((ProtectionAbility)getFirstAbility()).getFilter(); - filter2.setUseColor(true); - filter2.setScopeColor(ComparisonScope.Any); staticText = "Choose a color. White creatures you control gain protection from the chosen color until end of turn"; } @@ -101,7 +98,7 @@ class BraveTheElementsEffect extends GainAbilityControlledEffect { @Override public boolean apply(Game game, Ability source) { ChoiceColor choice = (ChoiceColor) source.getChoices().get(0); - filter2.setColor(choice.getColor()); + filter2.add(new ColorPredicate(choice.getColor())); filter2.setMessage(choice.getChoice()); setAbility(new ProtectionAbility(new FilterCard(filter2))); return super.apply(game, source); diff --git a/Mage.Sets/src/mage/sets/zendikar/ChandraAblaze.java b/Mage.Sets/src/mage/sets/zendikar/ChandraAblaze.java index 4bc419d1cad..bfc02ff9919 100644 --- a/Mage.Sets/src/mage/sets/zendikar/ChandraAblaze.java +++ b/Mage.Sets/src/mage/sets/zendikar/ChandraAblaze.java @@ -32,6 +32,7 @@ import java.util.UUID; import mage.Constants.CardType; import mage.Constants.Outcome; import mage.Constants.Rarity; +import mage.ObjectColor; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; import mage.abilities.common.EntersBattlefieldAbility; @@ -44,6 +45,7 @@ import mage.counters.CounterType; import mage.filter.FilterCard; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.CardTypePredicate; +import mage.filter.predicate.mageobject.ColorPredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; @@ -230,7 +232,7 @@ class ChandraAblazeEffect5 extends OneShotEffect { Player player = game.getPlayer(source.getControllerId()); if (player != null) { FilterCard filter = new FilterCard("red instant or sorcery card from your graveyard to play"); - filter.getColor().setRed(true); + filter.add(new ColorPredicate(ObjectColor.RED)); filter.add(Predicates.or( new CardTypePredicate(CardType.INSTANT), new CardTypePredicate(CardType.SORCERY))); diff --git a/Mage.Sets/src/mage/sets/zendikar/CryptOfAgadeem.java b/Mage.Sets/src/mage/sets/zendikar/CryptOfAgadeem.java index 439f063fb7b..4d49630d10d 100644 --- a/Mage.Sets/src/mage/sets/zendikar/CryptOfAgadeem.java +++ b/Mage.Sets/src/mage/sets/zendikar/CryptOfAgadeem.java @@ -40,6 +40,7 @@ import mage.abilities.mana.BlackManaAbility; import mage.abilities.mana.DynamicManaAbility; import mage.cards.CardImpl; import mage.filter.common.FilterCreatureCard; +import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -50,8 +51,7 @@ public class CryptOfAgadeem extends CardImpl { private static final FilterCreatureCard filter = new FilterCreatureCard("black creature card"); static { - filter.setColor(ObjectColor.BLACK); - filter.setUseColor(true); + filter.add(new ColorPredicate(ObjectColor.BLACK)); } public CryptOfAgadeem(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/zendikar/DevoutLightcaster.java b/Mage.Sets/src/mage/sets/zendikar/DevoutLightcaster.java index 963e7dc3ea4..6fa3e5b5902 100644 --- a/Mage.Sets/src/mage/sets/zendikar/DevoutLightcaster.java +++ b/Mage.Sets/src/mage/sets/zendikar/DevoutLightcaster.java @@ -31,13 +31,14 @@ import java.util.UUID; import mage.Constants.CardType; import mage.Constants.Rarity; import mage.MageInt; +import mage.ObjectColor; import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.effects.common.ExileTargetEffect; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.FilterCard; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.ColorPredicate; import mage.target.TargetPermanent; /** @@ -50,11 +51,8 @@ public class DevoutLightcaster extends CardImpl { private static final FilterPermanent filterTarget = new FilterPermanent("Black"); static { - filterProtection.setUseColor(true); - filterProtection.getColor().setBlack(true); - filterProtection.setScopeColor(ComparisonScope.Any); - filterTarget.setUseColor(true); - filterTarget.getColor().setBlack(true); + filterProtection.add(new ColorPredicate(ObjectColor.BLACK)); + filterTarget.add(new ColorPredicate(ObjectColor.BLACK)); } public DevoutLightcaster(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/zendikar/HideousEnd.java b/Mage.Sets/src/mage/sets/zendikar/HideousEnd.java index 0d245ca189b..f09560b8a0e 100644 --- a/Mage.Sets/src/mage/sets/zendikar/HideousEnd.java +++ b/Mage.Sets/src/mage/sets/zendikar/HideousEnd.java @@ -30,10 +30,13 @@ package mage.sets.zendikar; import java.util.UUID; import mage.Constants.CardType; import mage.Constants.Rarity; +import mage.ObjectColor; import mage.abilities.effects.common.DestroyTargetEffect; import mage.abilities.effects.common.LoseLifeControllerEffect; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.ColorPredicate; import mage.target.common.TargetCreaturePermanent; /** @@ -45,9 +48,7 @@ public class HideousEnd extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonblack creature"); static { - filter.getColor().setBlack(true); - filter.setUseColor(true); - filter.setNotColor(true); + filter.add(Predicates.not(new ColorPredicate(ObjectColor.BLACK))); } public HideousEnd(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/zendikar/MalakirBloodwitch.java b/Mage.Sets/src/mage/sets/zendikar/MalakirBloodwitch.java index e3543da6dbd..a56bd811f47 100644 --- a/Mage.Sets/src/mage/sets/zendikar/MalakirBloodwitch.java +++ b/Mage.Sets/src/mage/sets/zendikar/MalakirBloodwitch.java @@ -33,6 +33,7 @@ import mage.Constants.CardType; import mage.Constants.Outcome; import mage.Constants.Rarity; import mage.MageInt; +import mage.ObjectColor; import mage.abilities.Ability; import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.effects.OneShotEffect; @@ -41,6 +42,7 @@ import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.filter.FilterCard; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.ColorPredicate; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; import mage.players.Player; @@ -54,8 +56,7 @@ public class MalakirBloodwitch extends CardImpl { private static final FilterCard filter = new FilterCard("white"); static { - filter.setUseColor(true); - filter.getColor().setWhite(true); + filter.add(new ColorPredicate(ObjectColor.WHITE)); } public MalakirBloodwitch(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/zendikar/OranRiefTheVastwood.java b/Mage.Sets/src/mage/sets/zendikar/OranRiefTheVastwood.java index 0d405cc5b34..b3587ea8a4a 100644 --- a/Mage.Sets/src/mage/sets/zendikar/OranRiefTheVastwood.java +++ b/Mage.Sets/src/mage/sets/zendikar/OranRiefTheVastwood.java @@ -33,6 +33,7 @@ import mage.Constants.CardType; import mage.Constants.Outcome; import mage.Constants.Rarity; import mage.Constants.Zone; +import mage.ObjectColor; import mage.abilities.Ability; import mage.abilities.common.EntersBattlefieldTappedAbility; import mage.abilities.common.SimpleActivatedAbility; @@ -41,9 +42,9 @@ import mage.abilities.effects.OneShotEffect; import mage.abilities.mana.GreenManaAbility; import mage.cards.CardImpl; import mage.counters.CounterType; -import mage.filter.Filter; import mage.filter.FilterPermanent; import mage.filter.predicate.mageobject.CardTypePredicate; +import mage.filter.predicate.mageobject.ColorPredicate; import mage.game.Game; import mage.game.permanent.Permanent; @@ -92,9 +93,7 @@ class OranRiefTheVastwoodEffect extends OneShotEffect public boolean apply(Game game, Ability source) { FilterPermanent filter = new FilterPermanent(); filter.add(new CardTypePredicate(CardType.CREATURE)); - filter.getColor().setGreen(true); - filter.setScopeColor(Filter.ComparisonScope.Any); - filter.setUseColor(true); + filter.add(new ColorPredicate(ObjectColor.GREEN)); for (Permanent permanent: game.getBattlefield().getActivePermanents(filter, source.getControllerId(), game)) { if (permanent.getTurnsOnBattlefield() == 0) { permanent.addCounters(CounterType.P1P1.createInstance(), game); diff --git a/Mage/src/mage/abilities/effects/common/continious/GainProtectionFromColorTargetEffect.java b/Mage/src/mage/abilities/effects/common/continious/GainProtectionFromColorTargetEffect.java index 4ef00e3473e..7fb11d02680 100644 --- a/Mage/src/mage/abilities/effects/common/continious/GainProtectionFromColorTargetEffect.java +++ b/Mage/src/mage/abilities/effects/common/continious/GainProtectionFromColorTargetEffect.java @@ -32,8 +32,8 @@ import mage.Constants.Duration; import mage.abilities.Ability; import mage.abilities.keyword.ProtectionAbility; import mage.choices.ChoiceColor; -import mage.filter.Filter.ComparisonScope; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.ColorPredicate; import mage.game.Game; import mage.game.permanent.Permanent; @@ -48,8 +48,6 @@ public class GainProtectionFromColorTargetEffect extends GainAbilityTargetEffect public GainProtectionFromColorTargetEffect(Duration duration) { super(new ProtectionAbility(new FilterCard()), duration); protectionFilter = (FilterCard)((ProtectionAbility)ability).getFilter(); - protectionFilter.setUseColor(true); - protectionFilter.setScopeColor(ComparisonScope.Any); staticText = "target creature you control gains protection from the color of your choice " + duration.toString(); } @@ -68,7 +66,7 @@ public class GainProtectionFromColorTargetEffect extends GainAbilityTargetEffect Permanent creature = game.getPermanent(source.getFirstTarget()); if (creature != null) { ChoiceColor choice = (ChoiceColor) source.getChoices().get(0); - protectionFilter.setColor(choice.getColor()); + protectionFilter.add(new ColorPredicate(choice.getColor())); protectionFilter.setMessage(choice.getChoice()); ((ProtectionAbility)ability).setFilter(protectionFilter); creature.addAbility(ability, game); diff --git a/Mage/src/mage/filter/FilterObject.java b/Mage/src/mage/filter/FilterObject.java index ce1f0e05449..01eb2e04d24 100644 --- a/Mage/src/mage/filter/FilterObject.java +++ b/Mage/src/mage/filter/FilterObject.java @@ -29,21 +29,13 @@ package mage.filter; import mage.MageObject; -import mage.ObjectColor; -import mage.game.Game; /** * * @author BetaSteward_at_googlemail.com * @author North */ -public class FilterObject> extends FilterImpl implements Filter { - protected boolean colorless; - protected boolean useColorless; - protected boolean useColor; - protected ObjectColor color; - protected ComparisonScope scopeColor = ComparisonScope.Any; - protected boolean notColor; +public class FilterObject> extends FilterImpl { /** * Indicates that filter shouldn't match the source. @@ -57,78 +49,13 @@ public class FilterObject> ex public FilterObject(String name) { super(name); - color = new ObjectColor(); } public FilterObject(FilterObject filter) { super(filter); - this.colorless = filter.colorless; - this.useColorless = filter.useColorless; - this.useColor = filter.useColor; - this.color = filter.color.copy(); - this.scopeColor = filter.scopeColor; - this.notColor = filter.notColor; this.another = filter.another; } - @Override - public boolean match(E object, Game game) { - if (!super.match(object, game)) { - return notFilter; - } - - if (useColor) { - if (scopeColor == ComparisonScope.All) { - if (object.getColor().equals(color) == notColor) { - return notFilter; - } - } - else if (object.getColor().contains(color) == notColor) { - if (useColorless && colorless) { //need to treat colorless like a color in this case - if (object.getColor().isColorless() != colorless) { - return notFilter; - } - } - else { - return notFilter; - } - } - } - else if (useColorless && object.getColor().isColorless() != colorless) { - return notFilter; - } - - return !notFilter; - } - - public void setColor(ObjectColor color) { - this.color = color; - } - - public ObjectColor getColor() { - return this.color; - } - - public void setScopeColor(ComparisonScope scopeColor) { - this.scopeColor = scopeColor; - } - - public void setNotColor(boolean notColor) { - this.notColor = notColor; - } - - public void setUseColor(boolean useColor) { - this.useColor = useColor; - } - - public void setColorless(boolean colorless) { - this.colorless = colorless; - } - - public void setUseColorless(boolean useColorless) { - this.useColorless = useColorless; - } - public boolean isAnother() { return another; } From 4edee0b2f947e0888bc95a46dcb15c1b8a6161a6 Mon Sep 17 00:00:00 2001 From: North Date: Fri, 13 Jul 2012 23:08:10 +0300 Subject: [PATCH 12/12] [refactoring] Moved another field to FilterPermanent --- Mage/src/mage/filter/FilterAbility.java | 2 +- Mage/src/mage/filter/FilterObject.java | 15 --------------- Mage/src/mage/filter/FilterPermanent.java | 10 ++++++++++ 3 files changed, 11 insertions(+), 16 deletions(-) diff --git a/Mage/src/mage/filter/FilterAbility.java b/Mage/src/mage/filter/FilterAbility.java index e6086dcc21a..58f400a0bb2 100644 --- a/Mage/src/mage/filter/FilterAbility.java +++ b/Mage/src/mage/filter/FilterAbility.java @@ -41,7 +41,7 @@ import java.util.List; * * @author BetaSteward_at_googlemail.com */ -public class FilterAbility extends FilterImpl> implements Filter { +public class FilterAbility extends FilterImpl> { protected static ListComparer compOutcome = new ListComparer(); diff --git a/Mage/src/mage/filter/FilterObject.java b/Mage/src/mage/filter/FilterObject.java index 01eb2e04d24..49b7c07b5cc 100644 --- a/Mage/src/mage/filter/FilterObject.java +++ b/Mage/src/mage/filter/FilterObject.java @@ -32,16 +32,10 @@ import mage.MageObject; /** * - * @author BetaSteward_at_googlemail.com * @author North */ public class FilterObject> extends FilterImpl { - /** - * Indicates that filter shouldn't match the source. - */ - protected boolean another; - @Override public FilterObject copy() { return new FilterObject(this); @@ -53,14 +47,5 @@ public class FilterObject> ex public FilterObject(FilterObject filter) { super(filter); - this.another = filter.another; - } - - public boolean isAnother() { - return another; - } - - public void setAnother(boolean another) { - this.another = another; } } diff --git a/Mage/src/mage/filter/FilterPermanent.java b/Mage/src/mage/filter/FilterPermanent.java index f41cad2b77b..4f223e3891c 100644 --- a/Mage/src/mage/filter/FilterPermanent.java +++ b/Mage/src/mage/filter/FilterPermanent.java @@ -55,6 +55,7 @@ public class FilterPermanent> extends FilterObject< protected boolean phasedIn; protected TargetController controller = TargetController.ANY; protected TargetController owner = TargetController.ANY; + protected boolean another; public FilterPermanent() { super("permanent"); @@ -76,6 +77,7 @@ public class FilterPermanent> extends FilterObject< this.phasedIn = filter.phasedIn; this.controller = filter.controller; this.owner = filter.owner; + this.another = filter.another; } public FilterPermanent(String name) { @@ -204,6 +206,14 @@ public class FilterPermanent> extends FilterObject< this.owner = owner; } + public boolean isAnother() { + return another; + } + + public void setAnother(boolean another) { + this.another = another; + } + public boolean matchOwner(UUID testOwnerId) { if (ownerId.size() > 0 && ownerId.contains(testOwnerId) == notOwner) return false;