various text fixes

This commit is contained in:
xenohedron 2024-11-03 21:40:07 -05:00
parent a5d2338c5a
commit a98ff3867c
39 changed files with 153 additions and 116 deletions

View file

@ -28,7 +28,6 @@ import java.util.List;
import java.util.UUID;
/**
*
* @author ciaccona007
*/
public final class AbyssalHarvester extends CardImpl {
@ -43,7 +42,7 @@ public final class AbyssalHarvester extends CardImpl {
public AbyssalHarvester(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}{B}");
this.subtype.add(SubType.DEMON);
this.subtype.add(SubType.WARLOCK);
this.power = new MageInt(3);
@ -68,10 +67,16 @@ public final class AbyssalHarvester extends CardImpl {
class AbyssalHarvesterEffect extends OneShotEffect {
public AbyssalHarvesterEffect() {
private static final FilterPermanent filter = new FilterControlledPermanent();
static {
filter.add(TokenPredicate.TRUE);
filter.add(SubType.NIGHTMARE.getPredicate());
}
AbyssalHarvesterEffect() {
super(Outcome.PutCreatureInPlay);
this.staticText = "Exile target creature card from a graveyard that was put there this turn. "
+ "Create a token that's a copy of it, except it's a Nightmare in addition to its other types."
+ "Create a token that's a copy of it, except it's a Nightmare in addition to its other types. "
+ "Then exile all other Nightmare tokens you control";
}
@ -88,25 +93,24 @@ class AbyssalHarvesterEffect extends OneShotEffect {
public boolean apply(Game game, Ability source) {
Card card = game.getCard(source.getFirstTarget());
Player controller = game.getPlayer(source.getControllerId());
if (controller != null && card != null) {
controller.moveCards(card, Zone.EXILED, source, game); // Also if the move to exile is replaced, the copy takes place
CreateTokenCopyTargetEffect effect = new CreateTokenCopyTargetEffect(source.getControllerId(), null, false, 1, false, false, null);
effect.setTargetPointer(new FixedTarget(card, game));
effect.withAdditionalSubType(SubType.NIGHTMARE);
effect.apply(game, source);
FilterPermanent filter = new FilterControlledPermanent();
filter.add(TokenPredicate.TRUE);
filter.add(SubType.NIGHTMARE.getPredicate());
List<Permanent> addedTokens = effect.getAddedPermanents();
Cards cards = new CardsImpl();
for(Permanent permanent : game.getBattlefield().getActivePermanents(filter, source.getControllerId(), game)) {
if(!addedTokens.contains(permanent)) {
cards.add(permanent.getId());
}
}
controller.moveCards(cards, Zone.EXILED, source, game);
return true;
if (controller == null || card == null) {
return false;
}
return false;
controller.moveCards(card, Zone.EXILED, source, game); // Also if the move to exile is replaced, the copy takes place
game.processAction();
CreateTokenCopyTargetEffect effect = new CreateTokenCopyTargetEffect(source.getControllerId(), null, false, 1, false, false, null);
effect.setTargetPointer(new FixedTarget(card, game));
effect.withAdditionalSubType(SubType.NIGHTMARE);
effect.apply(game, source);
game.processAction();
List<Permanent> addedTokens = effect.getAddedPermanents();
Cards cards = new CardsImpl();
for (Permanent permanent : game.getBattlefield().getActivePermanents(filter, source.getControllerId(), game)) {
if (!addedTokens.contains(permanent)) {
cards.add(permanent.getId());
}
}
controller.moveCards(cards, Zone.EXILED, source, game);
return true;
}
}
}

View file

@ -56,7 +56,7 @@ class AncientGreenwardenEffect extends ReplacementEffectImpl {
AncientGreenwardenEffect() {
super(Duration.WhileOnBattlefield, Outcome.Benefit);
staticText = "If a land entering the battlefield causes a triggered ability " +
staticText = "If a land entering causes a triggered ability " +
"of a permanent you control to trigger, that ability triggers an additional time";
}

View file

@ -1,6 +1,5 @@
package mage.cards.b;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldThisOrAnotherTriggeredAbility;
@ -8,18 +7,23 @@ import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.counter.AddCountersTargetEffect;
import mage.constants.*;
import mage.abilities.keyword.FirstStrikeAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Outcome;
import mage.constants.SubType;
import mage.constants.SuperType;
import mage.counters.CounterType;
import mage.filter.StaticFilters;
import mage.filter.common.FilterLandPermanent;
import mage.filter.common.FilterControlledLandPermanent;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.players.Player;
import mage.target.TargetPermanent;
import mage.target.common.TargetCreaturePermanent;
import mage.target.common.TargetLandPermanent;
import java.util.UUID;
/**
*
@ -27,10 +31,7 @@ import mage.target.common.TargetLandPermanent;
*/
public final class BlackPantherWakandanKing extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent();
static {
filter.add(TargetController.YOU.getControllerPredicate());
}
private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent();
public BlackPantherWakandanKing(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{G}{W}");
@ -51,13 +52,13 @@ public final class BlackPantherWakandanKing extends CardImpl {
new AddCountersTargetEffect(CounterType.P1P1.createInstance()),
StaticFilters.FILTER_PERMANENT_CREATURE, false, true).setTriggerPhrase(
"Whenever {this} or another creature you control enters, ");
ability.addTarget(new TargetLandPermanent(filter));
ability.addTarget(new TargetPermanent(filter));
this.addAbility(ability.withFlavorWord("Survey the Realm"));
// Mine Vibranium {3}: Move all +1/+1 counters from target land you control onto target creature. If one or
// more +1/+1 counters are moved this way, you gain that much life and draw a card.
ability = new SimpleActivatedAbility(new BlackPantherWakandanKingEffect(), new GenericManaCost(3));
ability.addTarget(new TargetLandPermanent(filter));
ability.addTarget(new TargetPermanent(filter));
ability.addTarget(new TargetCreaturePermanent());
this.addAbility(ability.withFlavorWord("Mine Vibranium"));
}
@ -113,4 +114,4 @@ class BlackPantherWakandanKingEffect extends OneShotEffect {
}
return true;
}
}
}

View file

@ -35,8 +35,7 @@ public final class BloodBurglar extends CardImpl {
LifelinkAbility.getInstance(),
Duration.WhileOnBattlefield
), MyTurnCondition.instance,
"As long as it's your turn, "
+ "{this} has lifelink."
"During your turn, {this} has lifelink."
)
).addHint(MyTurnHint.instance));
}

View file

@ -60,7 +60,7 @@ class BrimazKingOfOreskosEffect extends OneShotEffect {
BrimazKingOfOreskosEffect() {
super(Outcome.Benefit);
this.staticText = "create a 1/1 white Cat Soldier creature token with vigilance blocking that creature";
this.staticText = "create a 1/1 white Cat Soldier creature token with vigilance that's blocking that creature";
}
private BrimazKingOfOreskosEffect(final BrimazKingOfOreskosEffect effect) {

View file

@ -194,7 +194,7 @@ class CaptainAmericaFirstAvengerCatchEffect extends OneShotEffect {
CaptainAmericaFirstAvengerCatchEffect() {
super(Outcome.Benefit);
staticText = "attach target Equipment you control to {this}";
staticText = "attach up to one target Equipment you control to {this}";
}
private CaptainAmericaFirstAvengerCatchEffect(final CaptainAmericaFirstAvengerCatchEffect effect) {

View file

@ -48,8 +48,9 @@ public final class CatCollector extends CardImpl {
class CatCollectorTriggeredAbility extends GainLifeFirstTimeTriggeredAbility {
public CatCollectorTriggeredAbility() {
CatCollectorTriggeredAbility() {
super(new CreateTokenEffect(new CatToken3()));
setTriggerPhrase("Whenever you gain life for the first time during each of your turns, ");
}
private CatCollectorTriggeredAbility(final CatCollectorTriggeredAbility ability) {
@ -66,9 +67,4 @@ class CatCollectorTriggeredAbility extends GainLifeFirstTimeTriggeredAbility {
return super.checkTrigger(event, game) && game.isActivePlayer(event.getPlayerId());
}
@Override
public String getRule() {
return "Whenever you gain life for the first time during each of your turns, "
+ "create a 1/1 white Cat creature token";
}
}

View file

@ -69,9 +69,8 @@ class CherishedHatchlingTriggeredAbility extends DelayedTriggeredAbility {
private static Effect getEffectToAdd() {
Ability abilityToAdd = new EntersBattlefieldTriggeredAbility(new FightTargetSourceEffect().setText("you may have it fight another target creature"), true);
abilityToAdd.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_ANOTHER_TARGET_CREATURE));
Effect effect = new GainAbilityTargetEffect(abilityToAdd, Duration.EndOfTurn,
"it gains \"When this creature enters the battlefield, you may have it fight another target creature.\"", true);
return effect;
return new GainAbilityTargetEffect(abilityToAdd, Duration.EndOfTurn,
"it gains \"When this creature enters, you may have it fight another target creature.\"", true);
}
private CherishedHatchlingTriggeredAbility(final CherishedHatchlingTriggeredAbility ability) {

View file

@ -31,7 +31,8 @@ public final class CleonMerryChampion extends CardImpl {
this.addAbility(DoubleStrikeAbility.getInstance());
// Heroic -- Whenever you cast a spell that targets Cleon, exile the top card of your library. You may play that card until the end of your next turn.
this.addAbility(new HeroicAbility(new ExileTopXMayPlayUntilEffect(1, Duration.UntilEndOfYourNextTurn)));
this.addAbility(new HeroicAbility(new ExileTopXMayPlayUntilEffect(1, Duration.UntilEndOfYourNextTurn)
.withTextOptions("that card", true)));
}
private CleonMerryChampion(final CleonMerryChampion card) {

View file

@ -1,21 +1,23 @@
package mage.cards.d;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.BecomesTappedSourceTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.common.UntapSourceEffect;
import mage.abilities.effects.common.continuous.GainAbilityControlledEffect;
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
import mage.constants.Duration;
import mage.constants.SubType;
import mage.constants.SuperType;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.SubType;
import mage.constants.SuperType;
import mage.counters.CounterType;
import mage.filter.common.FilterControlledCreaturePermanent;
import mage.game.Game;
import mage.game.events.GameEvent;
import java.util.UUID;
/**
*
@ -34,10 +36,7 @@ public final class DionusElvishArchdruid extends CardImpl {
this.toughness = new MageInt(3);
// Elves you control have "Whenever this creature becomes tapped during your turn, untap it and put a +1/+1 counter on it. This ability triggers only once each turn."
Ability untapAndGrow = new BecomesTappedSourceTriggeredAbility(new UntapSourceEffect()).setTriggersLimitEachTurn(1);
untapAndGrow.addEffect(new AddCountersSourceEffect(CounterType.P1P1.createInstance()));
this.addAbility(new SimpleStaticAbility(new GainAbilityControlledEffect(untapAndGrow,
this.addAbility(new SimpleStaticAbility(new GainAbilityControlledEffect(new DionusTriggeredAbility(),
Duration.WhileOnBattlefield, filter, false)));
}
@ -50,3 +49,29 @@ public final class DionusElvishArchdruid extends CardImpl {
return new DionusElvishArchdruid(this);
}
}
class DionusTriggeredAbility extends BecomesTappedSourceTriggeredAbility {
DionusTriggeredAbility() {
super(new UntapSourceEffect().setText("untap it"), false);
addEffect(new AddCountersSourceEffect(CounterType.P1P1.createInstance())
.setText("and put a +1/+1 counter on it"));
setTriggerPhrase("Whenever this creature becomes tapped during your turn, ");
setTriggersLimitEachTurn(1);
}
private DionusTriggeredAbility(final DionusTriggeredAbility ability) {
super(ability);
}
@Override
public DionusTriggeredAbility copy() {
return new DionusTriggeredAbility(this);
}
@Override
public boolean checkTrigger(GameEvent event, Game game) {
return game.isActivePlayer(this.getControllerId()) && super.checkTrigger(event, game);
}
}

View file

@ -1,7 +1,6 @@
package mage.cards.d;
import mage.abilities.condition.common.KickedCondition;
import mage.abilities.decorator.ConditionalOneShotEffect;
import mage.abilities.effects.common.continuous.GainAbilityTargetEffect;
import mage.abilities.keyword.IndestructibleAbility;
import mage.abilities.keyword.KickerAbility;
@ -28,7 +27,9 @@ public final class DivineResilience extends CardImpl {
this.addAbility(new KickerAbility("{2}{W}"));
// Target creature you control gains indestructible until end of turn. If this spell was kicked, instead any number of target creatures you control gain indestructible until end of turn.
this.getSpellAbility().addEffect(new GainAbilityTargetEffect(IndestructibleAbility.getInstance()));
this.getSpellAbility().addEffect(new GainAbilityTargetEffect(IndestructibleAbility.getInstance())
.setText("Target creature you control gains indestructible until end of turn. " +
"If this spell was kicked, instead any number of target creatures you control gain indestructible until end of turn"));
this.getSpellAbility().addTarget(new TargetControlledCreaturePermanent());
this.getSpellAbility().setTargetAdjuster(new ConditionalTargetAdjuster(
KickedCondition.ONCE,

View file

@ -47,7 +47,7 @@ public final class DreadwingScavenger extends CardImpl {
));
ability.addEffect(new ConditionalContinuousEffect(
new GainAbilitySourceEffect(DeathtouchAbility.getInstance()),
ThresholdCondition.instance, "and has deathtouch"
ThresholdCondition.instance, "and has deathtouch as long as there are seven or more cards in your graveyard"
));
ability.setAbilityWord(AbilityWord.THRESHOLD);
this.addAbility(ability);

View file

@ -59,7 +59,8 @@ public final class DropkickBomber extends CardImpl {
// {R}: Until end of turn, another target Goblin you control gains flying and "When this creature deals combat damage, sacrifice it."
Ability ability = new SimpleActivatedAbility(
Zone.BATTLEFIELD,
new GainAbilityTargetEffect(FlyingAbility.getInstance(), Duration.EndOfTurn),
new GainAbilityTargetEffect(FlyingAbility.getInstance(), Duration.EndOfTurn)
.setText("Until end of turn, another target Goblin you control gains flying"),
new ManaCostsImpl<>("{R}")
);
ability.addEffect(

View file

@ -26,7 +26,7 @@ public final class DrownInDreams extends CardImpl {
// Choose one. If you control a commander as you cast this spell, you may choose both.
this.getSpellAbility().getModes().setChooseText(
"Choose one. If you control a commander as you cast this spell, you may choose both."
"Choose one. If you control a commander as you cast this spell, you may choose both instead."
);
this.getSpellAbility().getModes().setMoreCondition(2, ControlACommanderCondition.instance);

View file

@ -6,7 +6,7 @@ import mage.abilities.common.AttacksTriggeredAbility;
import mage.abilities.common.EntersBattlefieldTappedAbility;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.DoIfCostPaid;
import mage.abilities.effects.common.ReturnToHandTargetEffect;
import mage.abilities.effects.common.ReturnFromGraveyardToHandTargetEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@ -33,7 +33,7 @@ public final class EternalTaskmaster extends CardImpl {
// Whenever Eternal Taskmaster attacks, you may pay {2}{B}. If you do, return target creature card from your graveyard to your hand.
Ability ability = new AttacksTriggeredAbility(new DoIfCostPaid(
new ReturnToHandTargetEffect(), new ManaCostsImpl<>("{2}{B}")
new ReturnFromGraveyardToHandTargetEffect(), new ManaCostsImpl<>("{2}{B}")
), false);
ability.addTarget(new TargetCardInYourGraveyard(StaticFilters.FILTER_CARD_CREATURE_YOUR_GRAVEYARD));
this.addAbility(ability);

View file

@ -6,9 +6,8 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.counters.CounterType;
import mage.filter.StaticFilters;
import mage.target.TargetPermanent;
import mage.target.common.TargetControlledCreaturePermanent;
import mage.target.common.TargetOpponentsCreaturePermanent;
import java.util.UUID;
@ -25,7 +24,7 @@ public final class FellingBlow extends CardImpl {
this.getSpellAbility().addEffect(new AddCountersTargetEffect(CounterType.P1P1.createInstance()));
this.getSpellAbility().addTarget(new TargetControlledCreaturePermanent());
this.getSpellAbility().addEffect(new DamageWithPowerFromOneToAnotherTargetEffect("that creature").concatBy("Then"));
this.getSpellAbility().addTarget(new TargetPermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_A_CREATURE));
this.getSpellAbility().addTarget(new TargetOpponentsCreaturePermanent());
}
private FellingBlow(final FellingBlow card) {

View file

@ -37,7 +37,7 @@ public final class FieryAnnihilation extends CardImpl {
// Fiery Annihilation deals 5 damage to target creature. Exile up to one target Equipment attached to that creature. If that creature would die this turn, exile it instead.
this.getSpellAbility().addEffect(new DamageTargetEffect(
5, true, "{this}", true
5, true, "target creature", true
));
this.getSpellAbility().addEffect(new ExileTargetEffect()
.setTargetPointer(new SecondTargetPointer())

View file

@ -1,21 +1,20 @@
package mage.cards.g;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility;
import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.ComparisonType;
import mage.constants.SubType;
import mage.constants.Zone;
import mage.filter.FilterPermanent;
import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.predicate.mageobject.PowerPredicate;
import mage.filter.predicate.mageobject.AnotherPredicate;
import mage.filter.predicate.mageobject.PowerPredicate;
import java.util.UUID;
/**
*
@ -23,7 +22,7 @@ import mage.filter.predicate.mageobject.AnotherPredicate;
*/
public final class GarruksPackleader extends CardImpl {
private static final FilterPermanent filter = new FilterControlledCreaturePermanent("another creature with power 3 or greater");
private static final FilterPermanent filter = new FilterControlledCreaturePermanent("another creature you control with power 3 or greater");
static {
filter.add(AnotherPredicate.instance);
filter.add(new PowerPredicate(ComparisonType.MORE_THAN, 2));
@ -36,7 +35,7 @@ public final class GarruksPackleader extends CardImpl {
this.power = new MageInt(4);
this.toughness = new MageInt(4);
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(
this.addAbility(new EntersBattlefieldAllTriggeredAbility(
Zone.BATTLEFIELD, new DrawCardSourceControllerEffect(1), filter, true));
}

View file

@ -78,7 +78,7 @@ class GiadaFontOfHopeEntersBattlefieldEffect extends ReplacementEffectImpl {
GiadaFontOfHopeEntersBattlefieldEffect() {
super(Duration.WhileOnBattlefield, Outcome.BoostCreature);
staticText = "Each other Angel you control enters the battlefield with an additional +1/+1 counter on it for each Angel you already control.";
staticText = "Each other Angel you control enters with an additional +1/+1 counter on it for each Angel you already control.";
}
private GiadaFontOfHopeEntersBattlefieldEffect(GiadaFontOfHopeEntersBattlefieldEffect effect) {

View file

@ -32,7 +32,7 @@ public final class GoblinBoarders extends CardImpl {
// Raid -- This creature enters with a +1/+1 counter on it if you attacked this turn.
this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(
new AddCountersSourceEffect(CounterType.P1P1.createInstance()), RaidCondition.instance, ""
), "with a +1/+1 counter on it if a creature died this turn")
), "with a +1/+1 counter on it if you attacked this turn")
.setAbilityWord(AbilityWord.RAID)
.addHint(RaidHint.instance), new PlayerAttackedWatcher());
}

View file

@ -34,7 +34,7 @@ public final class GrabThePrize extends CardImpl {
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(
new DamagePlayersEffect(2, TargetController.OPPONENT),
GrabThePrizeCondition.instance,
"If the discarded card wasn't a land card, {this} deals two damage to each opponent."));
"If the discarded card wasn't a land card, {this} deals 2 damage to each opponent."));
}
private GrabThePrize(final GrabThePrize card) {
@ -57,4 +57,4 @@ enum GrabThePrizeCondition implements Condition {
.flatMap(Collection::stream)
.anyMatch(card -> !card.isLand(game));
}
}
}

View file

@ -38,7 +38,7 @@ public final class InfernalVessel extends CardImpl {
this.addAbility(new ConditionalInterveningIfTriggeredAbility(
new DiesSourceTriggeredAbility(new InfernalVesselReturnEffect()),
InfernalVesselCondition.instance,
"if it wasn't a Demon, return it to the battlefield under its owner's control "
"When this creature dies, if it wasn't a Demon, return it to the battlefield under its owner's control "
+ "with two +1/+1 counters on it. It's a Demon in addition to its other types"
));
}
@ -81,7 +81,7 @@ class InfernalVesselReturnEffect extends OneShotEffect {
@Override
public boolean apply(Game game, Ability source) {
Player controller = game.getPlayer(source.getControllerId());
if (controller == null || !(game.getState().getZone(source.getSourceId()) == Zone.GRAVEYARD)) {
if (controller == null || game.getState().getZone(source.getSourceId()) != Zone.GRAVEYARD) {
return false;
}
Card card = game.getCard(source.getSourceId());

View file

@ -2,7 +2,7 @@ package mage.cards.i;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility;
import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
import mage.abilities.effects.Effect;
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
import mage.abilities.effects.common.GainLifeEffect;
@ -14,8 +14,8 @@ import mage.constants.SubType;
import mage.constants.Zone;
import mage.filter.FilterPermanent;
import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.predicate.mageobject.PowerPredicate;
import mage.filter.predicate.mageobject.AnotherPredicate;
import mage.filter.predicate.mageobject.PowerPredicate;
import java.util.UUID;
@ -24,7 +24,7 @@ import java.util.UUID;
*/
public final class InspiringCommander extends CardImpl {
private static final FilterPermanent filter = new FilterControlledCreaturePermanent("another creature with power 2 or less");
private static final FilterPermanent filter = new FilterControlledCreaturePermanent("another creature you control with power 2 or less");
static {
filter.add(AnotherPredicate.instance);
@ -42,7 +42,7 @@ public final class InspiringCommander extends CardImpl {
// Whenever another creature with power 2 or less you control enters, you gain 1 life and draw a card.
Effect effect1 = new GainLifeEffect(1);
Effect effect2 = new DrawCardSourceControllerEffect(1);
Ability ability = new EntersBattlefieldControlledTriggeredAbility(
Ability ability = new EntersBattlefieldAllTriggeredAbility(
Zone.BATTLEFIELD, effect1, filter, false);
ability.addEffect(effect2.setText("and draw a card"));
this.addAbility(ability);

View file

@ -38,7 +38,7 @@ public final class KykarZephyrAwakener extends CardImpl {
// Whenever you cast a noncreature spell, choose one --
// * Exile another target creature you control. Return it to the battlefield under its owner's control at the beginning of the next end step.
Ability ability = new SpellCastControllerTriggeredAbility(
new ExileReturnBattlefieldNextEndStepTargetEffect().withTextThatCard(false),
new ExileReturnBattlefieldNextEndStepTargetEffect().withTextThatCard(true),
StaticFilters.FILTER_SPELL_A_NON_CREATURE, false
);
ability.addTarget(new TargetPermanent(StaticFilters.FILTER_ANOTHER_TARGET_CREATURE_YOU_CONTROL));

View file

@ -1,10 +1,8 @@
package mage.cards.m;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility;
import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.Effect;
import mage.abilities.effects.common.DoIfCostPaid;
@ -12,20 +10,22 @@ import mage.abilities.effects.common.DrawCardSourceControllerEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.ComparisonType;
import mage.constants.SubType;
import mage.constants.Zone;
import mage.filter.FilterPermanent;
import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.predicate.mageobject.PowerPredicate;
import mage.filter.predicate.mageobject.AnotherPredicate;
import mage.filter.predicate.mageobject.PowerPredicate;
import java.util.UUID;
/**
* @author Loki
*/
public final class MentorOfTheMeek extends CardImpl {
private static final FilterPermanent filter = new FilterControlledCreaturePermanent("another creature with power 2 or less");
private static final FilterPermanent filter = new FilterControlledCreaturePermanent("another creature you control with power 2 or less");
static {
filter.add(AnotherPredicate.instance);
@ -42,7 +42,7 @@ public final class MentorOfTheMeek extends CardImpl {
//Whenever another creature with power 2 or less you control enters, you may pay 1. If you do, draw a card.
Effect effect = new DoIfCostPaid(new DrawCardSourceControllerEffect(1), new ManaCostsImpl<>("{1}"));
Ability ability = new EntersBattlefieldControlledTriggeredAbility(
Ability ability = new EntersBattlefieldAllTriggeredAbility(
Zone.BATTLEFIELD, effect, filter, false);
this.addAbility(ability);

View file

@ -41,7 +41,7 @@ public final class MoonCircuitHacker extends CardImpl {
);
ability.addEffect(new ConditionalOneShotEffect(
new DiscardControllerEffect(1), condition,
"If you do, discard a card unless {this} entered the battlefield this turn"
"If you do, discard a card unless {this} entered this turn"
));
this.addAbility(ability);
}

View file

@ -52,7 +52,7 @@ class NabanDeanOfIterationEffect extends ReplacementEffectImpl {
NabanDeanOfIterationEffect() {
super(Duration.WhileOnBattlefield, Outcome.Benefit);
staticText = "If a Wizard entering the battlefield under your control causes a triggered ability of a permanent you control to trigger, that ability triggers an additional time";
staticText = "If a Wizard entering under your control causes a triggered ability of a permanent you control to trigger, that ability triggers an additional time";
}
private NabanDeanOfIterationEffect(final NabanDeanOfIterationEffect effect) {

View file

@ -29,7 +29,7 @@ public final class NaiadOfHiddenCoves extends CardImpl {
// As long as it's not your turn, spells you cast cost {1} less to cast.
this.addAbility(new SimpleStaticAbility(new ConditionalCostModificationEffect(
new SpellsCostReductionControllerEffect(StaticFilters.FILTER_CARD, 1),
NotMyTurnCondition.instance, "As long as it's not your turn, " +
NotMyTurnCondition.instance, "During turns other than yours, " +
"spells you cast cost {1} less to cast."
)).addHint(MyTurnHint.instance));
}

View file

@ -1,6 +1,5 @@
package mage.cards.r;
import java.util.UUID;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.dynamicvalue.DynamicValue;
import mage.abilities.dynamicvalue.common.CardsInControllerGraveyardCount;
@ -12,7 +11,8 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.filter.StaticFilters;
import mage.game.permanent.token.RatToken;
import mage.game.permanent.token.ZombieToken;
import java.util.UUID;
/**
*
@ -28,7 +28,7 @@ public final class RevengeOfTheRats extends CardImpl {
// Create a tapped 1/1 black Rat creature token for each creature card in your graveyard.
this.getSpellAbility().addEffect(new CreateTokenEffect(new RatToken(), cardsCount, true, false));
this.getSpellAbility().addHint(new ValueHint("creature card card in your graveyard", cardsCount));
this.getSpellAbility().addHint(new ValueHint("Creature cards in your graveyard", cardsCount));
// Flashback {2}{B}{B}
this.addAbility(new FlashbackAbility(this, new ManaCostsImpl<>("{2}{B}{B}")));

View file

@ -45,7 +45,7 @@ public final class ShieldMare extends CardImpl {
// When Shield Mare enters the battlefield or becomes the target of a spell or ability and opponent controls, you gain 3 life.
this.addAbility(new OrTriggeredAbility(Zone.ALL, new GainLifeEffect(3), false,
"When {this} enters or becomes the target of a spell or ability an opponent controls, ",
"Whenever {this} enters or becomes the target of a spell or ability an opponent controls, ",
new EntersBattlefieldTriggeredAbility(null),
new BecomesTargetSourceTriggeredAbility(null, StaticFilters.FILTER_SPELL_OR_ABILITY_OPPONENTS)));
}

View file

@ -20,7 +20,7 @@ import mage.game.permanent.token.SaprolingToken;
* @author Grath
*/
public final class ShroofusSproutsire extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent(SubType.SAPROLING, "Saproling");
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent(SubType.SAPROLING, "Saproling you control");
public ShroofusSproutsire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}");

View file

@ -52,7 +52,7 @@ public final class SkyknightSquire extends CardImpl {
));
ability.addEffect(new ConditionalContinuousEffect(
new AddCardSubTypeSourceEffect(Duration.WhileOnBattlefield, true, SubType.KNIGHT),
condition, "and is an Knight in addition to its other types"
condition, "and is a Knight in addition to its other types"
));
this.addAbility(ability);
}

View file

@ -53,7 +53,7 @@ public final class ThuridMareOfDestiny extends CardImpl {
// Whenever you cast a Pegasus, Unicorn, or Horse creature spell, copy it.
this.addAbility(new SpellCastControllerTriggeredAbility(
new CopyTargetStackObjectEffect(true)
new CopyTargetStackObjectEffect(false, true, false)
.withText("it"),
filter, false, SetTargetPointer.SPELL
));

View file

@ -22,7 +22,7 @@ public final class TriumphOfCruelty extends CardImpl {
// At the beginning of your upkeep, target opponent discards a card if you control the creature with the greatest power or tied for the greatest power.
Ability ability = new BeginningOfUpkeepTriggeredAbility(new ConditionalOneShotEffect(
new DiscardTargetEffect(1), ControlsCreatureGreatestPowerCondition.instance));
new DiscardTargetEffect(1), ControlsCreatureGreatestPowerCondition.instance).withConditionTextAtEnd(true));
ability.addTarget(new TargetOpponent());
this.addAbility(ability);
}

View file

@ -21,7 +21,7 @@ public final class TriumphOfFerocity extends CardImpl {
// At the beginning of your upkeep, draw a card if you control the creature with the greatest power or tied for the greatest power.
this.addAbility(new BeginningOfUpkeepTriggeredAbility(new ConditionalOneShotEffect(
new DrawCardSourceControllerEffect(1), ControlsCreatureGreatestPowerCondition.instance
)));
).withConditionTextAtEnd(true)));
}
private TriumphOfFerocity(final TriumphOfFerocity card) {

View file

@ -1,7 +1,7 @@
package mage.cards.w;
import mage.MageInt;
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility;
import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
import mage.abilities.effects.common.continuous.BoostSourceEffect;
import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl;
@ -10,7 +10,7 @@ import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.SubType;
import mage.filter.FilterPermanent;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.predicate.mageobject.AbilityPredicate;
import java.util.UUID;
@ -20,7 +20,7 @@ import java.util.UUID;
*/
public final class WaterkinShaman extends CardImpl {
private static final FilterPermanent filter = new FilterCreaturePermanent("a creature with flying");
private static final FilterPermanent filter = new FilterControlledCreaturePermanent("a creature you control with flying");
static {
filter.add(new AbilityPredicate(FlyingAbility.class));
@ -35,7 +35,7 @@ public final class WaterkinShaman extends CardImpl {
this.toughness = new MageInt(1);
// Whenever a creature with flying you control enters, Waterkin Shaman gets +1/+1 until end of turn.
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(
this.addAbility(new EntersBattlefieldAllTriggeredAbility(
new BoostSourceEffect(1, 1, Duration.EndOfTurn), filter
));
}

View file

@ -17,7 +17,7 @@ public class EntersBattlefieldThisOrAnotherTriggeredAbility extends EntersBattle
public EntersBattlefieldThisOrAnotherTriggeredAbility(Effect effect, FilterPermanent filter, boolean optional, SetTargetPointer setTargetPointer, boolean onlyControlled) {
super(Zone.BATTLEFIELD, effect, new FilterPermanentThisOrAnother(filter, onlyControlled), optional, setTargetPointer);
setTriggerPhrase("Whenever " + this.filter.getMessage() + " enters the battlefield" + (onlyControlled ? " under your control, " : ", "));
setTriggerPhrase("Whenever " + this.filter.getMessage() + (onlyControlled ? " you control" : "") + " enters, ");
}
protected EntersBattlefieldThisOrAnotherTriggeredAbility(final EntersBattlefieldThisOrAnotherTriggeredAbility ability) {

View file

@ -21,6 +21,7 @@ public class ConditionalOneShotEffect extends OneShotEffect {
private final Effects effects = new Effects();
private final Effects otherwiseEffects = new Effects();
private final Condition condition;
private boolean withConditionTextAtEnd = false;
public ConditionalOneShotEffect(OneShotEffect effect, Condition condition) {
this(effect, null, condition, null);
@ -57,6 +58,7 @@ public class ConditionalOneShotEffect extends OneShotEffect {
this.effects.addAll(effect.effects.copy());
this.otherwiseEffects.addAll(effect.otherwiseEffects.copy());
this.condition = effect.condition;
this.withConditionTextAtEnd = effect.withConditionTextAtEnd;
}
@Override
@ -81,6 +83,11 @@ public class ConditionalOneShotEffect extends OneShotEffect {
return this;
}
public ConditionalOneShotEffect withConditionTextAtEnd(boolean withConditionTextAtEnd) {
this.withConditionTextAtEnd = withConditionTextAtEnd;
return this;
}
@Override
public void setValue(String key, Object value) {
super.setValue(key, value);
@ -105,8 +112,13 @@ public class ConditionalOneShotEffect extends OneShotEffect {
}
if (otherwiseEffects.isEmpty()) {
return "if " + conditionText + ", "
+ CardUtil.getTextWithFirstCharLowerCase(effects.getText(mode));
if (withConditionTextAtEnd) {
return CardUtil.getTextWithFirstCharLowerCase(effects.getText(mode))
+ " if " + conditionText;
} else {
return "if " + conditionText + ", "
+ CardUtil.getTextWithFirstCharLowerCase(effects.getText(mode));
}
}
return effects.getText(mode) + ". If " + conditionText + ", "
+ CardUtil.getTextWithFirstCharLowerCase(otherwiseEffects.getText(mode));

View file

@ -18,7 +18,7 @@ public class KaitoCunningInfiltratorEmblem extends Emblem {
super("Emblem Kaito");
this.getAbilities().add(new SpellCastAllTriggeredAbility(
Zone.COMMAND, new CreateTokenEffect(new NinjaToken2()), new FilterSpell(), false, SetTargetPointer.NONE
));
).setTriggerPhrase("Whenever a player casts a spell, you "));
}
private KaitoCunningInfiltratorEmblem(final KaitoCunningInfiltratorEmblem card) {