mirror of
https://github.com/magefree/mage.git
synced 2026-01-26 21:29:17 -08:00
Implemented Aven Wind Mage
This commit is contained in:
parent
90afb57a2b
commit
19768424c1
38 changed files with 114 additions and 71 deletions
|
|
@ -48,7 +48,7 @@ public final class AdelizTheCinderWind extends CardImpl {
|
|||
|
||||
// Whenever you cast an instant or sorcery spell, Wizards you control get +1/+1 until end of turn.
|
||||
Effect effect = new BoostControlledEffect(1, 1, Duration.EndOfTurn, filter);
|
||||
Ability ability = new SpellCastControllerTriggeredAbility(effect, StaticFilters.FILTER_INSTANT_OR_SORCERY_SPELL, false);
|
||||
Ability ability = new SpellCastControllerTriggeredAbility(effect, StaticFilters.FILTER_SPELL_INSTANT_OR_SORCERY, false);
|
||||
this.addAbility(ability);
|
||||
}
|
||||
|
||||
|
|
|
|||
48
Mage.Sets/src/mage/cards/a/AvenWindMage.java
Normal file
48
Mage.Sets/src/mage/cards/a/AvenWindMage.java
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
package mage.cards.a;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.common.SpellCastControllerTriggeredAbility;
|
||||
import mage.abilities.effects.common.continuous.BoostSourceEffect;
|
||||
import mage.constants.SubType;
|
||||
import mage.abilities.keyword.FlyingAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Duration;
|
||||
import mage.filter.StaticFilters;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class AvenWindMage extends CardImpl {
|
||||
|
||||
public AvenWindMage(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}");
|
||||
|
||||
this.subtype.add(SubType.BIRD);
|
||||
this.subtype.add(SubType.WIZARD);
|
||||
this.power = new MageInt(2);
|
||||
this.toughness = new MageInt(2);
|
||||
|
||||
// Flying
|
||||
this.addAbility(FlyingAbility.getInstance());
|
||||
|
||||
// Whenever you cast an instant or sorcery spell, Aven Wind Mage gets +1/+1 until end of turn.
|
||||
this.addAbility(new SpellCastControllerTriggeredAbility(
|
||||
new BoostSourceEffect(1, 1, Duration.EndOfTurn),
|
||||
StaticFilters.FILTER_SPELL_AN_INSTANT_OR_SORCERY,
|
||||
false
|
||||
));
|
||||
}
|
||||
|
||||
public AvenWindMage(final AvenWindMage card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public AvenWindMage copy() {
|
||||
return new AvenWindMage(this);
|
||||
}
|
||||
}
|
||||
|
|
@ -82,7 +82,7 @@ class BattlefieldThaumaturgeSpellsCostReductionEffect extends CostModificationEf
|
|||
if ((abilityToModify instanceof SpellAbility)
|
||||
&& abilityToModify.getControllerId().equals(source.getControllerId())) {
|
||||
Spell spell = (Spell) game.getStack().getStackObject(abilityToModify.getId());
|
||||
return spell != null && StaticFilters.FILTER_INSTANT_OR_SORCERY_SPELL.match(spell, game);
|
||||
return spell != null && StaticFilters.FILTER_SPELL_INSTANT_OR_SORCERY.match(spell, game);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ public final class BlistercoilWeird extends CardImpl {
|
|||
this.toughness = new MageInt(1);
|
||||
|
||||
// Whenever you cast an instant or sorcery spell, Blistercoil Weird gets +1/+1 until end of turn. Untap it.
|
||||
Ability ability = new SpellCastControllerTriggeredAbility(new BoostSourceEffect(1, 1, Duration.EndOfTurn), StaticFilters.FILTER_INSTANT_OR_SORCERY_SPELL, false);
|
||||
Ability ability = new SpellCastControllerTriggeredAbility(new BoostSourceEffect(1, 1, Duration.EndOfTurn), StaticFilters.FILTER_SPELL_INSTANT_OR_SORCERY, false);
|
||||
ability.addEffect(new UntapSourceEffect());
|
||||
this.addAbility(ability);
|
||||
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ public final class Cursecatcher extends CardImpl {
|
|||
SimpleActivatedAbility ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
|
||||
new CounterUnlessPaysEffect(new GenericManaCost(1)),
|
||||
new SacrificeSourceCost());
|
||||
ability.addTarget(new TargetSpell(StaticFilters.FILTER_INSTANT_OR_SORCERY_SPELL));
|
||||
ability.addTarget(new TargetSpell(StaticFilters.FILTER_SPELL_INSTANT_OR_SORCERY));
|
||||
this.addAbility(ability);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ public final class Disrupt extends CardImpl {
|
|||
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{U}");
|
||||
|
||||
// Counter target instant or sorcery spell unless its controller pays {1}.
|
||||
this.getSpellAbility().addTarget(new TargetSpell(StaticFilters.FILTER_INSTANT_OR_SORCERY_SPELL));
|
||||
this.getSpellAbility().addTarget(new TargetSpell(StaticFilters.FILTER_SPELL_INSTANT_OR_SORCERY));
|
||||
this.getSpellAbility().addEffect(new CounterUnlessPaysEffect(new GenericManaCost(1)));
|
||||
// Draw a card.
|
||||
this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1));
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ public final class DualcasterMage extends CardImpl {
|
|||
|
||||
// When Dualcaster Mage enters the battlefield, copy target instant or sorcery spell. You may choose new targets for the copy.
|
||||
Ability ability = new EntersBattlefieldTriggeredAbility(new CopyTargetSpellEffect(), false);
|
||||
ability.addTarget(new TargetSpell(StaticFilters.FILTER_INSTANT_OR_SORCERY_SPELL));
|
||||
ability.addTarget(new TargetSpell(StaticFilters.FILTER_SPELL_INSTANT_OR_SORCERY));
|
||||
this.addAbility(ability);
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@ public final class EchoMage extends LevelerCard {
|
|||
// {U}{U}, {tap}: Copy target instant or sorcery spell. You may choose new targets for the copy.
|
||||
Abilities<Ability> abilities1 = new AbilitiesImpl<>();
|
||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new CopyTargetSpellEffect(), new ManaCostsImpl("{U}{U}"));
|
||||
ability.addTarget(new TargetSpell(StaticFilters.FILTER_INSTANT_OR_SORCERY_SPELL));
|
||||
ability.addTarget(new TargetSpell(StaticFilters.FILTER_SPELL_INSTANT_OR_SORCERY));
|
||||
ability.addCost(new TapSourceCost());
|
||||
abilities1.add(ability);
|
||||
// LEVEL 4+
|
||||
|
|
@ -54,7 +54,7 @@ public final class EchoMage extends LevelerCard {
|
|||
// {U}{U}, {tap}: Copy target instant or sorcery spell twice. You may choose new targets for the copies.
|
||||
Abilities<Ability> abilities2 = new AbilitiesImpl<>();
|
||||
ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new EchoMageEffect(), new ManaCostsImpl("{U}{U}"));
|
||||
ability.addTarget(new TargetSpell(StaticFilters.FILTER_INSTANT_OR_SORCERY_SPELL));
|
||||
ability.addTarget(new TargetSpell(StaticFilters.FILTER_SPELL_INSTANT_OR_SORCERY));
|
||||
ability.addCost(new TapSourceCost());
|
||||
abilities2.add(ability);
|
||||
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@ public final class EnergyStorm extends CardImpl {
|
|||
|
||||
// Prevent all damage that would be dealt by instant and sorcery spells.
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD,
|
||||
new PreventAllDamageByAllObjectsEffect(StaticFilters.FILTER_INSTANT_OR_SORCERY_SPELLS, Duration.WhileOnBattlefield, false)
|
||||
new PreventAllDamageByAllObjectsEffect(StaticFilters.FILTER_SPELLS_INSTANT_OR_SORCERY, Duration.WhileOnBattlefield, false)
|
||||
));
|
||||
|
||||
// Creatures with flying don't untap during their controllers' untap steps.
|
||||
|
|
|
|||
|
|
@ -111,7 +111,7 @@ class EyeOfTheStormEffect1 extends OneShotEffect {
|
|||
Card card = spell.getCard();
|
||||
if (spellController == null
|
||||
|| card == null
|
||||
|| !StaticFilters.FILTER_INSTANT_OR_SORCERY_SPELL.match(spell, game)) {
|
||||
|| !StaticFilters.FILTER_SPELL_INSTANT_OR_SORCERY.match(spell, game)) {
|
||||
return false;
|
||||
}
|
||||
if (!noLongerOnStack) {// the spell is still on the stack, so exile it
|
||||
|
|
|
|||
|
|
@ -39,7 +39,7 @@ public final class FerocityOfTheUnderworld extends CardImpl {
|
|||
// Copy target instant or sorcery spell. You may choose new targets for the copy.
|
||||
Mode mode = new Mode();
|
||||
mode.getEffects().add(new CopyTargetSpellEffect());
|
||||
mode.getTargets().add(new TargetSpell(StaticFilters.FILTER_INSTANT_OR_SORCERY_SPELL));
|
||||
mode.getTargets().add(new TargetSpell(StaticFilters.FILTER_SPELL_INSTANT_OR_SORCERY));
|
||||
this.getSpellAbility().addMode(mode);
|
||||
|
||||
// Return target card from your graveyard to your hand.
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ public final class Flusterstorm extends CardImpl {
|
|||
|
||||
// Counter target instant or sorcery spell unless its controller pays {1}.
|
||||
this.getSpellAbility().addEffect(new CounterUnlessPaysEffect(new ManaCostsImpl("{1}")));
|
||||
this.getSpellAbility().addTarget(new TargetSpell(StaticFilters.FILTER_INSTANT_OR_SORCERY_SPELL));
|
||||
this.getSpellAbility().addTarget(new TargetSpell(StaticFilters.FILTER_SPELL_INSTANT_OR_SORCERY));
|
||||
// Storm
|
||||
this.addAbility(new StormAbility());
|
||||
}
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ public final class Fluxcharger extends CardImpl {
|
|||
// Flying
|
||||
this.addAbility(FlyingAbility.getInstance());
|
||||
// Whenever you cast an instant or sorcery spell, you may switch Fluxcharger's power and toughness until end of turn.
|
||||
this.addAbility(new SpellCastControllerTriggeredAbility(new SwitchPowerToughnessSourceEffect(Duration.EndOfTurn), StaticFilters.FILTER_INSTANT_OR_SORCERY_SPELL, true));
|
||||
this.addAbility(new SpellCastControllerTriggeredAbility(new SwitchPowerToughnessSourceEffect(Duration.EndOfTurn), StaticFilters.FILTER_SPELL_INSTANT_OR_SORCERY, true));
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ public final class Fork extends CardImpl {
|
|||
|
||||
// Copy target instant or sorcery spell, except that the copy is red. You may choose new targets for the copy.
|
||||
this.getSpellAbility().addEffect(new ForkEffect());
|
||||
this.getSpellAbility().addTarget(new TargetSpell(StaticFilters.FILTER_INSTANT_OR_SORCERY_SPELL));
|
||||
this.getSpellAbility().addTarget(new TargetSpell(StaticFilters.FILTER_SPELL_INSTANT_OR_SORCERY));
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@ public final class InsidiousWill extends CardImpl {
|
|||
// Copy target instant or sorcery spell. You may choose new targets for the copy.
|
||||
mode = new Mode();
|
||||
mode.getEffects().add(new CopyTargetSpellEffect());
|
||||
mode.getTargets().add(new TargetSpell(StaticFilters.FILTER_INSTANT_OR_SORCERY_SPELL));
|
||||
mode.getTargets().add(new TargetSpell(StaticFilters.FILTER_SPELL_INSTANT_OR_SORCERY));
|
||||
this.getSpellAbility().getModes().addMode(mode);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ public final class JudgesFamiliar extends CardImpl {
|
|||
SimpleActivatedAbility ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
|
||||
new CounterUnlessPaysEffect(new GenericManaCost(1)),
|
||||
new SacrificeSourceCost());
|
||||
ability.addTarget(new TargetSpell(StaticFilters.FILTER_INSTANT_OR_SORCERY_SPELL));
|
||||
ability.addTarget(new TargetSpell(StaticFilters.FILTER_SPELL_INSTANT_OR_SORCERY));
|
||||
this.addAbility(ability);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
|
||||
package mage.cards.k;
|
||||
|
||||
import java.util.UUID;
|
||||
|
|
@ -10,9 +9,7 @@ import mage.cards.CardSetInfo;
|
|||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.Duration;
|
||||
import mage.filter.FilterSpell;
|
||||
import mage.filter.predicate.Predicates;
|
||||
import mage.filter.predicate.mageobject.CardTypePredicate;
|
||||
import mage.filter.StaticFilters;
|
||||
|
||||
/**
|
||||
*
|
||||
|
|
@ -20,22 +17,19 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
|
|||
*/
|
||||
public final class KilnFiend extends CardImpl {
|
||||
|
||||
private static final FilterSpell filter = new FilterSpell("an instant or sorcery spell");
|
||||
static {
|
||||
filter.add(Predicates.or(
|
||||
new CardTypePredicate(CardType.INSTANT),
|
||||
new CardTypePredicate(CardType.SORCERY)));
|
||||
}
|
||||
|
||||
public KilnFiend(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}");
|
||||
this.subtype.add(SubType.ELEMENTAL);
|
||||
this.subtype.add(SubType.BEAST);
|
||||
|
||||
this.power = new MageInt(1);
|
||||
this.toughness = new MageInt(2);
|
||||
|
||||
this.addAbility(new SpellCastControllerTriggeredAbility(new BoostSourceEffect(3, 0, Duration.EndOfTurn), filter, false));
|
||||
this.addAbility(new SpellCastControllerTriggeredAbility(
|
||||
new BoostSourceEffect(3, 0, Duration.EndOfTurn),
|
||||
StaticFilters.FILTER_SPELL_AN_INSTANT_OR_SORCERY,
|
||||
false
|
||||
));
|
||||
}
|
||||
|
||||
public KilnFiend(final KilnFiend card) {
|
||||
|
|
|
|||
|
|
@ -39,7 +39,7 @@ public final class MeletisCharlatan extends CardImpl {
|
|||
// {2}{U}, {T}: The controller of target instant or sorcery spell copies it. That player may choose new targets for the copy.
|
||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new MeletisCharlatanCopyTargetSpellEffect(), new ManaCostsImpl("{2}{U}"));
|
||||
ability.addCost(new TapSourceCost());
|
||||
Target target = new TargetSpell(StaticFilters.FILTER_INSTANT_OR_SORCERY_SPELL);
|
||||
Target target = new TargetSpell(StaticFilters.FILTER_SPELL_INSTANT_OR_SORCERY);
|
||||
ability.addTarget(target);
|
||||
this.addAbility(ability);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ public final class MercurialGeists extends CardImpl {
|
|||
this.addAbility(FlyingAbility.getInstance());
|
||||
|
||||
// Whenever you cast an instant or sorcery spell, Mercurial Geists gets +3/+0 until end of turn.
|
||||
this.addAbility(new SpellCastControllerTriggeredAbility(new BoostSourceEffect(3, 0, Duration.EndOfTurn), StaticFilters.FILTER_INSTANT_OR_SORCERY_SPELL, false));
|
||||
this.addAbility(new SpellCastControllerTriggeredAbility(new BoostSourceEffect(3, 0, Duration.EndOfTurn), StaticFilters.FILTER_SPELL_INSTANT_OR_SORCERY, false));
|
||||
}
|
||||
|
||||
public MercurialGeists(final MercurialGeists card) {
|
||||
|
|
|
|||
|
|
@ -44,7 +44,7 @@ public final class MischievousQuanar extends CardImpl {
|
|||
Effect effect2 = new CopyTargetSpellEffect();
|
||||
effect2.setText("copy target instant or sorcery spell. You may choose new targets for that copy");
|
||||
Ability ability = new TurnedFaceUpSourceTriggeredAbility(effect2);
|
||||
ability.addTarget(new TargetSpell(StaticFilters.FILTER_INSTANT_OR_SORCERY_SPELL));
|
||||
ability.addTarget(new TargetSpell(StaticFilters.FILTER_SPELL_INSTANT_OR_SORCERY));
|
||||
this.addAbility(ability);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ public final class MoltenInfluence extends CardImpl {
|
|||
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{R}");
|
||||
|
||||
// Counter target instant or sorcery spell unless its controller has Molten Influence deal 4 damage to him or her.
|
||||
this.getSpellAbility().addTarget(new TargetSpell(StaticFilters.FILTER_INSTANT_OR_SORCERY_SPELL));
|
||||
this.getSpellAbility().addTarget(new TargetSpell(StaticFilters.FILTER_SPELL_INSTANT_OR_SORCERY));
|
||||
this.getSpellAbility().addEffect(new MoltenInfluenceEffect());
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@ public final class NiblisOfFrost extends CardImpl {
|
|||
this.addAbility(new ProwessAbility());
|
||||
|
||||
// Whenever you cast an instant or sorcery spell, tap target creature an opponent controls. That creature doesn't untap during its controller's next untap step.
|
||||
Ability ability = new SpellCastControllerTriggeredAbility(new TapTargetEffect(), StaticFilters.FILTER_INSTANT_OR_SORCERY_SPELL, false);
|
||||
Ability ability = new SpellCastControllerTriggeredAbility(new TapTargetEffect(), StaticFilters.FILTER_SPELL_INSTANT_OR_SORCERY, false);
|
||||
ability.addTarget(new TargetCreaturePermanent(filterCreature));
|
||||
ability.addEffect(new DontUntapInControllersNextUntapStepTargetEffect("That creature"));
|
||||
this.addAbility(ability);
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
|
||||
package mage.cards.n;
|
||||
|
||||
import java.util.UUID;
|
||||
|
|
@ -15,9 +14,7 @@ import mage.constants.CardType;
|
|||
import mage.constants.SubType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.Outcome;
|
||||
import mage.filter.FilterSpell;
|
||||
import mage.filter.predicate.Predicates;
|
||||
import mage.filter.predicate.mageobject.CardTypePredicate;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.game.Game;
|
||||
import mage.game.permanent.Permanent;
|
||||
|
||||
|
|
@ -27,16 +24,8 @@ import mage.game.permanent.Permanent;
|
|||
*/
|
||||
public final class NivixCyclops extends CardImpl {
|
||||
|
||||
private static final FilterSpell filter = new FilterSpell("an instant or sorcery spell");
|
||||
|
||||
static {
|
||||
filter.add(Predicates.or(
|
||||
new CardTypePredicate(CardType.INSTANT),
|
||||
new CardTypePredicate(CardType.SORCERY)));
|
||||
}
|
||||
|
||||
public NivixCyclops(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}{R}");
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}{R}");
|
||||
this.subtype.add(SubType.CYCLOPS);
|
||||
|
||||
this.power = new MageInt(1);
|
||||
|
|
@ -46,7 +35,11 @@ public final class NivixCyclops extends CardImpl {
|
|||
this.addAbility(DefenderAbility.getInstance());
|
||||
|
||||
// Whenever you cast an instant or sorcery spell, Nivix Cyclops gets +3/+0 until end of turn and can attack this turn as though it didn't have defender.
|
||||
Ability ability = new SpellCastControllerTriggeredAbility(new BoostSourceEffect(3, 0, Duration.EndOfTurn), filter, false);
|
||||
Ability ability = new SpellCastControllerTriggeredAbility(
|
||||
new BoostSourceEffect(3, 0, Duration.EndOfTurn),
|
||||
StaticFilters.FILTER_SPELL_AN_INSTANT_OR_SORCERY,
|
||||
false
|
||||
);
|
||||
ability.addEffect(new AsThoughNoDefenderEffect());
|
||||
this.addAbility(ability);
|
||||
|
||||
|
|
@ -59,14 +52,14 @@ public final class NivixCyclops extends CardImpl {
|
|||
@Override
|
||||
public NivixCyclops copy() {
|
||||
return new NivixCyclops(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class AsThoughNoDefenderEffect extends AsThoughEffectImpl {
|
||||
|
||||
public AsThoughNoDefenderEffect() {
|
||||
super(AsThoughEffectType.ATTACK, Duration.EndOfTurn, Outcome.Benefit);
|
||||
staticText ="and it can attack as though it didn't have defender";
|
||||
staticText = "and it can attack as though it didn't have defender";
|
||||
}
|
||||
|
||||
public AsThoughNoDefenderEffect(final AsThoughNoDefenderEffect effect) {
|
||||
|
|
@ -93,5 +86,3 @@ class AsThoughNoDefenderEffect extends AsThoughEffectImpl {
|
|||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ public final class OddsEnds extends SplitCard {
|
|||
// Odds
|
||||
// Flip a coin. If it comes up heads, counter target instant or sorcery spell. If it comes up tails, copy that spell and you may choose new targets for the copy.
|
||||
getLeftHalfCard().getSpellAbility().addEffect(new OddsEffect());
|
||||
getLeftHalfCard().getSpellAbility().addTarget(new TargetSpell(StaticFilters.FILTER_INSTANT_OR_SORCERY_SPELL));
|
||||
getLeftHalfCard().getSpellAbility().addTarget(new TargetSpell(StaticFilters.FILTER_SPELL_INSTANT_OR_SORCERY));
|
||||
|
||||
// Ends
|
||||
// Target player sacrifices two attacking creatures.
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ public final class PrescientChimera extends CardImpl {
|
|||
// Flying
|
||||
this.addAbility(FlyingAbility.getInstance());
|
||||
// Whenever you cast an instant or sorcery spell, scry 1.
|
||||
this.addAbility(new SpellCastControllerTriggeredAbility(new ScryEffect(1), StaticFilters.FILTER_INSTANT_OR_SORCERY_SPELL, false));
|
||||
this.addAbility(new SpellCastControllerTriggeredAbility(new ScryEffect(1), StaticFilters.FILTER_SPELL_INSTANT_OR_SORCERY, false));
|
||||
}
|
||||
|
||||
public PrescientChimera(final PrescientChimera card) {
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ public final class Quash extends CardImpl {
|
|||
|
||||
// Counter target instant or sorcery spell.
|
||||
// Search its controller's graveyard, hand, and library for all cards with the same name as that spell and exile them. Then that player shuffles their library.
|
||||
this.getSpellAbility().addTarget(new TargetSpell(StaticFilters.FILTER_INSTANT_OR_SORCERY_SPELL));
|
||||
this.getSpellAbility().addTarget(new TargetSpell(StaticFilters.FILTER_SPELL_INSTANT_OR_SORCERY));
|
||||
this.getSpellAbility().addEffect(new CounterTargetAndSearchGraveyardHandLibraryEffect());
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ public final class Reiterate extends CardImpl {
|
|||
this.addAbility(new BuybackAbility("{3}"));
|
||||
|
||||
// Copy target instant or sorcery spell. You may choose new targets for the copy.
|
||||
this.getSpellAbility().addTarget(new TargetSpell(StaticFilters.FILTER_INSTANT_OR_SORCERY_SPELL));
|
||||
this.getSpellAbility().addTarget(new TargetSpell(StaticFilters.FILTER_SPELL_INSTANT_OR_SORCERY));
|
||||
this.getSpellAbility().addEffect(new CopyTargetSpellEffect());
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@ public final class SentinelTower extends CardImpl {
|
|||
class SentinelTowerTriggeredAbility extends SpellCastAllTriggeredAbility {
|
||||
|
||||
SentinelTowerTriggeredAbility() {
|
||||
super(new DamageTargetEffect(0), StaticFilters.FILTER_INSTANT_OR_SORCERY_SPELL, false);
|
||||
super(new DamageTargetEffect(0), StaticFilters.FILTER_SPELL_INSTANT_OR_SORCERY, false);
|
||||
this.addTarget(new TargetAnyTarget());
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@ public final class SigilTracer extends CardImpl {
|
|||
|
||||
// {1}{U}, Tap two untapped Wizards you control: Copy target instant or sorcery spell. You may choose new targets for the copy.
|
||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new CopyTargetSpellEffect(), new ManaCostsImpl("{1}{U}"));
|
||||
ability.addTarget(new TargetSpell(StaticFilters.FILTER_INSTANT_OR_SORCERY_SPELL));
|
||||
ability.addTarget(new TargetSpell(StaticFilters.FILTER_SPELL_INSTANT_OR_SORCERY));
|
||||
ability.addCost(new TapTargetCost(new TargetControlledCreaturePermanent(2, 2, filter, false)));
|
||||
this.addAbility(ability);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ public final class SplitDecision extends CardImpl {
|
|||
|
||||
// Will of the council - Choose target instant or sorcery spell. Starting with you, each player votes for denial or duplication. If denial gets more votes, counter the spell. If duplication gets more votes or the vote is tied, copy the spell. You may choose new targets for the copy.
|
||||
this.getSpellAbility().addEffect(new SplitDecisionEffect());
|
||||
this.getSpellAbility().addTarget(new TargetSpell(StaticFilters.FILTER_INSTANT_OR_SORCERY_SPELL));
|
||||
this.getSpellAbility().addTarget(new TargetSpell(StaticFilters.FILTER_SPELL_INSTANT_OR_SORCERY));
|
||||
}
|
||||
|
||||
public SplitDecision(final SplitDecision card) {
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@ public final class StratusDancer extends CardImpl {
|
|||
Effect effect = new CounterTargetEffect();
|
||||
effect.setText("counter target instant or sorcery spell");
|
||||
Ability ability = new TurnedFaceUpSourceTriggeredAbility(effect, false);
|
||||
ability.addTarget(new TargetSpell(StaticFilters.FILTER_INSTANT_OR_SORCERY_SPELL));
|
||||
ability.addTarget(new TargetSpell(StaticFilters.FILTER_SPELL_INSTANT_OR_SORCERY));
|
||||
this.addAbility(ability);
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ public final class Twincast extends CardImpl {
|
|||
|
||||
// Copy target instant or sorcery spell. You may choose new targets for the copy.
|
||||
this.getSpellAbility().addEffect(new CopyTargetSpellEffect());
|
||||
this.getSpellAbility().addTarget(new TargetSpell(StaticFilters.FILTER_INSTANT_OR_SORCERY_SPELL));
|
||||
this.getSpellAbility().addTarget(new TargetSpell(StaticFilters.FILTER_SPELL_INSTANT_OR_SORCERY));
|
||||
}
|
||||
|
||||
public Twincast(final Twincast card) {
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@ public final class UyoSilentProphet extends CardImpl {
|
|||
// {2}, Return two lands you control to their owner's hand: Copy target instant or sorcery spell. You may choose new targets for the copy.
|
||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new CopyTargetSpellEffect(), new GenericManaCost(2));
|
||||
ability.addCost(new ReturnToHandChosenControlledPermanentCost(new TargetControlledPermanent(2, 2, new FilterControlledLandPermanent("lands"), false)));
|
||||
ability.addTarget(new TargetSpell(StaticFilters.FILTER_INSTANT_OR_SORCERY_SPELL));
|
||||
ability.addTarget(new TargetSpell(StaticFilters.FILTER_SPELL_INSTANT_OR_SORCERY));
|
||||
this.addAbility(ability);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ public final class VodalianMystic extends CardImpl {
|
|||
|
||||
// {T}: Target instant or sorcery spell becomes the color of your choice.
|
||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new BecomesColorTargetEffect(Duration.WhileOnStack), new TapSourceCost());
|
||||
ability.addTarget(new TargetSpell(StaticFilters.FILTER_INSTANT_OR_SORCERY_SPELL));
|
||||
ability.addTarget(new TargetSpell(StaticFilters.FILTER_SPELL_INSTANT_OR_SORCERY));
|
||||
this.addAbility(ability);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ public final class YoungPyromancer extends CardImpl {
|
|||
this.toughness = new MageInt(1);
|
||||
|
||||
// Whenever you cast an instant or sorcery spell, create a 1/1 red Elemental creature token.
|
||||
this.addAbility(new SpellCastControllerTriggeredAbility(new CreateTokenEffect(new YoungPyromancerElementalToken()), StaticFilters.FILTER_INSTANT_OR_SORCERY_SPELL, false));
|
||||
this.addAbility(new SpellCastControllerTriggeredAbility(new CreateTokenEffect(new YoungPyromancerElementalToken()), StaticFilters.FILTER_SPELL_INSTANT_OR_SORCERY, false));
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -29,6 +29,7 @@ public final class CoreSet2019 extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Air Elemental", 308, Rarity.UNCOMMON, mage.cards.a.AirElemental.class));
|
||||
cards.add(new SetCardInfo("Anticipate", 44, Rarity.COMMON, mage.cards.a.Anticipate.class));
|
||||
cards.add(new SetCardInfo("Apex of Power", 129, Rarity.MYTHIC, mage.cards.a.ApexOfPower.class));
|
||||
cards.add(new SetCardInfo("Aven Wind Mage", 45, Rarity.COMMON, mage.cards.a.AvenWindMage.class));
|
||||
cards.add(new SetCardInfo("Befuddle", 309, Rarity.COMMON, mage.cards.b.Befuddle.class));
|
||||
cards.add(new SetCardInfo("Cancel", 48, Rarity.COMMON, mage.cards.c.Cancel.class));
|
||||
cards.add(new SetCardInfo("Catalyst Elemental", 132, Rarity.COMMON, mage.cards.c.CatalystElemental.class));
|
||||
|
|
|
|||
|
|
@ -424,24 +424,33 @@ public final class StaticFilters {
|
|||
FILTER_SPELL_A_MULTICOLORED.setLockedFilter(true);
|
||||
}
|
||||
|
||||
public static final FilterSpell FILTER_INSTANT_OR_SORCERY_SPELL = new FilterSpell("instant or sorcery spell");
|
||||
public static final FilterSpell FILTER_SPELL_AN_INSTANT_OR_SORCERY = new FilterSpell("an instant or sorcery spell");
|
||||
|
||||
static {
|
||||
FILTER_INSTANT_OR_SORCERY_SPELL.add(Predicates.or(
|
||||
FILTER_SPELL_AN_INSTANT_OR_SORCERY.add(Predicates.or(
|
||||
new CardTypePredicate(CardType.INSTANT),
|
||||
new CardTypePredicate(CardType.SORCERY)
|
||||
));
|
||||
FILTER_INSTANT_OR_SORCERY_SPELL.setLockedFilter(true);
|
||||
FILTER_SPELL_AN_INSTANT_OR_SORCERY.setLockedFilter(true);
|
||||
}
|
||||
public static final FilterSpell FILTER_SPELL_INSTANT_OR_SORCERY = new FilterSpell("instant or sorcery spell");
|
||||
|
||||
static {
|
||||
FILTER_SPELL_INSTANT_OR_SORCERY.add(Predicates.or(
|
||||
new CardTypePredicate(CardType.INSTANT),
|
||||
new CardTypePredicate(CardType.SORCERY)
|
||||
));
|
||||
FILTER_SPELL_INSTANT_OR_SORCERY.setLockedFilter(true);
|
||||
}
|
||||
|
||||
public static final FilterSpell FILTER_INSTANT_OR_SORCERY_SPELLS = new FilterSpell("instant or sorcery spells");
|
||||
public static final FilterSpell FILTER_SPELLS_INSTANT_OR_SORCERY = new FilterSpell("instant or sorcery spells");
|
||||
|
||||
static {
|
||||
FILTER_INSTANT_OR_SORCERY_SPELLS.add(Predicates.or(
|
||||
FILTER_SPELLS_INSTANT_OR_SORCERY.add(Predicates.or(
|
||||
new CardTypePredicate(CardType.INSTANT),
|
||||
new CardTypePredicate(CardType.SORCERY)
|
||||
));
|
||||
FILTER_INSTANT_OR_SORCERY_SPELLS.setLockedFilter(true);
|
||||
FILTER_SPELLS_INSTANT_OR_SORCERY.setLockedFilter(true);
|
||||
}
|
||||
public static final FilterPermanent FILTER_CREATURE_TOKENS = new FilterCreaturePermanent("creature tokens");
|
||||
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ public class WillKenrithEmblem extends Emblem {
|
|||
Zone.COMMAND,
|
||||
new CopyTargetSpellEffect(true)
|
||||
.setText("copy that spell. You may choose new targets for the copy"),
|
||||
StaticFilters.FILTER_INSTANT_OR_SORCERY_SPELL,
|
||||
StaticFilters.FILTER_SPELL_INSTANT_OR_SORCERY,
|
||||
false,
|
||||
true
|
||||
));
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue