mirror of
https://github.com/magefree/mage.git
synced 2025-12-20 10:40:06 -08:00
[WOE] text fixes
This commit is contained in:
parent
1107fb5770
commit
ed4a1bf33f
37 changed files with 64 additions and 55 deletions
|
|
@ -11,6 +11,7 @@ import mage.abilities.keyword.LifelinkAbility;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
|
import mage.target.common.TargetCreaturePermanent;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
|
|
@ -34,6 +35,7 @@ public final class ArchonsGlory extends CardImpl {
|
||||||
), BargainedCondition.instance, "if this spell was bargained, " +
|
), BargainedCondition.instance, "if this spell was bargained, " +
|
||||||
"that creature also gains flying and lifelink until end of turn"
|
"that creature also gains flying and lifelink until end of turn"
|
||||||
));
|
));
|
||||||
|
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
|
||||||
}
|
}
|
||||||
|
|
||||||
private ArchonsGlory(final ArchonsGlory card) {
|
private ArchonsGlory(final ArchonsGlory card) {
|
||||||
|
|
|
||||||
|
|
@ -48,7 +48,7 @@ public final class BarrowNaughty extends CardImpl {
|
||||||
// Barrow Naughty has lifelink as long as you control another Faerie.
|
// Barrow Naughty has lifelink as long as you control another Faerie.
|
||||||
this.addAbility(new SimpleStaticAbility(new ConditionalContinuousEffect(
|
this.addAbility(new SimpleStaticAbility(new ConditionalContinuousEffect(
|
||||||
new GainAbilitySourceEffect(LifelinkAbility.getInstance()), condition,
|
new GainAbilitySourceEffect(LifelinkAbility.getInstance()), condition,
|
||||||
"has lifelink as long as you control another Faerie"
|
"{this} has lifelink as long as you control another Faerie"
|
||||||
)));
|
)));
|
||||||
|
|
||||||
// {2}{B}: Barrow Naughty gets +1/+0 until end of turn.
|
// {2}{B}: Barrow Naughty gets +1/+0 until end of turn.
|
||||||
|
|
|
||||||
|
|
@ -49,7 +49,7 @@ public final class BraveTheWilds extends CardImpl {
|
||||||
// Search your library for a basic land card, reveal it, put it into your hand, then shuffle.
|
// Search your library for a basic land card, reveal it, put it into your hand, then shuffle.
|
||||||
this.getSpellAbility().addEffect(new SearchLibraryPutInHandEffect(
|
this.getSpellAbility().addEffect(new SearchLibraryPutInHandEffect(
|
||||||
new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true
|
new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true
|
||||||
));
|
).concatBy("<br>"));
|
||||||
}
|
}
|
||||||
|
|
||||||
private BraveTheWilds(final BraveTheWilds card) {
|
private BraveTheWilds(final BraveTheWilds card) {
|
||||||
|
|
|
||||||
|
|
@ -54,7 +54,7 @@ public final class CallousSellSword extends AdventureCard {
|
||||||
this.getSpellCard().getSpellAbility().addEffect(new DamageWithPowerFromOneToAnotherTargetEffect());
|
this.getSpellCard().getSpellAbility().addEffect(new DamageWithPowerFromOneToAnotherTargetEffect());
|
||||||
this.getSpellCard().getSpellAbility().addTarget(new TargetControlledCreaturePermanent().setTargetTag(1));
|
this.getSpellCard().getSpellAbility().addTarget(new TargetControlledCreaturePermanent().setTargetTag(1));
|
||||||
this.getSpellCard().getSpellAbility().addTarget(new TargetAnyTarget().setTargetTag(2));
|
this.getSpellCard().getSpellAbility().addTarget(new TargetAnyTarget().setTargetTag(2));
|
||||||
this.getSpellCard().getSpellAbility().addEffect(new CallousSellSwordSacrificeFirstTargetEffect().concatBy(". Then"));
|
this.getSpellCard().getSpellAbility().addEffect(new CallousSellSwordSacrificeFirstTargetEffect().concatBy("Then"));
|
||||||
}
|
}
|
||||||
|
|
||||||
private CallousSellSword(final CallousSellSword card) {
|
private CallousSellSword(final CallousSellSword card) {
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,7 @@ import java.util.UUID;
|
||||||
*/
|
*/
|
||||||
public final class CruelSomnophage extends AdventureCard {
|
public final class CruelSomnophage extends AdventureCard {
|
||||||
|
|
||||||
private static final DynamicValue xValue = new CardsInAllGraveyardsCount(StaticFilters.FILTER_CARD_CREATURE);
|
private static final DynamicValue xValue = new CardsInAllGraveyardsCount(StaticFilters.FILTER_CARD_CREATURES);
|
||||||
|
|
||||||
public CruelSomnophage(UUID ownerId, CardSetInfo setInfo) {
|
public CruelSomnophage(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, new CardType[]{CardType.SORCERY}, "{1}{B}", "Can't Wake Up", "{1}{U}");
|
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, new CardType[]{CardType.SORCERY}, "{1}{B}", "Can't Wake Up", "{1}{U}");
|
||||||
|
|
|
||||||
|
|
@ -38,7 +38,7 @@ class EerieInterferenceEffect extends PreventionEffectImpl {
|
||||||
|
|
||||||
EerieInterferenceEffect() {
|
EerieInterferenceEffect() {
|
||||||
super(Duration.EndOfTurn, Integer.MAX_VALUE, false, false);
|
super(Duration.EndOfTurn, Integer.MAX_VALUE, false, false);
|
||||||
staticText = "prevent all damage that would be dealt to you and creatures you control by creatures this turn";
|
staticText = "prevent all damage that would be dealt to you and creatures you control this turn by creatures";
|
||||||
}
|
}
|
||||||
|
|
||||||
private EerieInterferenceEffect(final EerieInterferenceEffect effect) {
|
private EerieInterferenceEffect(final EerieInterferenceEffect effect) {
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,7 @@ import mage.constants.Duration;
|
||||||
*/
|
*/
|
||||||
public final class ErietteOfTheCharmedApple extends CardImpl {
|
public final class ErietteOfTheCharmedApple extends CardImpl {
|
||||||
|
|
||||||
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures enchanted by an Aura you control");
|
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("each creature that's enchanted by an Aura you control");
|
||||||
private static final DynamicValue count = new PermanentsOnBattlefieldCount(new FilterControlledPermanent(SubType.AURA));
|
private static final DynamicValue count = new PermanentsOnBattlefieldCount(new FilterControlledPermanent(SubType.AURA));
|
||||||
|
|
||||||
static {
|
static {
|
||||||
|
|
@ -48,8 +48,10 @@ public final class ErietteOfTheCharmedApple extends CardImpl {
|
||||||
this.addAbility(new SimpleStaticAbility(new CantAttackYouAllEffect(Duration.WhileOnBattlefield, filter, true)));
|
this.addAbility(new SimpleStaticAbility(new CantAttackYouAllEffect(Duration.WhileOnBattlefield, filter, true)));
|
||||||
|
|
||||||
// At the beginning of your end step, each opponent loses X life and you gain X life, where X is the number of Auras you control.
|
// At the beginning of your end step, each opponent loses X life and you gain X life, where X is the number of Auras you control.
|
||||||
Ability ability = new BeginningOfEndStepTriggeredAbility(new LoseLifeOpponentsEffect(count), TargetController.YOU, false);
|
Ability ability = new BeginningOfEndStepTriggeredAbility(new LoseLifeOpponentsEffect(count)
|
||||||
ability.addEffect(new GainLifeEffect(count));
|
.setText("each opponent loses X life"), TargetController.YOU, false);
|
||||||
|
ability.addEffect(new GainLifeEffect(count)
|
||||||
|
.setText("and you gain X life, where X is the number of Auras you control"));
|
||||||
ability.addHint(new ValueHint("Number of Auras you control", count));
|
ability.addHint(new ValueHint("Number of Auras you control", count));
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -51,7 +51,7 @@ class FaerieFencingEffect extends OneShotEffect {
|
||||||
|
|
||||||
FaerieFencingEffect() {
|
FaerieFencingEffect() {
|
||||||
super(Outcome.UnboostCreature);
|
super(Outcome.UnboostCreature);
|
||||||
this.staticText = "target creature gets -X/-X until end of turn. It gets an additional -3/-3 if you controlled a Faerie as you cast this spell.";
|
this.staticText = "target creature gets -X/-X until end of turn. That creature gets an additional -3/-3 if you controlled a Faerie as you cast this spell.";
|
||||||
}
|
}
|
||||||
|
|
||||||
private FaerieFencingEffect(final FaerieFencingEffect effect) {
|
private FaerieFencingEffect(final FaerieFencingEffect effect) {
|
||||||
|
|
|
||||||
|
|
@ -35,7 +35,7 @@ public final class GallantPieWielder extends CardImpl {
|
||||||
// Celebration -- Gallant Pie-Wielder has double strike as long as two or more nonland permanents entered the battlefield under your control this turn.
|
// Celebration -- Gallant Pie-Wielder has double strike as long as two or more nonland permanents entered the battlefield under your control this turn.
|
||||||
this.addAbility(new SimpleStaticAbility(new ConditionalContinuousEffect(
|
this.addAbility(new SimpleStaticAbility(new ConditionalContinuousEffect(
|
||||||
new GainAbilitySourceEffect(DoubleStrikeAbility.getInstance()),
|
new GainAbilitySourceEffect(DoubleStrikeAbility.getInstance()),
|
||||||
CelebrationCondition.instance, "{this} as double strike as long as two or " +
|
CelebrationCondition.instance, "{this} has double strike as long as two or " +
|
||||||
"more nonland permanents entered the battlefield under your control this turn"
|
"more nonland permanents entered the battlefield under your control this turn"
|
||||||
)).addHint(CelebrationCondition.getHint()).setAbilityWord(AbilityWord.CELEBRATION), new CelebrationWatcher());
|
)).addHint(CelebrationCondition.getHint()).setAbilityWord(AbilityWord.CELEBRATION), new CelebrationWatcher());
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -52,7 +52,7 @@ public final class GretaSweettoothScourge extends CardImpl {
|
||||||
|
|
||||||
// {1}{B}, Sacrifice a Food: You draw a card and you lose 1 life.
|
// {1}{B}, Sacrifice a Food: You draw a card and you lose 1 life.
|
||||||
ability = new SimpleActivatedAbility(
|
ability = new SimpleActivatedAbility(
|
||||||
new DrawCardSourceControllerEffect(1),
|
new DrawCardSourceControllerEffect(1, "you"),
|
||||||
new ManaCostsImpl<>("{1}{B}")
|
new ManaCostsImpl<>("{1}{B}")
|
||||||
);
|
);
|
||||||
ability.addCost(new SacrificeTargetCost(new TargetControlledPermanent(StaticFilters.FILTER_CONTROLLED_FOOD)));
|
ability.addCost(new SacrificeTargetCost(new TargetControlledPermanent(StaticFilters.FILTER_CONTROLLED_FOOD)));
|
||||||
|
|
|
||||||
|
|
@ -49,6 +49,8 @@ public final class HearthElemental extends AdventureCard {
|
||||||
// This spell costs X less to cast, where X is the number of cards in your graveyard that are instant cards, sorcery cards, and/or have an Adventure.
|
// This spell costs X less to cast, where X is the number of cards in your graveyard that are instant cards, sorcery cards, and/or have an Adventure.
|
||||||
Ability ability = new SimpleStaticAbility(
|
Ability ability = new SimpleStaticAbility(
|
||||||
Zone.ALL, new SpellCostReductionForEachSourceEffect(1, xValue)
|
Zone.ALL, new SpellCostReductionForEachSourceEffect(1, xValue)
|
||||||
|
.setText("This spell costs {X} less to cast, where X is the number of cards in your graveyard " +
|
||||||
|
"that are instant cards, sorcery cards, and/or have an Adventure")
|
||||||
).addHint(hint);
|
).addHint(hint);
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -47,7 +47,7 @@ public final class HornedLochWhale extends AdventureCard {
|
||||||
// Horned Loch-Whale enters the battlefield tapped unless it's your turn.
|
// Horned Loch-Whale enters the battlefield tapped unless it's your turn.
|
||||||
this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(
|
this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(
|
||||||
new TapSourceEffect(true), NotMyTurnCondition.instance,
|
new TapSourceEffect(true), NotMyTurnCondition.instance,
|
||||||
"{this} enters the battlefield tapped unless it's your turn"
|
"tapped unless it's your turn"
|
||||||
)));
|
)));
|
||||||
|
|
||||||
// Lagoon Breach
|
// Lagoon Breach
|
||||||
|
|
|
||||||
|
|
@ -47,7 +47,7 @@ public final class HyldaOfTheIcyCrown extends CardImpl {
|
||||||
|
|
||||||
// * Scry 2, then draw a card.
|
// * Scry 2, then draw a card.
|
||||||
Mode mode = new Mode(new ScryEffect(2, false));
|
Mode mode = new Mode(new ScryEffect(2, false));
|
||||||
mode.addEffect(new DrawCardSourceControllerEffect(1));
|
mode.addEffect(new DrawCardSourceControllerEffect(1).concatBy(", then"));
|
||||||
delayed.addMode(mode);
|
delayed.addMode(mode);
|
||||||
|
|
||||||
this.addAbility(new TapUntappedPermanentTriggeredAbility(
|
this.addAbility(new TapUntappedPermanentTriggeredAbility(
|
||||||
|
|
|
||||||
|
|
@ -63,7 +63,8 @@ class ImodaneThePyrohammerTriggeredAbility extends TriggeredAbilityImpl {
|
||||||
private static final Hint hint = new ValuePositiveHint("Damage dealt to the target", ImodaneThePyrohammerDynamicValue.instance);
|
private static final Hint hint = new ValuePositiveHint("Damage dealt to the target", ImodaneThePyrohammerDynamicValue.instance);
|
||||||
|
|
||||||
ImodaneThePyrohammerTriggeredAbility() {
|
ImodaneThePyrohammerTriggeredAbility() {
|
||||||
super(Zone.BATTLEFIELD, new DamagePlayersEffect(Outcome.Damage, ImodaneThePyrohammerDynamicValue.instance, TargetController.OPPONENT), false);
|
super(Zone.BATTLEFIELD, new DamagePlayersEffect(Outcome.Damage, ImodaneThePyrohammerDynamicValue.instance, TargetController.OPPONENT)
|
||||||
|
.setText("{this} deals that much damage to each opponent"), false);
|
||||||
setTriggerPhrase("Whenever an instant or sorcery spell you control that targets only a single creature deals damage to that creature, ");
|
setTriggerPhrase("Whenever an instant or sorcery spell you control that targets only a single creature deals damage to that creature, ");
|
||||||
addHint(hint);
|
addHint(hint);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,7 @@ public final class MonstrousRage extends CardImpl {
|
||||||
// Target creature gets +2/+0 until end of turn. Create a Monster Role attached to it.
|
// Target creature gets +2/+0 until end of turn. Create a Monster Role attached to it.
|
||||||
this.getSpellAbility().addEffect(new BoostTargetEffect(2, 0));
|
this.getSpellAbility().addEffect(new BoostTargetEffect(2, 0));
|
||||||
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
|
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
|
||||||
this.getSpellAbility().addEffect(new CreateRoleAttachedTargetEffect(RoleType.MONSTER).setText("create a Monster Role attached to it"));
|
this.getSpellAbility().addEffect(new CreateRoleAttachedTargetEffect(RoleType.MONSTER).setText("create a Monster Role token attached to it"));
|
||||||
}
|
}
|
||||||
|
|
||||||
private MonstrousRage(final MonstrousRage card) {
|
private MonstrousRage(final MonstrousRage card) {
|
||||||
|
|
|
||||||
|
|
@ -37,7 +37,7 @@ public final class MoonshakerCavalry extends CardImpl {
|
||||||
Ability ability = new EntersBattlefieldTriggeredAbility(new GainAbilityControlledEffect(
|
Ability ability = new EntersBattlefieldTriggeredAbility(new GainAbilityControlledEffect(
|
||||||
FlyingAbility.getInstance(), Duration.EndOfTurn,
|
FlyingAbility.getInstance(), Duration.EndOfTurn,
|
||||||
StaticFilters.FILTER_PERMANENT_CREATURES
|
StaticFilters.FILTER_PERMANENT_CREATURES
|
||||||
));
|
).setText("creatures you control gain flying"));
|
||||||
ability.addEffect(new BoostControlledEffect(
|
ability.addEffect(new BoostControlledEffect(
|
||||||
CreaturesYouControlCount.instance, CreaturesYouControlCount.instance, Duration.EndOfTurn
|
CreaturesYouControlCount.instance, CreaturesYouControlCount.instance, Duration.EndOfTurn
|
||||||
).setText("and get +X/+X until end of turn, where X is the number of creatures you control"));
|
).setText("and get +X/+X until end of turn, where X is the number of creatures you control"));
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,9 @@ import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.Duration;
|
import mage.constants.Duration;
|
||||||
|
import mage.constants.SubType;
|
||||||
import mage.filter.StaticFilters;
|
import mage.filter.StaticFilters;
|
||||||
|
import mage.filter.common.FilterControlledPermanent;
|
||||||
import mage.game.permanent.token.FoodToken;
|
import mage.game.permanent.token.FoodToken;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
@ -29,7 +31,9 @@ import java.util.UUID;
|
||||||
*/
|
*/
|
||||||
public final class NightOfTheSweetsRevenge extends CardImpl {
|
public final class NightOfTheSweetsRevenge extends CardImpl {
|
||||||
|
|
||||||
private static final DynamicValue xValue = new PermanentsOnBattlefieldCount(StaticFilters.FILTER_CONTROLLED_FOOD);
|
private static final FilterControlledPermanent filter = new FilterControlledPermanent(SubType.FOOD, "Foods");
|
||||||
|
|
||||||
|
private static final DynamicValue xValue = new PermanentsOnBattlefieldCount(filter);
|
||||||
private static final Hint hint = new ValueHint("Foods you control", xValue);
|
private static final Hint hint = new ValueHint("Foods you control", xValue);
|
||||||
|
|
||||||
public NightOfTheSweetsRevenge(UUID ownerId, CardSetInfo setInfo) {
|
public NightOfTheSweetsRevenge(UUID ownerId, CardSetInfo setInfo) {
|
||||||
|
|
@ -41,8 +45,7 @@ public final class NightOfTheSweetsRevenge extends CardImpl {
|
||||||
|
|
||||||
// Foods you control have "{T}: Add {G}."
|
// Foods you control have "{T}: Add {G}."
|
||||||
this.addAbility(new SimpleStaticAbility(new GainAbilityControlledEffect(
|
this.addAbility(new SimpleStaticAbility(new GainAbilityControlledEffect(
|
||||||
new GreenManaAbility(), Duration.WhileOnBattlefield,
|
new GreenManaAbility(), Duration.WhileOnBattlefield, filter
|
||||||
StaticFilters.FILTER_CONTROLLED_FOOD
|
|
||||||
)));
|
)));
|
||||||
|
|
||||||
// {5}{G}{G}, Sacrifice Night of the Sweets' Revenge: Creatures you control get +X/+X until end of turn, where X is the number of Foods you control. Activate only as a sorcery.
|
// {5}{G}{G}, Sacrifice Night of the Sweets' Revenge: Creatures you control get +X/+X until end of turn, where X is the number of Foods you control. Activate only as a sorcery.
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@ public final class OgreChitterlord extends CardImpl {
|
||||||
private static final FilterControlledCreaturePermanent filter =
|
private static final FilterControlledCreaturePermanent filter =
|
||||||
new FilterControlledCreaturePermanent(SubType.RAT, "each Rat you control");
|
new FilterControlledCreaturePermanent(SubType.RAT, "each Rat you control");
|
||||||
private static final FilterControlledPermanent filterCondition =
|
private static final FilterControlledPermanent filterCondition =
|
||||||
new FilterControlledPermanent(SubType.RAT, "five or more Rats");
|
new FilterControlledPermanent(SubType.RAT, "you control five or more Rats");
|
||||||
private static final Condition condition =
|
private static final Condition condition =
|
||||||
new PermanentsOnTheBattlefieldCondition(filterCondition, ComparisonType.OR_GREATER, 5);
|
new PermanentsOnTheBattlefieldCondition(filterCondition, ComparisonType.OR_GREATER, 5);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ import mage.abilities.common.BeginningOfEndStepTriggeredAbility;
|
||||||
import mage.abilities.common.SimpleActivatedAbility;
|
import mage.abilities.common.SimpleActivatedAbility;
|
||||||
import mage.abilities.condition.common.MorbidCondition;
|
import mage.abilities.condition.common.MorbidCondition;
|
||||||
import mage.abilities.costs.common.SacrificeTargetCost;
|
import mage.abilities.costs.common.SacrificeTargetCost;
|
||||||
import mage.abilities.costs.mana.GenericManaCost;
|
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||||
import mage.abilities.effects.common.CreateTokenEffect;
|
import mage.abilities.effects.common.CreateTokenEffect;
|
||||||
import mage.abilities.effects.common.continuous.BoostSourceEffect;
|
import mage.abilities.effects.common.continuous.BoostSourceEffect;
|
||||||
import mage.abilities.hint.common.MorbidHint;
|
import mage.abilities.hint.common.MorbidHint;
|
||||||
|
|
@ -42,9 +42,9 @@ public final class OldFlitterfang extends CardImpl {
|
||||||
MorbidCondition.instance, false
|
MorbidCondition.instance, false
|
||||||
).addHint(MorbidHint.instance));
|
).addHint(MorbidHint.instance));
|
||||||
|
|
||||||
// {2}, Sacrifice another creature or artifact: Old Flitterfang gets +2/+2 until end of turn.
|
// {2}{B}, Sacrifice another creature or artifact: Old Flitterfang gets +2/+2 until end of turn.
|
||||||
Ability ability = new SimpleActivatedAbility(
|
Ability ability = new SimpleActivatedAbility(
|
||||||
new BoostSourceEffect(2, 2, Duration.EndOfTurn), new GenericManaCost(2)
|
new BoostSourceEffect(2, 2, Duration.EndOfTurn), new ManaCostsImpl<>("{2}{B}")
|
||||||
);
|
);
|
||||||
ability.addCost(new SacrificeTargetCost(StaticFilters.FILTER_CONTROLLED_ANOTHER_ARTIFACT_OR_CREATURE_SHORT_TEXT));
|
ability.addCost(new SacrificeTargetCost(StaticFilters.FILTER_CONTROLLED_ANOTHER_ARTIFACT_OR_CREATURE_SHORT_TEXT));
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
|
|
|
||||||
|
|
@ -44,7 +44,7 @@ public final class PicklockPrankster extends AdventureCard {
|
||||||
|
|
||||||
// Free the Fae
|
// Free the Fae
|
||||||
// Mill four cards. Then put an instant, sorcery, or Faerie card from among the milled cards into your hand.
|
// Mill four cards. Then put an instant, sorcery, or Faerie card from among the milled cards into your hand.
|
||||||
this.getSpellAbility().addEffect(new MillThenPutInHandEffect(4, filter));
|
this.getSpellCard().getSpellAbility().addEffect(new MillThenPutInHandEffect(4, filter));
|
||||||
}
|
}
|
||||||
|
|
||||||
private PicklockPrankster(final PicklockPrankster card) {
|
private PicklockPrankster(final PicklockPrankster card) {
|
||||||
|
|
|
||||||
|
|
@ -40,11 +40,11 @@ public final class RagingBattleMouse extends CardImpl {
|
||||||
YouCastExactOneSpellThisTurnCondition.instance, "the second spell you cast each turn costs {1} less to cast"
|
YouCastExactOneSpellThisTurnCondition.instance, "the second spell you cast each turn costs {1} less to cast"
|
||||||
)));
|
)));
|
||||||
|
|
||||||
// Celebration -- At the beginning of combat on each of your turns, if two or more nonland permanents entered the battlefield under your control this turn, target creature you control gets +1/+1 until end of turn.
|
// Celebration -- At the beginning of combat on your turn, if two or more nonland permanents entered the battlefield under your control this turn, target creature you control gets +1/+1 until end of turn.
|
||||||
Ability ability = new ConditionalInterveningIfTriggeredAbility(
|
Ability ability = new ConditionalInterveningIfTriggeredAbility(
|
||||||
new BeginningOfCombatTriggeredAbility(
|
new BeginningOfCombatTriggeredAbility(
|
||||||
new BoostTargetEffect(1, 1, Duration.EndOfTurn), TargetController.YOU, false
|
new BoostTargetEffect(1, 1, Duration.EndOfTurn), TargetController.YOU, false
|
||||||
), CelebrationCondition.instance, "At the beginning of combat on each of your turns, "
|
), CelebrationCondition.instance, "At the beginning of combat on your turn, "
|
||||||
+ "if two or more nonland permanents entered the battlefield under your control this turn, "
|
+ "if two or more nonland permanents entered the battlefield under your control this turn, "
|
||||||
+ "target creature you control gets +1/+1 until end of turn."
|
+ "target creature you control gets +1/+1 until end of turn."
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,7 @@ public final class RatOut extends CardImpl {
|
||||||
// Up to one target creature gets -1/-1 until end of turn. You create a 1/1 black Rat creature token with "This creature can't block."
|
// Up to one target creature gets -1/-1 until end of turn. You create a 1/1 black Rat creature token with "This creature can't block."
|
||||||
this.getSpellAbility().addEffect(new BoostTargetEffect(-1, -1, Duration.EndOfTurn));
|
this.getSpellAbility().addEffect(new BoostTargetEffect(-1, -1, Duration.EndOfTurn));
|
||||||
this.getSpellAbility().addTarget(new TargetCreaturePermanent(0, 1));
|
this.getSpellAbility().addTarget(new TargetCreaturePermanent(0, 1));
|
||||||
this.getSpellAbility().addEffect(new CreateTokenEffect(new RatCantBlockToken()));
|
this.getSpellAbility().addEffect(new CreateTokenEffect(new RatCantBlockToken()).concatBy("You"));
|
||||||
}
|
}
|
||||||
|
|
||||||
private RatOut(final RatOut card) {
|
private RatOut(final RatOut card) {
|
||||||
|
|
|
||||||
|
|
@ -45,7 +45,7 @@ public final class RestlessCottage extends CardImpl {
|
||||||
|
|
||||||
// Whenever Restless Cottage attacks, create a Food token and exile up to one target card from a graveyard.
|
// Whenever Restless Cottage attacks, create a Food token and exile up to one target card from a graveyard.
|
||||||
Ability ability = new AttacksTriggeredAbility(new CreateTokenEffect(new FoodToken()));
|
Ability ability = new AttacksTriggeredAbility(new CreateTokenEffect(new FoodToken()));
|
||||||
ability.addEffect(new ExileTargetEffect());
|
ability.addEffect(new ExileTargetEffect().concatBy("and"));
|
||||||
ability.addTarget(new TargetCardInGraveyard(0, 1));
|
ability.addTarget(new TargetCardInGraveyard(0, 1));
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,7 @@ public final class ReturnFromTheWilds extends CardImpl {
|
||||||
|
|
||||||
// * Search your library for a basic land card, put it onto the battlefield tapped, then shuffle.
|
// * Search your library for a basic land card, put it onto the battlefield tapped, then shuffle.
|
||||||
this.getSpellAbility().addEffect(new SearchLibraryPutInPlayEffect(
|
this.getSpellAbility().addEffect(new SearchLibraryPutInPlayEffect(
|
||||||
new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true, true
|
new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true, false
|
||||||
));
|
));
|
||||||
|
|
||||||
// * Create a 1/1 white Human creature token.
|
// * Create a 1/1 white Human creature token.
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,7 @@ public final class RimefurReindeer extends CardImpl {
|
||||||
this.toughness = new MageInt(4);
|
this.toughness = new MageInt(4);
|
||||||
|
|
||||||
// Whenever an enchantment enters the battlefield under your control, tap target creature an opponent controls.
|
// Whenever an enchantment enters the battlefield under your control, tap target creature an opponent controls.
|
||||||
Ability ability = new ConstellationAbility(new TapTargetEffect());
|
Ability ability = new ConstellationAbility(new TapTargetEffect(), false, false);
|
||||||
ability.addTarget(new TargetOpponentsCreaturePermanent());
|
ability.addTarget(new TargetOpponentsCreaturePermanent());
|
||||||
this.addAbility(ability.setAbilityWord(null));
|
this.addAbility(ability.setAbilityWord(null));
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,9 +2,13 @@ package mage.cards.s;
|
||||||
|
|
||||||
import mage.abilities.dynamicvalue.common.ManacostVariableValue;
|
import mage.abilities.dynamicvalue.common.ManacostVariableValue;
|
||||||
import mage.abilities.effects.common.CreateTokenEffect;
|
import mage.abilities.effects.common.CreateTokenEffect;
|
||||||
|
import mage.abilities.effects.common.continuous.GainAbilityControlledEffect;
|
||||||
|
import mage.abilities.keyword.HasteAbility;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
|
import mage.constants.Duration;
|
||||||
|
import mage.filter.StaticFilters;
|
||||||
import mage.game.permanent.token.RatCantBlockToken;
|
import mage.game.permanent.token.RatCantBlockToken;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
@ -19,6 +23,8 @@ public final class SongOfTotentanz extends CardImpl {
|
||||||
|
|
||||||
// Create X 1/1 black Rat creature tokens with “This creature can’t block.” Creatures you control gain haste until end of turn.
|
// Create X 1/1 black Rat creature tokens with “This creature can’t block.” Creatures you control gain haste until end of turn.
|
||||||
this.getSpellAbility().addEffect(new CreateTokenEffect(new RatCantBlockToken(), ManacostVariableValue.REGULAR));
|
this.getSpellAbility().addEffect(new CreateTokenEffect(new RatCantBlockToken(), ManacostVariableValue.REGULAR));
|
||||||
|
this.getSpellAbility().addEffect(new GainAbilityControlledEffect(
|
||||||
|
HasteAbility.getInstance(), Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURES));
|
||||||
}
|
}
|
||||||
|
|
||||||
private SongOfTotentanz(final SongOfTotentanz card) {
|
private SongOfTotentanz(final SongOfTotentanz card) {
|
||||||
|
|
|
||||||
|
|
@ -54,7 +54,7 @@ public final class TalionTheKindlyLord extends CardImpl {
|
||||||
.setText("that player loses 2 life"),
|
.setText("that player loses 2 life"),
|
||||||
filter, false, SetTargetPointer.PLAYER
|
filter, false, SetTargetPointer.PLAYER
|
||||||
);
|
);
|
||||||
ability.addEffect(new DrawCardSourceControllerEffect(1).concatBy("and"));
|
ability.addEffect(new DrawCardSourceControllerEffect(1, "you").concatBy("and"));
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ import java.util.UUID;
|
||||||
*/
|
*/
|
||||||
public final class TatteredRatter extends CardImpl {
|
public final class TatteredRatter extends CardImpl {
|
||||||
|
|
||||||
private static final FilterControlledPermanent filter = new FilterControlledPermanent(SubType.RAT, "Rat you control");
|
private static final FilterControlledPermanent filter = new FilterControlledPermanent(SubType.RAT, "a Rat you control");
|
||||||
|
|
||||||
public TatteredRatter(UUID ownerId, CardSetInfo setInfo) {
|
public TatteredRatter(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}");
|
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}");
|
||||||
|
|
|
||||||
|
|
@ -39,7 +39,7 @@ public final class TorchTheTower extends CardImpl {
|
||||||
|
|
||||||
// If a permanent dealt damage by Torch the Tower would die this turn, exile it instead.
|
// If a permanent dealt damage by Torch the Tower would die this turn, exile it instead.
|
||||||
this.getSpellAbility().addEffect(new DealtDamageToCreatureBySourceDies(this, Duration.EndOfTurn)
|
this.getSpellAbility().addEffect(new DealtDamageToCreatureBySourceDies(this, Duration.EndOfTurn)
|
||||||
.setText("if a permanent dealt damage by {this} would die this turn, exile it instead"));
|
.setText("<br>If a permanent dealt damage by {this} would die this turn, exile it instead"));
|
||||||
this.getSpellAbility().addWatcher(new DamagedByWatcher(false));
|
this.getSpellAbility().addWatcher(new DamagedByWatcher(false));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -72,14 +72,14 @@ class TroyanGutsyExplorerManaBuilder extends ConditionalManaBuilder {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getRule() {
|
public String getRule() {
|
||||||
return "Spend this mana only to cast spells with mana value 5 or greater or spells with X in their mana costs";
|
return "Spend this mana only to cast spells with mana value 5 or greater or spells with {X} in their mana costs";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class TroyanGutsyExplorerConditionalMana extends ConditionalMana {
|
class TroyanGutsyExplorerConditionalMana extends ConditionalMana {
|
||||||
TroyanGutsyExplorerConditionalMana(Mana mana) {
|
TroyanGutsyExplorerConditionalMana(Mana mana) {
|
||||||
super(mana);
|
super(mana);
|
||||||
staticText = "Spend this mana only to cast spells with mana value 5 or greater or spells with X in their mana costs";
|
staticText = "Spend this mana only to cast spells with mana value 5 or greater or spells with {X} in their mana costs";
|
||||||
addCondition(TroyanGutsyExplorerCondition.instance);
|
addCondition(TroyanGutsyExplorerCondition.instance);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -33,7 +33,7 @@ public final class TwistedFealty extends CardImpl {
|
||||||
|
|
||||||
// Create a Wicked Role token attached to up to one target creature.
|
// Create a Wicked Role token attached to up to one target creature.
|
||||||
this.getSpellAbility().addEffect(new CreateRoleAttachedTargetEffect(RoleType.WICKED)
|
this.getSpellAbility().addEffect(new CreateRoleAttachedTargetEffect(RoleType.WICKED)
|
||||||
.setTargetPointer(new SecondTargetPointer()));
|
.setTargetPointer(new SecondTargetPointer()).concatBy("<br>"));
|
||||||
this.getSpellAbility().addTarget(new TargetCreaturePermanent(0, 1));
|
this.getSpellAbility().addTarget(new TargetCreaturePermanent(0, 1));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -62,7 +62,7 @@ public class VerifyCardDataTest {
|
||||||
|
|
||||||
private static final Logger logger = Logger.getLogger(VerifyCardDataTest.class);
|
private static final Logger logger = Logger.getLogger(VerifyCardDataTest.class);
|
||||||
|
|
||||||
private static final String FULL_ABILITIES_CHECK_SET_CODES = "LTR;LTC;CMM"; // check ability text due mtgjson, can use multiple sets like MAT;CMD or * for all
|
private static final String FULL_ABILITIES_CHECK_SET_CODES = "WOE"; // 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 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
|
private static final boolean AUTO_FIX_SAMPLE_DECKS = false; // debug only: auto-fix sample decks by test_checkSampleDecks test run
|
||||||
|
|
|
||||||
|
|
@ -41,7 +41,7 @@ public class PayMoreToCastAsThoughtItHadFlashAbility extends SpellAbility {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getRule() {
|
public String getRule() {
|
||||||
return "You may cast this spell as though it had flash if you pay " + costsToAdd.getText() + " more to cast it. <i>(You may cast it any time you could cast an instant.)</i>";
|
return "You may cast {this} as though it had flash if you pay " + costsToAdd.getText() + " more to cast it. <i>(You may cast it any time you could cast an instant.)</i>";
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -32,6 +32,7 @@ public class AddCountersAllEffect extends OneShotEffect {
|
||||||
this.counter = counter;
|
this.counter = counter;
|
||||||
this.amount = amount;
|
this.amount = amount;
|
||||||
this.filter = filter;
|
this.filter = filter;
|
||||||
|
staticText = "put " + counter.getDescription() + " on each " + filter.getMessage();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected AddCountersAllEffect(final AddCountersAllEffect effect) {
|
protected AddCountersAllEffect(final AddCountersAllEffect effect) {
|
||||||
|
|
@ -72,14 +73,6 @@ public class AddCountersAllEffect extends OneShotEffect {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getText(Mode mode) {
|
|
||||||
if (!staticText.isEmpty()) {
|
|
||||||
return staticText;
|
|
||||||
}
|
|
||||||
return CardUtil.getAddRemoveCountersText(amount, counter, getTargetPointer().describeTargets(mode.getTargets(), "that creature"), true);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public AddCountersAllEffect copy() {
|
public AddCountersAllEffect copy() {
|
||||||
return new AddCountersAllEffect(this);
|
return new AddCountersAllEffect(this);
|
||||||
|
|
|
||||||
|
|
@ -53,7 +53,7 @@ public class BargainAbility extends StaticAbility implements OptionalAdditionalS
|
||||||
super(Zone.STACK, null);
|
super(Zone.STACK, null);
|
||||||
this.additionalCost = new OptionalAdditionalCostImpl(keywordText, reminderText, new SacrificeTargetCost(bargainFilter));
|
this.additionalCost = new OptionalAdditionalCostImpl(keywordText, reminderText, new SacrificeTargetCost(bargainFilter));
|
||||||
this.additionalCost.setRepeatable(false);
|
this.additionalCost.setRepeatable(false);
|
||||||
this.rule = additionalCost.getName() + additionalCost.getReminderText();
|
this.rule = additionalCost.getName() + ' ' + additionalCost.getReminderText();
|
||||||
this.setRuleAtTheTop(true);
|
this.setRuleAtTheTop(true);
|
||||||
this.addHint(BargainCostWasPaidHint.instance);
|
this.addHint(BargainCostWasPaidHint.instance);
|
||||||
this.activationKey = null;
|
this.activationKey = null;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue