[filters] added Attacking and Blocking predicates

This commit is contained in:
North 2012-07-22 13:48:14 +03:00
parent 61b5f8555e
commit badb0ede21
15 changed files with 139 additions and 130 deletions

View file

@ -42,7 +42,7 @@ import mage.abilities.effects.common.DamageTargetEffect;
import mage.abilities.effects.common.continious.GainAbilitySourceEffect;
import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.common.FilterAttackingOrBlockingCreature;
import mage.target.common.TargetCreaturePermanent;
/**
@ -51,15 +51,6 @@ import mage.target.common.TargetCreaturePermanent;
*/
public class FreewindEquenaut extends CardImpl<FreewindEquenaut> {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("attacking or blocking creature");
static {
filter.setAttacking(true);
filter.setUseAttacking(true);
filter.setBlocking(true);
filter.setUseBlocking(true);
}
public FreewindEquenaut(UUID ownerId) {
super(ownerId, 9, "Freewind Equenaut", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{2}{W}");
this.expansionSetCode = "DIS";
@ -74,7 +65,7 @@ public class FreewindEquenaut extends CardImpl<FreewindEquenaut> {
SimpleActivatedAbility ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
new DamageTargetEffect(2),
new TapSourceCost());
ability.addTarget(new TargetCreaturePermanent(filter));
ability.addTarget(new TargetCreaturePermanent(new FilterAttackingOrBlockingCreature()));
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD,
new ConditionalContinousEffect(
new GainAbilitySourceEffect(ability, Duration.WhileOnBattlefield),

View file

@ -33,7 +33,6 @@ import mage.Constants.Rarity;
import mage.abilities.effects.common.DestroyTargetEffect;
import mage.cards.CardImpl;
import mage.filter.common.FilterAttackingOrBlockingCreature;
import mage.filter.common.FilterCreaturePermanent;
import mage.target.common.TargetCreaturePermanent;
/**
@ -42,15 +41,6 @@ import mage.target.common.TargetCreaturePermanent;
*/
public class DivineVerdict extends CardImpl<DivineVerdict> {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("attacking or blocking creature");
static {
filter.setAttacking(true);
filter.setUseAttacking(true);
filter.setBlocking(true);
filter.setUseBlocking(true);
}
public DivineVerdict(UUID ownerId) {
super(ownerId, 8, "Divine Verdict", Rarity.COMMON, new CardType[]{CardType.INSTANT}, "{3}{W}");
this.expansionSetCode = "M10";

View file

@ -39,7 +39,7 @@ 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.common.FilterCreaturePermanent;
import mage.filter.common.FilterAttackingOrBlockingCreature;
import mage.target.common.TargetCreaturePermanent;
/**
@ -48,13 +48,6 @@ import mage.target.common.TargetCreaturePermanent;
*/
public class SoldierReplica extends CardImpl<SoldierReplica> {
private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("attacking or blocking creature");
static {
filter.setBlocking(true);
filter.setAttacking(true);
}
public SoldierReplica(UUID ownerId) {
super(ownerId, 244, "Soldier Replica", Rarity.COMMON, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{3}");
this.expansionSetCode = "MRD";
@ -63,7 +56,7 @@ public class SoldierReplica extends CardImpl<SoldierReplica> {
this.toughness = new MageInt(3);
Ability ability = new SimpleActivatedAbility(Constants.Zone.BATTLEFIELD, new DamageTargetEffect(3), new ManaCostsImpl("{1}{W}"));
ability.addCost(new SacrificeSourceCost());
ability.addTarget(new TargetCreaturePermanent(filter));
ability.addTarget(new TargetCreaturePermanent(new FilterAttackingOrBlockingCreature()));
this.addAbility(ability);
}

View file

@ -33,7 +33,7 @@ import mage.Constants.Duration;
import mage.Constants.Rarity;
import mage.abilities.effects.common.PreventAllDamageEffect;
import mage.cards.CardImpl;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.common.FilterAttackingCreature;
/**
*
@ -41,13 +41,6 @@ import mage.filter.common.FilterCreaturePermanent;
*/
public class HarmlessAssault extends CardImpl<HarmlessAssault> {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("attacking creatures");
static {
filter.setAttacking(true);
filter.setUseAttacking(true);
}
public HarmlessAssault(UUID ownerId) {
super(ownerId, 24, "Harmless Assault", Rarity.COMMON,
new CardType[] { CardType.INSTANT }, "{2}{W}{W}");
@ -58,7 +51,7 @@ public class HarmlessAssault extends CardImpl<HarmlessAssault> {
// Prevent all combat damage that would be dealt this turn by attacking
// creatures.
this.getSpellAbility().addEffect(
new PreventAllDamageEffect(filter, Duration.EndOfTurn, true));
new PreventAllDamageEffect(new FilterAttackingCreature(), Duration.EndOfTurn, true));
}
public HarmlessAssault(final HarmlessAssault card) {

View file

@ -33,6 +33,7 @@ import mage.Constants.Rarity;
import mage.abilities.effects.common.DestroyTargetEffect;
import mage.cards.CardImpl;
import mage.filter.Filter.ComparisonType;
import mage.filter.common.FilterAttackingOrBlockingCreature;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.mageobject.PowerPredicate;
import mage.target.common.TargetCreaturePermanent;
@ -43,13 +44,9 @@ import mage.target.common.TargetCreaturePermanent;
*/
public class PuncturingLight extends CardImpl<PuncturingLight> {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("attacking or blocking creature with power 3 or less");
private static final FilterCreaturePermanent filter = new FilterAttackingOrBlockingCreature("attacking or blocking creature with power 3 or less");
static {
filter.setAttacking(true);
filter.setUseAttacking(true);
filter.setBlocking(true);
filter.setUseBlocking(true);
filter.add(new PowerPredicate(ComparisonType.LessThan, 4));
}

View file

@ -37,7 +37,7 @@ import mage.abilities.condition.common.MetalcraftCondition;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.SacrificeEffect;
import mage.cards.CardImpl;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.common.FilterAttackingCreature;
import mage.game.Game;
import mage.target.TargetPlayer;
@ -73,13 +73,7 @@ class DispenseJusticeEffect extends OneShotEffect<DispenseJusticeEffect> {
private static final String effectText = "Target player sacrifices an attacking creature.\r\n\r\n"
+ "Metalcraft - That player sacrifices two attacking creatures instead if you control three or more artifacts";
private static final FilterCreaturePermanent filter;
static {
filter = new FilterCreaturePermanent();
filter.setUseAttacking(true);
filter.setAttacking(true);
}
private static final FilterAttackingCreature filter = new FilterAttackingCreature();
DispenseJusticeEffect ( ) {
super(Outcome.Sacrifice);

View file

@ -39,7 +39,7 @@ import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.effects.common.continious.BoostTargetEffect;
import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.common.FilterAttackingOrBlockingCreature;
import mage.target.common.TargetCreaturePermanent;
/**
@ -48,15 +48,6 @@ import mage.target.common.TargetCreaturePermanent;
*/
public class AngelicPage extends CardImpl<AngelicPage> {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("attacking or blocking creature");
static {
filter.setAttacking(true);
filter.setUseAttacking(true);
filter.setBlocking(true);
filter.setUseBlocking(true);
}
public AngelicPage(UUID ownerId) {
super(ownerId, 4, "Angelic Page", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{1}{W}");
this.expansionSetCode = "USG";
@ -70,7 +61,7 @@ public class AngelicPage extends CardImpl<AngelicPage> {
//{T}: Target attacking or blocking creature gets +1/+1 until end of turn.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostTargetEffect(1, 1, Duration.EndOfTurn), new TapSourceCost());
ability.addTarget(new TargetCreaturePermanent(filter));
ability.addTarget(new TargetCreaturePermanent(new FilterAttackingOrBlockingCreature()));
this.addAbility(ability);
}