mirror of
https://github.com/magefree/mage.git
synced 2026-01-26 21:29:17 -08:00
[OTJ][BIG] Various Fixes (mostly Text)
This commit is contained in:
parent
ea0a2c8528
commit
73287e3878
23 changed files with 39 additions and 26 deletions
|
|
@ -46,7 +46,7 @@ class AnotherRoundEffect extends OneShotEffect {
|
|||
super(Outcome.Benefit);
|
||||
staticText = "Exile any number of creatures you control, "
|
||||
+ "then return them to the battlefield under their owner's control. "
|
||||
+ "Then repeat this process X times.";
|
||||
+ "Then repeat this process X more times.";
|
||||
}
|
||||
|
||||
private AnotherRoundEffect(final AnotherRoundEffect effect) {
|
||||
|
|
|
|||
|
|
@ -31,9 +31,11 @@ public final class ArmoredArmadillo extends CardImpl {
|
|||
this.addAbility(new WardAbility(new ManaCostsImpl<>("{1}")));
|
||||
|
||||
// {3}{W}: Armored Armadillo gets +X/+0 until end of turn, where X is its toughness.
|
||||
this.addAbility(new SimpleActivatedAbility(new BoostSourceEffect(
|
||||
SourcePermanentToughnessValue.getInstance(), StaticValue.get(0), Duration.EndOfTurn
|
||||
), new ManaCostsImpl<>("{3}{W}")));
|
||||
this.addAbility(new SimpleActivatedAbility(
|
||||
new BoostSourceEffect(
|
||||
SourcePermanentToughnessValue.getInstance(), StaticValue.get(0), Duration.EndOfTurn
|
||||
).setText("{this} gets +X/+0 until end of turn, where X is its toughness."),
|
||||
new ManaCostsImpl<>("{3}{W}")));
|
||||
}
|
||||
|
||||
private ArmoredArmadillo(final ArmoredArmadillo card) {
|
||||
|
|
|
|||
|
|
@ -62,7 +62,7 @@ class AssimilationAegisETBEffect extends OneShotEffect {
|
|||
|
||||
AssimilationAegisETBEffect() {
|
||||
super(Outcome.Exile);
|
||||
staticText = "exile up to one other target creature until {this} leaves the battlefield.";
|
||||
staticText = "exile up to one target creature until {this} leaves the battlefield.";
|
||||
}
|
||||
|
||||
private AssimilationAegisETBEffect(final AssimilationAegisETBEffect effect) {
|
||||
|
|
@ -95,7 +95,7 @@ class AssimilationAegisEffect extends OneShotEffect {
|
|||
AssimilationAegisEffect() {
|
||||
super(Outcome.Benefit);
|
||||
staticText = "for as long as {this} remains attached to it, " +
|
||||
"that creature become a copy of a creature exiled with {this}";
|
||||
"that creature becomes a copy of a creature card exiled with {this}";
|
||||
}
|
||||
|
||||
private AssimilationAegisEffect(final AssimilationAegisEffect effect) {
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ import java.util.UUID;
|
|||
*/
|
||||
public final class AvenInterrupter extends CardImpl {
|
||||
|
||||
private static final FilterCard filter = new FilterCard("spells your opponent cast from graveyards or from exile");
|
||||
private static final FilterCard filter = new FilterCard("spells your opponents cast from graveyards or from exile");
|
||||
|
||||
static {
|
||||
filter.add(Predicates.or(
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@ public final class CollectorsCage extends CardImpl {
|
|||
);
|
||||
ability.addCost(new TapSourceCost());
|
||||
ability.addEffect(new ConditionalOneShotEffect(
|
||||
new HideawayPlayEffect(), CovenCondition.instance, "then if you control three or more " +
|
||||
new HideawayPlayEffect(), CovenCondition.instance, "Then if you control three or more " +
|
||||
"creatures with different powers, you may play the exiled card without paying its mana cost"
|
||||
));
|
||||
ability.addTarget(new TargetControlledCreaturePermanent());
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@ public final class DanceOfTheTumbleweeds extends CardImpl {
|
|||
|
||||
// + {1} -- Search your library for a basic land card or a Desert card, put it onto the battlefield, then shuffle.
|
||||
this.getSpellAbility().addEffect(new SearchLibraryPutInPlayEffect(
|
||||
new TargetCardInLibrary(0, 1, filter)
|
||||
new TargetCardInLibrary(filter)
|
||||
));
|
||||
this.getSpellAbility().withFirstModeCost(new GenericManaCost(1));
|
||||
|
||||
|
|
|
|||
|
|
@ -38,6 +38,7 @@ public final class DuelistOfTheMind extends CardImpl {
|
|||
// Duelist of the Mind's power is equal to the number of cards you've drawn this turn.
|
||||
this.addAbility(new SimpleStaticAbility(
|
||||
Zone.ALL, new SetBasePowerSourceEffect(CardsDrawnThisTurnDynamicValue.instance)
|
||||
.setText("{this}'s power is equal to the number of cards you've drawn this turn")
|
||||
).addHint(CardsDrawnThisTurnDynamicValue.getHint()));
|
||||
|
||||
// Whenever you commit a crime, you may draw a card. If you do, discard a card. This ability triggers only once each turn.
|
||||
|
|
|
|||
|
|
@ -72,7 +72,7 @@ class GeralfTheFleshwrightTriggeredAbility extends TriggeredAbilityImpl {
|
|||
|
||||
public GeralfTheFleshwrightTriggeredAbility() {
|
||||
super(Zone.BATTLEFIELD, new CreateTokenEffect(new ZombieRogueToken()));
|
||||
setTriggerPhrase("Whenever you cast a spell during your turn other than your first spell each turn, ");
|
||||
setTriggerPhrase("Whenever you cast a spell during your turn other than your first spell thhat turn, ");
|
||||
}
|
||||
|
||||
private GeralfTheFleshwrightTriggeredAbility(final GeralfTheFleshwrightTriggeredAbility ability) {
|
||||
|
|
@ -178,6 +178,7 @@ class GeralfTheFleshwrightEffect extends OneShotEffect {
|
|||
|
||||
GeralfTheFleshwrightEffect() {
|
||||
super(Outcome.BoostCreature);
|
||||
staticText = "put a +1/+1 counter on it for each other Zombie that entered the battlefield under your control this turn";
|
||||
}
|
||||
|
||||
private GeralfTheFleshwrightEffect(final GeralfTheFleshwrightEffect effect) {
|
||||
|
|
|
|||
|
|
@ -94,6 +94,9 @@ class KambalProfiteeringMayorTriggeredAbility extends TriggeredAbilityImpl {
|
|||
public boolean checkTrigger(GameEvent event, Game game) {
|
||||
ZoneChangeBatchEvent zEvent = (ZoneChangeBatchEvent) event;
|
||||
Player controller = game.getPlayer(this.controllerId);
|
||||
if (controller == null) {
|
||||
return false;
|
||||
}
|
||||
List<UUID> tokensIds = zEvent.getEvents()
|
||||
.stream()
|
||||
.filter(zce -> zce.getToZone() == Zone.BATTLEFIELD // keep enter the battlefield
|
||||
|
|
|
|||
|
|
@ -93,7 +93,7 @@ class LilahUndefeatedSlickshotTriggeredAbility extends TriggeredAbilityImpl {
|
|||
|
||||
@Override
|
||||
public String getRule() {
|
||||
return "Whenever you cast an instant or sorcery spell from your hand, "
|
||||
return "Whenever you cast a multicolored instant or sorcery spell from your hand, "
|
||||
+ "exile that spell instead of putting it into your graveyard as it resolves. "
|
||||
+ "If you do, it becomes plotted.";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ public final class LonghornSharpshooter extends CardImpl {
|
|||
this.addAbility(ReachAbility.getInstance());
|
||||
|
||||
// When Longhorn Sharpshooter becomes plotted, it deals 2 damage to any target.
|
||||
Ability ability = new BecomesPlottedSourceTriggeredAbility(new DamageTargetEffect(2));
|
||||
Ability ability = new BecomesPlottedSourceTriggeredAbility(new DamageTargetEffect(2, "it"));
|
||||
ability.addTarget(new TargetAnyTarget());
|
||||
this.addAbility(ability);
|
||||
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ import mage.abilities.Mode;
|
|||
import mage.abilities.costs.mana.GenericManaCost;
|
||||
import mage.abilities.effects.common.DrawCardTargetEffect;
|
||||
import mage.abilities.effects.common.continuous.BecomesCreatureTargetEffect;
|
||||
import mage.abilities.keyword.SpreeAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
|
|
@ -24,6 +25,8 @@ public final class MetamorphicBlast extends CardImpl {
|
|||
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{U}");
|
||||
|
||||
// Spree
|
||||
this.addAbility(new SpreeAbility(this));
|
||||
|
||||
// + {1} -- Until end of turn, target creature becomes a white Rabbit with base power and toughness 0/1.
|
||||
this.getSpellAbility().addEffect(new BecomesCreatureTargetEffect(new CreatureToken(
|
||||
0, 1, "white Rabbit with base power and toughness 0/1"
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ public final class MirageMesa extends CardImpl {
|
|||
|
||||
// Mirage Mesa enters the battlefield tapped. As it enters, choose a color.
|
||||
Ability ability = new EntersBattlefieldTappedAbility(
|
||||
"{this} enters the battlefield tapped. As it enters, choose a color"
|
||||
"{this} enters the battlefield tapped. As it enters, choose a color."
|
||||
);
|
||||
ability.addEffect(new ChooseColorEffect(Outcome.Benefit));
|
||||
this.addAbility(ability);
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@ class PitilessCarnageEffect extends OneShotEffect {
|
|||
|
||||
PitilessCarnageEffect() {
|
||||
super(Outcome.Benefit);
|
||||
staticText = "sacrifice any number of permanents you control, then that many cards";
|
||||
staticText = "sacrifice any number of permanents you control, then draw that many cards";
|
||||
}
|
||||
|
||||
private PitilessCarnageEffect(final PitilessCarnageEffect effect) {
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ public final class RiseOfTheVarmints extends CardImpl {
|
|||
this.getSpellAbility().addEffect(new CreateTokenEffect(
|
||||
new VarmintToken(),
|
||||
new CardsInControllerGraveyardCount(StaticFilters.FILTER_CARD_CREATURE)
|
||||
));
|
||||
).setText("Create X 2/1 green Varmint creature tokens, where X is the number of creature cards in your graveyard."));
|
||||
|
||||
// Plot {2}{G}
|
||||
this.addAbility(new PlotAbility("{2}{G}"));
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ import java.util.UUID;
|
|||
public final class SimulacrumSynthesizer extends CardImpl {
|
||||
|
||||
private static final FilterPermanent filter =
|
||||
new FilterArtifactPermanent("another artifact with mana value 3 or more");
|
||||
new FilterArtifactPermanent("another artifact with mana value 3 or greater");
|
||||
|
||||
static {
|
||||
filter.add(AnotherPredicate.instance);
|
||||
|
|
|
|||
|
|
@ -51,7 +51,7 @@ public final class SmugglersSurprise extends CardImpl {
|
|||
|
||||
// + {2} -- Mill four cards. You may put up to two creature and/or land cards from among the milled cards into your hand.
|
||||
this.getSpellAbility().addEffect(new MillThenPutInHandEffect(
|
||||
4, filterCard, null, true, 4
|
||||
4, filterCard, null, true, 2
|
||||
));
|
||||
this.getSpellAbility().withFirstModeCost(new GenericManaCost(2));
|
||||
|
||||
|
|
|
|||
|
|
@ -40,8 +40,7 @@ public final class StingerbackTerror extends CardImpl {
|
|||
|
||||
// Stingerback Terror gets -1/-1 for each card in your hand.
|
||||
this.addAbility(new SimpleStaticAbility(new BoostSourceEffect(
|
||||
xValue, xValue, Duration.WhileOnBattlefield,
|
||||
"{this} gets -1/-1 for each card in your hand"
|
||||
xValue, xValue, Duration.WhileOnBattlefield
|
||||
)));
|
||||
|
||||
// Plot {2}{R}
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@ public final class StopCold extends CardImpl {
|
|||
this.addAbility(new EnchantAbility(auraTarget));
|
||||
|
||||
// When Stop Cold enters the battlefield, tap enchanted permanent.
|
||||
this.addAbility(new EntersBattlefieldTriggeredAbility(new TapEnchantedEffect()));
|
||||
this.addAbility(new EntersBattlefieldTriggeredAbility(new TapEnchantedEffect("permanent")));
|
||||
|
||||
// Enchanted permanent loses all abilities and doesn't untap during its controller's untap step.
|
||||
Ability ability = new SimpleStaticAbility(new StopColdEffect());
|
||||
|
|
|
|||
|
|
@ -38,9 +38,10 @@ public final class TinybonesJoinsUp extends CardImpl {
|
|||
|
||||
// Whenever a legendary creature enters the battlefield under your control, any number of target players each mill a card and lose 1 life.
|
||||
ability = new EntersBattlefieldControlledTriggeredAbility(
|
||||
new MillCardsTargetEffect(1), filter
|
||||
new MillCardsTargetEffect(1).setText("any number of target players each mill a card"),
|
||||
filter
|
||||
);
|
||||
ability.addEffect(new LoseLifeTargetEffect(1));
|
||||
ability.addEffect(new LoseLifeTargetEffect(1).setText("and lose 1 life"));
|
||||
ability.addTarget(new TargetPlayer(0, Integer.MAX_VALUE, false));
|
||||
this.addAbility(ability);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ public final class VaultPlunderer extends CardImpl {
|
|||
|
||||
// When Vault Plunderer enters the battlefield, target player draws a card and loses 1 life.
|
||||
Ability ability = new EntersBattlefieldTriggeredAbility(new DrawCardTargetEffect(1));
|
||||
ability.addEffect(new LoseLifeTargetEffect(1).concatBy("and"));
|
||||
ability.addEffect(new LoseLifeTargetEffect(1).setText("and loses 1 life"));
|
||||
ability.addTarget(new TargetPlayer());
|
||||
this.addAbility(ability);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -70,7 +70,7 @@ public class VerifyCardDataTest {
|
|||
|
||||
private static final Logger logger = Logger.getLogger(VerifyCardDataTest.class);
|
||||
|
||||
private static final String FULL_ABILITIES_CHECK_SET_CODES = "WHO;LTC;LCI;LCC;REX"; // check ability text due mtgjson, can use multiple sets like MAT;CMD or * for all
|
||||
private static final String FULL_ABILITIES_CHECK_SET_CODES = "OTJ;BIG"; // check ability text due mtgjson, can use multiple sets like MAT;CMD or * for all
|
||||
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
|
||||
|
|
|
|||
|
|
@ -47,13 +47,16 @@ public class SpellsCostIncreasingAllEffect extends CostModificationEffectImpl {
|
|||
|
||||
private void setText() {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append(filter.getMessage());
|
||||
String filterMessage = filter.getMessage();
|
||||
sb.append(filterMessage);
|
||||
switch (this.targetController) {
|
||||
case YOU:
|
||||
sb.append(" you cast");
|
||||
break;
|
||||
case OPPONENT:
|
||||
sb.append(" your opponents cast");
|
||||
if (!filterMessage.contains("your opponents cast")) {
|
||||
sb.append(" your opponents cast");
|
||||
}
|
||||
break;
|
||||
case ACTIVE:
|
||||
sb.append(" the active player casts");
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue