Changed SpellCostReduction effect to work with FilterSpell instead of FilterCard.

This commit is contained in:
LevelX2 2014-01-18 16:00:44 +01:00
parent c560626883
commit 5f720983ee
35 changed files with 130 additions and 84 deletions

View file

@ -38,7 +38,7 @@ import mage.constants.CardType;
import mage.constants.Rarity;
import mage.constants.Zone;
import mage.counters.CounterType;
import mage.filter.FilterCard;
import mage.filter.FilterSpell;
import mage.filter.predicate.mageobject.SubtypePredicate;
/**
@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*/
public class HeroOfIroas extends CardImpl<HeroOfIroas> {
private static final FilterCard filter = new FilterCard("Aura spells");
private static final FilterSpell filter = new FilterSpell("Aura spells");
static {
filter.add(new SubtypePredicate("Aura"));
}

View file

@ -39,7 +39,7 @@ import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.common.continious.BoostControlledEffect;
import mage.abilities.effects.common.cost.SpellsCostReductionEffect;
import mage.cards.CardImpl;
import mage.filter.FilterCard;
import mage.filter.FilterSpell;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.mageobject.SubtypePredicate;
@ -50,7 +50,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
public class LongForgottenGohei extends CardImpl<LongForgottenGohei> {
private static final FilterCard arcaneFilter = new FilterCard("Arcane spells");
private static final FilterSpell arcaneFilter = new FilterSpell("Arcane spells");
private static final FilterCreaturePermanent spiritFilter = new FilterCreaturePermanent("Spirit creatures");
static {

View file

@ -28,15 +28,16 @@
package mage.sets.futuresight;
import java.util.UUID;
import mage.constants.CardType;
import mage.constants.Rarity;
import mage.constants.Zone;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.common.cost.SpellsCostReductionEffect;
import mage.cards.CardImpl;
import mage.filter.common.FilterCreatureCard;
import mage.constants.CardType;
import mage.constants.Rarity;
import mage.constants.Zone;
import mage.filter.FilterSpell;
import mage.filter.predicate.mageobject.CardTypePredicate;
import mage.game.Game;
import mage.game.permanent.Permanent;
@ -46,6 +47,11 @@ import mage.game.permanent.Permanent;
*/
public class CentaurOmenreader extends CardImpl<CentaurOmenreader> {
private static final FilterSpell filter = new FilterSpell("creature spells");
static {
filter.add(new CardTypePredicate(CardType.CREATURE));
}
public CentaurOmenreader(UUID ownerId) {
super(ownerId, 143, "Centaur Omenreader", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{3}{G}");
this.expansionSetCode = "FUT";
@ -58,7 +64,7 @@ public class CentaurOmenreader extends CardImpl<CentaurOmenreader> {
this.toughness = new MageInt(3);
// As long as Centaur Omenreader is tapped, creature spells you cast cost {2} less to cast.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CentaurOmenreaderSpellsCostReductionEffect()));
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CentaurOmenreaderSpellsCostReductionEffect(filter)));
}
public CentaurOmenreader(final CentaurOmenreader card) {
@ -73,8 +79,9 @@ public class CentaurOmenreader extends CardImpl<CentaurOmenreader> {
class CentaurOmenreaderSpellsCostReductionEffect extends SpellsCostReductionEffect {
public CentaurOmenreaderSpellsCostReductionEffect() {
super(new FilterCreatureCard("creature spells"), 2);
public CentaurOmenreaderSpellsCostReductionEffect(FilterSpell filter) {
super(filter, 2);
staticText = "As long as {this} is tapped, creature spells you cast cost {2} less to cast";
}
protected CentaurOmenreaderSpellsCostReductionEffect(SpellsCostReductionEffect effect) {
@ -94,4 +101,4 @@ class CentaurOmenreaderSpellsCostReductionEffect extends SpellsCostReductionEffe
public CentaurOmenreaderSpellsCostReductionEffect copy() {
return new CentaurOmenreaderSpellsCostReductionEffect(this);
}
}
}

View file

@ -28,15 +28,15 @@
package mage.sets.innistrad;
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.BoostControlledEffect;
import mage.abilities.effects.common.cost.SpellsCostReductionEffect;
import mage.cards.CardImpl;
import mage.filter.common.FilterCreatureCard;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.Rarity;
import mage.constants.Zone;
import mage.filter.common.FilterCreatureSpell;
/**
*
@ -51,7 +51,7 @@ public class HeartlessSummoning extends CardImpl<HeartlessSummoning> {
this.color.setBlack(true);
// Creature spells you cast cost {2} less to cast.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new SpellsCostReductionEffect(new FilterCreatureCard("Creature spells"), 2)));
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new SpellsCostReductionEffect(new FilterCreatureSpell("Creature spells"), 2)));
// Creatures you control get -1/-1.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostControlledEffect(-1, -1, Duration.WhileOnBattlefield)));

View file

@ -35,7 +35,7 @@ import mage.MageInt;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.common.cost.SpellsCostReductionEffect;
import mage.cards.CardImpl;
import mage.filter.FilterCard;
import mage.filter.FilterSpell;
import mage.filter.predicate.mageobject.SubtypePredicate;
/**
@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*/
public class StinkdrinkerDaredevil extends CardImpl<StinkdrinkerDaredevil> {
private static final FilterCard filter = new FilterCard("Giant spells");
private static final FilterSpell filter = new FilterSpell("Giant spells");
static {
filter.add(new SubtypePredicate("Giant"));

View file

@ -36,7 +36,7 @@ import mage.cards.CardImpl;
import mage.constants.CardType;
import mage.constants.Rarity;
import mage.constants.Zone;
import mage.filter.FilterCard;
import mage.filter.FilterSpell;
import mage.filter.predicate.mageobject.AbilityPredicate;
import mage.filter.predicate.mageobject.CardTypePredicate;
@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*/
public class WardenOfEvosIsle extends CardImpl<WardenOfEvosIsle> {
private static final FilterCard filter = new FilterCard("Creature spells with flying");
private static final FilterSpell filter = new FilterSpell("Creature spells with flying");
static {
filter.add(new CardTypePredicate(CardType.CREATURE));
filter.add(new AbilityPredicate(FlyingAbility.class));

View file

@ -43,7 +43,7 @@ import mage.abilities.effects.common.cost.SpellsCostReductionEffect;
import mage.cards.CardImpl;
import mage.constants.CostModificationType;
import mage.constants.Duration;
import mage.filter.FilterCard;
import mage.filter.FilterSpell;
import mage.filter.predicate.mageobject.ColorPredicate;
import mage.game.Game;
import mage.util.CardUtil;
@ -54,8 +54,8 @@ import mage.util.CardUtil;
*/
public class GrandArbiterAugustinIV extends CardImpl<GrandArbiterAugustinIV> {
private static final FilterCard filterWhite = new FilterCard("White spells");
private static final FilterCard filterBlue = new FilterCard("Blue spells");
private static final FilterSpell filterWhite = new FilterSpell("White spells");
private static final FilterSpell filterBlue = new FilterSpell("Blue spells");
static {
filterWhite.add(new ColorPredicate(ObjectColor.WHITE));
filterBlue.add(new ColorPredicate(ObjectColor.BLUE));

View file

@ -35,7 +35,7 @@ import mage.MageInt;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.common.cost.SpellsCostReductionEffect;
import mage.cards.CardImpl;
import mage.filter.FilterCard;
import mage.filter.FilterSpell;
import mage.filter.predicate.Predicates;
import mage.filter.predicate.mageobject.SubtypePredicate;
@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*/
public class BallyrushBanneret extends CardImpl<BallyrushBanneret> {
private static final FilterCard filter = new FilterCard("Kithkin spells and Soldier spells");
private static final FilterSpell filter = new FilterSpell("Kithkin spells and Soldier spells");
static {
filter.add(Predicates.or(

View file

@ -35,7 +35,7 @@ import mage.MageInt;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.common.cost.SpellsCostReductionEffect;
import mage.cards.CardImpl;
import mage.filter.FilterCard;
import mage.filter.FilterSpell;
import mage.filter.predicate.Predicates;
import mage.filter.predicate.mageobject.SubtypePredicate;
@ -45,7 +45,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*/
public class BoskBanneret extends CardImpl<BoskBanneret> {
private static final FilterCard filter = new FilterCard("Treefolk spells and Shaman spells");
private static final FilterSpell filter = new FilterSpell("Treefolk spells and Shaman spells");
static {
filter.add(Predicates.or(

View file

@ -37,7 +37,7 @@ import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.cost.SpellsCostReductionEffect;
import mage.abilities.keyword.ReinforceAbility;
import mage.cards.CardImpl;
import mage.filter.FilterCard;
import mage.filter.FilterSpell;
import mage.filter.predicate.Predicates;
import mage.filter.predicate.mageobject.SubtypePredicate;
@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*/
public class BrighthearthBanneret extends CardImpl<BrighthearthBanneret> {
private static final FilterCard filter = new FilterCard("Elemental spells and Warrior spells");
private static final FilterSpell filter = new FilterSpell("Elemental spells and Warrior spells");
static {
filter.add(Predicates.or(

View file

@ -36,7 +36,7 @@ import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.common.cost.SpellsCostReductionEffect;
import mage.abilities.keyword.HasteAbility;
import mage.cards.CardImpl;
import mage.filter.FilterCard;
import mage.filter.FilterSpell;
import mage.filter.predicate.Predicates;
import mage.filter.predicate.mageobject.SubtypePredicate;
@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*/
public class FrogtosserBanneret extends CardImpl<FrogtosserBanneret> {
private static final FilterCard filter = new FilterCard("Goblin spells and Rogue spells");
private static final FilterSpell filter = new FilterSpell("Goblin spells and Rogue spells");
static {
filter.add(Predicates.or(

View file

@ -36,7 +36,7 @@ import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.common.cost.SpellsCostReductionEffect;
import mage.abilities.keyword.IslandwalkAbility;
import mage.cards.CardImpl;
import mage.filter.FilterCard;
import mage.filter.FilterSpell;
import mage.filter.predicate.Predicates;
import mage.filter.predicate.mageobject.SubtypePredicate;
@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*/
public class StonybrookBanneret extends CardImpl<StonybrookBanneret> {
private static final FilterCard filter = new FilterCard("Merfolk spells and Wizard spells");
private static final FilterSpell filter = new FilterSpell("Merfolk spells and Wizard spells");
static {
filter.add(Predicates.or(

View file

@ -34,7 +34,7 @@ import mage.constants.Zone;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.common.cost.SpellsCostReductionEffect;
import mage.cards.CardImpl;
import mage.filter.common.FilterCreatureCard;
import mage.filter.common.FilterCreatureSpell;
import mage.filter.predicate.other.FaceDownPredicate;
/**
@ -43,7 +43,7 @@ import mage.filter.predicate.other.FaceDownPredicate;
*/
public class DreamChisel extends CardImpl<DreamChisel> {
private static final FilterCreatureCard filter = new FilterCreatureCard("Face-down creature spells");
private static final FilterCreatureSpell filter = new FilterCreatureSpell("Face-down creature spells");
static {
filter.add(new FaceDownPredicate());

View file

@ -38,6 +38,7 @@ import mage.abilities.effects.common.continious.BoostControlledEffect;
import mage.abilities.effects.common.cost.SpellsCostReductionEffect;
import mage.cards.CardImpl;
import mage.filter.FilterCard;
import mage.filter.FilterSpell;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.mageobject.SubtypePredicate;
@ -47,7 +48,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*/
public class UndeadWarchief extends CardImpl<UndeadWarchief> {
private static final FilterCard filter = new FilterCard("Zombie spells");
private static final FilterSpell filter = new FilterSpell("Zombie spells");
private static final FilterCreaturePermanent filterCreatures = new FilterCreaturePermanent("Zombie creatures");
static {

View file

@ -39,7 +39,7 @@ import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.RegenerateSourceEffect;
import mage.abilities.effects.common.cost.SpellsCostReductionEffect;
import mage.cards.CardImpl;
import mage.filter.FilterCard;
import mage.filter.FilterSpell;
import mage.filter.predicate.Predicates;
import mage.filter.predicate.mageobject.ColorPredicate;
@ -49,7 +49,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*/
public class NightscapeFamiliar extends CardImpl<NightscapeFamiliar> {
private static final FilterCard filter = new FilterCard("Blue spells and red spells");
private static final FilterSpell filter = new FilterSpell("Blue spells and red spells");
static {
filter.add(Predicates.or(

View file

@ -37,7 +37,7 @@ import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.common.cost.SpellsCostReductionEffect;
import mage.abilities.keyword.DefenderAbility;
import mage.cards.CardImpl;
import mage.filter.FilterCard;
import mage.filter.FilterSpell;
import mage.filter.predicate.Predicates;
import mage.filter.predicate.mageobject.ColorPredicate;
@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*/
public class SunscapeFamiliar extends CardImpl<SunscapeFamiliar> {
private static final FilterCard filter = new FilterCard("Green spells and blue spells");
private static final FilterSpell filter = new FilterSpell("Green spells and blue spells");
static {
filter.add(Predicates.or(

View file

@ -36,7 +36,7 @@ import mage.ObjectColor;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.common.cost.SpellsCostReductionEffect;
import mage.cards.CardImpl;
import mage.filter.FilterCard;
import mage.filter.FilterSpell;
import mage.filter.predicate.Predicates;
import mage.filter.predicate.mageobject.ColorPredicate;
@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*/
public class ThornscapeFamiliar extends CardImpl<ThornscapeFamiliar> {
private static final FilterCard filter = new FilterCard("Red spells and white spells");
private static final FilterSpell filter = new FilterSpell("Red spells and white spells");
static {
filter.add(Predicates.or(

View file

@ -37,7 +37,7 @@ import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.common.cost.SpellsCostReductionEffect;
import mage.abilities.keyword.FirstStrikeAbility;
import mage.cards.CardImpl;
import mage.filter.FilterCard;
import mage.filter.FilterSpell;
import mage.filter.predicate.Predicates;
import mage.filter.predicate.mageobject.ColorPredicate;
@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*/
public class ThunderscapeFamiliar extends CardImpl<ThunderscapeFamiliar> {
private static final FilterCard filter = new FilterCard("Black spells and green spells");
private static final FilterSpell filter = new FilterSpell("Black spells and green spells");
static {
filter.add(Predicates.or(

View file

@ -36,7 +36,7 @@ import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.common.cost.SpellsCostReductionEffect;
import mage.cards.CardImpl;
import mage.constants.Zone;
import mage.filter.FilterCard;
import mage.filter.FilterSpell;
import mage.filter.predicate.Predicates;
import mage.filter.predicate.mageobject.CardTypePredicate;
@ -46,7 +46,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*/
public class GoblinElectromancer extends CardImpl<GoblinElectromancer> {
private static final FilterCard filter = new FilterCard("Instant and sorcery spells");
private static final FilterSpell filter = new FilterSpell("Instant and sorcery spells");
static {
filter.add(Predicates.or(
new CardTypePredicate(CardType.INSTANT),

View file

@ -37,7 +37,7 @@ import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.common.continious.BoostControlledEffect;
import mage.abilities.effects.common.cost.SpellsCostReductionEffect;
import mage.cards.CardImpl;
import mage.filter.FilterCard;
import mage.filter.FilterSpell;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.mageobject.SubtypePredicate;
@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*/
public class DaruWarchief extends CardImpl<DaruWarchief> {
private static final FilterCard filter = new FilterCard("Soldier spells");
private static final FilterSpell filter = new FilterSpell("Soldier spells");
private static final FilterCreaturePermanent filterCreatures = new FilterCreaturePermanent("Soldier creatures");
static {

View file

@ -35,7 +35,7 @@ import mage.MageInt;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.common.cost.SpellsCostReductionEffect;
import mage.cards.CardImpl;
import mage.filter.FilterCard;
import mage.filter.FilterSpell;
import mage.filter.predicate.mageobject.SubtypePredicate;
/**
@ -44,7 +44,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*/
public class DragonspeakerShaman extends CardImpl<DragonspeakerShaman> {
private static final FilterCard filter = new FilterCard("Dragon spells");
private static final FilterSpell filter = new FilterSpell("Dragon spells");
static {
filter.add(new SubtypePredicate("Dragon"));

View file

@ -38,7 +38,7 @@ import mage.abilities.effects.common.continious.GainAbilityControlledEffect;
import mage.abilities.effects.common.cost.SpellsCostReductionEffect;
import mage.abilities.keyword.HasteAbility;
import mage.cards.CardImpl;
import mage.filter.FilterCard;
import mage.filter.FilterSpell;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.mageobject.SubtypePredicate;
@ -48,7 +48,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*/
public class GoblinWarchief extends CardImpl<GoblinWarchief> {
private static final FilterCard filterSpells = new FilterCard("Goblin spells");
private static final FilterSpell filterSpells = new FilterSpell("Goblin spells");
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Goblins");
static {

View file

@ -38,7 +38,7 @@ import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.RegenerateTargetEffect;
import mage.abilities.effects.common.cost.SpellsCostReductionEffect;
import mage.cards.CardImpl;
import mage.filter.FilterCard;
import mage.filter.FilterSpell;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.mageobject.SubtypePredicate;
import mage.target.Target;
@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
*/
public class KrosanWarchief extends CardImpl<KrosanWarchief> {
private static final FilterCard filter = new FilterCard("Beast spells");
private static final FilterSpell filter = new FilterSpell("Beast spells");
private static final FilterCreaturePermanent filterTarget = new FilterCreaturePermanent("Beast");
static {

View file

@ -35,13 +35,18 @@ import mage.MageInt;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.common.cost.SpellsCostReductionEffect;
import mage.cards.CardImpl;
import mage.filter.common.FilterArtifactCard;
import mage.filter.FilterSpell;
import mage.filter.predicate.mageobject.CardTypePredicate;
/**
*
* @author North
*/
public class EtheriumSculptor extends CardImpl<EtheriumSculptor> {
private static final FilterSpell filter = new FilterSpell("Artifact spells");
static {
filter.add(new CardTypePredicate(CardType.ARTIFACT));
}
public EtheriumSculptor(UUID ownerId) {
super(ownerId, 42, "Etherium Sculptor", Rarity.COMMON, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{1}{U}");
@ -54,7 +59,7 @@ public class EtheriumSculptor extends CardImpl<EtheriumSculptor> {
this.toughness = new MageInt(2);
// Artifact spells you cast cost {1} less to cast.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new SpellsCostReductionEffect(new FilterArtifactCard("Artifact spells"), 1)));
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new SpellsCostReductionEffect(filter, 1)));
}
public EtheriumSculptor(final EtheriumSculptor card) {

View file

@ -35,7 +35,7 @@ import mage.ObjectColor;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.common.cost.SpellsCostReductionEffect;
import mage.cards.CardImpl;
import mage.filter.FilterCard;
import mage.filter.FilterSpell;
import mage.filter.predicate.mageobject.ColorPredicate;
/**
@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*/
public class EmeraldMedallion extends CardImpl<EmeraldMedallion> {
private static final FilterCard filter = new FilterCard("Green spells");
private static final FilterSpell filter = new FilterSpell("Green spells");
static {
filter.add(new ColorPredicate(ObjectColor.GREEN));

View file

@ -35,7 +35,7 @@ import mage.ObjectColor;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.common.cost.SpellsCostReductionEffect;
import mage.cards.CardImpl;
import mage.filter.FilterCard;
import mage.filter.FilterSpell;
import mage.filter.predicate.mageobject.ColorPredicate;
/**
@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*/
public class JetMedallion extends CardImpl<JetMedallion> {
private static final FilterCard filter = new FilterCard("Black spells");
private static final FilterSpell filter = new FilterSpell("Black spells");
static {
filter.add(new ColorPredicate(ObjectColor.BLACK));

View file

@ -35,7 +35,7 @@ import mage.ObjectColor;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.common.cost.SpellsCostReductionEffect;
import mage.cards.CardImpl;
import mage.filter.FilterCard;
import mage.filter.FilterSpell;
import mage.filter.predicate.mageobject.ColorPredicate;
/**
@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*/
public class PearlMedallion extends CardImpl<PearlMedallion> {
private static final FilterCard filter = new FilterCard("White spells");
private static final FilterSpell filter = new FilterSpell("White spells");
static {
filter.add(new ColorPredicate(ObjectColor.WHITE));

View file

@ -35,7 +35,7 @@ import mage.ObjectColor;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.common.cost.SpellsCostReductionEffect;
import mage.cards.CardImpl;
import mage.filter.FilterCard;
import mage.filter.FilterSpell;
import mage.filter.predicate.mageobject.ColorPredicate;
/**
@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*/
public class RubyMedallion extends CardImpl<RubyMedallion> {
private static final FilterCard filter = new FilterCard("Red spells");
private static final FilterSpell filter = new FilterSpell("Red spells");
static {
filter.add(new ColorPredicate(ObjectColor.RED));

View file

@ -35,7 +35,7 @@ import mage.ObjectColor;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.common.cost.SpellsCostReductionEffect;
import mage.cards.CardImpl;
import mage.filter.FilterCard;
import mage.filter.FilterSpell;
import mage.filter.predicate.mageobject.ColorPredicate;
/**
@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*/
public class SapphireMedallion extends CardImpl<SapphireMedallion> {
private static final FilterCard filter = new FilterCard("Blue spells");
private static final FilterSpell filter = new FilterSpell("Blue spells");
static {
filter.add(new ColorPredicate(ObjectColor.BLUE));

View file

@ -37,7 +37,7 @@ import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.common.cost.SpellsCostReductionEffect;
import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl;
import mage.filter.FilterCard;
import mage.filter.FilterSpell;
import mage.filter.predicate.Predicates;
import mage.filter.predicate.mageobject.ColorPredicate;
@ -47,7 +47,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*/
public class StormscapeFamiliar extends CardImpl<StormscapeFamiliar> {
private static final FilterCard filter = new FilterCard("White spells and black spells");
private static final FilterSpell filter = new FilterSpell("White spells and black spells");
static {
filter.add(Predicates.or(

View file

@ -40,7 +40,7 @@ import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.cost.SpellsCostReductionEffect;
import mage.abilities.effects.common.search.SearchLibraryPutInHandEffect;
import mage.cards.CardImpl;
import mage.filter.FilterCard;
import mage.filter.FilterSpell;
import mage.filter.common.FilterCreatureCard;
import mage.filter.predicate.mageobject.ColorlessPredicate;
import mage.filter.predicate.mageobject.SubtypePredicate;
@ -53,7 +53,7 @@ import mage.target.common.TargetCardInLibrary;
public class EyeOfUgin extends CardImpl<EyeOfUgin> {
private static final FilterCreatureCard filter = new FilterCreatureCard();
private static final FilterCard filterSpells = new FilterCard("Colorless Eldrazi spells");
private static final FilterSpell filterSpells = new FilterSpell("Colorless Eldrazi spells");
static {
filter.add(new ColorlessPredicate());

View file

@ -35,8 +35,9 @@ import mage.abilities.effects.CostModificationEffectImpl;
import mage.abilities.keyword.FlashbackAbility;
import mage.cards.Card;
import mage.constants.CostModificationType;
import mage.filter.FilterCard;
import mage.filter.FilterSpell;
import mage.game.Game;
import mage.game.stack.Spell;
import mage.util.CardUtil;
/**
@ -45,10 +46,10 @@ import mage.util.CardUtil;
*/
public class SpellsCostReductionEffect extends CostModificationEffectImpl<SpellsCostReductionEffect> {
private FilterCard filter;
private FilterSpell filter;
private int amount;
public SpellsCostReductionEffect(FilterCard filter, int amount) {
public SpellsCostReductionEffect(FilterSpell filter, int amount) {
super(Duration.WhileOnBattlefield, Outcome.Benefit, CostModificationType.REDUCE_COST);
this.filter = filter;
this.amount = amount;
@ -72,10 +73,10 @@ public class SpellsCostReductionEffect extends CostModificationEffectImpl<Spells
@Override
public boolean applies(Ability abilityToModify, Ability source, Game game) {
if ((abilityToModify instanceof SpellAbility || abilityToModify instanceof FlashbackAbility)
if ((abilityToModify instanceof SpellAbility)
&& abilityToModify.getControllerId().equals(source.getControllerId())) {
Card sourceCard = game.getCard(abilityToModify.getSourceId());
return sourceCard != null && this.filter.match(sourceCard, game);
Spell spell = (Spell) game.getStack().getStackObject(abilityToModify.getId());
return spell != null && this.filter.match(spell, game);
}
return false;
}

View file

@ -27,10 +27,7 @@
*/
package mage.abilities.keyword;
import mage.constants.Outcome;
import mage.constants.SpellAbilityType;
import mage.abilities.Ability;
import mage.abilities.ActivatedAbilityImpl;
import mage.abilities.DelayedTriggeredAbility;
import mage.abilities.SpellAbility;
import mage.abilities.costs.Cost;
@ -39,6 +36,8 @@ import mage.abilities.effects.common.CreateDelayedTriggeredAbilityEffect;
import mage.abilities.effects.common.ExileSourceEffect;
import mage.cards.Card;
import mage.cards.SplitCard;
import mage.constants.Outcome;
import mage.constants.SpellAbilityType;
import mage.constants.TimingRule;
import mage.constants.Zone;
import mage.game.Game;
@ -51,14 +50,16 @@ import mage.target.Target;
*
* @author nantuko
*/
public class FlashbackAbility extends /*SpellAbility*/ ActivatedAbilityImpl<FlashbackAbility> {
public class FlashbackAbility extends SpellAbility {
private SpellAbilityType spellAbilityType;
private String abilityName;
public FlashbackAbility(Cost cost, TimingRule timingRule) {
//super(cost, "", new FlashbackEffect(), Constants.Zone.GRAVEYARD);
super(Zone.GRAVEYARD, new FlashbackEffect(), cost);
super(null, "", Zone.GRAVEYARD);
this.name = new StringBuilder("Flashback ").append(cost.getText()).toString();
this.addEffect(new FlashbackEffect());
this.addCost(cost);
this.timing = timingRule;
this.usesStack = false;
this.spellAbilityType = SpellAbilityType.BASE;
@ -104,10 +105,12 @@ public class FlashbackAbility extends /*SpellAbility*/ ActivatedAbilityImpl<Flas
return sbRule.toString();
}
@Override
public void setSpellAbilityType(SpellAbilityType spellAbilityType) {
this.spellAbilityType = spellAbilityType;
}
@Override
public SpellAbilityType getSpellAbilityType() {
return this.spellAbilityType;
}

View file

@ -0,0 +1,26 @@
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package mage.filter.common;
import mage.constants.CardType;
import mage.filter.FilterSpell;
import mage.filter.predicate.mageobject.CardTypePredicate;
/**
*
* @author LevelX2
*/
public class FilterCreatureSpell extends FilterSpell {
public FilterCreatureSpell() {
super("creature spell");
}
public FilterCreatureSpell(String name) {
super(name);
this.add(new CardTypePredicate(CardType.CREATURE));
}
}

View file

@ -840,6 +840,9 @@ public abstract class PlayerImpl<T extends PlayerImpl<T>> implements Player, Ser
else if (ability instanceof ManaAbility) {
result = playManaAbility((ManaAbility)ability.copy(), game);
}
else if (ability instanceof FlashbackAbility){
result = playAbility((ActivatedAbility)ability.copy(), game);
}
else if (ability instanceof SpellAbility) {
result = cast((SpellAbility)ability, game, false);
}