Update wording (nonfunctional)

This commit is contained in:
Noah Gleason 2018-07-06 20:21:17 -04:00
parent 90c5ec7019
commit 0ab7345fa3
No known key found for this signature in database
GPG key ID: EC030EC6B0650A40
41 changed files with 89 additions and 90 deletions

View file

@ -43,7 +43,7 @@ class ApproachOfTheSecondSunEffect extends OneShotEffect {
public ApproachOfTheSecondSunEffect() { public ApproachOfTheSecondSunEffect() {
super(Outcome.Win); super(Outcome.Win);
this.staticText this.staticText
= "If {this} was cast from your hand and you've cast another spell named Approach of the Second Sun this game, you win the game. " = "If this spell was cast from your hand and you've cast another spell named Approach of the Second Sun this game, you win the game. "
+ "Otherwise, put {this} into its owner's library seventh from the top and you gain 7 life."; + "Otherwise, put {this} into its owner's library seventh from the top and you gain 7 life.";
} }

View file

@ -32,9 +32,9 @@ public final class ArtisanOfForms extends CardImpl {
this.power = new MageInt(1); this.power = new MageInt(1);
this.toughness = new MageInt(1); this.toughness = new MageInt(1);
// <i>Heroic</i> &mdash; Whenever you cast a spell that targets Artisan of Forms, you may have Artisan of Forms become a copy of target creature and gain this ability. // <i>Heroic</i> &mdash; Whenever you cast a spell that targets Artisan of Forms, you may have Artisan of Forms become a copy of target creature, except it has this ability.
Effect effect = new CopyPermanentEffect(StaticFilters.FILTER_PERMANENT_CREATURE, new ArtisanOfFormsApplyToPermanent(), true); Effect effect = new CopyPermanentEffect(StaticFilters.FILTER_PERMANENT_CREATURE, new ArtisanOfFormsApplyToPermanent(), true);
effect.setText("have {this} become a copy of target creature and gain this ability"); effect.setText("have {this} become a copy of target creature, except it has this ability");
Ability ability = new HeroicAbility(effect, true); Ability ability = new HeroicAbility(effect, true);
ability.addTarget(new TargetCreaturePermanent()); ability.addTarget(new TargetCreaturePermanent());
this.addAbility(ability); this.addAbility(ability);
@ -55,7 +55,7 @@ class ArtisanOfFormsApplyToPermanent extends ApplyToPermanent {
@Override @Override
public boolean apply(Game game, MageObject mageObject, Ability source, UUID copyToObjectId) { public boolean apply(Game game, MageObject mageObject, Ability source, UUID copyToObjectId) {
Effect effect = new CopyPermanentEffect(new ArtisanOfFormsApplyToPermanent()); Effect effect = new CopyPermanentEffect(new ArtisanOfFormsApplyToPermanent());
effect.setText("have {this} become a copy of target creature and gain this ability"); effect.setText("have {this} become a copy of target creature, except it has this ability");
mageObject.getAbilities().add(new HeroicAbility(effect, true)); mageObject.getAbilities().add(new HeroicAbility(effect, true));
return true; return true;
} }
@ -63,7 +63,7 @@ class ArtisanOfFormsApplyToPermanent extends ApplyToPermanent {
@Override @Override
public boolean apply(Game game, Permanent permanent, Ability source, UUID copyToObjectId) { public boolean apply(Game game, Permanent permanent, Ability source, UUID copyToObjectId) {
Effect effect = new CopyPermanentEffect(new ArtisanOfFormsApplyToPermanent()); Effect effect = new CopyPermanentEffect(new ArtisanOfFormsApplyToPermanent());
effect.setText("have {this} become a copy of target creature and gain this ability"); effect.setText("have {this} become a copy of target creature, except it has this ability");
permanent.addAbility(new HeroicAbility(effect, true), game); permanent.addAbility(new HeroicAbility(effect, true), game);
return true; return true;
} }

View file

@ -36,7 +36,7 @@ public final class CemeteryPuca extends CardImpl {
this.power = new MageInt(1); this.power = new MageInt(1);
this.toughness = new MageInt(2); this.toughness = new MageInt(2);
// Whenever a creature dies, you may pay {1}. If you do, Cemetery Puca becomes a copy of that creature and gains this ability. // Whenever a creature dies, you may pay {1}. If you do, Cemetery Puca becomes a copy of that creature, except it has this ability.
this.addAbility(new DiesCreatureTriggeredAbility(new DoIfCostPaid(new CemeteryPucaEffect(), new ManaCostsImpl("{1}")), false, new FilterCreaturePermanent("a creature"), true)); this.addAbility(new DiesCreatureTriggeredAbility(new DoIfCostPaid(new CemeteryPucaEffect(), new ManaCostsImpl("{1}")), false, new FilterCreaturePermanent("a creature"), true));
} }
@ -55,7 +55,7 @@ class CemeteryPucaEffect extends OneShotEffect {
public CemeteryPucaEffect() { public CemeteryPucaEffect() {
super(Outcome.Copy); super(Outcome.Copy);
staticText = " {this} becomes a copy of that creature and gains this ability"; staticText = " {this} becomes a copy of that creature, except it has this ability";
} }
public CemeteryPucaEffect(final CemeteryPucaEffect effect) { public CemeteryPucaEffect(final CemeteryPucaEffect effect) {

View file

@ -41,7 +41,7 @@ public final class ChoArrimLegate extends CardImpl {
// Protection from black // Protection from black
this.addAbility(ProtectionAbility.from(ObjectColor.BLACK)); this.addAbility(ProtectionAbility.from(ObjectColor.BLACK));
// If an opponent controls a Swamp and you control a Plains, you may cast Cho-Arrim Legate without paying its mana cost. // If an opponent controls a Swamp and you control a Plains, you may cast this spell without paying its mana cost.
Condition condition = new CompoundCondition("If an opponent controls a Swamp and you control a Plains", Condition condition = new CompoundCondition("If an opponent controls a Swamp and you control a Plains",
new OpponentControlsPermanentCondition(filterSwamp), new OpponentControlsPermanentCondition(filterSwamp),
new PermanentsOnTheBattlefieldCondition(filterPlains)); new PermanentsOnTheBattlefieldCondition(filterPlains));

View file

@ -32,9 +32,9 @@ public final class DacksDuplicate extends CardImpl {
this.power = new MageInt(0); this.power = new MageInt(0);
this.toughness = new MageInt(0); this.toughness = new MageInt(0);
// You may have Dack's Duplicate enter the battlefield as a copy of any creature on the battlefield except it gains haste and dethrone. // You may have Dack's Duplicate enter the battlefield as a copy of any creature on the battlefield except it has haste and dethrone.
Effect effect = new CopyPermanentEffect(StaticFilters.FILTER_PERMANENT_CREATURE, new DacksDuplicateApplyToPermanent()); Effect effect = new CopyPermanentEffect(StaticFilters.FILTER_PERMANENT_CREATURE, new DacksDuplicateApplyToPermanent());
effect.setText("as a copy of any creature on the battlefield except it gains haste and dethrone"); effect.setText("as a copy of any creature on the battlefield except it has haste and dethrone");
this.addAbility(new EntersBattlefieldAbility(effect, true)); this.addAbility(new EntersBattlefieldAbility(effect, true));
} }

View file

@ -40,7 +40,7 @@ public final class DeepwoodLegate extends CardImpl {
this.power = new MageInt(1); this.power = new MageInt(1);
this.toughness = new MageInt(1); this.toughness = new MageInt(1);
// If an opponent controls a Forest and you control a Swamp, you may cast Deepwood Legate without paying its mana cost. // If an opponent controls a Forest and you control a Swamp, you may cast this spell without paying its mana cost.
Condition condition = new CompoundCondition("If an opponent controls a Forest and you control a Swamp", Condition condition = new CompoundCondition("If an opponent controls a Forest and you control a Swamp",
new OpponentControlsPermanentCondition(filterForest), new OpponentControlsPermanentCondition(filterForest),
new PermanentsOnTheBattlefieldCondition(filterSwamp)); new PermanentsOnTheBattlefieldCondition(filterSwamp));

View file

@ -36,7 +36,7 @@ public final class DimirDoppelganger extends CardImpl {
this.power = new MageInt(0); this.power = new MageInt(0);
this.toughness = new MageInt(2); this.toughness = new MageInt(2);
// {1}{U}{B}: Exile target creature card from a graveyard. Dimir Doppelganger becomes a copy of that card and gains this ability. // {1}{U}{B}: Exile target creature card from a graveyard. Dimir Doppelganger becomes a copy of that card, except it has this ability.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DimirDoppelgangerEffect(), new ManaCostsImpl("{1}{U}{B}")); Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DimirDoppelgangerEffect(), new ManaCostsImpl("{1}{U}{B}"));
ability.addTarget(new TargetCardInGraveyard(new FilterCreatureCard("creature card in a graveyard"))); ability.addTarget(new TargetCardInGraveyard(new FilterCreatureCard("creature card in a graveyard")));
this.addAbility(ability); this.addAbility(ability);
@ -57,7 +57,7 @@ class DimirDoppelgangerEffect extends OneShotEffect {
DimirDoppelgangerEffect() { DimirDoppelgangerEffect() {
super(Outcome.Copy); super(Outcome.Copy);
staticText = "Exile target creature card from a graveyard. {this} becomes a copy of that card and gains this ability"; staticText = "Exile target creature card from a graveyard. {this} becomes a copy of that card, except it has this ability";
} }
DimirDoppelgangerEffect(final DimirDoppelgangerEffect effect) { DimirDoppelgangerEffect(final DimirDoppelgangerEffect effect) {

View file

@ -37,7 +37,7 @@ public final class DreamPillager extends CardImpl {
// Flying // Flying
this.addAbility(FlyingAbility.getInstance()); this.addAbility(FlyingAbility.getInstance());
// Whenever Dream Pillager deals combat damage to a player, exile that many cards from the top of your library. Until end of turn, you may cast nonland cards exiled this way. // Whenever Dream Pillager deals combat damage to a player, exile that many cards from the top of your library. Until end of turn, you may cast nonland cards from among those exiled cards.
this.addAbility(new DreamPillagerTriggeredAbility()); this.addAbility(new DreamPillagerTriggeredAbility());
} }
@ -84,7 +84,7 @@ class DreamPillagerTriggeredAbility extends TriggeredAbilityImpl {
@Override @Override
public String getRule() { public String getRule() {
return "Whenever {this} deals combat damage to a player, exile that many cards from the top of your library. Until end of turn, you may cast nonland cards exiled this way."; return "Whenever {this} deals combat damage to a player, exile that many cards from the top of your library. Until end of turn, you may cast nonland cards from among those exiled cards.";
} }
} }
@ -92,7 +92,7 @@ class DreamPillagerEffect extends OneShotEffect {
public DreamPillagerEffect() { public DreamPillagerEffect() {
super(Outcome.Benefit); super(Outcome.Benefit);
this.staticText = "exile that many cards from the top of your library. Until end of turn, you may cast nonland cards exiled this way"; this.staticText = "exile that many cards from the top of your library. Until end of turn, you may cast nonland cards from among those exiled cards";
} }
public DreamPillagerEffect(final DreamPillagerEffect effect) { public DreamPillagerEffect(final DreamPillagerEffect effect) {

View file

@ -39,9 +39,9 @@ public final class EvilTwin extends CardImpl {
this.power = new MageInt(0); this.power = new MageInt(0);
this.toughness = new MageInt(0); this.toughness = new MageInt(0);
// You may have Evil Twin enter the battlefield as a copy of any creature on the battlefield except it gains "{U}{B}, {T}: Destroy target creature with the same name as this creature." // You may have Evil Twin enter the battlefield as a copy of any creature on the battlefield, except it has "{U}{B}, {T}: Destroy target creature with the same name as this creature."
Effect effect = new CopyPermanentEffect(StaticFilters.FILTER_PERMANENT_CREATURE, new EvilTwinApplyToPermanent()); Effect effect = new CopyPermanentEffect(StaticFilters.FILTER_PERMANENT_CREATURE, new EvilTwinApplyToPermanent());
effect.setText("as a copy of any creature on the battlefield except it gains \"{U}{B}, {T}: Destroy target creature with the same name as this creature.\""); effect.setText("as a copy of any creature on the battlefield, except it has \"{U}{B}, {T}: Destroy target creature with the same name as this creature.\"");
this.addAbility(new EntersBattlefieldAbility(effect, true)); this.addAbility(new EntersBattlefieldAbility(effect, true));
} }

View file

@ -37,9 +37,9 @@ public final class Gigantoplasm extends CardImpl {
this.power = new MageInt(0); this.power = new MageInt(0);
this.toughness = new MageInt(0); this.toughness = new MageInt(0);
// You may have Gigantoplasm enter the battlefield as a copy of any creature on the battlefield except it gains "{X}: This creature has base power and toughness X/X." // You may have Gigantoplasm enter the battlefield as a copy of any creature on the battlefield, except it has "{X}: This creature has base power and toughness X/X."
Effect effect = new CopyPermanentEffect(StaticFilters.FILTER_PERMANENT_CREATURE, new GigantoplasmApplyToPermanent()); Effect effect = new CopyPermanentEffect(StaticFilters.FILTER_PERMANENT_CREATURE, new GigantoplasmApplyToPermanent());
effect.setText("a copy of any creature on the battlefield except it gains \"{X}: This creature has base power and toughness X/X.\""); effect.setText("a copy of any creature on the battlefield, except it has \"{X}: This creature has base power and toughness X/X.\"");
this.addAbility(new EntersBattlefieldAbility(effect, true)); this.addAbility(new EntersBattlefieldAbility(effect, true));
} }

View file

@ -27,7 +27,7 @@ public final class HeatShimmer extends CardImpl {
public HeatShimmer(UUID ownerId, CardSetInfo setInfo) { public HeatShimmer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{R}"); super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{R}");
// Create a token that's a copy of target creature. That token has haste and "At the beginning of the end step, exile this permanent." //Create a token that's a copy of target creature, except it has haste and "At the beginning of the end step, exile this permanent."
this.getSpellAbility().addEffect(new HeatShimmerEffect()); this.getSpellAbility().addEffect(new HeatShimmerEffect());
this.getSpellAbility().addTarget(new TargetCreaturePermanent()); this.getSpellAbility().addTarget(new TargetCreaturePermanent());
} }
@ -46,7 +46,7 @@ class HeatShimmerEffect extends OneShotEffect {
public HeatShimmerEffect() { public HeatShimmerEffect() {
super(Outcome.Copy); super(Outcome.Copy);
this.staticText = "Create a token that's a copy of target creature. That token has haste and \"At the beginning of the end step, exile this permanent.\""; this.staticText = "Create a token that's a copy of target creature, except it has haste and \"At the beginning of the end step, exile this permanent.\"";
} }
public HeatShimmerEffect(final HeatShimmerEffect effect) { public HeatShimmerEffect(final HeatShimmerEffect effect) {

View file

@ -30,7 +30,7 @@ public final class IncreasingAmbition extends CardImpl {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{B}"); super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{B}");
// Search your library for a card and put that card into your hand. If Increasing Ambition was cast from a graveyard, instead search your library for two cards and put those cards into your hand. Then shuffle your library. // Search your library for a card and put that card into your hand. If this spell was cast from a graveyard, instead search your library for two cards and put those cards into your hand. Then shuffle your library.
this.getSpellAbility().addEffect(new IncreasingAmbitionEffect()); this.getSpellAbility().addEffect(new IncreasingAmbitionEffect());
// Flashback {7}{B} // Flashback {7}{B}
@ -51,7 +51,7 @@ class IncreasingAmbitionEffect extends SearchEffect {
public IncreasingAmbitionEffect() { public IncreasingAmbitionEffect() {
super(new TargetCardInLibrary(), Outcome.DrawCard); super(new TargetCardInLibrary(), Outcome.DrawCard);
staticText = "Search your library for a card and put that card into your hand. If {this} was cast from a graveyard, instead search your library for two cards and put those cards into your hand. Then shuffle your library"; staticText = "Search your library for a card and put that card into your hand. If this spell was cast from a graveyard, instead search your library for two cards and put those cards into your hand. Then shuffle your library";
} }
public IncreasingAmbitionEffect(final IncreasingAmbitionEffect effect) { public IncreasingAmbitionEffect(final IncreasingAmbitionEffect effect) {

View file

@ -24,7 +24,7 @@ public final class IncreasingConfusion extends CardImpl {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{X}{U}"); super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{X}{U}");
// Target player puts the top X cards of their library into their graveyard. If Increasing Confusion was cast from a graveyard, that player puts twice that many cards into their graveyard instead. // Target player puts the top X cards of their library into their graveyard. If this spell was cast from a graveyard, that player puts twice that many cards into their graveyard instead.
this.getSpellAbility().addEffect(new IncreasingConfusionEffect()); this.getSpellAbility().addEffect(new IncreasingConfusionEffect());
this.getSpellAbility().addTarget(new TargetPlayer()); this.getSpellAbility().addTarget(new TargetPlayer());
@ -46,7 +46,7 @@ class IncreasingConfusionEffect extends OneShotEffect {
public IncreasingConfusionEffect() { public IncreasingConfusionEffect() {
super(Outcome.Detriment); super(Outcome.Detriment);
staticText = "Target player puts the top X cards of their library into their graveyard. If {this} was cast from a graveyard, that player puts twice that many cards into their graveyard instead"; staticText = "Target player puts the top X cards of their library into their graveyard. If this spell was cast from a graveyard, that player puts twice that many cards into their graveyard instead";
} }
public IncreasingConfusionEffect(final IncreasingConfusionEffect effect) { public IncreasingConfusionEffect(final IncreasingConfusionEffect effect) {

View file

@ -25,7 +25,7 @@ public final class IncreasingDevotion extends CardImpl {
public IncreasingDevotion(UUID ownerId, CardSetInfo setInfo) { public IncreasingDevotion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{W}{W}"); super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{W}{W}");
// Create five 1/1 white Human creature tokens. If Increasing Devotion was cast from a graveyard, create ten of those tokens instead. // Create five 1/1 white Human creature tokens. If this spell was cast from a graveyard, create ten of those tokens instead.
this.getSpellAbility().addEffect(new IncreasingDevotionEffect()); this.getSpellAbility().addEffect(new IncreasingDevotionEffect());
// Flashback {7}{W}{W} // Flashback {7}{W}{W}
@ -48,7 +48,7 @@ class IncreasingDevotionEffect extends OneShotEffect {
public IncreasingDevotionEffect() { public IncreasingDevotionEffect() {
super(Outcome.PutCreatureInPlay); super(Outcome.PutCreatureInPlay);
staticText = "Create five 1/1 white Human creature tokens. If {this} was cast from a graveyard, create ten of those tokens instead"; staticText = "Create five 1/1 white Human creature tokens. If this spell was cast from a graveyard, create ten of those tokens instead";
} }
public IncreasingDevotionEffect(final IncreasingDevotionEffect effect) { public IncreasingDevotionEffect(final IncreasingDevotionEffect effect) {

View file

@ -25,7 +25,7 @@ public final class IncreasingSavagery extends CardImpl {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{G}{G}"); super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{G}{G}");
// Put five +1/+1 counters on target creature. If Increasing Savagery was cast from a graveyard, put ten +1/+1 counters on that creature instead. // Put five +1/+1 counters on target creature. If this spell was cast from a graveyard, put ten +1/+1 counters on that creature instead.
this.getSpellAbility().addEffect(new IncreasingSavageryEffect()); this.getSpellAbility().addEffect(new IncreasingSavageryEffect());
this.getSpellAbility().addTarget(new TargetCreaturePermanent()); this.getSpellAbility().addTarget(new TargetCreaturePermanent());
@ -47,7 +47,7 @@ class IncreasingSavageryEffect extends OneShotEffect {
public IncreasingSavageryEffect() { public IncreasingSavageryEffect() {
super(Outcome.BoostCreature); super(Outcome.BoostCreature);
staticText = "Put five +1/+1 counters on target creature. If Increasing Savagery was cast from a graveyard, put ten +1/+1 counters on that creature instead"; staticText = "Put five +1/+1 counters on target creature. If this spell was cast from a graveyard, put ten +1/+1 counters on that creature instead";
} }
public IncreasingSavageryEffect(final IncreasingSavageryEffect effect) { public IncreasingSavageryEffect(final IncreasingSavageryEffect effect) {

View file

@ -38,7 +38,7 @@ public final class IncreasingVengeance extends CardImpl {
public IncreasingVengeance(UUID ownerId, CardSetInfo setInfo) { public IncreasingVengeance(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{R}{R}"); super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{R}{R}");
// Copy target instant or sorcery spell you control. If Increasing Vengeance was cast from a graveyard, copy that spell twice instead. You may choose new targets for the copies. // Copy target instant or sorcery spell you control. If this spell was cast from a graveyard, copy that spell twice instead. You may choose new targets for the copies.
this.getSpellAbility().addEffect(new IncreasingVengeanceEffect()); this.getSpellAbility().addEffect(new IncreasingVengeanceEffect());
Target target = new TargetSpell(filter); Target target = new TargetSpell(filter);
this.getSpellAbility().addTarget(target); this.getSpellAbility().addTarget(target);
@ -61,7 +61,7 @@ class IncreasingVengeanceEffect extends OneShotEffect {
public IncreasingVengeanceEffect() { public IncreasingVengeanceEffect() {
super(Outcome.BoostCreature); super(Outcome.BoostCreature);
staticText = "Copy target instant or sorcery spell you control. If Increasing Vengeance was cast from a graveyard, copy that spell twice instead. You may choose new targets for the copies"; staticText = "Copy target instant or sorcery spell you control. If this spell was cast from a graveyard, copy that spell twice instead. You may choose new targets for the copies";
} }
public IncreasingVengeanceEffect(final IncreasingVengeanceEffect effect) { public IncreasingVengeanceEffect(final IncreasingVengeanceEffect effect) {

View file

@ -49,7 +49,7 @@ public final class KikiJikiMirrorBreaker extends CardImpl {
// Haste // Haste
this.addAbility(HasteAbility.getInstance()); this.addAbility(HasteAbility.getInstance());
// {tap}: Create a token that's a copy of target nonlegendary creature you control . That token has haste. Sacrifice it at the beginning of the next end step. // {tap}: Create a token that's a copy of target nonlegendary creature you control, except it has haste. Sacrifice it at the beginning of the next end step.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new KikiJikiMirrorBreakerEffect(), new TapSourceCost()); Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new KikiJikiMirrorBreakerEffect(), new TapSourceCost());
ability.addTarget(new TargetControlledCreaturePermanent(1, 1, filter, false)); ability.addTarget(new TargetControlledCreaturePermanent(1, 1, filter, false));
this.addAbility(ability); this.addAbility(ability);
@ -70,7 +70,7 @@ class KikiJikiMirrorBreakerEffect extends OneShotEffect {
public KikiJikiMirrorBreakerEffect() { public KikiJikiMirrorBreakerEffect() {
super(Outcome.PutCreatureInPlay); super(Outcome.PutCreatureInPlay);
this.staticText = "Create a token that's a copy of target nonlegendary creature you control. That token has haste. Sacrifice it at the beginning of the next end step"; this.staticText = "Create a token that's a copy of target nonlegendary creature you control, except it has haste. Sacrifice it at the beginning of the next end step";
} }
public KikiJikiMirrorBreakerEffect(final KikiJikiMirrorBreakerEffect effect) { public KikiJikiMirrorBreakerEffect(final KikiJikiMirrorBreakerEffect effect) {

View file

@ -39,7 +39,7 @@ public final class KyrenLegate extends CardImpl {
// Haste // Haste
this.addAbility(HasteAbility.getInstance()); this.addAbility(HasteAbility.getInstance());
// If an opponent controls a Plains and you control a Mountain, you may cast Kyren Legate without paying its mana cost. // If an opponent controls a Plains and you control a Mountain, you may cast this spell without paying its mana cost.
Condition condition = new CompoundCondition("If an opponent controls a Plains and you control a Mountain", Condition condition = new CompoundCondition("If an opponent controls a Plains and you control a Mountain",
new OpponentControlsPermanentCondition(filterPlains), new OpponentControlsPermanentCondition(filterPlains),
new PermanentsOnTheBattlefieldCondition(filterMountain)); new PermanentsOnTheBattlefieldCondition(filterMountain));

View file

@ -34,7 +34,7 @@ public final class Massacre extends CardImpl {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{B}{B}"); super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{B}{B}");
// If an opponent controls a Plains and you control a Swamp, you may cast Massacre without paying its mana cost. // If an opponent controls a Plains and you control a Swamp, you may cast this spell without paying its mana cost.
Condition condition = new CompoundCondition("If an opponent controls a Plains and you control a Swamp", Condition condition = new CompoundCondition("If an opponent controls a Plains and you control a Swamp",
new OpponentControlsPermanentCondition(filterPlains), new OpponentControlsPermanentCondition(filterPlains),
new PermanentsOnTheBattlefieldCondition(filterSwamp)); new PermanentsOnTheBattlefieldCondition(filterSwamp));

View file

@ -23,7 +23,7 @@ import mage.util.functions.AbilityApplier;
*/ */
public final class MercurialPretender extends CardImpl { public final class MercurialPretender extends CardImpl {
private static final String effectText = "as a copy of any creature you control except it gains \"{2}{U}{U}: Return this creature to its owner's hand.\""; private static final String effectText = "as a copy of any creature you control, except it has \"{2}{U}{U}: Return this creature to its owner's hand.\"";
public MercurialPretender(UUID ownerId, CardSetInfo setInfo) { public MercurialPretender(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}"); super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}");
@ -33,8 +33,8 @@ public final class MercurialPretender extends CardImpl {
this.power = new MageInt(0); this.power = new MageInt(0);
this.toughness = new MageInt(0); this.toughness = new MageInt(0);
// You may have Mercurial Pretender enter the battlefield as a copy of any creature you control // You may have Mercurial Pretender enter the battlefield as a copy of any creature you control,
// except it gains "{2}{U}{U}: Return this creature to its owner's hand." // except it has "{2}{U}{U}: Return this creature to its owner's hand."
Effect effect = new CopyPermanentEffect(new FilterControlledCreaturePermanent(), Effect effect = new CopyPermanentEffect(new FilterControlledCreaturePermanent(),
new AbilityApplier(new SimpleActivatedAbility(Zone.BATTLEFIELD, new ReturnToHandSourceEffect(true), new ManaCostsImpl("{2}{U}{U}")))); new AbilityApplier(new SimpleActivatedAbility(Zone.BATTLEFIELD, new ReturnToHandSourceEffect(true), new ManaCostsImpl("{2}{U}{U}"))));
effect.setText(effectText); effect.setText(effectText);

View file

@ -48,8 +48,8 @@ public final class MinionReflector extends CardImpl {
"entered the battlefield?"), "entered the battlefield?"),
filter, false, SetTargetPointer.PERMANENT, filter, false, SetTargetPointer.PERMANENT,
"Whenever a nontoken creature enters the battlefield under your control, " + "Whenever a nontoken creature enters the battlefield under your control, " +
"you may pay 2. If you do, create a token that's a copy of that creature. " + "you may pay 2. If you do, create a token that's a copy of that creature, " +
"That token has haste and \"At the beginning of the end step, sacrifice this " + "except it has haste and \"At the beginning of the end step, sacrifice this " +
"permanent.\""); "permanent.\"");
this.addAbility(ability); this.addAbility(ability);
} }
@ -69,7 +69,7 @@ class MinionReflectorEffect extends OneShotEffect {
public MinionReflectorEffect() { public MinionReflectorEffect() {
super(Outcome.PutCreatureInPlay); super(Outcome.PutCreatureInPlay);
this.staticText = "create a token that's a copy of that creature. That token has haste and \"At the beginning of the end step, sacrifice this permanent."; this.staticText = "create a token that's a copy of that creature, except it has haste and \"At the beginning of the end step, sacrifice this permanent.";
} }
public MinionReflectorEffect(final MinionReflectorEffect effect) { public MinionReflectorEffect(final MinionReflectorEffect effect) {

View file

@ -31,7 +31,7 @@ public final class MizziumTransreliquat extends CardImpl {
ability.addTarget(new TargetArtifactPermanent()); ability.addTarget(new TargetArtifactPermanent());
this.addAbility(ability); this.addAbility(ability);
// {1}{U}{R}: Mizzium Transreliquat becomes a copy of target artifact and gains this ability. // {1}{U}{R}: Mizzium Transreliquat becomes a copy of target artifact, except it has this ability.
ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new MizziumTransreliquatCopyAndGainAbilityEffect(), new ManaCostsImpl("{1}{U}{R}")); ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new MizziumTransreliquatCopyAndGainAbilityEffect(), new ManaCostsImpl("{1}{U}{R}"));
ability.addTarget(new TargetArtifactPermanent()); ability.addTarget(new TargetArtifactPermanent());
this.addAbility(ability); this.addAbility(ability);
@ -79,7 +79,7 @@ class MizziumTransreliquatCopyAndGainAbilityEffect extends OneShotEffect {
public MizziumTransreliquatCopyAndGainAbilityEffect() { public MizziumTransreliquatCopyAndGainAbilityEffect() {
super(Outcome.Benefit); super(Outcome.Benefit);
this.staticText = "{this} becomes a copy of target artifact and gains this ability"; this.staticText = "{this} becomes a copy of target artifact, except it has this ability";
} }
public MizziumTransreliquatCopyAndGainAbilityEffect(final MizziumTransreliquatCopyAndGainAbilityEffect effect) { public MizziumTransreliquatCopyAndGainAbilityEffect(final MizziumTransreliquatCopyAndGainAbilityEffect effect) {

View file

@ -33,7 +33,7 @@ public final class MoggSalvage extends CardImpl {
public MoggSalvage(UUID ownerId, CardSetInfo setInfo) { public MoggSalvage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{R}"); super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{R}");
// If an opponent controls an Island and you control a Mountain, you may cast Mogg Salvage without paying its mana cost. // If an opponent controls an Island and you control a Mountain, you may cast this spell without paying its mana cost.
Condition condition = new CompoundCondition("If an opponent controls an Island and you control a Mountain", Condition condition = new CompoundCondition("If an opponent controls an Island and you control a Mountain",
new OpponentControlsPermanentCondition(filterIsland), new OpponentControlsPermanentCondition(filterIsland),
new PermanentsOnTheBattlefieldCondition(filterMountain)); new PermanentsOnTheBattlefieldCondition(filterMountain));

View file

@ -31,7 +31,7 @@ public final class PatriciansScorn extends CardImpl {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{W}"); super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{W}");
// If you've cast another white spell this turn, you may cast Patrician's Scorn without paying its mana cost. // If you've cast another white spell this turn, you may cast this spell without paying its mana cost.
this.addAbility(new AlternativeCostSourceAbility(new CastWhiteSpellThisTurnCondition()), new PatriciansScornWatcher()); this.addAbility(new AlternativeCostSourceAbility(new CastWhiteSpellThisTurnCondition()), new PatriciansScornWatcher());
// Destroy all enchantments. // Destroy all enchantments.
this.getSpellAbility().addEffect(new DestroyAllEffect(StaticFilters.FILTER_ENCHANTMENT_PERMANENT)); this.getSpellAbility().addEffect(new DestroyAllEffect(StaticFilters.FILTER_ENCHANTMENT_PERMANENT));
@ -87,7 +87,7 @@ class PatriciansScornWatcher extends Watcher {
@Override @Override
public void watch(GameEvent event, Game game) { public void watch(GameEvent event, Game game) {
if (condition == true) { //no need to check - condition has already occured if (condition) { //no need to check - condition has already occured
return; return;
} }
if (event.getType() == EventType.SPELL_CAST && controllerId.equals(event.getPlayerId())) { if (event.getType() == EventType.SPELL_CAST && controllerId.equals(event.getPlayerId())) {

View file

@ -26,7 +26,7 @@ import java.util.UUID;
*/ */
public final class PhantasmalImage extends CardImpl { public final class PhantasmalImage extends CardImpl {
private static final String effectText = "a copy of any creature on the battlefield, except it's an Illusion in addition to its other types and it gains \"When this creature becomes the target of a spell or ability, sacrifice it.\""; private static final String effectText = "a copy of any creature on the battlefield, except it's an Illusion in addition to its other types and it has \"When this creature becomes the target of a spell or ability, sacrifice it.\"";
ApplyToPermanent phantasmalImageApplier = new ApplyToPermanent() { ApplyToPermanent phantasmalImageApplier = new ApplyToPermanent() {
@Override @Override
@ -62,7 +62,7 @@ public final class PhantasmalImage extends CardImpl {
// You may have Phantasmal Image enter the battlefield as a copy of any creature // You may have Phantasmal Image enter the battlefield as a copy of any creature
// on the battlefield, except it's an Illusion in addition to its other types and // on the battlefield, except it's an Illusion in addition to its other types and
// it gains "When this creature becomes the target of a spell or ability, sacrifice it." // it has "When this creature becomes the target of a spell or ability, sacrifice it."
Effect effect = new CopyPermanentEffect(StaticFilters.FILTER_PERMANENT_CREATURE, phantasmalImageApplier); Effect effect = new CopyPermanentEffect(StaticFilters.FILTER_PERMANENT_CREATURE, phantasmalImageApplier);
effect.setText(effectText); effect.setText(effectText);
this.addAbility(new EntersBattlefieldAbility(effect, true)); this.addAbility(new EntersBattlefieldAbility(effect, true));

View file

@ -40,7 +40,7 @@ public final class ProgenitorMimic extends CardImpl {
this.toughness = new MageInt(0); this.toughness = new MageInt(0);
// You may have Progenitor Mimic enter the battlefield as a copy of any creature on the battlefield // You may have Progenitor Mimic enter the battlefield as a copy of any creature on the battlefield
// except it gains "At the beginning of your upkeep, if this creature isn't a token, // except it has "At the beginning of your upkeep, if this creature isn't a token,
// create a token that's a copy of this creature." // create a token that's a copy of this creature."
Effect effect = new CreateTokenCopySourceEffect(); Effect effect = new CreateTokenCopySourceEffect();
effect.setText("create a token that's a copy of this creature"); effect.setText("create a token that's a copy of this creature");
@ -52,7 +52,7 @@ public final class ProgenitorMimic extends CardImpl {
"At the beginning of your upkeep, if this creature isn't a token, create a token that's a copy of this creature.") "At the beginning of your upkeep, if this creature isn't a token, create a token that's a copy of this creature.")
); );
effect = new CopyPermanentEffect(applier); effect = new CopyPermanentEffect(applier);
effect.setText("as a copy of any creature on the battlefield except it gains \"At the beginning of your upkeep, if this creature isn't a token, create a token that's a copy of this creature.\""); effect.setText("as a copy of any creature on the battlefield except it has \"At the beginning of your upkeep, if this creature isn't a token, create a token that's a copy of this creature.\"");
this.addAbility(new EntersBattlefieldAbility(effect, true)); this.addAbility(new EntersBattlefieldAbility(effect, true));
} }

View file

@ -33,7 +33,7 @@ public final class RefreshingRain extends CardImpl {
public RefreshingRain(UUID ownerId, CardSetInfo setInfo) { public RefreshingRain(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{G}"); super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{G}");
// If an opponent controls a Swamp and you control a Forest, you may cast Refreshing Rain without paying its mana cost. // If an opponent controls a Swamp and you control a Forest, you may cast this spell without paying its mana cost.
Condition condition = new CompoundCondition("If an opponent controls a Swamp and you control a Forest", Condition condition = new CompoundCondition("If an opponent controls a Swamp and you control a Forest",
new OpponentControlsPermanentCondition(filterSwamp), new OpponentControlsPermanentCondition(filterSwamp),
new PermanentsOnTheBattlefieldCondition(filterForest)); new PermanentsOnTheBattlefieldCondition(filterForest));

View file

@ -35,7 +35,7 @@ public final class RushwoodLegate extends CardImpl {
this.power = new MageInt(2); this.power = new MageInt(2);
this.toughness = new MageInt(1); this.toughness = new MageInt(1);
// If an opponent controls an Island and you control a Forest, you may cast Rushwood Legate without paying its mana cost. // If an opponent controls an Island and you control a Forest, you may cast this spell without paying its mana cost.
Condition condition = new CompoundCondition("If an opponent controls an Island and you control a Forest", Condition condition = new CompoundCondition("If an opponent controls an Island and you control a Forest",
new OpponentControlsPermanentCondition(filterIsland), new OpponentControlsPermanentCondition(filterIsland),
new PermanentsOnTheBattlefieldCondition(filterForest)); new PermanentsOnTheBattlefieldCondition(filterForest));

View file

@ -32,15 +32,14 @@ public final class SaprazzanLegate extends CardImpl {
public SaprazzanLegate(UUID ownerId, CardSetInfo setInfo) { public SaprazzanLegate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}"); super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
this.subtype.add(SubType.MERFOLK); this.subtype.add(SubType.MERFOLK, SubType.SOLDIER);
this.subtype.add(SubType.SOLDIER);
this.power = new MageInt(1); this.power = new MageInt(1);
this.toughness = new MageInt(3); this.toughness = new MageInt(3);
// Flying // Flying
this.addAbility(FlyingAbility.getInstance()); this.addAbility(FlyingAbility.getInstance());
// If an opponent controls a Mountain and you control an Island, you may cast Saprazzan Legate without paying its mana cost. // If an opponent controls a Mountain and you control an Island, you may cast this spell without paying its mana cost.
Condition condition = new CompoundCondition("If an opponent controls a Mountain and you control an Island", Condition condition = new CompoundCondition("If an opponent controls a Mountain and you control an Island",
new OpponentControlsPermanentCondition(filterMountain), new OpponentControlsPermanentCondition(filterMountain),
new PermanentsOnTheBattlefieldCondition(filterIsland)); new PermanentsOnTheBattlefieldCondition(filterIsland));

View file

@ -34,7 +34,7 @@ public final class SivvisRuse extends CardImpl {
public SivvisRuse(UUID ownerId, CardSetInfo setInfo) { public SivvisRuse(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{W}{W}"); super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{W}{W}");
// If an opponent controls a Mountain and you control a Plains, you may cast Sivvi's Ruse without paying its mana cost. // If an opponent controls a Mountain and you control a Plains, you may cast this spell without paying its mana cost.
Condition condition = new CompoundCondition("If an opponent controls a Mountain and you control a Plains", Condition condition = new CompoundCondition("If an opponent controls a Mountain and you control a Plains",
new OpponentControlsPermanentCondition(filterMountain), new OpponentControlsPermanentCondition(filterMountain),
new PermanentsOnTheBattlefieldCondition(filterPlains)); new PermanentsOnTheBattlefieldCondition(filterPlains));

View file

@ -43,7 +43,7 @@ public final class SplinterTwin extends CardImpl {
this.getSpellAbility().addEffect(new AttachEffect(Outcome.AddAbility)); this.getSpellAbility().addEffect(new AttachEffect(Outcome.AddAbility));
Ability ability = new EnchantAbility(auraTarget.getTargetName()); Ability ability = new EnchantAbility(auraTarget.getTargetName());
this.addAbility(ability); this.addAbility(ability);
// Enchanted creature has "{tap}: Create a token that's a copy of this creature. That token has haste. Exile it at the beginning of the next end step." // Enchanted creature has "{tap}: Create a token that's a copy of this creature, except it has haste. Exile it at the beginning of the next end step."
SimpleActivatedAbility gainedAbility = new SimpleActivatedAbility(Zone.BATTLEFIELD, new SplinterTwinEffect(), new TapSourceCost()); SimpleActivatedAbility gainedAbility = new SimpleActivatedAbility(Zone.BATTLEFIELD, new SplinterTwinEffect(), new TapSourceCost());
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(gainedAbility, AttachmentType.AURA))); this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(gainedAbility, AttachmentType.AURA)));
} }
@ -62,7 +62,7 @@ class SplinterTwinEffect extends OneShotEffect {
public SplinterTwinEffect() { public SplinterTwinEffect() {
super(Outcome.PutCreatureInPlay); super(Outcome.PutCreatureInPlay);
this.staticText = "Create a token that's a copy of this creature. That token has haste. Exile it at the beginning of the next end step"; this.staticText = "Create a token that's a copy of this creature, except it has haste. Exile it at the beginning of the next end step";
} }
public SplinterTwinEffect(final SplinterTwinEffect effect) { public SplinterTwinEffect(final SplinterTwinEffect effect) {

View file

@ -34,7 +34,7 @@ public final class Submerge extends CardImpl {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{4}{U}"); super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{4}{U}");
// If an opponent controls a Forest and you control an Island, you may cast Submerge without paying its mana cost. // If an opponent controls a Forest and you control an Island, you may cast this spell without paying its mana cost.
Condition condition = new CompoundCondition("If an opponent controls a Forest and you control an Island", Condition condition = new CompoundCondition("If an opponent controls a Forest and you control an Island",
new OpponentControlsPermanentCondition(filterForest), new OpponentControlsPermanentCondition(filterForest),
new PermanentsOnTheBattlefieldCondition(filterIsland)); new PermanentsOnTheBattlefieldCondition(filterIsland));

View file

@ -28,7 +28,7 @@ public final class TemptWithImmortality extends CardImpl {
public TemptWithImmortality(UUID ownerId, CardSetInfo setInfo) { public TemptWithImmortality(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{B}"); super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{B}");
// Tempting offer - Return a creature card from your graveyard to the battlefield. Each opponent may return a creature card from their graveyard to the battlefield. For each player who does, return a creature card from your graveyard to the battlefield. // Tempting offer - Return a creature card from your graveyard to the battlefield. Each opponent may return a creature card from their graveyard to the battlefield. For each opponent who does, return a creature card from your graveyard to the battlefield.
this.getSpellAbility().addEffect(new TemptWithImmortalityEffect()); this.getSpellAbility().addEffect(new TemptWithImmortalityEffect());
} }
@ -46,7 +46,7 @@ class TemptWithImmortalityEffect extends OneShotEffect {
public TemptWithImmortalityEffect() { public TemptWithImmortalityEffect() {
super(Outcome.PutCreatureInPlay); super(Outcome.PutCreatureInPlay);
this.staticText = "<i>Tempting offer</i> &mdash; Return a creature card from your graveyard to the battlefield. Each opponent may return a creature card from their graveyard to the battlefield. For each player who does, return a creature card from your graveyard to the battlefield"; this.staticText = "<i>Tempting offer</i> &mdash; Return a creature card from your graveyard to the battlefield. Each opponent may return a creature card from their graveyard to the battlefield. For each opponent who does, return a creature card from your graveyard to the battlefield";
} }

View file

@ -23,7 +23,7 @@ public final class TemptWithVengeance extends CardImpl {
public TemptWithVengeance(UUID ownerId, CardSetInfo setInfo) { public TemptWithVengeance(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{R}"); super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{R}");
// Tempting offer - create X 1/1 red Elemental creature tokens with haste. Each opponent may create X 1/1 red Elemental creature tokens with haste. For each player who does, create X 1/1 red Elemental creature tokens with haste. // Tempting offer - create X 1/1 red Elemental creature tokens with haste. Each opponent may create X 1/1 red Elemental creature tokens with haste. For each opponent who does, create X 1/1 red Elemental creature tokens with haste.
this.getSpellAbility().addEffect(new TemptWithVengeanceEffect()); this.getSpellAbility().addEffect(new TemptWithVengeanceEffect());
} }
@ -41,7 +41,7 @@ class TemptWithVengeanceEffect extends OneShotEffect {
public TemptWithVengeanceEffect() { public TemptWithVengeanceEffect() {
super(Outcome.PutLandInPlay); super(Outcome.PutLandInPlay);
this.staticText = "<i>Tempting offer</i> &mdash; create X 1/1 red Elemental creature tokens with haste. Each opponent may create X 1/1 red Elemental creature tokens with haste. For each player who does, create X 1/1 red Elemental creature tokens with haste"; this.staticText = "<i>Tempting offer</i> &mdash; create X 1/1 red Elemental creature tokens with haste. Each opponent may create X 1/1 red Elemental creature tokens with haste. For each opponent who does, create X 1/1 red Elemental creature tokens with haste";
} }
public TemptWithVengeanceEffect(final TemptWithVengeanceEffect effect) { public TemptWithVengeanceEffect(final TemptWithVengeanceEffect effect) {

View file

@ -30,7 +30,7 @@ public final class ThespiansStage extends CardImpl {
// {T}: Add 1. // {T}: Add 1.
this.addAbility(new ColorlessManaAbility()); this.addAbility(new ColorlessManaAbility());
// 2, {T}: Thespian's Stage becomes a copy of target land and gains this ability. // 2, {T}: Thespian's Stage becomes a copy of target land, except it has this ability.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new ThespiansStageCopyEffect(), new GenericManaCost(2)); Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new ThespiansStageCopyEffect(), new GenericManaCost(2));
ability.addCost(new TapSourceCost()); ability.addCost(new TapSourceCost());
ability.addTarget(new TargetLandPermanent()); ability.addTarget(new TargetLandPermanent());
@ -52,7 +52,7 @@ class ThespiansStageCopyEffect extends OneShotEffect {
public ThespiansStageCopyEffect() { public ThespiansStageCopyEffect() {
super(Outcome.Benefit); super(Outcome.Benefit);
this.staticText = "{this} becomes a copy of target land and gains this ability"; this.staticText = "{this} becomes a copy of target land, except it has this ability";
} }
public ThespiansStageCopyEffect(final ThespiansStageCopyEffect effect) { public ThespiansStageCopyEffect(final ThespiansStageCopyEffect effect) {

View file

@ -35,7 +35,7 @@ public final class Twinflame extends CardImpl {
// Strive - Twinflame costs 2R more to cast for each target beyond the first. // Strive - Twinflame costs 2R more to cast for each target beyond the first.
this.addAbility(new StriveAbility("{2}{R}")); this.addAbility(new StriveAbility("{2}{R}"));
// Choose any number of target creatures you control. For each of them, create a token that's a copy of that creature. Those tokens have haste. Exile them at the beginning of the next end step. // Choose any number of target creatures you control. For each of them, create a token that's a copy of that creature, except it has haste. Exile them at the beginning of the next end step.
this.getSpellAbility().addEffect(new TwinflameCopyEffect()); this.getSpellAbility().addEffect(new TwinflameCopyEffect());
this.getSpellAbility().addTarget(new TargetControlledCreaturePermanent(0, Integer.MAX_VALUE, new FilterControlledCreaturePermanent(), false)); this.getSpellAbility().addTarget(new TargetControlledCreaturePermanent(0, Integer.MAX_VALUE, new FilterControlledCreaturePermanent(), false));
@ -55,7 +55,7 @@ class TwinflameCopyEffect extends OneShotEffect {
public TwinflameCopyEffect() { public TwinflameCopyEffect() {
super(Outcome.PutCreatureInPlay); super(Outcome.PutCreatureInPlay);
this.staticText = "Choose any number of target creatures you control. For each of them, create a token that's a copy of that creature. Those tokens have haste. Exile them at the beginning of the next end step"; this.staticText = "Choose any number of target creatures you control. For each of them, create a token that's a copy of that creature, except it has haste. Exile them at the beginning of the next end step";
} }
public TwinflameCopyEffect(final TwinflameCopyEffect effect) { public TwinflameCopyEffect(final TwinflameCopyEffect effect) {

View file

@ -40,7 +40,7 @@ public final class UnstableShapeshifter extends CardImpl {
this.power = new MageInt(0); this.power = new MageInt(0);
this.toughness = new MageInt(1); this.toughness = new MageInt(1);
// Whenever another creature enters the battlefield, Unstable Shapeshifter becomes a copy of that creature and gains this ability. // Whenever another creature enters the battlefield, Unstable Shapeshifter becomes a copy of that creature, except it has this ability.
this.addAbility(new EntersBattlefieldAllTriggeredAbility(Zone.BATTLEFIELD, new UnstableShapeshifterEffect(), filterAnotherCreature, false, SetTargetPointer.PERMANENT, "")); this.addAbility(new EntersBattlefieldAllTriggeredAbility(Zone.BATTLEFIELD, new UnstableShapeshifterEffect(), filterAnotherCreature, false, SetTargetPointer.PERMANENT, ""));
} }
@ -58,7 +58,7 @@ class UnstableShapeshifterEffect extends OneShotEffect {
public UnstableShapeshifterEffect() { public UnstableShapeshifterEffect() {
super(Outcome.Copy); super(Outcome.Copy);
this.staticText = "{this} becomes a copy of that creature and gains this ability"; this.staticText = "{this} becomes a copy of that creature, except it has this ability";
} }
public UnstableShapeshifterEffect(final UnstableShapeshifterEffect effect) { public UnstableShapeshifterEffect(final UnstableShapeshifterEffect effect) {

View file

@ -30,7 +30,7 @@ import mage.util.functions.ApplyToPermanent;
*/ */
public final class VesuvanDoppelganger extends CardImpl { public final class VesuvanDoppelganger extends CardImpl {
private static final String rule = "You may have {this} enter the battlefield as a copy of any creature on the battlefield except it doesn't copy that creature's color and it gains \"At the beginning of your upkeep, you may have this creature become a copy of target creature except it doesn't copy that creature's color. If you do, this creature gains this ability.\""; private static final String rule = "You may have {this} enter the battlefield as a copy of any creature on the battlefield except it doesn't copy that creature's color and it has \"At the beginning of your upkeep, you may have this creature become a copy of target creature except it doesn't copy that creature's color and it has this ability.\"";
public VesuvanDoppelganger(UUID ownerId, CardSetInfo setInfo) { public VesuvanDoppelganger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}{U}"); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}{U}");
@ -38,7 +38,7 @@ public final class VesuvanDoppelganger extends CardImpl {
this.power = new MageInt(0); this.power = new MageInt(0);
this.toughness = new MageInt(0); this.toughness = new MageInt(0);
// You may have Vesuvan Doppelganger enter the battlefield as a copy of any creature on the battlefield except it doesn't copy that creature's color and it gains "At the beginning of your upkeep, you may have this creature become a copy of target creature except it doesn't copy that creature's color. If you do, this creature gains this ability." // You may have Vesuvan Doppelganger enter the battlefield as a copy of any creature on the battlefield except it doesn't copy that creature's color and it has "At the beginning of your upkeep, you may have this creature become a copy of target creature except it doesn't copy that creature's color and it has this ability."
Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new EntersBattlefieldEffect(new VesuvanDoppelgangerCopyEffect(), rule, true)); Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new EntersBattlefieldEffect(new VesuvanDoppelgangerCopyEffect(), rule, true));
this.addAbility(ability); this.addAbility(ability);
@ -56,7 +56,7 @@ public final class VesuvanDoppelganger extends CardImpl {
class VesuvanDoppelgangerCopyEffect extends OneShotEffect { class VesuvanDoppelgangerCopyEffect extends OneShotEffect {
private static final String rule2 = "At the beginning of your upkeep, you may have this creature become a copy of target creature except it doesn't copy that creature's color. If you do, this creature gains this ability."; private static final String rule2 = "At the beginning of your upkeep, you may have this creature become a copy of target creature except it doesn't copy that creature's color and it has this ability.";
public VesuvanDoppelgangerCopyEffect() { public VesuvanDoppelgangerCopyEffect() {
super(Outcome.Copy); super(Outcome.Copy);

View file

@ -58,7 +58,7 @@ public final class VesuvanShapeshifter extends CardImpl {
ability.setWorksFaceDown(false); ability.setWorksFaceDown(false);
this.addAbility(ability); this.addAbility(ability);
// and gains "At the beginning of your upkeep, you may turn this creature face down". // and has "At the beginning of your upkeep, you may turn this creature face down".
effect = new VesuvanShapeshifterFaceDownEffect(); effect = new VesuvanShapeshifterFaceDownEffect();
ability = new BeginningOfUpkeepTriggeredAbility(Zone.BATTLEFIELD, effect, TargetController.YOU, true); ability = new BeginningOfUpkeepTriggeredAbility(Zone.BATTLEFIELD, effect, TargetController.YOU, true);
this.addAbility(ability); this.addAbility(ability);
@ -102,7 +102,7 @@ class VesuvanShapeshifterEffect extends OneShotEffect {
public VesuvanShapeshifterEffect() { public VesuvanShapeshifterEffect() {
super(Outcome.Copy); super(Outcome.Copy);
staticText = "have {this} become a copy of a creature and gain this ability"; staticText = "have {this} become a copy of a creature, except it has this ability";
} }
public VesuvanShapeshifterEffect(final VesuvanShapeshifterEffect effect) { public VesuvanShapeshifterEffect(final VesuvanShapeshifterEffect effect) {

View file

@ -230,7 +230,7 @@ public class AlternativeCostSourceAbility extends StaticAbility implements Alter
if (condition == null || alternateCosts.size() == 1) { if (condition == null || alternateCosts.size() == 1) {
sb.append(" rather than pay this spell's mana cost"); sb.append(" rather than pay this spell's mana cost");
} else if (alternateCosts.isEmpty()) { } else if (alternateCosts.isEmpty()) {
sb.append("cast {this} without paying its mana cost"); sb.append("cast this spell without paying its mana cost");
} }
sb.append('.'); sb.append('.');
if (numberCosts == 1 && remarkText != null) { if (numberCosts == 1 && remarkText != null) {

View file

@ -33,7 +33,7 @@ public class CreateTokenCopyTargetEffect extends OneShotEffect {
private final UUID playerId; private final UUID playerId;
private final CardType additionalCardType; private final CardType additionalCardType;
private boolean gainsHaste; private boolean hasHaste;
private final int number; private final int number;
private List<Permanent> addedTokenPermanents; private List<Permanent> addedTokenPermanents;
private SubType additionalSubType; private SubType additionalSubType;
@ -62,12 +62,12 @@ public class CreateTokenCopyTargetEffect extends OneShotEffect {
this(playerId, null, false); this(playerId, null, false);
} }
public CreateTokenCopyTargetEffect(UUID playerId, CardType additionalCardType, boolean gainsHaste) { public CreateTokenCopyTargetEffect(UUID playerId, CardType additionalCardType, boolean hasHaste) {
this(playerId, additionalCardType, gainsHaste, 1); this(playerId, additionalCardType, hasHaste, 1);
} }
public CreateTokenCopyTargetEffect(UUID playerId, CardType additionalCardType, boolean gainsHaste, int number) { public CreateTokenCopyTargetEffect(UUID playerId, CardType additionalCardType, boolean hasHaste, int number) {
this(playerId, additionalCardType, gainsHaste, number, false, false); this(playerId, additionalCardType, hasHaste, number, false, false);
} }
/** /**
@ -75,24 +75,24 @@ public class CreateTokenCopyTargetEffect extends OneShotEffect {
* @param playerId null the token is controlled/owned by the controller of * @param playerId null the token is controlled/owned by the controller of
* the source ability * the source ability
* @param additionalCardType the token gains this card type in addition * @param additionalCardType the token gains this card type in addition
* @param gainsHaste the token gains haste * @param hasHaste the token gains haste
* @param number number of tokens to put into play * @param number number of tokens to put into play
* @param tapped * @param tapped
* @param attacking * @param attacking
*/ */
public CreateTokenCopyTargetEffect(UUID playerId, CardType additionalCardType, boolean gainsHaste, int number, boolean tapped, boolean attacking) { public CreateTokenCopyTargetEffect(UUID playerId, CardType additionalCardType, boolean hasHaste, int number, boolean tapped, boolean attacking) {
this(playerId, additionalCardType, gainsHaste, number, tapped, attacking, null); this(playerId, additionalCardType, hasHaste, number, tapped, attacking, null);
} }
public CreateTokenCopyTargetEffect(UUID playerId, CardType additionalCardType, boolean gainsHaste, int number, boolean tapped, boolean attacking, UUID attackedPlayer) { public CreateTokenCopyTargetEffect(UUID playerId, CardType additionalCardType, boolean hasHaste, int number, boolean tapped, boolean attacking, UUID attackedPlayer) {
this(playerId, additionalCardType, gainsHaste, number, tapped, attacking, attackedPlayer, Integer.MIN_VALUE, Integer.MIN_VALUE, false); this(playerId, additionalCardType, hasHaste, number, tapped, attacking, attackedPlayer, Integer.MIN_VALUE, Integer.MIN_VALUE, false);
} }
public CreateTokenCopyTargetEffect(UUID playerId, CardType additionalCardType, boolean gainsHaste, int number, boolean tapped, boolean attacking, UUID attackedPlayer, int power, int toughness, boolean gainsFlying) { public CreateTokenCopyTargetEffect(UUID playerId, CardType additionalCardType, boolean hasHaste, int number, boolean tapped, boolean attacking, UUID attackedPlayer, int power, int toughness, boolean gainsFlying) {
super(Outcome.PutCreatureInPlay); super(Outcome.PutCreatureInPlay);
this.playerId = playerId; this.playerId = playerId;
this.additionalCardType = additionalCardType; this.additionalCardType = additionalCardType;
this.gainsHaste = gainsHaste; this.hasHaste = hasHaste;
this.addedTokenPermanents = new ArrayList<>(); this.addedTokenPermanents = new ArrayList<>();
this.number = number; this.number = number;
this.tapped = tapped; this.tapped = tapped;
@ -107,7 +107,7 @@ public class CreateTokenCopyTargetEffect extends OneShotEffect {
super(effect); super(effect);
this.playerId = effect.playerId; this.playerId = effect.playerId;
this.additionalCardType = effect.additionalCardType; this.additionalCardType = effect.additionalCardType;
this.gainsHaste = effect.gainsHaste; this.hasHaste = effect.hasHaste;
this.addedTokenPermanents = new ArrayList<>(effect.addedTokenPermanents); this.addedTokenPermanents = new ArrayList<>(effect.addedTokenPermanents);
this.number = effect.number; this.number = effect.number;
this.additionalSubType = effect.additionalSubType; this.additionalSubType = effect.additionalSubType;
@ -187,7 +187,7 @@ public class CreateTokenCopyTargetEffect extends OneShotEffect {
if (additionalCardType != null && !token.getCardType().contains(additionalCardType)) { if (additionalCardType != null && !token.getCardType().contains(additionalCardType)) {
token.addCardType(additionalCardType); token.addCardType(additionalCardType);
} }
if (gainsHaste) { if (hasHaste) {
token.addAbility(HasteAbility.getInstance()); token.addAbility(HasteAbility.getInstance());
} }
if (gainsFlying) { if (gainsFlying) {