[TSP] various text fixes

This commit is contained in:
Evan Kranzler 2022-04-01 08:42:38 -04:00
parent 46f98a0f88
commit 24478afbe1
29 changed files with 121 additions and 112 deletions

View file

@ -1,34 +1,32 @@
package mage.cards.a;
import mage.abilities.Ability;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.AsThoughEffectImpl;
import mage.abilities.effects.common.AttachEffect;
import mage.abilities.effects.common.continuous.BoostEnchantedEffect;
import mage.abilities.effects.common.continuous.GainAbilityAttachedEffect;
import mage.abilities.keyword.EnchantAbility;
import mage.abilities.keyword.FlashAbility;
import mage.abilities.keyword.ReachAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.target.TargetPermanent;
import mage.target.common.TargetCreaturePermanent;
import java.util.UUID;
import mage.abilities.StaticAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.AsThoughEffectImpl;
import mage.abilities.effects.common.continuous.BoostEnchantedEffect;
import mage.abilities.effects.common.continuous.GainAbilityAttachedEffect;
import mage.abilities.keyword.ReachAbility;
import mage.constants.*;
import mage.abilities.keyword.FlashAbility;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.target.common.TargetCreaturePermanent;
import mage.abilities.Ability;
import mage.abilities.effects.common.AttachEffect;
import mage.target.TargetPermanent;
import mage.abilities.keyword.EnchantAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
/**
*
* @author noahg
*/
public final class AetherWeb extends CardImpl {
public AetherWeb(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{G}");
this.subtype.add(SubType.AURA);
// Flash
@ -38,15 +36,15 @@ public final class AetherWeb extends CardImpl {
TargetPermanent auraTarget = new TargetCreaturePermanent();
this.getSpellAbility().addTarget(auraTarget);
this.getSpellAbility().addEffect(new AttachEffect(Outcome.BoostCreature));
Ability ability = new EnchantAbility(auraTarget.getTargetName());
this.addAbility(ability);
this.addAbility(new EnchantAbility(auraTarget.getTargetName()));
// Enchanted creature gets +1/+1, has reach, and can block creatures with shadow as though they didn't have shadow.
StaticAbility staticAbility = new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(1, 1)
.setText("Enchanted creature gets +1/+1, has reach, and can block creatures with shadow as though they didn't have shadow."));
staticAbility.addEffect(new GainAbilityAttachedEffect(ReachAbility.getInstance(), AttachmentType.AURA).setText(""));
staticAbility.addEffect(new AetherWebEffect());
this.addAbility(staticAbility);
Ability ability = new SimpleStaticAbility(new BoostEnchantedEffect(1, 1));
ability.addEffect(new GainAbilityAttachedEffect(
ReachAbility.getInstance(), AttachmentType.AURA
).setText(", has reach"));
ability.addEffect(new AetherWebEffect());
this.addAbility(ability);
}
private AetherWeb(final AetherWeb card) {
@ -63,7 +61,7 @@ class AetherWebEffect extends AsThoughEffectImpl {
public AetherWebEffect() {
super(AsThoughEffectType.BLOCK_SHADOW, Duration.WhileOnBattlefield, Outcome.Benefit);
staticText = "";
staticText = ", and can block creatures with shadow as though they didn't have shadow";
}
public AetherWebEffect(final AetherWebEffect effect) {
@ -85,4 +83,4 @@ class AetherWebEffect extends AsThoughEffectImpl {
Permanent sourcePermanent = source.getSourcePermanentIfItStillExists(game);
return sourcePermanent != null && sourceId.equals(sourcePermanent.getAttachedTo());
}
}
}

View file

@ -12,19 +12,17 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.SubType;
import mage.constants.Zone;
import java.util.UUID;
/**
*
* @author noahg
*/
public final class AetherflameWall extends CardImpl {
public AetherflameWall(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}");
this.subtype.add(SubType.WALL);
this.power = new MageInt(0);
this.toughness = new MageInt(4);
@ -33,10 +31,13 @@ public final class AetherflameWall extends CardImpl {
this.addAbility(DefenderAbility.getInstance());
// Aetherflame Wall can block creatures with shadow as though they didnt have shadow.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CanBlockAsThoughtItHadShadowEffect(Duration.WhileOnBattlefield)));
this.addAbility(new SimpleStaticAbility(new CanBlockAsThoughtItHadShadowEffect(Duration.WhileOnBattlefield)
.setText("{this} can block creatures with shadow as though they didn't have shadow")));
// {R}: Aetherflame Wall gets +1/+0 until end of turn.
this.addAbility(new SimpleActivatedAbility(new BoostSourceEffect(1, 0, Duration.EndOfTurn), new ManaCostsImpl("{R}")));
this.addAbility(new SimpleActivatedAbility(
new BoostSourceEffect(1, 0, Duration.EndOfTurn), new ManaCostsImpl<>("{R}")
));
}
private AetherflameWall(final AetherflameWall card) {

View file

@ -31,8 +31,11 @@ public final class BarbedShocker extends CardImpl {
this.addAbility(TrampleAbility.getInstance());
// Haste
this.addAbility(HasteAbility.getInstance());
// Whenever Barbed Shocker deals damage to a player, that player discards all the cards in their hand, then draws that many cards.
this.addAbility(new DealsDamageToAPlayerTriggeredAbility(new BarbedShockerEffect(), false, true));
this.addAbility(new DealsDamageToAPlayerTriggeredAbility(
new BarbedShockerEffect(), false, true
));
}
private BarbedShocker(final BarbedShocker card) {
@ -49,7 +52,7 @@ class BarbedShockerEffect extends OneShotEffect {
BarbedShockerEffect() {
super(Outcome.Discard);
this.staticText = " that player discards all the cards in their hand, then draws that many cards";
this.staticText = "that player discards all the cards in their hand, then draws that many cards";
}
private BarbedShockerEffect(final BarbedShockerEffect effect) {
@ -64,11 +67,12 @@ class BarbedShockerEffect extends OneShotEffect {
@Override
public boolean apply(Game game, Ability source) {
Player targetPlayer = game.getPlayer(targetPointer.getFirst(game, source));
if (targetPlayer == null) {
if (targetPlayer == null || targetPlayer.getHand().isEmpty()) {
return false;
}
int count = targetPlayer.discard(targetPlayer.getHand(), false, source, game).size();
targetPlayer.drawCards(count, source, game);
targetPlayer.drawCards(targetPlayer.discard(
targetPlayer.getHand(), false, source, game
).size(), source, game);
return true;
}
}

View file

@ -1,7 +1,5 @@
package mage.cards.b;
import java.util.UUID;
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
import mage.abilities.effects.common.continuous.BoostTargetEffect;
import mage.cards.CardImpl;
@ -10,21 +8,22 @@ import mage.constants.CardType;
import mage.constants.Duration;
import mage.target.common.TargetCreaturePermanent;
import java.util.UUID;
/**
*
* @author Loki
*/
public final class Bewilder extends CardImpl {
public Bewilder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{U}");
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{U}");
// Target creature gets -3/-0 until end of turn.
this.getSpellAbility().addEffect(new BoostTargetEffect(-3, 0, Duration.EndOfTurn));
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
// Draw a card.
this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1));
this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1).concatBy("<br>"));
}
private Bewilder(final Bewilder card) {

View file

@ -111,7 +111,7 @@ class CurseOfTheCabalInterveningIfTriggeredAbility extends ConditionalIntervenin
),
SuspendedCondition.instance,
"At the beginning of each player's upkeep, if {this} is suspended, "
+ "that player may sacrifice a permanent. If they do, "
+ "that player may sacrifice a permanent. If the player does, "
+ "put two time counters on {this}."
);
// controller has to sac a permanent

View file

@ -1,7 +1,5 @@
package mage.cards.d;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.SimpleActivatedAbility;
@ -11,14 +9,14 @@ import mage.abilities.effects.common.PreventDamageToTargetEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Duration;
import mage.constants.Zone;
import mage.constants.SubType;
import mage.target.common.TargetAnyTarget;
import mage.target.common.TargetAttackingOrBlockingCreature;
import mage.target.common.TargetCreatureOrPlayer;
import java.util.UUID;
/**
*
* @author LoneFox
*/
public final class DAvenantHealer extends CardImpl {
@ -32,12 +30,15 @@ public final class DAvenantHealer extends CardImpl {
this.toughness = new MageInt(2);
// {T}: D'Avenant Healer deals 1 damage to target attacking or blocking creature.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(1), new TapSourceCost());
Ability ability = new SimpleActivatedAbility(new DamageTargetEffect(1), new TapSourceCost());
ability.addTarget(new TargetAttackingOrBlockingCreature());
this.addAbility(ability);
// {T}: Prevent the next 1 damage that would be dealt to any target this turn.
ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new PreventDamageToTargetEffect(Duration.EndOfTurn, 1), new TapSourceCost());
ability.addTarget(new TargetCreatureOrPlayer());
ability = new SimpleActivatedAbility(
new PreventDamageToTargetEffect(Duration.EndOfTurn, 1), new TapSourceCost()
);
ability.addTarget(new TargetAnyTarget());
this.addAbility(ability);
}

View file

@ -1,13 +1,10 @@
package mage.cards.f;
import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.common.PutIntoGraveFromBattlefieldSourceTriggeredAbility;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.costs.common.SacrificeTargetCost;
import mage.abilities.effects.Effect;
import mage.abilities.effects.common.AttachEffect;
import mage.abilities.effects.common.ReturnToHandSourceEffect;
import mage.abilities.effects.common.continuous.BoostSourceEffect;
@ -17,13 +14,15 @@ import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
import static mage.filter.StaticFilters.FILTER_CONTROLLED_CREATURE_SHORT_TEXT;
import mage.target.TargetPermanent;
import mage.target.common.TargetControlledCreaturePermanent;
import mage.target.common.TargetControlledPermanent;
import mage.target.common.TargetCreaturePermanent;
import java.util.UUID;
import static mage.filter.StaticFilters.FILTER_CONTROLLED_CREATURE_SHORT_TEXT;
/**
*
* @author fireshoes
*/
public final class FallenIdeal extends CardImpl {
@ -36,18 +35,19 @@ public final class FallenIdeal extends CardImpl {
TargetPermanent auraTarget = new TargetCreaturePermanent();
this.getSpellAbility().addTarget(auraTarget);
this.getSpellAbility().addEffect(new AttachEffect(Outcome.AddAbility));
Ability ability = new EnchantAbility(auraTarget.getTargetName());
this.addAbility(ability);
this.addAbility(new EnchantAbility(auraTarget.getTargetName()));
// Enchanted creature has flying and "Sacrifice a creature: This creature gets +2/+1 until end of turn."
Effect effect = new GainAbilityAttachedEffect(FlyingAbility.getInstance(), AttachmentType.AURA, Duration.WhileOnBattlefield);
Ability gainedAbility = new SimpleStaticAbility(Zone.BATTLEFIELD, effect);
this.addAbility(gainedAbility);
gainedAbility = new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(2, 1, Duration.EndOfTurn),
new SacrificeTargetCost(new TargetControlledCreaturePermanent(FILTER_CONTROLLED_CREATURE_SHORT_TEXT)));
effect = new GainAbilityAttachedEffect(gainedAbility, AttachmentType.AURA, Duration.WhileOnBattlefield);
effect.setText("Enchanted creature has \"Sacrifice a creature: This creature gets +2/+1 until end of turn.\"");
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect));
Ability ability = new SimpleStaticAbility(new GainAbilityAttachedEffect(
FlyingAbility.getInstance(), AttachmentType.AURA, Duration.WhileOnBattlefield
));
ability.addEffect(new GainAbilityAttachedEffect(
new SimpleActivatedAbility(
new BoostSourceEffect(2, 1, Duration.EndOfTurn),
new SacrificeTargetCost(new TargetControlledPermanent(FILTER_CONTROLLED_CREATURE_SHORT_TEXT))
), AttachmentType.AURA, Duration.WhileOnBattlefield
).setText("and \"Sacrifice a creature: This creature gets +2/+1 until end of turn.\""));
this.addAbility(ability);
// When Fallen Ideal is put into a graveyard from the battlefield, return Fallen Ideal to its owner's hand.
this.addAbility(new PutIntoGraveFromBattlefieldSourceTriggeredAbility(new ReturnToHandSourceEffect()));

View file

@ -32,7 +32,7 @@ public final class FlagstonesOfTrokair extends CardImpl {
this.addAbility(new WhiteManaAbility());
// When Flagstones of Trokair is put into a graveyard from the battlefield, you may search your library for a Plains card and put it onto the battlefield tapped. If you do, shuffle your library.
this.addAbility(new PutIntoGraveFromBattlefieldSourceTriggeredAbility(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(FILTER), true, false), true, false));
this.addAbility(new PutIntoGraveFromBattlefieldSourceTriggeredAbility(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(FILTER), true, true), true, false));
}
private FlagstonesOfTrokair(final FlagstonesOfTrokair card) {

View file

@ -82,7 +82,7 @@ class GemstoneCavernsAbility extends StaticAbility implements OpeningHandAction
@Override
public String getRule() {
return "If {this} is in your opening hand and you're not playing first, you may begin the game with {this} on the battlefield with a luck counter on it. If you do, exile a card from your hand.";
return "If {this} is in your opening hand and you're not the starting player, you may begin the game with {this} on the battlefield with a luck counter on it. If you do, exile a card from your hand.";
}
@Override

View file

@ -28,7 +28,7 @@ public final class GlassAsp extends CardImpl {
// Whenever Glass Asp deals combat damage to a player, that player loses 2 life at the beginning of their next draw step unless they pay {2} before that step.
this.addAbility(new DealsCombatDamageToAPlayerTriggeredAbility(new UnlessPaysDelayedEffect(
new ManaCostsImpl("{2}"), new LoseLifeTargetEffect(2), PhaseStep.DRAW, true,
"that player loses 2 life at the beginning of their next draw step unless they pay {2} before that draw step."),
"that player loses 2 life at the beginning of their next draw step unless they pay {2} before that step."),
false, true));
}

View file

@ -40,7 +40,7 @@ public final class GoblinSkycutter extends CardImpl {
this.toughness = new MageInt(1);
// Sacrifice Goblin Skycutter: Goblin Skycutter deals 2 damage to target creature with flying. That creature loses flying until end of turn.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(2), new SacrificeSourceCost());
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(2, "it"), new SacrificeSourceCost());
ability.addEffect(new LoseAbilityTargetEffect(FlyingAbility.getInstance(), Duration.EndOfTurn).setText("that creature loses flying until end of turn"));
ability.addTarget(new TargetCreaturePermanent(filter));
this.addAbility(ability);

View file

@ -29,7 +29,7 @@ import mage.target.common.TargetControlledPermanent;
*/
public final class IbHalfheartGoblinTactician extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("two Mountains");
private static final FilterControlledPermanent filter = new FilterControlledPermanent("Mountains");
private static final FilterCreaturePermanent filterGoblin = new FilterCreaturePermanent("another Goblin you control");
static {

View file

@ -3,6 +3,7 @@ package mage.cards.i;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.AsEntersBattlefieldAbility;
import mage.abilities.common.EntersBattlefieldAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount;
@ -43,7 +44,7 @@ public final class Ixidron extends CardImpl {
this.toughness = new MageInt(0);
// As Ixidron enters the battlefield, turn all other nontoken creatures face down.
this.addAbility(new EntersBattlefieldAbility(new BecomesFaceDownCreatureAllEffect(filterTurnFaceDown)));
this.addAbility(new AsEntersBattlefieldAbility(new BecomesFaceDownCreatureAllEffect(filterTurnFaceDown)));
// Ixidron's power and toughness are each equal to the number of face-down creatures on the battlefield.
this.addAbility(new SimpleStaticAbility(Zone.ALL, new SetPowerToughnessSourceEffect(new PermanentsOnBattlefieldCount(filter), Duration.EndOfGame)));

View file

@ -51,7 +51,7 @@ class KaervekTheMercilessEffect extends OneShotEffect {
public KaervekTheMercilessEffect() {
super(Outcome.Benefit);
this.staticText = "{this} deals damage to any target equal to that spell's mana value";
this.staticText = "{this} deals damage equal to that spell's mana value to any target";
}
public KaervekTheMercilessEffect(final KaervekTheMercilessEffect effect) {

View file

@ -57,7 +57,7 @@ class LiegeOfThePitEffect extends OneShotEffect {
public LiegeOfThePitEffect() {
super(Outcome.Damage);
this.staticText = "Sacrifice a creature other than {this}. If you can't {this} deals 7 damage to you.";
this.staticText = "sacrifice a creature other than {this}. If you can't, {this} deals 7 damage to you.";
}
public LiegeOfThePitEffect(final LiegeOfThePitEffect effect) {

View file

@ -27,7 +27,7 @@ public final class Molder extends CardImpl {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{X}{G}");
// Destroy target artifact or enchantment with converted mana cost X. It can't be regenerated. You gain X life.
this.getSpellAbility().addEffect(new DestroyTargetEffect("Destroy target artifact or enchantment with mana value X", true));
this.getSpellAbility().addEffect(new DestroyTargetEffect("Destroy target artifact or enchantment with mana value X. It can't be regenerated", true));
this.getSpellAbility().addEffect(new GainLifeEffect(ManacostVariableValue.REGULAR));
this.getSpellAbility().setTargetAdjuster(MolderAdjuster.instance);
}

View file

@ -27,7 +27,7 @@ public final class OrcishCannonade extends CardImpl {
effect.setText("and 3 damage to you");
this.getSpellAbility().addEffect(effect);
// Draw a card.
this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1));
this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1).concatBy("<br>"));
}
private OrcishCannonade(final OrcishCannonade card) {

View file

@ -57,7 +57,7 @@ class SaffiEriksdotterEffect extends OneShotEffect {
public SaffiEriksdotterEffect() {
super(Outcome.PutCreatureInPlay);
this.staticText = "When target creature is put into your graveyard from the battlefield this turn, return that card to the battlefield";
this.staticText = "When target creature is put into your graveyard this turn, return that card to the battlefield";
}
public SaffiEriksdotterEffect(final SaffiEriksdotterEffect effect) {

View file

@ -28,7 +28,7 @@ public final class SkulkingKnight extends CardImpl {
// Flanking
this.addAbility(new FlankingAbility());
// When Skulking Knight becomes the target of a spell or ability, sacrifice it.
this.addAbility(new BecomesTargetTriggeredAbility(new SacrificeSourceEffect()));
this.addAbility(new BecomesTargetTriggeredAbility(new SacrificeSourceEffect().setText("sacrifice it")));
}
private SkulkingKnight(final SkulkingKnight card) {

View file

@ -45,7 +45,7 @@ public final class SpikeTiller extends CardImpl {
this.addAbility(ability);
// {2}, Remove a +1/+1 counter from Spike Tiller: Target land becomes a 2/2 creature that's still a land. Put a +1/+1 counter on it.
Ability ability2 = new SimpleActivatedAbility(Zone.BATTLEFIELD, new BecomesCreatureTargetEffect(new CreatureToken(2, 2), false, true, Duration.EndOfGame).setText("Target land becomes a 2/2 creature that's still a land. "), new GenericManaCost(2));
Ability ability2 = new SimpleActivatedAbility(Zone.BATTLEFIELD, new BecomesCreatureTargetEffect(new CreatureToken(2, 2), false, true, Duration.EndOfGame).setText("Target land becomes a 2/2 creature that's still a land"), new GenericManaCost(2));
ability2.addCost(new RemoveCountersSourceCost(CounterType.P1P1.createInstance()));
ability2.addEffect(new AddCountersTargetEffect(CounterType.P1P1.createInstance()).setText("Put a +1/+1 counter on it."));
ability2.addTarget(new TargetLandPermanent());

View file

@ -4,14 +4,14 @@ import mage.MageInt;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.effects.common.continuous.BoostControlledEffect;
import mage.abilities.effects.common.continuous.BoostAllEffect;
import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.SubType;
import mage.constants.Zone;
import mage.constants.TargetController;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.mageobject.AbilityPredicate;
@ -22,9 +22,11 @@ import java.util.UUID;
*/
public final class SpriteNoble extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Creatures you control with flying");
private static final FilterCreaturePermanent filter
= new FilterCreaturePermanent("creatures you control with flying");
static {
filter.add(TargetController.YOU.getControllerPredicate());
filter.add(new AbilityPredicate(FlyingAbility.class));
}
@ -36,11 +38,16 @@ public final class SpriteNoble extends CardImpl {
// Flying
this.addAbility(FlyingAbility.getInstance());
// Other creatures you control with flying get +0/+1.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostControlledEffect(0, 1, Duration.WhileOnBattlefield, filter, true)));
this.addAbility(new SimpleStaticAbility(new BoostAllEffect(
0, 1, Duration.WhileOnBattlefield, filter, true
)));
// {tap}: Other creatures you control with flying get +1/+0 until end of turn.
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostControlledEffect(1, 0, Duration.EndOfTurn, filter, true),
new TapSourceCost()));
this.addAbility(new SimpleActivatedAbility(new BoostAllEffect(
1, 0, Duration.EndOfTurn, filter, true
), new TapSourceCost()));
}
private SpriteNoble(final SpriteNoble card) {

View file

@ -23,7 +23,7 @@ import java.util.UUID;
*/
public final class StonebrowKrosanHero extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent(" creature you control with trample");
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("creature you control with trample");
static {
filter.add(new AbilityPredicate(TrampleAbility.class));
}

View file

@ -1,10 +1,7 @@
package mage.cards.t;
import java.util.UUID;
import mage.ObjectColor;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.Effect;
import mage.abilities.effects.common.continuous.BecomesColorTargetEffect;
import mage.abilities.effects.common.continuous.BoostTargetEffect;
import mage.abilities.effects.common.continuous.GainAbilityTargetEffect;
@ -14,31 +11,32 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.TimingRule;
import mage.target.common.TargetCreaturePermanent;
import java.util.UUID;
/**
*
* @author LevelX2
*/
public final class TraitorsClutch extends CardImpl {
public TraitorsClutch(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{4}{B}");
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{4}{B}");
// Target creature gets +1/+0, becomes black, and gains shadow until end of turn.
this.getSpellAbility().addEffect(new BoostTargetEffect(1,0, Duration.EndOfTurn));
Effect effect = new BecomesColorTargetEffect(ObjectColor.BLACK, Duration.EndOfTurn);
effect.setText(", becomes black");
this.getSpellAbility().addEffect(effect);
effect = new GainAbilityTargetEffect(ShadowAbility.getInstance(), Duration.EndOfTurn);
effect.setText(", and gains shadow until end of turn");
this.getSpellAbility().addEffect(effect);
this.getSpellAbility().addEffect(new BoostTargetEffect(
1, 0, Duration.EndOfTurn
).setText("target creature gets +1/+0"));
this.getSpellAbility().addEffect(new BecomesColorTargetEffect(
ObjectColor.BLACK, Duration.EndOfTurn
).setText(", becomes black"));
this.getSpellAbility().addEffect(new GainAbilityTargetEffect(
ShadowAbility.getInstance(), Duration.EndOfTurn
).setText(", and gains shadow until end of turn"));
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
// Flashback {1}{B}
this.addAbility(new FlashbackAbility(this, new ManaCostsImpl("{1}{B}")));
this.addAbility(new FlashbackAbility(this, new ManaCostsImpl<>("{1}{B}")));
}
private TraitorsClutch(final TraitorsClutch card) {

View file

@ -35,7 +35,7 @@ public final class UnyaroBees extends CardImpl {
// {G}: Unyaro Bees gets +1/+1 until end of turn.
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(1, 1, Duration.EndOfTurn), new ManaCostsImpl("{G}")));
// {3}{G}, Sacrifice Unyaro Bees: Unyaro Bees deals 2 damage to any target.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(2), new ManaCostsImpl("{3}{G}"));
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(2, "it"), new ManaCostsImpl("{3}{G}"));
ability.addCost(new SacrificeSourceCost());
ability.addTarget(new TargetAnyTarget());
this.addAbility(ability);

View file

@ -60,7 +60,7 @@ class YavimayaDryadEffect extends SearchEffect {
public YavimayaDryadEffect(TargetCardInLibrary target) {
super(target, Outcome.PutLandInPlay);
staticText = "you may search your library for a Forest card and put it onto the battlefield tapped under target player's control. If you do, shuffle";
staticText = "you may search your library for a Forest card, put it onto the battlefield tapped under target player's control, then shuffle";
}
public YavimayaDryadEffect(final YavimayaDryadEffect effect) {

View file

@ -62,7 +62,7 @@ public class VerifyCardDataTest {
private static final Logger logger = Logger.getLogger(VerifyCardDataTest.class);
private static final String FULL_ABILITIES_CHECK_SET_CODE = "AFC"; // check all abilities and output cards with wrong abilities texts;
private static final String FULL_ABILITIES_CHECK_SET_CODE = "TSP"; // check all abilities and output cards with wrong abilities texts;
private static final boolean AUTO_FIX_SAMPLE_DECKS = false; // debug only: auto-fix sample decks by test_checkSampleDecks test run
private static final boolean ONLY_TEXT = false; // use when checking text locally, suppresses unnecessary checks and output messages

View file

@ -29,6 +29,6 @@ public class ActivateOnlyByOpponentActivatedAbility extends ActivatedAbilityImpl
@Override
public String getRule() {
return super.getRule() + " Only any opponent may activate this ability.";
return super.getRule() + " Only your opponents may activate this ability.";
}
}

View file

@ -27,7 +27,7 @@ public class ProtectionChosenColorAttachedEffect extends ContinuousEffectImpl {
public ProtectionChosenColorAttachedEffect(boolean notRemoveItself) {
super(Duration.WhileOnBattlefield, Layer.AbilityAddingRemovingEffects_6, SubLayer.NA, Outcome.AddAbility);
this.notRemoveItself = notRemoveItself;
staticText = "{this} has protection from the chosen color" + (notRemoveItself ? ". This effect doesn't remove {this}" : "");
staticText = "enchanted creature has protection from the chosen color" + (notRemoveItself ? ". This effect doesn't remove {this}" : "");
}
public ProtectionChosenColorAttachedEffect(final ProtectionChosenColorAttachedEffect effect) {

View file

@ -169,7 +169,7 @@ public class AddManaInAnyCombinationEffect extends ManaEffect {
sb.append('{').append(coloredManaSymbol.toString()).append('}');
}
}
if (amountString.equals("X")) {
if (amountString.equals("X") && !amount.getMessage().isEmpty()) {
sb.append(", where X is ");
sb.append(amount.getMessage());
}