diff --git a/Mage.Sets/src/mage/cards/a/AirCultElemental.java b/Mage.Sets/src/mage/cards/a/AirCultElemental.java index 210a6fa390b..173b62f090d 100644 --- a/Mage.Sets/src/mage/cards/a/AirCultElemental.java +++ b/Mage.Sets/src/mage/cards/a/AirCultElemental.java @@ -20,7 +20,7 @@ import mage.target.common.TargetCreaturePermanent; */ public final class AirCultElemental extends CardImpl { - private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("other creature"); + private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("other target creature"); static { filter.add(AnotherPredicate.instance); diff --git a/Mage.Sets/src/mage/cards/b/BardClass.java b/Mage.Sets/src/mage/cards/b/BardClass.java index 1ec0ae71e2c..12329fc085c 100644 --- a/Mage.Sets/src/mage/cards/b/BardClass.java +++ b/Mage.Sets/src/mage/cards/b/BardClass.java @@ -52,7 +52,7 @@ public final class BardClass extends CardImpl { // Legendary spells you cast cost {R}{G} less to cast. This effect reduces only the amount of colored mana you pay. this.addAbility(new SimpleStaticAbility(new GainClassAbilitySourceEffect( - new SpellsCostReductionControllerEffect(filter, new ManaCostsImpl<>("{W}{B}")), 2 + new SpellsCostReductionControllerEffect(filter, new ManaCostsImpl<>("{R}{G}")), 2 ))); // {3}{R}{G}: Level 3 diff --git a/Mage.Sets/src/mage/cards/c/ContactOtherPlane.java b/Mage.Sets/src/mage/cards/c/ContactOtherPlane.java index 3a8ceee6d4a..c172cb58e1b 100644 --- a/Mage.Sets/src/mage/cards/c/ContactOtherPlane.java +++ b/Mage.Sets/src/mage/cards/c/ContactOtherPlane.java @@ -33,7 +33,7 @@ public final class ContactOtherPlane extends CardImpl { // 20 | Scry 3, then draw three cards. effect.addTableEntry( 20, 20, new ScryEffect(3, false), - new DrawCardSourceControllerEffect(2).concatBy(", then") + new DrawCardSourceControllerEffect(3).concatBy(", then") ); } diff --git a/Mage.Sets/src/mage/cards/d/DawnbringerCleric.java b/Mage.Sets/src/mage/cards/d/DawnbringerCleric.java index 3999e94d0d0..746cef4f2e5 100644 --- a/Mage.Sets/src/mage/cards/d/DawnbringerCleric.java +++ b/Mage.Sets/src/mage/cards/d/DawnbringerCleric.java @@ -31,7 +31,7 @@ public final class DawnbringerCleric extends CardImpl { // When Dawnbringer Cleric enters the battlefield, choose one — // • Cure Wounds — You gain 2 life. - Ability ability = new EntersBattlefieldTriggeredAbility(new GainLifeEffect(1)); + Ability ability = new EntersBattlefieldTriggeredAbility(new GainLifeEffect(2)); ability.getModes().getMode().withFlavorWord("Cure Wounds"); // • Dispel Magic — Destroy target enchantment. diff --git a/Mage.Sets/src/mage/cards/d/DeathPriestOfMyrkul.java b/Mage.Sets/src/mage/cards/d/DeathPriestOfMyrkul.java index 11222e13aef..fcbdae45f3f 100644 --- a/Mage.Sets/src/mage/cards/d/DeathPriestOfMyrkul.java +++ b/Mage.Sets/src/mage/cards/d/DeathPriestOfMyrkul.java @@ -3,18 +3,19 @@ package mage.cards.d; import mage.MageInt; import mage.abilities.common.BeginningOfEndStepTriggeredAbility; import mage.abilities.common.SimpleStaticAbility; -import mage.abilities.condition.common.CompletedDungeonCondition; +import mage.abilities.condition.common.MorbidCondition; import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.DoIfCostPaid; import mage.abilities.effects.common.continuous.BoostControlledEffect; +import mage.abilities.hint.common.MorbidHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.*; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.game.permanent.token.SkeletonToken; -import mage.watchers.common.CompletedDungeonWatcher; +import mage.watchers.common.MorbidWatcher; import java.util.UUID; @@ -51,8 +52,8 @@ public final class DeathPriestOfMyrkul extends CardImpl { this.addAbility(new BeginningOfEndStepTriggeredAbility( Zone.BATTLEFIELD, new DoIfCostPaid(new CreateTokenEffect(new SkeletonToken()), new GenericManaCost(1)), - TargetController.YOU, CompletedDungeonCondition.instance, false - ).addHint(CompletedDungeonCondition.getHint()), new CompletedDungeonWatcher()); + TargetController.YOU, MorbidCondition.instance, false + ).addHint(MorbidHint.instance), new MorbidWatcher()); } private DeathPriestOfMyrkul(final DeathPriestOfMyrkul card) { diff --git a/Mage.Sets/src/mage/cards/f/FighterClass.java b/Mage.Sets/src/mage/cards/f/FighterClass.java index 29e81e8eeaa..183f4156934 100644 --- a/Mage.Sets/src/mage/cards/f/FighterClass.java +++ b/Mage.Sets/src/mage/cards/f/FighterClass.java @@ -49,7 +49,7 @@ public final class FighterClass extends CardImpl { // When Fighter Class enters the battlefield, search your library for an Equipment card, reveal it, put it into your hand, then shuffle. this.addAbility(new EntersBattlefieldTriggeredAbility( - new SearchLibraryPutInHandEffect(new TargetCardInLibrary(filter)) + new SearchLibraryPutInHandEffect(new TargetCardInLibrary(filter), true) )); // {1}{R}{W}: Level 2 @@ -58,7 +58,7 @@ public final class FighterClass extends CardImpl { // Equip abilities you activate cost {2} less to activate. this.addAbility(new SimpleStaticAbility(new GainClassAbilitySourceEffect( new AbilitiesCostReductionControllerEffect(EquipAbility.class, "Equip") - .setText("\"equip abilities you activate cost {2} less to activate\""), + .setText("equip abilities you activate cost {2} less to activate"), 2 ))); diff --git a/Mage.Sets/src/mage/cards/f/FindThePath.java b/Mage.Sets/src/mage/cards/f/FindThePath.java index b3d68b92d64..647f735b845 100644 --- a/Mage.Sets/src/mage/cards/f/FindThePath.java +++ b/Mage.Sets/src/mage/cards/f/FindThePath.java @@ -43,7 +43,7 @@ public final class FindThePath extends CardImpl { new SimpleManaAbility( Zone.BATTLEFIELD, new Mana(ManaType.GREEN, 2), new TapSourceCost() ), AttachmentType.AURA - ))); + ).setText("enchanted land has \"{T}: Add {G}{G}.\""))); } private FindThePath(final FindThePath card) { diff --git a/Mage.Sets/src/mage/cards/g/GoblinMorningstar.java b/Mage.Sets/src/mage/cards/g/GoblinMorningstar.java index 7d1364b6ec0..fd14b0a3946 100644 --- a/Mage.Sets/src/mage/cards/g/GoblinMorningstar.java +++ b/Mage.Sets/src/mage/cards/g/GoblinMorningstar.java @@ -33,7 +33,9 @@ public final class GoblinMorningstar extends CardImpl { // Equipped creature gets +1/+0 and has trample. Ability ability = new SimpleStaticAbility(new BoostEquippedEffect(1, 0)); - ability.addEffect(new GainAbilityAttachedEffect(TrampleAbility.getInstance(), AttachmentType.EQUIPMENT)); + ability.addEffect(new GainAbilityAttachedEffect( + TrampleAbility.getInstance(), AttachmentType.EQUIPMENT + ).setText("and has trample")); this.addAbility(ability); // Equip {1}{R} diff --git a/Mage.Sets/src/mage/cards/g/GreenDragon.java b/Mage.Sets/src/mage/cards/g/GreenDragon.java index 620d99f2651..c05ff73f200 100644 --- a/Mage.Sets/src/mage/cards/g/GreenDragon.java +++ b/Mage.Sets/src/mage/cards/g/GreenDragon.java @@ -36,7 +36,7 @@ public final class GreenDragon extends CardImpl { // Poison Breath — When Green Dragon enters the battlefield, until end of turn, whenever a creature an opponent controls is dealt damage, destroy it. this.addAbility(new EntersBattlefieldTriggeredAbility(new CreateDelayedTriggeredAbilityEffect( new GreenDragonDelayedTriggeredAbility(), false - ))); + )).withFlavorWord("Poison Breath")); } private GreenDragon(final GreenDragon card) { diff --git a/Mage.Sets/src/mage/cards/g/GuildThief.java b/Mage.Sets/src/mage/cards/g/GuildThief.java index b66a7e2b43a..c0b4636cc75 100644 --- a/Mage.Sets/src/mage/cards/g/GuildThief.java +++ b/Mage.Sets/src/mage/cards/g/GuildThief.java @@ -1,12 +1,9 @@ package mage.cards.g; import mage.MageInt; -import mage.abilities.Ability; import mage.abilities.common.DealsCombatDamageToAPlayerTriggeredAbility; -import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.mana.ManaCostsImpl; -import mage.abilities.effects.common.DestroyTargetEffect; import mage.abilities.effects.common.combat.CantBeBlockedSourceEffect; import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.cards.CardImpl; @@ -15,7 +12,6 @@ import mage.constants.CardType; import mage.constants.Duration; import mage.constants.SubType; import mage.counters.CounterType; -import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -34,7 +30,9 @@ public final class GuildThief extends CardImpl { // Whenever Guild Thief deals combat damage to a player, put a +1/+1 counter on it. this.addAbility(new DealsCombatDamageToAPlayerTriggeredAbility( - new AddCountersSourceEffect(CounterType.P1P1.createInstance(1)), false + new AddCountersSourceEffect(CounterType.P1P1.createInstance(1)) + .setText("put a +1/+1 counter on it"), + false )); // Cunning Action — {3}{U}: Guild Thief can't be blocked this turn. diff --git a/Mage.Sets/src/mage/cards/i/IronGolem.java b/Mage.Sets/src/mage/cards/i/IronGolem.java index e9c5921272d..76bf1480d01 100644 --- a/Mage.Sets/src/mage/cards/i/IronGolem.java +++ b/Mage.Sets/src/mage/cards/i/IronGolem.java @@ -31,7 +31,7 @@ public final class IronGolem extends CardImpl { // Iron Golem attacks or blocks each combat if able. Ability ability = new SimpleStaticAbility(new AttacksIfAbleSourceEffect(Duration.WhileOnBattlefield).setText("{this} attacks")); - ability.addEffect(new BlocksIfAbleSourceEffect(Duration.WhileOnBattlefield).setText("or blocks each combat if able")); + ability.addEffect(new BlocksIfAbleSourceEffect(Duration.WhileOnBattlefield).setText("blocks each combat if able").concatBy("or")); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/l/LightfootRogue.java b/Mage.Sets/src/mage/cards/l/LightfootRogue.java index f646f20ac4d..a88196de0d7 100644 --- a/Mage.Sets/src/mage/cards/l/LightfootRogue.java +++ b/Mage.Sets/src/mage/cards/l/LightfootRogue.java @@ -56,7 +56,7 @@ public final class LightfootRogue extends CardImpl { 20, 20, new BoostSourceEffect( 3, 0, Duration.EndOfTurn - ).setText("it gets +1/+0"), + ).setText("it gets +3/+0"), new GainAbilitySourceEffect( FirstStrikeAbility.getInstance(), Duration.EndOfTurn ).setText("and gains first strike"), diff --git a/Mage.Sets/src/mage/cards/l/LoathsomeTroll.java b/Mage.Sets/src/mage/cards/l/LoathsomeTroll.java index 6c24781cd0e..11d7b68c407 100644 --- a/Mage.Sets/src/mage/cards/l/LoathsomeTroll.java +++ b/Mage.Sets/src/mage/cards/l/LoathsomeTroll.java @@ -39,7 +39,7 @@ public final class LoathsomeTroll extends CardImpl { )); // 10-19 | Return Loathsome Troll to your hand. - effect.addTableEntry(10, 19, new ReturnToHandSourceEffect().setText("retun {this} to your hand")); + effect.addTableEntry(10, 19, new ReturnToHandSourceEffect().setText("return {this} to your hand")); // 20 | Return Loathsome Troll to the battlefield tapped. effect.addTableEntry(20, 20, new ReturnSourceFromGraveyardToBattlefieldEffect(true) diff --git a/Mage.Sets/src/mage/cards/m/MercadianAtlas.java b/Mage.Sets/src/mage/cards/m/MercadianAtlas.java index 113c9a3bf37..a8c2b1cfa32 100644 --- a/Mage.Sets/src/mage/cards/m/MercadianAtlas.java +++ b/Mage.Sets/src/mage/cards/m/MercadianAtlas.java @@ -58,7 +58,7 @@ enum MercadianAtlasCondition implements Condition { @Override public String toString() { - return "{this} is attacking"; + return "you didn't play a land this turn"; } } diff --git a/Mage.Sets/src/mage/cards/o/OswaldFiddlebender.java b/Mage.Sets/src/mage/cards/o/OswaldFiddlebender.java index 9580b0370e0..2aee9ae25a1 100644 --- a/Mage.Sets/src/mage/cards/o/OswaldFiddlebender.java +++ b/Mage.Sets/src/mage/cards/o/OswaldFiddlebender.java @@ -46,7 +46,7 @@ public final class OswaldFiddlebender extends CardImpl { ability.addCost(new SacrificeTargetCost(new TargetControlledPermanent( StaticFilters.FILTER_CONTROLLED_PERMANENT_ARTIFACT_AN ))); - this.addAbility(ability); + this.addAbility(ability.withFlavorWord("Magical Tinkering")); } private OswaldFiddlebender(final OswaldFiddlebender card) { diff --git a/Mage.Sets/src/mage/cards/p/PowerOfPersuasion.java b/Mage.Sets/src/mage/cards/p/PowerOfPersuasion.java index e707e31a309..3e112cb30f1 100644 --- a/Mage.Sets/src/mage/cards/p/PowerOfPersuasion.java +++ b/Mage.Sets/src/mage/cards/p/PowerOfPersuasion.java @@ -58,7 +58,7 @@ class PowerOfPersuasionEffect extends OneShotEffect { PowerOfPersuasionEffect() { super(Outcome.Benefit); - staticText = "its owner puts it on the top of bottom of their library"; + staticText = "its owner puts it on the top or bottom of their library"; } private PowerOfPersuasionEffect(final PowerOfPersuasionEffect effect) { diff --git a/Mage.Sets/src/mage/cards/p/PurpleWorm.java b/Mage.Sets/src/mage/cards/p/PurpleWorm.java index 60005a96d1e..441072a9c92 100644 --- a/Mage.Sets/src/mage/cards/p/PurpleWorm.java +++ b/Mage.Sets/src/mage/cards/p/PurpleWorm.java @@ -31,7 +31,7 @@ public final class PurpleWorm extends CardImpl { // This spell costs {2} less to cast if a creature died this turn. Ability ability = new SimpleStaticAbility( - Zone.ALL, new SpellCostReductionSourceEffect(1, MorbidCondition.instance) + Zone.ALL, new SpellCostReductionSourceEffect(2, MorbidCondition.instance) ); ability.setRuleAtTheTop(true); this.addAbility(ability.addHint(MorbidHint.instance), new MorbidWatcher()); diff --git a/Mage.Sets/src/mage/cards/s/ShessraDeathsWhisper.java b/Mage.Sets/src/mage/cards/s/ShessraDeathsWhisper.java index d54a362bad0..e7d9f9724b8 100644 --- a/Mage.Sets/src/mage/cards/s/ShessraDeathsWhisper.java +++ b/Mage.Sets/src/mage/cards/s/ShessraDeathsWhisper.java @@ -40,9 +40,9 @@ public final class ShessraDeathsWhisper extends CardImpl { // Whispers of the Grave — At the beginning of your end step, if a creature died this turn, you may pay 2 life. If you do, draw a card. this.addAbility(new BeginningOfEndStepTriggeredAbility( - Zone.BATTLEFIELD, new DoIfCostPaid(new DrawCardSourceControllerEffect(2), + Zone.BATTLEFIELD, new DoIfCostPaid(new DrawCardSourceControllerEffect(1), new PayLifeCost(2)), TargetController.YOU, MorbidCondition.instance, false - ).addHint(MorbidHint.instance), new MorbidWatcher()); + ).addHint(MorbidHint.instance).withFlavorWord("Whispers of the Grave"), new MorbidWatcher()); } private ShessraDeathsWhisper(final ShessraDeathsWhisper card) { diff --git a/Mage.Sets/src/mage/cards/s/SpikedPitTrap.java b/Mage.Sets/src/mage/cards/s/SpikedPitTrap.java index 0eb4037889d..16d39d3d93d 100644 --- a/Mage.Sets/src/mage/cards/s/SpikedPitTrap.java +++ b/Mage.Sets/src/mage/cards/s/SpikedPitTrap.java @@ -44,7 +44,7 @@ public final class SpikedPitTrap extends CardImpl { )); // 10-20 | Spike Pit Trap deals 5 damage to that creature. Create a Treasure token. - effect.addTableEntry(1, 9, new DamageTargetEffect( + effect.addTableEntry(10, 20, new DamageTargetEffect( 5, true, "that creature." ), new CreateTokenEffect(new TreasureToken())); } diff --git a/Mage.Sets/src/mage/cards/t/TreasureChest.java b/Mage.Sets/src/mage/cards/t/TreasureChest.java index b49171fc7e0..8796421f190 100644 --- a/Mage.Sets/src/mage/cards/t/TreasureChest.java +++ b/Mage.Sets/src/mage/cards/t/TreasureChest.java @@ -65,7 +65,7 @@ class TreasureChestEffect extends OneShotEffect { TreasureChestEffect() { super(Outcome.Benefit); - staticText = "search your library for a card. If it's an artifact card you may " + + staticText = "search your library for a card. If it's an artifact card, you may " + "put it onto the battlefield. Otherwise, put that card into your hand. Then shuffle"; } diff --git a/Mage.Sets/src/mage/cards/w/WarlockClass.java b/Mage.Sets/src/mage/cards/w/WarlockClass.java index ae4bda5dc88..d094f88a3a7 100644 --- a/Mage.Sets/src/mage/cards/w/WarlockClass.java +++ b/Mage.Sets/src/mage/cards/w/WarlockClass.java @@ -3,12 +3,14 @@ package mage.cards.w; import mage.abilities.Ability; import mage.abilities.common.BecomesClassLevelTriggeredAbility; import mage.abilities.common.BeginningOfEndStepTriggeredAbility; +import mage.abilities.common.SimpleStaticAbility; import mage.abilities.condition.common.MorbidCondition; import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility; import mage.abilities.dynamicvalue.common.StaticValue; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.LookLibraryAndPickControllerEffect; import mage.abilities.effects.common.LoseLifeOpponentsEffect; +import mage.abilities.effects.common.continuous.GainClassAbilitySourceEffect; import mage.abilities.hint.common.MorbidHint; import mage.abilities.keyword.ClassLevelAbility; import mage.abilities.keyword.ClassReminderAbility; @@ -39,7 +41,7 @@ public final class WarlockClass extends CardImpl { // At the beginning of your end step, if a creature died this turn, each opponent loses 1 life. this.addAbility(new ConditionalInterveningIfTriggeredAbility( new BeginningOfEndStepTriggeredAbility( - new LoseLifeOpponentsEffect(2), TargetController.YOU, false + new LoseLifeOpponentsEffect(1), TargetController.YOU, false ), MorbidCondition.instance, "At the beginning of your end step, " + "if a creature died this turn, each opponent loses 1 life." ).addHint(MorbidHint.instance), new MorbidWatcher()); @@ -49,7 +51,7 @@ public final class WarlockClass extends CardImpl { // When this Class becomes level 2, look at the top three cards of your library. Put one of them into your hand and the rest into your graveyard. this.addAbility(new BecomesClassLevelTriggeredAbility(new LookLibraryAndPickControllerEffect( - StaticValue.get(1), false, StaticValue.get(1), StaticFilters.FILTER_CARD, + StaticValue.get(3), false, StaticValue.get(1), StaticFilters.FILTER_CARD, Zone.GRAVEYARD, false, false, false, Zone.HAND, false ), 2)); @@ -57,9 +59,11 @@ public final class WarlockClass extends CardImpl { this.addAbility(new ClassLevelAbility(3, "{6}{B}")); // At the beginning of your end step, each opponent loses life equal to the life they lost this turn. - this.addAbility(new BeginningOfEndStepTriggeredAbility( - new WarlockClassEffect(), TargetController.YOU, false - )); + this.addAbility(new SimpleStaticAbility(new GainClassAbilitySourceEffect( + new BeginningOfEndStepTriggeredAbility( + new WarlockClassEffect(), TargetController.YOU, false + ), 3 + ))); } private WarlockClass(final WarlockClass card) { @@ -76,7 +80,7 @@ class WarlockClassEffect extends OneShotEffect { WarlockClassEffect() { super(Outcome.Benefit); - staticText = "At the beginning of your end step, each opponent loses life equal to the life they lost this turn."; + staticText = "each opponent loses life equal to the life they lost this turn."; } private WarlockClassEffect(final WarlockClassEffect effect) { diff --git a/Mage.Sets/src/mage/cards/w/WildShape.java b/Mage.Sets/src/mage/cards/w/WildShape.java index fd11ef1a42b..cf62caaa074 100644 --- a/Mage.Sets/src/mage/cards/w/WildShape.java +++ b/Mage.Sets/src/mage/cards/w/WildShape.java @@ -25,7 +25,7 @@ public final class WildShape extends CardImpl { // Choose one. Until end of turn, target creature you control has that base power and toughness, becomes that creature type, and gains that ability. this.getSpellAbility().getModes().setChooseText( - ". Until end of turn, target creature you control has that base power and toughness, " + + "Choose one. Until end of turn, target creature you control has that base power and toughness, " + "becomes that creature type, and gains that ability." ); diff --git a/Mage.Sets/src/mage/cards/y/YouFindTheVillainsLair.java b/Mage.Sets/src/mage/cards/y/YouFindTheVillainsLair.java index e6c63acf11a..72aa4229d97 100644 --- a/Mage.Sets/src/mage/cards/y/YouFindTheVillainsLair.java +++ b/Mage.Sets/src/mage/cards/y/YouFindTheVillainsLair.java @@ -27,7 +27,7 @@ public final class YouFindTheVillainsLair extends CardImpl { // • Learn Their Secrets — Draw two cards, then discard two cards. this.getSpellAbility().addMode(new Mode( new DrawDiscardControllerEffect(2, 2) - ).withFlavorWord("Learn Their Secrts")); + ).withFlavorWord("Learn Their Secrets")); } private YouFindTheVillainsLair(final YouFindTheVillainsLair card) { diff --git a/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java b/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java index 0edcd4fa92d..68e4551cc9f 100644 --- a/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java +++ b/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java @@ -56,7 +56,7 @@ public class VerifyCardDataTest { private static final Logger logger = Logger.getLogger(VerifyCardDataTest.class); - private static final String FULL_ABILITIES_CHECK_SET_CODE = "MH2"; // check all abilities and output cards with wrong abilities texts; + private static final String FULL_ABILITIES_CHECK_SET_CODE = "AFR"; // 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/common/BeginningOfEndStepTriggeredAbility.java b/Mage/src/main/java/mage/abilities/common/BeginningOfEndStepTriggeredAbility.java index 61266799aa0..e11b5b6b29c 100644 --- a/Mage/src/main/java/mage/abilities/common/BeginningOfEndStepTriggeredAbility.java +++ b/Mage/src/main/java/mage/abilities/common/BeginningOfEndStepTriggeredAbility.java @@ -118,24 +118,25 @@ public class BeginningOfEndStepTriggeredAbility extends TriggeredAbilityImpl { } private String generateConditionString() { - if (interveningIfClauseCondition != null) { - if (interveningIfClauseCondition.toString().startsWith("if")) { - - //Fixes punctuation on multiple sentence if-then construction - // see -- Colfenor's Urn - if (interveningIfClauseCondition.toString().endsWith(".")) { - return interveningIfClauseCondition.toString() + " "; - } - - return interveningIfClauseCondition.toString() + ", "; - } else { - return "if {this} is " + interveningIfClauseCondition.toString() + ", "; + if (interveningIfClauseCondition == null) { + switch (getZone()) { + case GRAVEYARD: + return "if {this} is in your graveyard, "; } + return ""; } - switch (getZone()) { - case GRAVEYARD: - return "if {this} is in your graveyard, "; + String clauseText = interveningIfClauseCondition.toString(); + if (clauseText.startsWith("if")) { + //Fixes punctuation on multiple sentence if-then construction + // see -- Colfenor's Urn + if (clauseText.endsWith(".")) { + return clauseText + " "; + } + return clauseText + ", "; } - return ""; + System.out.println("=================="); + System.out.println(clauseText); + System.out.println("=================="); + return "if " + clauseText + ", "; } } diff --git a/Mage/src/main/java/mage/abilities/common/CastOnlyIfConditionIsTrueEffect.java b/Mage/src/main/java/mage/abilities/common/CastOnlyIfConditionIsTrueEffect.java index 3c32c37aace..1b280f1493c 100644 --- a/Mage/src/main/java/mage/abilities/common/CastOnlyIfConditionIsTrueEffect.java +++ b/Mage/src/main/java/mage/abilities/common/CastOnlyIfConditionIsTrueEffect.java @@ -10,7 +10,6 @@ import mage.game.Game; import mage.game.events.GameEvent; /** - * * @author LevelX2 */ public class CastOnlyIfConditionIsTrueEffect extends ContinuousRuleModifyingEffectImpl { @@ -52,7 +51,7 @@ public class CastOnlyIfConditionIsTrueEffect extends ContinuousRuleModifyingEffe private String setText() { StringBuilder sb = new StringBuilder("cast this spell only "); if (condition != null) { - sb.append(' ').append(condition.toString()); + sb.append(condition); } return sb.toString(); } diff --git a/Mage/src/main/java/mage/abilities/condition/common/EquippedSourceCondition.java b/Mage/src/main/java/mage/abilities/condition/common/EquippedSourceCondition.java index cdcd889f8fd..18e0adf0ba1 100644 --- a/Mage/src/main/java/mage/abilities/condition/common/EquippedSourceCondition.java +++ b/Mage/src/main/java/mage/abilities/condition/common/EquippedSourceCondition.java @@ -34,7 +34,7 @@ public enum EquippedSourceCondition implements Condition { @Override public String toString() { - return "equipped"; + return "{this} is equipped"; } } diff --git a/Mage/src/main/java/mage/abilities/effects/common/continuous/BecomesCreatureTargetEffect.java b/Mage/src/main/java/mage/abilities/effects/common/continuous/BecomesCreatureTargetEffect.java index 8a1eb66b163..0e200bb74cd 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/continuous/BecomesCreatureTargetEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/continuous/BecomesCreatureTargetEffect.java @@ -182,10 +182,13 @@ public class BecomesCreatureTargetEffect extends ContinuousEffectImpl { sb.append(token.getDescription()); sb.append(' ').append(duration.toString()); if (addStillALandText) { + if (!sb.toString().endsWith("\" ")) { + sb.append(". "); + } if (target.getMaxNumberOfTargets() > 1) { - sb.append(". They're still lands"); + sb.append("They're still lands"); } else { - sb.append(". It's still a land"); + sb.append("It's still a land"); } } return sb.toString().replace(" .", "."); diff --git a/Mage/src/main/java/mage/abilities/effects/common/search/SearchLibraryGraveyardPutInHandEffect.java b/Mage/src/main/java/mage/abilities/effects/common/search/SearchLibraryGraveyardPutInHandEffect.java index 21cd0a54688..c44cb611f34 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/search/SearchLibraryGraveyardPutInHandEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/search/SearchLibraryGraveyardPutInHandEffect.java @@ -35,7 +35,7 @@ public class SearchLibraryGraveyardPutInHandEffect extends OneShotEffect { this.filter = filter; this.forceToSearchBoth = forceToSearchBoth; staticText = (youMay ? "you may " : "") + "search your library and" + (forceToSearchBoth ? "" : "/or") + " graveyard for a card named " + filter.getMessage() - + ", reveal it, and put it into your hand. " + (forceToSearchBoth ? "Then shuffle" : "If you search your library this way, shuffle"); + + ", reveal it, and put it into your hand. " + (forceToSearchBoth ? "Then shuffle" : "If you search your library this way, shuffle it"); } public SearchLibraryGraveyardPutInHandEffect(final SearchLibraryGraveyardPutInHandEffect effect) { diff --git a/Mage/src/main/java/mage/abilities/keyword/EquipAbility.java b/Mage/src/main/java/mage/abilities/keyword/EquipAbility.java index 7b0dc758f80..1bc91d6cfcc 100644 --- a/Mage/src/main/java/mage/abilities/keyword/EquipAbility.java +++ b/Mage/src/main/java/mage/abilities/keyword/EquipAbility.java @@ -28,7 +28,7 @@ public class EquipAbility extends ActivatedAbilityImpl { public EquipAbility(Outcome outcome, Cost cost, Target target) { super(Zone.BATTLEFIELD, new EquipEffect(outcome), cost); this.addTarget(target); - this.timing = TimingRule.SORCERY; + this.timing = TimingRule.SORCERY; } public EquipAbility(final EquipAbility ability) { @@ -50,19 +50,23 @@ public class EquipAbility extends ActivatedAbilityImpl { String targetText = getTargets().get(0) != null ? getTargets().get(0).getFilter().getMessage() : "creature"; String reminderText = " (" + manaCosts.getText() + ": Attach to target " + targetText + ". Equip only as a sorcery. This card enters the battlefield unattached and stays on the battlefield if the creature leaves.)"; - StringBuilder sb = new StringBuilder("Equip "); + StringBuilder sb = new StringBuilder("Equip"); if (!targetText.equals("creature you control")) { - sb.append(targetText); + sb.append(' ').append(targetText); + } + String costText = costs.getText(); + if (costText != null && !costText.isEmpty()) { + sb.append("—").append(costText).append('.'); + } else { sb.append(' '); } - sb.append(costs.getText()); sb.append(manaCosts.getText()); if (costReduceText != null && !costReduceText.isEmpty()) { - sb.append(' '); + sb.append(". "); sb.append(costReduceText); } if (maxActivationsPerTurn == 1) { - sb.append(" Activate only once each turn."); + sb.append(". Activate only once each turn."); } sb.append(reminderText); return sb.toString();