followup text fixes

This commit is contained in:
xenohedron 2024-09-02 20:17:36 -04:00
parent 48cb43351b
commit a9250ff28a
24 changed files with 52 additions and 43 deletions

View file

@ -11,7 +11,6 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
import mage.counters.CounterType;
import mage.filter.StaticFilters;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.mageobject.AnotherPredicate;
import mage.filter.predicate.mageobject.BasePowerPredicate;
@ -24,7 +23,7 @@ import java.util.UUID;
*/
public class BessSoulNourisher extends CardImpl {
static final FilterCreaturePermanent filter = new FilterCreaturePermanent("other creatures with base power and toughness 1/1");
static final FilterCreaturePermanent filter = new FilterCreaturePermanent("other creatures you control with base power and toughness 1/1");
static {
filter.add(AnotherPredicate.instance);

View file

@ -1,6 +1,5 @@
package mage.cards.c;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.SacrificeOneOrMorePermanentsTriggeredAbility;
@ -11,27 +10,33 @@ import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.effects.common.continuous.GainAbilityControlledEffect;
import mage.abilities.effects.common.counter.AddCountersAllEffect;
import mage.constants.*;
import mage.abilities.keyword.MenaceAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
import mage.counters.CounterType;
import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.common.FilterControlledPermanent;
import mage.filter.predicate.mageobject.AnotherPredicate;
import mage.game.permanent.token.SquirrelToken;
import java.util.UUID;
/**
*
* @author Grath
*/
public final class CamelliaTheSeedmiser extends CardImpl {
private static final FilterControlledCreaturePermanent filterSquirrelCreatures =
new FilterControlledCreaturePermanent("Squirrels");
private static final FilterControlledCreaturePermanent filterSquirrels =
new FilterControlledCreaturePermanent("other Squirrel you control");
static {
filterSquirrelCreatures.add(SubType.SQUIRREL.getPredicate());
filterSquirrelCreatures.add(AnotherPredicate.instance);
filterSquirrels.add(SubType.SQUIRREL.getPredicate());
filterSquirrels.add(AnotherPredicate.instance);
}
@ -54,7 +59,7 @@ public final class CamelliaTheSeedmiser extends CardImpl {
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD,new GainAbilityControlledEffect(
new MenaceAbility(false),
Duration.WhileOnBattlefield,
filterSquirrels,
filterSquirrelCreatures,
true
)));
// Whenever you sacrifice one or more Foods, create a 1/1 green Squirrel creature token.

View file

@ -163,7 +163,7 @@ class CourageousResolveWinLoseEffect extends ContinuousRuleModifyingEffectImpl {
CourageousResolveWinLoseEffect() {
super(Duration.EndOfTurn, Outcome.Benefit, false, true);
staticText = "you can't lose the game this turn, and your opponents can't win the game this turn.";
staticText = ", you can't lose the game this turn, and your opponents can't win the game this turn";
}
private CourageousResolveWinLoseEffect(final CourageousResolveWinLoseEffect effect) {

View file

@ -33,7 +33,7 @@ public final class DemonicCounsel extends CardImpl {
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(
new SearchLibraryPutInHandEffect(new TargetCardInLibrary(), false),
new SearchLibraryPutInHandEffect(new TargetCardInLibrary(filter), true),
DeliriumCondition.instance, "earch your library for a Demon card, reveal it, " +
DeliriumCondition.instance, "search your library for a Demon card, reveal it, " +
"put it into your hand, then shuffle.<br>" + AbilityWord.DELIRIUM.formatWord() +
"If there are four or more card types among cards in your graveyard, " +
"instead search your library for any card, put it into your hand, then shuffle."

View file

@ -19,7 +19,6 @@ import mage.cards.CardSetInfo;
import mage.constants.*;
import mage.filter.StaticFilters;
import mage.filter.common.FilterControlledPermanent;
import mage.filter.common.FilterCreaturePermanent;
import mage.game.permanent.token.TreasureToken;
import java.util.UUID;
@ -57,7 +56,7 @@ public final class ForgeNeverwinterCharlatan extends CardImpl {
this.addAbility(new SacrificeOneOrMorePermanentsTriggeredAbility(Zone.BATTLEFIELD,
new CreateTokenEffect(new TreasureToken(), 1, true)
.setText("you create a tapped Treasure token"),
new FilterCreaturePermanent("creatures"), TargetController.ANY, SetTargetPointer.NONE, false
StaticFilters.FILTER_PERMANENT_CREATURES, TargetController.ANY, SetTargetPointer.NONE, false
).setTriggersLimitEachTurn(1));
}

View file

@ -122,7 +122,7 @@ class GixYawgmothPraetorExileEffect extends OneShotEffect {
GixYawgmothPraetorExileEffect() {
super(Outcome.PlayForFree);
this.staticText = "Exile the top X cards of target opponent's library. You may play land cards and cast spells from among cards exiled this way without paying their mana costs.";
this.staticText = "Exile the top X cards of target opponent's library. You may play lands and cast spells from among cards exiled this way without paying their mana costs.";
}
private GixYawgmothPraetorExileEffect(final GixYawgmothPraetorExileEffect effect) {

View file

@ -46,7 +46,7 @@ class InsidiousDreamsEffect extends OneShotEffect {
InsidiousDreamsEffect() {
super(Outcome.Benefit);
this.staticText = "Search your library for up to X cards. Then shuffle and put those cards on top of it in any order";
this.staticText = "Search your library for up to X cards. Then shuffle and put those cards on top in any order";
}
private InsidiousDreamsEffect(final InsidiousDreamsEffect effect) {

View file

@ -103,7 +103,7 @@ class KambalProfiteeringMayorTriggeredAbility extends TriggeredAbilityImpl {
&& controller.hasOpponent(zce.getPlayerId(), game)) // & under your opponent's control
.map(ZoneChangeEvent::getTarget)
.filter(Objects::nonNull)
.filter(p -> p instanceof PermanentToken) // collect only tokens
.filter(PermanentToken.class::isInstance) // collect only tokens
.map(Permanent::getId)
.collect(Collectors.toList());
if (tokensIds.isEmpty()) {
@ -116,7 +116,7 @@ class KambalProfiteeringMayorTriggeredAbility extends TriggeredAbilityImpl {
@Override
public String getRule() {
return "Whenever one or more tokens enter the battlefield under your opponents' control, "
return "Whenever one or more tokens your opponents control enter, "
+ "for each of them, create a tapped token that's a copy of it. "
+ "This ability triggers only once each turn.";
}
@ -152,4 +152,4 @@ class KambalProfiteeringMayorEffect extends OneShotEffect {
return true;
}
}
}

View file

@ -41,7 +41,7 @@ class LimDulsVaultEffect extends OneShotEffect {
super(Outcome.Benefit);
this.staticText = "Look at the top five cards of your library. As many times as you choose, "
+ "you may pay 1 life, put those cards on the bottom of your library in any order, then look at the top five cards of your library. "
+ "Then shuffle and put the last cards you looked at this way on top of it in any order";
+ "Then shuffle and put the last cards you looked at this way on top in any order";
}
private LimDulsVaultEffect(final LimDulsVaultEffect effect) {

View file

@ -53,8 +53,8 @@ class MockingbirdEffect extends OneShotEffect {
MockingbirdEffect() {
super(Outcome.Benefit);
staticText = "as a copy of any creature on the battlefield with mana value less than or equal to the mana " +
"spent to cast Mockingbird, except it is a Bird in addition to its other types and has flying.";
staticText = "as a copy of any creature on the battlefield with mana value less than or equal to the amount of mana " +
"spent to cast {this}, except it's a Bird in addition to its other types and has flying.";
}
private MockingbirdEffect(final MockingbirdEffect effect) {
@ -84,4 +84,4 @@ class MockingbirdEffect extends OneShotEffect {
});
return copyEffect.apply(game, source);
}
}
}

View file

@ -55,6 +55,7 @@ public final class RuskoClockmaker extends CardImpl {
);
ability.addEffect(new LoseLifeOpponentsEffect(1));
ability.addEffect(new GainLifeEffect(1).concatBy("and"));
this.addAbility(ability);
}
private RuskoClockmaker(final RuskoClockmaker card) {

View file

@ -1,7 +1,7 @@
package mage.cards.s;
import mage.MageInt;
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility;
import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
import mage.abilities.effects.common.counter.AddCountersTargetEffect;
import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl;
@ -9,7 +9,7 @@ import mage.cards.CardSetInfo;
import mage.constants.*;
import mage.counters.CounterType;
import mage.filter.FilterPermanent;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.predicate.mageobject.AnotherPredicate;
import mage.filter.predicate.mageobject.PowerPredicate;
@ -21,7 +21,7 @@ import java.util.UUID;
public final class SerraRedeemer extends CardImpl {
private static final FilterPermanent filter
= new FilterCreaturePermanent("another creature with power 2 or less");
= new FilterControlledCreaturePermanent("another creature you control with power 2 or less");
static {
filter.add(AnotherPredicate.instance);
@ -40,7 +40,7 @@ public final class SerraRedeemer extends CardImpl {
this.addAbility(FlyingAbility.getInstance());
// Whenever another creature with power 2 or less you control enters, put two +1/+1 counters on that creature.
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(
this.addAbility(new EntersBattlefieldAllTriggeredAbility(
Zone.BATTLEFIELD, new AddCountersTargetEffect(CounterType.P1P1.createInstance(2)),
filter, false, SetTargetPointer.PERMANENT
));

View file

@ -1,4 +1,3 @@
package mage.cards.s;
import java.util.UUID;
@ -42,7 +41,8 @@ public final class SwordOfTheMeek extends CardImpl {
// Equip {2}
this.addAbility(new EquipAbility(Outcome.BoostCreature, new GenericManaCost(2), false));
// Whenever a 1/1 creature you control enters, you may return Sword of the Meek from your graveyard to the battlefield, then attach it to that creature.
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(Zone.GRAVEYARD, new SwordOfTheMeekEffect(), filter, true, SetTargetPointer.PERMANENT));
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(Zone.GRAVEYARD, new SwordOfTheMeekEffect(), filter, true, SetTargetPointer.PERMANENT)
.setTriggerPhrase("Whenever a 1/1 creature enters under your control, "));
}
private SwordOfTheMeek(final SwordOfTheMeek card) {

View file

@ -9,6 +9,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.filter.StaticFilters;
import mage.target.common.TargetOpponent;
import java.util.UUID;
@ -27,7 +28,8 @@ public final class VengefulBloodwitch extends CardImpl {
this.toughness = new MageInt(1);
// Whenever this creature or another creature you control dies, target opponent loses 1 life and you gain 1 life.
Ability ability = new DiesThisOrAnotherTriggeredAbility(new LoseLifeTargetEffect(1), false);
Ability ability = new DiesThisOrAnotherTriggeredAbility(new LoseLifeTargetEffect(1), false,
StaticFilters.FILTER_PERMANENT_CREATURE_CONTROLLED);
ability.addEffect(new GainLifeEffect(1).concatBy("and"));
ability.addTarget(new TargetOpponent());
this.addAbility(ability);

View file

@ -1,11 +1,9 @@
package mage.cards.w;
import java.util.UUID;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.common.SacrificeTargetCost;
import mage.abilities.effects.Effect;
import mage.abilities.effects.common.ReturnToHandSourceEffect;
import mage.abilities.effects.common.ReturnSourceFromGraveyardToHandEffect;
import mage.abilities.effects.common.continuous.LoseAbilityAllEffect;
import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl;
@ -16,7 +14,8 @@ import mage.constants.SuperType;
import mage.constants.Zone;
import mage.filter.common.FilterControlledLandPermanent;
import mage.filter.common.FilterCreaturePermanent;
import mage.target.common.TargetControlledPermanent;
import java.util.UUID;
/**
*
@ -39,7 +38,7 @@ public final class Whiteout extends CardImpl {
this.getSpellAbility().addEffect(effect);
// Sacrifice a snow land: Return Whiteout from your graveyard to your hand.
this.addAbility(new SimpleActivatedAbility(Zone.GRAVEYARD, new ReturnToHandSourceEffect(), new SacrificeTargetCost(filter)));
this.addAbility(new SimpleActivatedAbility(Zone.GRAVEYARD, new ReturnSourceFromGraveyardToHandEffect(), new SacrificeTargetCost(filter)));
}
private Whiteout(final Whiteout card) {

View file

@ -676,7 +676,7 @@ public class Mana implements Comparable<Mana>, Serializable, Copyable<Mana> {
sbMana.append("{C}");
}
} else {
sbMana.append(colorless).append("{C}");
sbMana.append(CardUtil.numberToText(colorless)).append(" {C}");
}
String colorsInOrder = getColorsInOrder();

View file

@ -24,7 +24,7 @@ public class SurvivalAbility extends TriggeredAbilityImpl {
public SurvivalAbility(Effect effect, boolean optional) {
super(Zone.BATTLEFIELD, effect, optional);
setTriggerPhrase("At the beginning of your second main phase, if {this} is tapped, ");
setAbilityWord(AbilityWord.SURVIVOR);
setAbilityWord(AbilityWord.SURVIVAL);
}
private SurvivalAbility(final SurvivalAbility ability) {

View file

@ -71,16 +71,20 @@ public class EntersBattlefieldOneOrMoreTriggeredAbility extends TriggeredAbility
}
private String generateTriggerPhrase() {
StringBuilder sb = new StringBuilder("Whenever one or more " + this.filterPermanent.getMessage());
StringBuilder sb = new StringBuilder("Whenever one or more " + filterPermanent.getMessage());
switch (targetController) {
case YOU:
sb.append(" you control enter, ");
if (filterPermanent.getMessage().contains("you control")) {
sb.append(" enter, ");
} else {
sb.append(" you control enter, ");
}
break;
case OPPONENT:
sb.append(" enter under an opponent's control, ");
break;
default:
throw new UnsupportedOperationException();
throw new IllegalArgumentException("Unsupported TargetController in EntersBattlefieldOneOrMoreTriggeredAbility");
}
return sb.toString();
}

View file

@ -115,7 +115,7 @@ public class SacrificeOneOrMorePermanentsTriggeredAbility extends TriggeredAbili
targetControllerText = "an opponent sacrifices one or more ";
break;
case ANY:
targetControllerText = "one or more players sacrifices one or more ";
targetControllerText = "one or more players sacrifice one or more ";
break;
default:
throw new IllegalArgumentException("Unsupported TargetController in SacrificePermanentTriggeredAbility: " + sacrificingPlayer);

View file

@ -21,11 +21,11 @@ public enum EnergySpentOrLostThisTurnCount implements DynamicValue {
@Override
public String getMessage() {
return "{E} spent or lost this turn";
return "{E} you've paid or lost this turn";
}
@Override
public String toString() {
return "X";
}
}
}

View file

@ -63,7 +63,7 @@ public class PermanentsEnterBattlefieldTappedEffect extends ReplacementEffectImp
return staticText;
}
return filter.getMessage()
+ " enter the battlefield tapped"
+ " enter tapped"
+ (duration == Duration.EndOfTurn ? " this turn" : "");
}
}

View file

@ -58,7 +58,7 @@ public class ReturnFromGraveyardToBattlefieldWithCounterTargetEffect extends Ret
sb.append(" counter");
} else {
sb.append(CardUtil.numberToText(counter.getCount()));
sb.append(additional ? " additional" : " ");
sb.append(additional ? " additional " : " ");
sb.append(counter.getName());
sb.append(" counters");
}

View file

@ -55,7 +55,7 @@ public enum AbilityWord {
SECRET_COUNCIL("Secret council"),
SPELL_MASTERY("Spell mastery"),
STRIVE("Strive"),
SURVIVOR("Survivor"),
SURVIVAL("Survival"),
SWEEP("Sweep"),
TEMPTING_OFFER("Tempting offer"),
THRESHOLD("Threshold"),

View file

@ -19,7 +19,7 @@ public final class TheEleventhHourToken extends TokenImpl {
}
public TheEleventhHourToken() {
super("Human Token", "1/1 white Human creature token with \"Doctor spells you cast cost 1 less to cast.\"");
super("Human Token", "1/1 white Human creature token with \"Doctor spells you cast cost {1} less to cast.\"");
cardType.add(CardType.CREATURE);
color.setWhite(true);
subtype.add(SubType.HUMAN);