[CMR] more text fixes

This commit is contained in:
Evan Kranzler 2020-11-11 20:37:42 -05:00
parent d227932ff3
commit 35902ee84a
35 changed files with 179 additions and 139 deletions

View file

@ -32,10 +32,10 @@ public final class AngelicArmaments extends CardImpl {
).setText(", has flying"));
ability.addEffect(new AddCardColorAttachedEffect(
ObjectColor.WHITE, Duration.WhileOnBattlefield, AttachmentType.EQUIPMENT
).setText(", and is"));
).setText(","));
ability.addEffect(new AddCardSubtypeAttachedEffect(
SubType.ANGEL, Duration.WhileOnBattlefield, AttachmentType.EQUIPMENT
).setText("white Angel in addition to its other colors and types").concatBy("a"));
).setText("is a white Angel in addition to its other colors and types").concatBy("and"));
this.addAbility(ability);
// Equip {4}

View file

@ -27,7 +27,7 @@ public final class ArmillarySphere extends CardImpl {
// {2}, {tap}, Sacrifice Armillary Sphere: Search your library for up to two basic land cards, reveal them, and put them into your hand. Then shuffle your library.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
new SearchLibraryPutInHandEffect(new TargetCardInLibrary(0, 2, StaticFilters.FILTER_CARD_BASIC_LAND), true, true),
new SearchLibraryPutInHandEffect(new TargetCardInLibrary(0, 2, StaticFilters.FILTER_CARD_BASIC_LANDS), true, true),
new GenericManaCost(2));
ability.addCost(new TapSourceCost());
ability.addCost(new SacrificeSourceCost());

View file

@ -33,7 +33,7 @@ public final class FlamekinHerald extends CardImpl {
this.toughness = new MageInt(2);
// Commander spells you cast have cascade.
this.addAbility(new SimpleStaticAbility(new GainAbilitySpellsEffect(new CascadeAbility(), filter)));
this.addAbility(new SimpleStaticAbility(new GainAbilitySpellsEffect(new CascadeAbility(false), filter)));
}
private FlamekinHerald(final FlamekinHerald card) {

View file

@ -1,10 +1,8 @@
package mage.cards.i;
import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.common.LandfallAbility;
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.DrawCardSourceControllerEffect;
@ -12,25 +10,30 @@ import mage.abilities.effects.common.counter.AddCountersSourceEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Zone;
import mage.counters.CounterType;
import java.util.UUID;
/**
*
* @author Loki
*/
public final class IorRuinExpedition extends CardImpl {
public IorRuinExpedition(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{U}");
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{U}");
// Landfall - Whenever a land enters the battlefield under your control, you may put a quest counter on Ior Ruin Expedition.
this.addAbility(new LandfallAbility(new AddCountersSourceEffect(CounterType.QUEST.createInstance()), true));
// Remove three quest counters from Ior Ruin Expedition and sacrifice it: Draw two cards.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DrawCardSourceControllerEffect(2), new RemoveCountersSourceCost(CounterType.QUEST.createInstance(3)));
ability.addCost(new SacrificeSourceCost());
this.addAbility(ability);
this.addAbility(new SimpleActivatedAbility(
new DrawCardSourceControllerEffect(2),
new CompositeCost(
new RemoveCountersSourceCost(CounterType.QUEST.createInstance(3)),
new SacrificeSourceCost(),
"Remove three quest counters from {this} and sacrifice it"
)
));
}
public IorRuinExpedition(final IorRuinExpedition card) {

View file

@ -99,7 +99,7 @@ class KaradorGhostChieftainCastFromGraveyardEffect extends AsThoughEffectImpl {
KaradorGhostChieftainCastFromGraveyardEffect() {
super(AsThoughEffectType.PLAY_FROM_NOT_OWN_HAND_ZONE, Duration.WhileOnBattlefield, Outcome.PutCreatureInPlay, true);
staticText = "During each of your turns, you may cast a creature card from your graveyard";
staticText = "During each of your turns, you may cast a creature spell from your graveyard";
}
KaradorGhostChieftainCastFromGraveyardEffect(final KaradorGhostChieftainCastFromGraveyardEffect effect) {

View file

@ -1,9 +1,8 @@
package mage.cards.k;
import mage.abilities.common.LandfallAbility;
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.counter.AddCountersSourceEffect;
@ -12,7 +11,6 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Outcome;
import mage.constants.Zone;
import mage.counters.CounterType;
import mage.filter.StaticFilters;
import mage.target.common.TargetCardInLibrary;
@ -20,22 +18,25 @@ import mage.target.common.TargetCardInLibrary;
import java.util.UUID;
/**
*
* @author Viserion
*/
public final class KhalniHeartExpedition extends CardImpl {
public KhalniHeartExpedition(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{G}");
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{G}");
this.addAbility(new LandfallAbility(new AddCountersSourceEffect(CounterType.QUEST.createInstance()), true));
TargetCardInLibrary target = new TargetCardInLibrary(0, 2, StaticFilters.FILTER_CARD_BASIC_LAND);
SimpleActivatedAbility ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
new SearchLibraryPutInPlayEffect(target, true, Outcome.PutLandInPlay),
new RemoveCountersSourceCost(CounterType.QUEST.createInstance(3)));
ability.addCost(new SacrificeSourceCost());
this.addAbility(ability);
this.addAbility(new SimpleActivatedAbility(
new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(
0, 2, StaticFilters.FILTER_CARD_BASIC_LAND
), true, Outcome.PutLandInPlay),
new CompositeCost(
new RemoveCountersSourceCost(CounterType.QUEST.createInstance(3)),
new SacrificeSourceCost(),
"Remove three quest counters from {this} and sacrifice it"
)
));
}
public KhalniHeartExpedition(final KhalniHeartExpedition card) {

View file

@ -1,4 +1,3 @@
package mage.cards.m;
import mage.abilities.Ability;
@ -9,32 +8,34 @@ import mage.abilities.effects.common.DamageTargetEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Zone;
import mage.filter.StaticFilters;
import mage.target.common.TargetControlledPermanent;
import mage.filter.common.FilterControlledPermanent;
import mage.filter.predicate.Predicates;
import mage.target.common.TargetAnyTarget;
import mage.target.common.TargetControlledPermanent;
import java.util.UUID;
/**
*
* @author TheElk801
*/
public final class MakeshiftMunitions extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("artifact or creature");
static {
filter.add(Predicates.or(
CardType.ARTIFACT.getPredicate(),
CardType.CREATURE.getPredicate()
));
}
public MakeshiftMunitions(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{R}");
// {1}, Sacrifice an artifact or creature: Makeshift Munitions deals 1 damage to any target.
Ability ability = new SimpleActivatedAbility(
Zone.BATTLEFIELD,
new DamageTargetEffect(1),
new SacrificeTargetCost(new TargetControlledPermanent(StaticFilters.FILTER_CONTROLLED_PERMANENT_ARTIFACT_OR_CREATURE))
);
Ability ability = new SimpleActivatedAbility(new DamageTargetEffect(1), new GenericManaCost(1));
ability.addCost(new SacrificeTargetCost(new TargetControlledPermanent(filter)));
ability.addTarget(new TargetAnyTarget());
ability.addCost(new GenericManaCost(1));
this.addAbility(ability);
}

View file

@ -47,7 +47,7 @@ class ManaDrainCounterEffect extends OneShotEffect {
public ManaDrainCounterEffect() {
super(Outcome.Benefit);
this.staticText = "Counter target spell. At the beginning of your next main phase, add X mana of {C}, where X is that spell's converted mana cost";
this.staticText = "Counter target spell. At the beginning of your next main phase, add an amount of {C} equal to that spell's converted mana cost";
}
public ManaDrainCounterEffect(final ManaDrainCounterEffect effect) {

View file

@ -35,7 +35,10 @@ public final class MerchantRaiders extends CardImpl {
this.toughness = new MageInt(4);
// Whenever Merchant Raiders or another Pirate enters the battlefield under your control, tap up to one target creature. That creature doesn't untap during its controller's untap step for as long as you control Merchant Raiders.
Ability ability = new EntersBattlefieldThisOrAnotherTriggeredAbility(new TapTargetEffect(), filter,false,true);
Ability ability = new EntersBattlefieldThisOrAnotherTriggeredAbility(
new TapTargetEffect().setText("up to one target creature"),
filter, false, true
);
ability.addEffect(new MerchantRaidersEffect());
ability.addTarget(new TargetCreaturePermanent(0, 1));
this.addAbility(ability, new MerchantRaidersWatcher());

View file

@ -67,7 +67,7 @@ class MuldrothaTheGravetideCastFromGraveyardEffect extends AsThoughEffectImpl {
public MuldrothaTheGravetideCastFromGraveyardEffect() {
super(AsThoughEffectType.PLAY_FROM_NOT_OWN_HAND_ZONE, Duration.WhileOnBattlefield, Outcome.Benefit, true);
staticText = "During each of your turns, you may play up to one permanent card of each permanent type from your graveyard. "
staticText = "During each of your turns, you may play a land and cast a permanent spell of each permanent type from your graveyard. "
+ "<i>(If a card has multiple permanent types, choose one as you play it.)</i>";
}

View file

@ -20,8 +20,8 @@ public final class NecroticHex extends CardImpl {
// Each player sacrifices six creatures.
this.getSpellAbility().addEffect(new SacrificeAllEffect(
2, StaticFilters.FILTER_CONTROLLED_CREATURE_SHORT_TEXT
));
6, StaticFilters.FILTER_CONTROLLED_CREATURE_SHORT_TEXT
).setText("each player sacrifices six creatures"));
// You create six tapped 2/2 black creature tokens.
this.getSpellAbility().addEffect(new CreateTokenEffect(

View file

@ -24,7 +24,7 @@ public final class PhyrexianRager extends CardImpl {
this.power = new MageInt(2);
this.toughness = new MageInt(2);
Ability ability = new EntersBattlefieldTriggeredAbility(
new DrawCardSourceControllerEffect(1), false
new DrawCardSourceControllerEffect(1).setText("you draw a card"), false
);
ability.addEffect(new LoseLifeSourceControllerEffect(1).concatBy("and"));
this.addAbility(ability);

View file

@ -41,7 +41,8 @@ public final class PortRazer extends CardImpl {
"untap all creatures you control"
), false
);
ability.addEffect(new AdditionalCombatPhaseEffect());
ability.addEffect(new AdditionalCombatPhaseEffect()
.setText("After this phase, there is an additional combat phase."));
this.addAbility(ability);
// Port Razer can't attack a player it has already attacked this turn.

View file

@ -1,45 +1,47 @@
package mage.cards.q;
import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.common.PutCardIntoGraveFromAnywhereAllTriggeredAbility;
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.OneShotEffect;
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
import mage.cards.Card;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Outcome;
import mage.constants.TargetController;
import mage.constants.Zone;
import mage.counters.CounterType;
import mage.game.Game;
import mage.players.Player;
import mage.target.TargetPlayer;
import java.util.UUID;
/**
*
* @author North
*/
public final class QuestForAncientSecrets extends CardImpl {
public QuestForAncientSecrets(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{U}");
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{U}");
// Whenever a card is put into your graveyard from anywhere, you may put a quest counter on Quest for Ancient Secrets.
this.addAbility(new PutCardIntoGraveFromAnywhereAllTriggeredAbility(
new AddCountersSourceEffect(CounterType.QUEST.createInstance()), true, TargetController.YOU));
new AddCountersSourceEffect(CounterType.QUEST.createInstance()), true, TargetController.YOU
));
// Remove five quest counters from Quest for Ancient Secrets and sacrifice it: Target player shuffles their graveyard into their library.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
Ability ability = new SimpleActivatedAbility(
new QuestForAncientSecretsEffect(),
new RemoveCountersSourceCost(CounterType.QUEST.createInstance(5)));
ability.addCost(new SacrificeSourceCost());
new CompositeCost(
new RemoveCountersSourceCost(CounterType.QUEST.createInstance(5)),
new SacrificeSourceCost(),
"Remove five quest counters from {this} and sacrifice it"
)
);
ability.addTarget(new TargetPlayer());
this.addAbility(ability);
}
@ -56,12 +58,12 @@ public final class QuestForAncientSecrets extends CardImpl {
class QuestForAncientSecretsEffect extends OneShotEffect {
public QuestForAncientSecretsEffect() {
QuestForAncientSecretsEffect() {
super(Outcome.Neutral);
this.staticText = "Target player shuffles their graveyard into their library";
}
public QuestForAncientSecretsEffect(final QuestForAncientSecretsEffect effect) {
private QuestForAncientSecretsEffect(final QuestForAncientSecretsEffect effect) {
super(effect);
}
@ -73,13 +75,11 @@ class QuestForAncientSecretsEffect extends OneShotEffect {
@Override
public boolean apply(Game game, Ability source) {
Player player = game.getPlayer(source.getFirstTarget());
if (player != null) {
for (Card card: player.getGraveyard().getCards(game)) {
player.moveCardToLibraryWithInfo(card, source.getSourceId(), game, Zone.GRAVEYARD, true, true);
}
player.shuffleLibrary(source, game);
return true;
if (player == null) {
return false;
}
return false;
player.putCardsOnBottomOfLibrary(player.getGraveyard(), game, source, false);
player.shuffleLibrary(source, game);
return true;
}
}

View file

@ -1,10 +1,9 @@
package mage.cards.q;
import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.TriggeredAbilityImpl;
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.ReplacementEffectImpl;
@ -21,8 +20,9 @@ import mage.game.events.GameEvent;
import mage.game.events.GameEvent.EventType;
import mage.util.CardUtil;
import java.util.UUID;
/**
*
* @author jeffwadsworth
*/
public final class QuestForPureFlame extends CardImpl {
@ -34,9 +34,14 @@ public final class QuestForPureFlame extends CardImpl {
this.addAbility(new QuestForPureFlameTriggeredAbility());
// Remove four quest counters from Quest for Pure Flame and sacrifice it: If any source you control would deal damage to a creature or player this turn, it deals double that damage to that creature or player instead.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new QuestForPureFlameEffect(), new RemoveCountersSourceCost(CounterType.QUEST.createInstance(4)));
ability.addCost(new SacrificeSourceCost());
this.addAbility(ability);
this.addAbility(new SimpleActivatedAbility(
new QuestForPureFlameEffect(),
new CompositeCost(
new RemoveCountersSourceCost(CounterType.QUEST.createInstance(4)),
new SacrificeSourceCost(),
"Remove four quest counters from {this} and sacrifice it"
)
));
}
public QuestForPureFlame(final QuestForPureFlame card) {
@ -51,11 +56,11 @@ public final class QuestForPureFlame extends CardImpl {
class QuestForPureFlameTriggeredAbility extends TriggeredAbilityImpl {
public QuestForPureFlameTriggeredAbility() {
QuestForPureFlameTriggeredAbility() {
super(Zone.BATTLEFIELD, new AddCountersSourceEffect(CounterType.QUEST.createInstance()), true);
}
public QuestForPureFlameTriggeredAbility(final QuestForPureFlameTriggeredAbility ability) {
private QuestForPureFlameTriggeredAbility(final QuestForPureFlameTriggeredAbility ability) {
super(ability);
}
@ -85,12 +90,13 @@ class QuestForPureFlameTriggeredAbility extends TriggeredAbilityImpl {
class QuestForPureFlameEffect extends ReplacementEffectImpl {
public QuestForPureFlameEffect() {
QuestForPureFlameEffect() {
super(Duration.EndOfTurn, Outcome.Damage);
staticText = "If any source you control would deal damage to a permanent or player this turn, it deals double that damage to that permanent or player instead";
staticText = "If any source you control would deal damage to a permanent or player this turn, " +
"it deals double that damage to that permanent or player instead";
}
public QuestForPureFlameEffect(final QuestForPureFlameEffect effect) {
private QuestForPureFlameEffect(final QuestForPureFlameEffect effect) {
super(effect);
}

View file

@ -1,9 +1,9 @@
package mage.cards.q;
import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.common.DealsDamageToACreatureAllTriggeredAbility;
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.counter.AddCountersSourceEffect;
@ -12,32 +12,34 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SetTargetPointer;
import mage.constants.Zone;
import mage.counters.CounterType;
import mage.filter.StaticFilters;
import mage.target.common.TargetCreaturePermanent;
import java.util.UUID;
/**
*
* @author North
*/
public final class QuestForTheGemblades extends CardImpl {
public QuestForTheGemblades(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{G}");
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{G}");
// 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,
StaticFilters.FILTER_CONTROLLED_A_CREATURE,
SetTargetPointer.PERMANENT, true));
StaticFilters.FILTER_CONTROLLED_A_CREATURE, SetTargetPointer.PERMANENT, true
));
// Remove a quest counter from Quest for the Gemblades and sacrifice it: Put four +1/+1 counters on target creature.
SimpleActivatedAbility ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
Ability ability = new SimpleActivatedAbility(
new AddCountersTargetEffect(CounterType.P1P1.createInstance(4)),
new RemoveCountersSourceCost(CounterType.QUEST.createInstance()));
ability.addCost(new SacrificeSourceCost());
new CompositeCost(
new RemoveCountersSourceCost(CounterType.QUEST.createInstance()),
new SacrificeSourceCost(),
"Remove a quest counter from {this} and sacrifice it"
));
ability.addTarget(new TargetCreaturePermanent());
this.addAbility(ability);
}

View file

@ -1,9 +1,9 @@
package mage.cards.q;
import java.util.UUID;
import mage.abilities.common.DiesCreatureTriggeredAbility;
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.CreateTokenEffect;
@ -11,12 +11,12 @@ import mage.abilities.effects.common.counter.AddCountersSourceEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Zone;
import mage.counters.CounterType;
import mage.game.permanent.token.QuestForTheGravelordZombieToken;
import java.util.UUID;
/**
*
* @author North
*/
public final class QuestForTheGravelord extends CardImpl {
@ -26,12 +26,16 @@ public final class QuestForTheGravelord extends CardImpl {
// Whenever a creature dies, you may put a quest counter on Quest for the Gravelord.
this.addAbility(new DiesCreatureTriggeredAbility(new AddCountersSourceEffect(CounterType.QUEST.createInstance()), true));
// Remove three quest counters from Quest for the Gravelord and sacrifice it: Create a 5/5 black Zombie Giant creature token.
SimpleActivatedAbility ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
this.addAbility(new SimpleActivatedAbility(
new CreateTokenEffect(new QuestForTheGravelordZombieToken()),
new RemoveCountersSourceCost(CounterType.QUEST.createInstance(3)));
ability.addCost(new SacrificeSourceCost());
this.addAbility(ability);
new CompositeCost(
new RemoveCountersSourceCost(CounterType.QUEST.createInstance(3)),
new SacrificeSourceCost(),
"Remove three quest counters from {this} and sacrifice it"
)
));
}
public QuestForTheGravelord(final QuestForTheGravelord card) {

View file

@ -1,10 +1,9 @@
package mage.cards.q;
import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.common.SpellCastControllerTriggeredAbility;
import mage.abilities.costs.CompositeCost;
import mage.abilities.costs.common.RemoveCountersSourceCost;
import mage.abilities.costs.common.SacrificeSourceCost;
import mage.abilities.effects.OneShotEffect;
@ -26,8 +25,9 @@ import mage.target.Target;
import mage.target.common.TargetCardInLibrary;
import mage.target.common.TargetControlledCreaturePermanent;
import java.util.UUID;
/**
*
* @author Loki, North
*/
public final class QuestForTheHolyRelic extends CardImpl {
@ -36,11 +36,20 @@ public final class QuestForTheHolyRelic extends CardImpl {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{W}");
// Whenever you cast a creature spell, you may put a quest counter on Quest for the Holy Relic.
this.addAbility(new SpellCastControllerTriggeredAbility(new AddCountersSourceEffect(CounterType.QUEST.createInstance()), StaticFilters.FILTER_SPELL_A_CREATURE, true));
this.addAbility(new SpellCastControllerTriggeredAbility(
new AddCountersSourceEffect(CounterType.QUEST.createInstance()),
StaticFilters.FILTER_SPELL_A_CREATURE, true
));
// Remove five quest counters from Quest for the Holy Relic and sacrifice it: Search your library for an Equipment card, put it onto the battlefield, and attach it to a creature you control. Then shuffle your library.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new QuestForTheHolyRelicEffect(), new RemoveCountersSourceCost(CounterType.QUEST.createInstance(5)));
ability.addCost(new SacrificeSourceCost());
this.addAbility(ability);
this.addAbility(new SimpleActivatedAbility(
new QuestForTheHolyRelicEffect(),
new CompositeCost(
new RemoveCountersSourceCost(CounterType.QUEST.createInstance(5)),
new SacrificeSourceCost(),
"Remove five quest counters from {this} and sacrifice it"
))
);
}
public QuestForTheHolyRelic(final QuestForTheHolyRelic card) {
@ -55,12 +64,12 @@ public final class QuestForTheHolyRelic extends CardImpl {
class QuestForTheHolyRelicEffect extends OneShotEffect {
public QuestForTheHolyRelicEffect() {
QuestForTheHolyRelicEffect() {
super(Outcome.PutCardInPlay);
this.staticText = "Search your library for an Equipment card, put it onto the battlefield, and attach it to a creature you control. Then shuffle your library";
}
public QuestForTheHolyRelicEffect(final QuestForTheHolyRelicEffect effect) {
private QuestForTheHolyRelicEffect(final QuestForTheHolyRelicEffect effect) {
super(effect);
}

View file

@ -45,7 +45,7 @@ public final class ReyavMasterSmith extends CardImpl {
this.addAbility(new AttacksCreatureYouControlTriggeredAbility(
new GainAbilityTargetEffect(
DoubleStrikeAbility.getInstance(), Duration.EndOfTurn,
"that creature gains double strike until end of turn."
"that creature gains double strike until end of turn"
), false, filter, true
));
}

View file

@ -40,7 +40,7 @@ public final class RingOfValkas extends CardImpl {
// At the beginning of your upkeep, put a +1/+1 counter on equipped creature if it's red.
TriggeredAbility triggeredAbility = new BeginningOfUpkeepTriggeredAbility(Zone.BATTLEFIELD, new AddPlusOneCountersAttachedEffect(1), TargetController.YOU, false);
ConditionalInterveningIfTriggeredAbility ability = new ConditionalInterveningIfTriggeredAbility(triggeredAbility, new AttachedToMatchesFilterCondition(filter), "At the beginning of your upkeep, put a +1/+1 counter on equipped creature if it's red");
ConditionalInterveningIfTriggeredAbility ability = new ConditionalInterveningIfTriggeredAbility(triggeredAbility, new AttachedToMatchesFilterCondition(filter), "At the beginning of your upkeep, put a +1/+1 counter on equipped creature if it's red.");
this.addAbility(ability);
// Equip {1}

View file

@ -41,7 +41,7 @@ public final class SakashimasProtege extends CardImpl {
// You may have Sakashima's Protege enter the battlefield as a copy of any permanent that entered the battlefield this turn.
this.addAbility(new EntersBattlefieldAbility(new CopyPermanentEffect(filter)
.setText("you may have {this} enter the battlefield as a copy of any permanent that entered the battlefield this turn"), true));
.setText("as a copy of any permanent that entered the battlefield this turn"), true));
}
private SakashimasProtege(final SakashimasProtege card) {

View file

@ -31,7 +31,7 @@ public final class SlayersStronghold extends CardImpl {
// {R}{W}, {tap}: Target creature gets +2/+0 and gains vigilance and haste until end of turn.
Ability ability = new SimpleActivatedAbility(new BoostTargetEffect(
2, 0, Duration.EndOfTurn
).setText("target creatures gets +2/+0"), new ManaCostsImpl("{R}{W}"));
).setText("target creature gets +2/+0"), new ManaCostsImpl("{R}{W}"));
ability.addEffect(new GainAbilityTargetEffect(
VigilanceAbility.getInstance(), Duration.EndOfTurn
).setText("and gains vigilance"));

View file

@ -22,7 +22,7 @@ import java.util.UUID;
*/
public final class SlurrkAllIngesting extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent();
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature you control");
static {
filter.add(CounterType.P1P1.getPredicate());

View file

@ -32,7 +32,7 @@ public final class SoulOfEternity extends CardImpl {
Zone.ALL,
new SetPowerToughnessSourceEffect(
ControllerLifeCount.instance, Duration.EndOfGame
)
).setText("{this}'s power and toughness are each equal to your life total")
));
// Encore {7}{W}{W}

View file

@ -1,10 +1,9 @@
package mage.cards.s;
import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.common.LandfallAbility;
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;
@ -12,27 +11,35 @@ import mage.abilities.effects.common.counter.AddCountersSourceEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Zone;
import mage.counters.CounterType;
import mage.filter.common.FilterCreatureCard;
import mage.filter.StaticFilters;
import mage.target.common.TargetCardInYourGraveyard;
import java.util.UUID;
/**
*
* @author North
*/
public final class SoulStairExpedition extends CardImpl {
public SoulStairExpedition(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{B}");
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{B}");
// Landfall - Whenever a land enters the battlefield under your control, you may put a quest counter on Soul Stair Expedition.
this.addAbility(new LandfallAbility(Zone.BATTLEFIELD, new AddCountersSourceEffect(CounterType.QUEST.createInstance()), true));
this.addAbility(new LandfallAbility(new AddCountersSourceEffect(CounterType.QUEST.createInstance()), true));
// 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(Zone.BATTLEFIELD, new ReturnToHandTargetEffect(), new RemoveCountersSourceCost(CounterType.QUEST.createInstance(3)));
ability.addCost(new SacrificeSourceCost());
ability.addTarget(new TargetCardInYourGraveyard(0, 2, new FilterCreatureCard("creature cards from your graveyard")));
Ability ability = new SimpleActivatedAbility(
new ReturnToHandTargetEffect(),
new CompositeCost(
new RemoveCountersSourceCost(CounterType.QUEST.createInstance(3)),
new SacrificeSourceCost(),
"Remove three quest counters from {this} and sacrifice it"
)
);
ability.addTarget(new TargetCardInYourGraveyard(
0, 2, StaticFilters.FILTER_CARD_CREATURES_YOUR_GRAVEYARD
));
this.addAbility(ability);
}

View file

@ -44,7 +44,7 @@ class SoulsFireEffect extends OneShotEffect {
public SoulsFireEffect() {
super(Outcome.Damage);
this.staticText = "Target creature you control on the battlefield deals damage equal to its power to any target";
this.staticText = "Target creature you control deals damage equal to its power to any target";
}
public SoulsFireEffect(final SoulsFireEffect effect) {

View file

@ -23,7 +23,7 @@ public final class VividCrag extends CardImpl {
public VividCrag(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
// Vivid Crag enters the battlefield tapped with two charge counters on it.
Ability ability = new EntersBattlefieldAbility(new TapSourceEffect(true), false, null, "{this} enters the battlefield tapped with two charge counters on it", null);
Ability ability = new EntersBattlefieldAbility(new TapSourceEffect(true), false, null, "{this} enters the battlefield tapped with two charge counters on it.", null);
ability.addEffect(new AddCountersSourceEffect(CounterType.CHARGE.createInstance(2)));
this.addAbility(ability);
// {tap}: Add {R}.

View file

@ -23,7 +23,7 @@ public final class VividCreek extends CardImpl {
public VividCreek(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
// Vivid Creek enters the battlefield tapped with two charge counters on it.
Ability ability = new EntersBattlefieldAbility(new TapSourceEffect(true), false, null, "{this} enters the battlefield tapped with two charge counters on it", null);
Ability ability = new EntersBattlefieldAbility(new TapSourceEffect(true), false, null, "{this} enters the battlefield tapped with two charge counters on it.", null);
ability.addEffect(new AddCountersSourceEffect(CounterType.CHARGE.createInstance(2)));
this.addAbility(ability);
// {tap}: Add {U}.

View file

@ -23,7 +23,7 @@ public final class VividGrove extends CardImpl {
public VividGrove(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
// Vivid Grove enters the battlefield tapped with two charge counters on it.
Ability ability = new EntersBattlefieldAbility(new TapSourceEffect(true), false, null, "{this} enters the battlefield tapped with two charge counters on it", null);
Ability ability = new EntersBattlefieldAbility(new TapSourceEffect(true), false, null, "{this} enters the battlefield tapped with two charge counters on it.", null);
ability.addEffect(new AddCountersSourceEffect(CounterType.CHARGE.createInstance(2)));
this.addAbility(ability);
// {tap}: Add {G}.

View file

@ -24,7 +24,7 @@ public final class VividMarsh extends CardImpl {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
// Vivid Marsh enters the battlefield tapped with two charge counters on it.
Ability ability = new EntersBattlefieldAbility(new TapSourceEffect(true), false, null, "{this} enters the battlefield tapped with two charge counters on it", null);
Ability ability = new EntersBattlefieldAbility(new TapSourceEffect(true), false, null, "{this} enters the battlefield tapped with two charge counters on it.", null);
ability.addEffect(new AddCountersSourceEffect(CounterType.CHARGE.createInstance(2)));
this.addAbility(ability);
// {tap}: Add {B}.

View file

@ -23,7 +23,7 @@ public final class VividMeadow extends CardImpl {
public VividMeadow(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
// Vivid Meadow enters the battlefield tapped with two charge counters on it.
Ability ability = new EntersBattlefieldAbility(new TapSourceEffect(true), false, null, "{this} enters the battlefield tapped with two charge counters on it", null);
Ability ability = new EntersBattlefieldAbility(new TapSourceEffect(true), false, null, "{this} enters the battlefield tapped with two charge counters on it.", null);
ability.addEffect(new AddCountersSourceEffect(CounterType.CHARGE.createInstance(2)));
this.addAbility(ability);
// {tap}: Add {W}.

View file

@ -3,6 +3,7 @@ package mage.cards.z;
import mage.abilities.Ability;
import mage.abilities.common.LandfallAbility;
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.OneShotEffect;
@ -12,7 +13,6 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Outcome;
import mage.constants.Zone;
import mage.counters.CounterType;
import mage.game.Game;
import mage.game.permanent.token.RedElementalWithTrampleAndHaste;
@ -28,11 +28,16 @@ public final class ZektarShrineExpedition extends CardImpl {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{R}");
// Landfall - Whenever a land enters the battlefield under your control, you may put a quest counter on Zektar Shrine Expedition.
this.addAbility(new LandfallAbility(Zone.BATTLEFIELD, new AddCountersSourceEffect(CounterType.QUEST.createInstance()), true));
this.addAbility(new LandfallAbility(new AddCountersSourceEffect(CounterType.QUEST.createInstance()), true));
// Remove three quest counters from Zektar Shrine Expedition and sacrifice it: Create a 7/1 red Elemental creature token with trample and haste. Exile it at the beginning of the next end step.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new ZektarShrineExpeditionEffect(), new RemoveCountersSourceCost(CounterType.QUEST.createInstance(3)));
ability.addCost(new SacrificeSourceCost());
this.addAbility(ability);
this.addAbility(new SimpleActivatedAbility(
new ZektarShrineExpeditionEffect(),
new CompositeCost(
new RemoveCountersSourceCost(CounterType.QUEST.createInstance(3)),
new SacrificeSourceCost(),
"Remove three quest counters from {this} and sacrifice it"
)
));
}
public ZektarShrineExpedition(final ZektarShrineExpedition card) {
@ -47,12 +52,12 @@ public final class ZektarShrineExpedition extends CardImpl {
class ZektarShrineExpeditionEffect extends OneShotEffect {
public ZektarShrineExpeditionEffect() {
ZektarShrineExpeditionEffect() {
super(Outcome.PutCreatureInPlay);
this.staticText = "Create a 7/1 red Elemental creature token with trample and haste. Exile it at the beginning of the next end step";
}
public ZektarShrineExpeditionEffect(final ZektarShrineExpeditionEffect effect) {
private ZektarShrineExpeditionEffect(final ZektarShrineExpeditionEffect effect) {
super(effect);
}
@ -63,7 +68,6 @@ class ZektarShrineExpeditionEffect extends OneShotEffect {
@Override
public boolean apply(Game game, Ability source) {
CreateTokenEffect effect = new CreateTokenEffect(new RedElementalWithTrampleAndHaste());
if (effect.apply(game, source)) {
effect.exileTokensCreatedAtNextEndStep(game, source);
@ -71,5 +75,4 @@ class ZektarShrineExpeditionEffect extends OneShotEffect {
}
return false;
}
}

View file

@ -53,7 +53,7 @@ public class VerifyCardDataTest {
private static final Logger logger = Logger.getLogger(VerifyCardDataTest.class);
private static final String FULL_ABILITIES_CHECK_SET_CODE = "M20"; // check all abilities and output cards with wrong abilities texts;
private static final String FULL_ABILITIES_CHECK_SET_CODE = "CMR"; // check all abilities and output cards with wrong abilities texts;
private static final boolean AUTO_FIX_SAMPLE_DECKS = false; // debug only: fix sample decks if it contains errors like wrong card numbers
private static final HashMap<String, Set<String>> skipCheckLists = new HashMap<>();

View file

@ -25,7 +25,7 @@ public class IsPhaseCondition implements Condition {
@Override
public String toString() {
return new StringBuilder("during ").append(turnPhase).toString();
return new StringBuilder("during ").append(turnPhase).toString().toLowerCase();
}
}

View file

@ -18,7 +18,7 @@ import mage.constants.Zone;
public final class DragonEggDragonToken extends TokenImpl {
public DragonEggDragonToken() {
super("Dragon", "2/2 red Dragon creature token with flying and \"{R}: This creature gets +1/+0 until end of turn");
super("Dragon", "2/2 red Dragon creature token with flying and \"{R}: This creature gets +1/+0 until end of turn.\"");
this.setOriginalExpansionSetCode("M14");
cardType.add(CardType.CREATURE);
color.setRed(true);