diff --git a/Mage.Sets/src/mage/cards/b/BattlegateMimic.java b/Mage.Sets/src/mage/cards/b/BattlegateMimic.java index 24e080bc71..86ae874cce 100644 --- a/Mage.Sets/src/mage/cards/b/BattlegateMimic.java +++ b/Mage.Sets/src/mage/cards/b/BattlegateMimic.java @@ -31,7 +31,7 @@ public final class BattlegateMimic extends CardImpl { filter.add(new ColorPredicate(ObjectColor.WHITE)); } - private static final String rule = "Whenever you cast a spell that's both red and white, {this} has base power and toughness 4/2 and gains first strike until end of turn."; + private static final String rule = "Whenever you cast a spell that's both red and white, {this} has base power and toughness 4/2 until end of turn and gains first strike until end of turn."; public BattlegateMimic(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R/W}"); diff --git a/Mage.Sets/src/mage/cards/c/CankerousThirst.java b/Mage.Sets/src/mage/cards/c/CankerousThirst.java index ea3a3e04aa..0bbf88c19b 100644 --- a/Mage.Sets/src/mage/cards/c/CankerousThirst.java +++ b/Mage.Sets/src/mage/cards/c/CankerousThirst.java @@ -52,7 +52,7 @@ class CankerousThirstEffect extends OneShotEffect { public CankerousThirstEffect() { super(Outcome.Benefit); - this.staticText = "If {B} was spent to cast {this}, you may have target creature get -3/-3 until end of turn. If {G} was spent to cast this spell, you may have target creature get +3/+3 until end of turn"; + this.staticText = "If {B} was spent to cast this spell, you may have target creature get -3/-3 until end of turn. If {G} was spent to cast this spell, you may have target creature get +3/+3 until end of turn"; } public CankerousThirstEffect(final CankerousThirstEffect effect) { diff --git a/Mage.Sets/src/mage/cards/c/Crackleburr.java b/Mage.Sets/src/mage/cards/c/Crackleburr.java index 7b19db74d8..aa7b0a4963 100644 --- a/Mage.Sets/src/mage/cards/c/Crackleburr.java +++ b/Mage.Sets/src/mage/cards/c/Crackleburr.java @@ -32,8 +32,8 @@ import mage.target.common.TargetCreaturePermanent; */ public final class Crackleburr extends CardImpl { - private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("two untapped red creatures you control"); - private static final FilterControlledCreaturePermanent filter2 = new FilterControlledCreaturePermanent("two tapped blue creatures you control"); + private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("untapped red creatures you control"); + private static final FilterControlledCreaturePermanent filter2 = new FilterControlledCreaturePermanent("tapped blue creatures you control"); static { filter.add(new ColorPredicate(ObjectColor.RED)); diff --git a/Mage.Sets/src/mage/cards/d/DreamFracture.java b/Mage.Sets/src/mage/cards/d/DreamFracture.java index 5d47719803..5dfce39664 100644 --- a/Mage.Sets/src/mage/cards/d/DreamFracture.java +++ b/Mage.Sets/src/mage/cards/d/DreamFracture.java @@ -27,7 +27,7 @@ public final class DreamFracture extends CardImpl { this.getSpellAbility().addTarget(new TargetSpell()); // Draw a card. - this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1)); + this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1).concatBy("
")); } diff --git a/Mage.Sets/src/mage/cards/d/DuergarAssailant.java b/Mage.Sets/src/mage/cards/d/DuergarAssailant.java index a962587347..bf5f25b5ae 100644 --- a/Mage.Sets/src/mage/cards/d/DuergarAssailant.java +++ b/Mage.Sets/src/mage/cards/d/DuergarAssailant.java @@ -30,7 +30,7 @@ public final class DuergarAssailant extends CardImpl { this.toughness = new MageInt(1); // Sacrifice Duergar Assailant: Duergar Assailant deals 1 damage to target attacking or blocking creature. - Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(1), new SacrificeSourceCost()); + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(1, "it"), new SacrificeSourceCost()); ability.addTarget(new TargetAttackingOrBlockingCreature()); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/e/EndlessHorizons.java b/Mage.Sets/src/mage/cards/e/EndlessHorizons.java index 99eb91e8a4..739586d3d5 100644 --- a/Mage.Sets/src/mage/cards/e/EndlessHorizons.java +++ b/Mage.Sets/src/mage/cards/e/EndlessHorizons.java @@ -52,7 +52,7 @@ class EndlessHorizonsEffect extends OneShotEffect { EndlessHorizonsEffect() { super(Outcome.Neutral); - this.staticText = "search your library for any number of Plains cards and exile them. Then shuffle"; + this.staticText = "search your library for any number of Plains cards, exile them, then shuffle"; } private EndlessHorizonsEffect(final EndlessHorizonsEffect effect) { diff --git a/Mage.Sets/src/mage/cards/h/HallowedBurial.java b/Mage.Sets/src/mage/cards/h/HallowedBurial.java index 2711f8ea3a..8446890315 100644 --- a/Mage.Sets/src/mage/cards/h/HallowedBurial.java +++ b/Mage.Sets/src/mage/cards/h/HallowedBurial.java @@ -42,7 +42,7 @@ class HallowedBurialEffect extends OneShotEffect { public HallowedBurialEffect() { super(Outcome.Neutral); - this.staticText = "Put all creatures on the bottom of their owner's libraries"; + this.staticText = "Put all creatures on the bottom of their owners' libraries"; } public HallowedBurialEffect(final HallowedBurialEffect effect) { diff --git a/Mage.Sets/src/mage/cards/h/HotheadedGiant.java b/Mage.Sets/src/mage/cards/h/HotheadedGiant.java index 3bdedbe92a..91ba66f331 100644 --- a/Mage.Sets/src/mage/cards/h/HotheadedGiant.java +++ b/Mage.Sets/src/mage/cards/h/HotheadedGiant.java @@ -40,7 +40,7 @@ public final class HotheadedGiant extends CardImpl { this.addAbility(new EntersBattlefieldAbility( new AddCountersSourceEffect(CounterType.M1M1.createInstance(2)), HotheadedGiantWatcher::checkSpell, null, - "\"with two -1/-1 counters on it unless you've cast another red spell this turn\"" + "with two -1/-1 counters on it unless you've cast another red spell this turn" ), new HotheadedGiantWatcher()); } diff --git a/Mage.Sets/src/mage/cards/i/InsideOut.java b/Mage.Sets/src/mage/cards/i/InsideOut.java index a998d479b1..840c1849b9 100644 --- a/Mage.Sets/src/mage/cards/i/InsideOut.java +++ b/Mage.Sets/src/mage/cards/i/InsideOut.java @@ -26,7 +26,7 @@ public final class InsideOut extends CardImpl { this.getSpellAbility().addTarget(new TargetCreaturePermanent()); // Draw a card. - this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1)); + this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1).concatBy("
")); } diff --git a/Mage.Sets/src/mage/cards/i/InvertTheSkies.java b/Mage.Sets/src/mage/cards/i/InvertTheSkies.java index a738dce64f..4d484900c9 100644 --- a/Mage.Sets/src/mage/cards/i/InvertTheSkies.java +++ b/Mage.Sets/src/mage/cards/i/InvertTheSkies.java @@ -45,7 +45,7 @@ public final class InvertTheSkies extends CardImpl { this.getSpellAbility().addEffect(new ConditionalContinuousEffect( new GainAbilityControlledEffect(FlyingAbility.getInstance(), Duration.EndOfTurn), new LockedInCondition(new ManaWasSpentCondition(ColoredManaSymbol.U)), - "and creatures you control gain flying until end of turn if {U} was spent to cast it")); + "and creatures you control gain flying until end of turn if {U} was spent to cast this spell")); this.getSpellAbility().addEffect(new InfoEffect("(Do both if {G}{U} was spent.)")); diff --git a/Mage.Sets/src/mage/cards/m/Moonhold.java b/Mage.Sets/src/mage/cards/m/Moonhold.java index de153b6071..06fae7fd0e 100644 --- a/Mage.Sets/src/mage/cards/m/Moonhold.java +++ b/Mage.Sets/src/mage/cards/m/Moonhold.java @@ -34,7 +34,7 @@ public final class Moonhold extends CardImpl { ContinuousRuleModifyingEffect effect = new MoonholdEffect(); ContinuousRuleModifyingEffect effect2 = new MoonholdEffect2(); effect.setText("Target player can't play lands this turn if {R} was spent to cast this spell"); - effect2.setText("and can't cast creature spells this turn if {W} was spent to cast it."); + effect2.setText("and can't cast creature spells this turn if {W} was spent to cast this spell."); this.getSpellAbility().addEffect(new ConditionalContinuousRuleModifyingEffect( effect, new LockedInCondition(new ManaWasSpentCondition(ColoredManaSymbol.R)))); diff --git a/Mage.Sets/src/mage/cards/n/NoggleRansacker.java b/Mage.Sets/src/mage/cards/n/NoggleRansacker.java index 2ef8897903..95e7a458f7 100644 --- a/Mage.Sets/src/mage/cards/n/NoggleRansacker.java +++ b/Mage.Sets/src/mage/cards/n/NoggleRansacker.java @@ -28,7 +28,7 @@ public final class NoggleRansacker extends CardImpl { // When Noggle Ransacker enters the battlefield, each player draws two cards, then discards a card at random. Ability ability = new EntersBattlefieldTriggeredAbility(new DrawCardAllEffect(2)); - ability.addEffect(new DiscardEachPlayerEffect(1, true)); + ability.addEffect(new DiscardEachPlayerEffect(1, true).setText(", then discards a card at random")); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/n/Nucklavee.java b/Mage.Sets/src/mage/cards/n/Nucklavee.java index b509892c20..8aa78bb754 100644 --- a/Mage.Sets/src/mage/cards/n/Nucklavee.java +++ b/Mage.Sets/src/mage/cards/n/Nucklavee.java @@ -1,12 +1,10 @@ - package mage.cards.n; -import java.util.UUID; import mage.MageInt; import mage.ObjectColor; import mage.abilities.Ability; import mage.abilities.common.EntersBattlefieldTriggeredAbility; -import mage.abilities.effects.common.ReturnToHandTargetEffect; +import mage.abilities.effects.common.ReturnFromGraveyardToHandTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; @@ -15,8 +13,9 @@ import mage.filter.FilterCard; import mage.filter.predicate.mageobject.ColorPredicate; import mage.target.common.TargetCardInYourGraveyard; +import java.util.UUID; + /** - * * @author Loki */ public final class Nucklavee extends CardImpl { @@ -31,18 +30,18 @@ public final class Nucklavee extends CardImpl { } public Nucklavee(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U/R}{U/R}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{U/R}{U/R}"); this.subtype.add(SubType.BEAST); this.power = new MageInt(4); this.toughness = new MageInt(4); // When Nucklavee enters the battlefield, you may return target red sorcery card from your graveyard to your hand. - Ability ability = new EntersBattlefieldTriggeredAbility(new ReturnToHandTargetEffect(), true); + Ability ability = new EntersBattlefieldTriggeredAbility(new ReturnFromGraveyardToHandTargetEffect(), true); ability.addTarget(new TargetCardInYourGraveyard(filterRed)); this.addAbility(ability); // When Nucklavee enters the battlefield, you may return target blue instant card from your graveyard to your hand. - ability = new EntersBattlefieldTriggeredAbility(new ReturnToHandTargetEffect(), true); + ability = new EntersBattlefieldTriggeredAbility(new ReturnFromGraveyardToHandTargetEffect(), true); ability.addTarget(new TargetCardInYourGraveyard(filterBlue)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/o/OverbeingOfMyth.java b/Mage.Sets/src/mage/cards/o/OverbeingOfMyth.java index f5ab080f9f..4f4a10b7e5 100644 --- a/Mage.Sets/src/mage/cards/o/OverbeingOfMyth.java +++ b/Mage.Sets/src/mage/cards/o/OverbeingOfMyth.java @@ -37,7 +37,7 @@ public final class OverbeingOfMyth extends CardImpl { this.addAbility(new SimpleStaticAbility(Zone.ALL, new SetPowerToughnessSourceEffect(number, Duration.EndOfGame))); // At the beginning of your draw step, draw an additional card. - this.addAbility(new BeginningOfDrawTriggeredAbility(new DrawCardSourceControllerEffect(1), TargetController.YOU, false)); + this.addAbility(new BeginningOfDrawTriggeredAbility(new DrawCardSourceControllerEffect(1).setText("draw an additional card"), TargetController.YOU, false)); } diff --git a/Mage.Sets/src/mage/cards/r/RekindledFlame.java b/Mage.Sets/src/mage/cards/r/RekindledFlame.java index 641012684e..3cae459954 100644 --- a/Mage.Sets/src/mage/cards/r/RekindledFlame.java +++ b/Mage.Sets/src/mage/cards/r/RekindledFlame.java @@ -1,12 +1,12 @@ package mage.cards.r; -import mage.abilities.Ability; import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; import mage.abilities.condition.common.OpponentHasNoCardsInHandCondition; import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility; import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.effects.common.ReturnSourceFromGraveyardToHandEffect; import mage.abilities.hint.ConditionHint; +import mage.abilities.hint.Hint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; @@ -21,6 +21,10 @@ import java.util.UUID; */ public final class RekindledFlame extends CardImpl { + private static final Hint hint = new ConditionHint( + OpponentHasNoCardsInHandCondition.instance, "Opponent has no cards in hand" + ); + public RekindledFlame(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{R}{R}"); @@ -29,14 +33,13 @@ public final class RekindledFlame extends CardImpl { this.getSpellAbility().addTarget(new TargetAnyTarget()); // At the beginning of your upkeep, if an opponent has no cards in hand, you may return Rekindled Flame from your graveyard to your hand. - Ability ability = new ConditionalInterveningIfTriggeredAbility( - new BeginningOfUpkeepTriggeredAbility(Zone.GRAVEYARD, new ReturnSourceFromGraveyardToHandEffect(), TargetController.YOU, true), - OpponentHasNoCardsInHandCondition.instance, - "If an opponent has no cards in hand, you may return Rekindled Flame from your graveyard to your hand."); - ability.addHint(new ConditionHint(OpponentHasNoCardsInHandCondition.instance, "Opponent has no cards in hand")); - ability.setRuleVisible(true); - this.addAbility(ability); - + this.addAbility(new ConditionalInterveningIfTriggeredAbility( + new BeginningOfUpkeepTriggeredAbility( + Zone.GRAVEYARD, new ReturnSourceFromGraveyardToHandEffect(), + TargetController.YOU, true + ), OpponentHasNoCardsInHandCondition.instance, "At the beginning of your upkeep, " + + "if an opponent has no cards in hand, you may return {this} from your graveyard to your hand." + ).addHint(hint)); } private RekindledFlame(final RekindledFlame card) { @@ -47,4 +50,4 @@ public final class RekindledFlame extends CardImpl { public RekindledFlame copy() { return new RekindledFlame(this); } -} \ No newline at end of file +} diff --git a/Mage.Sets/src/mage/cards/s/SyphonLife.java b/Mage.Sets/src/mage/cards/s/SyphonLife.java index 29874a4a43..8cfbb7a856 100644 --- a/Mage.Sets/src/mage/cards/s/SyphonLife.java +++ b/Mage.Sets/src/mage/cards/s/SyphonLife.java @@ -1,7 +1,5 @@ - package mage.cards.s; -import java.util.UUID; import mage.abilities.effects.common.GainLifeEffect; import mage.abilities.effects.common.LoseLifeTargetEffect; import mage.abilities.keyword.RetraceAbility; @@ -10,20 +8,21 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.target.TargetPlayer; +import java.util.UUID; + /** - * * @author Plopman */ public final class SyphonLife extends CardImpl { public SyphonLife(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{B}{B}"); - + super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{B}{B}"); // Target player loses 2 life and you gain 2 life. this.getSpellAbility().addEffect(new LoseLifeTargetEffect(2)); this.getSpellAbility().addTarget(new TargetPlayer()); - this.getSpellAbility().addEffect(new GainLifeEffect(2)); + this.getSpellAbility().addEffect(new GainLifeEffect(2).concatBy("and")); + // Retrace this.addAbility(new RetraceAbility(this)); } diff --git a/Mage.Sets/src/mage/cards/t/TalarasBattalion.java b/Mage.Sets/src/mage/cards/t/TalarasBattalion.java index 16ef5fab6f..08cff739af 100644 --- a/Mage.Sets/src/mage/cards/t/TalarasBattalion.java +++ b/Mage.Sets/src/mage/cards/t/TalarasBattalion.java @@ -38,7 +38,7 @@ public final class TalarasBattalion extends CardImpl { // Cast Talara's Battalion only if you've cast another green spell this turn. this.addAbility(new CastOnlyIfConditionIsTrueAbility( TalarasBattalionWatcher::checkSpell, - "cast {this} only if you've cast another green spell this turn" + "cast this spell only if you've cast another green spell this turn" ), new TalarasBattalionWatcher()); } diff --git a/Mage.Sets/src/mage/cards/u/UnnervingAssault.java b/Mage.Sets/src/mage/cards/u/UnnervingAssault.java index 4234257366..4e03b96d64 100644 --- a/Mage.Sets/src/mage/cards/u/UnnervingAssault.java +++ b/Mage.Sets/src/mage/cards/u/UnnervingAssault.java @@ -38,7 +38,7 @@ public final class UnnervingAssault extends CardImpl { new ManaWasSpentCondition(ColoredManaSymbol.U), "Creatures your opponents control get -1/-0 until end of turn if {U} was spent to cast this spell,")); this.getSpellAbility().addEffect(new ConditionalContinuousEffect( new BoostAllEffect(1, 0, Duration.EndOfTurn, filter2, false), - new ManaWasSpentCondition(ColoredManaSymbol.R), " and creatures you control get +1/+0 until end of turn if {R} was spent to cast it")); + new ManaWasSpentCondition(ColoredManaSymbol.R), " and creatures you control get +1/+0 until end of turn if {R} was spent to cast this spell")); this.getSpellAbility().addEffect(new InfoEffect("(Do both if {U}{R} was spent.)")); } diff --git a/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java b/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java index 3842df282f..229e5b1fff 100644 --- a/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java +++ b/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java @@ -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 = "LRW"; // check all abilities and output cards with wrong abilities texts; + private static final String FULL_ABILITIES_CHECK_SET_CODE = "EVE"; // 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 diff --git a/Mage/src/main/java/mage/abilities/keyword/PersistAbility.java b/Mage/src/main/java/mage/abilities/keyword/PersistAbility.java index adf31aceaf..3f0aabeaf5 100644 --- a/Mage/src/main/java/mage/abilities/keyword/PersistAbility.java +++ b/Mage/src/main/java/mage/abilities/keyword/PersistAbility.java @@ -47,7 +47,7 @@ public class PersistAbility extends DiesSourceTriggeredAbility { @Override public String getRule() { - return "Persist (When this creature dies, if it had no -1/-1 counters on it, return it to the battlefield under its owner's control with a -1/-1 counter on it.)"; + return "persist (When this creature dies, if it had no -1/-1 counters on it, return it to the battlefield under its owner's control with a -1/-1 counter on it.)"; } }