[ZEN] various text fixes

This commit is contained in:
Evan Kranzler 2022-03-08 20:59:01 -05:00
parent ed3d357531
commit caa1b7a8d7
38 changed files with 117 additions and 108 deletions

View file

@ -37,7 +37,7 @@ public final class AetherFigment extends CardImpl {
Ability ability = new EntersBattlefieldAbility(
new AddCountersSourceEffect(CounterType.P1P1.createInstance(2)),
KickedCondition.instance,
"If {this} was kicked, it enters the battlefield with two +1/+1 counters on it",
"If {this} was kicked, it enters the battlefield with two +1/+1 counters on it.",
"");
this.addAbility(ability);
}

View file

@ -36,7 +36,7 @@ public final class BalaGedThief extends CardImpl {
// You choose one of them. That player discards that card.
Ability ability = new AllyEntersBattlefieldTriggeredAbility(new DiscardCardYouChooseTargetEffect(TargetController.ANY, xValue), false);
ability.addTarget(new TargetPlayer());
this.addAbility(ability);
this.addAbility(ability.setAbilityWord(null));
}
private BalaGedThief(final BalaGedThief card) {

View file

@ -26,7 +26,7 @@ public final class BurstLightning extends CardImpl {
// Burst Lightning deals 2 damage to any target. If Burst Lightning was kicked, it deals 4 damage to that creature or player instead.
this.getSpellAbility().addTarget(new TargetAnyTarget());
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(new DamageTargetEffect(4),
new DamageTargetEffect(2), KickedCondition.instance, "{this} deals 2 damage to any target. If this spell was kicked, it deals 4 damage to that permanent or player instead"));
new DamageTargetEffect(2), KickedCondition.instance, "{this} deals 2 damage to any target. If this spell was kicked, it deals 4 damage instead"));
}
private BurstLightning(final BurstLightning card) {

View file

@ -1,7 +1,7 @@
package mage.cards.g;
import mage.abilities.Mode;
import mage.abilities.effects.common.ReturnToHandTargetEffect;
import mage.abilities.effects.common.ReturnFromGraveyardToHandTargetEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@ -24,14 +24,15 @@ public final class GrimDiscovery extends CardImpl {
// Choose one or both -
this.getSpellAbility().getModes().setMinModes(1);
this.getSpellAbility().getModes().setMaxModes(2);
// Return target creature card from your graveyard to your hand;
this.getSpellAbility().addEffect(new ReturnToHandTargetEffect());
this.getSpellAbility().addEffect(new ReturnFromGraveyardToHandTargetEffect());
this.getSpellAbility().addTarget(new TargetCardInYourGraveyard(StaticFilters.FILTER_CARD_CREATURE_YOUR_GRAVEYARD).withChooseHint("return to hand"));
// and/or return target land card from your graveyard to your hand.
Mode mode1 = new Mode();
mode1.addEffect(new ReturnToHandTargetEffect());
mode1.addTarget(new TargetCardInYourGraveyard(filterLandCard).withChooseHint("return to hand"));
this.getSpellAbility().addMode(mode1);
Mode mode = new Mode(new ReturnFromGraveyardToHandTargetEffect());
mode.addTarget(new TargetCardInYourGraveyard(filterLandCard).withChooseHint("return to hand"));
this.getSpellAbility().addMode(mode);
}
private GrimDiscovery(final GrimDiscovery card) {

View file

@ -1,7 +1,5 @@
package mage.cards.h;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.AllyEntersBattlefieldTriggeredAbility;
@ -15,8 +13,9 @@ import mage.constants.TargetController;
import mage.filter.common.FilterControlledCreaturePermanent;
import mage.target.TargetPlayer;
import java.util.UUID;
/**
*
* @author North
*/
public final class HagraDiabolist extends CardImpl {
@ -29,7 +28,7 @@ public final class HagraDiabolist extends CardImpl {
}
public HagraDiabolist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}");
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{B}");
this.subtype.add(SubType.OGRE);
this.subtype.add(SubType.SHAMAN);
this.subtype.add(SubType.ALLY);
@ -37,9 +36,9 @@ public final class HagraDiabolist extends CardImpl {
this.power = new MageInt(3);
this.toughness = new MageInt(2);
Ability ability = new AllyEntersBattlefieldTriggeredAbility(new LoseLifeTargetEffect(new PermanentsOnBattlefieldCount(filter)), true);
Ability ability = new AllyEntersBattlefieldTriggeredAbility(new LoseLifeTargetEffect(new PermanentsOnBattlefieldCount(filter)).setText("you may have target player lose life equal to the number of Allies you control"), true);
ability.addTarget(new TargetPlayer());
this.addAbility(ability);
this.addAbility(ability.setAbilityWord(null));
}
private HagraDiabolist(final HagraDiabolist card) {

View file

@ -40,7 +40,7 @@ public final class HighlandBerserker extends CardImpl {
// Whenever Highland Berserker or another Ally enters the battlefield under your control, you may have Ally creatures you control gain first strike until end of turn.
Effect effect = new GainAbilityAllEffect(FirstStrikeAbility.getInstance(), Duration.EndOfTurn, filter);
effect.setText("you may have Ally creatures you control gain first strike until end of turn");
this.addAbility(new AllyEntersBattlefieldTriggeredAbility(effect, true));
this.addAbility(new AllyEntersBattlefieldTriggeredAbility(effect, true).setAbilityWord(null));
}
private HighlandBerserker(final HighlandBerserker card) {

View file

@ -37,7 +37,9 @@ public final class JoragaBard extends CardImpl {
this.power = new MageInt(1);
this.toughness = new MageInt(4);
this.addAbility(new AllyEntersBattlefieldTriggeredAbility(new GainAbilityAllEffect(VigilanceAbility.getInstance(), Duration.EndOfTurn, filter), true));
this.addAbility(new AllyEntersBattlefieldTriggeredAbility(new GainAbilityAllEffect(
VigilanceAbility.getInstance(), Duration.EndOfTurn, filter
).setText("you may have Ally creatures you control gain vigilance until end of turn"), true).setAbilityWord(null));
}
private JoragaBard(final JoragaBard card) {

View file

@ -35,7 +35,7 @@ public final class KabiraEvangel extends CardImpl {
.setText("choose a color. If you do, Allies you control gain protection " +
"from the chosen color until end of turn."),
true
));
).setAbilityWord(null));
}
private KabiraEvangel(final KabiraEvangel card) {

View file

@ -30,7 +30,7 @@ public final class KazanduBlademaster extends CardImpl {
this.addAbility(FirstStrikeAbility.getInstance());
this.addAbility(VigilanceAbility.getInstance());
this.addAbility(new AllyEntersBattlefieldTriggeredAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance()), true));
this.addAbility(new AllyEntersBattlefieldTriggeredAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance()), true).setAbilityWord(null));
}
private KazanduBlademaster(final KazanduBlademaster card) {

View file

@ -19,7 +19,7 @@ import mage.filter.common.FilterCreaturePermanent;
*/
public final class KazuulWarlord extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Ally creatures you control");
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Ally creature you control");
static {
filter.add(SubType.ALLY.getPredicate());
@ -35,7 +35,7 @@ public final class KazuulWarlord extends CardImpl {
this.power = new MageInt(3);
this.toughness = new MageInt(3);
this.addAbility(new AllyEntersBattlefieldTriggeredAbility(new AddCountersAllEffect(CounterType.P1P1.createInstance(), filter), true));
this.addAbility(new AllyEntersBattlefieldTriggeredAbility(new AddCountersAllEffect(CounterType.P1P1.createInstance(), filter), true).setAbilityWord(null));
}
private KazuulWarlord(final KazuulWarlord card) {

View file

@ -30,7 +30,7 @@ public final class KorHookmaster extends CardImpl {
// When Kor Hookmaster enters the battlefield, tap target creature an opponent controls.
// That creature doesn't untap during its controller's next untap step.
EntersBattlefieldTriggeredAbility ability = new EntersBattlefieldTriggeredAbility(new TapTargetEffect());
ability.addEffect(new DontUntapInControllersNextUntapStepTargetEffect());
ability.addEffect(new DontUntapInControllersNextUntapStepTargetEffect("that creature"));
ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE));
this.addAbility(ability);
}

View file

@ -1,10 +1,9 @@
package mage.cards.m;
import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldTappedAbility;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.CompositeCost;
import mage.abilities.costs.common.RemoveCountersSourceCost;
import mage.abilities.costs.common.ReturnToHandFromBattlefieldSourceCost;
import mage.abilities.costs.common.TapSourceCost;
@ -16,17 +15,17 @@ import mage.abilities.mana.BlueManaAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Zone;
import mage.counters.CounterType;
import java.util.UUID;
/**
*
* @author jeffwadsworth
*/
public final class MagosiTheWaterveil extends CardImpl {
public MagosiTheWaterveil(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
// Magosi, the Waterveil enters the battlefield tapped.
this.addAbility(new EntersBattlefieldTappedAbility());
@ -35,17 +34,21 @@ public final class MagosiTheWaterveil extends CardImpl {
this.addAbility(new BlueManaAbility());
// {U}, {T}: Put an eon counter on Magosi, the Waterveil. Skip your next turn.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new AddCountersSourceEffect(CounterType.EON.createInstance()), new ManaCostsImpl("{U}"));
ability.addEffect(new SkipNextTurnSourceEffect());
Ability ability = new SimpleActivatedAbility(
new AddCountersSourceEffect(CounterType.EON.createInstance()), new ManaCostsImpl<>("{U}")
);
ability.addEffect(new SkipNextTurnSourceEffect().setText("skip your next turn"));
ability.addCost(new TapSourceCost());
this.addAbility(ability);
// {T}, Remove an eon counter from Magosi, the Waterveil and return it to its owner's hand: Take an extra turn after this one.
Ability ability2 = new SimpleActivatedAbility(Zone.BATTLEFIELD, new AddExtraTurnControllerEffect(), new TapSourceCost());
ability2.addCost(new RemoveCountersSourceCost(CounterType.EON.createInstance()));
ability2.addCost(new ReturnToHandFromBattlefieldSourceCost());
Ability ability2 = new SimpleActivatedAbility(new AddExtraTurnControllerEffect(), new TapSourceCost());
ability2.addCost(new CompositeCost(
new RemoveCountersSourceCost(CounterType.EON.createInstance()),
new ReturnToHandFromBattlefieldSourceCost(),
"remove an eon counter from {this} and return it to its owner's hand"
));
this.addAbility(ability2);
}
private MagosiTheWaterveil(final MagosiTheWaterveil card) {

View file

@ -29,7 +29,7 @@ public final class MakindiShieldmate extends CardImpl {
this.addAbility(DefenderAbility.getInstance());
this.addAbility(new AllyEntersBattlefieldTriggeredAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance()), true));
this.addAbility(new AllyEntersBattlefieldTriggeredAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance()), true).setAbilityWord(null));
}
private MakindiShieldmate(final MakindiShieldmate card) {

View file

@ -19,7 +19,7 @@ import mage.filter.FilterCard;
*/
public final class MerfolkWayfinder extends CardImpl {
private static final FilterCard filter = new FilterCard("all Island cards");
private static final FilterCard filter = new FilterCard("Island cards");
static {
filter.add(SubType.ISLAND.getPredicate());

View file

@ -33,7 +33,7 @@ public final class MireBlight extends CardImpl {
Ability ability = new EnchantAbility(auraTarget.getTargetName());
this.addAbility(ability);
// When enchanted creature is dealt damage, destroy it.
this.addAbility(new DealtDamageAttachedTriggeredAbility(new DestroyAttachedToEffect("it"), false));
this.addAbility(new DealtDamageAttachedTriggeredAbility(new DestroyAttachedToEffect("it"), false).setTriggerPhrase("When enchanted creature is dealt damage, "));
}
private MireBlight(final MireBlight card) {

View file

@ -39,7 +39,7 @@ public final class MurasaPyromancer extends CardImpl {
Ability ability = new AllyEntersBattlefieldTriggeredAbility(new DamageTargetEffect(new PermanentsOnBattlefieldCount(filter)), true);
ability.addTarget(new TargetCreaturePermanent());
this.addAbility(ability);
this.addAbility(ability.setAbilityWord(null));
}

View file

@ -31,7 +31,7 @@ public final class NeedlebiteTrap extends CardImpl {
// Target player loses 5 life and you gain 5 life.
this.getSpellAbility().addEffect(new LoseLifeTargetEffect(5));
this.getSpellAbility().addEffect(new GainLifeEffect(5));
this.getSpellAbility().addEffect(new GainLifeEffect(5).concatBy("and"));
this.getSpellAbility().addTarget(new TargetPlayer());
}

View file

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

View file

@ -38,7 +38,7 @@ public final class NimbusWings extends CardImpl {
this.addAbility(new EnchantAbility(auraTarget.getTargetName()));
// Enchanted creature gets +1/+2 and has flying.
SimpleStaticAbility ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(1, 2, Duration.WhileOnBattlefield));
ability.addEffect(new GainAbilityAttachedEffect(FlyingAbility.getInstance(), AttachmentType.AURA));
ability.addEffect(new GainAbilityAttachedEffect(FlyingAbility.getInstance(), AttachmentType.AURA).setText("and has flying"));
this.addAbility(ability);
}

View file

@ -31,7 +31,7 @@ public final class ObNixilisTheFallen extends CardImpl {
// Landfall - Whenever a land enters the battlefield under your control, you may have target player lose 3 life.
// If you do, put three +1/+1 counters on Ob Nixilis, the Fallen.
Ability ability = new LandfallAbility(new LoseLifeTargetEffect(3), true);
Ability ability = new LandfallAbility(new LoseLifeTargetEffect(3).setText("target player lose 3 life"), true);
ability.addEffect(new AddCountersSourceEffect(CounterType.P1P1.createInstance(3)).concatBy("If you do,"));
ability.addTarget(new TargetPlayer());
this.addAbility(ability);

View file

@ -35,7 +35,7 @@ public final class OnduCleric extends CardImpl {
this.power = new MageInt(1);
this.toughness = new MageInt(1);
this.addAbility(new AllyEntersBattlefieldTriggeredAbility(new GainLifeEffect(new PermanentsOnBattlefieldCount(filter)), true));
this.addAbility(new AllyEntersBattlefieldTriggeredAbility(new GainLifeEffect(new PermanentsOnBattlefieldCount(filter)), true).setAbilityWord(null));
}
private OnduCleric(final OnduCleric card) {

View file

@ -26,7 +26,7 @@ public final class OranRiefSurvivalist extends CardImpl {
this.power = 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 OranRiefSurvivalist(final OranRiefSurvivalist card) {

View file

@ -1,34 +1,32 @@
package mage.cards.p;
import java.util.UUID;
import mage.abilities.TriggeredAbilityImpl;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.DamageTargetEffect;
import mage.abilities.effects.common.DoIfCostPaid;
import mage.abilities.effects.common.ReturnToHandSourceEffect;
import mage.abilities.effects.common.ReturnSourceFromGraveyardToHandEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Zone;
import mage.game.Game;
import mage.game.events.GameEvent;
import mage.game.events.GameEvent.EventType;
import mage.target.common.TargetAnyTarget;
import java.util.UUID;
/**
*
* @author North
*/
public final class PunishingFire extends CardImpl {
public PunishingFire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{R}");
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{R}");
// Punishing Fire deals 2 damage to any target.
this.getSpellAbility().addEffect(new DamageTargetEffect(2));
this.getSpellAbility().addTarget(new TargetAnyTarget());
// Whenever an opponent gains life, you may pay {R}. If you do, return Punishing Fire from your graveyard to your hand.
this.addAbility(new PunishingFireTriggeredAbility());
}
@ -46,7 +44,7 @@ public final class PunishingFire extends CardImpl {
class PunishingFireTriggeredAbility extends TriggeredAbilityImpl {
public PunishingFireTriggeredAbility() {
super(Zone.GRAVEYARD, new DoIfCostPaid(new ReturnToHandSourceEffect(), new ManaCostsImpl("{R}")));
super(Zone.GRAVEYARD, new DoIfCostPaid(new ReturnSourceFromGraveyardToHandEffect(), new ManaCostsImpl<>("{R}")));
}
public PunishingFireTriggeredAbility(final PunishingFireTriggeredAbility ability) {
@ -70,6 +68,6 @@ class PunishingFireTriggeredAbility extends TriggeredAbilityImpl {
@Override
public String getTriggerPhrase() {
return "Whenever an opponent gains life, " ;
return "Whenever an opponent gains life, ";
}
}

View file

@ -28,7 +28,7 @@ public final class QuestForTheGemblades extends CardImpl {
// Whenever a creature you control deals combat damage to a creature, you may put a quest counter on Quest for the Gemblades.
this.addAbility(new DealsDamageToACreatureAllTriggeredAbility(
new AddCountersSourceEffect(CounterType.QUEST.createInstance()), false,
new AddCountersSourceEffect(CounterType.QUEST.createInstance()), true,
StaticFilters.FILTER_CONTROLLED_A_CREATURE, SetTargetPointer.PERMANENT, true
));

View file

@ -1,7 +1,5 @@
package mage.cards.s;
import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.common.SimpleStaticAbility;
@ -13,36 +11,35 @@ import mage.abilities.effects.common.continuous.GainAbilityAttachedEffect;
import mage.abilities.keyword.EnchantAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.AttachmentType;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Duration;
import mage.constants.Outcome;
import mage.constants.Zone;
import mage.constants.*;
import mage.target.TargetPermanent;
import mage.target.common.TargetCreaturePermanent;
import java.util.UUID;
/**
*
* @author North
*/
public final class SavageSilhouette extends CardImpl {
public SavageSilhouette(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{G}");
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{G}");
this.subtype.add(SubType.AURA);
// Enchant creature
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 +2/+2 and has "{1}{G}: Regenerate this creature."
ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new RegenerateSourceEffect(), new ManaCostsImpl("{1}{G}"));
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(2, 2, Duration.WhileOnBattlefield)));
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(ability, AttachmentType.AURA)));
Ability ability = new SimpleStaticAbility(new BoostEnchantedEffect(
2, 2, Duration.WhileOnBattlefield
));
ability.addEffect(new GainAbilityAttachedEffect(new SimpleActivatedAbility(
new RegenerateSourceEffect(), new ManaCostsImpl<>("{1}{G}")
), AttachmentType.AURA).setText("and has \"{1}{G}: Regenerate this creature.\""));
this.addAbility(ability);
}
private SavageSilhouette(final SavageSilhouette card) {

View file

@ -31,7 +31,7 @@ public final class ScytheTiger extends CardImpl {
this.addAbility(ShroudAbility.getInstance());
// When Scythe Tiger enters the battlefield, sacrifice it unless you sacrifice a land.
this.addAbility(new EntersBattlefieldTriggeredAbility(new SacrificeSourceUnlessPaysEffect(new SacrificeTargetCost(new TargetControlledPermanent(StaticFilters.FILTER_CONTROLLED_LAND_SHORT_TEXT)))));
this.addAbility(new EntersBattlefieldTriggeredAbility(new SacrificeSourceUnlessPaysEffect(new SacrificeTargetCost(new TargetControlledPermanent(StaticFilters.FILTER_CONTROLLED_LAND_SHORT_TEXT))).setText("sacrifice it unless you sacrifice a land")));
}
private ScytheTiger(final ScytheTiger card) {

View file

@ -36,7 +36,7 @@ public final class SeascapeAerialist extends CardImpl {
this.power = new MageInt(2);
this.toughness = new MageInt(3);
this.addAbility(new AllyEntersBattlefieldTriggeredAbility(new GainAbilityAllEffect(FlyingAbility.getInstance(), Duration.EndOfTurn, filter), true));
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));
}
private SeascapeAerialist(final SeascapeAerialist card) {

View file

@ -35,7 +35,7 @@ public final class SorinMarkov extends CardImpl {
// +2: Sorin Markov deals 2 damage to any target and you gain 2 life.
LoyaltyAbility ability1 = new LoyaltyAbility(new DamageTargetEffect(2), 2);
ability1.addEffect(new GainLifeEffect(2));
ability1.addEffect(new GainLifeEffect(2).concatBy("and"));
ability1.addTarget(new TargetAnyTarget());
this.addAbility(ability1);

View file

@ -6,7 +6,7 @@ import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.CompositeCost;
import mage.abilities.costs.common.RemoveCountersSourceCost;
import mage.abilities.costs.common.SacrificeSourceCost;
import mage.abilities.effects.common.ReturnToHandTargetEffect;
import mage.abilities.effects.common.ReturnFromGraveyardToHandTargetEffect;
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@ -30,7 +30,7 @@ public final class SoulStairExpedition extends CardImpl {
// Remove three quest counters from Soul Stair Expedition and sacrifice it: Return up to two target creature cards from your graveyard to your hand.
Ability ability = new SimpleActivatedAbility(
new ReturnToHandTargetEffect(),
new ReturnFromGraveyardToHandTargetEffect(),
new CompositeCost(
new RemoveCountersSourceCost(CounterType.QUEST.createInstance(3)),
new SacrificeSourceCost(),

View file

@ -1,7 +1,6 @@
package mage.cards.s;
import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.effects.common.continuous.BoostEquippedEffect;
@ -12,22 +11,26 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.AttachmentType;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Outcome;
import mage.constants.Zone;
import mage.constants.SubType;
import java.util.UUID;
/**
*
* @author North
*/
public final class SpidersilkNet extends CardImpl {
public SpidersilkNet(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{0}");
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{0}");
this.subtype.add(SubType.EQUIPMENT);
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEquippedEffect(0, 2)));
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(ReachAbility.getInstance(), AttachmentType.EQUIPMENT)));
Ability ability = new SimpleStaticAbility(new BoostEquippedEffect(0, 2));
ability.addEffect(new GainAbilityAttachedEffect(
ReachAbility.getInstance(), AttachmentType.EQUIPMENT
).setText("and has reach"));
this.addAbility(ability);
this.addAbility(new EquipAbility(Outcome.BoostCreature, new GenericManaCost(2)));
}

View file

@ -42,7 +42,7 @@ public final class TajuruArcher extends CardImpl {
this.toughness = new MageInt(2);
Ability ability = new AllyEntersBattlefieldTriggeredAbility(new DamageTargetEffect(new PermanentsOnBattlefieldCount(filter)), true);
ability.addTarget(new TargetCreaturePermanent(filterTarget));
this.addAbility(ability);
this.addAbility(ability.setAbilityWord(null));
}
private TajuruArcher(final TajuruArcher card) {

View file

@ -1,9 +1,8 @@
package mage.cards.t;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.AttacksTriggeredAbility;
import mage.abilities.dynamicvalue.DynamicValue;
import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount;
import mage.abilities.effects.common.continuous.BoostSourceEffect;
import mage.cards.CardImpl;
@ -14,8 +13,9 @@ import mage.constants.SubType;
import mage.constants.TargetController;
import mage.filter.common.FilterLandPermanent;
import java.util.UUID;
/**
*
* @author North
*/
public final class TimbermawLarva extends CardImpl {
@ -28,15 +28,18 @@ public final class TimbermawLarva extends CardImpl {
}
private static final DynamicValue xValue = new PermanentsOnBattlefieldCount(filter);
public TimbermawLarva(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.BEAST);
this.power = new MageInt(2);
this.toughness = new MageInt(2);
PermanentsOnBattlefieldCount value = new PermanentsOnBattlefieldCount(filter);
this.addAbility(new AttacksTriggeredAbility(new BoostSourceEffect(value, value, Duration.EndOfTurn), false));
this.addAbility(new AttacksTriggeredAbility(new BoostSourceEffect(
xValue, xValue, Duration.EndOfTurn, true, "it"
), false));
}
private TimbermawLarva(final TimbermawLarva card) {

View file

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

View file

@ -32,8 +32,8 @@ public final class TurntimberRanger extends CardImpl {
// Whenever Turntimber Ranger or another Ally enters the battlefield under your control, you may create a 2/2 green Wolf creature token. If you do, put a +1/+1 counter on Turntimber Ranger.
Ability ability = new AllyEntersBattlefieldTriggeredAbility(new CreateTokenEffect(new WolfToken()), true);
ability.addEffect(new AddCountersSourceEffect(CounterType.P1P1.createInstance()));
this.addAbility(ability);
ability.addEffect(new AddCountersSourceEffect(CounterType.P1P1.createInstance()).concatBy("If you do,"));
this.addAbility(ability.setAbilityWord(null));
}
private TurntimberRanger(final TurntimberRanger card) {

View file

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

View file

@ -1,7 +1,5 @@
package mage.cards.w;
import java.util.UUID;
import mage.abilities.effects.common.continuous.BoostTargetEffect;
import mage.abilities.effects.common.continuous.GainAbilityTargetEffect;
import mage.abilities.keyword.FlyingAbility;
@ -11,20 +9,24 @@ import mage.constants.CardType;
import mage.constants.Duration;
import mage.target.common.TargetControlledCreaturePermanent;
import java.util.UUID;
/**
*
* @author North
*/
public final class WindborneCharge extends CardImpl {
public WindborneCharge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{W}{W}");
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{W}{W}");
// Two target creatures you control each get +2/+2 and gain flying until end of turn.
this.getSpellAbility().addEffect(new BoostTargetEffect(
2, 2, Duration.EndOfTurn
).setText("two target creatures you control each get +2/+2"));
this.getSpellAbility().addEffect(new GainAbilityTargetEffect(
FlyingAbility.getInstance(), Duration.EndOfTurn
).setText("and gain flying until end of turn"));
this.getSpellAbility().addTarget(new TargetControlledCreaturePermanent(2));
this.getSpellAbility().addEffect(new BoostTargetEffect(2, 2, Duration.EndOfTurn));
this.getSpellAbility().addEffect(new GainAbilityTargetEffect(FlyingAbility.getInstance(), Duration.EndOfTurn));
}
private WindborneCharge(final WindborneCharge card) {

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 = "MOR"; // check all abilities and output cards with wrong abilities texts;
private static final String FULL_ABILITIES_CHECK_SET_CODE = "ZEN"; // 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

@ -160,17 +160,18 @@ public abstract class TriggeredAbilityImpl extends AbilityImpl implements Trigge
superRule = newRule.toString();
}
} else if (this.getTargets().isEmpty()
|| ruleLow.startsWith("attach")
|| ruleLow.startsWith("counter")
|| ruleLow.startsWith("destroy")
|| ruleLow.startsWith("exchange")
|| ruleLow.startsWith("exile")
|| ruleLow.startsWith("gain")
|| ruleLow.startsWith("destroy")
|| ruleLow.startsWith("return")
|| ruleLow.startsWith("tap")
|| ruleLow.startsWith("untap")
|| ruleLow.startsWith("goad")
|| ruleLow.startsWith("put")
|| ruleLow.startsWith("remove")
|| ruleLow.startsWith("counter")
|| ruleLow.startsWith("exchange")
|| ruleLow.startsWith("goad")) {
|| ruleLow.startsWith("return")
|| ruleLow.startsWith("tap")
|| ruleLow.startsWith("untap")) {
sb.append("you may ");
} else if (!ruleLow.startsWith("its controller may")) {
sb.append("you may have ");