mirror of
https://github.com/correl/mage.git
synced 2024-12-26 03:00:11 +00:00
[TSP] various text fixes
This commit is contained in:
parent
46f98a0f88
commit
24478afbe1
29 changed files with 121 additions and 112 deletions
|
@ -1,34 +1,32 @@
|
|||
package mage.cards.a;
|
||||
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.effects.AsThoughEffectImpl;
|
||||
import mage.abilities.effects.common.AttachEffect;
|
||||
import mage.abilities.effects.common.continuous.BoostEnchantedEffect;
|
||||
import mage.abilities.effects.common.continuous.GainAbilityAttachedEffect;
|
||||
import mage.abilities.keyword.EnchantAbility;
|
||||
import mage.abilities.keyword.FlashAbility;
|
||||
import mage.abilities.keyword.ReachAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.*;
|
||||
import mage.game.Game;
|
||||
import mage.game.permanent.Permanent;
|
||||
import mage.target.TargetPermanent;
|
||||
import mage.target.common.TargetCreaturePermanent;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
import mage.abilities.StaticAbility;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.effects.AsThoughEffectImpl;
|
||||
import mage.abilities.effects.common.continuous.BoostEnchantedEffect;
|
||||
import mage.abilities.effects.common.continuous.GainAbilityAttachedEffect;
|
||||
import mage.abilities.keyword.ReachAbility;
|
||||
import mage.constants.*;
|
||||
import mage.abilities.keyword.FlashAbility;
|
||||
import mage.game.Game;
|
||||
import mage.game.permanent.Permanent;
|
||||
import mage.target.common.TargetCreaturePermanent;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.effects.common.AttachEffect;
|
||||
import mage.target.TargetPermanent;
|
||||
import mage.abilities.keyword.EnchantAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author noahg
|
||||
*/
|
||||
public final class AetherWeb extends CardImpl {
|
||||
|
||||
public AetherWeb(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{G}");
|
||||
|
||||
|
||||
this.subtype.add(SubType.AURA);
|
||||
|
||||
// Flash
|
||||
|
@ -38,15 +36,15 @@ public final class AetherWeb extends CardImpl {
|
|||
TargetPermanent auraTarget = new TargetCreaturePermanent();
|
||||
this.getSpellAbility().addTarget(auraTarget);
|
||||
this.getSpellAbility().addEffect(new AttachEffect(Outcome.BoostCreature));
|
||||
Ability ability = new EnchantAbility(auraTarget.getTargetName());
|
||||
this.addAbility(ability);
|
||||
this.addAbility(new EnchantAbility(auraTarget.getTargetName()));
|
||||
|
||||
// Enchanted creature gets +1/+1, has reach, and can block creatures with shadow as though they didn't have shadow.
|
||||
StaticAbility staticAbility = new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(1, 1)
|
||||
.setText("Enchanted creature gets +1/+1, has reach, and can block creatures with shadow as though they didn't have shadow."));
|
||||
staticAbility.addEffect(new GainAbilityAttachedEffect(ReachAbility.getInstance(), AttachmentType.AURA).setText(""));
|
||||
staticAbility.addEffect(new AetherWebEffect());
|
||||
this.addAbility(staticAbility);
|
||||
Ability ability = new SimpleStaticAbility(new BoostEnchantedEffect(1, 1));
|
||||
ability.addEffect(new GainAbilityAttachedEffect(
|
||||
ReachAbility.getInstance(), AttachmentType.AURA
|
||||
).setText(", has reach"));
|
||||
ability.addEffect(new AetherWebEffect());
|
||||
this.addAbility(ability);
|
||||
}
|
||||
|
||||
private AetherWeb(final AetherWeb card) {
|
||||
|
@ -63,7 +61,7 @@ class AetherWebEffect extends AsThoughEffectImpl {
|
|||
|
||||
public AetherWebEffect() {
|
||||
super(AsThoughEffectType.BLOCK_SHADOW, Duration.WhileOnBattlefield, Outcome.Benefit);
|
||||
staticText = "";
|
||||
staticText = ", and can block creatures with shadow as though they didn't have shadow";
|
||||
}
|
||||
|
||||
public AetherWebEffect(final AetherWebEffect effect) {
|
||||
|
@ -85,4 +83,4 @@ class AetherWebEffect extends AsThoughEffectImpl {
|
|||
Permanent sourcePermanent = source.getSourcePermanentIfItStillExists(game);
|
||||
return sourcePermanent != null && sourceId.equals(sourcePermanent.getAttachedTo());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -12,19 +12,17 @@ import mage.cards.CardSetInfo;
|
|||
import mage.constants.CardType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.Zone;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author noahg
|
||||
*/
|
||||
public final class AetherflameWall extends CardImpl {
|
||||
|
||||
public AetherflameWall(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}");
|
||||
|
||||
|
||||
this.subtype.add(SubType.WALL);
|
||||
this.power = new MageInt(0);
|
||||
this.toughness = new MageInt(4);
|
||||
|
@ -33,10 +31,13 @@ public final class AetherflameWall extends CardImpl {
|
|||
this.addAbility(DefenderAbility.getInstance());
|
||||
|
||||
// Aetherflame Wall can block creatures with shadow as though they didn’t have shadow.
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CanBlockAsThoughtItHadShadowEffect(Duration.WhileOnBattlefield)));
|
||||
this.addAbility(new SimpleStaticAbility(new CanBlockAsThoughtItHadShadowEffect(Duration.WhileOnBattlefield)
|
||||
.setText("{this} can block creatures with shadow as though they didn't have shadow")));
|
||||
|
||||
// {R}: Aetherflame Wall gets +1/+0 until end of turn.
|
||||
this.addAbility(new SimpleActivatedAbility(new BoostSourceEffect(1, 0, Duration.EndOfTurn), new ManaCostsImpl("{R}")));
|
||||
this.addAbility(new SimpleActivatedAbility(
|
||||
new BoostSourceEffect(1, 0, Duration.EndOfTurn), new ManaCostsImpl<>("{R}")
|
||||
));
|
||||
}
|
||||
|
||||
private AetherflameWall(final AetherflameWall card) {
|
||||
|
|
|
@ -31,8 +31,11 @@ public final class BarbedShocker extends CardImpl {
|
|||
this.addAbility(TrampleAbility.getInstance());
|
||||
// Haste
|
||||
this.addAbility(HasteAbility.getInstance());
|
||||
|
||||
// Whenever Barbed Shocker deals damage to a player, that player discards all the cards in their hand, then draws that many cards.
|
||||
this.addAbility(new DealsDamageToAPlayerTriggeredAbility(new BarbedShockerEffect(), false, true));
|
||||
this.addAbility(new DealsDamageToAPlayerTriggeredAbility(
|
||||
new BarbedShockerEffect(), false, true
|
||||
));
|
||||
}
|
||||
|
||||
private BarbedShocker(final BarbedShocker card) {
|
||||
|
@ -49,7 +52,7 @@ class BarbedShockerEffect extends OneShotEffect {
|
|||
|
||||
BarbedShockerEffect() {
|
||||
super(Outcome.Discard);
|
||||
this.staticText = " that player discards all the cards in their hand, then draws that many cards";
|
||||
this.staticText = "that player discards all the cards in their hand, then draws that many cards";
|
||||
}
|
||||
|
||||
private BarbedShockerEffect(final BarbedShockerEffect effect) {
|
||||
|
@ -64,11 +67,12 @@ class BarbedShockerEffect extends OneShotEffect {
|
|||
@Override
|
||||
public boolean apply(Game game, Ability source) {
|
||||
Player targetPlayer = game.getPlayer(targetPointer.getFirst(game, source));
|
||||
if (targetPlayer == null) {
|
||||
if (targetPlayer == null || targetPlayer.getHand().isEmpty()) {
|
||||
return false;
|
||||
}
|
||||
int count = targetPlayer.discard(targetPlayer.getHand(), false, source, game).size();
|
||||
targetPlayer.drawCards(count, source, game);
|
||||
targetPlayer.drawCards(targetPlayer.discard(
|
||||
targetPlayer.getHand(), false, source, game
|
||||
).size(), source, game);
|
||||
return true;
|
||||
}
|
||||
}
|
|
@ -1,7 +1,5 @@
|
|||
|
||||
package mage.cards.b;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
|
||||
import mage.abilities.effects.common.continuous.BoostTargetEffect;
|
||||
import mage.cards.CardImpl;
|
||||
|
@ -10,21 +8,22 @@ import mage.constants.CardType;
|
|||
import mage.constants.Duration;
|
||||
import mage.target.common.TargetCreaturePermanent;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Loki
|
||||
*/
|
||||
public final class Bewilder extends CardImpl {
|
||||
|
||||
public Bewilder(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{U}");
|
||||
|
||||
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{U}");
|
||||
|
||||
// Target creature gets -3/-0 until end of turn.
|
||||
this.getSpellAbility().addEffect(new BoostTargetEffect(-3, 0, Duration.EndOfTurn));
|
||||
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
|
||||
|
||||
// Draw a card.
|
||||
this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1));
|
||||
this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1).concatBy("<br>"));
|
||||
}
|
||||
|
||||
private Bewilder(final Bewilder card) {
|
||||
|
|
|
@ -111,7 +111,7 @@ class CurseOfTheCabalInterveningIfTriggeredAbility extends ConditionalIntervenin
|
|||
),
|
||||
SuspendedCondition.instance,
|
||||
"At the beginning of each player's upkeep, if {this} is suspended, "
|
||||
+ "that player may sacrifice a permanent. If they do, "
|
||||
+ "that player may sacrifice a permanent. If the player does, "
|
||||
+ "put two time counters on {this}."
|
||||
);
|
||||
// controller has to sac a permanent
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
|
||||
package mage.cards.d;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.SimpleActivatedAbility;
|
||||
|
@ -11,14 +9,14 @@ import mage.abilities.effects.common.PreventDamageToTargetEffect;
|
|||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.Zone;
|
||||
import mage.constants.SubType;
|
||||
import mage.target.common.TargetAnyTarget;
|
||||
import mage.target.common.TargetAttackingOrBlockingCreature;
|
||||
import mage.target.common.TargetCreatureOrPlayer;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author LoneFox
|
||||
*/
|
||||
public final class DAvenantHealer extends CardImpl {
|
||||
|
@ -32,12 +30,15 @@ public final class DAvenantHealer extends CardImpl {
|
|||
this.toughness = new MageInt(2);
|
||||
|
||||
// {T}: D'Avenant Healer deals 1 damage to target attacking or blocking creature.
|
||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(1), new TapSourceCost());
|
||||
Ability ability = new SimpleActivatedAbility(new DamageTargetEffect(1), new TapSourceCost());
|
||||
ability.addTarget(new TargetAttackingOrBlockingCreature());
|
||||
this.addAbility(ability);
|
||||
|
||||
// {T}: Prevent the next 1 damage that would be dealt to any target this turn.
|
||||
ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new PreventDamageToTargetEffect(Duration.EndOfTurn, 1), new TapSourceCost());
|
||||
ability.addTarget(new TargetCreatureOrPlayer());
|
||||
ability = new SimpleActivatedAbility(
|
||||
new PreventDamageToTargetEffect(Duration.EndOfTurn, 1), new TapSourceCost()
|
||||
);
|
||||
ability.addTarget(new TargetAnyTarget());
|
||||
this.addAbility(ability);
|
||||
}
|
||||
|
||||
|
|
|
@ -1,13 +1,10 @@
|
|||
|
||||
package mage.cards.f;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.PutIntoGraveFromBattlefieldSourceTriggeredAbility;
|
||||
import mage.abilities.common.SimpleActivatedAbility;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.costs.common.SacrificeTargetCost;
|
||||
import mage.abilities.effects.Effect;
|
||||
import mage.abilities.effects.common.AttachEffect;
|
||||
import mage.abilities.effects.common.ReturnToHandSourceEffect;
|
||||
import mage.abilities.effects.common.continuous.BoostSourceEffect;
|
||||
|
@ -17,13 +14,15 @@ import mage.abilities.keyword.FlyingAbility;
|
|||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.*;
|
||||
import static mage.filter.StaticFilters.FILTER_CONTROLLED_CREATURE_SHORT_TEXT;
|
||||
import mage.target.TargetPermanent;
|
||||
import mage.target.common.TargetControlledCreaturePermanent;
|
||||
import mage.target.common.TargetControlledPermanent;
|
||||
import mage.target.common.TargetCreaturePermanent;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
import static mage.filter.StaticFilters.FILTER_CONTROLLED_CREATURE_SHORT_TEXT;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author fireshoes
|
||||
*/
|
||||
public final class FallenIdeal extends CardImpl {
|
||||
|
@ -36,18 +35,19 @@ public final class FallenIdeal extends CardImpl {
|
|||
TargetPermanent auraTarget = new TargetCreaturePermanent();
|
||||
this.getSpellAbility().addTarget(auraTarget);
|
||||
this.getSpellAbility().addEffect(new AttachEffect(Outcome.AddAbility));
|
||||
Ability ability = new EnchantAbility(auraTarget.getTargetName());
|
||||
this.addAbility(ability);
|
||||
this.addAbility(new EnchantAbility(auraTarget.getTargetName()));
|
||||
|
||||
// Enchanted creature has flying and "Sacrifice a creature: This creature gets +2/+1 until end of turn."
|
||||
Effect effect = new GainAbilityAttachedEffect(FlyingAbility.getInstance(), AttachmentType.AURA, Duration.WhileOnBattlefield);
|
||||
Ability gainedAbility = new SimpleStaticAbility(Zone.BATTLEFIELD, effect);
|
||||
this.addAbility(gainedAbility);
|
||||
gainedAbility = new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(2, 1, Duration.EndOfTurn),
|
||||
new SacrificeTargetCost(new TargetControlledCreaturePermanent(FILTER_CONTROLLED_CREATURE_SHORT_TEXT)));
|
||||
effect = new GainAbilityAttachedEffect(gainedAbility, AttachmentType.AURA, Duration.WhileOnBattlefield);
|
||||
effect.setText("Enchanted creature has \"Sacrifice a creature: This creature gets +2/+1 until end of turn.\"");
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect));
|
||||
Ability ability = new SimpleStaticAbility(new GainAbilityAttachedEffect(
|
||||
FlyingAbility.getInstance(), AttachmentType.AURA, Duration.WhileOnBattlefield
|
||||
));
|
||||
ability.addEffect(new GainAbilityAttachedEffect(
|
||||
new SimpleActivatedAbility(
|
||||
new BoostSourceEffect(2, 1, Duration.EndOfTurn),
|
||||
new SacrificeTargetCost(new TargetControlledPermanent(FILTER_CONTROLLED_CREATURE_SHORT_TEXT))
|
||||
), AttachmentType.AURA, Duration.WhileOnBattlefield
|
||||
).setText("and \"Sacrifice a creature: This creature gets +2/+1 until end of turn.\""));
|
||||
this.addAbility(ability);
|
||||
|
||||
// When Fallen Ideal is put into a graveyard from the battlefield, return Fallen Ideal to its owner's hand.
|
||||
this.addAbility(new PutIntoGraveFromBattlefieldSourceTriggeredAbility(new ReturnToHandSourceEffect()));
|
||||
|
|
|
@ -32,7 +32,7 @@ public final class FlagstonesOfTrokair extends CardImpl {
|
|||
this.addAbility(new WhiteManaAbility());
|
||||
|
||||
// When Flagstones of Trokair is put into a graveyard from the battlefield, you may search your library for a Plains card and put it onto the battlefield tapped. If you do, shuffle your library.
|
||||
this.addAbility(new PutIntoGraveFromBattlefieldSourceTriggeredAbility(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(FILTER), true, false), true, false));
|
||||
this.addAbility(new PutIntoGraveFromBattlefieldSourceTriggeredAbility(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(FILTER), true, true), true, false));
|
||||
}
|
||||
|
||||
private FlagstonesOfTrokair(final FlagstonesOfTrokair card) {
|
||||
|
|
|
@ -82,7 +82,7 @@ class GemstoneCavernsAbility extends StaticAbility implements OpeningHandAction
|
|||
|
||||
@Override
|
||||
public String getRule() {
|
||||
return "If {this} is in your opening hand and you're not playing first, you may begin the game with {this} on the battlefield with a luck counter on it. If you do, exile a card from your hand.";
|
||||
return "If {this} is in your opening hand and you're not the starting player, you may begin the game with {this} on the battlefield with a luck counter on it. If you do, exile a card from your hand.";
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -28,7 +28,7 @@ public final class GlassAsp extends CardImpl {
|
|||
// Whenever Glass Asp deals combat damage to a player, that player loses 2 life at the beginning of their next draw step unless they pay {2} before that step.
|
||||
this.addAbility(new DealsCombatDamageToAPlayerTriggeredAbility(new UnlessPaysDelayedEffect(
|
||||
new ManaCostsImpl("{2}"), new LoseLifeTargetEffect(2), PhaseStep.DRAW, true,
|
||||
"that player loses 2 life at the beginning of their next draw step unless they pay {2} before that draw step."),
|
||||
"that player loses 2 life at the beginning of their next draw step unless they pay {2} before that step."),
|
||||
false, true));
|
||||
}
|
||||
|
||||
|
|
|
@ -40,7 +40,7 @@ public final class GoblinSkycutter extends CardImpl {
|
|||
this.toughness = new MageInt(1);
|
||||
|
||||
// Sacrifice Goblin Skycutter: Goblin Skycutter deals 2 damage to target creature with flying. That creature loses flying until end of turn.
|
||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(2), new SacrificeSourceCost());
|
||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(2, "it"), new SacrificeSourceCost());
|
||||
ability.addEffect(new LoseAbilityTargetEffect(FlyingAbility.getInstance(), Duration.EndOfTurn).setText("that creature loses flying until end of turn"));
|
||||
ability.addTarget(new TargetCreaturePermanent(filter));
|
||||
this.addAbility(ability);
|
||||
|
|
|
@ -29,7 +29,7 @@ import mage.target.common.TargetControlledPermanent;
|
|||
*/
|
||||
public final class IbHalfheartGoblinTactician extends CardImpl {
|
||||
|
||||
private static final FilterControlledPermanent filter = new FilterControlledPermanent("two Mountains");
|
||||
private static final FilterControlledPermanent filter = new FilterControlledPermanent("Mountains");
|
||||
private static final FilterCreaturePermanent filterGoblin = new FilterCreaturePermanent("another Goblin you control");
|
||||
|
||||
static {
|
||||
|
|
|
@ -3,6 +3,7 @@ package mage.cards.i;
|
|||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.common.AsEntersBattlefieldAbility;
|
||||
import mage.abilities.common.EntersBattlefieldAbility;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount;
|
||||
|
@ -43,7 +44,7 @@ public final class Ixidron extends CardImpl {
|
|||
this.toughness = new MageInt(0);
|
||||
|
||||
// As Ixidron enters the battlefield, turn all other nontoken creatures face down.
|
||||
this.addAbility(new EntersBattlefieldAbility(new BecomesFaceDownCreatureAllEffect(filterTurnFaceDown)));
|
||||
this.addAbility(new AsEntersBattlefieldAbility(new BecomesFaceDownCreatureAllEffect(filterTurnFaceDown)));
|
||||
|
||||
// Ixidron's power and toughness are each equal to the number of face-down creatures on the battlefield.
|
||||
this.addAbility(new SimpleStaticAbility(Zone.ALL, new SetPowerToughnessSourceEffect(new PermanentsOnBattlefieldCount(filter), Duration.EndOfGame)));
|
||||
|
|
|
@ -51,7 +51,7 @@ class KaervekTheMercilessEffect extends OneShotEffect {
|
|||
|
||||
public KaervekTheMercilessEffect() {
|
||||
super(Outcome.Benefit);
|
||||
this.staticText = "{this} deals damage to any target equal to that spell's mana value";
|
||||
this.staticText = "{this} deals damage equal to that spell's mana value to any target";
|
||||
}
|
||||
|
||||
public KaervekTheMercilessEffect(final KaervekTheMercilessEffect effect) {
|
||||
|
|
|
@ -57,7 +57,7 @@ class LiegeOfThePitEffect extends OneShotEffect {
|
|||
|
||||
public LiegeOfThePitEffect() {
|
||||
super(Outcome.Damage);
|
||||
this.staticText = "Sacrifice a creature other than {this}. If you can't {this} deals 7 damage to you.";
|
||||
this.staticText = "sacrifice a creature other than {this}. If you can't, {this} deals 7 damage to you.";
|
||||
}
|
||||
|
||||
public LiegeOfThePitEffect(final LiegeOfThePitEffect effect) {
|
||||
|
|
|
@ -27,7 +27,7 @@ public final class Molder extends CardImpl {
|
|||
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{X}{G}");
|
||||
|
||||
// Destroy target artifact or enchantment with converted mana cost X. It can't be regenerated. You gain X life.
|
||||
this.getSpellAbility().addEffect(new DestroyTargetEffect("Destroy target artifact or enchantment with mana value X", true));
|
||||
this.getSpellAbility().addEffect(new DestroyTargetEffect("Destroy target artifact or enchantment with mana value X. It can't be regenerated", true));
|
||||
this.getSpellAbility().addEffect(new GainLifeEffect(ManacostVariableValue.REGULAR));
|
||||
this.getSpellAbility().setTargetAdjuster(MolderAdjuster.instance);
|
||||
}
|
||||
|
|
|
@ -27,7 +27,7 @@ public final class OrcishCannonade extends CardImpl {
|
|||
effect.setText("and 3 damage to you");
|
||||
this.getSpellAbility().addEffect(effect);
|
||||
// Draw a card.
|
||||
this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1));
|
||||
this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1).concatBy("<br>"));
|
||||
}
|
||||
|
||||
private OrcishCannonade(final OrcishCannonade card) {
|
||||
|
|
|
@ -57,7 +57,7 @@ class SaffiEriksdotterEffect extends OneShotEffect {
|
|||
|
||||
public SaffiEriksdotterEffect() {
|
||||
super(Outcome.PutCreatureInPlay);
|
||||
this.staticText = "When target creature is put into your graveyard from the battlefield this turn, return that card to the battlefield";
|
||||
this.staticText = "When target creature is put into your graveyard this turn, return that card to the battlefield";
|
||||
}
|
||||
|
||||
public SaffiEriksdotterEffect(final SaffiEriksdotterEffect effect) {
|
||||
|
|
|
@ -28,7 +28,7 @@ public final class SkulkingKnight extends CardImpl {
|
|||
// Flanking
|
||||
this.addAbility(new FlankingAbility());
|
||||
// When Skulking Knight becomes the target of a spell or ability, sacrifice it.
|
||||
this.addAbility(new BecomesTargetTriggeredAbility(new SacrificeSourceEffect()));
|
||||
this.addAbility(new BecomesTargetTriggeredAbility(new SacrificeSourceEffect().setText("sacrifice it")));
|
||||
}
|
||||
|
||||
private SkulkingKnight(final SkulkingKnight card) {
|
||||
|
|
|
@ -45,7 +45,7 @@ public final class SpikeTiller extends CardImpl {
|
|||
this.addAbility(ability);
|
||||
|
||||
// {2}, Remove a +1/+1 counter from Spike Tiller: Target land becomes a 2/2 creature that's still a land. Put a +1/+1 counter on it.
|
||||
Ability ability2 = new SimpleActivatedAbility(Zone.BATTLEFIELD, new BecomesCreatureTargetEffect(new CreatureToken(2, 2), false, true, Duration.EndOfGame).setText("Target land becomes a 2/2 creature that's still a land. "), new GenericManaCost(2));
|
||||
Ability ability2 = new SimpleActivatedAbility(Zone.BATTLEFIELD, new BecomesCreatureTargetEffect(new CreatureToken(2, 2), false, true, Duration.EndOfGame).setText("Target land becomes a 2/2 creature that's still a land"), new GenericManaCost(2));
|
||||
ability2.addCost(new RemoveCountersSourceCost(CounterType.P1P1.createInstance()));
|
||||
ability2.addEffect(new AddCountersTargetEffect(CounterType.P1P1.createInstance()).setText("Put a +1/+1 counter on it."));
|
||||
ability2.addTarget(new TargetLandPermanent());
|
||||
|
|
|
@ -4,14 +4,14 @@ import mage.MageInt;
|
|||
import mage.abilities.common.SimpleActivatedAbility;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.costs.common.TapSourceCost;
|
||||
import mage.abilities.effects.common.continuous.BoostControlledEffect;
|
||||
import mage.abilities.effects.common.continuous.BoostAllEffect;
|
||||
import mage.abilities.keyword.FlyingAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.Zone;
|
||||
import mage.constants.TargetController;
|
||||
import mage.filter.common.FilterCreaturePermanent;
|
||||
import mage.filter.predicate.mageobject.AbilityPredicate;
|
||||
|
||||
|
@ -22,9 +22,11 @@ import java.util.UUID;
|
|||
*/
|
||||
public final class SpriteNoble extends CardImpl {
|
||||
|
||||
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Creatures you control with flying");
|
||||
private static final FilterCreaturePermanent filter
|
||||
= new FilterCreaturePermanent("creatures you control with flying");
|
||||
|
||||
static {
|
||||
filter.add(TargetController.YOU.getControllerPredicate());
|
||||
filter.add(new AbilityPredicate(FlyingAbility.class));
|
||||
}
|
||||
|
||||
|
@ -36,11 +38,16 @@ public final class SpriteNoble extends CardImpl {
|
|||
|
||||
// Flying
|
||||
this.addAbility(FlyingAbility.getInstance());
|
||||
|
||||
// Other creatures you control with flying get +0/+1.
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostControlledEffect(0, 1, Duration.WhileOnBattlefield, filter, true)));
|
||||
this.addAbility(new SimpleStaticAbility(new BoostAllEffect(
|
||||
0, 1, Duration.WhileOnBattlefield, filter, true
|
||||
)));
|
||||
|
||||
// {tap}: Other creatures you control with flying get +1/+0 until end of turn.
|
||||
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostControlledEffect(1, 0, Duration.EndOfTurn, filter, true),
|
||||
new TapSourceCost()));
|
||||
this.addAbility(new SimpleActivatedAbility(new BoostAllEffect(
|
||||
1, 0, Duration.EndOfTurn, filter, true
|
||||
), new TapSourceCost()));
|
||||
}
|
||||
|
||||
private SpriteNoble(final SpriteNoble card) {
|
||||
|
|
|
@ -23,7 +23,7 @@ import java.util.UUID;
|
|||
*/
|
||||
public final class StonebrowKrosanHero extends CardImpl {
|
||||
|
||||
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent(" creature you control with trample");
|
||||
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("creature you control with trample");
|
||||
static {
|
||||
filter.add(new AbilityPredicate(TrampleAbility.class));
|
||||
}
|
||||
|
|
|
@ -1,10 +1,7 @@
|
|||
|
||||
package mage.cards.t;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.ObjectColor;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.effects.Effect;
|
||||
import mage.abilities.effects.common.continuous.BecomesColorTargetEffect;
|
||||
import mage.abilities.effects.common.continuous.BoostTargetEffect;
|
||||
import mage.abilities.effects.common.continuous.GainAbilityTargetEffect;
|
||||
|
@ -14,31 +11,32 @@ import mage.cards.CardImpl;
|
|||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.TimingRule;
|
||||
import mage.target.common.TargetCreaturePermanent;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author LevelX2
|
||||
*/
|
||||
public final class TraitorsClutch extends CardImpl {
|
||||
|
||||
public TraitorsClutch(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{4}{B}");
|
||||
|
||||
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{4}{B}");
|
||||
|
||||
// Target creature gets +1/+0, becomes black, and gains shadow until end of turn.
|
||||
this.getSpellAbility().addEffect(new BoostTargetEffect(1,0, Duration.EndOfTurn));
|
||||
Effect effect = new BecomesColorTargetEffect(ObjectColor.BLACK, Duration.EndOfTurn);
|
||||
effect.setText(", becomes black");
|
||||
this.getSpellAbility().addEffect(effect);
|
||||
effect = new GainAbilityTargetEffect(ShadowAbility.getInstance(), Duration.EndOfTurn);
|
||||
effect.setText(", and gains shadow until end of turn");
|
||||
this.getSpellAbility().addEffect(effect);
|
||||
this.getSpellAbility().addEffect(new BoostTargetEffect(
|
||||
1, 0, Duration.EndOfTurn
|
||||
).setText("target creature gets +1/+0"));
|
||||
this.getSpellAbility().addEffect(new BecomesColorTargetEffect(
|
||||
ObjectColor.BLACK, Duration.EndOfTurn
|
||||
).setText(", becomes black"));
|
||||
this.getSpellAbility().addEffect(new GainAbilityTargetEffect(
|
||||
ShadowAbility.getInstance(), Duration.EndOfTurn
|
||||
).setText(", and gains shadow until end of turn"));
|
||||
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
|
||||
|
||||
// Flashback {1}{B}
|
||||
this.addAbility(new FlashbackAbility(this, new ManaCostsImpl("{1}{B}")));
|
||||
this.addAbility(new FlashbackAbility(this, new ManaCostsImpl<>("{1}{B}")));
|
||||
}
|
||||
|
||||
private TraitorsClutch(final TraitorsClutch card) {
|
||||
|
|
|
@ -35,7 +35,7 @@ public final class UnyaroBees extends CardImpl {
|
|||
// {G}: Unyaro Bees gets +1/+1 until end of turn.
|
||||
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(1, 1, Duration.EndOfTurn), new ManaCostsImpl("{G}")));
|
||||
// {3}{G}, Sacrifice Unyaro Bees: Unyaro Bees deals 2 damage to any target.
|
||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(2), new ManaCostsImpl("{3}{G}"));
|
||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(2, "it"), new ManaCostsImpl("{3}{G}"));
|
||||
ability.addCost(new SacrificeSourceCost());
|
||||
ability.addTarget(new TargetAnyTarget());
|
||||
this.addAbility(ability);
|
||||
|
|
|
@ -60,7 +60,7 @@ class YavimayaDryadEffect extends SearchEffect {
|
|||
|
||||
public YavimayaDryadEffect(TargetCardInLibrary target) {
|
||||
super(target, Outcome.PutLandInPlay);
|
||||
staticText = "you may search your library for a Forest card and put it onto the battlefield tapped under target player's control. If you do, shuffle";
|
||||
staticText = "you may search your library for a Forest card, put it onto the battlefield tapped under target player's control, then shuffle";
|
||||
}
|
||||
|
||||
public YavimayaDryadEffect(final YavimayaDryadEffect effect) {
|
||||
|
|
|
@ -62,7 +62,7 @@ public class VerifyCardDataTest {
|
|||
|
||||
private static final Logger logger = Logger.getLogger(VerifyCardDataTest.class);
|
||||
|
||||
private static final String FULL_ABILITIES_CHECK_SET_CODE = "AFC"; // check all abilities and output cards with wrong abilities texts;
|
||||
private static final String FULL_ABILITIES_CHECK_SET_CODE = "TSP"; // 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
|
||||
|
||||
|
|
|
@ -29,6 +29,6 @@ public class ActivateOnlyByOpponentActivatedAbility extends ActivatedAbilityImpl
|
|||
|
||||
@Override
|
||||
public String getRule() {
|
||||
return super.getRule() + " Only any opponent may activate this ability.";
|
||||
return super.getRule() + " Only your opponents may activate this ability.";
|
||||
}
|
||||
}
|
||||
|
|
|
@ -27,7 +27,7 @@ public class ProtectionChosenColorAttachedEffect extends ContinuousEffectImpl {
|
|||
public ProtectionChosenColorAttachedEffect(boolean notRemoveItself) {
|
||||
super(Duration.WhileOnBattlefield, Layer.AbilityAddingRemovingEffects_6, SubLayer.NA, Outcome.AddAbility);
|
||||
this.notRemoveItself = notRemoveItself;
|
||||
staticText = "{this} has protection from the chosen color" + (notRemoveItself ? ". This effect doesn't remove {this}" : "");
|
||||
staticText = "enchanted creature has protection from the chosen color" + (notRemoveItself ? ". This effect doesn't remove {this}" : "");
|
||||
}
|
||||
|
||||
public ProtectionChosenColorAttachedEffect(final ProtectionChosenColorAttachedEffect effect) {
|
||||
|
|
|
@ -169,7 +169,7 @@ public class AddManaInAnyCombinationEffect extends ManaEffect {
|
|||
sb.append('{').append(coloredManaSymbol.toString()).append('}');
|
||||
}
|
||||
}
|
||||
if (amountString.equals("X")) {
|
||||
if (amountString.equals("X") && !amount.getMessage().isEmpty()) {
|
||||
sb.append(", where X is ");
|
||||
sb.append(amount.getMessage());
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue