[BRO] various text fixes

This commit is contained in:
Evan Kranzler 2022-11-08 18:51:01 -05:00
parent 501e769691
commit 7e550f463f
31 changed files with 58 additions and 59 deletions

View file

@ -5,7 +5,7 @@ import mage.abilities.common.PutIntoGraveFromBattlefieldSourceTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.common.AttachEffect;
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
import mage.abilities.effects.common.continuous.BoostEquippedEffect;
import mage.abilities.effects.common.continuous.BoostEnchantedEffect;
import mage.abilities.effects.common.continuous.GainAbilityAttachedEffect;
import mage.abilities.keyword.EnchantAbility;
import mage.abilities.keyword.TrampleAbility;
@ -37,7 +37,7 @@ public final class Audacity extends CardImpl {
this.addAbility(new EnchantAbility(auraTarget));
// Enchanted creature gets +2/+0 and has trample.
Ability ability = new SimpleStaticAbility(new BoostEquippedEffect(2, 2));
Ability ability = new SimpleStaticAbility(new BoostEnchantedEffect(2, 0));
ability.addEffect(new GainAbilityAttachedEffect(
TrampleAbility.getInstance(), AttachmentType.EQUIPMENT
).setText("and has trample"));

View file

@ -43,7 +43,7 @@ public final class BatteryBearer extends CardImpl {
// Creatures you control have "{T}: Add {C}. This mana can't be spent to cast a nonartifact spell."
this.addAbility(new SimpleStaticAbility(new GainAbilityControlledEffect(
new ConditionalColorlessManaAbility(1, PowerstoneToken.makeBuilder()),
Duration.WhileOnBattlefield, StaticFilters.FILTER_PERMANENT_CREATURE
Duration.WhileOnBattlefield, StaticFilters.FILTER_PERMANENT_CREATURES
)));
// Whenever you cast an artifact spell with mana value 6 or greater, draw a card.

View file

@ -34,7 +34,7 @@ public final class BitterReunion extends CardImpl {
// {1}, Sacrifice Bitter Reunion: Creatures you control gain haste until end of turn.
Ability ability = new SimpleActivatedAbility(new GainAbilityControlledEffect(
HasteAbility.getInstance(), Duration.EndOfTurn,
StaticFilters.FILTER_CONTROLLED_CREATURES
StaticFilters.FILTER_PERMANENT_CREATURES
), new GenericManaCost(1));
ability.addCost(new SacrificeSourceCost());
this.addAbility(ability);

View file

@ -57,6 +57,7 @@ public final class BladecoilSerpent extends CardImpl {
ability.addEffect(new ConditionalOneShotEffect(new AddContinuousEffectToGame(
new GainAbilitySourceEffect(HasteAbility.getInstance(), Duration.EndOfTurn)
), BladecoilSerpentCondition.instance, "and haste until end of turn"));
this.addAbility(ability);
}
private BladecoilSerpent(final BladecoilSerpent card) {

View file

@ -39,12 +39,12 @@ public final class ClayChampion extends CardImpl {
null, null, "with three +1/+1 counters on it for each {G}{G} spent to cast it"
));
// When Clay Champion enters the battlefield, choose up to two other creatures you control. For each {W}{W} spent to cast Clay Champion, put a +1/+1 counter on each of them.
// When Clay Champion enters the battlefield, choose up to two other target creatures you control. For each {W}{W} spent to cast Clay Champion, put a +1/+1 counter on each of them.
Ability ability = new EntersBattlefieldTriggeredAbility(
new AddCountersTargetEffect(
CounterType.P1P1.createInstance(0),
EachTwoManaSpentToCastValue.WHITE
).setText("choose up to two other creatures you control. " +
).setText("choose up to two other target creatures you control. " +
"For each {W}{W} spent to cast {this}, put a +1/+1 counter on each of them")
);
ability.addTarget(new TargetPermanent(

View file

@ -49,7 +49,7 @@ public final class DrafnaFounderOfLatNam extends CardImpl {
this.addAbility(ability);
// {3}, {T}: Copy target artifact spell you control.
ability = new SimpleActivatedAbility(new CopyTargetSpellEffect(), new GenericManaCost(3));
ability = new SimpleActivatedAbility(new CopyTargetSpellEffect(false, false, false), new GenericManaCost(3));
ability.addCost(new TapSourceCost());
ability.addTarget(new TargetSpell(filter));
this.addAbility(ability);

View file

@ -34,10 +34,10 @@ public final class FaunaShaman extends CardImpl {
// {G}, {tap}, Discard a creature card: Search your library for a creature card, reveal it, and put it into your hand. Then shuffle your library.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
new SearchLibraryPutInHandEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_CREATURE), true),
new SearchLibraryPutInHandEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_CREATURE_A), true),
new ColoredManaCost(ColoredManaSymbol.G));
ability.addCost(new TapSourceCost());
ability.addCost(new DiscardTargetCost(new TargetCardInHand(StaticFilters.FILTER_CARD_CREATURE)));
ability.addCost(new DiscardTargetCost(new TargetCardInHand(StaticFilters.FILTER_CARD_CREATURE_A)));
this.addAbility(ability);
}

View file

@ -34,7 +34,7 @@ public final class GaeasCourser extends CardImpl {
this.addAbility(new ConditionalInterveningIfTriggeredAbility(
new AttacksTriggeredAbility(new DrawCardSourceControllerEffect(1)),
condition,
"Whenever {this} attacks, if there are there or more creature cards in your graveyard, draw a card."
"Whenever {this} attacks, if there are three or more creature cards in your graveyard, draw a card."
));
}

View file

@ -27,7 +27,7 @@ public final class GixsCaress extends CardImpl {
this.getSpellAbility().addTarget(new TargetOpponent());
// Create a tapped Powerstone token.
this.getSpellAbility().addEffect(new CreateTokenEffect(new PowerstoneToken(), 1, true));
this.getSpellAbility().addEffect(new CreateTokenEffect(new PowerstoneToken(), 1, true).concatBy("<br>"));
}
private GixsCaress(final GixsCaress card) {

View file

@ -56,7 +56,7 @@ public final class HeroOfTheDunes extends CardImpl {
// Creatures you control with mana value 3 or less get +1/+0.
this.addAbility(new SimpleStaticAbility(new BoostAllEffect(
1, 0, Duration.EndOfTurn, filter2, false
1, 0, Duration.WhileOnBattlefield, filter2, false
)));
}

View file

@ -24,9 +24,9 @@ public final class HurkylsFinalMeditation extends CardImpl {
public HurkylsFinalMeditation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{4}{U}{U}{U}");
// As long as its not your turn, this spell costs {3} more to cast.
// As long as it's not your turn, this spell costs {3} more to cast.
this.addAbility(new SimpleStaticAbility(
Zone.ALL, new InfoEffect("as long as its not your turn, this spell costs {3} more to cast")
Zone.ALL, new InfoEffect("as long as it's not your turn, this spell costs {3} more to cast")
));
this.getSpellAbility().setCostAdjuster(HurkylsFinalMeditationAdjuster.instance);

View file

@ -52,6 +52,7 @@ public final class JunkyardGenius extends CardImpl {
HasteAbility.getInstance(), Duration.EndOfTurn,
StaticFilters.FILTER_PERMANENT_CREATURES, true
).setText("and haste"));
this.addAbility(ability);
}
private JunkyardGenius(final JunkyardGenius card) {

View file

@ -37,8 +37,7 @@ public final class LevitatingStatue extends CardImpl {
// {2}: Levitating Statue becomes a 1/1 Construct artifact creature until end of turn.
this.addAbility(new SimpleActivatedAbility(new BecomesCreatureSourceEffect(
new CreatureToken(
1, 1, "1/1 Construct artifact " +
"creature until end of turn", SubType.CONSTRUCT
1, 1, "1/1 Construct artifact creature", SubType.CONSTRUCT
).withType(CardType.ARTIFACT), "", Duration.EndOfTurn
), new GenericManaCost(2)));
}

View file

@ -22,7 +22,7 @@ import java.util.UUID;
public final class LoranDiscipleOfHistory extends CardImpl {
private static final FilterPermanent filter
= new FilterControlledCreaturePermanent("another legendary creature");
= new FilterControlledCreaturePermanent("legendary creature");
static {
filter.add(SuperType.LEGENDARY.getPredicate());

View file

@ -11,7 +11,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Zone;
import mage.filter.StaticFilters;
import mage.filter.common.FilterArtifactCreaturePermanent;
import mage.target.common.TargetNonlandPermanent;
import java.util.UUID;
@ -21,8 +21,9 @@ import java.util.UUID;
*/
public final class MachineOverMatter extends CardImpl {
private static final Condition condition
= new PermanentsOnTheBattlefieldCondition(StaticFilters.FILTER_PERMANENT_ARTIFACT_CREATURE);
private static final Condition condition = new PermanentsOnTheBattlefieldCondition(
new FilterArtifactCreaturePermanent("you control an artifact creature")
);
private static final Hint hint = new ConditionHint(condition, "You control an artifact creature");
public MachineOverMatter(UUID ownerId, CardSetInfo setInfo) {

View file

@ -17,7 +17,7 @@ public final class MassProduction extends CardImpl {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{5}{W}");
// Create four 1/1 colorless Soldier artifact creature tokens.
this.getSpellAbility().addEffect(new CreateTokenEffect(new SoldierArtifactToken()));
this.getSpellAbility().addEffect(new CreateTokenEffect(new SoldierArtifactToken(), 4));
}
private MassProduction(final MassProduction card) {

View file

@ -28,7 +28,7 @@ public final class PainfulQuandary extends CardImpl {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{B}{B}");
// Whenever an opponent casts a spell, that player loses 5 life unless they discard a card.
this.addAbility(new SpellCastOpponentTriggeredAbility(Zone.BATTLEFIELD, new PainfulQuandryEffect(), StaticFilters.FILTER_SPELL, false, SetTargetPointer.PLAYER));
this.addAbility(new SpellCastOpponentTriggeredAbility(Zone.BATTLEFIELD, new PainfulQuandryEffect(), StaticFilters.FILTER_SPELL_A, false, SetTargetPointer.PLAYER));
}
private PainfulQuandary(final PainfulQuandary card) {

View file

@ -24,7 +24,7 @@ import java.util.UUID;
public final class SkystrikeOfficer extends CardImpl {
private static final FilterControlledPermanent filter
= new FilterControlledPermanent(SubType.SOLDIER, "untapped Soldiers");
= new FilterControlledPermanent(SubType.SOLDIER, "untapped Soldiers you control");
static {
filter.add(TappedPredicate.UNTAPPED);

View file

@ -31,7 +31,7 @@ public final class SplittingThePowerstone extends CardImpl {
this.getSpellAbility().addCost(new SacrificeTargetCost(StaticFilters.FILTER_CONTROLLED_PERMANENT_ARTIFACT_AN));
// Create two tapped Powerstone tokens. If the sacrificed artifact was legendary, draw a card.
this.getSpellAbility().addEffect(new CreateTokenEffect(new PowerstoneToken(), 2, false));
this.getSpellAbility().addEffect(new CreateTokenEffect(new PowerstoneToken(), 2, true));
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(
new DrawCardSourceControllerEffect(1), SplittingThePowerstoneCondition.instance,
"If the sacrificed artifact was legendary, draw a card"

View file

@ -46,7 +46,7 @@ public final class TawnosTheToymaker extends CardImpl {
this.toughness = new MageInt(5);
// Whenever you cast a Beast or Bird creature spell, you may copy it, except it's an artifact in addition to its other types.
this.addAbility(new SpellCastControllerTriggeredAbility(new TawnosTheToymakerEffect(), filter, false));
this.addAbility(new SpellCastControllerTriggeredAbility(new TawnosTheToymakerEffect(), filter, true));
}
private TawnosTheToymaker(final TawnosTheToymaker card) {

View file

@ -44,7 +44,7 @@ public final class TeferiTemporalPilgrim extends CardImpl {
// -2: Create a 2/2 blue Spirit creature token with vigilance and "Whenever you draw a card, put a +1/+1 counter on this creature."
this.addAbility(new LoyaltyAbility(new CreateTokenEffect(new SpiritTeferiToken()), -2));
// -12: Target opponent chooses a permanent they control and returns it to its owner's had. Then they shuffle each nonland permanent they control into its owner's library.
// -12: Target opponent chooses a permanent they control and returns it to its owner's hand. Then they shuffle each nonland permanent they control into its owner's library.
Ability ability = new LoyaltyAbility(new TeferiTemporalPilgrimEffect(), -12);
ability.addTarget(new TargetOpponent());
this.addAbility(ability);
@ -64,7 +64,7 @@ class TeferiTemporalPilgrimEffect extends OneShotEffect {
public TeferiTemporalPilgrimEffect() {
super(Outcome.Removal);
this.staticText = "Target opponent chooses a permanent they control and returns it to its owner's had. Then they shuffle each nonland permanent they control into its owner's library.";
this.staticText = "Target opponent chooses a permanent they control and returns it to its owner's hand. Then they shuffle each nonland permanent they control into its owner's library.";
}
private TeferiTemporalPilgrimEffect(final TeferiTemporalPilgrimEffect effect) {

View file

@ -45,7 +45,7 @@ public final class TheMightstoneAndWeakstone extends CardImpl {
// (Melds with Urza, Lord Protector)
this.addAbility(new SimpleStaticAbility(
Zone.ALL, new InfoEffect("<i>(Melds with Urza, Lord Protector)</i>")
Zone.ALL, new InfoEffect("<i>(Melds with Urza, Lord Protector.)</i>")
));
}

View file

@ -32,6 +32,9 @@ public final class TitaniasCommand extends CardImpl {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{G}{G}");
// Choose two --
this.getSpellAbility().getModes().setMinModes(2);
this.getSpellAbility().getModes().setMaxModes(2);
// * Exile target player's graveyard. You gain 1 life for each card exiled this way.
this.getSpellAbility().addEffect(new TitaniasCommandEffect());
this.getSpellAbility().addTarget(new TargetPlayer());

View file

@ -36,11 +36,11 @@ public final class WeakstonesSubjugation extends CardImpl {
// When Weakstone's Subjugation's enters the battlefield, you may pay {3}. If you do, tap enchanted permanent.
this.addAbility(new EntersBattlefieldTriggeredAbility(new DoIfCostPaid(
new TapEnchantedEffect("creature"), new GenericManaCost(3)
new TapEnchantedEffect("permanent"), new GenericManaCost(3)
)));
// Enchanted permanent doesn't untap during its controller's untap step.
this.addAbility(new SimpleStaticAbility(new DontUntapInControllersUntapStepEnchantedEffect()));
this.addAbility(new SimpleStaticAbility(new DontUntapInControllersUntapStepEnchantedEffect("permanent")));
}
private WeakstonesSubjugation(final WeakstonesSubjugation card) {

View file

@ -28,7 +28,9 @@ public final class YotianTactician extends CardImpl {
this.toughness = new MageInt(4);
// Other Soldiers you control get +1/+1.
this.addAbility(new SimpleStaticAbility(new BoostControlledEffect(1, 1, Duration.EndOfTurn, filter)));
this.addAbility(new SimpleStaticAbility(new BoostControlledEffect(
1, 1, Duration.WhileOnBattlefield, filter, true
)));
}
private YotianTactician(final YotianTactician card) {

View file

@ -60,7 +60,7 @@ public class VerifyCardDataTest {
private static final Logger logger = Logger.getLogger(VerifyCardDataTest.class);
private static final String FULL_ABILITIES_CHECK_SET_CODE = "GN3"; // check all abilities and output cards with wrong abilities texts;
private static final String FULL_ABILITIES_CHECK_SET_CODE = "BRO"; // 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
private static final boolean ONLY_TEXT = false; // use when checking text locally, suppresses unnecessary checks and output messages

View file

@ -1,7 +1,6 @@
package mage.abilities.effects.common;
import java.util.List;
import mage.MageObject;
import mage.abilities.Ability;
import mage.abilities.effects.OneShotEffect;
@ -9,8 +8,9 @@ import mage.constants.Outcome;
import mage.game.Game;
import mage.game.command.Emblem;
import java.util.List;
/**
*
* @author nantuko
*/
public class GetEmblemEffect extends OneShotEffect {
@ -47,18 +47,12 @@ public class GetEmblemEffect extends OneShotEffect {
StringBuilder sb = new StringBuilder();
sb.append("you get an emblem with \"");
List<String> rules = emblem.getAbilities().getRules(null);
if (rules.size() == 1) {
for (String s : rules) {
sb.append(s);
}
sb.append('"');
} else if (rules.size() == 2) {
for (String s : rules) {
sb.append(s);
sb.append("\" and \"");
}
sb.append('"');
sb.append(rules.get(0));
if (rules.size() == 2) {
sb.append("\" and \"");
sb.append(rules.get(1));
}
sb.append('"');
return sb.toString();
}
}

View file

@ -9,6 +9,7 @@ import mage.constants.Outcome;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.players.Player;
import mage.util.CardUtil;
/**
*
@ -21,7 +22,7 @@ public class TapSourceUnlessPaysEffect extends OneShotEffect {
public TapSourceUnlessPaysEffect(Cost cost) {
super(Outcome.Tap);
this.cost = cost;
staticText = "tap {this} unless you " + cost.getText();
staticText = "tap {this} unless you " + CardUtil.addCostVerb(cost.getText());
}
public TapSourceUnlessPaysEffect(final TapSourceUnlessPaysEffect effect) {

View file

@ -113,6 +113,6 @@ public class BecomesColorSourceEffect extends ContinuousEffectImpl {
return staticText;
}
return "{this} becomes " + (setColor == null ? "the color of your choice" : setColor.getDescription())
+ ' ' + duration.toString();
+ (' ' + duration.toString()).trim();
}
}

View file

@ -1,7 +1,3 @@
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package mage.abilities.effects.common.continuous;
import mage.abilities.Ability;
@ -14,7 +10,6 @@ import mage.game.Game;
import mage.game.permanent.Permanent;
/**
*
* @author Noahsark
*/
public class LoseAbilitySourceEffect extends ContinuousEffectImpl {
@ -28,7 +23,7 @@ public class LoseAbilitySourceEffect extends ContinuousEffectImpl {
public LoseAbilitySourceEffect(Ability ability, Duration duration) {
super(duration, Layer.AbilityAddingRemovingEffects_6, SubLayer.NA, Outcome.LoseAbility);
this.ability = ability;
staticText = "{this} loses " + ability.getRule() + ' ' + duration.toString();
staticText = ("{this} loses " + ability.getRule() + ' ' + duration.toString()).trim();
}
public LoseAbilitySourceEffect(final LoseAbilitySourceEffect effect) {

View file

@ -1,6 +1,5 @@
package mage.game.command.emblems;
import mage.abilities.Ability;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.common.continuous.BoostControlledEffect;
import mage.abilities.effects.common.cost.SpellsCostReductionControllerEffect;
@ -18,15 +17,18 @@ public final class SaheeliFiligreeMasterEmblem extends Emblem {
public SaheeliFiligreeMasterEmblem() {
this.setName("Emblem Saheeli");
this.setExpansionSetCodeForImage("BRO");
Ability ability = new SimpleStaticAbility(
this.getAbilities().add(new SimpleStaticAbility(
Zone.COMMAND,
new BoostControlledEffect(
1, 1, Duration.EndOfGame,
StaticFilters.FILTER_PERMANENT_ARTIFACT_CREATURE
).setText("Artifact creatures you control get +1/+1")
);
ability.addEffect(new SpellsCostReductionControllerEffect(StaticFilters.FILTER_CARD_ARTIFACT, 1)
.setText("Artifact spells you cast cost {1} less to cast"));
this.getAbilities().add(ability);
));
this.getAbilities().add(new SimpleStaticAbility(
Zone.COMMAND,
new SpellsCostReductionControllerEffect(
StaticFilters.FILTER_CARD_ARTIFACT, 1
).setText("Artifact spells you cast cost {1} less to cast")
));
}
}