From 33781ac6143a3ada296f0e5382c50a163895f7af Mon Sep 17 00:00:00 2001 From: xenohedron Date: Wed, 1 Nov 2023 22:29:50 -0400 Subject: [PATCH] text fixes --- .../cards/a/AkalPakalFirstAmongEquals.java | 6 +- .../src/mage/cards/b/BladewingsThrall.java | 5 +- .../mage/cards/c/CuratorOfSunsCreation.java | 4 +- .../src/mage/cards/f/FakeYourOwnDeath.java | 2 +- Mage.Sets/src/mage/cards/f/FeignDeath.java | 3 +- .../src/mage/cards/g/GlimpseTheCore.java | 4 +- .../src/mage/cards/g/GlowcapLantern.java | 2 +- Mage.Sets/src/mage/cards/i/IvoryGargoyle.java | 6 +- .../src/mage/cards/m/MoltenFirebird.java | 6 +- .../src/mage/cards/t/TarriansSoulcleaver.java | 2 +- .../src/mage/cards/t/TrumpetingCarnosaur.java | 2 +- .../cards/u/UchbenbakTheGreatMistake.java | 4 +- Mage.Sets/src/mage/cards/u/UndyingMalice.java | 81 ++----------------- .../CavesControlledAndInGraveCount.java | 4 +- ...ourceFromGraveyardToBattlefieldEffect.java | 2 +- ...aveyardToBattlefieldWithCounterEffect.java | 21 +---- .../continuous/BoostControlledEffect.java | 7 +- .../GainAbilityControlledEffect.java | 9 ++- 18 files changed, 48 insertions(+), 122 deletions(-) diff --git a/Mage.Sets/src/mage/cards/a/AkalPakalFirstAmongEquals.java b/Mage.Sets/src/mage/cards/a/AkalPakalFirstAmongEquals.java index cef396c40d0..6f898f2ebd5 100644 --- a/Mage.Sets/src/mage/cards/a/AkalPakalFirstAmongEquals.java +++ b/Mage.Sets/src/mage/cards/a/AkalPakalFirstAmongEquals.java @@ -35,7 +35,7 @@ public final class AkalPakalFirstAmongEquals extends CardImpl { // At the beginning of each player's end step, if an artifact entered the battlefield under your control this turn, look at the top two cards of your library. Put one of them into your hand and the other into your graveyard. Ability ability = new BeginningOfEndStepTriggeredAbility( new LookLibraryAndPickControllerEffect(2, 1, PutCards.HAND, PutCards.GRAVEYARD), - TargetController.ANY, + TargetController.EACH_PLAYER, AkalPakalCondition.instance, false ); @@ -63,7 +63,7 @@ enum AkalPakalCondition implements Condition { @Override public String toString() { - return "an artifact entered under you control this turn"; + return "an artifact entered the battlefield under your control this turn"; } } @@ -98,4 +98,4 @@ class AkalPakalWatcher extends Watcher { return watcher != null && watcher.playerSet.contains(playerId); } -} \ No newline at end of file +} diff --git a/Mage.Sets/src/mage/cards/b/BladewingsThrall.java b/Mage.Sets/src/mage/cards/b/BladewingsThrall.java index f6c3ea135ea..955167bf360 100644 --- a/Mage.Sets/src/mage/cards/b/BladewingsThrall.java +++ b/Mage.Sets/src/mage/cards/b/BladewingsThrall.java @@ -24,7 +24,7 @@ import java.util.UUID; */ public final class BladewingsThrall extends CardImpl { - static final private String RULE = "{this} has flying as long as you control a Dragon"; + private static final String RULE = "{this} has flying as long as you control a Dragon"; public BladewingsThrall(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}{B}"); @@ -40,7 +40,8 @@ public final class BladewingsThrall extends CardImpl { // When a Dragon enters the battlefield, you may return Bladewing's Thrall from your graveyard to the battlefield. this.addAbility(new EntersBattlefieldAllTriggeredAbility(Zone.GRAVEYARD, - new ReturnSourceFromGraveyardToBattlefieldEffect(), new FilterPermanent(SubType.DRAGON, "a Dragon"), true)); + new ReturnSourceFromGraveyardToBattlefieldEffect(), new FilterPermanent(SubType.DRAGON, "a Dragon"), true) + .setTriggerPhrase("When a Dragon enters the battlefield, ")); } private BladewingsThrall(final BladewingsThrall card) { diff --git a/Mage.Sets/src/mage/cards/c/CuratorOfSunsCreation.java b/Mage.Sets/src/mage/cards/c/CuratorOfSunsCreation.java index bb9caefb5c7..02fb4085e06 100644 --- a/Mage.Sets/src/mage/cards/c/CuratorOfSunsCreation.java +++ b/Mage.Sets/src/mage/cards/c/CuratorOfSunsCreation.java @@ -78,6 +78,6 @@ class CuratorOfSunsCreationTriggeredAbility extends TriggeredAbilityImpl { @Override public String getRule() { - return "Whenever you discover, discover again for the same value."; + return "Whenever you discover, discover again for the same value. This ability triggers only once each turn."; } -} \ No newline at end of file +} diff --git a/Mage.Sets/src/mage/cards/f/FakeYourOwnDeath.java b/Mage.Sets/src/mage/cards/f/FakeYourOwnDeath.java index 3a2ab64cf1b..d7ddbc373e5 100644 --- a/Mage.Sets/src/mage/cards/f/FakeYourOwnDeath.java +++ b/Mage.Sets/src/mage/cards/f/FakeYourOwnDeath.java @@ -25,7 +25,7 @@ public final class FakeYourOwnDeath extends CardImpl { // Until end of turn, target creature gets +2/+0 and gains "When this creature dies, return it to the battlefield tapped under its owner's control and you create a Treasure token." this.getSpellAbility().addEffect(new BoostTargetEffect(2, 0).setText("Until end of turn, target creature gets +2/+0")); - Ability gainedAbility = new DiesSourceTriggeredAbility(new ReturnSourceFromGraveyardToBattlefieldEffect(true)); + Ability gainedAbility = new DiesSourceTriggeredAbility(new ReturnSourceFromGraveyardToBattlefieldEffect(true, true)); gainedAbility.addEffect(new CreateTokenEffect(new TreasureToken())); this.getSpellAbility().addEffect(new GainAbilityTargetEffect(gainedAbility) .setText("and gains \"When this creature dies, return it to the battlefield tapped under its owner's control and you create a Treasure token.\"")); diff --git a/Mage.Sets/src/mage/cards/f/FeignDeath.java b/Mage.Sets/src/mage/cards/f/FeignDeath.java index 6bb40ade691..8e4ea9c1bd6 100644 --- a/Mage.Sets/src/mage/cards/f/FeignDeath.java +++ b/Mage.Sets/src/mage/cards/f/FeignDeath.java @@ -24,7 +24,8 @@ public final class FeignDeath extends CardImpl { // Until end of turn, target creature gains "When this creature dies, return it to the battlefield tapped under its owner's control with a +1/+1 counter on it." this.getSpellAbility().addTarget(new TargetCreaturePermanent()); this.getSpellAbility().addEffect(new GainAbilityTargetEffect( - new DiesSourceTriggeredAbility(new ReturnSourceFromGraveyardToBattlefieldWithCounterEffect(CounterType.P1P1.createInstance(), true)), + new DiesSourceTriggeredAbility(new ReturnSourceFromGraveyardToBattlefieldWithCounterEffect( + CounterType.P1P1.createInstance(), true, true, false, false)), Duration.EndOfTurn, "Until end of turn, target creature gains \"When this creature dies, return it to the battlefield tapped under its owner's control with a +1/+1 counter on it.\"" )); diff --git a/Mage.Sets/src/mage/cards/g/GlimpseTheCore.java b/Mage.Sets/src/mage/cards/g/GlimpseTheCore.java index 6b629584ad7..0445ebb6702 100644 --- a/Mage.Sets/src/mage/cards/g/GlimpseTheCore.java +++ b/Mage.Sets/src/mage/cards/g/GlimpseTheCore.java @@ -31,10 +31,10 @@ public final class GlimpseTheCore extends CardImpl { // Choose one -- // * Search your library for a basic Forest card, put that card onto the battlefield tapped, then shuffle. - this.getSpellAbility().addEffect(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(filter), true)); + this.getSpellAbility().addEffect(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(filter), true, true)); // * Return target Cave card from your graveyard to the battlefield tapped. - this.getSpellAbility().addMode(new Mode(new ReturnFromGraveyardToBattlefieldTargetEffect()).addTarget(new TargetCardInYourGraveyard(filter2))); + this.getSpellAbility().addMode(new Mode(new ReturnFromGraveyardToBattlefieldTargetEffect(true)).addTarget(new TargetCardInYourGraveyard(filter2))); } private GlimpseTheCore(final GlimpseTheCore card) { diff --git a/Mage.Sets/src/mage/cards/g/GlowcapLantern.java b/Mage.Sets/src/mage/cards/g/GlowcapLantern.java index be6d7d3b8f4..92532dcf898 100644 --- a/Mage.Sets/src/mage/cards/g/GlowcapLantern.java +++ b/Mage.Sets/src/mage/cards/g/GlowcapLantern.java @@ -31,7 +31,7 @@ public final class GlowcapLantern extends CardImpl { Ability ability = new SimpleStaticAbility(new GainAbilityAttachedEffect( new SimpleStaticAbility(new LookAtTopCardOfLibraryAnyTimeEffect()), AttachmentType.EQUIPMENT - )); + ).setText("Equipped creature has \"You may look at the top card of your library any time\"")); ability.addEffect(new GainAbilityAttachedEffect( new AttacksTriggeredAbility(new ExploreSourceEffect(false, "{this}")), AttachmentType.EQUIPMENT diff --git a/Mage.Sets/src/mage/cards/i/IvoryGargoyle.java b/Mage.Sets/src/mage/cards/i/IvoryGargoyle.java index 93e6f9bd13c..d3169022f7a 100644 --- a/Mage.Sets/src/mage/cards/i/IvoryGargoyle.java +++ b/Mage.Sets/src/mage/cards/i/IvoryGargoyle.java @@ -35,8 +35,10 @@ public final class IvoryGargoyle extends CardImpl { // When Ivory Gargoyle dies, return it to the battlefield under its owner's control at the beginning of the next end step and you skip your next draw step. Ability ability = new DiesSourceTriggeredAbility(new CreateDelayedTriggeredAbilityEffect( - new AtTheBeginOfNextEndStepDelayedTriggeredAbility(new ReturnSourceFromGraveyardToBattlefieldEffect()))); - ability.addEffect(new SkipNextDrawStepControllerEffect()); + new AtTheBeginOfNextEndStepDelayedTriggeredAbility(new ReturnSourceFromGraveyardToBattlefieldEffect(false, true) + .setText("return it to the battlefield under its owner's control at the beginning of the next end step") + ).setTriggerPhrase(""))); + ability.addEffect(new SkipNextDrawStepControllerEffect().concatBy("and")); this.addAbility(ability); // {4}{W}: Exile Ivory Gargoyle. diff --git a/Mage.Sets/src/mage/cards/m/MoltenFirebird.java b/Mage.Sets/src/mage/cards/m/MoltenFirebird.java index 9fcf380de7b..807394fe954 100644 --- a/Mage.Sets/src/mage/cards/m/MoltenFirebird.java +++ b/Mage.Sets/src/mage/cards/m/MoltenFirebird.java @@ -32,8 +32,10 @@ public final class MoltenFirebird extends CardImpl { // When Molten Firebird dies, return it to the battlefield under its owner’s control at the beginning of the next end step and you skip your next draw step. Ability ability = new DiesSourceTriggeredAbility(new CreateDelayedTriggeredAbilityEffect( - new AtTheBeginOfNextEndStepDelayedTriggeredAbility(new ReturnSourceFromGraveyardToBattlefieldEffect()))); - ability.addEffect(new SkipNextDrawStepControllerEffect()); + new AtTheBeginOfNextEndStepDelayedTriggeredAbility(new ReturnSourceFromGraveyardToBattlefieldEffect(false, true) + .setText("return it to the battlefield under its owner's control at the beginning of the next end step") + ).setTriggerPhrase(""))); + ability.addEffect(new SkipNextDrawStepControllerEffect().concatBy("and")); this.addAbility(ability); // {4}{R}: Exile Molten Firebird. diff --git a/Mage.Sets/src/mage/cards/t/TarriansSoulcleaver.java b/Mage.Sets/src/mage/cards/t/TarriansSoulcleaver.java index 1b3bcd5b528..fe6e7f51792 100644 --- a/Mage.Sets/src/mage/cards/t/TarriansSoulcleaver.java +++ b/Mage.Sets/src/mage/cards/t/TarriansSoulcleaver.java @@ -22,7 +22,7 @@ import java.util.UUID; */ public final class TarriansSoulcleaver extends CardImpl { - public static final FilterPermanent filter = new FilterPermanent("another creature or artifact"); + public static final FilterPermanent filter = new FilterPermanent("another artifact or creature"); static { filter.add(AnotherPredicate.instance); diff --git a/Mage.Sets/src/mage/cards/t/TrumpetingCarnosaur.java b/Mage.Sets/src/mage/cards/t/TrumpetingCarnosaur.java index 522dc9a168c..af787ddd072 100644 --- a/Mage.Sets/src/mage/cards/t/TrumpetingCarnosaur.java +++ b/Mage.Sets/src/mage/cards/t/TrumpetingCarnosaur.java @@ -38,7 +38,7 @@ public final class TrumpetingCarnosaur extends CardImpl { // {2}{R}, Discard Trumpeting Carnosaur: It deals 3 damage to target creature or planeswalker. Ability ability = new SimpleActivatedAbility( - Zone.HAND, new DamageTargetEffect(3), + Zone.HAND, new DamageTargetEffect(3, "It"), new ManaCostsImpl<>("{2}{R}") ); ability.addCost(new DiscardSourceCost()); diff --git a/Mage.Sets/src/mage/cards/u/UchbenbakTheGreatMistake.java b/Mage.Sets/src/mage/cards/u/UchbenbakTheGreatMistake.java index 0a8af157171..ea19cc264c9 100644 --- a/Mage.Sets/src/mage/cards/u/UchbenbakTheGreatMistake.java +++ b/Mage.Sets/src/mage/cards/u/UchbenbakTheGreatMistake.java @@ -1,9 +1,9 @@ package mage.cards.u; import mage.MageInt; +import mage.abilities.common.ActivateIfConditionActivatedAbility; import mage.abilities.condition.common.DescendCondition; import mage.abilities.costs.mana.ManaCostsImpl; -import mage.abilities.decorator.ConditionalActivatedAbility; import mage.abilities.effects.common.ReturnSourceFromGraveyardToBattlefieldWithCounterEffect; import mage.abilities.keyword.MenaceAbility; import mage.abilities.keyword.VigilanceAbility; @@ -35,7 +35,7 @@ public final class UchbenbakTheGreatMistake extends CardImpl { this.addAbility(new MenaceAbility()); // Descend 8 -- {4}{U}{B}: Return Uchbenbak, the Great Mistake from your graveyard to the battlefield with a finality counter on it. Activate only if there are eight or more permanent cards in your graveyard and only as a sorcery. - this.addAbility(new ConditionalActivatedAbility( + this.addAbility(new ActivateIfConditionActivatedAbility( Zone.GRAVEYARD, new ReturnSourceFromGraveyardToBattlefieldWithCounterEffect(CounterType.FINALITY.createInstance(), false), new ManaCostsImpl<>("{4}{U}{B}"), DescendCondition.EIGHT ).setTiming(TimingRule.SORCERY).setAbilityWord(AbilityWord.DESCEND_8).addHint(DescendCondition.getHint())); diff --git a/Mage.Sets/src/mage/cards/u/UndyingMalice.java b/Mage.Sets/src/mage/cards/u/UndyingMalice.java index 948ed327214..36c7cc08b6d 100644 --- a/Mage.Sets/src/mage/cards/u/UndyingMalice.java +++ b/Mage.Sets/src/mage/cards/u/UndyingMalice.java @@ -1,24 +1,16 @@ package mage.cards.u; -import java.util.UUID; - -import mage.abilities.Ability; import mage.abilities.common.DiesSourceTriggeredAbility; -import mage.abilities.effects.ReplacementEffectImpl; -import mage.abilities.effects.common.ReturnSourceFromGraveyardToBattlefieldEffect; +import mage.abilities.effects.common.ReturnSourceFromGraveyardToBattlefieldWithCounterEffect; import mage.abilities.effects.common.continuous.GainAbilityTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.Outcome; import mage.counters.CounterType; -import mage.game.Game; -import mage.game.events.EntersTheBattlefieldEvent; -import mage.game.events.GameEvent; -import mage.game.permanent.Permanent; import mage.target.common.TargetCreaturePermanent; +import java.util.UUID; + /** * * @author weirddan455 @@ -30,8 +22,10 @@ public final class UndyingMalice extends CardImpl { // Until end of turn, target creature gains "When this creature dies, return it to the battlefield tapped under its owner's control with a +1/+1 counter on it." this.getSpellAbility().addTarget(new TargetCreaturePermanent()); - this.getSpellAbility().addEffect(new GainAbilityTargetEffect(new DiesSourceTriggeredAbility(new UndyingMaliceReturnToBattlefieldEffect())) - .setText("Until end of turn, target creature gains \"When this creature dies, return it to the battlefield tapped under its owner's control with a +1/+1 counter on it.\"")); + this.getSpellAbility().addEffect(new GainAbilityTargetEffect(new DiesSourceTriggeredAbility( + new ReturnSourceFromGraveyardToBattlefieldWithCounterEffect( + CounterType.P1P1.createInstance(), true, true, false, false) + )).setText("Until end of turn, target creature gains \"When this creature dies, return it to the battlefield tapped under its owner's control with a +1/+1 counter on it.\"")); } private UndyingMalice(final UndyingMalice card) { @@ -43,64 +37,3 @@ public final class UndyingMalice extends CardImpl { return new UndyingMalice(this); } } - -class UndyingMaliceReturnToBattlefieldEffect extends ReturnSourceFromGraveyardToBattlefieldEffect { - - public UndyingMaliceReturnToBattlefieldEffect() { - super(true); - staticText = "return it to the battlefield tapped under its owner's control with a +1/+1 counter on it"; - } - - private UndyingMaliceReturnToBattlefieldEffect(final UndyingMaliceReturnToBattlefieldEffect effect) { - super(effect); - } - - @Override - public UndyingMaliceReturnToBattlefieldEffect copy() { - return new UndyingMaliceReturnToBattlefieldEffect(this); - } - - @Override - public boolean apply(Game game, Ability source) { - UndyingMaliceCounterEffect counterEffect = new UndyingMaliceCounterEffect(); - game.addEffect(counterEffect, source); - return super.apply(game, source); - } -} - -class UndyingMaliceCounterEffect extends ReplacementEffectImpl { - - public UndyingMaliceCounterEffect() { - super(Duration.EndOfStep, Outcome.BoostCreature); - } - - private UndyingMaliceCounterEffect(final UndyingMaliceCounterEffect effect) { - super(effect); - } - - @Override - public UndyingMaliceCounterEffect copy() { - return new UndyingMaliceCounterEffect(this); - } - - @Override - public boolean checksEventType(GameEvent event, Game game) { - return event.getType() == GameEvent.EventType.ENTERS_THE_BATTLEFIELD; - } - - @Override - public boolean applies(GameEvent event, Ability source, Game game) { - return event.getTargetId().equals(source.getSourceId()); - } - - @Override - public boolean replaceEvent(GameEvent event, Ability source, Game game) { - Permanent creature = ((EntersTheBattlefieldEvent) event).getTarget(); - if (creature == null) { - return false; - } - creature.addCounters(CounterType.P1P1.createInstance(), source.getControllerId(), source, game, event.getAppliedEffects()); - discard(); - return false; - } -} diff --git a/Mage/src/main/java/mage/abilities/dynamicvalue/common/CavesControlledAndInGraveCount.java b/Mage/src/main/java/mage/abilities/dynamicvalue/common/CavesControlledAndInGraveCount.java index 7c8e4d2cedb..ad4cf3623bb 100644 --- a/Mage/src/main/java/mage/abilities/dynamicvalue/common/CavesControlledAndInGraveCount.java +++ b/Mage/src/main/java/mage/abilities/dynamicvalue/common/CavesControlledAndInGraveCount.java @@ -12,7 +12,6 @@ import mage.filter.common.FilterControlledPermanent; import mage.game.Game; import mage.players.Player; -import java.util.Objects; import java.util.Optional; /** @@ -20,7 +19,7 @@ import java.util.Optional; */ public enum CavesControlledAndInGraveCount implements DynamicValue { FOR_EACH("1", "Cave you control and each Cave card in your graveyard"), - WHERE_X("X", "Caves you control plus the number of Cave cards in your graveyard"); + WHERE_X("X", "the number of Caves you control plus the number of Cave cards in your graveyard"); private static final FilterPermanent filter1 = new FilterControlledPermanent(SubType.CAVE); private static final FilterCard filter2 = new FilterCard(); @@ -49,7 +48,6 @@ public enum CavesControlledAndInGraveCount implements DynamicValue { .count(filter1, sourceAbility.getControllerId(), sourceAbility, game) + Optional .ofNullable(game.getPlayer(sourceAbility.getControllerId())) - .filter(Objects::nonNull) .map(Player::getGraveyard) .map(g -> g.count(filter2, game)) .orElse(0); diff --git a/Mage/src/main/java/mage/abilities/effects/common/ReturnSourceFromGraveyardToBattlefieldEffect.java b/Mage/src/main/java/mage/abilities/effects/common/ReturnSourceFromGraveyardToBattlefieldEffect.java index 3d0ec223ac9..bd9bae362c5 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/ReturnSourceFromGraveyardToBattlefieldEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/ReturnSourceFromGraveyardToBattlefieldEffect.java @@ -30,7 +30,7 @@ public class ReturnSourceFromGraveyardToBattlefieldEffect extends OneShotEffect } public ReturnSourceFromGraveyardToBattlefieldEffect(boolean tapped) { - this(tapped, true); + this(tapped, false); } public ReturnSourceFromGraveyardToBattlefieldEffect(boolean tapped, boolean ownerControl) { diff --git a/Mage/src/main/java/mage/abilities/effects/common/ReturnSourceFromGraveyardToBattlefieldWithCounterEffect.java b/Mage/src/main/java/mage/abilities/effects/common/ReturnSourceFromGraveyardToBattlefieldWithCounterEffect.java index 1b5d0cbe9bc..2d41d91119b 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/ReturnSourceFromGraveyardToBattlefieldWithCounterEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/ReturnSourceFromGraveyardToBattlefieldWithCounterEffect.java @@ -18,13 +18,13 @@ public class ReturnSourceFromGraveyardToBattlefieldWithCounterEffect extends Ret private final Counter counter; public ReturnSourceFromGraveyardToBattlefieldWithCounterEffect(Counter counter, boolean tapped) { - this(counter, tapped, true, false, false); + this(counter, tapped, false, false, false); } public ReturnSourceFromGraveyardToBattlefieldWithCounterEffect(Counter counter, boolean tapped, boolean ownerControl, boolean haste, boolean attacking) { super(tapped, ownerControl, haste, attacking); this.counter = counter; - this.staticText = setText(); + this.staticText += " with " + counter.getDescription() + " on it"; } private ReturnSourceFromGraveyardToBattlefieldWithCounterEffect(final ReturnSourceFromGraveyardToBattlefieldWithCounterEffect effect) { @@ -44,23 +44,6 @@ public class ReturnSourceFromGraveyardToBattlefieldWithCounterEffect extends Ret return super.apply(game, source); } - private String setText() { - StringBuilder sb = new StringBuilder(staticText); - sb.append(" with "); - if (counter.getCount() == 1) { - sb.append('a'); - } else { - sb.append(counter.getCount()); - } - sb.append(' '); - sb.append(counter.getName()); - sb.append(" counter"); - if (counter.getCount() != 1) { - sb.append('s'); - } - sb.append(" on it"); - return sb.toString(); - } } class AddCounterSourceReplacementEffect extends ReplacementEffectImpl { diff --git a/Mage/src/main/java/mage/abilities/effects/common/continuous/BoostControlledEffect.java b/Mage/src/main/java/mage/abilities/effects/common/continuous/BoostControlledEffect.java index 87f6bc89218..597b95991e7 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/continuous/BoostControlledEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/continuous/BoostControlledEffect.java @@ -119,8 +119,11 @@ public class BoostControlledEffect extends ContinuousEffectImpl { if (excludeSource && !each && !message.startsWith("all")) { sb.append("other "); } - sb.append(filter.getMessage()).append(" you control "); - sb.append(each ? "gets " : "get "); + sb.append(filter.getMessage()); + if (!filter.getMessage().endsWith("you control")) { + sb.append(" you control"); + } + sb.append(each ? " gets " : " get "); sb.append(CardUtil.getBoostText(power, toughness, duration)); staticText = sb.toString(); } diff --git a/Mage/src/main/java/mage/abilities/effects/common/continuous/GainAbilityControlledEffect.java b/Mage/src/main/java/mage/abilities/effects/common/continuous/GainAbilityControlledEffect.java index bf19ddad74e..2dbd6db6bfc 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/continuous/GainAbilityControlledEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/continuous/GainAbilityControlledEffect.java @@ -126,11 +126,14 @@ public class GainAbilityControlledEffect extends ContinuousEffectImpl { sb.append("other "); } String gainedAbility = CardUtil.stripReminderText(ability.getRule()); - sb.append(filter.getMessage()).append(" you control "); + sb.append(filter.getMessage()); + if (!filter.getMessage().endsWith("you control")) { + sb.append(" you control"); + } if (duration == Duration.WhileOnBattlefield || duration == Duration.EndOfGame) { - sb.append("have "); + sb.append(" have "); } else { - sb.append("gain "); + sb.append(" gain "); } if (forceQuotes || gainedAbility.startsWith("When") || gainedAbility.startsWith("{T}")) { gainedAbility = '"' + gainedAbility + '"';