diff --git a/Mage.Sets/src/mage/cards/a/AnuridBarkripper.java b/Mage.Sets/src/mage/cards/a/AnuridBarkripper.java index 4bc780ed368..a9bbe12f48e 100644 --- a/Mage.Sets/src/mage/cards/a/AnuridBarkripper.java +++ b/Mage.Sets/src/mage/cards/a/AnuridBarkripper.java @@ -29,7 +29,7 @@ public final class AnuridBarkripper extends CardImpl { // Threshold - Anurid Barkripper gets +2/+2 as long as seven or more cards are in your graveyard. this.addAbility(new SimpleStaticAbility(new ConditionalContinuousEffect( new BoostSourceEffect(2, 2, Duration.WhileOnBattlefield), ThresholdCondition.instance, - "as long as seven or more cards are in your graveyard, {this} gets +2/+2" + "{this} gets +2/+2 as long as seven or more cards are in your graveyard" )).setAbilityWord(AbilityWord.THRESHOLD)); } diff --git a/Mage.Sets/src/mage/cards/b/Bamboozle.java b/Mage.Sets/src/mage/cards/b/Bamboozle.java index 96b9e5aadd5..b80905a772a 100644 --- a/Mage.Sets/src/mage/cards/b/Bamboozle.java +++ b/Mage.Sets/src/mage/cards/b/Bamboozle.java @@ -48,7 +48,7 @@ class BamboozleEffect extends OneShotEffect { BamboozleEffect() { super(Outcome.Discard); - staticText = "Target player reveals the top four cards of their library. You choose two of those cards and put them into their graveyard. Put the rest on top of their library in any order"; + staticText = "Target player reveals the top four cards of their library. You choose two of those cards and put them into that player's graveyard. Put the rest on top of their library in any order"; } private BamboozleEffect(final BamboozleEffect effect) { diff --git a/Mage.Sets/src/mage/cards/b/Bloodcurdler.java b/Mage.Sets/src/mage/cards/b/Bloodcurdler.java index bf7db105f9d..126a33b6777 100644 --- a/Mage.Sets/src/mage/cards/b/Bloodcurdler.java +++ b/Mage.Sets/src/mage/cards/b/Bloodcurdler.java @@ -41,7 +41,7 @@ public final class Bloodcurdler extends CardImpl { // Threshold - As long as seven or more cards are in your graveyard, Bloodcurdler gets +1/+1 and has "At the beginning of your end step, exile two cards from your graveyard." Ability thresholdAbility = new SimpleStaticAbility(new ConditionalContinuousEffect( new BoostSourceEffect(1, 1, Duration.WhileOnBattlefield), ThresholdCondition.instance, - "If seven or more cards are in your graveyard, {this} gets +1/+1" + "As long as seven or more cards are in your graveyard, {this} gets +1/+1" )); thresholdAbility.addEffect(new ConditionalContinuousEffect( new GainAbilitySourceEffect(new BeginningOfEndStepTriggeredAbility( diff --git a/Mage.Sets/src/mage/cards/b/Brawn.java b/Mage.Sets/src/mage/cards/b/Brawn.java index 10e7f902d69..4ca0a1e8a4a 100644 --- a/Mage.Sets/src/mage/cards/b/Brawn.java +++ b/Mage.Sets/src/mage/cards/b/Brawn.java @@ -24,7 +24,7 @@ import mage.filter.common.FilterCreaturePermanent; */ public final class Brawn extends CardImpl { - private static final String ruleText = "As long as Brawn is in your graveyard and you control a Forest, creatures you control have trample"; + private static final String ruleText = "As long as this card is in your graveyard and you control a Forest, creatures you control have trample"; private static final FilterControlledPermanent filter = new FilterControlledPermanent("Forest"); diff --git a/Mage.Sets/src/mage/cards/c/CallousOppressor.java b/Mage.Sets/src/mage/cards/c/CallousOppressor.java index 08905a71b70..4b762b2cca9 100644 --- a/Mage.Sets/src/mage/cards/c/CallousOppressor.java +++ b/Mage.Sets/src/mage/cards/c/CallousOppressor.java @@ -48,7 +48,7 @@ public final class CallousOppressor extends CardImpl { ConditionalContinuousEffect effect = new ConditionalContinuousEffect( new GainControlTargetEffect(Duration.OneUse), SourceTappedCondition.TAPPED, - "Gain control of target creature for as long as {this} remains tapped"); + "Gain control of target creature that isn't of the chosen type for as long as {this} remains tapped"); Ability ability = new SimpleActivatedAbility(effect, new TapSourceCost()); ability.addTarget(new TargetCreaturePermanent(new CallousOppressorFilter())); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/c/Carbonize.java b/Mage.Sets/src/mage/cards/c/Carbonize.java index 482897002ca..3a4516960f8 100644 --- a/Mage.Sets/src/mage/cards/c/Carbonize.java +++ b/Mage.Sets/src/mage/cards/c/Carbonize.java @@ -1,17 +1,24 @@ - package mage.cards.c; -import java.util.UUID; +import mage.MageObjectReference; +import mage.abilities.Ability; +import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.DamageTargetEffect; -import mage.abilities.effects.common.ExileTargetIfDiesEffect; +import mage.abilities.effects.common.replacement.DiesReplacementEffect; import mage.abilities.effects.common.ruleModifying.CantRegenerateTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.Outcome; +import mage.game.Game; +import mage.game.permanent.Permanent; import mage.target.common.TargetAnyTarget; +import mage.target.targetpointer.FixedTarget; import mage.watchers.common.DamagedByWatcher; +import java.util.UUID; + /** * * @author markedagain @@ -21,12 +28,10 @@ public final class Carbonize extends CardImpl { public Carbonize(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{R}"); - // Carbonize deals 3 damage to any target. That creature can't be regenerated this turn. If the creature would die this turn, exile it instead. + // Carbonize deals 3 damage to any target. If it's a creature, it can't be regenerated this turn, and if it would die this turn, exile it instead. this.getSpellAbility().addEffect(new DamageTargetEffect(3)); - this.getSpellAbility().addEffect(new CantRegenerateTargetEffect(Duration.EndOfTurn, "That creature")); - this.getSpellAbility().addEffect(new ExileTargetIfDiesEffect().setText("If the creature would die this turn, exile it instead")); + this.getSpellAbility().addEffect(new CarbonizeEffect()); this.getSpellAbility().addTarget(new TargetAnyTarget()); - this.getSpellAbility().addWatcher(new DamagedByWatcher(false)); } @@ -39,3 +44,32 @@ public final class Carbonize extends CardImpl { return new Carbonize(this); } } + +class CarbonizeEffect extends OneShotEffect { + + CarbonizeEffect() { + super(Outcome.Benefit); + staticText = "If it's a creature, it can't be regenerated this turn, and if it would die this turn, exile it instead"; + } + + private CarbonizeEffect(final CarbonizeEffect effect) { + super(effect); + } + + @Override + public CarbonizeEffect copy() { + return new CarbonizeEffect(this); + } + + @Override + public boolean apply(Game game, Ability source) { + Permanent permanent = game.getPermanent(getTargetPointer().getFirst(game, source)); + if (permanent == null || !permanent.isCreature(game)) { + return false; + } + game.addEffect(new CantRegenerateTargetEffect(Duration.EndOfTurn, "") + .setTargetPointer(new FixedTarget(permanent, game)), source); + game.addEffect(new DiesReplacementEffect(new MageObjectReference(permanent, game), Duration.EndOfTurn), source); + return true; + } +} diff --git a/Mage.Sets/src/mage/cards/c/CatalystStone.java b/Mage.Sets/src/mage/cards/c/CatalystStone.java index 142a0892b57..11dbd13d808 100644 --- a/Mage.Sets/src/mage/cards/c/CatalystStone.java +++ b/Mage.Sets/src/mage/cards/c/CatalystStone.java @@ -53,7 +53,7 @@ class CatalystStoneCostReductionEffect extends CostModificationEffectImpl { CatalystStoneCostReductionEffect() { super(Duration.WhileOnBattlefield, Outcome.Benefit, CostModificationType.REDUCE_COST); - this.staticText = "Flashback costs you pay cost up to {2} less"; + this.staticText = "Flashback costs you pay cost {2} less"; } protected CatalystStoneCostReductionEffect(final CatalystStoneCostReductionEffect effect) { diff --git a/Mage.Sets/src/mage/cards/c/ChainOfSilence.java b/Mage.Sets/src/mage/cards/c/ChainOfSilence.java index 3e53c21fa54..cb2943c91f8 100644 --- a/Mage.Sets/src/mage/cards/c/ChainOfSilence.java +++ b/Mage.Sets/src/mage/cards/c/ChainOfSilence.java @@ -49,7 +49,7 @@ class ChainOfSilenceEffect extends OneShotEffect { ChainOfSilenceEffect() { super(Outcome.PreventDamage); - this.staticText = "Prevent all damage target creature would deal this turn. That creature's controller may sacrifice a land. If the player does, they may copy this spell and may choose a new target for that copy"; + this.staticText = "Prevent all damage target creature would deal this turn. That creature's controller may sacrifice a land of their choice. If the player does, they may copy this spell and may choose a new target for that copy"; } private ChainOfSilenceEffect(final ChainOfSilenceEffect effect) { diff --git a/Mage.Sets/src/mage/cards/c/ChainOfVapor.java b/Mage.Sets/src/mage/cards/c/ChainOfVapor.java index 1c49e722148..6df3f3ebee8 100644 --- a/Mage.Sets/src/mage/cards/c/ChainOfVapor.java +++ b/Mage.Sets/src/mage/cards/c/ChainOfVapor.java @@ -48,7 +48,7 @@ class ChainOfVaporEffect extends OneShotEffect { ChainOfVaporEffect() { super(Outcome.ReturnToHand); - this.staticText = "Return target nonland permanent to its owner's hand. Then that permanent's controller may sacrifice a land. If the player does, they may copy this spell and may choose a new target for that copy"; + this.staticText = "Return target nonland permanent to its owner's hand. Then that permanent's controller may sacrifice a land of their choice. If the player does, they may copy this spell and may choose a new target for that copy"; } private ChainOfVaporEffect(final ChainOfVaporEffect effect) { diff --git a/Mage.Sets/src/mage/cards/c/ChainerDementiaMaster.java b/Mage.Sets/src/mage/cards/c/ChainerDementiaMaster.java index 3d40820b2cd..de9c184a6ae 100644 --- a/Mage.Sets/src/mage/cards/c/ChainerDementiaMaster.java +++ b/Mage.Sets/src/mage/cards/c/ChainerDementiaMaster.java @@ -36,7 +36,7 @@ import mage.target.targetpointer.FixedTarget; */ public final class ChainerDementiaMaster extends CardImpl { - private static final FilterCreaturePermanent filterCreature = new FilterCreaturePermanent("Nightmare creatures"); + private static final FilterCreaturePermanent filterCreature = new FilterCreaturePermanent("All Nightmares"); private static final FilterPermanent filterPermanent = new FilterPermanent("Nightmares"); static { filterCreature.add(SubType.NIGHTMARE.getPredicate()); diff --git a/Mage.Sets/src/mage/cards/c/ChildhoodHorror.java b/Mage.Sets/src/mage/cards/c/ChildhoodHorror.java index 8962e7a938a..0522f3a2a4e 100644 --- a/Mage.Sets/src/mage/cards/c/ChildhoodHorror.java +++ b/Mage.Sets/src/mage/cards/c/ChildhoodHorror.java @@ -36,7 +36,7 @@ public final class ChildhoodHorror extends CardImpl { // Threshold - As long as seven or more cards are in your graveyard, Childhood Horror gets +2/+2 and can't block. Ability thresholdAbility = new SimpleStaticAbility(new ConditionalContinuousEffect( new BoostSourceEffect(2, 2, Duration.WhileOnBattlefield), - ThresholdCondition.instance, "If seven or more cards are in your graveyard, {this} gets +2/+2" + ThresholdCondition.instance, "As long as seven or more cards are in your graveyard, {this} gets +2/+2" )); thresholdAbility.addEffect(new ConditionalRestrictionEffect( new CantBlockSourceEffect(Duration.WhileOnBattlefield), ThresholdCondition.instance diff --git a/Mage.Sets/src/mage/cards/d/DaruCavalier.java b/Mage.Sets/src/mage/cards/d/DaruCavalier.java index 9e01ab2555e..d3ad1b9cb9f 100644 --- a/Mage.Sets/src/mage/cards/d/DaruCavalier.java +++ b/Mage.Sets/src/mage/cards/d/DaruCavalier.java @@ -38,7 +38,7 @@ public final class DaruCavalier extends CardImpl { this.addAbility(FirstStrikeAbility.getInstance()); // When Daru Cavalier enters the battlefield, you may search your library for a card named Daru Cavalier, reveal it, and put it into your hand. If you do, shuffle your library. - TargetCardInLibrary target = new TargetCardInLibrary(0, 1, filter); + TargetCardInLibrary target = new TargetCardInLibrary(filter); this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInHandEffect(target, true), true)); } diff --git a/Mage.Sets/src/mage/cards/d/DevotedCaretaker.java b/Mage.Sets/src/mage/cards/d/DevotedCaretaker.java index 40dbee78f9d..28b65b125a1 100644 --- a/Mage.Sets/src/mage/cards/d/DevotedCaretaker.java +++ b/Mage.Sets/src/mage/cards/d/DevotedCaretaker.java @@ -26,7 +26,7 @@ import mage.target.common.TargetControlledPermanent; */ public final class DevotedCaretaker extends CardImpl { - private static final FilterSpell filter = new FilterSpell("instant spells and sorcery spells"); + private static final FilterSpell filter = new FilterSpell("instant spells and from sorcery spells"); static{ filter.add(Predicates.or(CardType.SORCERY.getPredicate(), CardType.INSTANT.getPredicate())); diff --git a/Mage.Sets/src/mage/cards/d/DirtyWererat.java b/Mage.Sets/src/mage/cards/d/DirtyWererat.java index 5301799e739..e0ed0f84f33 100644 --- a/Mage.Sets/src/mage/cards/d/DirtyWererat.java +++ b/Mage.Sets/src/mage/cards/d/DirtyWererat.java @@ -43,7 +43,7 @@ public final class DirtyWererat extends CardImpl { // Threshold - As long as seven or more cards are in your graveyard, Dirty Wererat gets +2/+2 and can't block. Ability thresholdAbility = new SimpleStaticAbility(new ConditionalContinuousEffect( new BoostSourceEffect(2, 2, Duration.WhileOnBattlefield), - ThresholdCondition.instance, "If seven or more cards are in your graveyard, {this} gets +2/+2" + ThresholdCondition.instance, "As long as seven or more cards are in your graveyard, {this} gets +2/+2" )); thresholdAbility.addEffect(new ConditionalRestrictionEffect( new CantBlockSourceEffect(Duration.WhileOnBattlefield), ThresholdCondition.instance diff --git a/Mage.Sets/src/mage/cards/d/DivineSacrament.java b/Mage.Sets/src/mage/cards/d/DivineSacrament.java index 3e17d625f4a..10323cef53d 100644 --- a/Mage.Sets/src/mage/cards/d/DivineSacrament.java +++ b/Mage.Sets/src/mage/cards/d/DivineSacrament.java @@ -37,7 +37,7 @@ public final class DivineSacrament extends CardImpl { // Threshold - White creatures get an additional +1/+1 as long as seven or more cards are in your graveyard. this.addAbility(new SimpleStaticAbility(new ConditionalContinuousEffect( new BoostAllEffect(1, 1, Duration.WhileOnBattlefield, filter, false), - ThresholdCondition.instance, "If seven or more cards are in your graveyard, white creatures get an additional +1/+1." + ThresholdCondition.instance, "white creatures get an additional +1/+1 as long as seven or more cards are in your graveyard" )).setAbilityWord(AbilityWord.THRESHOLD)); } diff --git a/Mage.Sets/src/mage/cards/e/Epicenter.java b/Mage.Sets/src/mage/cards/e/Epicenter.java index 623498e3ea9..ec78e7f0973 100644 --- a/Mage.Sets/src/mage/cards/e/Epicenter.java +++ b/Mage.Sets/src/mage/cards/e/Epicenter.java @@ -32,7 +32,7 @@ public final class Epicenter extends CardImpl { // Target player sacrifices a land. this.getSpellAbility().addEffect(new ConditionalOneShotEffect( new SacrificeEffect(StaticFilters.FILTER_LAND, 1, "Target player"), - condition, "Target player sacrifices a land" + condition, "Target player sacrifices a land of their choice" )); this.getSpellAbility().addTarget(new TargetPlayer()); diff --git a/Mage.Sets/src/mage/cards/f/Filth.java b/Mage.Sets/src/mage/cards/f/Filth.java index 324e7eee31f..3c7c0b9e14d 100644 --- a/Mage.Sets/src/mage/cards/f/Filth.java +++ b/Mage.Sets/src/mage/cards/f/Filth.java @@ -23,7 +23,7 @@ import mage.filter.common.FilterControlledPermanent; */ public final class Filth extends CardImpl { - private static final String ruleText = "As long as Filth is in your graveyard and you control a Swamp, creatures you control have swampwalk"; + private static final String ruleText = "As long as this card is in your graveyard and you control a Swamp, creatures you control have swampwalk"; private static final FilterControlledPermanent filter = new FilterControlledPermanent("Swamp"); diff --git a/Mage.Sets/src/mage/cards/f/FlameBurst.java b/Mage.Sets/src/mage/cards/f/FlameBurst.java index dc4842490a4..a0b5f4939a7 100644 --- a/Mage.Sets/src/mage/cards/f/FlameBurst.java +++ b/Mage.Sets/src/mage/cards/f/FlameBurst.java @@ -64,7 +64,7 @@ public final class FlameBurst extends CardImpl { class CountAsFlameBurstAbility extends SimpleStaticAbility { public CountAsFlameBurstAbility() { - super(Zone.GRAVEYARD, new InfoEffect("If {this} is in a graveyard, effects from spells named Flame Burst count it as a card named Flame Burst")); + super(Zone.GRAVEYARD, new InfoEffect("If this card is in a graveyard, effects from spells named Flame Burst count it as a card named Flame Burst")); } private CountAsFlameBurstAbility(CountAsFlameBurstAbility ability) { diff --git a/Mage.Sets/src/mage/cards/f/Frightcrawler.java b/Mage.Sets/src/mage/cards/f/Frightcrawler.java index 4ab8b4411fb..fbf25b0a792 100644 --- a/Mage.Sets/src/mage/cards/f/Frightcrawler.java +++ b/Mage.Sets/src/mage/cards/f/Frightcrawler.java @@ -36,7 +36,7 @@ public final class Frightcrawler extends CardImpl { // Threshold - As long as seven or more cards are in your graveyard, Frightcrawler gets +2/+2 and can't block. Ability ability = new SimpleStaticAbility(new ConditionalContinuousEffect( new BoostSourceEffect(2, 2, Duration.WhileOnBattlefield), - ThresholdCondition.instance, "If seven or more cards are in your graveyard, {this} gets +2/+2 " + ThresholdCondition.instance, "As long as seven or more cards are in your graveyard, {this} gets +2/+2" )); ability.addEffect(new ConditionalRestrictionEffect( new CantBlockSourceEffect(Duration.WhileOnBattlefield), diff --git a/Mage.Sets/src/mage/cards/g/GempalmIncinerator.java b/Mage.Sets/src/mage/cards/g/GempalmIncinerator.java index cc03249ec59..75f6e4a7e32 100644 --- a/Mage.Sets/src/mage/cards/g/GempalmIncinerator.java +++ b/Mage.Sets/src/mage/cards/g/GempalmIncinerator.java @@ -37,7 +37,8 @@ public final class GempalmIncinerator extends CardImpl { // Cycling {1}{R} this.addAbility(new CyclingAbility(new ManaCostsImpl<>("{1}{R}"))); // When you cycle Gempalm Incinerator, you may have it deal X damage to target creature, where X is the number of Goblins on the battlefield. - Ability ability = new CycleTriggeredAbility(new DamageTargetEffect(new PermanentsOnBattlefieldCount(filter)),true); + Ability ability = new CycleTriggeredAbility(new DamageTargetEffect(new PermanentsOnBattlefieldCount(filter)) + .setText("you may have it deal X damage to target creature, where X is the number of Goblins on the battlefield"),true); ability.addTarget(new TargetCreaturePermanent()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/g/GhastlyRemains.java b/Mage.Sets/src/mage/cards/g/GhastlyRemains.java index 4abb971a068..4dd8ddeaccc 100644 --- a/Mage.Sets/src/mage/cards/g/GhastlyRemains.java +++ b/Mage.Sets/src/mage/cards/g/GhastlyRemains.java @@ -35,7 +35,7 @@ public final class GhastlyRemains extends CardImpl { // At the beginning of your upkeep, if Ghastly Remains is in your graveyard, you may pay {B}{B}{B}. If you do, return Ghastly Remains to your hand. this.addAbility(new BeginningOfUpkeepTriggeredAbility(Zone.GRAVEYARD, - TargetController.YOU, new DoIfCostPaid(new ReturnSourceFromGraveyardToHandEffect().setText("return {this} to your hand"), new ManaCostsImpl<>("{B}{B}{B}")), + TargetController.YOU, new DoIfCostPaid(new ReturnSourceFromGraveyardToHandEffect().setText("return it to your hand"), new ManaCostsImpl<>("{B}{B}{B}")), false).withInterveningIf(SourceInGraveyardCondition.instance)); } diff --git a/Mage.Sets/src/mage/cards/g/Gigapede.java b/Mage.Sets/src/mage/cards/g/Gigapede.java index 0e936cc5eb9..5b18c91032b 100644 --- a/Mage.Sets/src/mage/cards/g/Gigapede.java +++ b/Mage.Sets/src/mage/cards/g/Gigapede.java @@ -34,7 +34,7 @@ public final class Gigapede extends CardImpl { // At the beginning of your upkeep, if Gigapede is in your graveyard, you may discard a card. If you do, return Gigapede to your hand. this.addAbility(new BeginningOfUpkeepTriggeredAbility(Zone.GRAVEYARD, - TargetController.YOU, new DoIfCostPaid(new ReturnSourceFromGraveyardToHandEffect().setText("return {this} to your hand"), new DiscardCardCost()), + TargetController.YOU, new DoIfCostPaid(new ReturnSourceFromGraveyardToHandEffect().setText("return this card to your hand"), new DiscardCardCost()), false).withInterveningIf(SourceInGraveyardCondition.instance)); } diff --git a/Mage.Sets/src/mage/cards/g/Glory.java b/Mage.Sets/src/mage/cards/g/Glory.java index 295de6d07dc..2ade98d96bb 100644 --- a/Mage.Sets/src/mage/cards/g/Glory.java +++ b/Mage.Sets/src/mage/cards/g/Glory.java @@ -32,7 +32,7 @@ public final class Glory extends CardImpl { this.addAbility(FlyingAbility.getInstance()); // {2}{W}: Choose a color. Creatures you control gain protection from the chosen color until end of turn. Activate this ability only if Glory is in your graveyard. Effect effect = new GainProtectionFromColorAllEffect(Duration.EndOfTurn, StaticFilters.FILTER_CONTROLLED_CREATURES); - effect.setText("Choose a color. Creatures you control gain protection from the chosen color until end of turn. Activate only if {this} is in your graveyard."); + effect.setText("Choose a color. Creatures you control gain protection from the chosen color until end of turn. Activate only if this card is in your graveyard."); this.addAbility(new SimpleActivatedAbility(Zone.GRAVEYARD, effect, new ManaCostsImpl<>("{2}{W}"))); } diff --git a/Mage.Sets/src/mage/cards/g/GoblinAssassin.java b/Mage.Sets/src/mage/cards/g/GoblinAssassin.java index 24c2febb2c8..92f12f026e0 100644 --- a/Mage.Sets/src/mage/cards/g/GoblinAssassin.java +++ b/Mage.Sets/src/mage/cards/g/GoblinAssassin.java @@ -54,7 +54,7 @@ class GoblinAssassinTriggeredEffect extends OneShotEffect { GoblinAssassinTriggeredEffect() { super(Outcome.Sacrifice); - staticText = "each player flips a coin. Each player whose coin comes up tails sacrifices a creature"; + staticText = "each player flips a coin. Each player whose coin comes up tails sacrifices a creature of their choice"; } private GoblinAssassinTriggeredEffect(final GoblinAssassinTriggeredEffect effect) { diff --git a/Mage.Sets/src/mage/cards/g/GoblinWarStrike.java b/Mage.Sets/src/mage/cards/g/GoblinWarStrike.java index e5d4bfd3a2a..ddb23d994ee 100644 --- a/Mage.Sets/src/mage/cards/g/GoblinWarStrike.java +++ b/Mage.Sets/src/mage/cards/g/GoblinWarStrike.java @@ -29,7 +29,7 @@ public final class GoblinWarStrike extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{R}"); // Goblin War Strike deals damage equal to the number of Goblins you control to target player. - this.getSpellAbility().addEffect(new DamageTargetEffect(new PermanentsOnBattlefieldCount(filter))); + this.getSpellAbility().addEffect(new DamageTargetEffect(new PermanentsOnBattlefieldCount(filter, null))); this.getSpellAbility().addTarget(new TargetPlayerOrPlaneswalker()); } diff --git a/Mage.Sets/src/mage/cards/g/Gravestorm.java b/Mage.Sets/src/mage/cards/g/Gravestorm.java index ffd40b75211..97b6d925b4a 100644 --- a/Mage.Sets/src/mage/cards/g/Gravestorm.java +++ b/Mage.Sets/src/mage/cards/g/Gravestorm.java @@ -47,7 +47,7 @@ class GravestormEffect extends OneShotEffect { GravestormEffect() { super(Outcome.Exile); - this.staticText = "At the beginning of your upkeep, target opponent may exile a card from their graveyard. If that player doesn't, you may draw a card."; + this.staticText = "target opponent may exile a card from their graveyard. If that player doesn't, you may draw a card."; } private GravestormEffect(final GravestormEffect effect) { diff --git a/Mage.Sets/src/mage/cards/g/Gurzigost.java b/Mage.Sets/src/mage/cards/g/Gurzigost.java index e4a3d39e8af..dfbf9edb8b6 100644 --- a/Mage.Sets/src/mage/cards/g/Gurzigost.java +++ b/Mage.Sets/src/mage/cards/g/Gurzigost.java @@ -44,7 +44,7 @@ public final class Gurzigost extends CardImpl { // {G}{G}, Discard a card: You may have Gurzigost assign its combat damage this turn as though it weren't blocked. Effect effect = new GainAbilitySourceEffect(DamageAsThoughNotBlockedAbility.getInstance(), Duration.EndOfTurn); - effect.setText("You may have Gurzigost assign its combat damage this turn as though it weren't blocked"); + effect.setText("You may have {this} assign its combat damage this turn as though it weren't blocked"); Ability ability = new SimpleActivatedAbility(effect, new ManaCostsImpl<>("{G}{G}")); ability.addCost(new DiscardCardCost()); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/i/Ichorid.java b/Mage.Sets/src/mage/cards/i/Ichorid.java index 73048fd93be..48f3bc90432 100644 --- a/Mage.Sets/src/mage/cards/i/Ichorid.java +++ b/Mage.Sets/src/mage/cards/i/Ichorid.java @@ -29,7 +29,7 @@ import java.util.UUID; */ public final class Ichorid extends CardImpl { - private static final FilterCard filter = new FilterCreatureCard("a black creature card other than {this}"); + private static final FilterCard filter = new FilterCreatureCard("a black creature card other than this card"); static { filter.add(AnotherPredicate.instance); @@ -51,7 +51,7 @@ public final class Ichorid extends CardImpl { // At the beginning of your upkeep, if Ichorid is in your graveyard, you may exile a black creature card other than Ichorid from your graveyard. If you do, return Ichorid to the battlefield. this.addAbility(new BeginningOfUpkeepTriggeredAbility(Zone.GRAVEYARD, TargetController.YOU, new DoIfCostPaid( - new ReturnSourceFromGraveyardToBattlefieldEffect().setText("return {this} to the battlefield"), + new ReturnSourceFromGraveyardToBattlefieldEffect().setText("return this card to the battlefield"), new ExileFromGraveCost(new TargetCardInYourGraveyard(filter)) ), false).withInterveningIf(SourceInGraveyardCondition.instance)); } diff --git a/Mage.Sets/src/mage/cards/i/InfectiousRage.java b/Mage.Sets/src/mage/cards/i/InfectiousRage.java index 7d07b642f06..ecf4aba4374 100644 --- a/Mage.Sets/src/mage/cards/i/InfectiousRage.java +++ b/Mage.Sets/src/mage/cards/i/InfectiousRage.java @@ -63,7 +63,7 @@ class InfectiousRageReattachEffect extends OneShotEffect { InfectiousRageReattachEffect() { super(Outcome.PutCardInPlay); - this.staticText = "choose a creature at random {this} can enchant. Return {this} to the battlefield attached to that creature."; + this.staticText = "choose a creature at random {this} can enchant. Return this card to the battlefield attached to that creature."; } private InfectiousRageReattachEffect(final InfectiousRageReattachEffect effect) { diff --git a/Mage.Sets/src/mage/cards/i/IridescentAngel.java b/Mage.Sets/src/mage/cards/i/IridescentAngel.java index 51cf0f3a4ee..e566264d531 100644 --- a/Mage.Sets/src/mage/cards/i/IridescentAngel.java +++ b/Mage.Sets/src/mage/cards/i/IridescentAngel.java @@ -20,7 +20,7 @@ import mage.filter.predicate.mageobject.ColorPredicate; */ public final class IridescentAngel extends CardImpl { - private static final FilterCard filter = new FilterCard("all colors"); + private static final FilterCard filter = new FilterCard("each color"); static { filter.add(Predicates.or( diff --git a/Mage.Sets/src/mage/cards/l/LastLaugh.java b/Mage.Sets/src/mage/cards/l/LastLaugh.java index 89a2c391a8c..929369f04a7 100644 --- a/Mage.Sets/src/mage/cards/l/LastLaugh.java +++ b/Mage.Sets/src/mage/cards/l/LastLaugh.java @@ -22,7 +22,7 @@ import mage.game.events.GameEvent; */ public final class LastLaugh extends CardImpl { - private static final FilterPermanent filter = new FilterPermanent("a permanent other than Last Laugh"); + private static final FilterPermanent filter = new FilterPermanent("a permanent other than {this}"); static { filter.add(AnotherPredicate.instance); } diff --git a/Mage.Sets/src/mage/cards/m/MuscleBurst.java b/Mage.Sets/src/mage/cards/m/MuscleBurst.java index be0b8904a56..a5d94e6c15e 100644 --- a/Mage.Sets/src/mage/cards/m/MuscleBurst.java +++ b/Mage.Sets/src/mage/cards/m/MuscleBurst.java @@ -67,7 +67,7 @@ public final class MuscleBurst extends CardImpl { class CountAsMuscleBurstAbility extends SimpleStaticAbility { public CountAsMuscleBurstAbility() { - super(Zone.GRAVEYARD, new InfoEffect("If {this} is in a graveyard, effects from spells named Muscle Burst count it as a card named Muscle Burst")); + super(Zone.GRAVEYARD, new InfoEffect("If this card is in a graveyard, effects from spells named Muscle Burst count it as a card named Muscle Burst")); } private CountAsMuscleBurstAbility(CountAsMuscleBurstAbility ability) { diff --git a/Mage.Sets/src/mage/cards/m/MysticEnforcer.java b/Mage.Sets/src/mage/cards/m/MysticEnforcer.java index cb8df497a06..8e4f79a485d 100644 --- a/Mage.Sets/src/mage/cards/m/MysticEnforcer.java +++ b/Mage.Sets/src/mage/cards/m/MysticEnforcer.java @@ -39,7 +39,7 @@ public final class MysticEnforcer extends CardImpl { // Threshold - As long as seven or more cards are in your graveyard, Mystic Enforcer gets +3/+3 and has flying. Ability ability = new SimpleStaticAbility(new ConditionalContinuousEffect( new BoostSourceEffect(3, 3, Duration.WhileOnBattlefield), ThresholdCondition.instance, - " as long as seven or more cards are in your graveyard, {this} gets +3/+3" + "as long as seven or more cards are in your graveyard, {this} gets +3/+3" )); ability.addEffect(new ConditionalContinuousEffect( new GainAbilitySourceEffect(FlyingAbility.getInstance()), diff --git a/Mage.Sets/src/mage/cards/n/Nefashu.java b/Mage.Sets/src/mage/cards/n/Nefashu.java index cacd0053c4e..7556c4eaacb 100644 --- a/Mage.Sets/src/mage/cards/n/Nefashu.java +++ b/Mage.Sets/src/mage/cards/n/Nefashu.java @@ -1,4 +1,3 @@ - package mage.cards.n; import java.util.UUID; @@ -18,8 +17,6 @@ import mage.target.common.TargetCreaturePermanent; * @author jeffwadsworth */ public final class Nefashu extends CardImpl { - - static final String rule = "Whenever Nefashu attacks, up to five target creatures each get -1/-1 until end of turn."; public Nefashu(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}{B}"); @@ -30,7 +27,7 @@ public final class Nefashu extends CardImpl { this.toughness = new MageInt(3); // Whenever Nefashu attacks, up to five target creatures each get -1/-1 until end of turn. - Ability ability = new AttacksTriggeredAbility(new BoostTargetEffect(-1, -1, Duration.EndOfTurn), false, rule); + Ability ability = new AttacksTriggeredAbility(new BoostTargetEffect(-1, -1, Duration.EndOfTurn), false); ability.addTarget(new TargetCreaturePermanent(0, 5)); this.addAbility(ability); } @@ -43,4 +40,4 @@ public final class Nefashu extends CardImpl { public Nefashu copy() { return new Nefashu(this); } -} \ No newline at end of file +} diff --git a/Mage.Sets/src/mage/cards/n/NutCollector.java b/Mage.Sets/src/mage/cards/n/NutCollector.java index f524b4ec945..adbf617ce71 100644 --- a/Mage.Sets/src/mage/cards/n/NutCollector.java +++ b/Mage.Sets/src/mage/cards/n/NutCollector.java @@ -43,7 +43,7 @@ public final class NutCollector extends CardImpl { // Threshold - Squirrel creatures get +2/+2 as long as seven or more cards are in your graveyard. Ability ability = new SimpleStaticAbility(new ConditionalContinuousEffect( new BoostAllEffect(2, 2, Duration.WhileOnBattlefield, filter, false), - ThresholdCondition.instance, "Squirrel creatures get +2/+2 as long as seven or more cards are in your graveyard" + ThresholdCondition.instance, "All Squirrels get +2/+2 as long as seven or more cards are in your graveyard" )); ability.setAbilityWord(AbilityWord.THRESHOLD); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/p/Painbringer.java b/Mage.Sets/src/mage/cards/p/Painbringer.java index 1ad9beda52c..c5057018317 100644 --- a/Mage.Sets/src/mage/cards/p/Painbringer.java +++ b/Mage.Sets/src/mage/cards/p/Painbringer.java @@ -38,7 +38,8 @@ public final class Painbringer extends CardImpl { Effect effect = new BoostTargetEffect(X, X, Duration.EndOfTurn); effect.setText("Target creature gets -X/-X until end of turn, where X is the number of cards exiled this way"); Ability ability = new SimpleActivatedAbility(effect, new TapSourceCost()); - ability.addCost(new ExileXFromYourGraveCost(new FilterCard("any number of cards from your graveyard"))); + ability.addCost(new ExileXFromYourGraveCost(new FilterCard("any number of cards from your graveyard")) + .setText("Exile any number of cards from your graveyard")); ability.addTarget(new TargetCreaturePermanent()); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/p/ParallelThoughts.java b/Mage.Sets/src/mage/cards/p/ParallelThoughts.java index 8d8e5c29245..e7cd28480ab 100644 --- a/Mage.Sets/src/mage/cards/p/ParallelThoughts.java +++ b/Mage.Sets/src/mage/cards/p/ParallelThoughts.java @@ -114,7 +114,7 @@ class ParallelThoughtsReplacementEffect extends ReplacementEffectImpl { ParallelThoughtsReplacementEffect() { super(Duration.WhileOnBattlefield, Outcome.DrawCard); - staticText = "If you would draw a card, you may instead put the top card of the pile you exiled with {this} into your hand"; + staticText = "If you would draw a card, you may instead put the top card of the pile you exiled into your hand"; } private ParallelThoughtsReplacementEffect(final ParallelThoughtsReplacementEffect effect) { diff --git a/Mage.Sets/src/mage/cards/p/PardicArsonist.java b/Mage.Sets/src/mage/cards/p/PardicArsonist.java index ca73e9a1fe3..0af67015c66 100644 --- a/Mage.Sets/src/mage/cards/p/PardicArsonist.java +++ b/Mage.Sets/src/mage/cards/p/PardicArsonist.java @@ -35,7 +35,7 @@ public final class PardicArsonist extends CardImpl { this.addAbility(new SimpleStaticAbility(new ConditionalContinuousEffect( new GainAbilitySourceEffect(ability), ThresholdCondition.instance, "As long as " + "seven or more cards are in your graveyard, {this} has \"When {this} " + - "enters the battlefield, it deals 3 damage to any target.\"" + "enters, it deals 3 damage to any target.\"" )).setAbilityWord(AbilityWord.THRESHOLD)); } diff --git a/Mage.Sets/src/mage/cards/p/ProfanePrayers.java b/Mage.Sets/src/mage/cards/p/ProfanePrayers.java index 9b0119395c6..4fe514bff76 100644 --- a/Mage.Sets/src/mage/cards/p/ProfanePrayers.java +++ b/Mage.Sets/src/mage/cards/p/ProfanePrayers.java @@ -2,6 +2,8 @@ package mage.cards.p; import java.util.UUID; + +import mage.abilities.dynamicvalue.DynamicValue; import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.effects.common.GainLifeEffect; @@ -23,14 +25,18 @@ public final class ProfanePrayers extends CardImpl { static { filter.add(SubType.CLERIC.getPredicate()); } + + private static final DynamicValue xValue = new PermanentsOnBattlefieldCount(filter); public ProfanePrayers(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{B}{B}"); // Profane Prayers deals X damage to any target and you gain X life, where X is the number of Clerics on the battlefield. - this.getSpellAbility().addEffect(new DamageTargetEffect(new PermanentsOnBattlefieldCount(filter))); + this.getSpellAbility().addEffect(new DamageTargetEffect(xValue) + .setText("{this} deals X damage to any target")); this.getSpellAbility().addTarget(new TargetAnyTarget()); - this.getSpellAbility().addEffect(new GainLifeEffect(new PermanentsOnBattlefieldCount(filter))); + this.getSpellAbility().addEffect(new GainLifeEffect(xValue) + .setText("and you gain X life, where X is the number of Clerics on the battlefield")); } private ProfanePrayers(final ProfanePrayers card) { diff --git a/Mage.Sets/src/mage/cards/p/ProwlingPangolin.java b/Mage.Sets/src/mage/cards/p/ProwlingPangolin.java index 714b1231788..177524ca497 100644 --- a/Mage.Sets/src/mage/cards/p/ProwlingPangolin.java +++ b/Mage.Sets/src/mage/cards/p/ProwlingPangolin.java @@ -49,7 +49,7 @@ class ProwlingPangolinEffect extends OneShotEffect { ProwlingPangolinEffect() { super(Outcome.Sacrifice); - this.staticText = "any player may sacrifice two creatures. If a player does, sacrifice {this}"; + this.staticText = "any player may sacrifice two creatures of their choice. If a player does, sacrifice {this}"; } private ProwlingPangolinEffect(final ProwlingPangolinEffect effect) { diff --git a/Mage.Sets/src/mage/cards/r/RebornHero.java b/Mage.Sets/src/mage/cards/r/RebornHero.java index 7909cda325c..c62ac0b030e 100644 --- a/Mage.Sets/src/mage/cards/r/RebornHero.java +++ b/Mage.Sets/src/mage/cards/r/RebornHero.java @@ -40,7 +40,7 @@ public final class RebornHero extends CardImpl { new ReturnSourceFromGraveyardToBattlefieldEffect(), new ManaCostsImpl<>("{W}{W}") ))), ThresholdCondition.instance, "As long as seven or more cards are in " + "your graveyard, {this} has \"When {this} dies, you may pay {W}{W}. If you do, " + - "return {this} to the battlefield under your control.\"" + "return this card to the battlefield under your control.\"" )).setAbilityWord(AbilityWord.THRESHOLD)); } diff --git a/Mage.Sets/src/mage/cards/r/RiftstonePortal.java b/Mage.Sets/src/mage/cards/r/RiftstonePortal.java index ed44ec90d8a..6be6aae4e4a 100644 --- a/Mage.Sets/src/mage/cards/r/RiftstonePortal.java +++ b/Mage.Sets/src/mage/cards/r/RiftstonePortal.java @@ -31,7 +31,7 @@ public final class RiftstonePortal extends CardImpl { // As long as Riftstone Portal is in your graveyard, lands you control have "{T}: Add {G} or {W}." ContinuousEffect effect = new GainAbilityControlledEffect(new GreenManaAbility(), Duration.WhileOnBattlefield, new FilterControlledLandPermanent()); - effect.setText("As long as Riftstone Portal is in your graveyard, lands you control have \"{T}: Add {G} or {W}.\""); + effect.setText("As long as this card is in your graveyard, lands you control have \"{T}: Add {G} or {W}.\""); Ability ability = new SimpleStaticAbility(Zone.GRAVEYARD, effect); effect = new GainAbilityControlledEffect(new WhiteManaAbility(), Duration.WhileOnBattlefield, new FilterControlledLandPermanent()); diff --git a/Mage.Sets/src/mage/cards/s/SetonsScout.java b/Mage.Sets/src/mage/cards/s/SetonsScout.java index 747cac21439..5013d005e4d 100644 --- a/Mage.Sets/src/mage/cards/s/SetonsScout.java +++ b/Mage.Sets/src/mage/cards/s/SetonsScout.java @@ -35,7 +35,7 @@ public final class SetonsScout extends CardImpl { // Threshold - Seton's Scout gets +2/+2 as long as seven or more cards are in your graveyard. this.addAbility(new SimpleStaticAbility(new ConditionalContinuousEffect( new BoostSourceEffect(2, 2, Duration.WhileOnBattlefield), ThresholdCondition.instance, - "As long as seven or more cards are in your graveyard, {this} gets +2/+2" + "{this} gets +2/+2 as long as seven or more cards are in your graveyard" )).setAbilityWord(AbilityWord.THRESHOLD)); } diff --git a/Mage.Sets/src/mage/cards/s/ShiftyDoppelganger.java b/Mage.Sets/src/mage/cards/s/ShiftyDoppelganger.java index 4404cf0a4c9..516673e472e 100644 --- a/Mage.Sets/src/mage/cards/s/ShiftyDoppelganger.java +++ b/Mage.Sets/src/mage/cards/s/ShiftyDoppelganger.java @@ -58,7 +58,7 @@ class ShiftyDoppelgangerExileEffect extends OneShotEffect { super(Outcome.PutCreatureInPlay); this.staticText = "You may put a creature card from your hand onto the battlefield. If you do, " + "that creature gains haste until end of turn. At the beginning of the next end step, " + - "sacrifice that creature. If you do, return {this} to the battlefield"; + "sacrifice that creature. If you do, return this card to the battlefield"; } private ShiftyDoppelgangerExileEffect(final ShiftyDoppelgangerExileEffect effect) { diff --git a/Mage.Sets/src/mage/cards/s/SoulgorgerOrgg.java b/Mage.Sets/src/mage/cards/s/SoulgorgerOrgg.java index 700736c6f08..dce856d8e84 100644 --- a/Mage.Sets/src/mage/cards/s/SoulgorgerOrgg.java +++ b/Mage.Sets/src/mage/cards/s/SoulgorgerOrgg.java @@ -88,7 +88,7 @@ class SoulgorgerOrggGainLifeEffect extends OneShotEffect { SoulgorgerOrggGainLifeEffect() { super(Outcome.GainLife); - staticText = "you gain life equal to the life you lost when it entered the battlefield"; + staticText = "you gain life equal to the life you lost when it entered"; } private SoulgorgerOrggGainLifeEffect(final SoulgorgerOrggGainLifeEffect effect) { diff --git a/Mage.Sets/src/mage/cards/s/Sparksmith.java b/Mage.Sets/src/mage/cards/s/Sparksmith.java index 40fd6b3e42f..7a11696bfc3 100644 --- a/Mage.Sets/src/mage/cards/s/Sparksmith.java +++ b/Mage.Sets/src/mage/cards/s/Sparksmith.java @@ -6,6 +6,7 @@ import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.common.TapSourceCost; +import mage.abilities.dynamicvalue.DynamicValue; import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.effects.common.DamageControllerEffect; import mage.abilities.effects.common.DamageTargetEffect; @@ -27,6 +28,7 @@ public final class Sparksmith extends CardImpl { static { filter.add(SubType.GOBLIN.getPredicate()); } + private static final DynamicValue xValue = new PermanentsOnBattlefieldCount(filter); public Sparksmith(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}"); @@ -36,9 +38,11 @@ public final class Sparksmith extends CardImpl { this.toughness = new MageInt(1); // {tap}: Sparksmith deals X damage to target creature and X damage to you, where X is the number of Goblins on the battlefield. - Ability ability = new SimpleActivatedAbility(new DamageTargetEffect(new PermanentsOnBattlefieldCount(filter)), new TapSourceCost()); + Ability ability = new SimpleActivatedAbility(new DamageTargetEffect(xValue) + .setText("{this} deals X damage to target creature"), new TapSourceCost()); ability.addTarget(new TargetCreaturePermanent()); - ability.addEffect(new DamageControllerEffect(new PermanentsOnBattlefieldCount(filter))); + ability.addEffect(new DamageControllerEffect(xValue) + .setText("and X damage to you, where X is the number of Goblins on the battlefield")); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/Spiritualize.java b/Mage.Sets/src/mage/cards/s/Spiritualize.java index eb7f321f6de..143b0e2ac33 100644 --- a/Mage.Sets/src/mage/cards/s/Spiritualize.java +++ b/Mage.Sets/src/mage/cards/s/Spiritualize.java @@ -1,23 +1,22 @@ package mage.cards.s; -import java.util.UUID; -import mage.abilities.Ability; import mage.abilities.DelayedTriggeredAbility; import mage.abilities.dynamicvalue.common.SavedDamageValue; import mage.abilities.effects.Effect; -import mage.abilities.effects.common.GainLifeEffect; import mage.abilities.effects.common.CreateDelayedTriggeredAbilityEffect; import mage.abilities.effects.common.DrawCardSourceControllerEffect; +import mage.abilities.effects.common.GainLifeEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; import mage.game.Game; import mage.game.events.GameEvent; -import mage.game.events.GameEvent.EventType; import mage.game.permanent.Permanent; import mage.target.common.TargetCreaturePermanent; +import java.util.UUID; + /** * * @author cbt33, Unknown (Glimpse of Nature), LevelX2 (Armadillo Cloak) @@ -47,9 +46,9 @@ public final class Spiritualize extends CardImpl { class SpiritualizeTriggeredAbility extends DelayedTriggeredAbility { - public SpiritualizeTriggeredAbility() { + SpiritualizeTriggeredAbility() { super(new GainLifeEffect(SavedDamageValue.MUCH), Duration.EndOfTurn, false); - setTriggerPhrase("Whenever target creature deals damage, "); + setTriggerPhrase("Until end of turn, whenever target creature deals damage, "); } private SpiritualizeTriggeredAbility(final SpiritualizeTriggeredAbility ability) { diff --git a/Mage.Sets/src/mage/cards/s/Standstill.java b/Mage.Sets/src/mage/cards/s/Standstill.java index f27b9895fce..75d73bf1c08 100644 --- a/Mage.Sets/src/mage/cards/s/Standstill.java +++ b/Mage.Sets/src/mage/cards/s/Standstill.java @@ -1,34 +1,32 @@ - package mage.cards.s; -import java.util.UUID; import mage.abilities.Ability; -import mage.abilities.TriggeredAbilityImpl; +import mage.abilities.common.SpellCastAllTriggeredAbility; import mage.abilities.effects.OneShotEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Outcome; -import mage.constants.Zone; +import mage.constants.SetTargetPointer; +import mage.filter.StaticFilters; import mage.game.Game; -import mage.game.events.GameEvent; -import mage.game.events.GameEvent.EventType; import mage.game.permanent.Permanent; import mage.players.Player; -import mage.target.targetpointer.FixedTarget; + +import java.util.UUID; /** - * * @author Plopman */ public final class Standstill extends CardImpl { public Standstill(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{U}"); - + super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{U}"); // When a player casts a spell, sacrifice Standstill. If you do, each of that player's opponents draws three cards. - this.addAbility(new SpellCastTriggeredAbility()); + this.addAbility(new SpellCastAllTriggeredAbility( + new StandstillEffect(), StaticFilters.FILTER_SPELL_A, false, SetTargetPointer.PLAYER + ).setTriggerPhrase("When a player casts a spell, ")); } private Standstill(final Standstill card) { @@ -41,38 +39,6 @@ public final class Standstill extends CardImpl { } } -class SpellCastTriggeredAbility extends TriggeredAbilityImpl { - - public SpellCastTriggeredAbility() { - super(Zone.BATTLEFIELD, new StandstillEffect(), false); - } - - private SpellCastTriggeredAbility(final SpellCastTriggeredAbility ability) { - super(ability); - } - - @Override - public boolean checkEventType(GameEvent event, Game game) { - return event.getType() == GameEvent.EventType.SPELL_CAST; - } - - @Override - public boolean checkTrigger(GameEvent event, Game game) { - this.getEffects().get(0).setTargetPointer(new FixedTarget(event.getPlayerId())); - return true; - } - - @Override - public String getRule() { - return "When a player casts a spell, sacrifice Standstill. If you do, each of that player's opponents draws three cards."; - } - - @Override - public SpellCastTriggeredAbility copy() { - return new SpellCastTriggeredAbility(this); - } -} - class StandstillEffect extends OneShotEffect { StandstillEffect() { @@ -91,17 +57,15 @@ class StandstillEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - Permanent permanent = game.getPermanent(source.getSourceId()); - if (permanent != null) { - if (permanent.sacrifice(source, game)) { - for (UUID uuid : game.getOpponents(this.getTargetPointer().getFirst(game, source))) { - Player player = game.getPlayer(uuid); - if (player != null) { - player.drawCards(3, source, game); - } + Permanent permanent = source.getSourcePermanentIfItStillExists(game); + if (permanent != null && permanent.sacrifice(source, game)) { + for (UUID uuid : game.getOpponents(this.getTargetPointer().getFirst(game, source))) { + Player player = game.getPlayer(uuid); + if (player != null) { + player.drawCards(3, source, game); } - return true; } + return true; } return false; } diff --git a/Mage.Sets/src/mage/cards/s/SteamVines.java b/Mage.Sets/src/mage/cards/s/SteamVines.java index 60de93f25f5..d6455b1d108 100644 --- a/Mage.Sets/src/mage/cards/s/SteamVines.java +++ b/Mage.Sets/src/mage/cards/s/SteamVines.java @@ -43,7 +43,8 @@ public final class SteamVines extends CardImpl { // When enchanted land becomes tapped, destroy it and Steam Vines deals 1 damage to that land's controller. // That player attaches Steam Vines to a land of their choice. - this.addAbility(new BecomesTappedAttachedTriggeredAbility(new SteamVinesEffect(), "enchanted land")); + this.addAbility(new BecomesTappedAttachedTriggeredAbility(new SteamVinesEffect(), "enchanted land") + .setTriggerPhrase("When enchanted land becomes tapped, ")); } diff --git a/Mage.Sets/src/mage/cards/s/StoneTongueBasilisk.java b/Mage.Sets/src/mage/cards/s/StoneTongueBasilisk.java index 16284273755..763c34ee152 100644 --- a/Mage.Sets/src/mage/cards/s/StoneTongueBasilisk.java +++ b/Mage.Sets/src/mage/cards/s/StoneTongueBasilisk.java @@ -36,7 +36,7 @@ public final class StoneTongueBasilisk extends CardImpl { // Threshold - As long as seven or more cards are in your graveyard, all creatures able to block Stone-Tongue Basilisk do so. this.addAbility(new SimpleStaticAbility(new ConditionalRequirementEffect( new MustBeBlockedByAllSourceEffect(), ThresholdCondition.instance, "As long as seven " + - "or more cards are in your graveyard, all creatures able to block {this} do so" + "or more cards are in your graveyard, all creatures able to block {this} do so" )).setAbilityWord(AbilityWord.THRESHOLD)); } diff --git a/Mage.Sets/src/mage/cards/t/TemporaryInsanity.java b/Mage.Sets/src/mage/cards/t/TemporaryInsanity.java index 35acfcaff16..514db387a07 100644 --- a/Mage.Sets/src/mage/cards/t/TemporaryInsanity.java +++ b/Mage.Sets/src/mage/cards/t/TemporaryInsanity.java @@ -32,7 +32,7 @@ public final class TemporaryInsanity extends CardImpl { // and gain control of it until end of turn. Effect effect = new GainControlTargetEffect(Duration.EndOfTurn); - effect.setText("and gain control of it until end of turn. "); + effect.setText("and gain control of it until end of turn"); this.getSpellAbility().addEffect(effect); // That creature gains haste until end of turn. diff --git a/Mage.Sets/src/mage/cards/u/UncontrolledInfestation.java b/Mage.Sets/src/mage/cards/u/UncontrolledInfestation.java index 738326beb54..72ef6de0c17 100644 --- a/Mage.Sets/src/mage/cards/u/UncontrolledInfestation.java +++ b/Mage.Sets/src/mage/cards/u/UncontrolledInfestation.java @@ -31,7 +31,8 @@ public final class UncontrolledInfestation extends CardImpl { Ability ability = new EnchantAbility(auraTarget); this.addAbility(ability); // When enchanted land becomes tapped, destroy it. - this.addAbility(new BecomesTappedAttachedTriggeredAbility(new DestroyAttachedToEffect("it"), "enchanted land")); + this.addAbility(new BecomesTappedAttachedTriggeredAbility(new DestroyAttachedToEffect("it"), "enchanted land") + .setTriggerPhrase("When enchanted land becomes tapped, ")); } private UncontrolledInfestation(final UncontrolledInfestation card) { diff --git a/Mage.Sets/src/mage/cards/v/Valor.java b/Mage.Sets/src/mage/cards/v/Valor.java index f14382a7c04..b1bd2301ab4 100644 --- a/Mage.Sets/src/mage/cards/v/Valor.java +++ b/Mage.Sets/src/mage/cards/v/Valor.java @@ -24,7 +24,7 @@ import mage.filter.common.FilterCreaturePermanent; */ public final class Valor extends CardImpl { - private static final String ruleText = "As long as Valor is in your graveyard and you control a Plains, creatures you control have first strike"; + private static final String ruleText = "As long as this card is in your graveyard and you control a Plains, creatures you control have first strike"; private static final FilterControlledPermanent filter = new FilterControlledPermanent("Plains"); diff --git a/Mage.Sets/src/mage/cards/w/WaywardAngel.java b/Mage.Sets/src/mage/cards/w/WaywardAngel.java index 7c0af9bde37..0bbfb4e6509 100644 --- a/Mage.Sets/src/mage/cards/w/WaywardAngel.java +++ b/Mage.Sets/src/mage/cards/w/WaywardAngel.java @@ -56,7 +56,7 @@ public final class WaywardAngel extends CardImpl { ); ability.addEffect(new ConditionalContinuousEffect( new GainAbilitySourceEffect(gainedAbility), ThresholdCondition.instance, - "and has \"At the beginning of your upkeep, sacrifice a creature.\"" + ", and has \"At the beginning of your upkeep, sacrifice a creature.\"" )); ability.setAbilityWord(AbilityWord.THRESHOLD); this.addAbility(ability); diff --git a/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java b/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java index 2331dadecb8..d8985f5193d 100644 --- a/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java +++ b/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java @@ -74,7 +74,7 @@ public class VerifyCardDataTest { private static final Logger logger = Logger.getLogger(VerifyCardDataTest.class); - private static final String FULL_ABILITIES_CHECK_SET_CODES = "FIN"; // check ability text due mtgjson, can use multiple sets like MAT;CMD or * for all + private static final String FULL_ABILITIES_CHECK_SET_CODES = "ODY,TOR,JUD,ONS,LGN,SCG"; // 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_COPYABLE_FIELDS = true; // disable for better verify test performance diff --git a/Mage/src/main/java/mage/abilities/condition/common/SourceInGraveyardCondition.java b/Mage/src/main/java/mage/abilities/condition/common/SourceInGraveyardCondition.java index f224a7d5860..85a1bb2cb60 100644 --- a/Mage/src/main/java/mage/abilities/condition/common/SourceInGraveyardCondition.java +++ b/Mage/src/main/java/mage/abilities/condition/common/SourceInGraveyardCondition.java @@ -20,7 +20,7 @@ public enum SourceInGraveyardCondition implements Condition { @Override public String toString() { - return "{this} is in your graveyard"; + return "this card is in your graveyard"; } } diff --git a/Mage/src/main/java/mage/abilities/costs/common/DiscardXTargetCost.java b/Mage/src/main/java/mage/abilities/costs/common/DiscardXTargetCost.java index ac863a0e819..dbf7a3513c9 100644 --- a/Mage/src/main/java/mage/abilities/costs/common/DiscardXTargetCost.java +++ b/Mage/src/main/java/mage/abilities/costs/common/DiscardXTargetCost.java @@ -44,6 +44,7 @@ public class DiscardXTargetCost extends VariableCostImpl { public DiscardXTargetCost withRandom() { this.isRandom = true; + this.text += " at random"; return this; } diff --git a/Mage/src/main/java/mage/abilities/effects/common/RemoveAllCountersSourceEffect.java b/Mage/src/main/java/mage/abilities/effects/common/RemoveAllCountersSourceEffect.java index 4c08de6dc00..fa0328a9da0 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/RemoveAllCountersSourceEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/RemoveAllCountersSourceEffect.java @@ -18,7 +18,7 @@ public class RemoveAllCountersSourceEffect extends OneShotEffect { public RemoveAllCountersSourceEffect(CounterType counterType) { super(Outcome.Neutral); this.counterType = counterType; - staticText = "remove all " + counterType.getName() + " counters from it."; + staticText = "remove all " + counterType.getName() + " counters from {this}"; } protected RemoveAllCountersSourceEffect(final RemoveAllCountersSourceEffect effect) {