[WWK] various text fixes

This commit is contained in:
Evan Kranzler 2022-03-08 21:24:22 -05:00
parent caa1b7a8d7
commit 7fb089db48
26 changed files with 77 additions and 78 deletions

View file

@ -39,7 +39,7 @@ public final class AkoumBattlesinger extends CardImpl {
// Haste // Haste
this.addAbility(HasteAbility.getInstance()); this.addAbility(HasteAbility.getInstance());
// Whenever Akoum Battlesinger or another Ally enters the battlefield under your control, you may have Ally creatures you control get +1/+0 until end of turn. // Whenever Akoum Battlesinger or another Ally enters the battlefield under your control, you may have Ally creatures you control get +1/+0 until end of turn.
this.addAbility(new AllyEntersBattlefieldTriggeredAbility(new BoostControlledEffect(1, 0, Duration.EndOfTurn, filter, false), true)); this.addAbility(new AllyEntersBattlefieldTriggeredAbility(new BoostControlledEffect(1, 0, Duration.EndOfTurn, filter, false), true).setAbilityWord(null));
} }
private AkoumBattlesinger(final AkoumBattlesinger card) { private AkoumBattlesinger(final AkoumBattlesinger card) {

View file

@ -26,7 +26,7 @@ public final class BojukaBrigand extends CardImpl {
this.toughness = new MageInt(1); this.toughness = new MageInt(1);
this.addAbility(new CantBlockAbility()); this.addAbility(new CantBlockAbility());
this.addAbility(new AllyEntersBattlefieldTriggeredAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance()), true)); this.addAbility(new AllyEntersBattlefieldTriggeredAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance()), true).setAbilityWord(null));
} }
private BojukaBrigand(final BojukaBrigand card) { private BojukaBrigand(final BojukaBrigand card) {

View file

@ -43,7 +43,7 @@ public final class BrinkOfDisaster extends CardImpl {
this.addAbility(ability); this.addAbility(ability);
// When enchanted permanent becomes tapped, destroy it. // When enchanted permanent becomes tapped, destroy it.
this.addAbility(new BecomesTappedAttachedTriggeredAbility(new DestroyAttachedToEffect("it"), "enchanted permanent")); this.addAbility(new BecomesTappedAttachedTriggeredAbility(new DestroyAttachedToEffect("it"), "").setTriggerPhrase("When enchanted permanent becomes tapped, "));
} }
private BrinkOfDisaster(final BrinkOfDisaster card) { private BrinkOfDisaster(final BrinkOfDisaster card) {

View file

@ -42,7 +42,7 @@ public final class ClawsOfValakut extends CardImpl {
SimpleStaticAbility ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(new PermanentsOnBattlefieldCount(filter, 1), SimpleStaticAbility ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(new PermanentsOnBattlefieldCount(filter, 1),
new PermanentsOnBattlefieldCount(filter, 0), new PermanentsOnBattlefieldCount(filter, 0),
Duration.WhileOnBattlefield)); Duration.WhileOnBattlefield));
ability.addEffect(new GainAbilityAttachedEffect(FirstStrikeAbility.getInstance(), AttachmentType.AURA)); ability.addEffect(new GainAbilityAttachedEffect(FirstStrikeAbility.getInstance(), AttachmentType.AURA).setText("and has first strike"));
this.addAbility(ability); this.addAbility(ability);
} }

View file

@ -24,7 +24,7 @@ public final class CosisRavager extends CardImpl {
this.color.setRed(true); this.color.setRed(true);
this.power = new MageInt(2); this.power = new MageInt(2);
this.toughness = new MageInt(2); this.toughness = new MageInt(2);
Ability ability = new LandfallAbility(new DamageTargetEffect(1), false); Ability ability = new LandfallAbility(new DamageTargetEffect(1), true);
ability.addTarget(new TargetPlayerOrPlaneswalker()); ability.addTarget(new TargetPlayerOrPlaneswalker());
this.addAbility(ability); this.addAbility(ability);
} }

View file

@ -28,7 +28,7 @@ public final class GraypeltHunter extends CardImpl {
this.toughness = new MageInt(2); this.toughness = new MageInt(2);
this.addAbility(TrampleAbility.getInstance()); this.addAbility(TrampleAbility.getInstance());
this.addAbility(new AllyEntersBattlefieldTriggeredAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance()), true)); this.addAbility(new AllyEntersBattlefieldTriggeredAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance()), true).setAbilityWord(null));
} }
private GraypeltHunter(final GraypeltHunter card) { private GraypeltHunter(final GraypeltHunter card) {

View file

@ -44,7 +44,7 @@ public final class GuardianZendikon extends CardImpl {
this.addAbility(ability); this.addAbility(ability);
Ability ability2 = new SimpleStaticAbility(Zone.BATTLEFIELD, new BecomesCreatureAttachedEffect( Ability ability2 = new SimpleStaticAbility(Zone.BATTLEFIELD, new BecomesCreatureAttachedEffect(
new GuardianZendikonWallToken(), "Enchanted land is a 2/6 white wall creature with defender. It's still a land", Duration.WhileOnBattlefield, BecomesCreatureAttachedEffect.LoseType.COLOR)); new GuardianZendikonWallToken(), "Enchanted land is a 2/6 white Wall creature with defender. It's still a land", Duration.WhileOnBattlefield, BecomesCreatureAttachedEffect.LoseType.COLOR));
this.addAbility(ability2); this.addAbility(ability2);
Ability ability3 = new DiesAttachedTriggeredAbility(new ReturnToHandAttachedEffect(), "enchanted land", false); Ability ability3 = new DiesAttachedTriggeredAbility(new ReturnToHandAttachedEffect(), "enchanted land", false);
@ -64,7 +64,7 @@ public final class GuardianZendikon extends CardImpl {
class GuardianZendikonWallToken extends TokenImpl { class GuardianZendikonWallToken extends TokenImpl {
GuardianZendikonWallToken() { GuardianZendikonWallToken() {
super("", "2/6 white wall creature with defender"); super("", "2/6 white Wall creature with defender");
cardType.add(CardType.CREATURE); cardType.add(CardType.CREATURE);
color.setWhite(true); color.setWhite(true);
subtype.add(SubType.WALL); subtype.add(SubType.WALL);

View file

@ -26,7 +26,7 @@ public final class HadaFreeblade extends CardImpl {
this.power = new MageInt(0); this.power = new MageInt(0);
this.toughness = new MageInt(1); this.toughness = new MageInt(1);
this.addAbility(new AllyEntersBattlefieldTriggeredAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance()), true)); this.addAbility(new AllyEntersBattlefieldTriggeredAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance()), true).setAbilityWord(null));
} }
private HadaFreeblade(final HadaFreeblade card) { private HadaFreeblade(final HadaFreeblade card) {

View file

@ -38,7 +38,7 @@ public final class HalimarExcavator extends CardImpl {
this.toughness = new MageInt(3); this.toughness = new MageInt(3);
Ability ability = new AllyEntersBattlefieldTriggeredAbility(new PutLibraryIntoGraveTargetEffect(new PermanentsOnBattlefieldCount(filter)), false); Ability ability = new AllyEntersBattlefieldTriggeredAbility(new PutLibraryIntoGraveTargetEffect(new PermanentsOnBattlefieldCount(filter)), false);
ability.addTarget(new TargetPlayer()); ability.addTarget(new TargetPlayer());
this.addAbility(ability); this.addAbility(ability.setAbilityWord(null));
} }
private HalimarExcavator(final HalimarExcavator card) { private HalimarExcavator(final HalimarExcavator card) {

View file

@ -1,7 +1,5 @@
package mage.cards.j; package mage.cards.j;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.common.AllyEntersBattlefieldTriggeredAbility; import mage.abilities.common.AllyEntersBattlefieldTriggeredAbility;
import mage.abilities.effects.common.continuous.GainAbilityAllEffect; import mage.abilities.effects.common.continuous.GainAbilityAllEffect;
@ -14,13 +12,14 @@ import mage.constants.SubType;
import mage.constants.TargetController; import mage.constants.TargetController;
import mage.filter.common.FilterCreaturePermanent; import mage.filter.common.FilterCreaturePermanent;
import java.util.UUID;
/** /**
*
* @author North * @author North
*/ */
public final class JoragaBard extends CardImpl { public final class JoragaBard extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Ally creatures you control"); private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("have Ally creatures you control");
static { static {
filter.add(SubType.ALLY.getPredicate()); filter.add(SubType.ALLY.getPredicate());
@ -28,7 +27,7 @@ public final class JoragaBard extends CardImpl {
} }
public JoragaBard(UUID ownerId, CardSetInfo setInfo) { public JoragaBard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}"); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}");
this.subtype.add(SubType.ELF); this.subtype.add(SubType.ELF);
this.subtype.add(SubType.ROGUE); this.subtype.add(SubType.ROGUE);
this.subtype.add(SubType.BARD); this.subtype.add(SubType.BARD);
@ -39,7 +38,7 @@ public final class JoragaBard extends CardImpl {
this.addAbility(new AllyEntersBattlefieldTriggeredAbility(new GainAbilityAllEffect( this.addAbility(new AllyEntersBattlefieldTriggeredAbility(new GainAbilityAllEffect(
VigilanceAbility.getInstance(), Duration.EndOfTurn, filter VigilanceAbility.getInstance(), Duration.EndOfTurn, filter
).setText("you may have Ally creatures you control gain vigilance until end of turn"), true).setAbilityWord(null)); ), true).setAbilityWord(null));
} }
private JoragaBard(final JoragaBard card) { private JoragaBard(final JoragaBard card) {

View file

@ -78,7 +78,7 @@ class KazuulTyrantOfTheCliffsTriggeredAbility extends TriggeredAbilityImpl {
@Override @Override
public String getRule() { public String getRule() {
return "Whenever a creature an opponent controls attacks, if you're the defending player, " + return "Whenever a creature an opponent controls attacks, if you're the defending player, " +
"create a 3/3 red Ogre creature token unless that creature's controller pays {3}"; "create a 3/3 red Ogre creature token unless that creature's controller pays {3}.";
} }
} }

View file

@ -1,8 +1,7 @@
package mage.cards.k; package mage.cards.k;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.common.EquippedSourceCondition; import mage.abilities.condition.common.EquippedSourceCondition;
import mage.abilities.decorator.ConditionalContinuousEffect; import mage.abilities.decorator.ConditionalContinuousEffect;
@ -12,21 +11,18 @@ import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Duration; import mage.constants.Duration;
import mage.constants.Zone; import mage.constants.SubType;
import java.util.UUID;
/** /**
*
* @author Loki * @author Loki
*/ */
public final class KitesailApprentice extends CardImpl { public final class KitesailApprentice extends CardImpl {
private static final String rule1 = "As long as {this} is equipped, it gets +1/+1";
private static final String rule2 = "As long as {this} is equipped, it has flying";
public KitesailApprentice(UUID ownerId, CardSetInfo setInfo) { public KitesailApprentice(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}"); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{W}");
this.subtype.add(SubType.KOR); this.subtype.add(SubType.KOR);
this.subtype.add(SubType.SOLDIER); this.subtype.add(SubType.SOLDIER);
@ -34,10 +30,14 @@ public final class KitesailApprentice extends CardImpl {
this.power = new MageInt(1); this.power = new MageInt(1);
this.toughness = new MageInt(1); this.toughness = new MageInt(1);
ConditionalContinuousEffect effect1 = new ConditionalContinuousEffect(new BoostSourceEffect(1, 1, Duration.WhileOnBattlefield), EquippedSourceCondition.instance, rule1); Ability ability = new SimpleStaticAbility(new ConditionalContinuousEffect(
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect1)); new BoostSourceEffect(1, 1, Duration.WhileOnBattlefield),
ConditionalContinuousEffect effect2 = new ConditionalContinuousEffect(new GainAbilitySourceEffect(FlyingAbility.getInstance()), EquippedSourceCondition.instance, rule2); EquippedSourceCondition.instance, "as long as {this} is equipped, it gets +1/+1"
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect2)); ));
ability.addEffect(new ConditionalContinuousEffect(new GainAbilitySourceEffect(
FlyingAbility.getInstance()), EquippedSourceCondition.instance, "and has flying"
));
this.addAbility(ability);
} }
private KitesailApprentice(final KitesailApprentice card) { private KitesailApprentice(final KitesailApprentice card) {

View file

@ -99,7 +99,7 @@ class MordantDragonTriggeredAbility extends TriggeredAbilityImpl {
@Override @Override
public String getRule() { public String getRule() {
return "Whenever {this} deals combat damage to a player, " return "Whenever {this} deals combat damage to a player, "
+ "you may have it deal that much damage to target creature that player controls"; + "you may have it deal that much damage to target creature that player controls.";
} }
} }

View file

@ -1,28 +1,32 @@
package mage.cards.m; package mage.cards.m;
import java.util.UUID;
import mage.abilities.condition.common.LandfallCondition; import mage.abilities.condition.common.LandfallCondition;
import mage.abilities.decorator.ConditionalOneShotEffect; import mage.abilities.decorator.ConditionalOneShotEffect;
import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.effects.common.DrawCardSourceControllerEffect;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.AbilityWord;
import mage.constants.CardType; import mage.constants.CardType;
import mage.watchers.common.LandfallWatcher; import mage.watchers.common.LandfallWatcher;
import java.util.UUID;
/** /**
*
* @author jeffwadsworth * @author jeffwadsworth
*/ */
public final class MysteriesOfTheDeep extends CardImpl { public final class MysteriesOfTheDeep extends CardImpl {
public MysteriesOfTheDeep(UUID ownerId, CardSetInfo setInfo) { public MysteriesOfTheDeep(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{4}{U}"); super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{4}{U}");
// Draw two cards. // Draw two cards.
// Landfall - If you had a land enter the battlefield under your control this turn, draw three cards instead. // Landfall - If you had a land enter the battlefield under your control this turn, draw three cards instead.
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(
new DrawCardSourceControllerEffect(3), new DrawCardSourceControllerEffect(2),
LandfallCondition.instance, "Draw two cards.<br>" + AbilityWord.LANDFALL.formatWord()
+ "If you had a land enter the battlefield under your control this turn, draw three cards instead"
));
this.getSpellAbility().addWatcher(new LandfallWatcher()); this.getSpellAbility().addWatcher(new LandfallWatcher());
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(new DrawCardSourceControllerEffect(3), new DrawCardSourceControllerEffect(2), LandfallCondition.instance, "Draw 2 cards. Landfall - If you had a land enter the battlefield under your control this turn, draw three cards instead"));
} }
private MysteriesOfTheDeep(final MysteriesOfTheDeep card) { private MysteriesOfTheDeep(final MysteriesOfTheDeep card) {

View file

@ -35,7 +35,7 @@ public final class PermafrostTrap extends CardImpl {
// Tap up to two target creatures. Those creatures don't untap during their controller's next untap step. // Tap up to two target creatures. Those creatures don't untap during their controller's next untap step.
this.getSpellAbility().addEffect(new TapTargetEffect()); this.getSpellAbility().addEffect(new TapTargetEffect());
this.getSpellAbility().addTarget(new TargetCreaturePermanent(0, 2)); this.getSpellAbility().addTarget(new TargetCreaturePermanent(0, 2));
this.getSpellAbility().addEffect(new DontUntapInControllersNextUntapStepTargetEffect()); this.getSpellAbility().addEffect(new DontUntapInControllersNextUntapStepTargetEffect("Those creatures"));
} }
private PermafrostTrap(final PermafrostTrap card) { private PermafrostTrap(final PermafrostTrap card) {

View file

@ -34,8 +34,8 @@ public final class RazorBoomerang extends CardImpl {
// Equipped creature has "{tap}, Unattach Razor Boomerang: Razor Boomerang deals 1 damage to any target. Return Razor Boomerang to its owner's hand." // Equipped creature has "{tap}, Unattach Razor Boomerang: Razor Boomerang deals 1 damage to any target. Return Razor Boomerang to its owner's hand."
this.addAbility(new SimpleStaticAbility(new GainAbilityWithAttachmentEffect( this.addAbility(new SimpleStaticAbility(new GainAbilityWithAttachmentEffect(
"equipped creature has \"{tap}, Unattach {this}: " + "equipped creature has \"{T}, Unattach {this}: " +
"{this} deals 1 damage to any target. Return {this} to its owner's hand.\"", "It deals 1 damage to any target. Return {this} to its owner's hand.\"",
new RazorBoomerangEffect(), new TargetAnyTarget(), new RazorBoomerangEffect(), new TargetAnyTarget(),
new UnattachCost(), new TapSourceCost() new UnattachCost(), new TapSourceCost()
))); )));

View file

@ -12,7 +12,7 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.Zone; import mage.constants.Zone;
import mage.filter.common.FilterControlledLandPermanent; import mage.filter.StaticFilters;
import mage.target.TargetPermanent; import mage.target.TargetPermanent;
import java.util.UUID; import java.util.UUID;
@ -32,8 +32,8 @@ public final class RuinGhost extends CardImpl {
// {W}, {T}: Exile target land you control, then return it to the battlefield under your control. // {W}, {T}: Exile target land you control, then return it to the battlefield under your control.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new ExileTargetForSourceEffect(), new ManaCostsImpl("{W")); Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new ExileTargetForSourceEffect(), new ManaCostsImpl("{W"));
ability.addCost(new TapSourceCost()); ability.addCost(new TapSourceCost());
ability.addEffect(new ReturnToBattlefieldUnderYourControlTargetEffect(false)); ability.addEffect(new ReturnToBattlefieldUnderYourControlTargetEffect(false).concatBy(", then"));
ability.addTarget(new TargetPermanent(new FilterControlledLandPermanent())); ability.addTarget(new TargetPermanent(StaticFilters.FILTER_CONTROLLED_PERMANENT_LAND));
this.addAbility(ability); this.addAbility(ability);
} }

View file

@ -20,7 +20,7 @@ import mage.filter.common.FilterCreaturePermanent;
*/ */
public final class SeascapeAerialist extends CardImpl { public final class SeascapeAerialist extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Ally creatures you control"); private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("have Ally creatures you control");
static { static {
filter.add(SubType.ALLY.getPredicate()); filter.add(SubType.ALLY.getPredicate());
@ -36,7 +36,7 @@ public final class SeascapeAerialist extends CardImpl {
this.power = new MageInt(2); this.power = new MageInt(2);
this.toughness = new MageInt(3); this.toughness = new MageInt(3);
this.addAbility(new AllyEntersBattlefieldTriggeredAbility(new GainAbilityAllEffect(FlyingAbility.getInstance(), Duration.EndOfTurn, filter).setText("you may have Ally creatures you control gain flying until end of turn"), true).setAbilityWord(null)); this.addAbility(new AllyEntersBattlefieldTriggeredAbility(new GainAbilityAllEffect(FlyingAbility.getInstance(), Duration.EndOfTurn, filter), true).setAbilityWord(null));
} }
private SeascapeAerialist(final SeascapeAerialist card) { private SeascapeAerialist(final SeascapeAerialist card) {

View file

@ -1,9 +1,9 @@
package mage.cards.s; package mage.cards.s;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.Condition;
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition; import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
import mage.abilities.decorator.ConditionalContinuousEffect; import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.effects.common.continuous.GainAbilitySourceEffect; import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
@ -13,25 +13,20 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.Zone;
import mage.filter.common.FilterControlledPermanent; import mage.filter.common.FilterControlledPermanent;
import java.util.UUID;
/** /**
*
* @author North, nantuko * @author North, nantuko
*/ */
public final class SejiriMerfolk extends CardImpl { public final class SejiriMerfolk extends CardImpl {
private static final String rule1 = "As long as you control a Plains, {this} has first strike."; private static final FilterControlledPermanent filter = new FilterControlledPermanent(SubType.PLAINS);
private static final String rule2 = "As long as you control a Plains, {this} has lifelink."; private static final Condition condition = new PermanentsOnTheBattlefieldCondition(filter);
private static final FilterControlledPermanent filter = new FilterControlledPermanent("Plains");
static {
filter.add(SubType.PLAINS.getPredicate());
}
public SejiriMerfolk(UUID ownerId, CardSetInfo setInfo) { public SejiriMerfolk(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}"); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}");
this.subtype.add(SubType.MERFOLK); this.subtype.add(SubType.MERFOLK);
this.subtype.add(SubType.SOLDIER); this.subtype.add(SubType.SOLDIER);
@ -39,11 +34,14 @@ public final class SejiriMerfolk extends CardImpl {
this.power = new MageInt(2); this.power = new MageInt(2);
this.toughness = new MageInt(1); this.toughness = new MageInt(1);
ConditionalContinuousEffect effect1 = new ConditionalContinuousEffect(new GainAbilitySourceEffect(LifelinkAbility.getInstance()), new PermanentsOnTheBattlefieldCondition(filter), rule1); Ability ability = new SimpleStaticAbility(new ConditionalContinuousEffect(
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect1)); new GainAbilitySourceEffect(LifelinkAbility.getInstance()), condition,
ConditionalContinuousEffect effect2 = new ConditionalContinuousEffect(new GainAbilitySourceEffect(FirstStrikeAbility.getInstance()), new PermanentsOnTheBattlefieldCondition(filter), rule2); "as long as you control a Plains, {this} has first strike"
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect2)); ));
ability.addEffect(new ConditionalContinuousEffect(new GainAbilitySourceEffect(
FirstStrikeAbility.getInstance()), condition, "and lifelink"
));
this.addAbility(ability);
} }
private SejiriMerfolk(final SejiriMerfolk card) { private SejiriMerfolk(final SejiriMerfolk card) {

View file

@ -27,7 +27,7 @@ public final class SpellContortion extends CardImpl {
// Counter target spell unless its controller pays {2}. Draw a card for each time Spell Contortion was kicked. // Counter target spell unless its controller pays {2}. Draw a card for each time Spell Contortion was kicked.
this.getSpellAbility().addEffect(new CounterUnlessPaysEffect(new GenericManaCost(2))); this.getSpellAbility().addEffect(new CounterUnlessPaysEffect(new GenericManaCost(2)));
this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(MultikickerCount.instance)); this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(MultikickerCount.instance).setText("draw a card for each time {this} was kicked"));
this.getSpellAbility().addTarget(new TargetSpell()); this.getSpellAbility().addTarget(new TargetSpell());
} }

View file

@ -1,33 +1,31 @@
package mage.cards.t; package mage.cards.t;
import java.util.UUID;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.Effect;
import mage.abilities.effects.common.continuous.GainAbilityAllEffect; import mage.abilities.effects.common.continuous.GainAbilityAllEffect;
import mage.abilities.keyword.IndestructibleAbility; import mage.abilities.keyword.IndestructibleAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.Duration; import mage.constants.Duration;
import mage.constants.Zone; import mage.filter.FilterPermanent;
import mage.filter.common.FilterLandPermanent; import mage.filter.common.FilterLandPermanent;
import java.util.UUID;
/** /**
*
* @author North * @author North
*/ */
public final class TerraEternal extends CardImpl { public final class TerraEternal extends CardImpl {
public TerraEternal(UUID ownerId, CardSetInfo setInfo) { private static final FilterPermanent filter = new FilterLandPermanent("all lands");
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{W}");
public TerraEternal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{W}");
// All lands are indestructible. // All lands are indestructible.
FilterLandPermanent filter = new FilterLandPermanent("All lands"); this.addAbility(new SimpleStaticAbility(new GainAbilityAllEffect(
Effect effect = new GainAbilityAllEffect(IndestructibleAbility.getInstance(), Duration.WhileOnBattlefield, filter, false); IndestructibleAbility.getInstance(), Duration.WhileOnBattlefield, filter, false
effect.setText("All lands are indestructible"); )));
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect));
} }
private TerraEternal(final TerraEternal card) { private TerraEternal(final TerraEternal card) {

View file

@ -26,7 +26,7 @@ import mage.target.common.TargetCreaturePermanent;
*/ */
public final class TideforceElemental extends CardImpl { public final class TideforceElemental extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another creature"); private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another target creature");
static { static {
filter.add(AnotherPredicate.instance); filter.add(AnotherPredicate.instance);

View file

@ -34,7 +34,7 @@ public final class Twitch extends CardImpl {
// Draw a card. // Draw a card.
this.getSpellAbility().addEffect(new MayTapOrUntapTargetEffect()); this.getSpellAbility().addEffect(new MayTapOrUntapTargetEffect());
this.getSpellAbility().addTarget(new TargetPermanent(filter)); this.getSpellAbility().addTarget(new TargetPermanent(filter));
this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1)); this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1).concatBy("<br>"));
} }
private Twitch(final Twitch card) { private Twitch(final Twitch card) {

View file

@ -21,7 +21,7 @@ public final class VeteransReflexes extends CardImpl {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{W}"); super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{W}");
this.getSpellAbility().addEffect(new BoostTargetEffect(1, 1, Duration.EndOfTurn)); this.getSpellAbility().addEffect(new BoostTargetEffect(1, 1, Duration.EndOfTurn));
this.getSpellAbility().addEffect(new UntapTargetEffect()); this.getSpellAbility().addEffect(new UntapTargetEffect().setText("untap that creature"));
this.getSpellAbility().addTarget(new TargetCreaturePermanent()); this.getSpellAbility().addTarget(new TargetCreaturePermanent());
} }

View file

@ -62,7 +62,7 @@ public class VerifyCardDataTest {
private static final Logger logger = Logger.getLogger(VerifyCardDataTest.class); private static final Logger logger = Logger.getLogger(VerifyCardDataTest.class);
private static final String FULL_ABILITIES_CHECK_SET_CODE = "ZEN"; // check all abilities and output cards with wrong abilities texts; private static final String FULL_ABILITIES_CHECK_SET_CODE = "WWK"; // 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 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 private static final boolean ONLY_TEXT = false; // use when checking text locally, suppresses unnecessary checks and output messages

View file

@ -81,7 +81,7 @@ public class DiscardTargetEffect extends OneShotEffect {
sb.append("target ").append(mode.getTargets().get(0).getTargetName()); sb.append("target ").append(mode.getTargets().get(0).getTargetName());
} }
sb.append(" discards "); sb.append(" discards ");
if (amount.toString().equals("1")) { if (amount.toString().equals("1") || amount.toString().equals("a")) {
sb.append("a card"); sb.append("a card");
} else { } else {
sb.append(CardUtil.numberToText(amount.toString())).append(" cards"); sb.append(CardUtil.numberToText(amount.toString())).append(" cards");