[MOC] various text fixes

This commit is contained in:
theelk801 2023-04-18 18:34:57 -04:00
parent 9b7dc33061
commit c4ebe4ae8b
20 changed files with 67 additions and 65 deletions

View file

@ -36,7 +36,8 @@ public final class BrightPalmSoulAwakener extends CardImpl {
this.addAbility(backupAbility);
// Whenever this creature attacks, double the number of +1/+1 counters on target creature. That creature can't be blocked by creatures with power 2 or less this turn.
Ability ability = new AttacksTriggeredAbility(new BrightPalmSoulAwakenerEffect());
Ability ability = new AttacksTriggeredAbility(new BrightPalmSoulAwakenerEffect())
.setTriggerPhrase("Whenever this creature attacks, ");
ability.addEffect(new CantBeBlockedTargetEffect(
DauntAbility.getFilter(), Duration.EndOfTurn
).setText("that creature can't be blocked by creatures with power 2 or less this turn"));

View file

@ -41,7 +41,8 @@ public final class DarksteelSplicer extends CardImpl {
// Whenever Darksteel Splicer or another nontoken Phyrexian enters the battlefield under your control, create X 3/3 colorless Phyrexian Golem artifact creature tokens, where X is the number of opponents you have.
this.addAbility(new EntersBattlefieldThisOrAnotherTriggeredAbility(
new CreateTokenEffect(new PhyrexianGolemToken(), OpponentsCount.instance),
new CreateTokenEffect(new PhyrexianGolemToken(), OpponentsCount.instance)
.setText("create X 3/3 colorless Phyrexian Golem artifact creature tokens, where X is the number of opponents you have"),
filter, false, true
));

View file

@ -37,6 +37,7 @@ public final class FiligreeVector extends CardImpl {
// When Filigree Vector enters the battlefield, put a +1/+1 counter on each of any number of target creatures and a charge counter on each of any number of target artifacts.
Ability ability = new EntersBattlefieldTriggeredAbility(
new AddCountersTargetEffect(CounterType.P1P1.createInstance())
.setText("put a +1/+1 counter on each of any number of target creatures")
);
ability.addEffect(new AddCountersTargetEffect(CounterType.CHARGE.createInstance())
.setText("and a charge counter on each of any number of target artifacts")

View file

@ -69,7 +69,7 @@ class FlamerushRiderEffect extends OneShotEffect {
public FlamerushRiderEffect() {
super(Outcome.Copy);
this.staticText = "create a token tapped and attacking that's a copy of another target attacking creature. Exile the token at end of combat";
this.staticText = "create a token that's a copy of another target attacking creature and that's tapped and attacking. Exile the token at end of combat";
}
public FlamerushRiderEffect(final FlamerushRiderEffect effect) {

View file

@ -39,7 +39,7 @@ public final class FlameshadowConjuring extends CardImpl {
StaticFilters.FILTER_CONTROLLED_CREATURE_NON_TOKEN, false, SetTargetPointer.PERMANENT,
"Whenever a nontoken creature enters the battlefield under your control, "
+ "you may pay {R}. If you do, create a token that's a copy of that creature. "
+ "That token gains haste. Exile it at the beginning of the next end step");
+ "That token gains haste. Exile it at the beginning of the next end step.");
this.addAbility(ability);
}

View file

@ -37,7 +37,7 @@ public final class HedronDetonator extends CardImpl {
// Whenever an artifact enters the battlefield under your control, Hedron Detonator deals 1 damage to target opponent.
Ability ability = new EntersBattlefieldControlledTriggeredAbility(
new DamageTargetEffect(1), StaticFilters.FILTER_PERMANENT_ARTIFACT
new DamageTargetEffect(1), StaticFilters.FILTER_PERMANENT_ARTIFACT_AN
);
ability.addTarget(new TargetOpponent());
this.addAbility(ability);

View file

@ -28,7 +28,7 @@ public final class IonStorm extends CardImpl {
// {1}{R}, Remove a +1/+1 counter or a charge counter from a permanent you control: Ion Storm deals 2 damage to any target.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(2), new ManaCostsImpl<>("{1}{R}"));
ability.addCost(new OrCost(" Remove a +1/+1 counter or a charge counter from a permanent you control", new RemoveCounterCost(new TargetControlledPermanent(), CounterType.P1P1), new RemoveCounterCost(new TargetControlledPermanent(), CounterType.CHARGE)));
ability.addCost(new OrCost("Remove a +1/+1 counter or a charge counter from a permanent you control", new RemoveCounterCost(new TargetControlledPermanent(), CounterType.P1P1), new RemoveCounterCost(new TargetControlledPermanent(), CounterType.CHARGE)));
ability.addTarget(new TargetAnyTarget());
this.addAbility(ability);
}

View file

@ -1,8 +1,5 @@
package mage.cards.k;
import java.util.List;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.AttacksTriggeredAbility;
@ -13,21 +10,23 @@ import mage.abilities.keyword.TrampleAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Outcome;
import mage.constants.SubType;
import mage.counters.CounterType;
import mage.filter.StaticFilters;
import mage.game.Game;
import mage.game.permanent.Permanent;
import java.util.List;
import java.util.UUID;
/**
*
* @author LevelX2
*/
public final class KalonianHydra extends CardImpl {
public KalonianHydra(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{G}");
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}{G}");
this.subtype.add(SubType.HYDRA);
this.power = new MageInt(0);
@ -35,11 +34,14 @@ public final class KalonianHydra extends CardImpl {
// Trample
this.addAbility(TrampleAbility.getInstance());
// Kalonian Hydra enters the battlefield with four +1/+1 counters on it.
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance(4))));
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(
CounterType.P1P1.createInstance(4), true
), "with four +1/+1 counters on it"));
// Whenever Kalonian Hydra attacks, double the number of +1/+1 counters on each creature you control.
this.addAbility(new AttacksTriggeredAbility(new KalonianHydraEffect(), false));
}
private KalonianHydra(final KalonianHydra card) {

View file

@ -1,35 +1,31 @@
package mage.cards.k;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.Effect;
import mage.abilities.effects.common.continuous.BoostControlledEffect;
import mage.abilities.effects.common.continuous.GainAbilityAllEffect;
import mage.abilities.effects.common.continuous.GainAbilityControlledEffect;
import mage.abilities.keyword.FirstStrikeAbility;
import mage.abilities.keyword.IndestructibleAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.SubType;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.mageobject.AnotherPredicate;
import java.util.UUID;
/**
*
* @author BetaSteward_at_googlemail.com
*/
public final class KnightExemplar extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Knight creatures");
static {
filter.add(SubType.KNIGHT.getPredicate());
}
private static final FilterCreaturePermanent filter
= new FilterCreaturePermanent(SubType.KNIGHT, "Knight creatures");
public KnightExemplar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}{W}");
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}{W}");
this.subtype.add(SubType.HUMAN);
this.subtype.add(SubType.KNIGHT);
@ -38,16 +34,15 @@ public final class KnightExemplar extends CardImpl {
// First strike
this.addAbility(FirstStrikeAbility.getInstance());
// Other Knight creatures you control get +1/+1 and are indestructible.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostControlledEffect(1, 1, Duration.WhileOnBattlefield, filter, true)));
FilterCreaturePermanent indestructibleFilter = filter.copy();
indestructibleFilter.add(AnotherPredicate.instance);
indestructibleFilter.add(TargetController.YOU.getControllerPredicate());
indestructibleFilter.setMessage("Other Knight creatures you control");
Effect effect = new GainAbilityAllEffect(IndestructibleAbility.getInstance(), Duration.WhileOnBattlefield, indestructibleFilter, false);
effect.setText("Other Knight creatures you control are indestructible");
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect));
// Other Knight creatures you control get +1/+1 and are indestructible.
Ability ability = new SimpleStaticAbility(new BoostControlledEffect(
1, 1, Duration.WhileOnBattlefield, filter, true
));
ability.addEffect(new GainAbilityControlledEffect(
IndestructibleAbility.getInstance(), Duration.WhileOnBattlefield, filter, false
).setText("and have indestructible"));
this.addAbility(ability);
}
private KnightExemplar(final KnightExemplar card) {
@ -58,5 +53,4 @@ public final class KnightExemplar extends CardImpl {
public KnightExemplar copy() {
return new KnightExemplar(this);
}
}

View file

@ -42,7 +42,7 @@ public final class LocthwainLancer extends CardImpl {
// Whenever a nontoken Knight you control dies, each opponent loses 1 life and you draw a card.
Ability ability = new DiesCreatureTriggeredAbility(new LoseLifeOpponentsEffect(1), false, filter);
ability.addEffect(new DrawCardSourceControllerEffect(1).concatBy("and"));
ability.addEffect(new DrawCardSourceControllerEffect(1).concatBy("and you"));
this.addAbility(ability);
}

View file

@ -29,7 +29,7 @@ import java.util.UUID;
*/
public final class SlimefootAndSquee extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent(SubType.SAPROLING);
private static final FilterControlledPermanent filter = new FilterControlledPermanent(SubType.SAPROLING, "a Saproling");
private static final FilterCard filter2 = new FilterCreatureCard("another creature card from your graveyard");
static {

View file

@ -45,7 +45,7 @@ public final class WeirdingWood extends CardImpl {
// Enchanted land has "{T}: Add two mana of any one color."
Ability gainedAbility = new SimpleManaAbility(Zone.BATTLEFIELD, new AddManaOfAnyColorEffect(2), new TapSourceCost());
Effect effect = new GainAbilityAttachedEffect(gainedAbility, AttachmentType.AURA);
effect.setText("Enchanted land has \"{T}: Add two mana of any color.\"");
effect.setText("Enchanted land has \"{T}: Add two mana of any one color.\"");
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect));
}

View file

@ -63,8 +63,8 @@ public class VerifyCardDataTest {
private static final Logger logger = Logger.getLogger(VerifyCardDataTest.class);
private static final String FULL_ABILITIES_CHECK_SET_CODE = "MOM"; // check all abilities and output cards with wrong abilities texts;
private static final boolean CHECK_ONLY_ABILITIES_TEXT = false; // use when checking text locally, suppresses unnecessary checks and output messages
private static final String FULL_ABILITIES_CHECK_SET_CODE = "MOC"; // 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
@ -89,7 +89,7 @@ public class VerifyCardDataTest {
private static final List<String> evergreenKeywords = Arrays.asList(
"flying", "lifelink", "menace", "trample", "haste", "first strike", "hexproof", "fear",
"deathtouch", "double strike", "indestructible", "reach", "flash", "defender", "vigilance",
"plainswalk", "islandwalk", "swampwalk", "mountainwalk", "forestwalk", "myriad", "prowess"
"plainswalk", "islandwalk", "swampwalk", "mountainwalk", "forestwalk", "myriad", "prowess", "convoke"
);
private static final List<String> doubleNumbers = new ArrayList<>();

View file

@ -1,24 +1,23 @@
package mage.abilities.common;
import mage.constants.Zone;
import mage.abilities.TriggeredAbilityImpl;
import mage.abilities.effects.Effect;
import mage.constants.Zone;
import mage.game.Game;
import mage.game.events.GameEvent;
/**
*
* @author nantuko
*/
public class BecomesTappedSourceTriggeredAbility extends TriggeredAbilityImpl {
public BecomesTappedSourceTriggeredAbility(Effect effect, boolean isOptional) {
super(Zone.BATTLEFIELD, effect, isOptional);
public BecomesTappedSourceTriggeredAbility(Effect effect) {
this(effect, false);
}
public BecomesTappedSourceTriggeredAbility(Effect effect) {
super(Zone.BATTLEFIELD, effect);
public BecomesTappedSourceTriggeredAbility(Effect effect, boolean isOptional) {
super(Zone.BATTLEFIELD, effect, isOptional);
setTriggerPhrase("Whenever {this} becomes tapped, ");
}

View file

@ -1,4 +1,3 @@
package mage.abilities.effects.common;
import mage.MageObject;
@ -65,26 +64,28 @@ public class PreventDamageByTargetEffect extends PreventionEffectImpl {
if (staticText != null && !staticText.isEmpty()) {
return staticText;
}
StringBuilder sb = new StringBuilder();
if (amountToPrevent == Integer.MAX_VALUE) {
StringBuilder sb = new StringBuilder();
sb.append("Prevent all");
if (onlyCombat) {
sb.append(" combat");
}
sb.append(" damage target ");
sb.append(mode.getTargets().get(0).getTargetName()).append(" would deal ").append(duration.toString());
return sb.toString();
} else {
StringBuilder sb = new StringBuilder();
sb.append("Prevent the next ").append(amountToPrevent);
sb.append("Prevent the next ");
sb.append(amountToPrevent);
if (onlyCombat) {
sb.append("combat ");
sb.append(" combat");
}
sb.append(" damage that ");
sb.append(mode.getTargets().get(0).getTargetName()).append(" would deal ").append(duration.toString());
return sb.toString();
}
sb.append(mode.getTargets().get(0).getTargetName());
sb.append(" would deal ");
if (duration == Duration.EndOfTurn) {
sb.append("this turn");
} else {
sb.append(duration);
}
return sb.toString();
}
}

View file

@ -1,6 +1,7 @@
package mage.abilities.effects.common.continuous;
import mage.abilities.Ability;
import mage.abilities.LoyaltyAbility;
import mage.abilities.Mode;
import mage.abilities.TriggeredAbility;
import mage.abilities.common.SimpleActivatedAbility;
@ -140,7 +141,9 @@ public class GainAbilityAttachedEffect extends ContinuousEffectImpl {
} else {
sb.append("gains ");
}
boolean quotes = (ability instanceof SimpleActivatedAbility) || (ability instanceof TriggeredAbility);
boolean quotes = ability instanceof SimpleActivatedAbility
|| ability instanceof TriggeredAbility
|| ability instanceof LoyaltyAbility;
if (quotes) {
sb.append('"');
}

View file

@ -95,7 +95,7 @@ public class BolsterEffect extends OneShotEffect {
} else {
sb.append("X, where X is the number of ");
sb.append(amount.getMessage());
sb.append(" (Choose a creature with the least toughness among creatures you control and put X +1/+1 counters on it.)");
sb.append(". (Choose a creature with the least toughness among creatures you control and put X +1/+1 counters on it.)");
}
return sb.toString();
}

View file

@ -70,7 +70,7 @@ public class ImproviseAbility extends SimpleStaticAbility implements AlternateMa
@Override
public String getRule() {
return "Improvise <i>(Your artifacts can help cast this spell. Each artifact you tap after you're done activating mana abilities pays for {1}.)</i>";
return "improvise <i>(Your artifacts can help cast this spell. Each artifact you tap after you're done activating mana abilities pays for {1}.)</i>";
}
@Override

View file

@ -83,7 +83,7 @@ public class FilterCard extends FilterObject<Card> {
}
public boolean hasPredicates() {
return !predicates.isEmpty();
return !predicates.isEmpty() || !extraPredicates.isEmpty();
}
@Override

View file

@ -15,7 +15,7 @@ import java.util.Arrays;
public final class StoneTrapIdolToken extends TokenImpl {
public StoneTrapIdolToken() {
super("Construct Token", "6/12 colorless Construct artifact creature token with trample");
super("Construct Token", "6/12 colorless Construct artifact creature token with trample");
cardType.add(CardType.CREATURE);
cardType.add(CardType.ARTIFACT);
subtype.add(SubType.CONSTRUCT);