From b0ebf4ad5b4618be468f8a56dc01d4d0fc896c06 Mon Sep 17 00:00:00 2001 From: Evan Kranzler Date: Thu, 22 Sep 2022 22:29:39 -0400 Subject: [PATCH] [NCC] various text fixes --- Mage.Sets/src/mage/cards/a/AgentsToolkit.java | 18 ++++++------------ .../src/mage/cards/b/BessSoulNourisher.java | 18 ++++++++++-------- .../src/mage/cards/c/CabarettiConfluence.java | 2 +- Mage.Sets/src/mage/cards/c/CrypticPursuit.java | 9 ++++----- .../src/mage/cards/m/MariTheKillingQuill.java | 2 +- .../src/mage/cards/m/MasterOfCeremonies.java | 2 +- Mage.Sets/src/mage/cards/n/NextOfKin.java | 4 ++-- .../mage/cards/p/ParnesseTheSubtleBrush.java | 6 +++--- .../src/mage/cards/p/PerrieThePulverizer.java | 2 +- .../mage/cards/p/PhabineBosssConfidant.java | 2 +- .../src/mage/cards/r/RiveteersConfluence.java | 7 +++++-- .../src/mage/cards/v/VaziKeenNegotiator.java | 15 ++++++++------- .../java/mage/verify/VerifyCardDataTest.java | 2 +- .../SpellCastControllerTriggeredAbility.java | 7 ++++++- .../counter/AddCounterChoiceSourceEffect.java | 4 ++-- .../abilities/keyword/CasualtyAbility.java | 10 +++++++++- 16 files changed, 61 insertions(+), 49 deletions(-) diff --git a/Mage.Sets/src/mage/cards/a/AgentsToolkit.java b/Mage.Sets/src/mage/cards/a/AgentsToolkit.java index fbbe68580a4..ab464121f3f 100644 --- a/Mage.Sets/src/mage/cards/a/AgentsToolkit.java +++ b/Mage.Sets/src/mage/cards/a/AgentsToolkit.java @@ -6,12 +6,8 @@ import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.common.SacrificeSourceCost; import mage.abilities.costs.mana.GenericManaCost; -import mage.abilities.costs.mana.ManaCostsImpl; -import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; -import mage.abilities.effects.Effect; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.DrawCardSourceControllerEffect; -import mage.abilities.effects.common.GainLifeEffect; import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; @@ -21,9 +17,7 @@ import mage.constants.CardType; import mage.constants.Outcome; import mage.constants.SubType; import mage.constants.Zone; -import mage.counters.Counter; import mage.counters.CounterType; -import mage.counters.Counters; import mage.filter.StaticFilters; import mage.game.Game; import mage.game.permanent.Permanent; @@ -43,17 +37,17 @@ public class AgentsToolkit extends CardImpl { // Agent’s Toolkit enters the battlefield with a +1/+1 counter, a flying counter, a deathtouch counter, and a shield counter on it. Ability counterETBAbility = new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance(1)).setText("with a +1/+1 counter")); - counterETBAbility.addEffect(new AddCountersSourceEffect(CounterType.FLYING.createInstance(1)).setText("a flying counter").concatBy(", ")); - counterETBAbility.addEffect(new AddCountersSourceEffect(CounterType.DEATHTOUCH.createInstance(1)).setText("a deathtouch counter").concatBy(", ")); - counterETBAbility.addEffect(new AddCountersSourceEffect(CounterType.SHIELD.createInstance(1)).setText("and a shield counter on it").concatBy(", ")); + counterETBAbility.addEffect(new AddCountersSourceEffect(CounterType.FLYING.createInstance(1)).setText("a flying counter").concatBy(",")); + counterETBAbility.addEffect(new AddCountersSourceEffect(CounterType.DEATHTOUCH.createInstance(1)).setText("a deathtouch counter").concatBy(",")); + counterETBAbility.addEffect(new AddCountersSourceEffect(CounterType.SHIELD.createInstance(1)).setText("and a shield counter on it").concatBy(",")); this.addAbility(counterETBAbility); // Whenever a creature enters the battlefield under your control, // you may move a counter from Agent’s Toolkit onto that creature. this.addAbility(new EntersBattlefieldControlledTriggeredAbility( new AgentToolkitMoveCounterEffect(), - StaticFilters.FILTER_PERMANENT_CREATURE) - ); + StaticFilters.FILTER_PERMANENT_A_CREATURE + )); // {2}, Sacrifice Agent’s Toolkit: Draw a card. Ability drawAbility = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DrawCardSourceControllerEffect(1), new GenericManaCost(2)); @@ -75,7 +69,7 @@ class AgentToolkitMoveCounterEffect extends OneShotEffect { public AgentToolkitMoveCounterEffect() { super(Outcome.Benefit); - this.staticText = "you may move a counter from Agent's Toolkit onto that creature"; + this.staticText = "you may move a counter from {this} onto that creature"; } private AgentToolkitMoveCounterEffect(final AgentToolkitMoveCounterEffect effect) { diff --git a/Mage.Sets/src/mage/cards/b/BessSoulNourisher.java b/Mage.Sets/src/mage/cards/b/BessSoulNourisher.java index 5b19f72f734..847b23bdf35 100644 --- a/Mage.Sets/src/mage/cards/b/BessSoulNourisher.java +++ b/Mage.Sets/src/mage/cards/b/BessSoulNourisher.java @@ -13,7 +13,9 @@ import mage.constants.*; import mage.counters.CounterType; import mage.filter.StaticFilters; import mage.filter.common.FilterCreaturePermanent; -import mage.filter.predicate.mageobject.*; +import mage.filter.predicate.mageobject.AnotherPredicate; +import mage.filter.predicate.mageobject.BasePowerPredicate; +import mage.filter.predicate.mageobject.BaseToughnessPredicate; import java.util.UUID; @@ -22,7 +24,7 @@ import java.util.UUID; */ public class BessSoulNourisher extends CardImpl { - static final FilterCreaturePermanent filter = new FilterCreaturePermanent("one or more other creatures with base power and toughness 1/1"); + static final FilterCreaturePermanent filter = new FilterCreaturePermanent("other creatures with base power and toughness 1/1"); static { filter.add(AnotherPredicate.instance); @@ -49,12 +51,12 @@ public class BessSoulNourisher extends CardImpl { // Whenever Bess attacks, each other creature you control with base power and toughness 1/1 gets // +X/+X until end of turn, where X is the number of +1/+1 counters on Bess. DynamicValue xValue = new CountersSourceCount(CounterType.P1P1); - this.addAbility(new AttacksTriggeredAbility( - new BoostControlledEffect(xValue, xValue, Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURE, true), - false, - "whenever Bess attacks, each other creature you control with base power and toughness 1/1 " + - "gets +X/+X until end of turn, where X is the number of +1/+1 counters on Bess") - ); + this.addAbility(new AttacksTriggeredAbility(new BoostControlledEffect( + xValue, xValue, Duration.EndOfTurn, + StaticFilters.FILTER_PERMANENT_CREATURE, true + ).setText("each other creature you control with base power and toughness 1/1 " + + "gets +X/+X until end of turn, where X is the number of +1/+1 counters on {this}"), + false)); } private BessSoulNourisher(final BessSoulNourisher card) { diff --git a/Mage.Sets/src/mage/cards/c/CabarettiConfluence.java b/Mage.Sets/src/mage/cards/c/CabarettiConfluence.java index fa890c72189..1fc1a4cb52c 100644 --- a/Mage.Sets/src/mage/cards/c/CabarettiConfluence.java +++ b/Mage.Sets/src/mage/cards/c/CabarettiConfluence.java @@ -53,7 +53,7 @@ public final class CabarettiConfluence extends CardImpl { // • Creatures target player controls gets +1/+1 and gain first strike until end of turn. this.getSpellAbility().addMode(new Mode(new BoostAllEffect( 1, 1, Duration.EndOfTurn, filter, false - ).setText("creatures target player controls gets +1/+1")).addEffect(new GainAbilityAllEffect( + ).setText("creatures target player controls get +1/+1")).addEffect(new GainAbilityAllEffect( FirstStrikeAbility.getInstance(), Duration.EndOfTurn, filter ).setText("and gain first strike until end of turn"))); } diff --git a/Mage.Sets/src/mage/cards/c/CrypticPursuit.java b/Mage.Sets/src/mage/cards/c/CrypticPursuit.java index 9c7542291b2..44f5cfd6e3a 100644 --- a/Mage.Sets/src/mage/cards/c/CrypticPursuit.java +++ b/Mage.Sets/src/mage/cards/c/CrypticPursuit.java @@ -18,8 +18,6 @@ import mage.filter.predicate.card.FaceDownPredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; -import mage.target.targetpointer.FixedTarget; -import mage.util.CardUtil; import java.util.UUID; @@ -28,7 +26,8 @@ import java.util.UUID; */ public class CrypticPursuit extends CardImpl { - private static final FilterPermanent filterFaceDownPermanent = new FilterControlledCreaturePermanent("a face-down creature"); + private static final FilterPermanent filterFaceDownPermanent = new FilterControlledCreaturePermanent("a face-down creature you control"); + static { filterFaceDownPermanent.add(FaceDownPredicate.instance); } @@ -70,7 +69,7 @@ class CrypticPursuitExileAndPlayEffect extends OneShotEffect { CrypticPursuitExileAndPlayEffect() { super(Outcome.Benefit); this.staticText = "exile it if it's an instant or sorcery card. " + - "You may cast that card until the end of your next turn."; + "You may cast that card until the end of your next turn."; } @Override @@ -104,4 +103,4 @@ class CrypticPursuitExileAndPlayEffect extends OneShotEffect { public Effect copy() { return new CrypticPursuitExileAndPlayEffect(this); } -} \ No newline at end of file +} diff --git a/Mage.Sets/src/mage/cards/m/MariTheKillingQuill.java b/Mage.Sets/src/mage/cards/m/MariTheKillingQuill.java index 779ad8fddc9..723e938f1e6 100644 --- a/Mage.Sets/src/mage/cards/m/MariTheKillingQuill.java +++ b/Mage.Sets/src/mage/cards/m/MariTheKillingQuill.java @@ -70,7 +70,7 @@ public class MariTheKillingQuill extends CardImpl { Ability dealsDamageAbility = new DealsCombatDamageToAPlayerTriggeredAbility(new MariTheKillingQuillDealsDamageEffect(), false, true); Effect drawAndTreasureEffect = new GainAbilityControlledEffect(dealsDamageAbility, Duration.WhileOnBattlefield, filter); drawAndTreasureEffect.setText( - "\"Whenever this creature deals combat damage to a player, you may remove a hit counter from a card taht player owns in exile. " + + "\"Whenever this creature deals combat damage to a player, you may remove a hit counter from a card that player owns in exile. " + "If you do, draw a card and create two Treasure tokens.\""); drawAndTreasureEffect.concatBy("and"); diff --git a/Mage.Sets/src/mage/cards/m/MasterOfCeremonies.java b/Mage.Sets/src/mage/cards/m/MasterOfCeremonies.java index c74eefb83fd..6224afd69d7 100644 --- a/Mage.Sets/src/mage/cards/m/MasterOfCeremonies.java +++ b/Mage.Sets/src/mage/cards/m/MasterOfCeremonies.java @@ -63,7 +63,7 @@ class MasterOfCeremoniesChoiceEffect extends OneShotEffect { super(Outcome.Benefit); this.staticText = "each opponent chooses money, friends, or secrets. " + "For each player who chose money, you and that player each create a Treasure token. " + - "For each player who chose friends, you and that player each create a 1/1 green and white Citizen creature token. " + + "For each player who chose friends, you and that player each create a 1/1 green and white Citizen creature token. " + "For each player who chose secrets, you and that player each draw a card."; } diff --git a/Mage.Sets/src/mage/cards/n/NextOfKin.java b/Mage.Sets/src/mage/cards/n/NextOfKin.java index b11f709af5a..2a3818aa554 100644 --- a/Mage.Sets/src/mage/cards/n/NextOfKin.java +++ b/Mage.Sets/src/mage/cards/n/NextOfKin.java @@ -63,8 +63,8 @@ class NextOfKinDiesEffect extends OneShotEffect { NextOfKinDiesEffect() { super(Outcome.Benefit); - this.staticText = "you may put a creature card you own with lesser mana value from your hand or from the command zone onto the battlefield." + - "If you do, return Next of Kin to the battlefield attached to that creature at the beginning of the next end step."; + this.staticText = "you may put a creature card you own with lesser mana value from your hand or from the command zone onto the battlefield. " + + "If you do, return {this} to the battlefield attached to that creature at the beginning of the next end step."; } private NextOfKinDiesEffect(final NextOfKinDiesEffect effect) { diff --git a/Mage.Sets/src/mage/cards/p/ParnesseTheSubtleBrush.java b/Mage.Sets/src/mage/cards/p/ParnesseTheSubtleBrush.java index 16810ce3799..860cceff46c 100644 --- a/Mage.Sets/src/mage/cards/p/ParnesseTheSubtleBrush.java +++ b/Mage.Sets/src/mage/cards/p/ParnesseTheSubtleBrush.java @@ -17,7 +17,6 @@ import mage.game.events.GameEvent; import mage.game.stack.Spell; import mage.players.Player; import mage.target.common.TargetOpponent; -import mage.target.targetpointer.FixedTarget; import java.util.UUID; @@ -60,7 +59,7 @@ class ParnesseTheSubtleBrushCopySpellOpponentEffect extends OneShotEffect { ParnesseTheSubtleBrushCopySpellOpponentEffect() { super(Outcome.Detriment); this.staticText = "up to one target opponent may also copy that spell. " + - "They may choose new targets for that copy"; + "They may choose new targets for that copy"; } ParnesseTheSubtleBrushCopySpellOpponentEffect(final ParnesseTheSubtleBrushCopySpellOpponentEffect effect) { @@ -88,8 +87,9 @@ class ParnesseTheSubtleBrushCopySpellOpponentEffect extends OneShotEffect { class ParnesseTheSubtleBrushCopySpellTriggeredAbility extends TriggeredAbilityImpl { ParnesseTheSubtleBrushCopySpellTriggeredAbility() { - super(Zone.BATTLEFIELD, new ParnesseTheSubtleBrushCopySpellOpponentEffect(), true); + super(Zone.BATTLEFIELD, new ParnesseTheSubtleBrushCopySpellOpponentEffect(), false); this.getTargets().add(new TargetOpponent(0, 1, false)); + setTriggerPhrase("Whenever you copy a spell, "); } private ParnesseTheSubtleBrushCopySpellTriggeredAbility(final ParnesseTheSubtleBrushCopySpellTriggeredAbility ability) { diff --git a/Mage.Sets/src/mage/cards/p/PerrieThePulverizer.java b/Mage.Sets/src/mage/cards/p/PerrieThePulverizer.java index a8d9f21e08b..e9ebd8135c1 100644 --- a/Mage.Sets/src/mage/cards/p/PerrieThePulverizer.java +++ b/Mage.Sets/src/mage/cards/p/PerrieThePulverizer.java @@ -58,7 +58,7 @@ public final class PerrieThePulverizer extends CardImpl { .setText("target creature you control gains trample")); ability.addEffect(new BoostTargetEffect( PerrieThePulverizerValue.instance, PerrieThePulverizerValue.instance, Duration.EndOfTurn - ).setText("and gets +X/+X, where X is the number of different kinds of counters among permanents you control")); + ).setText("and gets +X/+X until end of turn, where X is the number of different kinds of counters among permanents you control")); ability.addTarget(new TargetControlledCreaturePermanent()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/p/PhabineBosssConfidant.java b/Mage.Sets/src/mage/cards/p/PhabineBosssConfidant.java index 65ac9fc98fc..9d759799046 100644 --- a/Mage.Sets/src/mage/cards/p/PhabineBosssConfidant.java +++ b/Mage.Sets/src/mage/cards/p/PhabineBosssConfidant.java @@ -28,7 +28,7 @@ import java.util.UUID; */ public class PhabineBosssConfidant extends CardImpl { - private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Creature tokens you control"); + private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Creature tokens"); static { filter.add(TokenPredicate.TRUE); } diff --git a/Mage.Sets/src/mage/cards/r/RiveteersConfluence.java b/Mage.Sets/src/mage/cards/r/RiveteersConfluence.java index 568ea4b688a..72650084e13 100644 --- a/Mage.Sets/src/mage/cards/r/RiveteersConfluence.java +++ b/Mage.Sets/src/mage/cards/r/RiveteersConfluence.java @@ -1,7 +1,10 @@ package mage.cards.r; import mage.abilities.Mode; -import mage.abilities.effects.common.*; +import mage.abilities.effects.common.DamageAllEffect; +import mage.abilities.effects.common.DrawCardSourceControllerEffect; +import mage.abilities.effects.common.LoseLifeSourceControllerEffect; +import mage.abilities.effects.common.PutCardFromOneOfTwoZonesOntoBattlefieldEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; @@ -17,7 +20,7 @@ import java.util.UUID; */ public class RiveteersConfluence extends CardImpl { - private static final FilterPermanent damageFilter = new FilterCreatureOrPlaneswalkerPermanent(); + private static final FilterPermanent damageFilter = new FilterCreatureOrPlaneswalkerPermanent("creature and planeswalker you don’t control"); static { damageFilter.add(TargetController.NOT_YOU.getControllerPredicate()); diff --git a/Mage.Sets/src/mage/cards/v/VaziKeenNegotiator.java b/Mage.Sets/src/mage/cards/v/VaziKeenNegotiator.java index 84a2921bede..5fab263e389 100644 --- a/Mage.Sets/src/mage/cards/v/VaziKeenNegotiator.java +++ b/Mage.Sets/src/mage/cards/v/VaziKeenNegotiator.java @@ -7,7 +7,6 @@ import mage.abilities.TriggeredAbilityImpl; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.condition.common.TreasureSpentToCastCondition; import mage.abilities.costs.common.TapSourceCost; -import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility; import mage.abilities.dynamicvalue.DynamicValue; import mage.abilities.effects.Effect; import mage.abilities.effects.common.CreateTokenTargetEffect; @@ -16,15 +15,18 @@ import mage.abilities.effects.common.counter.AddCountersTargetEffect; import mage.abilities.keyword.HasteAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.*; +import mage.constants.CardType; +import mage.constants.SubType; +import mage.constants.SuperType; +import mage.constants.Zone; import mage.counters.CounterType; import mage.game.Game; import mage.game.events.GameEvent; import mage.game.permanent.token.TreasureToken; import mage.players.Player; +import mage.target.common.TargetCreaturePermanent; import mage.target.common.TargetOpponent; import mage.watchers.common.CreatedTokenWatcher; -import mage.watchers.common.ManaPaidSourceWatcher; import java.util.Optional; import java.util.UUID; @@ -54,10 +56,7 @@ public class VaziKeenNegotiator extends CardImpl { // if mana from a Treasure was spent to cast it or activate it, // put a +1/+1 counter on target creature, // then draw a card. - Ability castAbility = new VaziKeenNegotiatorOpponentCastsOrActivatesTriggeredAbility(); - castAbility.addTarget(new TargetOpponent()); - castAbility.addEffect(new DrawCardSourceControllerEffect(1)); - this.addAbility(castAbility); + this.addAbility(new VaziKeenNegotiatorOpponentCastsOrActivatesTriggeredAbility()); } private VaziKeenNegotiator(final VaziKeenNegotiator card) { @@ -74,6 +73,8 @@ class VaziKeenNegotiatorOpponentCastsOrActivatesTriggeredAbility extends Trigger VaziKeenNegotiatorOpponentCastsOrActivatesTriggeredAbility() { super(Zone.BATTLEFIELD, new AddCountersTargetEffect(CounterType.P1P1.createInstance())); + addTarget(new TargetCreaturePermanent()); + addEffect(new DrawCardSourceControllerEffect(1).concatBy(", then")); setTriggerPhrase("Whenever an opponent casts a spell or activates an ability, if mana from a Treasure was spent to cast it or activate it, "); } diff --git a/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java b/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java index a6ed06caf7c..9854fbf89de 100644 --- a/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java +++ b/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java @@ -60,7 +60,7 @@ public class VerifyCardDataTest { private static final Logger logger = Logger.getLogger(VerifyCardDataTest.class); - private static final String FULL_ABILITIES_CHECK_SET_CODE = "DMC"; // check all abilities and output cards with wrong abilities texts; + private static final String FULL_ABILITIES_CHECK_SET_CODE = "NCC"; // 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/SpellCastControllerTriggeredAbility.java b/Mage/src/main/java/mage/abilities/common/SpellCastControllerTriggeredAbility.java index f8ae1fcfd95..23f785ea81c 100644 --- a/Mage/src/main/java/mage/abilities/common/SpellCastControllerTriggeredAbility.java +++ b/Mage/src/main/java/mage/abilities/common/SpellCastControllerTriggeredAbility.java @@ -36,6 +36,7 @@ public class SpellCastControllerTriggeredAbility extends TriggeredAbilityImpl { public SpellCastControllerTriggeredAbility(Effect effect, FilterSpell filter, boolean optional, Zone fromZone) { this(effect, filter, optional, false); this.fromZone = fromZone; + makeTriggerPhrase(); } public SpellCastControllerTriggeredAbility(Effect effect, FilterSpell filter, boolean optional, String rule) { @@ -56,7 +57,7 @@ public class SpellCastControllerTriggeredAbility extends TriggeredAbilityImpl { this.filter = filter; this.rememberSource = rememberSource; this.rememberSourceAsCard = rememberSourceAsCard; - setTriggerPhrase("Whenever you cast " + filter.getMessage() + (fromZone != Zone.ALL ? "from your " + fromZone.toString().toLowerCase() : "") + ", "); + makeTriggerPhrase(); } public SpellCastControllerTriggeredAbility(final SpellCastControllerTriggeredAbility ability) { @@ -100,4 +101,8 @@ public class SpellCastControllerTriggeredAbility extends TriggeredAbilityImpl { public SpellCastControllerTriggeredAbility copy() { return new SpellCastControllerTriggeredAbility(this); } + + private void makeTriggerPhrase() { + setTriggerPhrase("Whenever you cast " + filter.getMessage() + (fromZone != Zone.ALL ? " from your " + fromZone.toString().toLowerCase() : "") + ", "); + } } diff --git a/Mage/src/main/java/mage/abilities/effects/common/counter/AddCounterChoiceSourceEffect.java b/Mage/src/main/java/mage/abilities/effects/common/counter/AddCounterChoiceSourceEffect.java index 615cac8598a..d498c64b5ba 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/counter/AddCounterChoiceSourceEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/counter/AddCounterChoiceSourceEffect.java @@ -25,7 +25,7 @@ public class AddCounterChoiceSourceEffect extends OneShotEffect { private final List counterTypes; - public AddCounterChoiceSourceEffect(CounterType ... counterTypes) { + public AddCounterChoiceSourceEffect(CounterType... counterTypes) { super(Outcome.Benefit); this.counterTypes = Arrays.stream(counterTypes).collect(Collectors.toList()); this.createStaticText(); @@ -48,7 +48,7 @@ public class AddCounterChoiceSourceEffect extends OneShotEffect { break; default: List strings = this.counterTypes.stream().map(CounterType::toString).collect(Collectors.toList()); - this.staticText = CardUtil.concatWithOr(strings); + this.staticText = "with your choice of a " + CardUtil.concatWithOr(strings) + " counter on it"; break; } } diff --git a/Mage/src/main/java/mage/abilities/keyword/CasualtyAbility.java b/Mage/src/main/java/mage/abilities/keyword/CasualtyAbility.java index a69ade91a3d..8d34c1bcb93 100644 --- a/Mage/src/main/java/mage/abilities/keyword/CasualtyAbility.java +++ b/Mage/src/main/java/mage/abilities/keyword/CasualtyAbility.java @@ -24,6 +24,7 @@ public class CasualtyAbility extends StaticAbility implements OptionalAdditional private static final String keywordText = "Casualty"; private final String promptString; + private final String rule; protected OptionalAdditionalCost additionalCost; @@ -39,9 +40,10 @@ public class CasualtyAbility extends StaticAbility implements OptionalAdditional super(Zone.STACK, null); String reminderText = "As you cast this spell, you may sacrifice a creature with power " + number + " or greater. When you do, copy this spell."; - this.promptString = "Sacrifice a creature with power " + number + " or greater?"; this.additionalCost = new OptionalAdditionalCostImpl(keywordText, reminderText, new SacrificeTargetCost(makeFilter(number))); this.additionalCost.setRepeatable(false); + this.promptString = "Sacrifice a creature with power " + number + " or greater?"; + this.rule = additionalCost.getName() + ' ' + number + ' ' + additionalCost.getReminderText(); this.setRuleAtTheTop(true); } @@ -49,6 +51,7 @@ public class CasualtyAbility extends StaticAbility implements OptionalAdditional super(ability); this.additionalCost = ability.additionalCost; this.promptString = ability.promptString; + this.rule = ability.rule; } public void resetCasualty() { @@ -92,4 +95,9 @@ public class CasualtyAbility extends StaticAbility implements OptionalAdditional public String getCastMessageSuffix() { return additionalCost == null ? "" : additionalCost.getCastSuffixMessage(0); } + + @Override + public String getRule() { + return rule; + } }