mirror of
https://github.com/correl/mage.git
synced 2025-01-12 19:25:44 +00:00
various ability word text fixes
This commit is contained in:
parent
58dac0a890
commit
f57693392c
78 changed files with 132 additions and 169 deletions
|
@ -24,12 +24,11 @@ public final class AdmiralsOrder extends CardImpl {
|
|||
|
||||
// Raid - If you attacked with a creature this turn, you may pay {U} rather than pay this spell's mana cost.
|
||||
this.addAbility(new AlternativeCostSourceAbility(new ManaCostsImpl("{U}"), RaidCondition.instance,
|
||||
"<br/><br/><i>Raid</i> — If you attacked with a creature this turn, you may pay {U} rather than pay this spell's mana cost"),
|
||||
"<br/><i>Raid</i> — If you attacked this turn, you may pay {U} rather than pay this spell's mana cost"),
|
||||
new PlayerAttackedWatcher());
|
||||
// Counter target spell.
|
||||
this.getSpellAbility().addEffect(new CounterTargetEffect());
|
||||
this.getSpellAbility().addTarget(new TargetSpell());
|
||||
this.getSpellAbility().setAbilityWord(AbilityWord.RAID);
|
||||
this.getSpellAbility().addHint(RaidHint.instance);
|
||||
}
|
||||
|
||||
|
|
|
@ -25,7 +25,7 @@ import mage.watchers.common.RevoltWatcher;
|
|||
public final class AidFromTheCowl extends CardImpl {
|
||||
|
||||
private static final String ruleText = "<i>Revolt</i> — At the beginning of your end step, if a permanent you controlled left the battlefield this turn, "
|
||||
+ "you may reveal the top card of your library. If it's a permanent card, you may put it onto the battlefield. Otherwise, put it on the bottom of your library.";
|
||||
+ "reveal the top card of your library. If it's a permanent card, you may put it onto the battlefield. Otherwise, put it on the bottom of your library.";
|
||||
|
||||
public AidFromTheCowl(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{G}{G}");
|
||||
|
|
|
@ -44,7 +44,7 @@ public final class AkoumFirebird extends CardImpl {
|
|||
// <i>Landfall</i>-Whenever a land enters the battlefield under your control, you may pay {4}{R}{R}.
|
||||
// If you do, return Akoum Firebird from your graveyard to the battlefield.
|
||||
this.addAbility(new AkoumFirebirdLandfallAbility(new DoIfCostPaid(
|
||||
new ReturnSourceFromGraveyardToBattlefieldEffect(), new ManaCostsImpl("{4}{R}{R}")), false));
|
||||
new ReturnSourceFromGraveyardToBattlefieldEffect(false, false), new ManaCostsImpl("{4}{R}{R}")), false));
|
||||
}
|
||||
|
||||
private AkoumFirebird(final AkoumFirebird card) {
|
||||
|
|
|
@ -86,7 +86,7 @@ class AngelicArbiterEffect2 extends ContinuousRuleModifyingEffectImpl {
|
|||
|
||||
public AngelicArbiterEffect2() {
|
||||
super(Duration.WhileOnBattlefield, Outcome.Benefit);
|
||||
staticText = "Each opponent who attacked with a creature this turn can't cast spells";
|
||||
staticText = "Each opponent who attacked this turn can't cast spells";
|
||||
}
|
||||
|
||||
public AngelicArbiterEffect2(final AngelicArbiterEffect2 effect) {
|
||||
|
|
|
@ -32,9 +32,8 @@ public final class ArrowStorm extends CardImpl {
|
|||
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(
|
||||
new DamageTargetEffect(5, false),
|
||||
RaidCondition.instance,
|
||||
"<br/><br/><i>Raid</i> — If you attacked with a creature this turn, instead {this} deals 5 damage to that permanent or player and the damage can't be prevented"));
|
||||
"<br/><br/><i>Raid</i> — If you attacked this turn, instead {this} deals 5 damage to that permanent or player and the damage can't be prevented"));
|
||||
this.getSpellAbility().addWatcher(new PlayerAttackedWatcher());
|
||||
this.getSpellAbility().setAbilityWord(AbilityWord.RAID);
|
||||
this.getSpellAbility().addHint(RaidHint.instance);
|
||||
}
|
||||
|
||||
|
|
|
@ -1,17 +1,20 @@
|
|||
package mage.cards.a;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.condition.common.MetalcraftCondition;
|
||||
import mage.abilities.decorator.ConditionalContinuousEffect;
|
||||
import mage.abilities.effects.ContinuousEffect;
|
||||
import mage.abilities.effects.common.continuous.BoostSourceEffect;
|
||||
import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
|
||||
import mage.abilities.hint.common.MetalcraftHint;
|
||||
import mage.abilities.keyword.FlyingAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.*;
|
||||
import mage.constants.AbilityWord;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.SubType;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
|
@ -20,9 +23,6 @@ import java.util.UUID;
|
|||
*/
|
||||
public final class AuriokSunchaser extends CardImpl {
|
||||
|
||||
protected static String effect1Text = "<i>Metalcraft</i> — As long as you control three or more artifacts, Auriok Sunchaser gets +2/+2";
|
||||
protected static String effect2Text = "<i>Metalcraft</i> — As long as you control three or more artifacts, Auriok Sunchaser has flying";
|
||||
|
||||
public AuriokSunchaser(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}");
|
||||
this.subtype.add(SubType.HUMAN);
|
||||
|
@ -31,19 +31,14 @@ public final class AuriokSunchaser extends CardImpl {
|
|||
this.power = new MageInt(1);
|
||||
this.toughness = new MageInt(1);
|
||||
|
||||
ContinuousEffect effect1 = new BoostSourceEffect(2, 2, Duration.WhileOnBattlefield);
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD,
|
||||
new ConditionalContinuousEffect(effect1, MetalcraftCondition.instance, effect1Text))
|
||||
.setAbilityWord(AbilityWord.METALCRAFT)
|
||||
.addHint(MetalcraftHint.instance)
|
||||
);
|
||||
|
||||
ContinuousEffect effect2 = new GainAbilitySourceEffect(FlyingAbility.getInstance(), Duration.WhileOnBattlefield);
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD,
|
||||
new ConditionalContinuousEffect(effect2, MetalcraftCondition.instance, effect2Text))
|
||||
.setAbilityWord(AbilityWord.METALCRAFT)
|
||||
.addHint(MetalcraftHint.instance)
|
||||
);
|
||||
Ability ability = new SimpleStaticAbility(new ConditionalContinuousEffect(
|
||||
new BoostSourceEffect(2, 2, Duration.WhileOnBattlefield),
|
||||
MetalcraftCondition.instance, "as long as you control three or more artifacts, {this} gets +2/+2"
|
||||
));
|
||||
ability.addEffect(new ConditionalContinuousEffect(new GainAbilitySourceEffect(
|
||||
FlyingAbility.getInstance(), Duration.WhileOnBattlefield
|
||||
), MetalcraftCondition.instance, "and has flying"));
|
||||
this.addAbility(ability.setAbilityWord(AbilityWord.METALCRAFT).addHint(MetalcraftHint.instance));
|
||||
}
|
||||
|
||||
private AuriokSunchaser(final AuriokSunchaser card) {
|
||||
|
|
|
@ -26,8 +26,8 @@ public final class BalothWoodcrasher extends CardImpl {
|
|||
this.power = new MageInt(4);
|
||||
this.toughness = new MageInt(4);
|
||||
|
||||
LandfallAbility ability = new LandfallAbility(new BoostSourceEffect(4, 4, Duration.EndOfTurn), false);
|
||||
ability.addEffect(new GainAbilitySourceEffect(TrampleAbility.getInstance(), Duration.EndOfTurn));
|
||||
LandfallAbility ability = new LandfallAbility(new BoostSourceEffect(4, 4, Duration.EndOfTurn).setText("{this} gets +4/+4"), false);
|
||||
ability.addEffect(new GainAbilitySourceEffect(TrampleAbility.getInstance(), Duration.EndOfTurn).setText("and gains trample until end of turn"));
|
||||
this.addAbility(ability);
|
||||
}
|
||||
|
||||
|
|
|
@ -32,7 +32,7 @@ public final class BellowingSaddlebrute extends CardImpl {
|
|||
this.addAbility(new ConditionalInterveningIfTriggeredAbility(
|
||||
new EntersBattlefieldTriggeredAbility(new LoseLifeSourceControllerEffect(4)),
|
||||
new InvertCondition(RaidCondition.instance),
|
||||
"<i>Raid</i> — When {this} enters the battlefield, you lose 4 life unless you attacked with a creature this turn")
|
||||
"<i>Raid</i> — When {this} enters the battlefield, you lose 4 life unless you attacked this turn.")
|
||||
.setAbilityWord(AbilityWord.RAID)
|
||||
.addHint(RaidHint.instance),
|
||||
new PlayerAttackedWatcher());
|
||||
|
|
|
@ -32,7 +32,7 @@ public final class BreakOfDay extends CardImpl {
|
|||
StaticFilters.FILTER_PERMANENT_CREATURES, false
|
||||
), new LockedInCondition(FatefulHourCondition.instance),
|
||||
"<br><i>Fateful hour</i> — If you have 5 or less life, " +
|
||||
"those creatures also are indestructible this turn"
|
||||
"those creatures gain indestructible until end of turn"
|
||||
));
|
||||
}
|
||||
|
||||
|
|
|
@ -25,7 +25,7 @@ public final class BrilliantSpectrum extends CardImpl {
|
|||
Effect effect = new DrawCardSourceControllerEffect(ColorsOfManaSpentToCastCount.getInstance());
|
||||
effect.setText("Draw X cards, where X is the number of colors of mana spent to cast this spell");
|
||||
this.getSpellAbility().addEffect(effect);
|
||||
this.getSpellAbility().addEffect(new DiscardControllerEffect(2));
|
||||
this.getSpellAbility().addEffect(new DiscardControllerEffect(2).concatBy("Then"));
|
||||
}
|
||||
|
||||
private BrilliantSpectrum(final BrilliantSpectrum card) {
|
||||
|
|
|
@ -22,7 +22,7 @@ public final class CacklingFlames extends CardImpl {
|
|||
// Hellbent - Cackling Flames deals 5 damage to that creature or player instead if you have no cards in hand.
|
||||
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(
|
||||
new DamageTargetEffect(5), new DamageTargetEffect(3), HellbentCondition.instance,
|
||||
"{this} deals 3 damage to any target<br><i>Hellbent</i> " +
|
||||
"{this} deals 3 damage to any target.<br><i>Hellbent</i> " +
|
||||
"— {this} deals 5 damage instead if you have no cards in hand."
|
||||
));
|
||||
this.getSpellAbility().addTarget(new TargetAnyTarget());
|
||||
|
|
|
@ -8,7 +8,10 @@ import mage.abilities.effects.common.continuous.BoostSourceEffect;
|
|||
import mage.abilities.hint.common.MetalcraftHint;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.*;
|
||||
import mage.constants.AbilityWord;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.SubType;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
|
@ -25,15 +28,11 @@ public final class CarapaceForger extends CardImpl {
|
|||
this.power = new MageInt(2);
|
||||
this.toughness = new MageInt(2);
|
||||
|
||||
this.addAbility(new SimpleStaticAbility(
|
||||
Zone.BATTLEFIELD,
|
||||
new ConditionalContinuousEffect(
|
||||
new BoostSourceEffect(2, 2, Duration.WhileOnBattlefield),
|
||||
MetalcraftCondition.instance, "<i>Metalcraft</i> — {this} gets " +
|
||||
"+2/+2 as long as you control three or more artifacts"
|
||||
))
|
||||
.setAbilityWord(AbilityWord.METALCRAFT)
|
||||
.addHint(MetalcraftHint.instance));
|
||||
this.addAbility(new SimpleStaticAbility(new ConditionalContinuousEffect(
|
||||
new BoostSourceEffect(2, 2, Duration.WhileOnBattlefield),
|
||||
MetalcraftCondition.instance, "{this} gets " +
|
||||
"+2/+2 as long as you control three or more artifacts"
|
||||
)).setAbilityWord(AbilityWord.METALCRAFT).addHint(MetalcraftHint.instance));
|
||||
}
|
||||
|
||||
private CarapaceForger(final CarapaceForger card) {
|
||||
|
|
|
@ -14,6 +14,7 @@ import mage.cards.CardImpl;
|
|||
import mage.cards.CardSetInfo;
|
||||
import mage.choices.Choice;
|
||||
import mage.choices.ChoiceColor;
|
||||
import mage.constants.AbilityWord;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Outcome;
|
||||
import mage.constants.Zone;
|
||||
|
@ -39,7 +40,7 @@ public final class ChromeMox extends CardImpl {
|
|||
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{0}");
|
||||
|
||||
// Imprint - When Chrome Mox enters the battlefield, you may exile a nonartifact, nonland card from your hand.
|
||||
this.addAbility(new EntersBattlefieldTriggeredAbility(new ChromeMoxEffect(), true));
|
||||
this.addAbility(new EntersBattlefieldTriggeredAbility(new ChromeMoxEffect(), true).setAbilityWord(AbilityWord.IMPRINT));
|
||||
// {T}: Add one mana of any of the exiled card's colors.
|
||||
this.addAbility(new SimpleManaAbility(Zone.BATTLEFIELD, new ChromeMoxManaEffect(), new TapSourceCost()));
|
||||
}
|
||||
|
|
|
@ -8,7 +8,10 @@ import mage.abilities.effects.common.continuous.BoostSourceEffect;
|
|||
import mage.abilities.hint.common.MetalcraftHint;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.*;
|
||||
import mage.constants.AbilityWord;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.SubType;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
|
@ -23,15 +26,11 @@ public final class ChromeSteed extends CardImpl {
|
|||
this.power = new MageInt(2);
|
||||
this.toughness = new MageInt(2);
|
||||
|
||||
this.addAbility(new SimpleStaticAbility(
|
||||
Zone.BATTLEFIELD,
|
||||
new ConditionalContinuousEffect(
|
||||
new BoostSourceEffect(2, 2, Duration.WhileOnBattlefield),
|
||||
MetalcraftCondition.instance, "<i>Metalcraft</i> — {this} gets " +
|
||||
"+2/+2 as long as you control three or more artifacts"
|
||||
))
|
||||
.setAbilityWord(AbilityWord.METALCRAFT)
|
||||
.addHint(MetalcraftHint.instance));
|
||||
this.addAbility(new SimpleStaticAbility(new ConditionalContinuousEffect(
|
||||
new BoostSourceEffect(2, 2, Duration.WhileOnBattlefield),
|
||||
MetalcraftCondition.instance, "{this} gets " +
|
||||
"+2/+2 as long as you control three or more artifacts"
|
||||
)).setAbilityWord(AbilityWord.METALCRAFT).addHint(MetalcraftHint.instance));
|
||||
}
|
||||
|
||||
private ChromeSteed(final ChromeSteed card) {
|
||||
|
@ -42,5 +41,4 @@ public final class ChromeSteed extends CardImpl {
|
|||
public ChromeSteed copy() {
|
||||
return new ChromeSteed(this);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -6,10 +6,7 @@ import mage.abilities.common.DiesSourceTriggeredAbility;
|
|||
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
||||
import mage.abilities.effects.OneShotEffect;
|
||||
import mage.cards.*;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Outcome;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.Zone;
|
||||
import mage.constants.*;
|
||||
import mage.filter.FilterCard;
|
||||
import mage.game.Game;
|
||||
import mage.game.permanent.Permanent;
|
||||
|
@ -33,7 +30,7 @@ public final class CloneShell extends CardImpl {
|
|||
this.toughness = new MageInt(2);
|
||||
|
||||
// Imprint - When Clone Shell enters the battlefield, look at the top four cards of your library, exile one face down, then put the rest on the bottom of your library in any order.
|
||||
this.addAbility(new EntersBattlefieldTriggeredAbility(new CloneShellEffect(), false));
|
||||
this.addAbility(new EntersBattlefieldTriggeredAbility(new CloneShellEffect(), false).setAbilityWord(AbilityWord.IMPRINT));
|
||||
|
||||
// When Clone Shell dies, turn the exiled card face up. If it's a creature card, put it onto the battlefield under your control.
|
||||
this.addAbility(new DiesSourceTriggeredAbility(new CloneShellDiesEffect()));
|
||||
|
|
|
@ -29,7 +29,7 @@ public final class CodeOfConstraint extends CardImpl {
|
|||
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
|
||||
|
||||
// Draw a card.
|
||||
this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1));
|
||||
this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1).concatBy("<br>"));
|
||||
|
||||
// Addendum — If you cast this spell during your main phase, tap that creature and it doesn't untap during its controller's next untap step.
|
||||
this.getSpellAbility().addEffect(new CodeOfConstraintEffect());
|
||||
|
|
|
@ -34,7 +34,6 @@ public final class ConcussiveBolt extends CardImpl {
|
|||
// <i>Metalcraft</i> — If you control three or more artifacts, creatures that player controls can't block this turn.
|
||||
this.getSpellAbility().addEffect(new ConcussiveBoltEffect());
|
||||
this.getSpellAbility().addEffect(new ConcussiveBoltRestrictionEffect());
|
||||
this.getSpellAbility().setAbilityWord(AbilityWord.METALCRAFT);
|
||||
this.getSpellAbility().addHint(MetalcraftHint.instance);
|
||||
}
|
||||
|
||||
|
@ -52,7 +51,7 @@ class ConcussiveBoltEffect extends OneShotEffect {
|
|||
|
||||
public ConcussiveBoltEffect() {
|
||||
super(Outcome.Benefit);
|
||||
this.staticText = "<i>Metalcraft</i> — If you control three or more artifacts, creatures controlled by that player or by that planeswalker's controller can't block this turn.";
|
||||
this.staticText = "<br><i>Metalcraft</i> — If you control three or more artifacts, creatures controlled by that player or by that planeswalker's controller can't block this turn.";
|
||||
}
|
||||
|
||||
public ConcussiveBoltEffect(final ConcussiveBoltEffect effect) {
|
||||
|
|
|
@ -43,7 +43,7 @@ public final class CropSigil extends CardImpl {
|
|||
Ability ability = new ConditionalActivatedAbility(Zone.BATTLEFIELD, new ReturnToHandTargetEffect(true), new ManaCostsImpl<>("{2}{G}"),
|
||||
DeliriumCondition.instance,
|
||||
"<i>Delirium</i> — {2}{G}, Sacrifice {this}: Return up to one target creature card and up to one target land card from your graveyard to your hand. "
|
||||
+ "Activate only if there are four or more card types among cards in your graveyard");
|
||||
+ "Activate only if there are four or more card types among cards in your graveyard.");
|
||||
ability.addCost(new SacrificeSourceCost());
|
||||
ability.addTarget(new TargetCardInYourGraveyard(0, 1, filterCreature));
|
||||
ability.addTarget(new TargetCardInYourGraveyard(0, 1, filterLand));
|
||||
|
|
|
@ -48,7 +48,7 @@ class DarkDabblingEffect extends OneShotEffect {
|
|||
|
||||
public DarkDabblingEffect() {
|
||||
super(Outcome.Benefit);
|
||||
this.staticText = "<i>Spell mastery</i> — If there are two or more instant and/or sorcery cards in your graveyard, also regenerate each other creature you control";
|
||||
this.staticText = "<br><i>Spell mastery</i> — If there are two or more instant and/or sorcery cards in your graveyard, also regenerate each other creature you control";
|
||||
}
|
||||
|
||||
public DarkDabblingEffect(final DarkDabblingEffect effect) {
|
||||
|
|
|
@ -8,6 +8,7 @@ import mage.abilities.effects.common.DrawCardSourceControllerEffect;
|
|||
import mage.abilities.hint.common.MorbidHint;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.AbilityWord;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.TargetController;
|
||||
import mage.constants.Zone;
|
||||
|
@ -23,7 +24,7 @@ public final class DeathreapRitual extends CardImpl {
|
|||
|
||||
// <i>Morbid</i> — At the beginning of each end step, if a creature died this turn, you may draw a card.
|
||||
this.addAbility(new BeginningOfEndStepTriggeredAbility(Zone.BATTLEFIELD, new DrawCardSourceControllerEffect(1),
|
||||
TargetController.ANY, MorbidCondition.instance, true).addHint(MorbidHint.instance));
|
||||
TargetController.ANY, MorbidCondition.instance, true).addHint(MorbidHint.instance).setAbilityWord(AbilityWord.MORBID));
|
||||
}
|
||||
|
||||
private DeathreapRitual(final DeathreapRitual card) {
|
||||
|
|
|
@ -28,7 +28,6 @@ public final class DispenseJustice extends CardImpl {
|
|||
// Metalcraft — That player sacrifices two attacking creatures instead if you control three or more artifacts.
|
||||
this.getSpellAbility().addEffect(new DispenseJusticeEffect());
|
||||
this.getSpellAbility().addTarget(new TargetPlayer());
|
||||
this.getSpellAbility().setAbilityWord(AbilityWord.METALCRAFT);
|
||||
this.getSpellAbility().addHint(MetalcraftHint.instance);
|
||||
}
|
||||
|
||||
|
|
|
@ -22,7 +22,7 @@ import java.util.UUID;
|
|||
* @author North
|
||||
*/
|
||||
public final class EtchedChampion extends CardImpl {
|
||||
private static final String ruleText = "<i>Metalcraft</i> — Etched Champion has protection from all colors as long as you control three or more artifacts";
|
||||
private static final String ruleText = "{this} has protection from all colors as long as you control three or more artifacts";
|
||||
|
||||
private static final FilterCard filter = new FilterCard("all colors");
|
||||
|
||||
|
|
|
@ -8,10 +8,7 @@ import mage.abilities.effects.OneShotEffect;
|
|||
import mage.cards.Card;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.Outcome;
|
||||
import mage.constants.Zone;
|
||||
import mage.constants.*;
|
||||
import mage.filter.FilterPermanent;
|
||||
import mage.filter.predicate.Predicates;
|
||||
import mage.game.Game;
|
||||
|
@ -40,7 +37,7 @@ public final class ExclusionRitual extends CardImpl {
|
|||
// Imprint - When Exclusion Ritual enters the battlefield, exile target nonland permanent.
|
||||
Ability ability = new EntersBattlefieldTriggeredAbility(new ExclusionRitualImprintEffect(), false);
|
||||
ability.addTarget(new TargetPermanent(filter));
|
||||
this.addAbility(ability);
|
||||
this.addAbility(ability.setAbilityWord(AbilityWord.IMPRINT);
|
||||
// Players can't cast spells with the same name as the exiled card.
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ExclusionRitualReplacementEffect()));
|
||||
}
|
||||
|
|
|
@ -48,7 +48,7 @@ class ExertInfluenceEffect extends OneShotEffect {
|
|||
|
||||
public ExertInfluenceEffect() {
|
||||
super(Outcome.GainControl);
|
||||
this.staticText = "Gain control of target creature if its power is less than or equal to the number of colors spent to cast this spell";
|
||||
this.staticText = "Gain control of target creature if its power is less than or equal to the number of colors of mana spent to cast this spell";
|
||||
}
|
||||
|
||||
public ExertInfluenceEffect(final ExertInfluenceEffect effect) {
|
||||
|
|
|
@ -20,7 +20,7 @@ import java.util.UUID;
|
|||
* @author Loki
|
||||
*/
|
||||
public final class EzurisBrigade extends CardImpl {
|
||||
private static final String rule = "<i>Metalcraft</i> — As long as you control three or more artifacts, Ezuri's Brigade gets +4/+4 and has trample";
|
||||
private static final String rule = "As long as you control three or more artifacts, {this} gets +4/+4";
|
||||
|
||||
public EzurisBrigade(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}{G}");
|
||||
|
@ -33,7 +33,7 @@ public final class EzurisBrigade extends CardImpl {
|
|||
ContinuousEffect boostSource = new BoostSourceEffect(4, 4, Duration.WhileOnBattlefield);
|
||||
ConditionalContinuousEffect effect = new ConditionalContinuousEffect(boostSource, MetalcraftCondition.instance, rule);
|
||||
Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, effect);
|
||||
ability.addEffect(new ConditionalContinuousEffect(new GainAbilitySourceEffect(TrampleAbility.getInstance(), Duration.WhileOnBattlefield), MetalcraftCondition.instance, ""));
|
||||
ability.addEffect(new ConditionalContinuousEffect(new GainAbilitySourceEffect(TrampleAbility.getInstance(), Duration.WhileOnBattlefield), MetalcraftCondition.instance, "and has trample"));
|
||||
ability.setAbilityWord(AbilityWord.METALCRAFT);
|
||||
ability.addHint(MetalcraftHint.instance);
|
||||
this.addAbility(ability);
|
||||
|
|
|
@ -11,6 +11,7 @@ import mage.abilities.hint.common.MorbidHint;
|
|||
import mage.abilities.keyword.TrampleAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.AbilityWord;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.counters.CounterType;
|
||||
|
@ -31,7 +32,7 @@ public final class FesterhideBoar extends CardImpl {
|
|||
this.addAbility(TrampleAbility.getInstance());
|
||||
// <i>Morbid</i> — Festerhide Boar enters the battlefield with two +1/+1 counters on it if a creature died this turn.
|
||||
this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(new AddCountersSourceEffect(CounterType.P1P1.createInstance(2)),
|
||||
MorbidCondition.instance, ""), "with two +1/+1 counters on it if a creature died this turn").addHint(MorbidHint.instance));
|
||||
MorbidCondition.instance, ""), "with two +1/+1 counters on it if a creature died this turn").addHint(MorbidHint.instance).setAbilityWord(AbilityWord.MORBID));
|
||||
}
|
||||
|
||||
private FesterhideBoar(final FesterhideBoar card) {
|
||||
|
|
|
@ -31,7 +31,6 @@ public final class GalvanicBlast extends CardImpl {
|
|||
MetalcraftCondition.instance, effectText
|
||||
));
|
||||
this.getSpellAbility().addTarget(new TargetAnyTarget());
|
||||
this.getSpellAbility().setAbilityWord(AbilityWord.METALCRAFT);
|
||||
this.getSpellAbility().addHint(MetalcraftHint.instance);
|
||||
}
|
||||
|
||||
|
|
|
@ -18,7 +18,7 @@ import java.util.UUID;
|
|||
*/
|
||||
public final class GhalmasWarden extends CardImpl {
|
||||
|
||||
private static final String rule = "<i>Metalcraft</i> — Ghalma's Warden gets +2/+2 as long as you control three or more artifacts";
|
||||
private static final String rule = "{this} gets +2/+2 as long as you control three or more artifacts";
|
||||
|
||||
public GhalmasWarden(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}");
|
||||
|
|
|
@ -11,6 +11,7 @@ import mage.abilities.hint.common.MorbidHint;
|
|||
import mage.abilities.keyword.TrampleAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.AbilityWord;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.counters.CounterType;
|
||||
|
@ -31,7 +32,7 @@ public final class GravetillerWurm extends CardImpl {
|
|||
this.addAbility(TrampleAbility.getInstance());
|
||||
// <i>Morbid</i> — Gravetiller Wurm enters the battlefield with four +1/+1 counters on it if a creature died this turn.
|
||||
this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(new AddCountersSourceEffect(CounterType.P1P1.createInstance(4)),
|
||||
MorbidCondition.instance, ""), "with four +1/+1 counters on it if a creature died this turn").addHint(MorbidHint.instance));
|
||||
MorbidCondition.instance, ""), "with four +1/+1 counters on it if a creature died this turn").addHint(MorbidHint.instance).setAbilityWord(AbilityWord.MORBID));
|
||||
}
|
||||
|
||||
private GravetillerWurm(final GravetillerWurm card) {
|
||||
|
|
|
@ -31,7 +31,7 @@ public final class GreenwheelLiberator extends CardImpl {
|
|||
// permanent you controlled left the battlefield this turn.
|
||||
Ability ability = new EntersBattlefieldAbility(
|
||||
new AddCountersSourceEffect(CounterType.P1P1.createInstance(2)), false, RevoltCondition.instance,
|
||||
"<i>Revolt</i> — {this} enters the battlefield with two +1/+1 counters on it if a permanent you controlled left the battlefield this turn", null);
|
||||
"<i>Revolt</i> — {this} enters the battlefield with two +1/+1 counters on it if a permanent you controlled left the battlefield this turn.", null);
|
||||
ability.addWatcher(new RevoltWatcher());
|
||||
this.addAbility(ability);
|
||||
}
|
||||
|
|
|
@ -31,9 +31,8 @@ public final class HeartlessPillage extends CardImpl {
|
|||
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(
|
||||
new CreateTokenEffect(new TreasureToken()),
|
||||
RaidCondition.instance,
|
||||
"<br/><br/><i>Raid</i> — If you attacked with a creature this turn, create a colorless Treasure artifact token with \"{T}, Sacrifice this artifact: Add one mana of any color.\""));
|
||||
"<br/><br/><i>Raid</i> — If you attacked this turn, create a colorless Treasure artifact token with \"{T}, Sacrifice this artifact: Add one mana of any color.\""));
|
||||
this.getSpellAbility().addWatcher(new PlayerAttackedWatcher());
|
||||
this.getSpellAbility().setAbilityWord(AbilityWord.RAID);
|
||||
this.getSpellAbility().addHint(RaidHint.instance);
|
||||
}
|
||||
|
||||
|
|
|
@ -32,7 +32,7 @@ public final class HiddenStockpile extends CardImpl {
|
|||
|
||||
// <i>Revolt</i> — At the beginning of your end step, if a permanent you controlled left the battlefield this turn, create a 1/1 colorless Servo artifact creature token.
|
||||
Ability ability = new ConditionalInterveningIfTriggeredAbility(new BeginningOfYourEndStepTriggeredAbility(new CreateTokenEffect(new ServoToken()), false), RevoltCondition.instance,
|
||||
"<i>Revolt</i> — At the beginning of your end step, if a permanent you controlled left the battlefield this turn, create a 1/1 colorless Servo artifact creature token");
|
||||
"<i>Revolt</i> — At the beginning of your end step, if a permanent you controlled left the battlefield this turn, create a 1/1 colorless Servo artifact creature token.");
|
||||
ability.setAbilityWord(AbilityWord.REVOLT);
|
||||
ability.addWatcher(new RevoltWatcher());
|
||||
this.addAbility(ability);
|
||||
|
|
|
@ -38,10 +38,9 @@ public final class HowlOfTheHorde extends CardImpl {
|
|||
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(
|
||||
new CreateDelayedTriggeredAbilityEffect(new HowlOfTheHordeDelayedTriggeredAbility()),
|
||||
RaidCondition.instance,
|
||||
"<br><br><i>Raid</i> — If you attacked with a creature this turn, when you cast your next instant or sorcery spell this turn, copy that spell an additional time. You may choose new targets for the copy.")
|
||||
"<br><br><i>Raid</i> — If you attacked this turn, when you cast your next instant or sorcery spell this turn, copy that spell an additional time. You may choose new targets for the copy.")
|
||||
);
|
||||
this.getSpellAbility().addWatcher(new PlayerAttackedWatcher());
|
||||
this.getSpellAbility().setAbilityWord(AbilityWord.RAID);
|
||||
this.getSpellAbility().addHint(RaidHint.instance);
|
||||
}
|
||||
|
||||
|
|
|
@ -29,7 +29,7 @@ public final class HungerOfTheHowlpack extends CardImpl {
|
|||
new AddCountersTargetEffect(CounterType.P1P1.createInstance(3)),
|
||||
new AddCountersTargetEffect(CounterType.P1P1.createInstance()),
|
||||
MorbidCondition.instance,
|
||||
"Put a +1/+1 counter on target creature. <i>Morbid</i> — Put three +1/+1 counters on that creature instead if a creature died this turn"));
|
||||
"Put a +1/+1 counter on target creature.<br><i>Morbid</i> — Put three +1/+1 counters on that creature instead if a creature died this turn"));
|
||||
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
|
||||
this.getSpellAbility().addHint(MorbidHint.instance);
|
||||
}
|
||||
|
|
|
@ -21,7 +21,7 @@ import java.util.UUID;
|
|||
*/
|
||||
public final class IndomitableArchangel extends CardImpl {
|
||||
|
||||
private static final String rule = "<i>Metalcraft</i> — Artifacts you control have shroud as long as you control three or more artifacts.";
|
||||
private static final String rule = "Artifacts you control have shroud as long as you control three or more artifacts.";
|
||||
|
||||
private static final FilterPermanent filter = new FilterPermanent("Artifacts");
|
||||
|
||||
|
|
|
@ -29,8 +29,8 @@ public final class InexorableBlob extends CardImpl {
|
|||
// in your graveyard, create a 3/3 green Ooze creature token that’s tapped and attacking.
|
||||
this.addAbility(new ConditionalInterveningIfTriggeredAbility(new AttacksTriggeredAbility(new CreateTokenEffect(new InexorableBlobOozeToken(), 1, true, true), false),
|
||||
DeliriumCondition.instance,
|
||||
"<i>Delirium</i> — Whenever {this} attacks and there are at least four card types among cards in your graveyard, "
|
||||
+ "create a 3/3 green Ooze creature token tapped and attacking.")
|
||||
"<i>Delirium</i> — Whenever {this} attacks, if there are four or more card types among cards in your graveyard, " +
|
||||
"create a 3/3 green Ooze creature token that's tapped and attacking.")
|
||||
.addHint(CardTypesInGraveyardHint.YOU));
|
||||
}
|
||||
|
||||
|
|
|
@ -9,6 +9,7 @@ import mage.abilities.effects.OneShotEffect;
|
|||
import mage.cards.Card;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.AbilityWord;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Outcome;
|
||||
import mage.constants.Zone;
|
||||
|
@ -37,7 +38,7 @@ public final class KnowledgePool extends CardImpl {
|
|||
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{6}");
|
||||
|
||||
// Imprint - When Knowledge Pool enters the battlefield, each player exiles the top three cards of their library
|
||||
this.addAbility(new EntersBattlefieldTriggeredAbility(new KnowledgePoolEffect1(), false));
|
||||
this.addAbility(new EntersBattlefieldTriggeredAbility(new KnowledgePoolEffect1(), false).setAbilityWord(AbilityWord.IMPRINT));
|
||||
|
||||
// Whenever a player casts a spell from their hand, that player exiles it. If the player does, they may cast another nonland card exiled with Knowledge Pool without paying that card's mana cost.
|
||||
this.addAbility(new KnowledgePoolAbility());
|
||||
|
|
|
@ -37,7 +37,7 @@ public final class LifecraftCavalry extends CardImpl {
|
|||
new AddCountersSourceEffect(CounterType.P1P1.createInstance(2)),
|
||||
false,
|
||||
RevoltCondition.instance,
|
||||
"<i>Revolt</i> — {this} enters the battlefield with two +1/+1 counter on it if a permanent you controlled left the battlefield this turn", null),
|
||||
"<i>Revolt</i> — {this} enters the battlefield with two +1/+1 counters on it if a permanent you controlled left the battlefield this turn.", null),
|
||||
new RevoltWatcher()
|
||||
);
|
||||
}
|
||||
|
|
|
@ -42,7 +42,7 @@ public final class MalakirSoothsayer extends CardImpl {
|
|||
|
||||
// <i>Cohort</i> — {T}, Tap an untapped Ally you control: You draw a card and you lose a life.
|
||||
SimpleActivatedAbility ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
|
||||
new DrawCardSourceControllerEffect(1),
|
||||
new DrawCardSourceControllerEffect(1).setText("you draw a card"),
|
||||
new TapSourceCost());
|
||||
ability.setAbilityWord(AbilityWord.COHORT);
|
||||
ability.addCost(new TapTargetCost(new TargetControlledCreaturePermanent(1, 1, filter, false)));
|
||||
|
|
|
@ -36,7 +36,7 @@ public final class MaliciousAffliction extends CardImpl {
|
|||
Ability ability = new ConditionalInterveningIfTriggeredAbility(
|
||||
new CastSourceTriggeredAbility(new CopySourceSpellEffect(), true),
|
||||
MorbidCondition.instance, "<i>Morbid</i> — When you cast this spell, " +
|
||||
"if a creature died this turn, you may copy {this} and may choose a new target for the copy"
|
||||
"if a creature died this turn, you may copy {this} and may choose a new target for the copy."
|
||||
);
|
||||
ability.setRuleAtTheTop(true);
|
||||
this.addAbility(ability.addHint(MorbidHint.instance));
|
||||
|
|
|
@ -27,7 +27,7 @@ public final class MightBeyondReason extends CardImpl {
|
|||
new AddCountersTargetEffect(CounterType.P1P1.createInstance(2)),
|
||||
DeliriumCondition.instance,
|
||||
"Put two +1/+1 counter on target creature.<br>"
|
||||
+ "<i>Delirium</i> — Put three +1/+1 counter on that creature instead if there are four or more card types among cards in your graveyard"
|
||||
+ "<i>Delirium</i> — Put three +1/+1 counters on that creature instead if there are four or more card types among cards in your graveyard"
|
||||
));
|
||||
getSpellAbility().addTarget(new TargetCreaturePermanent());
|
||||
getSpellAbility().addHint(CardTypesInGraveyardHint.YOU);
|
||||
|
|
|
@ -17,6 +17,7 @@ import mage.abilities.effects.common.ExileTargetEffect;
|
|||
import mage.cards.Card;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.AbilityWord;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Outcome;
|
||||
import mage.constants.Zone;
|
||||
|
@ -102,7 +103,7 @@ class MimicVatTriggeredAbility extends TriggeredAbilityImpl {
|
|||
|
||||
@Override
|
||||
public String getRule() {
|
||||
return "Whenever a nontoken creature dies, you may exile that card. If you do, return each other card exiled with {this} to its owner's graveyard.";
|
||||
return AbilityWord.IMPRINT.formatWord() + "Whenever a nontoken creature dies, you may exile that card. If you do, return each other card exiled with {this} to its owner's graveyard.";
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -19,7 +19,7 @@ import java.util.UUID;
|
|||
*/
|
||||
public final class MirranMettle extends CardImpl {
|
||||
|
||||
private static final String effectText = "<i>Metalcraft</i> — That creature gets +4/+4 until end of turn instead if you control three or more artifacts.";
|
||||
private static final String effectText = "<br><i>Metalcraft</i> — That creature gets +4/+4 until end of turn instead if you control three or more artifacts.";
|
||||
|
||||
public MirranMettle(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{G}");
|
||||
|
@ -31,7 +31,6 @@ public final class MirranMettle extends CardImpl {
|
|||
// Metalcraft — That creature gets +4/+4 until end of turn instead if you control three or more artifacts.
|
||||
this.getSpellAbility().addEffect(new ConditionalContinuousEffect(new BoostTargetEffect(2, 2, Duration.EndOfTurn),
|
||||
new LockedInCondition(MetalcraftCondition.instance), effectText));
|
||||
this.getSpellAbility().setAbilityWord(AbilityWord.METALCRAFT);
|
||||
this.getSpellAbility().addHint(MetalcraftHint.instance);
|
||||
}
|
||||
|
||||
|
|
|
@ -29,7 +29,6 @@ public final class MoltenPsyche extends CardImpl {
|
|||
// <i>Metalcraft</i> — If you control three or more artifacts, Molten Psyche deals damage to each opponent equal to the number of cards that player has drawn this turn.
|
||||
this.getSpellAbility().addEffect(new MoltenPsycheEffect());
|
||||
this.getSpellAbility().addWatcher(new MoltenPsycheWatcher());
|
||||
this.getSpellAbility().setAbilityWord(AbilityWord.METALCRAFT);
|
||||
this.getSpellAbility().addHint(MetalcraftHint.instance);
|
||||
}
|
||||
|
||||
|
|
|
@ -12,13 +12,7 @@ import mage.abilities.effects.OneShotEffect;
|
|||
import mage.cards.Card;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.Layer;
|
||||
import mage.constants.Outcome;
|
||||
import mage.constants.SubLayer;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.Zone;
|
||||
import mage.constants.*;
|
||||
import mage.filter.common.FilterArtifactCard;
|
||||
import mage.game.Game;
|
||||
import mage.game.permanent.Permanent;
|
||||
|
@ -39,7 +33,7 @@ public final class MyrWelder extends CardImpl {
|
|||
// Imprint - {tap}: Exile target artifact card from a graveyard
|
||||
SimpleActivatedAbility ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new MyrWelderEffect(), new TapSourceCost());
|
||||
ability.addTarget(new TargetCardInGraveyard(new FilterArtifactCard("artifact card from a graveyard")));
|
||||
this.addAbility(ability);
|
||||
this.addAbility(ability.setAbilityWord(AbilityWord.IMPRINT));
|
||||
|
||||
// Myr Welder has all activated abilities of all cards exiled with it
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new MyrWelderContinuousEffect()));
|
||||
|
|
|
@ -32,7 +32,7 @@ public final class ObNixilisTheFallen extends CardImpl {
|
|||
// Landfall - Whenever a land enters the battlefield under your control, you may have target player lose 3 life.
|
||||
// If you do, put three +1/+1 counters on Ob Nixilis, the Fallen.
|
||||
Ability ability = new LandfallAbility(new LoseLifeTargetEffect(3), true);
|
||||
ability.addEffect(new AddCountersSourceEffect(CounterType.P1P1.createInstance(3)));
|
||||
ability.addEffect(new AddCountersSourceEffect(CounterType.P1P1.createInstance(3)).concatBy("If you do,"));
|
||||
ability.addTarget(new TargetPlayer());
|
||||
this.addAbility(ability);
|
||||
}
|
||||
|
|
|
@ -26,7 +26,7 @@ public final class PainfulTruths extends CardImpl {
|
|||
effect.setText("You draw X cards");
|
||||
getSpellAbility().addEffect(effect);
|
||||
effect = new LoseLifeSourceControllerEffect(ColorsOfManaSpentToCastCount.getInstance());
|
||||
effect.setText("and lose X life, where X is the number of colors of mana spent to cast this spell");
|
||||
effect.setText("and you lose X life, where X is the number of colors of mana spent to cast this spell");
|
||||
getSpellAbility().addEffect(effect);
|
||||
}
|
||||
|
||||
|
|
|
@ -32,7 +32,7 @@ public final class PanopticMirror extends CardImpl {
|
|||
// Imprint - {X}, {tap}: You may exile an instant or sorcery card with converted mana cost X from your hand.
|
||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new PanopticMirrorExileEffect(), new VariableManaCost());
|
||||
ability.addCost(new TapSourceCost());
|
||||
this.addAbility(ability);
|
||||
this.addAbility(ability.setAbilityWord(AbilityWord.IMPRINT));
|
||||
// At the beginning of your upkeep, you may copy a card exiled with Panoptic Mirror. If you do, you may cast the copy without paying its mana cost.
|
||||
this.addAbility(new BeginningOfUpkeepTriggeredAbility(new PanopticMirrorCastEffect(), TargetController.YOU, true));
|
||||
}
|
||||
|
|
|
@ -12,13 +12,7 @@ import mage.abilities.effects.OneShotEffect;
|
|||
import mage.cards.Card;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.Layer;
|
||||
import mage.constants.Outcome;
|
||||
import mage.constants.SubLayer;
|
||||
import mage.constants.Zone;
|
||||
import mage.constants.*;
|
||||
import mage.filter.common.FilterCreaturePermanent;
|
||||
import mage.filter.predicate.Predicates;
|
||||
import mage.filter.predicate.permanent.TokenPredicate;
|
||||
|
@ -50,7 +44,7 @@ public final class PhyrexianIngester extends CardImpl {
|
|||
// Imprint - When Phyrexian Ingester enters the battlefield, you may exile target nontoken creature.
|
||||
Ability ability = new EntersBattlefieldTriggeredAbility(new PhyrexianIngesterImprintEffect(), true);
|
||||
ability.addTarget(new TargetPermanent(filter));
|
||||
this.addAbility(ability);
|
||||
this.addAbility(ability.setAbilityWord(AbilityWord.IMPRINT));
|
||||
// Phyrexian Ingester gets +X/+Y, where X is the exiled creature card's power and Y is its toughness.
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new PhyrexianIngesterBoostEffect()));
|
||||
}
|
||||
|
|
|
@ -30,7 +30,7 @@ public final class ProteanRaider extends CardImpl {
|
|||
|
||||
// <i>Raid</i> — If you attacked with a creature this turn, you may have Protean Raider enter the battlefield as a copy of any creature on the battlefield.
|
||||
Ability ability = new EntersBattlefieldAbility(new CopyPermanentEffect(), true, RaidCondition.instance,
|
||||
"<i>Raid</i> — If you attacked with a creature this turn, you may have {this} enter the battlefield as a copy of any creature on the battlefield.", "");
|
||||
"<i>Raid</i> — If you attacked this turn, you may have {this} enter the battlefield as a copy of any creature on the battlefield.", "");
|
||||
ability.setAbilityWord(AbilityWord.RAID);
|
||||
ability.addHint(RaidHint.instance);
|
||||
this.addAbility(ability, new PlayerAttackedWatcher());
|
||||
|
|
|
@ -26,7 +26,7 @@ public final class RazorfieldRhino extends CardImpl {
|
|||
|
||||
// Metalcraft — Razorfield Rhino gets +2/+2 as long as you control three or more artifacts.
|
||||
ContinuousEffect effect1 = new BoostSourceEffect(2, 2, Duration.WhileOnBattlefield);
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinuousEffect(effect1, MetalcraftCondition.instance, "<i>Metalcraft</i> — Razorfield Rhino gets +2/+2 as long as you control three or more artifacts"))
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinuousEffect(effect1, MetalcraftCondition.instance, "{this} gets +2/+2 as long as you control three or more artifacts"))
|
||||
.setAbilityWord(AbilityWord.METALCRAFT)
|
||||
.addHint(MetalcraftHint.instance));
|
||||
}
|
||||
|
|
|
@ -28,7 +28,7 @@ public final class RetreatToHagra extends CardImpl {
|
|||
// <i>Landfall</i>- Whenever a land enters the battlefield under your control,
|
||||
// choose one - Target creature gets +1/+0 and gains deathtouch until end of turn;
|
||||
LandfallAbility ability = new LandfallAbility(new BoostTargetEffect(1, 0, Duration.EndOfTurn), false);
|
||||
Effect effect = new GainAbilityTargetEffect(DeathtouchAbility.getInstance(), Duration.EndOfTurn);
|
||||
Effect effect = new GainAbilityTargetEffect(DeathtouchAbility.getInstance(), Duration.EndOfTurn).setText("and gains deathtouch until end of turn");
|
||||
effect.setOutcome(Outcome.Benefit);
|
||||
ability.addEffect(effect);
|
||||
ability.addTarget(new TargetCreaturePermanent());
|
||||
|
|
|
@ -26,7 +26,7 @@ public final class RustedRelic extends CardImpl {
|
|||
new ConditionalContinuousEffect(
|
||||
new BecomesCreatureSourceEffect(new RustedRelicToken(), "artifact", Duration.WhileOnBattlefield),
|
||||
MetalcraftCondition.instance,
|
||||
"<i>Metalcraft</i> — {this} is a 5/5 Golem artifact creature as long as you control three or more artifacts"))
|
||||
"{this} is a 5/5 Golem artifact creature as long as you control three or more artifacts"))
|
||||
.setAbilityWord(AbilityWord.METALCRAFT)
|
||||
.addHint(MetalcraftHint.instance)
|
||||
);
|
||||
|
|
|
@ -29,7 +29,7 @@ public final class SemblanceAnvil extends CardImpl {
|
|||
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
|
||||
|
||||
// Imprint - When Semblance Anvil enters the battlefield, you may exile a nonland card from your hand.
|
||||
this.addAbility(new EntersBattlefieldTriggeredAbility(new SemblanceAnvilEffect(), true));
|
||||
this.addAbility(new EntersBattlefieldTriggeredAbility(new SemblanceAnvilEffect(), true).setAbilityWord(AbilityWord.IMPRINT));
|
||||
|
||||
// Spells you cast that share a card type with the exiled card cost {2} less to cast.
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new SemblanceAnvilCostReductionEffect()));
|
||||
|
|
|
@ -48,7 +48,7 @@ class ShoalSerpentEffect extends ContinuousEffectImpl {
|
|||
|
||||
public ShoalSerpentEffect() {
|
||||
super(Duration.EndOfTurn, Outcome.AddAbility);
|
||||
staticText = "Until end of turn, {this} loses defender";
|
||||
staticText = "{this} loses defender until end of turn";
|
||||
}
|
||||
|
||||
public ShoalSerpentEffect(final ShoalSerpentEffect effect) {
|
||||
|
|
|
@ -27,7 +27,7 @@ public final class SiegehornCeratops extends CardImpl {
|
|||
// <i>Enrage</i> — Whenever Siegehorn Ceratops is dealt damage, put two +1/+1 counters on it.
|
||||
this.addAbility(new DealtDamageToSourceTriggeredAbility(
|
||||
new AddCountersSourceEffect(CounterType.P1P1.createInstance(2))
|
||||
.setText("put two +1/+1 counter on it"), false, true));
|
||||
.setText("put two +1/+1 counters on it"), false, true));
|
||||
}
|
||||
|
||||
private SiegehornCeratops(final SiegehornCeratops card) {
|
||||
|
|
|
@ -34,7 +34,7 @@ public final class SilverSeraph extends CardImpl {
|
|||
// Threshold - Other creatures you control get +2/+2 as long as seven or more cards are in your graveyard.
|
||||
Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinuousEffect(
|
||||
new BoostControlledEffect(2, 2, Duration.WhileOnBattlefield, true), new CardsInControllerGraveyardCondition(7),
|
||||
"other creatures you control +2/+2 as long as seven or more cards are in your graveyard"));
|
||||
"other creatures you control get +2/+2 as long as seven or more cards are in your graveyard"));
|
||||
ability.setAbilityWord(AbilityWord.THRESHOLD);
|
||||
this.addAbility(ability);
|
||||
}
|
||||
|
|
|
@ -34,9 +34,8 @@ public final class SlaughterhouseBouncer extends CardImpl {
|
|||
Ability ability = new ConditionalInterveningIfTriggeredAbility(
|
||||
new DiesSourceTriggeredAbility(new BoostTargetEffect(-3, -3, Duration.EndOfTurn)),
|
||||
HellbentCondition.instance,
|
||||
"When {this} dies, if you have no cards in hand, target creature gets -3/-3 until end of turn."
|
||||
AbilityWord.HELLBENT.formatWord() + "When {this} dies, if you have no cards in hand, target creature gets -3/-3 until end of turn."
|
||||
);
|
||||
ability.setAbilityWord(AbilityWord.HELLBENT);
|
||||
ability.addTarget(new TargetCreaturePermanent());
|
||||
this.addAbility(ability);
|
||||
}
|
||||
|
|
|
@ -19,7 +19,7 @@ import java.util.UUID;
|
|||
*/
|
||||
public final class SnapsailGlider extends CardImpl {
|
||||
|
||||
protected static String rule = "<i>Metalcraft</i> — Snapsail Glider has flying as long as you control three or more artifacts";
|
||||
protected static String rule = "{this} has flying as long as you control three or more artifacts";
|
||||
|
||||
public SnapsailGlider(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{3}");
|
||||
|
|
|
@ -11,6 +11,7 @@ import mage.abilities.hint.common.MorbidHint;
|
|||
import mage.abilities.keyword.ReachAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.AbilityWord;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.counters.CounterType;
|
||||
|
@ -32,7 +33,7 @@ public final class SomberwaldSpider extends CardImpl {
|
|||
// <i>Morbid</i> — Somberwald Spider enters the battlefield with two +1/+1 counters on it if a creature died this turn.
|
||||
this.addAbility(new EntersBattlefieldAbility(
|
||||
new ConditionalOneShotEffect(new AddCountersSourceEffect(CounterType.P1P1.createInstance(2)), MorbidCondition.instance, ""),
|
||||
"with two +1/+1 counters on it if a creature died this turn").addHint(MorbidHint.instance));
|
||||
"with two +1/+1 counters on it if a creature died this turn").addHint(MorbidHint.instance).setAbilityWord(AbilityWord.MORBID));
|
||||
}
|
||||
|
||||
private SomberwaldSpider(final SomberwaldSpider card) {
|
||||
|
|
|
@ -19,7 +19,7 @@ import java.util.UUID;
|
|||
*/
|
||||
public final class SpiralingDuelist extends CardImpl {
|
||||
|
||||
private static final String effectText = "<i>Metalcraft</i> — Spiraling Duelist has double strike as long as you control three or more artifacts.";
|
||||
private static final String effectText = "{this} has double strike as long as you control three or more artifacts.";
|
||||
|
||||
public SpiralingDuelist(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}{R}");
|
||||
|
|
|
@ -22,7 +22,7 @@ import java.util.UUID;
|
|||
*/
|
||||
public final class SpireSerpent extends CardImpl {
|
||||
|
||||
private static final String abilityText1 = "<i>Metalcraft</i> — As long as you control three or more artifacts, {this} gets +2/+2";
|
||||
private static final String abilityText1 = "As long as you control three or more artifacts, {this} gets +2/+2";
|
||||
|
||||
public SpireSerpent(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{U}");
|
||||
|
|
|
@ -14,10 +14,7 @@ import mage.abilities.keyword.EquipAbility;
|
|||
import mage.cards.Card;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.Outcome;
|
||||
import mage.constants.Zone;
|
||||
import mage.constants.*;
|
||||
import mage.filter.FilterPermanent;
|
||||
import mage.filter.common.FilterLandCard;
|
||||
import mage.filter.predicate.mageobject.NamePredicate;
|
||||
|
@ -35,7 +32,7 @@ public final class StrataScythe extends CardImpl {
|
|||
public StrataScythe(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
|
||||
this.subtype.add(SubType.EQUIPMENT);
|
||||
this.addAbility(new EntersBattlefieldTriggeredAbility(new StrataScytheImprintEffect()));
|
||||
this.addAbility(new EntersBattlefieldTriggeredAbility(new StrataScytheImprintEffect()).setAbilityWord(AbilityWord.IMPRINT));
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEquippedEffect(SameNameAsExiledCountValue.getInstance(), SameNameAsExiledCountValue.getInstance())));
|
||||
this.addAbility(new EquipAbility(Outcome.BoostCreature, new GenericManaCost(3)));
|
||||
}
|
||||
|
|
|
@ -52,7 +52,7 @@ class SummaryJudgementEffect extends OneShotEffect {
|
|||
super(Outcome.Benefit);
|
||||
staticText = "{this} deals 3 damage to target tapped creature." +
|
||||
"<br><i>Addendum</i> — If you cast this spell during your main phase, " +
|
||||
"it deals 5 damage to that creature instead.";
|
||||
"it deals 5 damage.";
|
||||
}
|
||||
|
||||
private SummaryJudgementEffect(final SummaryJudgementEffect effect) {
|
||||
|
|
|
@ -27,7 +27,7 @@ public final class SunCrownedHunters extends CardImpl {
|
|||
|
||||
// <i>Enrage</i> — Whenever Sun-Crowned Hunters is dealt damage, it deals 3 damage to target opponent.
|
||||
Ability ability = new DealtDamageToSourceTriggeredAbility(
|
||||
new DamageTargetEffect(3).setText("it deals 3 damage to target opponent"), false, true
|
||||
new DamageTargetEffect(3, "it"), false, true
|
||||
);
|
||||
ability.addTarget(new TargetOpponentOrPlaneswalker());
|
||||
this.addAbility(ability);
|
||||
|
|
|
@ -1,14 +1,9 @@
|
|||
|
||||
|
||||
package mage.cards.s;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.ActivatedAbility;
|
||||
import mage.abilities.common.LandfallAbility;
|
||||
import mage.abilities.common.SimpleActivatedAbility;
|
||||
import mage.abilities.costs.Cost;
|
||||
import mage.abilities.costs.Costs;
|
||||
import mage.abilities.costs.CostsImpl;
|
||||
import mage.abilities.costs.CompositeCost;
|
||||
import mage.abilities.costs.common.RemoveCountersSourceCost;
|
||||
import mage.abilities.costs.common.SacrificeSourceCost;
|
||||
import mage.abilities.effects.common.GainLifeEffect;
|
||||
|
@ -16,24 +11,25 @@ import mage.abilities.effects.common.counter.AddCountersSourceEffect;
|
|||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Zone;
|
||||
import mage.counters.CounterType;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author BetaSteward_at_googlemail.com
|
||||
*/
|
||||
public final class SunspringExpedition extends CardImpl {
|
||||
|
||||
public SunspringExpedition(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{W}");
|
||||
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{W}");
|
||||
|
||||
|
||||
this.addAbility(new LandfallAbility(new AddCountersSourceEffect(CounterType.QUEST.createInstance()), true));
|
||||
Costs<Cost> costs = new CostsImpl<>();
|
||||
costs.add(new RemoveCountersSourceCost(CounterType.QUEST.createInstance(3)));
|
||||
costs.add(new SacrificeSourceCost());
|
||||
ActivatedAbility ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new GainLifeEffect(8), costs);
|
||||
ActivatedAbility ability = new SimpleActivatedAbility(
|
||||
new GainLifeEffect(8), new CompositeCost(
|
||||
new RemoveCountersSourceCost(CounterType.QUEST.createInstance(3)),
|
||||
new SacrificeSourceCost(), "Remove three quest counters from {this} and sacrifice it"
|
||||
));
|
||||
this.addAbility(ability);
|
||||
}
|
||||
|
||||
|
@ -45,5 +41,4 @@ public final class SunspringExpedition extends CardImpl {
|
|||
public SunspringExpedition copy() {
|
||||
return new SunspringExpedition(this);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -7,6 +7,7 @@ import mage.abilities.effects.common.DamageTargetEffect;
|
|||
import mage.abilities.hint.common.DomainHint;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.AbilityWord;
|
||||
import mage.constants.CardType;
|
||||
import mage.target.common.TargetAnyTarget;
|
||||
|
||||
|
@ -24,6 +25,7 @@ public final class TribalFlames extends CardImpl {
|
|||
this.getSpellAbility().addEffect(new DamageTargetEffect(new DomainValue()));
|
||||
this.getSpellAbility().addTarget(new TargetAnyTarget());
|
||||
this.getSpellAbility().addHint(DomainHint.instance);
|
||||
this.getSpellAbility().setAbilityWord(AbilityWord.DOMAIN);
|
||||
}
|
||||
|
||||
private TribalFlames(final TribalFlames card) {
|
||||
|
|
|
@ -11,6 +11,7 @@ import mage.abilities.effects.common.counter.AddCountersTargetEffect;
|
|||
import mage.abilities.hint.common.MorbidHint;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.AbilityWord;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.Outcome;
|
||||
|
@ -34,7 +35,7 @@ public final class UlvenwaldBear extends CardImpl {
|
|||
Ability ability = new ConditionalInterveningIfTriggeredAbility(new EntersBattlefieldTriggeredAbility(new AddCountersTargetEffect(CounterType.P1P1.createInstance(2), Outcome.BoostCreature)),
|
||||
MorbidCondition.instance, "When {this} enters the battlefield, if a creature died this turn, put two +1/+1 counters on target creature.");
|
||||
ability.addTarget(new TargetCreaturePermanent());
|
||||
this.addAbility(ability.addHint(MorbidHint.instance));
|
||||
this.addAbility(ability.addHint(MorbidHint.instance).setAbilityWord(AbilityWord.MORBID));
|
||||
}
|
||||
|
||||
private UlvenwaldBear(final UlvenwaldBear card) {
|
||||
|
|
|
@ -51,7 +51,7 @@ class UnbreakableFormationEffect extends OneShotEffect {
|
|||
UnbreakableFormationEffect() {
|
||||
super(Outcome.Benefit);
|
||||
staticText = "<br><i>Addendum</i> — If you cast this spell during your main phase, " +
|
||||
"put a +1/+1 counter on each of those creatures, and they also gain vigilance until end of turn.";
|
||||
"put a +1/+1 counter on each of those creatures and they gain vigilance until end of turn.";
|
||||
}
|
||||
|
||||
private UnbreakableFormationEffect(final UnbreakableFormationEffect effect) {
|
||||
|
|
|
@ -27,7 +27,7 @@ public final class UnholyHunger extends CardImpl {
|
|||
|
||||
// <i>Spell mastery</i> — If there are two or more instant and/or sorcery cards in your graveyard, you gain 2 life.
|
||||
Effect effect = new ConditionalOneShotEffect(new GainLifeEffect(2),
|
||||
SpellMasteryCondition.instance, "<i>Spell mastery</i> — If there are two or more instant and/or sorcery cards in your graveyard, you gain 2 life");
|
||||
SpellMasteryCondition.instance, "<br><i>Spell mastery</i> — If there are two or more instant and/or sorcery cards in your graveyard, you gain 2 life");
|
||||
this.getSpellAbility().addEffect(effect);
|
||||
}
|
||||
|
||||
|
|
|
@ -39,7 +39,7 @@ public final class WarNameAspirant extends CardImpl {
|
|||
// <i>Raid</i> — War-Name Aspirant enters the battlefield with a +1/+1 counter on it if you attacked this turn.
|
||||
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance(1), false),
|
||||
RaidCondition.instance,
|
||||
"<i>Raid</i> — {this} enters the battlefield with a +1/+1 counter on it if you attacked this turn",
|
||||
"<i>Raid</i> — {this} enters the battlefield with a +1/+1 counter on it if you attacked this turn.",
|
||||
"{this} enters the battlefield with a +1/+1 counter")
|
||||
.setAbilityWord(AbilityWord.RAID)
|
||||
.addHint(RaidHint.instance),
|
||||
|
|
|
@ -1,18 +1,15 @@
|
|||
|
||||
package mage.cards.z;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility;
|
||||
import mage.abilities.effects.Effect;
|
||||
import mage.abilities.common.LandfallAbility;
|
||||
import mage.abilities.effects.common.CreateTokenEffect;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.filter.common.FilterLandPermanent;
|
||||
import mage.game.permanent.token.ZendikarsRoilElementalToken;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author LevelX2
|
||||
*/
|
||||
public final class ZendikarsRoil extends CardImpl {
|
||||
|
@ -21,8 +18,7 @@ public final class ZendikarsRoil extends CardImpl {
|
|||
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{G}{G}");
|
||||
|
||||
// Whenever a land enters the battlefield under your control, create a 2/2 green Elemental creature token.
|
||||
Effect effect = new CreateTokenEffect(new ZendikarsRoilElementalToken());
|
||||
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(effect, new FilterLandPermanent("a land")));
|
||||
this.addAbility(new LandfallAbility(new CreateTokenEffect(new ZendikarsRoilElementalToken())));
|
||||
}
|
||||
|
||||
private ZendikarsRoil(final ZendikarsRoil card) {
|
||||
|
|
|
@ -22,7 +22,6 @@ public class ConstellationAbility extends TriggeredAbilityImpl {
|
|||
|
||||
public ConstellationAbility(Effect effect) {
|
||||
this(effect, false);
|
||||
setAbilityWord(AbilityWord.CONSTELLATION);
|
||||
}
|
||||
|
||||
public ConstellationAbility(Effect effect, boolean optional) {
|
||||
|
@ -32,6 +31,7 @@ public class ConstellationAbility extends TriggeredAbilityImpl {
|
|||
public ConstellationAbility(Effect effect, boolean optional, boolean thisOr) {
|
||||
super(Zone.BATTLEFIELD, effect, optional);
|
||||
this.thisOr = thisOr;
|
||||
setAbilityWord(AbilityWord.CONSTELLATION);
|
||||
}
|
||||
|
||||
public ConstellationAbility(final ConstellationAbility ability) {
|
||||
|
|
|
@ -37,7 +37,8 @@ public class StriveAbility extends SimpleStaticAbility {
|
|||
|
||||
@Override
|
||||
public String getRule() {
|
||||
return new StringBuilder("this spell costs ").append(striveCost).append(" more to cast for each target beyond the first.").toString();
|
||||
return abilityWord.formatWord() + "This spell costs "
|
||||
+ striveCost + " more to cast for each target beyond the first.";
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -31,7 +31,7 @@ public class IntimidateAbility extends EvasionAbility implements MageSingleton {
|
|||
|
||||
@Override
|
||||
public String getRule() {
|
||||
return "Intimidate";
|
||||
return "intimidate";
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -21,7 +21,7 @@ public final class EldraziHorrorToken extends TokenImpl {
|
|||
}
|
||||
|
||||
public EldraziHorrorToken() {
|
||||
super("Eldrazi Horror", "3/2 colorless Eldrazi Horror creature");
|
||||
super("Eldrazi Horror", "3/2 colorless Eldrazi Horror creature token");
|
||||
cardType.add(CardType.CREATURE);
|
||||
subtype.add(SubType.ELDRAZI);
|
||||
subtype.add(SubType.HORROR);
|
||||
|
|
|
@ -12,7 +12,7 @@ import mage.MageInt;
|
|||
public final class GrovetenderDruidsPlantToken extends TokenImpl {
|
||||
|
||||
public GrovetenderDruidsPlantToken() {
|
||||
super("Plant", "1/1 green Plant creature");
|
||||
super("Plant", "1/1 green Plant creature token");
|
||||
cardType.add(CardType.CREATURE);
|
||||
color.setGreen(true);
|
||||
subtype.add(SubType.PLANT);
|
||||
|
|
|
@ -1008,7 +1008,7 @@
|
|||
"manaCost": "{1}{U}",
|
||||
"name": "Chart a Course",
|
||||
"number": "48",
|
||||
"originalText": "Draw two cards. Then discard a card unless you attacked with a creature this turn.",
|
||||
"originalText": "Draw two cards. Then discard a card unless you attacked this turn.",
|
||||
"originalType": "Sorcery",
|
||||
"printings": [
|
||||
"JMP",
|
||||
|
|
Loading…
Reference in a new issue