diff --git a/Mage.Sets/src/mage/cards/a/AirCultElemental.java b/Mage.Sets/src/mage/cards/a/AirCultElemental.java index 210a6fa390..173b62f090 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 1ec0ae71e2..12329fc085 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 3a8ceee6d4..c172cb58e1 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 3999e94d0d..746cef4f2e 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 11222e13ae..fcbdae45f3 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 29e81e8eea..183f415693 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 b3d68b92d6..647f735b84 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 7d1364b6ec..fd14b0a394 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 620d99f265..c05ff73f20 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 b66a7e2b43..c0b4636cc7 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 e9c5921272..76bf1480d0 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 f646f20ac4..a88196de0d 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 6c24781cd0..11d7b68c40 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 113c9a3bf3..a8c2b1cfa3 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 9580b0370e..2aee9ae25a 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 e707e31a30..3e112cb30f 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 60005a96d1..441072a9c9 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 d54a362bad..e7d9f9724b 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 0eb4037889..16d39d3d93 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 b49171fc7e..8796421f19 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 ae4bda5dc8..d094f88a3a 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 fd11ef1a42..cf62caaa07 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 e6c63acf11..72aa4229d9 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 0edcd4fa92..68e4551cc9 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 61266799aa..e11b5b6b29 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 3c32c37aac..1b280f1493 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 cdcd889f8f..18e0adf0ba 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 8a1eb66b16..0e200bb74c 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 21cd0a5468..c44cb611f3 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 7b0dc758f8..1bc91d6cfc 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();