forked from External/mage
Changed SpellCostReduction effect to work with FilterSpell instead of FilterCard.
This commit is contained in:
parent
c560626883
commit
5f720983ee
35 changed files with 130 additions and 84 deletions
|
|
@ -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"));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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)));
|
||||
|
|
|
|||
|
|
@ -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"));
|
||||
|
|
|
|||
|
|
@ -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));
|
||||
|
|
|
|||
|
|
@ -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));
|
||||
|
|
|
|||
|
|
@ -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(
|
||||
|
|
|
|||
|
|
@ -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(
|
||||
|
|
|
|||
|
|
@ -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(
|
||||
|
|
|
|||
|
|
@ -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(
|
||||
|
|
|
|||
|
|
@ -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(
|
||||
|
|
|
|||
|
|
@ -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());
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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(
|
||||
|
|
|
|||
|
|
@ -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(
|
||||
|
|
|
|||
|
|
@ -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(
|
||||
|
|
|
|||
|
|
@ -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(
|
||||
|
|
|
|||
|
|
@ -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),
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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"));
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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));
|
||||
|
|
|
|||
|
|
@ -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));
|
||||
|
|
|
|||
|
|
@ -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));
|
||||
|
|
|
|||
|
|
@ -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));
|
||||
|
|
|
|||
|
|
@ -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));
|
||||
|
|
|
|||
|
|
@ -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(
|
||||
|
|
|
|||
|
|
@ -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());
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
26
Mage/src/mage/filter/common/FilterCreatureSpell.java
Normal file
26
Mage/src/mage/filter/common/FilterCreatureSpell.java
Normal 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));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue