mirror of
https://github.com/correl/mage.git
synced 2024-11-25 03:00:11 +00:00
updated ManaSpentToCastWatcher to default watcher list, reworked it to be game scope
This commit is contained in:
parent
943c67fbca
commit
91eb324847
190 changed files with 272 additions and 280 deletions
|
@ -36,7 +36,7 @@ public final class AbandonHope extends CardImpl {
|
||||||
|
|
||||||
// Look at target opponent's hand and choose X cards from it. That player discards those cards.
|
// Look at target opponent's hand and choose X cards from it. That player discards those cards.
|
||||||
this.getSpellAbility().addEffect(
|
this.getSpellAbility().addEffect(
|
||||||
new DiscardCardYouChooseTargetEffect(ManacostVariableValue.instance, TargetController.ANY)
|
new DiscardCardYouChooseTargetEffect(ManacostVariableValue.REGULAR, TargetController.ANY)
|
||||||
.setText("Look at target opponent's hand and choose X cards from it. That player discards those cards"));
|
.setText("Look at target opponent's hand and choose X cards from it. That player discards those cards"));
|
||||||
this.getSpellAbility().addTarget(new TargetOpponent());
|
this.getSpellAbility().addTarget(new TargetOpponent());
|
||||||
this.getSpellAbility().setCostAdjuster(AbandonHopeAdjuster.instance);
|
this.getSpellAbility().setCostAdjuster(AbandonHopeAdjuster.instance);
|
||||||
|
|
|
@ -23,10 +23,10 @@ public final class AlabasterPotion extends CardImpl {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{X}{W}{W}");
|
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{X}{W}{W}");
|
||||||
|
|
||||||
// Choose one - Target player gains X life; or prevent the next X damage that would be dealt to any target this turn.
|
// Choose one - Target player gains X life; or prevent the next X damage that would be dealt to any target this turn.
|
||||||
this.getSpellAbility().addEffect(new GainLifeTargetEffect(ManacostVariableValue.instance));
|
this.getSpellAbility().addEffect(new GainLifeTargetEffect(ManacostVariableValue.REGULAR));
|
||||||
this.getSpellAbility().addTarget(new TargetPlayer());
|
this.getSpellAbility().addTarget(new TargetPlayer());
|
||||||
Mode mode = new Mode();
|
Mode mode = new Mode();
|
||||||
mode.addEffect(new PreventDamageToTargetEffect(Duration.EndOfTurn, false, true, ManacostVariableValue.instance));
|
mode.addEffect(new PreventDamageToTargetEffect(Duration.EndOfTurn, false, true, ManacostVariableValue.REGULAR));
|
||||||
mode.addTarget(new TargetAnyTarget());
|
mode.addTarget(new TargetAnyTarget());
|
||||||
this.getSpellAbility().addMode(mode);
|
this.getSpellAbility().addMode(mode);
|
||||||
}
|
}
|
||||||
|
|
|
@ -43,13 +43,13 @@ public final class ArashiTheSkyAsunder extends CardImpl {
|
||||||
this.toughness = new MageInt(5);
|
this.toughness = new MageInt(5);
|
||||||
|
|
||||||
// {X}{G}, {tap}: Arashi, the Sky Asunder deals X damage to target creature with flying.
|
// {X}{G}, {tap}: Arashi, the Sky Asunder deals X damage to target creature with flying.
|
||||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(ManacostVariableValue.instance), new ManaCostsImpl("{X}{G}"));
|
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(ManacostVariableValue.REGULAR), new ManaCostsImpl("{X}{G}"));
|
||||||
ability.addCost(new TapSourceCost());
|
ability.addCost(new TapSourceCost());
|
||||||
ability.addTarget(new TargetPermanent(filter));
|
ability.addTarget(new TargetPermanent(filter));
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
|
|
||||||
// Channel - {X}{G}{G}, Discard Arashi: Arashi deals X damage to each creature with flying.
|
// Channel - {X}{G}{G}, Discard Arashi: Arashi deals X damage to each creature with flying.
|
||||||
this.addAbility(new ChannelAbility("{X}{G}{G}", new DamageAllEffect(ManacostVariableValue.instance, filter)));
|
this.addAbility(new ChannelAbility("{X}{G}{G}", new DamageAllEffect(ManacostVariableValue.REGULAR, filter)));
|
||||||
}
|
}
|
||||||
|
|
||||||
private ArashiTheSkyAsunder(final ArashiTheSkyAsunder card) {
|
private ArashiTheSkyAsunder(final ArashiTheSkyAsunder card) {
|
||||||
|
|
|
@ -41,7 +41,7 @@ public final class AtalyaSamiteMaster extends CardImpl {
|
||||||
this.toughness = new MageInt(3);
|
this.toughness = new MageInt(3);
|
||||||
|
|
||||||
// {X}, {tap}: Choose one - Prevent the next X damage that would be dealt to target creature this turn; or you gain X life. Spend only white mana on X.
|
// {X}, {tap}: Choose one - Prevent the next X damage that would be dealt to target creature this turn; or you gain X life. Spend only white mana on X.
|
||||||
PreventDamageToTargetEffect effect = new PreventDamageToTargetEffect(Duration.EndOfTurn, false, true, ManacostVariableValue.instance);
|
PreventDamageToTargetEffect effect = new PreventDamageToTargetEffect(Duration.EndOfTurn, false, true, ManacostVariableValue.REGULAR);
|
||||||
effect.setText("Prevent the next X damage that would be dealt to target creature this turn. Spend only white mana on X.");
|
effect.setText("Prevent the next X damage that would be dealt to target creature this turn. Spend only white mana on X.");
|
||||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, effect, new ManaCostsImpl("{X}"));
|
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, effect, new ManaCostsImpl("{X}"));
|
||||||
ability.addCost(new TapSourceCost());
|
ability.addCost(new TapSourceCost());
|
||||||
|
@ -55,7 +55,7 @@ public final class AtalyaSamiteMaster extends CardImpl {
|
||||||
|
|
||||||
// or you gain X life
|
// or you gain X life
|
||||||
Mode mode = new Mode();
|
Mode mode = new Mode();
|
||||||
mode.addEffect(new GainLifeEffect(ManacostVariableValue.instance).setText("You gain X life. Spend only white mana on X."));
|
mode.addEffect(new GainLifeEffect(ManacostVariableValue.REGULAR).setText("You gain X life. Spend only white mana on X."));
|
||||||
ability.addMode(mode);
|
ability.addMode(mode);
|
||||||
|
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
|
|
|
@ -61,7 +61,7 @@ public final class AureliasFury extends CardImpl {
|
||||||
|
|
||||||
// Aurelia's Fury deals X damage divided as you choose among any number of target creatures and/or players.
|
// Aurelia's Fury deals X damage divided as you choose among any number of target creatures and/or players.
|
||||||
// Tap each creature dealt damage this way. Players dealt damage this way can't cast noncreature spells this turn.
|
// Tap each creature dealt damage this way. Players dealt damage this way can't cast noncreature spells this turn.
|
||||||
DynamicValue xValue = ManacostVariableValue.instance;
|
DynamicValue xValue = ManacostVariableValue.REGULAR;
|
||||||
this.getSpellAbility().addEffect(new DamageMultiEffect(xValue));
|
this.getSpellAbility().addEffect(new DamageMultiEffect(xValue));
|
||||||
this.getSpellAbility().addEffect(new AureliasFuryEffect());
|
this.getSpellAbility().addEffect(new AureliasFuryEffect());
|
||||||
this.getSpellAbility().addTarget(new TargetAnyTargetAmount(xValue));
|
this.getSpellAbility().addTarget(new TargetAnyTargetAmount(xValue));
|
||||||
|
|
|
@ -25,7 +25,7 @@ public final class BalduvianRage extends CardImpl {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{X}{R}");
|
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{X}{R}");
|
||||||
|
|
||||||
// Target attacking creature gets +X/+0 until end of turn.
|
// Target attacking creature gets +X/+0 until end of turn.
|
||||||
this.getSpellAbility().addEffect(new BoostTargetEffect(ManacostVariableValue.instance, StaticValue.get(0), Duration.EndOfTurn));
|
this.getSpellAbility().addEffect(new BoostTargetEffect(ManacostVariableValue.REGULAR, StaticValue.get(0), Duration.EndOfTurn));
|
||||||
this.getSpellAbility().addTarget(new TargetCreaturePermanent(new FilterAttackingCreature()));
|
this.getSpellAbility().addTarget(new TargetCreaturePermanent(new FilterAttackingCreature()));
|
||||||
|
|
||||||
// Draw a card at the beginning of the next turn's upkeep.
|
// Draw a card at the beginning of the next turn's upkeep.
|
||||||
|
|
|
@ -30,7 +30,7 @@ public final class BallistaSquad extends CardImpl {
|
||||||
this.toughness = new MageInt(2);
|
this.toughness = new MageInt(2);
|
||||||
|
|
||||||
// {X}{W}, {T}: Ballista Squad deals X damage to target attacking or blocking creature.
|
// {X}{W}, {T}: Ballista Squad deals X damage to target attacking or blocking creature.
|
||||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(ManacostVariableValue.instance), new ManaCostsImpl("{X}{W}"));
|
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(ManacostVariableValue.REGULAR), new ManaCostsImpl("{X}{W}"));
|
||||||
ability.addCost(new TapSourceCost());
|
ability.addCost(new TapSourceCost());
|
||||||
ability.addTarget(new TargetAttackingOrBlockingCreature());
|
ability.addTarget(new TargetAttackingOrBlockingCreature());
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
|
|
|
@ -17,7 +17,6 @@ import mage.constants.Outcome;
|
||||||
import mage.constants.Zone;
|
import mage.constants.Zone;
|
||||||
import mage.game.Game;
|
import mage.game.Game;
|
||||||
import mage.game.events.GameEvent;
|
import mage.game.events.GameEvent;
|
||||||
import mage.game.events.GameEvent.EventType;
|
|
||||||
import mage.game.permanent.Permanent;
|
import mage.game.permanent.Permanent;
|
||||||
import mage.game.stack.Spell;
|
import mage.game.stack.Spell;
|
||||||
import mage.players.Player;
|
import mage.players.Player;
|
||||||
|
@ -106,7 +105,7 @@ class BaneFireEffect extends OneShotEffect {
|
||||||
|
|
||||||
class BanefireCantCounterEffect extends ContinuousRuleModifyingEffectImpl {
|
class BanefireCantCounterEffect extends ContinuousRuleModifyingEffectImpl {
|
||||||
|
|
||||||
Condition condition = new testCondition(ManacostVariableValue.instance, 5);
|
Condition condition = new testCondition(ManacostVariableValue.REGULAR, 5);
|
||||||
|
|
||||||
public BanefireCantCounterEffect() {
|
public BanefireCantCounterEffect() {
|
||||||
super(Duration.WhileOnStack, Outcome.Benefit);
|
super(Duration.WhileOnStack, Outcome.Benefit);
|
||||||
|
|
|
@ -31,9 +31,9 @@ public final class Banshee extends CardImpl {
|
||||||
this.toughness = new MageInt(1);
|
this.toughness = new MageInt(1);
|
||||||
|
|
||||||
// {X}, {T}: Banshee deals half X damage, rounded down, to any target, and half X damage, rounded up, to you.
|
// {X}, {T}: Banshee deals half X damage, rounded down, to any target, and half X damage, rounded up, to you.
|
||||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(new HalfValue(ManacostVariableValue.instance, false)).setText("Banshee deals half X damage, rounded down, to any target,"), new ManaCostsImpl("{X}"));
|
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(new HalfValue(ManacostVariableValue.REGULAR, false)).setText("Banshee deals half X damage, rounded down, to any target,"), new ManaCostsImpl("{X}"));
|
||||||
ability.addCost(new TapSourceCost());
|
ability.addCost(new TapSourceCost());
|
||||||
ability.addEffect(new DamageControllerEffect(new HalfValue(ManacostVariableValue.instance, true)).setText(" and half X damage, rounded up, to you"));
|
ability.addEffect(new DamageControllerEffect(new HalfValue(ManacostVariableValue.REGULAR, true)).setText(" and half X damage, rounded up, to you"));
|
||||||
ability.addTarget(new TargetAnyTarget());
|
ability.addTarget(new TargetAnyTarget());
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,10 +27,10 @@ public final class BattleAtTheBridge extends CardImpl {
|
||||||
addAbility(new ImproviseAbility());
|
addAbility(new ImproviseAbility());
|
||||||
|
|
||||||
// Target creature gets -X/-X until end of turn. You gain X life.
|
// Target creature gets -X/-X until end of turn. You gain X life.
|
||||||
DynamicValue x = new SignInversionDynamicValue(ManacostVariableValue.instance);
|
DynamicValue x = new SignInversionDynamicValue(ManacostVariableValue.REGULAR);
|
||||||
this.getSpellAbility().addEffect(new BoostTargetEffect(x, x, Duration.EndOfTurn, true));
|
this.getSpellAbility().addEffect(new BoostTargetEffect(x, x, Duration.EndOfTurn, true));
|
||||||
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
|
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
|
||||||
this.getSpellAbility().addEffect(new GainLifeEffect(ManacostVariableValue.instance));
|
this.getSpellAbility().addEffect(new GainLifeEffect(ManacostVariableValue.REGULAR));
|
||||||
}
|
}
|
||||||
|
|
||||||
private BattleAtTheBridge(final BattleAtTheBridge card) {
|
private BattleAtTheBridge(final BattleAtTheBridge card) {
|
||||||
|
|
|
@ -25,8 +25,8 @@ public final class BelbesArmor extends CardImpl {
|
||||||
|
|
||||||
// {X}, {tap}: Target creature gets -X/+X until end of turn.
|
// {X}, {tap}: Target creature gets -X/+X until end of turn.
|
||||||
Ability ability = new SimpleActivatedAbility(new BoostTargetEffect(
|
Ability ability = new SimpleActivatedAbility(new BoostTargetEffect(
|
||||||
new MultipliedValue(ManacostVariableValue.instance, -1),
|
new MultipliedValue(ManacostVariableValue.REGULAR, -1),
|
||||||
ManacostVariableValue.instance, Duration.EndOfTurn
|
ManacostVariableValue.REGULAR, Duration.EndOfTurn
|
||||||
).setText("Target creature gets -X/+X until end of turn"), new ManaCostsImpl("{X}"));
|
).setText("Target creature gets -X/+X until end of turn"), new ManaCostsImpl("{X}"));
|
||||||
ability.addCost(new TapSourceCost());
|
ability.addCost(new TapSourceCost());
|
||||||
ability.addTarget(new TargetCreaturePermanent());
|
ability.addTarget(new TargetCreaturePermanent());
|
||||||
|
|
|
@ -79,13 +79,11 @@ class BergStriderEffect extends OneShotEffect {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean apply(Game game, Ability source) {
|
public boolean apply(Game game, Ability source) {
|
||||||
ManaSpentToCastWatcher watcher = game.getState().getWatcher(
|
ManaSpentToCastWatcher watcher = game.getState().getWatcher(ManaSpentToCastWatcher.class);
|
||||||
ManaSpentToCastWatcher.class, source.getSourceId()
|
|
||||||
);
|
|
||||||
if (watcher == null) {
|
if (watcher == null) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
Mana payment = watcher.getAndResetLastPayment();
|
Mana payment = watcher.getAndResetLastPayment(source.getSourceId());
|
||||||
if (payment == null || payment.getSnow() < 1) {
|
if (payment == null || payment.getSnow() < 1) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,7 +22,7 @@ public final class BiomassMutation extends CardImpl {
|
||||||
|
|
||||||
|
|
||||||
// Creatures you control have base power and toughness X/X until end of turn.
|
// Creatures you control have base power and toughness X/X until end of turn.
|
||||||
DynamicValue variableMana = ManacostVariableValue.instance;
|
DynamicValue variableMana = ManacostVariableValue.REGULAR;
|
||||||
this.getSpellAbility().addEffect(new SetPowerToughnessAllEffect(variableMana, variableMana, Duration.EndOfTurn, new FilterControlledCreaturePermanent("Creatures you control"), true));
|
this.getSpellAbility().addEffect(new SetPowerToughnessAllEffect(variableMana, variableMana, Duration.EndOfTurn, new FilterControlledCreaturePermanent("Creatures you control"), true));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -46,7 +46,7 @@ public final class BlastZone extends CardImpl {
|
||||||
|
|
||||||
// {X}{X}, {T}: Put X charge counters on Blast Zone.
|
// {X}{X}, {T}: Put X charge counters on Blast Zone.
|
||||||
Ability ability = new SimpleActivatedAbility(new AddCountersSourceEffect(
|
Ability ability = new SimpleActivatedAbility(new AddCountersSourceEffect(
|
||||||
CounterType.CHARGE.createInstance(), ManacostVariableValue.instance, true
|
CounterType.CHARGE.createInstance(), ManacostVariableValue.REGULAR, true
|
||||||
), new ManaCostsImpl("{X}{X}"));
|
), new ManaCostsImpl("{X}{X}"));
|
||||||
ability.addCost(new TapSourceCost());
|
ability.addCost(new TapSourceCost());
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
|
|
|
@ -20,7 +20,7 @@ public final class Blaze extends CardImpl {
|
||||||
|
|
||||||
|
|
||||||
// Blaze deals X damage to any target.
|
// Blaze deals X damage to any target.
|
||||||
this.getSpellAbility().addEffect(new DamageTargetEffect(ManacostVariableValue.instance));
|
this.getSpellAbility().addEffect(new DamageTargetEffect(ManacostVariableValue.REGULAR));
|
||||||
this.getSpellAbility().addTarget(new TargetAnyTarget());
|
this.getSpellAbility().addTarget(new TargetAnyTarget());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -33,7 +33,7 @@ public final class BlotOutTheSky extends CardImpl {
|
||||||
|
|
||||||
// Create X tapped 2/1 white and black Inkling creature tokens with flying. If X is 6 or more, destroy all noncreature, nonland permanents.
|
// Create X tapped 2/1 white and black Inkling creature tokens with flying. If X is 6 or more, destroy all noncreature, nonland permanents.
|
||||||
this.getSpellAbility().addEffect(new CreateTokenEffect(
|
this.getSpellAbility().addEffect(new CreateTokenEffect(
|
||||||
new SilverquillToken(), ManacostVariableValue.instance, true, false
|
new SilverquillToken(), ManacostVariableValue.REGULAR, true, false
|
||||||
));
|
));
|
||||||
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(
|
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(
|
||||||
new DestroyAllEffect(filter), BlotOutTheSkyCondition.instance,
|
new DestroyAllEffect(filter), BlotOutTheSkyCondition.instance,
|
||||||
|
|
|
@ -21,7 +21,7 @@ public final class BlueSunsZenith extends CardImpl {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{X}{U}{U}{U}");
|
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{X}{U}{U}{U}");
|
||||||
|
|
||||||
// Target player draws X cards. Shuffle Blue Sun's Zenith into its owner's library.
|
// Target player draws X cards. Shuffle Blue Sun's Zenith into its owner's library.
|
||||||
this.getSpellAbility().addEffect(new DrawCardTargetEffect(ManacostVariableValue.instance));
|
this.getSpellAbility().addEffect(new DrawCardTargetEffect(ManacostVariableValue.REGULAR));
|
||||||
this.getSpellAbility().addEffect(ShuffleSpellEffect.getInstance());
|
this.getSpellAbility().addEffect(ShuffleSpellEffect.getInstance());
|
||||||
this.getSpellAbility().addTarget(new TargetPlayer());
|
this.getSpellAbility().addTarget(new TargetPlayer());
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,7 +18,7 @@ public final class BondOfAgony extends CardImpl {
|
||||||
public BondOfAgony(UUID ownerId, CardSetInfo setInfo) {
|
public BondOfAgony(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{X}{B}");
|
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{X}{B}");
|
||||||
|
|
||||||
DynamicValue xValue = ManacostVariableValue.instance;
|
DynamicValue xValue = ManacostVariableValue.REGULAR;
|
||||||
|
|
||||||
// As an additional cost to cast Bond of Agony, pay X life.
|
// As an additional cost to cast Bond of Agony, pay X life.
|
||||||
// magenoxx: here we don't use PayVariableLifeCost as {X} shouldn't actually be announced
|
// magenoxx: here we don't use PayVariableLifeCost as {X} shouldn't actually be announced
|
||||||
|
|
|
@ -27,7 +27,7 @@ public final class BorrowingTheEastWind extends CardImpl {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{X}{G}{G}");
|
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{X}{G}{G}");
|
||||||
|
|
||||||
// Borrowing the East Wind deals X damage to each creature with horsemanship and each player.
|
// Borrowing the East Wind deals X damage to each creature with horsemanship and each player.
|
||||||
this.getSpellAbility().addEffect(new DamageEverythingEffect(ManacostVariableValue.instance, filter)); }
|
this.getSpellAbility().addEffect(new DamageEverythingEffect(ManacostVariableValue.REGULAR, filter)); }
|
||||||
|
|
||||||
private BorrowingTheEastWind(final BorrowingTheEastWind card) {
|
private BorrowingTheEastWind(final BorrowingTheEastWind card) {
|
||||||
super(card);
|
super(card);
|
||||||
|
|
|
@ -21,7 +21,7 @@ public final class Braingeyser extends CardImpl {
|
||||||
|
|
||||||
|
|
||||||
// Target player draws X cards.
|
// Target player draws X cards.
|
||||||
this.getSpellAbility().addEffect(new DrawCardTargetEffect(ManacostVariableValue.instance));
|
this.getSpellAbility().addEffect(new DrawCardTargetEffect(ManacostVariableValue.REGULAR));
|
||||||
this.getSpellAbility().addTarget(new TargetPlayer());
|
this.getSpellAbility().addTarget(new TargetPlayer());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,7 +27,7 @@ public final class Brightflame extends CardImpl {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{R}{R}{W}{W}");
|
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{R}{R}{W}{W}");
|
||||||
|
|
||||||
// Radiance - Brightflame deals X damage to target creature and each other creature that shares a color with it. You gain life equal to the damage dealt this way.
|
// Radiance - Brightflame deals X damage to target creature and each other creature that shares a color with it. You gain life equal to the damage dealt this way.
|
||||||
this.getSpellAbility().addEffect(new BrightflameEffect(ManacostVariableValue.instance));
|
this.getSpellAbility().addEffect(new BrightflameEffect(ManacostVariableValue.REGULAR));
|
||||||
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
|
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
|
||||||
this.getSpellAbility().setAbilityWord(AbilityWord.RADIANCE);
|
this.getSpellAbility().setAbilityWord(AbilityWord.RADIANCE);
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,7 +25,7 @@ public final class BrokenAmbitions extends CardImpl {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{X}{U}");
|
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{X}{U}");
|
||||||
|
|
||||||
// Counter target spell unless its controller pays {X}. Clash with an opponent. If you win, that spell's controller puts the top four cards of their library into their graveyard.
|
// Counter target spell unless its controller pays {X}. Clash with an opponent. If you win, that spell's controller puts the top four cards of their library into their graveyard.
|
||||||
this.getSpellAbility().addEffect(new CounterUnlessPaysEffect(ManacostVariableValue.instance));
|
this.getSpellAbility().addEffect(new CounterUnlessPaysEffect(ManacostVariableValue.REGULAR));
|
||||||
this.getSpellAbility().addEffect(new BrokenAmbitionsEffect());
|
this.getSpellAbility().addEffect(new BrokenAmbitionsEffect());
|
||||||
this.getSpellAbility().addTarget(new TargetSpell());
|
this.getSpellAbility().addTarget(new TargetSpell());
|
||||||
}
|
}
|
||||||
|
|
|
@ -78,7 +78,7 @@ class CabalInterrogatorEffect extends OneShotEffect {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
int amountToReveal = (ManacostVariableValue.instance).calculate(game, source, this);
|
int amountToReveal = (ManacostVariableValue.REGULAR).calculate(game, source, this);
|
||||||
|
|
||||||
Cards revealedCards = new CardsImpl();
|
Cards revealedCards = new CardsImpl();
|
||||||
if (amountToReveal > 0 && targetPlayer.getHand().size() > amountToReveal) {
|
if (amountToReveal > 0 && targetPlayer.getHand().size() > amountToReveal) {
|
||||||
|
|
|
@ -33,7 +33,7 @@ public final class CacklingWitch extends CardImpl {
|
||||||
this.toughness = new MageInt(1);
|
this.toughness = new MageInt(1);
|
||||||
|
|
||||||
// {X}{B}, {tap}, Discard a card: Target creature gets +X/+0 until end of turn.
|
// {X}{B}, {tap}, Discard a card: Target creature gets +X/+0 until end of turn.
|
||||||
ManacostVariableValue manaX = ManacostVariableValue.instance;
|
ManacostVariableValue manaX = ManacostVariableValue.REGULAR;
|
||||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
|
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
|
||||||
new BoostTargetEffect(manaX, StaticValue.get(0), Duration.EndOfTurn),
|
new BoostTargetEffect(manaX, StaticValue.get(0), Duration.EndOfTurn),
|
||||||
new ManaCostsImpl("{X}{B}"));
|
new ManaCostsImpl("{X}{B}"));
|
||||||
|
|
|
@ -44,7 +44,7 @@ public final class ChamberSentry extends CardImpl {
|
||||||
"with a +1/+1 counter on it for each color of mana spent to cast it"));
|
"with a +1/+1 counter on it for each color of mana spent to cast it"));
|
||||||
|
|
||||||
// {X}, {T}, Remove X +1/+1 counters from Chamber Sentry: It deals X damage to any target.
|
// {X}, {T}, Remove X +1/+1 counters from Chamber Sentry: It deals X damage to any target.
|
||||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(ManacostVariableValue.instance)
|
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(ManacostVariableValue.REGULAR)
|
||||||
.setText("It deals X damage to any target"),
|
.setText("It deals X damage to any target"),
|
||||||
new ManaCostsImpl("{X}"));
|
new ManaCostsImpl("{X}"));
|
||||||
ability.addCost(new TapSourceCost());
|
ability.addCost(new TapSourceCost());
|
||||||
|
|
|
@ -31,7 +31,7 @@ public final class CinderElemental extends CardImpl {
|
||||||
this.toughness = new MageInt(2);
|
this.toughness = new MageInt(2);
|
||||||
|
|
||||||
// {X}{R}, {tap}, Sacrifice Cinder Elemental: Cinder Elemental deals X damage to any target.
|
// {X}{R}, {tap}, Sacrifice Cinder Elemental: Cinder Elemental deals X damage to any target.
|
||||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(ManacostVariableValue.instance), new ManaCostsImpl("{X}{R}"));
|
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(ManacostVariableValue.REGULAR), new ManaCostsImpl("{X}{R}"));
|
||||||
ability.addCost(new TapSourceCost());
|
ability.addCost(new TapSourceCost());
|
||||||
ability.addCost(new SacrificeSourceCost());
|
ability.addCost(new SacrificeSourceCost());
|
||||||
ability.addTarget(new TargetAnyTarget());
|
ability.addTarget(new TargetAnyTarget());
|
||||||
|
|
|
@ -35,16 +35,16 @@ public final class ClanDefiance extends CardImpl {
|
||||||
this.getSpellAbility().getModes().setMinModes(1);
|
this.getSpellAbility().getModes().setMinModes(1);
|
||||||
this.getSpellAbility().getModes().setMaxModes(3);
|
this.getSpellAbility().getModes().setMaxModes(3);
|
||||||
// Clan Defiance deals X damage to target creature with flying;
|
// Clan Defiance deals X damage to target creature with flying;
|
||||||
this.getSpellAbility().addEffect(new DamageTargetEffect(ManacostVariableValue.instance));
|
this.getSpellAbility().addEffect(new DamageTargetEffect(ManacostVariableValue.REGULAR));
|
||||||
this.getSpellAbility().addTarget(new TargetCreaturePermanent(filterFlying).withChooseHint("deals X damage, with flying"));
|
this.getSpellAbility().addTarget(new TargetCreaturePermanent(filterFlying).withChooseHint("deals X damage, with flying"));
|
||||||
// Clan Defiance deals X damage to target creature without flying;
|
// Clan Defiance deals X damage to target creature without flying;
|
||||||
Mode mode1 = new Mode();
|
Mode mode1 = new Mode();
|
||||||
mode1.addEffect(new DamageTargetEffect(ManacostVariableValue.instance));
|
mode1.addEffect(new DamageTargetEffect(ManacostVariableValue.REGULAR));
|
||||||
mode1.addTarget(new TargetCreaturePermanent(filterWithoutFlying).withChooseHint("deals X damage, without flying"));
|
mode1.addTarget(new TargetCreaturePermanent(filterWithoutFlying).withChooseHint("deals X damage, without flying"));
|
||||||
this.getSpellAbility().addMode(mode1);
|
this.getSpellAbility().addMode(mode1);
|
||||||
// and/or Clan Defiance deals X damage to target player.
|
// and/or Clan Defiance deals X damage to target player.
|
||||||
Mode mode2 = new Mode();
|
Mode mode2 = new Mode();
|
||||||
mode2.addEffect(new DamageTargetEffect(ManacostVariableValue.instance));
|
mode2.addEffect(new DamageTargetEffect(ManacostVariableValue.REGULAR));
|
||||||
mode2.addTarget(new TargetPlayerOrPlaneswalker().withChooseHint("deals X damage"));
|
mode2.addTarget(new TargetPlayerOrPlaneswalker().withChooseHint("deals X damage"));
|
||||||
this.getSpellAbility().addMode(mode2);
|
this.getSpellAbility().addMode(mode2);
|
||||||
|
|
||||||
|
|
|
@ -19,7 +19,7 @@ public final class ClashOfWills extends CardImpl {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{X}{U}");
|
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{X}{U}");
|
||||||
|
|
||||||
// Counter target spell unless its controller pays {X}.
|
// Counter target spell unless its controller pays {X}.
|
||||||
this.getSpellAbility().addEffect(new CounterUnlessPaysEffect(ManacostVariableValue.instance));
|
this.getSpellAbility().addEffect(new CounterUnlessPaysEffect(ManacostVariableValue.REGULAR));
|
||||||
this.getSpellAbility().addTarget(new TargetSpell());
|
this.getSpellAbility().addTarget(new TargetSpell());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -63,7 +63,7 @@ public final class ClockworkAvian extends CardImpl {
|
||||||
Zone.BATTLEFIELD,
|
Zone.BATTLEFIELD,
|
||||||
new AvianAddCountersSourceEffect(
|
new AvianAddCountersSourceEffect(
|
||||||
CounterType.P1P0.createInstance(),
|
CounterType.P1P0.createInstance(),
|
||||||
ManacostVariableValue.instance,
|
ManacostVariableValue.REGULAR,
|
||||||
true, true
|
true, true
|
||||||
),
|
),
|
||||||
new ManaCostsImpl("{X}"),
|
new ManaCostsImpl("{X}"),
|
||||||
|
|
|
@ -59,7 +59,7 @@ public final class ClockworkBeast extends CardImpl {
|
||||||
Zone.BATTLEFIELD,
|
Zone.BATTLEFIELD,
|
||||||
new BeastAddCountersSourceEffect(
|
new BeastAddCountersSourceEffect(
|
||||||
CounterType.P1P0.createInstance(),
|
CounterType.P1P0.createInstance(),
|
||||||
ManacostVariableValue.instance,
|
ManacostVariableValue.REGULAR,
|
||||||
true, true
|
true, true
|
||||||
),
|
),
|
||||||
new ManaCostsImpl("{X}"),
|
new ManaCostsImpl("{X}"),
|
||||||
|
|
|
@ -69,7 +69,7 @@ public final class ClockworkSteed extends CardImpl {
|
||||||
Zone.BATTLEFIELD,
|
Zone.BATTLEFIELD,
|
||||||
new ClockworkSteedAddCountersSourceEffect(
|
new ClockworkSteedAddCountersSourceEffect(
|
||||||
CounterType.P1P0.createInstance(),
|
CounterType.P1P0.createInstance(),
|
||||||
ManacostVariableValue.instance,
|
ManacostVariableValue.REGULAR,
|
||||||
true, true
|
true, true
|
||||||
),
|
),
|
||||||
new ManaCostsImpl("{X}"),
|
new ManaCostsImpl("{X}"),
|
||||||
|
|
|
@ -72,7 +72,7 @@ public final class ClockworkSwarm extends CardImpl {
|
||||||
Zone.BATTLEFIELD,
|
Zone.BATTLEFIELD,
|
||||||
new SwarmAddCountersSourceEffect(
|
new SwarmAddCountersSourceEffect(
|
||||||
CounterType.P1P0.createInstance(),
|
CounterType.P1P0.createInstance(),
|
||||||
ManacostVariableValue.instance,
|
ManacostVariableValue.REGULAR,
|
||||||
true, true
|
true, true
|
||||||
),
|
),
|
||||||
new ManaCostsImpl("{X}"),
|
new ManaCostsImpl("{X}"),
|
||||||
|
|
|
@ -21,7 +21,7 @@ public final class Condescend extends CardImpl {
|
||||||
|
|
||||||
|
|
||||||
// Counter target spell unless its controller pays {X}.
|
// Counter target spell unless its controller pays {X}.
|
||||||
this.getSpellAbility().addEffect(new CounterUnlessPaysEffect(ManacostVariableValue.instance));
|
this.getSpellAbility().addEffect(new CounterUnlessPaysEffect(ManacostVariableValue.REGULAR));
|
||||||
this.getSpellAbility().addTarget(new TargetSpell());
|
this.getSpellAbility().addTarget(new TargetSpell());
|
||||||
// Scry 2.
|
// Scry 2.
|
||||||
this.getSpellAbility().addEffect(new ScryEffect(2));
|
this.getSpellAbility().addEffect(new ScryEffect(2));
|
||||||
|
|
|
@ -38,8 +38,8 @@ public final class ConsumeSpirit extends CardImpl {
|
||||||
|
|
||||||
// Consume Spirit deals X damage to any target and you gain X life.
|
// Consume Spirit deals X damage to any target and you gain X life.
|
||||||
this.getSpellAbility().addTarget(new TargetAnyTarget());
|
this.getSpellAbility().addTarget(new TargetAnyTarget());
|
||||||
this.getSpellAbility().addEffect(new DamageTargetEffect(ManacostVariableValue.instance));
|
this.getSpellAbility().addEffect(new DamageTargetEffect(ManacostVariableValue.REGULAR));
|
||||||
this.getSpellAbility().addEffect(new GainLifeEffect(ManacostVariableValue.instance).concatBy("and"));
|
this.getSpellAbility().addEffect(new GainLifeEffect(ManacostVariableValue.REGULAR).concatBy("and"));
|
||||||
VariableCost variableCost = this.getSpellAbility().getManaCostsToPay().getVariableCosts().get(0);
|
VariableCost variableCost = this.getSpellAbility().getManaCostsToPay().getVariableCosts().get(0);
|
||||||
if (variableCost instanceof VariableManaCost) {
|
if (variableCost instanceof VariableManaCost) {
|
||||||
((VariableManaCost) variableCost).setFilter(filterBlack);
|
((VariableManaCost) variableCost).setFilter(filterBlack);
|
||||||
|
|
|
@ -27,7 +27,7 @@ public final class CorrosiveGale extends CardImpl {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{X}{G/P}");
|
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{X}{G/P}");
|
||||||
|
|
||||||
|
|
||||||
this.getSpellAbility().addEffect(new DamageAllEffect(ManacostVariableValue.instance, filter));
|
this.getSpellAbility().addEffect(new DamageAllEffect(ManacostVariableValue.REGULAR, filter));
|
||||||
}
|
}
|
||||||
|
|
||||||
private CorrosiveGale(final CorrosiveGale card) {
|
private CorrosiveGale(final CorrosiveGale card) {
|
||||||
|
|
|
@ -19,7 +19,7 @@ import java.util.UUID;
|
||||||
*/
|
*/
|
||||||
public final class CrackleWithPower extends CardImpl {
|
public final class CrackleWithPower extends CardImpl {
|
||||||
|
|
||||||
private static final DynamicValue value = new MultipliedValue(ManacostVariableValue.instance, 5);
|
private static final DynamicValue value = new MultipliedValue(ManacostVariableValue.REGULAR, 5);
|
||||||
|
|
||||||
public CrackleWithPower(UUID ownerId, CardSetInfo setInfo) {
|
public CrackleWithPower(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{X}{X}{R}{R}");
|
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{X}{X}{R}{R}");
|
||||||
|
|
|
@ -24,8 +24,8 @@ public final class CratersClaws extends CardImpl {
|
||||||
// Crater's Claws deals X damage to any target.
|
// Crater's Claws deals X damage to any target.
|
||||||
// <i>Ferocious</i> — Crater's Claws deals X plus 2 damage to that creature or player instead if you control a creature with power 4 or greater.
|
// <i>Ferocious</i> — Crater's Claws deals X plus 2 damage to that creature or player instead if you control a creature with power 4 or greater.
|
||||||
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(
|
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(
|
||||||
new DamageTargetEffect(new IntPlusDynamicValue(2, ManacostVariableValue.instance)),
|
new DamageTargetEffect(new IntPlusDynamicValue(2, ManacostVariableValue.REGULAR)),
|
||||||
new DamageTargetEffect(ManacostVariableValue.instance),
|
new DamageTargetEffect(ManacostVariableValue.REGULAR),
|
||||||
FerociousCondition.instance,
|
FerociousCondition.instance,
|
||||||
"{this} deals X damage to any target."
|
"{this} deals X damage to any target."
|
||||||
+ "<br><i>Ferocious</i> — {this} deals X plus 2 damage instead if you control a creature with power 4 or greater"));
|
+ "<br><i>Ferocious</i> — {this} deals X plus 2 damage instead if you control a creature with power 4 or greater"));
|
||||||
|
|
|
@ -43,7 +43,7 @@ public final class CrimsonHellkite extends CardImpl {
|
||||||
// Flying
|
// Flying
|
||||||
this.addAbility(FlyingAbility.getInstance());
|
this.addAbility(FlyingAbility.getInstance());
|
||||||
// {X}, {tap}: Crimson Hellkite deals X damage to target creature. Spend only red mana on X.
|
// {X}, {tap}: Crimson Hellkite deals X damage to target creature. Spend only red mana on X.
|
||||||
Effect effect = new DamageTargetEffect(ManacostVariableValue.instance);
|
Effect effect = new DamageTargetEffect(ManacostVariableValue.REGULAR);
|
||||||
effect.setText("{this} deals X damage to target creature. Spend only red mana on X");
|
effect.setText("{this} deals X damage to target creature. Spend only red mana on X");
|
||||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, effect, new ManaCostsImpl("{X}"));
|
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, effect, new ManaCostsImpl("{X}"));
|
||||||
ability.addCost(new TapSourceCost());
|
ability.addCost(new TapSourceCost());
|
||||||
|
|
|
@ -38,7 +38,7 @@ public final class CryptRats extends CardImpl {
|
||||||
this.toughness = new MageInt(1);
|
this.toughness = new MageInt(1);
|
||||||
|
|
||||||
// {X}: Crypt Rats deals X damage to each creature and each player. Spend only black mana on X.
|
// {X}: Crypt Rats deals X damage to each creature and each player. Spend only black mana on X.
|
||||||
Effect effect = new DamageEverythingEffect(ManacostVariableValue.instance);
|
Effect effect = new DamageEverythingEffect(ManacostVariableValue.REGULAR);
|
||||||
effect.setText("{this} deals X damage to each creature and each player. Spend only black mana on X");
|
effect.setText("{this} deals X damage to each creature and each player. Spend only black mana on X");
|
||||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, effect,new ManaCostsImpl("{X}"));
|
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, effect,new ManaCostsImpl("{X}"));
|
||||||
VariableCost variableCost = ability.getManaCostsToPay().getVariableCosts().get(0);
|
VariableCost variableCost = ability.getManaCostsToPay().getVariableCosts().get(0);
|
||||||
|
|
|
@ -28,7 +28,7 @@ public final class CutRibbons extends SplitCard {
|
||||||
// Ribbons
|
// Ribbons
|
||||||
// Each opponent loses X life.
|
// Each opponent loses X life.
|
||||||
getRightHalfCard().addAbility(new AftermathAbility().setRuleAtTheTop(true));
|
getRightHalfCard().addAbility(new AftermathAbility().setRuleAtTheTop(true));
|
||||||
getRightHalfCard().getSpellAbility().addEffect(new LoseLifeOpponentsEffect(ManacostVariableValue.instance));
|
getRightHalfCard().getSpellAbility().addEffect(new LoseLifeOpponentsEffect(ManacostVariableValue.REGULAR));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -33,7 +33,7 @@ public final class DarkSalvation extends CardImpl {
|
||||||
|
|
||||||
// Target player creates X 2/2 black Zombie creature tokens, then up to one target creature gets -1/-1 until end of turn for each Zombie that player controls.
|
// Target player creates X 2/2 black Zombie creature tokens, then up to one target creature gets -1/-1 until end of turn for each Zombie that player controls.
|
||||||
this.getSpellAbility().addTarget(new TargetPlayer());
|
this.getSpellAbility().addTarget(new TargetPlayer());
|
||||||
Effect effect = new CreateTokenTargetEffect(new ZombieToken(), ManacostVariableValue.instance);
|
Effect effect = new CreateTokenTargetEffect(new ZombieToken(), ManacostVariableValue.REGULAR);
|
||||||
effect.setText("Target player creates X 2/2 black Zombie creature tokens");
|
effect.setText("Target player creates X 2/2 black Zombie creature tokens");
|
||||||
this.getSpellAbility().addEffect(effect);
|
this.getSpellAbility().addEffect(effect);
|
||||||
DynamicValue value = new ZombiesControlledByTargetPlayerCount();
|
DynamicValue value = new ZombiesControlledByTargetPlayerCount();
|
||||||
|
|
|
@ -24,7 +24,7 @@ public final class DawnglowInfusion extends CardImpl {
|
||||||
|
|
||||||
|
|
||||||
// You gain X life if {G} was spent to cast Dawnglow Infusion and X life if {W} was spent to cast it.
|
// You gain X life if {G} was spent to cast Dawnglow Infusion and X life if {W} was spent to cast it.
|
||||||
DynamicValue xValue = ManacostVariableValue.instance;
|
DynamicValue xValue = ManacostVariableValue.REGULAR;
|
||||||
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(
|
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(
|
||||||
new GainLifeEffect(xValue),
|
new GainLifeEffect(xValue),
|
||||||
new ManaWasSpentCondition(ColoredManaSymbol.G), "You gain X life if {G} was spent to cast this spell"));
|
new ManaWasSpentCondition(ColoredManaSymbol.G), "You gain X life if {G} was spent to cast this spell"));
|
||||||
|
|
|
@ -25,7 +25,7 @@ public final class DeathCloud extends CardImpl {
|
||||||
|
|
||||||
|
|
||||||
// Each player loses X life, discards X cards, sacrifices X creatures, then sacrifices X lands.
|
// Each player loses X life, discards X cards, sacrifices X creatures, then sacrifices X lands.
|
||||||
DynamicValue xValue = ManacostVariableValue.instance;
|
DynamicValue xValue = ManacostVariableValue.REGULAR;
|
||||||
this.getSpellAbility().addEffect(new LoseLifeAllPlayersEffect(xValue));
|
this.getSpellAbility().addEffect(new LoseLifeAllPlayersEffect(xValue));
|
||||||
Effect effect = new DiscardEachPlayerEffect(xValue, false);
|
Effect effect = new DiscardEachPlayerEffect(xValue, false);
|
||||||
effect.setText(", discards X cards");
|
effect.setText(", discards X cards");
|
||||||
|
|
|
@ -21,8 +21,8 @@ public final class DeathGrasp extends CardImpl {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{X}{W}{B}");
|
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{X}{W}{B}");
|
||||||
|
|
||||||
|
|
||||||
this.getSpellAbility().addEffect(new DamageTargetEffect(ManacostVariableValue.instance));
|
this.getSpellAbility().addEffect(new DamageTargetEffect(ManacostVariableValue.REGULAR));
|
||||||
this.getSpellAbility().addEffect(new GainLifeEffect(ManacostVariableValue.instance));
|
this.getSpellAbility().addEffect(new GainLifeEffect(ManacostVariableValue.REGULAR));
|
||||||
this.getSpellAbility().addTarget(new TargetAnyTarget());
|
this.getSpellAbility().addTarget(new TargetAnyTarget());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -22,7 +22,7 @@ public final class DeathWind extends CardImpl {
|
||||||
|
|
||||||
|
|
||||||
// Target creature gets -X/-X until end of turn.
|
// Target creature gets -X/-X until end of turn.
|
||||||
DynamicValue x = new SignInversionDynamicValue(ManacostVariableValue.instance);
|
DynamicValue x = new SignInversionDynamicValue(ManacostVariableValue.REGULAR);
|
||||||
this.getSpellAbility().addEffect(new BoostTargetEffect(x, x, Duration.EndOfTurn, true));
|
this.getSpellAbility().addEffect(new BoostTargetEffect(x, x, Duration.EndOfTurn, true));
|
||||||
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
|
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,7 +28,7 @@ public final class DecreeOfJustice extends CardImpl {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{X}{2}{W}{W}");
|
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{X}{2}{W}{W}");
|
||||||
|
|
||||||
// Create X 4/4 white Angel creature tokens with flying.
|
// Create X 4/4 white Angel creature tokens with flying.
|
||||||
this.getSpellAbility().addEffect(new CreateTokenEffect(new AngelToken(), ManacostVariableValue.instance));
|
this.getSpellAbility().addEffect(new CreateTokenEffect(new AngelToken(), ManacostVariableValue.REGULAR));
|
||||||
|
|
||||||
// Cycling {2}{W}
|
// Cycling {2}{W}
|
||||||
this.addAbility(new CyclingAbility(new ManaCostsImpl<>("{2}{W}")));
|
this.addAbility(new CyclingAbility(new ManaCostsImpl<>("{2}{W}")));
|
||||||
|
|
|
@ -31,7 +31,7 @@ public final class Demonfire extends CardImpl {
|
||||||
|
|
||||||
// Demonfire deals X damage to any target.
|
// Demonfire deals X damage to any target.
|
||||||
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(
|
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(
|
||||||
new DamageTargetEffect(ManacostVariableValue.instance),
|
new DamageTargetEffect(ManacostVariableValue.REGULAR),
|
||||||
new InvertCondition(HellbentCondition.instance),
|
new InvertCondition(HellbentCondition.instance),
|
||||||
"{this} deals X damage to any target"));
|
"{this} deals X damage to any target"));
|
||||||
|
|
||||||
|
@ -41,7 +41,7 @@ public final class Demonfire extends CardImpl {
|
||||||
|
|
||||||
// Hellbent - If you have no cards in hand, Demonfire can't be countered and the damage can't be prevented.
|
// Hellbent - If you have no cards in hand, Demonfire can't be countered and the damage can't be prevented.
|
||||||
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(
|
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(
|
||||||
new DamageTargetEffect(ManacostVariableValue.instance, false),
|
new DamageTargetEffect(ManacostVariableValue.REGULAR, false),
|
||||||
HellbentCondition.instance,
|
HellbentCondition.instance,
|
||||||
"<br/><i>Hellbent</i> — If you have no cards in hand, this spell can't be countered and the damage can't be prevented."));
|
"<br/><i>Hellbent</i> — If you have no cards in hand, this spell can't be countered and the damage can't be prevented."));
|
||||||
// can't be countered
|
// can't be countered
|
||||||
|
|
|
@ -29,7 +29,7 @@ public final class Detonate extends CardImpl {
|
||||||
// Destroy target artifact with converted mana cost X. It can't be regenerated. Detonate deals X damage to that artifact's controller.
|
// Destroy target artifact with converted mana cost X. It can't be regenerated. Detonate deals X damage to that artifact's controller.
|
||||||
this.getSpellAbility().addEffect(new DestroyTargetEffect(true));
|
this.getSpellAbility().addEffect(new DestroyTargetEffect(true));
|
||||||
this.getSpellAbility().addTarget(new TargetArtifactPermanent(new FilterArtifactPermanent("artifact with mana value X")));
|
this.getSpellAbility().addTarget(new TargetArtifactPermanent(new FilterArtifactPermanent("artifact with mana value X")));
|
||||||
Effect effect = new DamageTargetControllerEffect(ManacostVariableValue.instance);
|
Effect effect = new DamageTargetControllerEffect(ManacostVariableValue.REGULAR);
|
||||||
effect.setText("{this} deals X damage to that artifact's controller");
|
effect.setText("{this} deals X damage to that artifact's controller");
|
||||||
this.getSpellAbility().addEffect(effect);
|
this.getSpellAbility().addEffect(effect);
|
||||||
this.getSpellAbility().setTargetAdjuster(DetonateAdjuster.instance);
|
this.getSpellAbility().setTargetAdjuster(DetonateAdjuster.instance);
|
||||||
|
|
|
@ -23,7 +23,7 @@ public final class DevilsPlay extends CardImpl {
|
||||||
|
|
||||||
|
|
||||||
// Devil's Play deals X damage to any target.
|
// Devil's Play deals X damage to any target.
|
||||||
this.getSpellAbility().addEffect(new DamageTargetEffect(ManacostVariableValue.instance));
|
this.getSpellAbility().addEffect(new DamageTargetEffect(ManacostVariableValue.REGULAR));
|
||||||
this.getSpellAbility().addTarget(new TargetAnyTarget());
|
this.getSpellAbility().addTarget(new TargetAnyTarget());
|
||||||
// Flashback {X}{R}{R}{R}
|
// Flashback {X}{R}{R}{R}
|
||||||
this.addAbility(new FlashbackAbility(new ManaCostsImpl("{X}{R}{R}{R}"), TimingRule.SORCERY));
|
this.addAbility(new FlashbackAbility(new ManaCostsImpl("{X}{R}{R}{R}"), TimingRule.SORCERY));
|
||||||
|
|
|
@ -23,7 +23,7 @@ public final class Disintegrate extends CardImpl {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{R}");
|
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{R}");
|
||||||
|
|
||||||
// Disintegrate deals X damage to any target. That creature can't be regenerated this turn. If the creature would die this turn, exile it instead.
|
// Disintegrate deals X damage to any target. That creature can't be regenerated this turn. If the creature would die this turn, exile it instead.
|
||||||
this.getSpellAbility().addEffect(new DamageTargetEffect(ManacostVariableValue.instance));
|
this.getSpellAbility().addEffect(new DamageTargetEffect(ManacostVariableValue.REGULAR));
|
||||||
this.getSpellAbility().addEffect(new CantRegenerateTargetEffect(Duration.EndOfTurn, "That creature"));
|
this.getSpellAbility().addEffect(new CantRegenerateTargetEffect(Duration.EndOfTurn, "That creature"));
|
||||||
Effect effect = new ExileTargetIfDiesEffect();
|
Effect effect = new ExileTargetIfDiesEffect();
|
||||||
effect.setText("If the creature would die this turn, exile it instead");
|
effect.setText("If the creature would die this turn, exile it instead");
|
||||||
|
|
|
@ -37,8 +37,8 @@ public final class DranaKalastriaBloodchief extends CardImpl {
|
||||||
this.toughness = new MageInt(4);
|
this.toughness = new MageInt(4);
|
||||||
|
|
||||||
this.addAbility(FlyingAbility.getInstance());
|
this.addAbility(FlyingAbility.getInstance());
|
||||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostTargetEffect(StaticValue.get(0), new SignInversionDynamicValue(ManacostVariableValue.instance), Duration.EndOfTurn), new ManaCostsImpl("{X}{B}{B}"));
|
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostTargetEffect(StaticValue.get(0), new SignInversionDynamicValue(ManacostVariableValue.REGULAR), Duration.EndOfTurn), new ManaCostsImpl("{X}{B}{B}"));
|
||||||
ability.addEffect(new BoostSourceEffect(ManacostVariableValue.instance, StaticValue.get(0), Duration.EndOfTurn));
|
ability.addEffect(new BoostSourceEffect(ManacostVariableValue.REGULAR, StaticValue.get(0), Duration.EndOfTurn));
|
||||||
ability.addTarget(new TargetCreaturePermanent());
|
ability.addTarget(new TargetCreaturePermanent());
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,7 +28,7 @@ public final class DregsOfSorrow extends CardImpl {
|
||||||
|
|
||||||
// Destroy X target nonblack creatures. Draw X cards.
|
// Destroy X target nonblack creatures. Draw X cards.
|
||||||
this.getSpellAbility().addEffect(new DestroyTargetEffect("Destroy X target nonblack creatures"));
|
this.getSpellAbility().addEffect(new DestroyTargetEffect("Destroy X target nonblack creatures"));
|
||||||
this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(ManacostVariableValue.instance));
|
this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(ManacostVariableValue.REGULAR));
|
||||||
this.getSpellAbility().setTargetAdjuster(DregsOfSorrowAdjuster.instance);
|
this.getSpellAbility().setTargetAdjuster(DregsOfSorrowAdjuster.instance);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -29,7 +29,7 @@ public final class Earthquake extends CardImpl {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{X}{R}");
|
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{X}{R}");
|
||||||
|
|
||||||
// Hurricane deals X damage to each creature with flying and each player.
|
// Hurricane deals X damage to each creature with flying and each player.
|
||||||
this.getSpellAbility().addEffect(new DamageEverythingEffect(ManacostVariableValue.instance, filter));
|
this.getSpellAbility().addEffect(new DamageEverythingEffect(ManacostVariableValue.REGULAR, filter));
|
||||||
}
|
}
|
||||||
|
|
||||||
private Earthquake(final Earthquake card) {
|
private Earthquake(final Earthquake card) {
|
||||||
|
|
|
@ -19,9 +19,9 @@ public final class Electrodominance extends CardImpl {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{X}{R}{R}");
|
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{X}{R}{R}");
|
||||||
|
|
||||||
// Electrodominance deals X damage to any target. You may cast a card with converted mana cost X or less from your hand without paying its mana cost.
|
// Electrodominance deals X damage to any target. You may cast a card with converted mana cost X or less from your hand without paying its mana cost.
|
||||||
this.getSpellAbility().addEffect(new DamageTargetEffect(ManacostVariableValue.instance));
|
this.getSpellAbility().addEffect(new DamageTargetEffect(ManacostVariableValue.REGULAR));
|
||||||
this.getSpellAbility().addTarget(new TargetAnyTarget());
|
this.getSpellAbility().addTarget(new TargetAnyTarget());
|
||||||
this.getSpellAbility().addEffect(new CastWithoutPayingManaCostEffect(ManacostVariableValue.instance));
|
this.getSpellAbility().addEffect(new CastWithoutPayingManaCostEffect(ManacostVariableValue.REGULAR));
|
||||||
}
|
}
|
||||||
|
|
||||||
private Electrodominance(final Electrodominance card) {
|
private Electrodominance(final Electrodominance card) {
|
||||||
|
|
|
@ -24,7 +24,7 @@ public final class EmptyThePits extends CardImpl {
|
||||||
this.addAbility(new DelveAbility());
|
this.addAbility(new DelveAbility());
|
||||||
|
|
||||||
// create X 2/2 black Zombie creature tokens tapped.
|
// create X 2/2 black Zombie creature tokens tapped.
|
||||||
this.getSpellAbility().addEffect(new CreateTokenEffect(new ZombieToken(), ManacostVariableValue.instance, true, false));
|
this.getSpellAbility().addEffect(new CreateTokenEffect(new ZombieToken(), ManacostVariableValue.REGULAR, true, false));
|
||||||
}
|
}
|
||||||
|
|
||||||
private EmptyThePits(final EmptyThePits card) {
|
private EmptyThePits(final EmptyThePits card) {
|
||||||
|
|
|
@ -22,10 +22,10 @@ public final class EnergyBolt extends CardImpl {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{R}{W}");
|
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{R}{W}");
|
||||||
|
|
||||||
// Choose one - Energy Bolt deals X damage to target player; or target player gains X life.
|
// Choose one - Energy Bolt deals X damage to target player; or target player gains X life.
|
||||||
this.getSpellAbility().addEffect(new DamageTargetEffect(ManacostVariableValue.instance));
|
this.getSpellAbility().addEffect(new DamageTargetEffect(ManacostVariableValue.REGULAR));
|
||||||
this.getSpellAbility().addTarget(new TargetPlayerOrPlaneswalker());
|
this.getSpellAbility().addTarget(new TargetPlayerOrPlaneswalker());
|
||||||
Mode mode = new Mode();
|
Mode mode = new Mode();
|
||||||
mode.addEffect(new GainLifeTargetEffect(ManacostVariableValue.instance));
|
mode.addEffect(new GainLifeTargetEffect(ManacostVariableValue.REGULAR));
|
||||||
mode.addTarget(new TargetPlayer());
|
mode.addTarget(new TargetPlayer());
|
||||||
this.getSpellAbility().addMode(mode);
|
this.getSpellAbility().addMode(mode);
|
||||||
}
|
}
|
||||||
|
|
|
@ -56,7 +56,7 @@ public final class EnergyVortex extends CardImpl {
|
||||||
Zone.BATTLEFIELD,
|
Zone.BATTLEFIELD,
|
||||||
new AddCountersSourceEffect(
|
new AddCountersSourceEffect(
|
||||||
CounterType.VORTEX.createInstance(),
|
CounterType.VORTEX.createInstance(),
|
||||||
ManacostVariableValue.instance, true
|
ManacostVariableValue.REGULAR, true
|
||||||
), new ManaCostsImpl("{X}"),
|
), new ManaCostsImpl("{X}"),
|
||||||
new IsStepCondition(PhaseStep.UPKEEP)
|
new IsStepCondition(PhaseStep.UPKEEP)
|
||||||
));
|
));
|
||||||
|
|
|
@ -22,7 +22,7 @@ public final class Enrage extends CardImpl {
|
||||||
|
|
||||||
|
|
||||||
// Target creature gets +X/+0 until end of turn.
|
// Target creature gets +X/+0 until end of turn.
|
||||||
this.getSpellAbility().addEffect(new BoostTargetEffect(ManacostVariableValue.instance, StaticValue.get(0), Duration.EndOfTurn));
|
this.getSpellAbility().addEffect(new BoostTargetEffect(ManacostVariableValue.REGULAR, StaticValue.get(0), Duration.EndOfTurn));
|
||||||
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
|
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -19,7 +19,7 @@ public final class EnshrinedMemories extends CardImpl {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{G}");
|
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{G}");
|
||||||
|
|
||||||
// Reveal the top X cards of your library. Put all creature cards revealed this way into your hand and the rest on the bottom of your library in any order.
|
// Reveal the top X cards of your library. Put all creature cards revealed this way into your hand and the rest on the bottom of your library in any order.
|
||||||
this.getSpellAbility().addEffect(new RevealLibraryPutIntoHandEffect(ManacostVariableValue.instance, StaticFilters.FILTER_CARD_CREATURE, Zone.LIBRARY, true));
|
this.getSpellAbility().addEffect(new RevealLibraryPutIntoHandEffect(ManacostVariableValue.REGULAR, StaticFilters.FILTER_CARD_CREATURE, Zone.LIBRARY, true));
|
||||||
}
|
}
|
||||||
|
|
||||||
private EnshrinedMemories(final EnshrinedMemories card) {
|
private EnshrinedMemories(final EnshrinedMemories card) {
|
||||||
|
|
|
@ -22,7 +22,7 @@ public final class EntreatTheAngels extends CardImpl {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{X}{W}{W}{W}");
|
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{X}{W}{W}{W}");
|
||||||
|
|
||||||
// Create X 4/4 white Angel creature tokens with flying.
|
// Create X 4/4 white Angel creature tokens with flying.
|
||||||
this.getSpellAbility().addEffect(new CreateTokenEffect(new AngelToken(), ManacostVariableValue.instance));
|
this.getSpellAbility().addEffect(new CreateTokenEffect(new AngelToken(), ManacostVariableValue.REGULAR));
|
||||||
|
|
||||||
// Miracle {X}{W}{W}
|
// Miracle {X}{W}{W}
|
||||||
this.addAbility(new MiracleAbility(this, new ManaCostsImpl("{X}{W}{W}")));
|
this.addAbility(new MiracleAbility(this, new ManaCostsImpl("{X}{W}{W}")));
|
||||||
|
|
|
@ -30,9 +30,9 @@ public final class ErebossIntervention extends CardImpl {
|
||||||
|
|
||||||
// Choose one —
|
// Choose one —
|
||||||
// • Target creature gets -X/-X until end of turn. You gain X life.
|
// • Target creature gets -X/-X until end of turn. You gain X life.
|
||||||
DynamicValue x = new SignInversionDynamicValue(ManacostVariableValue.instance);
|
DynamicValue x = new SignInversionDynamicValue(ManacostVariableValue.REGULAR);
|
||||||
this.getSpellAbility().addEffect(new BoostTargetEffect(x,x,Duration.EndOfTurn));
|
this.getSpellAbility().addEffect(new BoostTargetEffect(x,x,Duration.EndOfTurn));
|
||||||
this.getSpellAbility().addEffect(new GainLifeEffect(ManacostVariableValue.instance)
|
this.getSpellAbility().addEffect(new GainLifeEffect(ManacostVariableValue.REGULAR)
|
||||||
.setText("You gain X life"));
|
.setText("You gain X life"));
|
||||||
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
|
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
|
||||||
|
|
||||||
|
|
|
@ -28,7 +28,7 @@ public final class Excise extends CardImpl {
|
||||||
|
|
||||||
// Excise target nonwhite attacking creature unless its controller pays {X}.
|
// Excise target nonwhite attacking creature unless its controller pays {X}.
|
||||||
this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter));
|
this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter));
|
||||||
this.getSpellAbility().addEffect(new DoUnlessTargetPlayerOrTargetsControllerPaysEffect(new ExileTargetEffect(), ManacostVariableValue.instance));
|
this.getSpellAbility().addEffect(new DoUnlessTargetPlayerOrTargetsControllerPaysEffect(new ExileTargetEffect(), ManacostVariableValue.REGULAR));
|
||||||
}
|
}
|
||||||
|
|
||||||
private Excise(final Excise card) {
|
private Excise(final Excise card) {
|
||||||
|
|
|
@ -21,7 +21,7 @@ public final class FallOfTheTitans extends CardImpl {
|
||||||
|
|
||||||
// Fall of the Titans deals X damage to each of up to two target creatures and/or players.
|
// Fall of the Titans deals X damage to each of up to two target creatures and/or players.
|
||||||
this.getSpellAbility().addTarget(new TargetAnyTarget(0, 2));
|
this.getSpellAbility().addTarget(new TargetAnyTarget(0, 2));
|
||||||
this.getSpellAbility().addEffect(new DamageTargetEffect(ManacostVariableValue.instance));
|
this.getSpellAbility().addEffect(new DamageTargetEffect(ManacostVariableValue.REGULAR));
|
||||||
|
|
||||||
// Surge {X}{R}
|
// Surge {X}{R}
|
||||||
addAbility(new SurgeAbility(this, "{X}{R}"));
|
addAbility(new SurgeAbility(this, "{X}{R}"));
|
||||||
|
|
|
@ -23,7 +23,7 @@ public final class FanningTheFlames extends CardImpl {
|
||||||
this.addAbility(new BuybackAbility("{3}"));
|
this.addAbility(new BuybackAbility("{3}"));
|
||||||
|
|
||||||
// Fanning the Flames deals X damage to any target.
|
// Fanning the Flames deals X damage to any target.
|
||||||
this.getSpellAbility().addEffect(new DamageTargetEffect(ManacostVariableValue.instance));
|
this.getSpellAbility().addEffect(new DamageTargetEffect(ManacostVariableValue.REGULAR));
|
||||||
this.getSpellAbility().addTarget(new TargetAnyTarget());
|
this.getSpellAbility().addTarget(new TargetAnyTarget());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -22,11 +22,11 @@ public final class Fascination extends CardImpl {
|
||||||
|
|
||||||
// Choose one -
|
// Choose one -
|
||||||
// * Each player draws X cards.
|
// * Each player draws X cards.
|
||||||
this.getSpellAbility().addEffect(new DrawCardAllEffect(ManacostVariableValue.instance));
|
this.getSpellAbility().addEffect(new DrawCardAllEffect(ManacostVariableValue.REGULAR));
|
||||||
|
|
||||||
// * Each player puts the top X cards of their library into their graveyard.
|
// * Each player puts the top X cards of their library into their graveyard.
|
||||||
Mode mode = new Mode();
|
Mode mode = new Mode();
|
||||||
mode.addEffect(new MillCardsEachPlayerEffect(ManacostVariableValue.instance, TargetController.ANY));
|
mode.addEffect(new MillCardsEachPlayerEffect(ManacostVariableValue.REGULAR, TargetController.ANY));
|
||||||
this.getSpellAbility().addMode(mode);
|
this.getSpellAbility().addMode(mode);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -20,7 +20,7 @@ public final class FestivalOfTheGuildpact extends CardImpl {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{X}{W}");
|
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{X}{W}");
|
||||||
|
|
||||||
// Prevent the next X damage that would be dealt to you this turn.
|
// Prevent the next X damage that would be dealt to you this turn.
|
||||||
this.getSpellAbility().addEffect(new PreventDamageToControllerEffect(Duration.EndOfTurn, false, true, ManacostVariableValue.instance));
|
this.getSpellAbility().addEffect(new PreventDamageToControllerEffect(Duration.EndOfTurn, false, true, ManacostVariableValue.REGULAR));
|
||||||
|
|
||||||
// Draw a card.
|
// Draw a card.
|
||||||
this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1));
|
this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1));
|
||||||
|
|
|
@ -66,7 +66,7 @@ enum FinaleOfPromiseAdjuster implements TargetAdjuster {
|
||||||
public void adjustTargets(Ability ability, Game game) {
|
public void adjustTargets(Ability ability, Game game) {
|
||||||
ability.getTargets().clear();
|
ability.getTargets().clear();
|
||||||
|
|
||||||
int xValue = ManacostVariableValue.instance.calculate(game, ability, null);
|
int xValue = ManacostVariableValue.REGULAR.calculate(game, ability, null);
|
||||||
|
|
||||||
// <= must be replaced to <= for html view
|
// <= must be replaced to <= for html view
|
||||||
FilterCard filter1 = FinaleOfPromise.filterInstant.copy();
|
FilterCard filter1 = FinaleOfPromise.filterInstant.copy();
|
||||||
|
@ -146,7 +146,7 @@ class FinaleOfPromiseEffect extends OneShotEffect {
|
||||||
}
|
}
|
||||||
|
|
||||||
// If X is 10 or more, copy each of those spells twice. You may choose new targets for the copies
|
// If X is 10 or more, copy each of those spells twice. You may choose new targets for the copies
|
||||||
int xValue = ManacostVariableValue.instance.calculate(game, source, null);
|
int xValue = ManacostVariableValue.REGULAR.calculate(game, source, null);
|
||||||
if (xValue >= 10) {
|
if (xValue >= 10) {
|
||||||
for (UUID id : cardsToCast) {
|
for (UUID id : cardsToCast) {
|
||||||
Card card = game.getCard(id);
|
Card card = game.getCard(id);
|
||||||
|
|
|
@ -20,8 +20,8 @@ public final class FlowstoneSlide extends CardImpl {
|
||||||
public FlowstoneSlide(UUID ownerId, CardSetInfo setInfo) {
|
public FlowstoneSlide(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{X}{2}{R}{R}");
|
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{X}{2}{R}{R}");
|
||||||
|
|
||||||
DynamicValue xPos = ManacostVariableValue.instance;
|
DynamicValue xPos = ManacostVariableValue.REGULAR;
|
||||||
DynamicValue xNeg = new SignInversionDynamicValue(ManacostVariableValue.instance);
|
DynamicValue xNeg = new SignInversionDynamicValue(ManacostVariableValue.REGULAR);
|
||||||
|
|
||||||
// All creatures get +X/-X until end of turn.
|
// All creatures get +X/-X until end of turn.
|
||||||
this.getSpellAbility().addEffect(new BoostAllEffect(xPos, xNeg, Duration.EndOfTurn));
|
this.getSpellAbility().addEffect(new BoostAllEffect(xPos, xNeg, Duration.EndOfTurn));
|
||||||
|
|
|
@ -36,7 +36,7 @@ public final class FolioOfFancies extends CardImpl {
|
||||||
|
|
||||||
// {X}{X}, {T}: Each player draws X cards.
|
// {X}{X}, {T}: Each player draws X cards.
|
||||||
Ability ability = new SimpleActivatedAbility(
|
Ability ability = new SimpleActivatedAbility(
|
||||||
new DrawCardAllEffect(ManacostVariableValue.instance), new ManaCostsImpl("{X}{X}")
|
new DrawCardAllEffect(ManacostVariableValue.REGULAR), new ManaCostsImpl("{X}{X}")
|
||||||
);
|
);
|
||||||
ability.addCost(new TapSourceCost());
|
ability.addCost(new TapSourceCost());
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
|
|
|
@ -24,7 +24,7 @@ public final class ForceLightning extends CardImpl {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{R}{R}");
|
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{R}{R}");
|
||||||
|
|
||||||
// Force Lightning deals X damage to any target.
|
// Force Lightning deals X damage to any target.
|
||||||
this.getSpellAbility().addEffect(new DamageTargetEffect(ManacostVariableValue.instance));
|
this.getSpellAbility().addEffect(new DamageTargetEffect(ManacostVariableValue.REGULAR));
|
||||||
this.getSpellAbility().addTarget(new TargetAnyTarget());
|
this.getSpellAbility().addTarget(new TargetAnyTarget());
|
||||||
|
|
||||||
// Scry X.
|
// Scry X.
|
||||||
|
|
|
@ -73,7 +73,7 @@ class FractalHarnessTokenEffect extends OneShotEffect {
|
||||||
public boolean apply(Game game, Ability source) {
|
public boolean apply(Game game, Ability source) {
|
||||||
Token token = new QuandrixToken();
|
Token token = new QuandrixToken();
|
||||||
token.putOntoBattlefield(1, game, source, source.getControllerId());
|
token.putOntoBattlefield(1, game, source, source.getControllerId());
|
||||||
int xValue = ManacostVariableValue.instance.calculate(game, source, this);
|
int xValue = ManacostVariableValue.ETB.calculate(game, source, this);
|
||||||
boolean flag = true;
|
boolean flag = true;
|
||||||
for (UUID tokenId : token.getLastAddedTokenIds()) {
|
for (UUID tokenId : token.getLastAddedTokenIds()) {
|
||||||
Permanent permanent = game.getPermanent(tokenId);
|
Permanent permanent = game.getPermanent(tokenId);
|
||||||
|
|
|
@ -21,7 +21,7 @@ public final class FractalSummoning extends CardImpl {
|
||||||
|
|
||||||
// Create a 0/0 green and blue Fractal creature token. Put X +1/+1 counters on it.
|
// Create a 0/0 green and blue Fractal creature token. Put X +1/+1 counters on it.
|
||||||
this.getSpellAbility().addEffect(QuandrixToken.getEffect(
|
this.getSpellAbility().addEffect(QuandrixToken.getEffect(
|
||||||
ManacostVariableValue.instance, "Put X +1/+1 counters on it"
|
ManacostVariableValue.REGULAR, "Put X +1/+1 counters on it"
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -48,7 +48,7 @@ public final class GadwickTheWizened extends CardImpl {
|
||||||
|
|
||||||
// When Gadwick, the Wizened enters the battlefield, draw X cards.
|
// When Gadwick, the Wizened enters the battlefield, draw X cards.
|
||||||
this.addAbility(new EntersBattlefieldTriggeredAbility(
|
this.addAbility(new EntersBattlefieldTriggeredAbility(
|
||||||
new DrawCardSourceControllerEffect(ManacostVariableValue.instance)
|
new DrawCardSourceControllerEffect(ManacostVariableValue.ETB)
|
||||||
));
|
));
|
||||||
|
|
||||||
// Whenever you cast a blue spell, tap target nonland permanent an opponent controls.
|
// Whenever you cast a blue spell, tap target nonland permanent an opponent controls.
|
||||||
|
|
|
@ -31,7 +31,7 @@ public final class GhiredsBelligerence extends CardImpl {
|
||||||
|
|
||||||
// Ghired's Belligerence deals X damage divided as you choose among any number of target creatures. Whenever a creature dealt damage this way dies this turn, populate.
|
// Ghired's Belligerence deals X damage divided as you choose among any number of target creatures. Whenever a creature dealt damage this way dies this turn, populate.
|
||||||
this.getSpellAbility().addEffect(new GhiredsBelligerenceEffect());
|
this.getSpellAbility().addEffect(new GhiredsBelligerenceEffect());
|
||||||
this.getSpellAbility().addTarget(new TargetCreaturePermanentAmount(ManacostVariableValue.instance));
|
this.getSpellAbility().addTarget(new TargetCreaturePermanentAmount(ManacostVariableValue.REGULAR));
|
||||||
}
|
}
|
||||||
|
|
||||||
private GhiredsBelligerence(final GhiredsBelligerence card) {
|
private GhiredsBelligerence(final GhiredsBelligerence card) {
|
||||||
|
@ -46,7 +46,7 @@ public final class GhiredsBelligerence extends CardImpl {
|
||||||
|
|
||||||
class GhiredsBelligerenceEffect extends OneShotEffect {
|
class GhiredsBelligerenceEffect extends OneShotEffect {
|
||||||
|
|
||||||
private static final DamageMultiEffect effect = new DamageMultiEffect(ManacostVariableValue.instance);
|
private static final DamageMultiEffect effect = new DamageMultiEffect(ManacostVariableValue.REGULAR);
|
||||||
|
|
||||||
GhiredsBelligerenceEffect() {
|
GhiredsBelligerenceEffect() {
|
||||||
super(Outcome.Benefit);
|
super(Outcome.Benefit);
|
||||||
|
|
|
@ -23,7 +23,7 @@ public final class GhituFire extends CardImpl {
|
||||||
public GhituFire(UUID ownerId, CardSetInfo setInfo) {
|
public GhituFire(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{R}");
|
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{R}");
|
||||||
|
|
||||||
Effect effect = new DamageTargetEffect(ManacostVariableValue.instance);
|
Effect effect = new DamageTargetEffect(ManacostVariableValue.REGULAR);
|
||||||
// You may cast Ghitu Fire as though it had flash if you pay {2} more to cast it.
|
// You may cast Ghitu Fire as though it had flash if you pay {2} more to cast it.
|
||||||
Ability ability = new PayMoreToCastAsThoughtItHadFlashAbility(this, new ManaCostsImpl("{2}"));
|
Ability ability = new PayMoreToCastAsThoughtItHadFlashAbility(this, new ManaCostsImpl("{2}"));
|
||||||
ability.addEffect(effect);
|
ability.addEffect(effect);
|
||||||
|
|
|
@ -22,7 +22,6 @@ import mage.constants.SubLayer;
|
||||||
import mage.constants.Zone;
|
import mage.constants.Zone;
|
||||||
import mage.filter.StaticFilters;
|
import mage.filter.StaticFilters;
|
||||||
import mage.game.Game;
|
import mage.game.Game;
|
||||||
import mage.game.permanent.Permanent;
|
|
||||||
import mage.util.functions.CopyApplier;
|
import mage.util.functions.CopyApplier;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -57,7 +56,7 @@ class GigantoplasmCopyApplier extends CopyApplier {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean apply(Game game, MageObject blueprint, Ability source, UUID copyToObjectId) {
|
public boolean apply(Game game, MageObject blueprint, Ability source, UUID copyToObjectId) {
|
||||||
DynamicValue variableMana = ManacostVariableValue.instance;
|
DynamicValue variableMana = ManacostVariableValue.REGULAR;
|
||||||
Effect effect = new SetPowerToughnessSourceEffect(variableMana, Duration.WhileOnBattlefield, SubLayer.SetPT_7b);
|
Effect effect = new SetPowerToughnessSourceEffect(variableMana, Duration.WhileOnBattlefield, SubLayer.SetPT_7b);
|
||||||
effect.setText("This creature has base power and toughness X/X");
|
effect.setText("This creature has base power and toughness X/X");
|
||||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, effect, new ManaCostsImpl("{X}"));
|
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, effect, new ManaCostsImpl("{X}"));
|
||||||
|
|
|
@ -35,7 +35,7 @@ public final class GoblinDynamo extends CardImpl {
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
|
|
||||||
//{X}{R}, {T}, Sacrifice Goblin Dynamo: Goblin Dynamo deals X damage to any target.
|
//{X}{R}, {T}, Sacrifice Goblin Dynamo: Goblin Dynamo deals X damage to any target.
|
||||||
ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,new DamageTargetEffect(ManacostVariableValue.instance), new ManaCostsImpl("{X}{R}"));
|
ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,new DamageTargetEffect(ManacostVariableValue.REGULAR), new ManaCostsImpl("{X}{R}"));
|
||||||
ability.addCost(new TapSourceCost());
|
ability.addCost(new TapSourceCost());
|
||||||
ability.addTarget(new TargetAnyTarget());
|
ability.addTarget(new TargetAnyTarget());
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
|
|
|
@ -19,7 +19,7 @@ public final class GoblinOffensive extends CardImpl {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{X}{1}{R}{R}");
|
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{X}{1}{R}{R}");
|
||||||
|
|
||||||
// create X 1/1 red Goblin creature tokens.
|
// create X 1/1 red Goblin creature tokens.
|
||||||
this.getSpellAbility().addEffect(new CreateTokenEffect(new GoblinToken(), ManacostVariableValue.instance));
|
this.getSpellAbility().addEffect(new CreateTokenEffect(new GoblinToken(), ManacostVariableValue.REGULAR));
|
||||||
}
|
}
|
||||||
|
|
||||||
private GoblinOffensive(final GoblinOffensive card) {
|
private GoblinOffensive(final GoblinOffensive card) {
|
||||||
|
|
|
@ -37,7 +37,7 @@ public final class GreelMindRaker extends CardImpl {
|
||||||
|
|
||||||
// {X}{B}, {tap}, Discard two cards: Target player discards X cards at random.
|
// {X}{B}, {tap}, Discard two cards: Target player discards X cards at random.
|
||||||
Ability ability = new SimpleActivatedAbility(new DiscardTargetEffect(
|
Ability ability = new SimpleActivatedAbility(new DiscardTargetEffect(
|
||||||
ManacostVariableValue.instance, true
|
ManacostVariableValue.REGULAR, true
|
||||||
), new ManaCostsImpl("{X}{B}"));
|
), new ManaCostsImpl("{X}{B}"));
|
||||||
ability.addCost(new TapSourceCost());
|
ability.addCost(new TapSourceCost());
|
||||||
ability.addCost(new DiscardTargetCost(new TargetCardInHand(2, filter)));
|
ability.addCost(new DiscardTargetCost(new TargetCardInHand(2, filter)));
|
||||||
|
|
|
@ -20,8 +20,8 @@ public final class HailOfArrows extends CardImpl {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{X}{W}");
|
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{X}{W}");
|
||||||
|
|
||||||
// Hail of Arrows deals X damage divided as you choose among any number of target attacking creatures.
|
// Hail of Arrows deals X damage divided as you choose among any number of target attacking creatures.
|
||||||
this.getSpellAbility().addEffect(new DamageMultiEffect(ManacostVariableValue.instance));
|
this.getSpellAbility().addEffect(new DamageMultiEffect(ManacostVariableValue.REGULAR));
|
||||||
this.getSpellAbility().addTarget(new TargetCreaturePermanentAmount(ManacostVariableValue.instance, new FilterAttackingCreature()));
|
this.getSpellAbility().addTarget(new TargetCreaturePermanentAmount(ManacostVariableValue.REGULAR, new FilterAttackingCreature()));
|
||||||
}
|
}
|
||||||
|
|
||||||
private HailOfArrows(final HailOfArrows card) {
|
private HailOfArrows(final HailOfArrows card) {
|
||||||
|
|
|
@ -19,7 +19,7 @@ public final class HeatRay extends CardImpl {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{X}{R}");
|
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{X}{R}");
|
||||||
|
|
||||||
|
|
||||||
this.getSpellAbility().addEffect(new DamageTargetEffect(ManacostVariableValue.instance));
|
this.getSpellAbility().addEffect(new DamageTargetEffect(ManacostVariableValue.REGULAR));
|
||||||
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
|
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -32,13 +32,13 @@ public final class HeavenEarth extends SplitCard {
|
||||||
|
|
||||||
// Falling
|
// Falling
|
||||||
// Falling deals X damage to each creature with flying.
|
// Falling deals X damage to each creature with flying.
|
||||||
getLeftHalfCard().getSpellAbility().addEffect(new DamageAllEffect(ManacostVariableValue.instance, filterFlying));
|
getLeftHalfCard().getSpellAbility().addEffect(new DamageAllEffect(ManacostVariableValue.REGULAR, filterFlying));
|
||||||
|
|
||||||
// to
|
// to
|
||||||
// Earth
|
// Earth
|
||||||
// Earth deals X damage to each creature without flying.
|
// Earth deals X damage to each creature without flying.
|
||||||
getRightHalfCard().addAbility(new AftermathAbility().setRuleAtTheTop(true));
|
getRightHalfCard().addAbility(new AftermathAbility().setRuleAtTheTop(true));
|
||||||
getRightHalfCard().getSpellAbility().addEffect(new DamageAllEffect(ManacostVariableValue.instance, filterWithouFlying));
|
getRightHalfCard().getSpellAbility().addEffect(new DamageAllEffect(ManacostVariableValue.REGULAR, filterWithouFlying));
|
||||||
}
|
}
|
||||||
|
|
||||||
private HeavenEarth(final HeavenEarth card) {
|
private HeavenEarth(final HeavenEarth card) {
|
||||||
|
|
|
@ -23,7 +23,7 @@ import java.util.UUID;
|
||||||
*/
|
*/
|
||||||
public final class HeliodsIntervention extends CardImpl {
|
public final class HeliodsIntervention extends CardImpl {
|
||||||
|
|
||||||
private static final DynamicValue xValue = new MultipliedValue(ManacostVariableValue.instance, 2);
|
private static final DynamicValue xValue = new MultipliedValue(ManacostVariableValue.REGULAR, 2);
|
||||||
|
|
||||||
public HeliodsIntervention(UUID ownerId, CardSetInfo setInfo) {
|
public HeliodsIntervention(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{X}{W}{W}");
|
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{X}{W}{W}");
|
||||||
|
|
|
@ -34,7 +34,7 @@ public final class HelixPinnacle extends CardImpl {
|
||||||
|
|
||||||
// {X}: Put X tower counters on Helix Pinnacle.
|
// {X}: Put X tower counters on Helix Pinnacle.
|
||||||
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD,
|
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD,
|
||||||
new AddCountersSourceEffect(CounterType.TOWER.createInstance(), ManacostVariableValue.instance, true),
|
new AddCountersSourceEffect(CounterType.TOWER.createInstance(), ManacostVariableValue.REGULAR, true),
|
||||||
new ManaCostsImpl("{X}")));
|
new ManaCostsImpl("{X}")));
|
||||||
|
|
||||||
// At the beginning of your upkeep, if there are 100 or more tower counters on Helix Pinnacle, you win the game.
|
// At the beginning of your upkeep, if there are 100 or more tower counters on Helix Pinnacle, you win the game.
|
||||||
|
|
|
@ -69,7 +69,7 @@ class HelmOfObedienceEffect extends OneShotEffect {
|
||||||
public boolean apply(Game game, Ability source) {
|
public boolean apply(Game game, Ability source) {
|
||||||
Player controller = game.getPlayer(source.getControllerId());
|
Player controller = game.getPlayer(source.getControllerId());
|
||||||
Player targetOpponent = game.getPlayer(source.getFirstTarget());
|
Player targetOpponent = game.getPlayer(source.getFirstTarget());
|
||||||
int max = ManacostVariableValue.instance.calculate(game, source, this);
|
int max = ManacostVariableValue.REGULAR.calculate(game, source, this);
|
||||||
if (targetOpponent == null || controller == null || max < 1) {
|
if (targetOpponent == null || controller == null || max < 1) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,7 +23,7 @@ public final class HowlFromBeyond extends CardImpl {
|
||||||
|
|
||||||
|
|
||||||
// Target creature gets +X/+0 until end of turn.
|
// Target creature gets +X/+0 until end of turn.
|
||||||
this.getSpellAbility().addEffect(new BoostTargetEffect(ManacostVariableValue.instance, StaticValue.get(0), Duration.EndOfTurn));
|
this.getSpellAbility().addEffect(new BoostTargetEffect(ManacostVariableValue.REGULAR, StaticValue.get(0), Duration.EndOfTurn));
|
||||||
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
|
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -33,10 +33,10 @@ public final class HuntToExtinction extends CardImpl {
|
||||||
this.getSpellAbility().addTarget(new TargetOpponentsCreaturePermanent(0, 1));
|
this.getSpellAbility().addTarget(new TargetOpponentsCreaturePermanent(0, 1));
|
||||||
|
|
||||||
// Hunt to Extinction deals X damage to each creature.
|
// Hunt to Extinction deals X damage to each creature.
|
||||||
this.getSpellAbility().addEffect(new DamageAllEffect(ManacostVariableValue.instance, new FilterCreaturePermanent()));
|
this.getSpellAbility().addEffect(new DamageAllEffect(ManacostVariableValue.REGULAR, new FilterCreaturePermanent()));
|
||||||
|
|
||||||
// Hunt to Exctinction deals an additional X damage to each creature with a bounty counter on it.
|
// Hunt to Exctinction deals an additional X damage to each creature with a bounty counter on it.
|
||||||
Effect effect = new DamageAllEffect(ManacostVariableValue.instance, new FilterCreaturePermanent(filter));
|
Effect effect = new DamageAllEffect(ManacostVariableValue.REGULAR, new FilterCreaturePermanent(filter));
|
||||||
effect.setText("Hunt to Exctinction deals an additional X damage to each creature with a bounty counter on it");
|
effect.setText("Hunt to Exctinction deals an additional X damage to each creature with a bounty counter on it");
|
||||||
this.getSpellAbility().addEffect(effect);
|
this.getSpellAbility().addEffect(effect);
|
||||||
|
|
||||||
|
|
|
@ -28,7 +28,7 @@ public final class Hurricane extends CardImpl {
|
||||||
|
|
||||||
|
|
||||||
// Hurricane deals X damage to each creature with flying and each player.
|
// Hurricane deals X damage to each creature with flying and each player.
|
||||||
this.getSpellAbility().addEffect(new DamageEverythingEffect(ManacostVariableValue.instance, filter));
|
this.getSpellAbility().addEffect(new DamageEverythingEffect(ManacostVariableValue.REGULAR, filter));
|
||||||
}
|
}
|
||||||
|
|
||||||
private Hurricane(final Hurricane card) {
|
private Hurricane(final Hurricane card) {
|
||||||
|
|
|
@ -28,14 +28,14 @@ public final class Illuminate extends CardImpl {
|
||||||
kickerAbility.addKickerCost("{3}{U}");
|
kickerAbility.addKickerCost("{3}{U}");
|
||||||
this.addAbility(kickerAbility);
|
this.addAbility(kickerAbility);
|
||||||
// Illuminate deals X damage to target creature. If Illuminate was kicked with its {2}{R} kicker, it deals X damage to that creature's controller. If Illuminate was kicked with its {3}{U} kicker, you draw X cards.
|
// Illuminate deals X damage to target creature. If Illuminate was kicked with its {2}{R} kicker, it deals X damage to that creature's controller. If Illuminate was kicked with its {3}{U} kicker, you draw X cards.
|
||||||
this.getSpellAbility().addEffect(new DamageTargetEffect(ManacostVariableValue.instance));
|
this.getSpellAbility().addEffect(new DamageTargetEffect(ManacostVariableValue.REGULAR));
|
||||||
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
|
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
|
||||||
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(
|
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(
|
||||||
new DamageTargetControllerEffect(ManacostVariableValue.instance),
|
new DamageTargetControllerEffect(ManacostVariableValue.REGULAR),
|
||||||
new KickedCostCondition("{2}{R}"),
|
new KickedCostCondition("{2}{R}"),
|
||||||
"if this spell was kicked with its {2}{R} kicker, it deals X damage to that creature's controller."));
|
"if this spell was kicked with its {2}{R} kicker, it deals X damage to that creature's controller."));
|
||||||
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(
|
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(
|
||||||
new DrawCardSourceControllerEffect(ManacostVariableValue.instance),
|
new DrawCardSourceControllerEffect(ManacostVariableValue.REGULAR),
|
||||||
new KickedCostCondition("{3}{U}"),
|
new KickedCostCondition("{3}{U}"),
|
||||||
" if this spell was kicked with its {3}{U} kicker, you draw X cards."));
|
" if this spell was kicked with its {3}{U} kicker, you draw X cards."));
|
||||||
|
|
||||||
|
|
|
@ -21,9 +21,9 @@ public final class InvokeTheFiremind extends CardImpl {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{X}{U}{U}{R}");
|
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{X}{U}{U}{R}");
|
||||||
|
|
||||||
|
|
||||||
this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(ManacostVariableValue.instance));
|
this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(ManacostVariableValue.REGULAR));
|
||||||
Mode mode = new Mode();
|
Mode mode = new Mode();
|
||||||
mode.addEffect(new DamageTargetEffect(ManacostVariableValue.instance));
|
mode.addEffect(new DamageTargetEffect(ManacostVariableValue.REGULAR));
|
||||||
mode.addTarget(new TargetAnyTarget());
|
mode.addTarget(new TargetAnyTarget());
|
||||||
this.getSpellAbility().addMode(mode);
|
this.getSpellAbility().addMode(mode);
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,7 +25,7 @@ public final class JayasImmolatingInferno extends CardImpl {
|
||||||
this.addAbility(new LegendarySpellAbility());
|
this.addAbility(new LegendarySpellAbility());
|
||||||
|
|
||||||
// Jaya's Immolating Inferno deals X damage to each of up to three targets.
|
// Jaya's Immolating Inferno deals X damage to each of up to three targets.
|
||||||
Effect effect = new DamageTargetEffect(ManacostVariableValue.instance);
|
Effect effect = new DamageTargetEffect(ManacostVariableValue.REGULAR);
|
||||||
effect.setText("{this} deals X damage to each of up to three targets");
|
effect.setText("{this} deals X damage to each of up to three targets");
|
||||||
this.getSpellAbility().addEffect(effect);
|
this.getSpellAbility().addEffect(effect);
|
||||||
this.getSpellAbility().addTarget(new TargetAnyTarget(1, 3));
|
this.getSpellAbility().addTarget(new TargetAnyTarget(1, 3));
|
||||||
|
|
|
@ -44,13 +44,13 @@ public final class JiwariTheEarthAflame extends CardImpl {
|
||||||
this.toughness = new MageInt(3);
|
this.toughness = new MageInt(3);
|
||||||
|
|
||||||
// {X}{R}, {tap}: Jiwari, the Earth Aflame deals X damage to target creature without flying.
|
// {X}{R}, {tap}: Jiwari, the Earth Aflame deals X damage to target creature without flying.
|
||||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(ManacostVariableValue.instance), new ManaCostsImpl("{X}{R}"));
|
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(ManacostVariableValue.REGULAR), new ManaCostsImpl("{X}{R}"));
|
||||||
ability.addCost(new TapSourceCost());
|
ability.addCost(new TapSourceCost());
|
||||||
ability.addTarget(new TargetCreaturePermanent(filter));
|
ability.addTarget(new TargetCreaturePermanent(filter));
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
|
|
||||||
// Channel - {X}{R}{R}{R}, Discard Jiwari: Jiwari deals X damage to each creature without flying.
|
// Channel - {X}{R}{R}{R}, Discard Jiwari: Jiwari deals X damage to each creature without flying.
|
||||||
this.addAbility(new ChannelAbility("{X}{R}{R}{R}", new DamageAllEffect(ManacostVariableValue.instance, filter)));
|
this.addAbility(new ChannelAbility("{X}{R}{R}{R}", new DamageAllEffect(ManacostVariableValue.REGULAR, filter)));
|
||||||
}
|
}
|
||||||
|
|
||||||
private JiwariTheEarthAflame(final JiwariTheEarthAflame card) {
|
private JiwariTheEarthAflame(final JiwariTheEarthAflame card) {
|
||||||
|
|
|
@ -34,7 +34,7 @@ public final class KaerveksTorch extends CardImpl {
|
||||||
// As long as Kaervek's Torch is on the stack, spells that target it cost {2} more to cast.
|
// As long as Kaervek's Torch is on the stack, spells that target it cost {2} more to cast.
|
||||||
this.addAbility(new SimpleStaticAbility(Zone.STACK, new KaerveksTorchCostIncreaseEffect()));
|
this.addAbility(new SimpleStaticAbility(Zone.STACK, new KaerveksTorchCostIncreaseEffect()));
|
||||||
// Kaervek's Torch deals X damage to any target.
|
// Kaervek's Torch deals X damage to any target.
|
||||||
this.getSpellAbility().addEffect(new DamageTargetEffect(ManacostVariableValue.instance));
|
this.getSpellAbility().addEffect(new DamageTargetEffect(ManacostVariableValue.REGULAR));
|
||||||
this.getSpellAbility().addTarget(new TargetAnyTarget());
|
this.getSpellAbility().addTarget(new TargetAnyTarget());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -34,7 +34,7 @@ public final class KessigWolfRun extends CardImpl {
|
||||||
TrampleAbility.getInstance(), Duration.EndOfTurn
|
TrampleAbility.getInstance(), Duration.EndOfTurn
|
||||||
).setText("Target creature gets +X/+0"), new ManaCostsImpl("{X}{R}{G}"));
|
).setText("Target creature gets +X/+0"), new ManaCostsImpl("{X}{R}{G}"));
|
||||||
ability.addEffect(new BoostTargetEffect(
|
ability.addEffect(new BoostTargetEffect(
|
||||||
ManacostVariableValue.instance, StaticValue.get(0), Duration.EndOfTurn
|
ManacostVariableValue.REGULAR, StaticValue.get(0), Duration.EndOfTurn
|
||||||
).setText("and gains trample until end of turn"));
|
).setText("and gains trample until end of turn"));
|
||||||
ability.addCost(new TapSourceCost());
|
ability.addCost(new TapSourceCost());
|
||||||
ability.addTarget(new TargetCreaturePermanent());
|
ability.addTarget(new TargetCreaturePermanent());
|
||||||
|
|
|
@ -61,7 +61,7 @@ class KillingWaveEffect extends OneShotEffect {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
int amount = (ManacostVariableValue.instance).calculate(game, source, this);
|
int amount = (ManacostVariableValue.REGULAR).calculate(game, source, this);
|
||||||
if (amount > 0) {
|
if (amount > 0) {
|
||||||
List<Permanent> sacrifices = new LinkedList<>();
|
List<Permanent> sacrifices = new LinkedList<>();
|
||||||
Map<UUID, Integer> lifePaidAmounts = new HashMap<>();
|
Map<UUID, Integer> lifePaidAmounts = new HashMap<>();
|
||||||
|
|
|
@ -32,7 +32,7 @@ public final class KnollspineInvocation extends CardImpl {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{R}{R}");
|
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{R}{R}");
|
||||||
|
|
||||||
// {X}, Discard a card with converted mana cost X: Knollspine Invocation deals X damage to any target.
|
// {X}, Discard a card with converted mana cost X: Knollspine Invocation deals X damage to any target.
|
||||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(ManacostVariableValue.instance, true), new ManaCostsImpl<>("{X}"));
|
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(ManacostVariableValue.REGULAR, true), new ManaCostsImpl<>("{X}"));
|
||||||
ability.addCost(new DiscardTargetCost(new TargetCardInHand(filter)));
|
ability.addCost(new DiscardTargetCost(new TargetCardInHand(filter)));
|
||||||
ability.addTarget(new TargetAnyTarget());
|
ability.addTarget(new TargetAnyTarget());
|
||||||
ability.setCostAdjuster(KnollspineInvocationAdjuster.instance);
|
ability.setCostAdjuster(KnollspineInvocationAdjuster.instance);
|
||||||
|
|
|
@ -35,7 +35,7 @@ public final class LatullaKeldonOverseer extends CardImpl {
|
||||||
this.toughness = new MageInt(3);
|
this.toughness = new MageInt(3);
|
||||||
|
|
||||||
// {X}{R}, {tap}, Discard two cards: Latulla, Keldon Overseer deals X damage to any target.
|
// {X}{R}, {tap}, Discard two cards: Latulla, Keldon Overseer deals X damage to any target.
|
||||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(ManacostVariableValue.instance), new ManaCostsImpl("{X}{R}"));
|
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(ManacostVariableValue.REGULAR), new ManaCostsImpl("{X}{R}"));
|
||||||
ability.addCost(new TapSourceCost());
|
ability.addCost(new TapSourceCost());
|
||||||
ability.addCost(new DiscardTargetCost(new TargetCardInHand(2, 2, new FilterCard("two cards"))));
|
ability.addCost(new DiscardTargetCost(new TargetCardInHand(2, 2, new FilterCard("two cards"))));
|
||||||
ability.addTarget(new TargetAnyTarget());
|
ability.addTarget(new TargetAnyTarget());
|
||||||
|
|
|
@ -60,7 +60,7 @@ class LavaclawReachesToken extends TokenImpl {
|
||||||
color.setBlack(true);
|
color.setBlack(true);
|
||||||
power = new MageInt(2);
|
power = new MageInt(2);
|
||||||
toughness = new MageInt(2);
|
toughness = new MageInt(2);
|
||||||
addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(ManacostVariableValue.instance, StaticValue.get(0), Duration.EndOfTurn), new ManaCostsImpl("{X}")));
|
addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(ManacostVariableValue.REGULAR, StaticValue.get(0), Duration.EndOfTurn), new ManaCostsImpl("{X}")));
|
||||||
}
|
}
|
||||||
public LavaclawReachesToken(final LavaclawReachesToken token) {
|
public LavaclawReachesToken(final LavaclawReachesToken token) {
|
||||||
super(token);
|
super(token);
|
||||||
|
|
|
@ -27,7 +27,7 @@ public final class Lavalanche extends CardImpl {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{B}{R}{G}");
|
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{B}{R}{G}");
|
||||||
|
|
||||||
// Lavalanche deals X damage to target player and each creature they control.
|
// Lavalanche deals X damage to target player and each creature they control.
|
||||||
this.getSpellAbility().addEffect(new LavalancheEffect(ManacostVariableValue.instance));
|
this.getSpellAbility().addEffect(new LavalancheEffect(ManacostVariableValue.REGULAR));
|
||||||
this.getSpellAbility().addTarget(new TargetPlayerOrPlaneswalker());
|
this.getSpellAbility().addTarget(new TargetPlayerOrPlaneswalker());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,7 +37,7 @@ public final class LifecraftAwakening extends CardImpl {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{X}{G}");
|
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{X}{G}");
|
||||||
|
|
||||||
// Put X +1/+1 counters on target artifact you control. If it isn't a creature or Vehicle, it becomes a 0/0 Construct artifact creature.
|
// Put X +1/+1 counters on target artifact you control. If it isn't a creature or Vehicle, it becomes a 0/0 Construct artifact creature.
|
||||||
ManacostVariableValue manaX = ManacostVariableValue.instance;
|
ManacostVariableValue manaX = ManacostVariableValue.REGULAR;
|
||||||
getSpellAbility().addEffect(new AddCountersTargetEffect(CounterType.P1P1.createInstance(), manaX));
|
getSpellAbility().addEffect(new AddCountersTargetEffect(CounterType.P1P1.createInstance(), manaX));
|
||||||
getSpellAbility().addTarget(new TargetArtifactPermanent(filter));
|
getSpellAbility().addTarget(new TargetArtifactPermanent(filter));
|
||||||
getSpellAbility().addEffect(new LifecraftAwakeningEffect());
|
getSpellAbility().addEffect(new LifecraftAwakeningEffect());
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue