mirror of
https://github.com/correl/mage.git
synced 2025-02-19 11:07:01 +00:00
[filters] replaced Power and Toughness conditions with Predicates
This commit is contained in:
parent
85b22de4b0
commit
dfd2413b89
21 changed files with 44 additions and 97 deletions
Mage.Sets/src/mage/sets
alarareborn
betrayersofkamigawa
championsofkamigawa
conflux
innistrad
riseoftheeldrazi
shardsofalara
BloodthornTaunter.javaGodtoucher.javaGustriderExuberant.javaMosstodon.javaRakeclawGargantuan.javaSpearbreakerBehemoth.java
tenth
timeshifted
urzassaga
Mage/src/mage/filter
|
@ -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<SpellbreakerBehemoth> {
|
|||
|
||||
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) {
|
||||
|
|
|
@ -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<TerashisVerdict> {
|
|||
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) {
|
||||
|
|
|
@ -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<SoratamiMirrorGuard> {
|
|||
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) {
|
||||
|
|
|
@ -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<BeaconBehemoth> {
|
|||
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) {
|
||||
|
|
|
@ -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<VagrantPlowbeasts> {
|
|||
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) {
|
||||
|
|
|
@ -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<SmiteTheMonstrous> {
|
|||
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) {
|
||||
|
|
|
@ -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<BalaGedScorpion> {
|
|||
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) {
|
||||
|
|
|
@ -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<GoblinTunneler> {
|
||||
|
||||
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) {
|
||||
|
|
|
@ -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<KorLineSlinger> {
|
|||
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) {
|
||||
|
|
|
@ -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<PuncturingLight> {
|
|||
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) {
|
||||
|
|
|
@ -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<BloodthornTaunter> {
|
|||
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) {
|
||||
|
|
|
@ -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<Godtoucher> {
|
|||
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) {
|
||||
|
|
|
@ -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<GustriderExuberant> {
|
|||
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) {
|
||||
|
|
|
@ -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<Mosstodon> {
|
|||
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) {
|
||||
|
|
|
@ -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<RakeclawGargantuan> {
|
|||
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) {
|
||||
|
|
|
@ -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<SpearbreakerBehemoth> {
|
|||
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) {
|
||||
|
|
|
@ -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<CraftyPathmage> {
|
|||
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) {
|
||||
|
|
|
@ -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<Pendelhaven> {
|
||||
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) {
|
||||
|
|
|
@ -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<IntrepidHero> {
|
|||
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) {
|
||||
|
|
|
@ -61,24 +61,6 @@ public abstract class FilterImpl<E, T extends FilterImpl<E, T>> implements Filte
|
|||
this.predicates = new LinkedList<Predicate>(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++) {
|
||||
|
|
|
@ -64,10 +64,6 @@ public class FilterObject<E extends MageObject, T extends FilterObject<E, T>> ex
|
|||
protected List<String> supertype = new ArrayList<String>();
|
||||
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<E extends MageObject, T extends FilterObject<E, T>> 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<E extends MageObject, T extends FilterObject<E, T>> 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<E extends MageObject, T extends FilterObject<E, T>> 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;
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue