mirror of
https://github.com/correl/mage.git
synced 2025-03-27 01:11:43 -09:00
[MOM] various text fixes
This commit is contained in:
parent
a035b1a3f1
commit
312cff0c0f
29 changed files with 73 additions and 58 deletions
Mage.Sets/src/mage/cards
a
b
c
e
f
g
h
k
o
p
s
u
v
Mage.Verify/src/test/java/mage/verify
Mage/src/main/java/mage/abilities/effects/common
|
@ -33,6 +33,7 @@ public final class AlabasterHostIntercessor extends CardImpl {
|
|||
Ability ability = new EntersBattlefieldTriggeredAbility(new ExileUntilSourceLeavesEffect());
|
||||
ability.addTarget(new TargetOpponentsCreaturePermanent());
|
||||
ability.addEffect(new CreateDelayedTriggeredAbilityEffect(new OnLeaveReturnExiledToBattlefieldAbility()));
|
||||
this.addAbility(ability);
|
||||
|
||||
// Plainscycling {2}
|
||||
this.addAbility(new PlainscyclingAbility(new ManaCostsImpl<>("{2}")));
|
||||
|
|
|
@ -45,7 +45,7 @@ public final class AncientImperiosaur extends CardImpl {
|
|||
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(
|
||||
CounterType.P1P1.createInstance(), xValue, true
|
||||
), null, "{this} enters the battlefield with two " +
|
||||
"+1/+1 counters on it for each creature that convoked it", null));
|
||||
"+1/+1 counters on it for each creature that convoked it.", null));
|
||||
}
|
||||
|
||||
private AncientImperiosaur(final AncientImperiosaur card) {
|
||||
|
|
|
@ -40,7 +40,8 @@ public final class ArchangelElspeth extends CardImpl {
|
|||
|
||||
// -2: Put two +1/+1 counters on target creature. It becomes an Angel in addition to its other types and gains flying.
|
||||
Ability ability = new LoyaltyAbility(new AddCountersTargetEffect(CounterType.P1P1.createInstance(2)), -2);
|
||||
ability.addEffect(new AddCardSubTypeTargetEffect(SubType.ANGEL, Duration.Custom));
|
||||
ability.addEffect(new AddCardSubTypeTargetEffect(SubType.ANGEL, Duration.Custom)
|
||||
.setText("It becomes an Angel in addition to its other types"));
|
||||
ability.addEffect(new GainAbilityTargetEffect(FlyingAbility.getInstance(), Duration.Custom).setText("and gains flying"));
|
||||
ability.addTarget(new TargetCreaturePermanent());
|
||||
this.addAbility(ability);
|
||||
|
|
|
@ -42,7 +42,7 @@ public final class AttentiveSkywarden extends CardImpl {
|
|||
Ability ability = new DealsCombatDamageToAPlayerTriggeredAbility(
|
||||
new TransformTargetEffect(), false
|
||||
).setOrBattle(true);
|
||||
ability.addTarget(new TargetPermanent(filter));
|
||||
ability.addTarget(new TargetPermanent(0, 1, filter));
|
||||
this.addAbility(ability);
|
||||
}
|
||||
|
||||
|
|
|
@ -33,7 +33,7 @@ public final class BeamtownBeatstick extends CardImpl {
|
|||
this.subtype.add(SubType.EQUIPMENT);
|
||||
|
||||
// Equipped creature gets +1/+0 and has menace.
|
||||
Ability ability = new SimpleStaticAbility(new BoostEquippedEffect(2, 2));
|
||||
Ability ability = new SimpleStaticAbility(new BoostEquippedEffect(1, 0));
|
||||
ability.addEffect(new GainAbilityAttachedEffect(
|
||||
new MenaceAbility(), AttachmentType.EQUIPMENT
|
||||
).setText("and has menace. <i>(It can't be blocked except by two or more creatures.)</i>"));
|
||||
|
|
|
@ -1,11 +1,14 @@
|
|||
package mage.cards.c;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.effects.common.combat.CantBeBlockedByCreaturesSourceEffect;
|
||||
import mage.abilities.keyword.BackupAbility;
|
||||
import mage.abilities.keyword.DauntAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.SubType;
|
||||
|
||||
import java.util.UUID;
|
||||
|
@ -27,7 +30,9 @@ public final class ChompingKavu extends CardImpl {
|
|||
this.addAbility(backupAbility);
|
||||
|
||||
// This creature can't be blocked by creatures with power 2 or less.
|
||||
backupAbility.addAbility(new DauntAbility());
|
||||
backupAbility.addAbility(new SimpleStaticAbility(new CantBeBlockedByCreaturesSourceEffect(
|
||||
DauntAbility.getFilter(), Duration.WhileOnBattlefield
|
||||
).setText("this creature can't be blocked by creatures with power 2 or less")));
|
||||
}
|
||||
|
||||
private ChompingKavu(final ChompingKavu card) {
|
||||
|
|
|
@ -6,6 +6,7 @@ import mage.abilities.effects.common.ExileTopXMayPlayUntilEndOfTurnEffect;
|
|||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.SubType;
|
||||
|
||||
import java.util.UUID;
|
||||
|
@ -27,7 +28,9 @@ public final class CompleatedConjurer extends CardImpl {
|
|||
this.nightCard = true;
|
||||
|
||||
// When this creature transforms into Compleated Conjurer, exile the top card of your library. Until the end of your next turn, you may play that card.
|
||||
this.addAbility(new TransformIntoSourceTriggeredAbility(new ExileTopXMayPlayUntilEndOfTurnEffect(1)));
|
||||
this.addAbility(new TransformIntoSourceTriggeredAbility(
|
||||
new ExileTopXMayPlayUntilEndOfTurnEffect(1, false, Duration.UntilEndOfYourNextTurn)
|
||||
));
|
||||
}
|
||||
|
||||
private CompleatedConjurer(final CompleatedConjurer card) {
|
||||
|
|
|
@ -42,6 +42,7 @@ public final class CrystalCarapace extends CardImpl {
|
|||
ability.addEffect(new GainAbilityAttachedEffect(
|
||||
new WardAbility(new GenericManaCost(2), false), AttachmentType.AURA
|
||||
).setText("and has ward {2}"));
|
||||
this.addAbility(ability);
|
||||
|
||||
// Cycling {2}
|
||||
this.addAbility(new CyclingAbility(new ManaCostsImpl<>("{2}")));
|
||||
|
|
|
@ -44,7 +44,7 @@ public final class EtaliPrimalSickness extends CardImpl {
|
|||
|
||||
// Whenever Etali, Primal Sickness deals combat damage to a player, they get that many poison counters.
|
||||
this.addAbility(new DealsCombatDamageToAPlayerTriggeredAbility(
|
||||
new EtaliPrimalConquerorEffect(), false, true
|
||||
new EtaliPrimalSicknessEffect(), false, true
|
||||
));
|
||||
}
|
||||
|
||||
|
|
|
@ -40,7 +40,7 @@ public final class ExpeditionLookout extends CardImpl {
|
|||
).setText("as long as an opponent has eight or more cards in their graveyard, " +
|
||||
"{this} can attack as though it didn't have defender"));
|
||||
ability.addEffect(new ConditionalRestrictionEffect(
|
||||
new CantBeBlockedSourceEffect(), CardsInOpponentGraveyardCondition.EIGHT, "and can't be blocked"
|
||||
new CantBeBlockedSourceEffect(), CardsInOpponentGraveyardCondition.EIGHT, "and it can't be blocked"
|
||||
));
|
||||
this.addAbility(ability.addHint(CardsInOpponentGraveyardCondition.EIGHT.getHint()));
|
||||
}
|
||||
|
|
|
@ -49,7 +49,7 @@ public final class FlittingGuerrilla extends CardImpl {
|
|||
ReflexiveTriggeredAbility rAbility = new ReflexiveTriggeredAbility(new PutOnLibraryTargetEffect(true), false);
|
||||
rAbility.addTarget(new TargetCardInYourGraveyard(filter));
|
||||
Ability ability = new DiesSourceTriggeredAbility(new MillCardsEachPlayerEffect(2, TargetController.EACH_PLAYER));
|
||||
ability.addEffect(new DoWhenCostPaid(rAbility, new ExileSourceFromGraveCost(), "Exile this from your graveyard?"));
|
||||
ability.addEffect(new DoWhenCostPaid(rAbility, new ExileSourceFromGraveCost().setText("exile {this}"), "Exile this from your graveyard?").concatBy("Then"));
|
||||
this.addAbility(ability);
|
||||
}
|
||||
|
||||
|
|
|
@ -28,7 +28,7 @@ public final class GlisteningGoremonger extends CardImpl {
|
|||
this.nightCard = true;
|
||||
|
||||
// When Glistening Goremonger dies, each opponent sacrifices an artifact or creature.
|
||||
this.addAbility(new DiesSourceTriggeredAbility(new SacrificeOpponentsEffect(StaticFilters.FILTER_PERMANENT_ARTIFACT_CREATURE)));
|
||||
this.addAbility(new DiesSourceTriggeredAbility(new SacrificeOpponentsEffect(StaticFilters.FILTER_PERMANENT_ARTIFACT_OR_CREATURE)));
|
||||
}
|
||||
|
||||
private GlisteningGoremonger(final GlisteningGoremonger card) {
|
||||
|
|
|
@ -51,7 +51,7 @@ public final class GraftedButcher extends CardImpl {
|
|||
|
||||
// {3}{B}, Sacrifice an artifact or creature: Return Grafted Butcher from your graveyard to the battlefield. Activate only as a sorcery.
|
||||
Ability ability = new ActivateAsSorceryActivatedAbility(
|
||||
Zone.GRAVEYARD, new ReturnSourceFromGraveyardToBattlefieldEffect(), new ManaCostsImpl<>("{3}{B}")
|
||||
Zone.GRAVEYARD, new ReturnSourceFromGraveyardToBattlefieldEffect(false, false), new ManaCostsImpl<>("{3}{B}")
|
||||
);
|
||||
ability.addCost(new SacrificeTargetCost(StaticFilters.FILTER_CONTROLLED_ARTIFACT_OR_CREATURE_SHORT_TEXT));
|
||||
this.addAbility(ability);
|
||||
|
|
|
@ -65,7 +65,7 @@ class HaloChargedSkaabEffect extends OneShotEffect {
|
|||
|
||||
HaloChargedSkaabEffect() {
|
||||
super(Outcome.Benefit);
|
||||
staticText = "then you may put an instant, sorcery, or battle card from your graveyard on top of your library";
|
||||
staticText = "Then you may put an instant, sorcery, or battle card from your graveyard on top of your library";
|
||||
}
|
||||
|
||||
private HaloChargedSkaabEffect(final HaloChargedSkaabEffect effect) {
|
||||
|
|
|
@ -4,27 +4,24 @@ import mage.MageInt;
|
|||
import mage.abilities.Ability;
|
||||
import mage.abilities.SpellAbility;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.dynamicvalue.DynamicValue;
|
||||
import mage.abilities.effects.common.continuous.CastAsThoughItHadFlashAllEffect;
|
||||
import mage.abilities.effects.common.cost.CostModificationEffectImpl;
|
||||
import mage.abilities.effects.common.cost.SpellsCostReductionControllerEffect;
|
||||
import mage.abilities.keyword.TransformAbility;
|
||||
import mage.cards.Card;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.*;
|
||||
import mage.counters.CounterType;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.filter.FilterCard;
|
||||
import mage.filter.common.FilterNonlandCard;
|
||||
import mage.game.Game;
|
||||
import mage.players.Player;
|
||||
import mage.util.CardUtil;
|
||||
import mage.watchers.common.CardsDrawnThisTurnWatcher;
|
||||
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
import java.util.UUID;
|
||||
|
||||
public class HeliodTheWarpedEclipse extends CardImpl {
|
||||
|
||||
private static final FilterCard filter = new FilterNonlandCard("spells");
|
||||
|
||||
public HeliodTheWarpedEclipse(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT, CardType.CREATURE}, "");
|
||||
this.color.setWhite(true);
|
||||
|
@ -37,9 +34,7 @@ public class HeliodTheWarpedEclipse extends CardImpl {
|
|||
this.nightCard = true;
|
||||
|
||||
//You may cast spells as though they had flash.
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CastAsThoughItHadFlashAllEffect(
|
||||
Duration.WhileOnBattlefield, StaticFilters.FILTER_CARD_NON_LAND
|
||||
)));
|
||||
this.addAbility(new SimpleStaticAbility(new CastAsThoughItHadFlashAllEffect(Duration.WhileOnBattlefield, filter)));
|
||||
|
||||
//Spells you cast cost {1} less to cast for each card your opponents have drawn this turn.
|
||||
this.addAbility(new SimpleStaticAbility(new HeliodTheWarpedEclipseEffect()));
|
||||
|
|
|
@ -48,7 +48,6 @@ public final class KroxaAndKunoros extends CardImpl {
|
|||
new ReturnFromGraveyardToBattlefieldTargetEffect(), false
|
||||
);
|
||||
ability.addTarget(new TargetCardInYourGraveyard(StaticFilters.FILTER_CARD_CREATURE_YOUR_GRAVEYARD));
|
||||
this.addAbility(ability);
|
||||
this.addAbility(new EntersBattlefieldOrAttacksSourceTriggeredAbility(new DoWhenCostPaid(
|
||||
ability, new ExileFromGraveCost(new TargetCardInYourGraveyard(5)),
|
||||
"Exile five cards from your graveyard?"
|
||||
|
|
|
@ -27,7 +27,7 @@ public final class OrderOfTheAlabasterHost extends CardImpl {
|
|||
this.nightCard = true;
|
||||
|
||||
// Whenever Order of the Alabaster Host becomes blocked by a creature, that creature gets -1/-1 until end of turn.
|
||||
this.addAbility(new BecomesBlockedByCreatureTriggeredAbility(new BoostTargetEffect(-1, -1), false));
|
||||
this.addAbility(new BecomesBlockedByCreatureTriggeredAbility(new BoostTargetEffect(-1, -1).setText("that creature gets -1/-1 until end of turn"), false));
|
||||
}
|
||||
|
||||
private OrderOfTheAlabasterHost(final OrderOfTheAlabasterHost card) {
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
|
||||
package mage.cards.p;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
||||
|
@ -12,21 +10,22 @@ import mage.cards.CardSetInfo;
|
|||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Loki
|
||||
*/
|
||||
public final class PhyrexianGargantua extends CardImpl {
|
||||
|
||||
public PhyrexianGargantua(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}{B}");
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{B}{B}");
|
||||
this.subtype.add(SubType.PHYREXIAN);
|
||||
this.subtype.add(SubType.HORROR);
|
||||
|
||||
this.power = new MageInt(4);
|
||||
this.toughness = new MageInt(4);
|
||||
Ability ability = new EntersBattlefieldTriggeredAbility(new DrawCardSourceControllerEffect(2), false);
|
||||
ability.addEffect(new LoseLifeSourceControllerEffect(2));
|
||||
Ability ability = new EntersBattlefieldTriggeredAbility(new DrawCardSourceControllerEffect(2, "you"), false);
|
||||
ability.addEffect(new LoseLifeSourceControllerEffect(2).concatBy("and"));
|
||||
this.addAbility(ability);
|
||||
}
|
||||
|
||||
|
|
|
@ -22,7 +22,7 @@ import java.util.UUID;
|
|||
*/
|
||||
public final class StreetwiseNegotiator extends CardImpl {
|
||||
|
||||
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("this creature");
|
||||
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent();
|
||||
|
||||
static {
|
||||
filter.add(StreetwiseNegotiatorPredicate.instance);
|
||||
|
@ -41,7 +41,8 @@ public final class StreetwiseNegotiator extends CardImpl {
|
|||
this.addAbility(backupAbility);
|
||||
|
||||
// This creature assigns combat damage equal to its toughness rather than its power.
|
||||
backupAbility.addAbility(new SimpleStaticAbility(new CombatDamageByToughnessEffect(filter, false)));
|
||||
backupAbility.addAbility(new SimpleStaticAbility(new CombatDamageByToughnessEffect(filter, false)
|
||||
.setText("this creature assigns combat damage equal to its toughness rather than its power")));
|
||||
}
|
||||
|
||||
private StreetwiseNegotiator(final StreetwiseNegotiator card) {
|
||||
|
|
|
@ -46,7 +46,7 @@ class UnsealTheNecropolisEffect extends OneShotEffect {
|
|||
|
||||
UnsealTheNecropolisEffect() {
|
||||
super(Outcome.Benefit);
|
||||
staticText = "then you return up to two creature cards from your graveyard to your hand";
|
||||
staticText = "Then you return up to two creature cards from your graveyard to your hand";
|
||||
}
|
||||
|
||||
private UnsealTheNecropolisEffect(final UnsealTheNecropolisEffect effect) {
|
||||
|
|
|
@ -41,6 +41,7 @@ public final class UrnOfGodfire extends CardImpl {
|
|||
ability.addCost(new TapSourceCost());
|
||||
ability.addCost(new SacrificeSourceCost());
|
||||
ability.addTarget(new TargetPermanent(filter));
|
||||
this.addAbility(ability);
|
||||
}
|
||||
|
||||
private UrnOfGodfire(final UrnOfGodfire card) {
|
||||
|
|
|
@ -38,7 +38,9 @@ public final class VoldarenThrillseeker extends CardImpl {
|
|||
|
||||
// {1}, Sacrifice this creature: It deals damage equal to its power to any target.
|
||||
Ability ability = new SimpleActivatedAbility(
|
||||
new DamageTargetEffect(xValue, "it"), new GenericManaCost(1)
|
||||
new DamageTargetEffect(xValue)
|
||||
.setText("it deals damage equal to its power to any target"),
|
||||
new GenericManaCost(1)
|
||||
);
|
||||
ability.addCost(new SacrificeSourceCost().setText("sacrifice this creature"));
|
||||
ability.addTarget(new TargetAnyTarget());
|
||||
|
|
|
@ -63,7 +63,7 @@ public class VerifyCardDataTest {
|
|||
|
||||
private static final Logger logger = Logger.getLogger(VerifyCardDataTest.class);
|
||||
|
||||
private static final String FULL_ABILITIES_CHECK_SET_CODE = "40K"; // check all abilities and output cards with wrong abilities texts;
|
||||
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 boolean AUTO_FIX_SAMPLE_DECKS = false; // debug only: auto-fix sample decks by test_checkSampleDecks test run
|
||||
|
|
|
@ -86,7 +86,7 @@ public class MillThenPutInHandEffect extends OneShotEffect {
|
|||
sb.append(CardUtil.numberToText(amount));
|
||||
sb.append(" cards. You may put ");
|
||||
sb.append(filter.getMessage());
|
||||
sb.append(" from among the cards milled this way into your hand");
|
||||
sb.append(" from among the milled cards into your hand");
|
||||
if (otherwiseEffect != null) {
|
||||
sb.append(". If you don't, ");
|
||||
sb.append(otherwiseEffect.getText(mode));
|
||||
|
|
|
@ -87,11 +87,13 @@ public class ReturnFromGraveyardToBattlefieldTargetEffect extends OneShotEffect
|
|||
if (target.getMaxNumberOfTargets() == Integer.MAX_VALUE
|
||||
&& target.getMinNumberOfTargets() == 0) {
|
||||
sb.append("any number of ");
|
||||
} else {
|
||||
if (target.getMaxNumberOfTargets() != target.getNumberOfTargets()) {
|
||||
sb.append("up to ");
|
||||
}
|
||||
sb.append(CardUtil.numberToText(target.getMaxNumberOfTargets())).append(' ');
|
||||
} else if (target.getMaxNumberOfTargets() != target.getNumberOfTargets()) {
|
||||
sb.append("up to ");
|
||||
sb.append(CardUtil.numberToText(target.getMaxNumberOfTargets()));
|
||||
sb.append(' ');
|
||||
} else if (target.getMaxNumberOfTargets() > 1) {
|
||||
sb.append(CardUtil.numberToText(target.getMaxNumberOfTargets()));
|
||||
sb.append(' ');
|
||||
}
|
||||
String targetName = mode.getTargets().get(0).getTargetName();
|
||||
if (!targetName.contains("target ")) {
|
||||
|
|
|
@ -50,11 +50,13 @@ public class TransformTargetEffect extends OneShotEffect {
|
|||
if (target.getMaxNumberOfTargets() == Integer.MAX_VALUE
|
||||
&& target.getMinNumberOfTargets() == 0) {
|
||||
sb.append("any number of ");
|
||||
} else {
|
||||
if (target.getMaxNumberOfTargets() != target.getNumberOfTargets()) {
|
||||
sb.append("up to ");
|
||||
}
|
||||
sb.append(CardUtil.numberToText(target.getMaxNumberOfTargets())).append(' ');
|
||||
} else if (target.getMaxNumberOfTargets() != target.getNumberOfTargets()) {
|
||||
sb.append("up to ");
|
||||
sb.append(CardUtil.numberToText(target.getMaxNumberOfTargets()));
|
||||
sb.append(' ');
|
||||
} else if (target.getMaxNumberOfTargets() > 1) {
|
||||
sb.append(CardUtil.numberToText(target.getMaxNumberOfTargets()));
|
||||
sb.append(' ');
|
||||
}
|
||||
String targetName = mode.getTargets().get(0).getTargetName();
|
||||
if (!targetName.contains("target ")) {
|
||||
|
|
|
@ -69,7 +69,7 @@ public class UntapTargetEffect extends OneShotEffect {
|
|||
sb.append(CardUtil.numberToText(target.getMaxNumberOfTargets()));
|
||||
sb.append(haveTargetWord ? " " : " target ");
|
||||
sb.append(target.getTargetName());
|
||||
if (!target.getTargetName().endsWith("s")) {
|
||||
if (target.getMaxNumberOfTargets() > 1 && !target.getTargetName().endsWith("s")) {
|
||||
sb.append('s');
|
||||
}
|
||||
} else {
|
||||
|
|
|
@ -39,16 +39,16 @@ public class BecomesCreatureTargetEffect extends ContinuousEffectImpl {
|
|||
|
||||
/**
|
||||
* @param token
|
||||
* @param loseAllAbilities loses all creature subtypes, colors and abilities
|
||||
* @param stillALand add rule text, "it's still a land"
|
||||
* @param loseName permanent loses name and gets it from token
|
||||
* @param keepAbilities lose subtypes/colors, but keep abilities (example:
|
||||
* Scale Up)
|
||||
* @param loseAllAbilities loses all creature subtypes, colors and abilities
|
||||
* @param stillALand add rule text, "it's still a land"
|
||||
* @param loseName permanent loses name and gets it from token
|
||||
* @param keepAbilities lose subtypes/colors, but keep abilities (example:
|
||||
* Scale Up)
|
||||
* @param duration
|
||||
* @param loseOtherCardTypes permanent loses other (original) card types, exclusively obtains card types of token
|
||||
*/
|
||||
public BecomesCreatureTargetEffect(Token token, boolean loseAllAbilities, boolean stillALand, Duration duration, boolean loseName,
|
||||
boolean keepAbilities, boolean loseOtherCardTypes) {
|
||||
boolean keepAbilities, boolean loseOtherCardTypes) {
|
||||
super(duration, Outcome.BecomeCreature);
|
||||
this.token = token;
|
||||
this.loseAllAbilities = loseAllAbilities;
|
||||
|
@ -179,10 +179,13 @@ public class BecomesCreatureTargetEffect extends ContinuousEffectImpl {
|
|||
}
|
||||
StringBuilder sb = new StringBuilder();
|
||||
Target target = mode.getTargets().get(0);
|
||||
if (target.getMaxNumberOfTargets() > 1) {
|
||||
if (target.getNumberOfTargets() < target.getMaxNumberOfTargets()) {
|
||||
sb.append("up to ");
|
||||
if (target.getNumberOfTargets() < target.getMaxNumberOfTargets()) {
|
||||
sb.append("up to ");
|
||||
if (target.getMaxNumberOfTargets() == 1) {
|
||||
sb.append("one ");
|
||||
}
|
||||
}
|
||||
if (target.getMaxNumberOfTargets() > 1) {
|
||||
sb.append(CardUtil.numberToText(target.getMaxNumberOfTargets())).append(" target ").append(target.getTargetName());
|
||||
if (loseAllAbilities) {
|
||||
sb.append(" lose all their abilities and ");
|
||||
|
|
|
@ -24,7 +24,7 @@ public class ModifyCountersAddedEffect extends ReplacementEffectImpl {
|
|||
this.filter = filter;
|
||||
this.counterType = counterType;
|
||||
staticText = "if one or more " + (counterType != null ? counterType + " " : "") + "counters would be put on " +
|
||||
CardUtil.addArticle(filter.getMessage()) + " you control, that many plus one " +
|
||||
CardUtil.addArticle(filter.getMessage()) + ", that many plus one " +
|
||||
(counterType != null ? counterType : "of each of those kinds of") + " counters are put on it instead";
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue