diff --git a/Mage.Sets/src/mage/cards/b/BrightfieldMustang.java b/Mage.Sets/src/mage/cards/b/BrightfieldMustang.java index 554c4cd9715..f51d9844687 100644 --- a/Mage.Sets/src/mage/cards/b/BrightfieldMustang.java +++ b/Mage.Sets/src/mage/cards/b/BrightfieldMustang.java @@ -29,7 +29,7 @@ public final class BrightfieldMustang extends CardImpl { // Whenever this creature attacks while saddled, untap it and put a +1/+1 counter on it. Ability ability = new AttacksWhileSaddledTriggeredAbility(new UntapSourceEffect().setText("untap it")); - ability.addEffect(new AddCountersSourceEffect(CounterType.P1P1.createInstance())); + ability.addEffect(new AddCountersSourceEffect(CounterType.P1P1.createInstance()).setText("and put a +1/+1 counter on it")); this.addAbility(ability); // Saddle 1 diff --git a/Mage.Sets/src/mage/cards/b/BrightglassGearhulk.java b/Mage.Sets/src/mage/cards/b/BrightglassGearhulk.java index cb9fc32940a..147c231ad0e 100644 --- a/Mage.Sets/src/mage/cards/b/BrightglassGearhulk.java +++ b/Mage.Sets/src/mage/cards/b/BrightglassGearhulk.java @@ -50,7 +50,7 @@ public final class BrightglassGearhulk extends CardImpl { // When this creature enters, you may search your library for up to two artifact, creature, and/or enchantment cards with mana value 1 or less, reveal them, put them into your hand, then shuffle. this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInHandEffect( new TargetCardInLibrary(0, 2, filter), true - ))); + ), true)); } private BrightglassGearhulk(final BrightglassGearhulk card) { diff --git a/Mage.Sets/src/mage/cards/b/BurnoutBashtronaut.java b/Mage.Sets/src/mage/cards/b/BurnoutBashtronaut.java index 3ca6df0dbec..ce78ba1c42e 100644 --- a/Mage.Sets/src/mage/cards/b/BurnoutBashtronaut.java +++ b/Mage.Sets/src/mage/cards/b/BurnoutBashtronaut.java @@ -38,7 +38,7 @@ public final class BurnoutBashtronaut extends CardImpl { // {2}: This creature gets +1/+0 until end of turn. this.addAbility(new SimpleActivatedAbility( - new BoostSourceEffect(2, 0, Duration.EndOfTurn), new GenericManaCost(2) + new BoostSourceEffect(1, 0, Duration.EndOfTurn), new GenericManaCost(2) )); // Max speed -- This creature has double strike. diff --git a/Mage.Sets/src/mage/cards/c/CaradoraHeartOfAlacria.java b/Mage.Sets/src/mage/cards/c/CaradoraHeartOfAlacria.java index 2b93fbbe9ce..052cc2d56d8 100644 --- a/Mage.Sets/src/mage/cards/c/CaradoraHeartOfAlacria.java +++ b/Mage.Sets/src/mage/cards/c/CaradoraHeartOfAlacria.java @@ -43,7 +43,7 @@ public final class CaradoraHeartOfAlacria extends CardImpl { // When Caradora enters, you may search your library for a Mount or Vehicle card, reveal it, put it into your hand, then shuffle. this.addAbility(new EntersBattlefieldTriggeredAbility( - new SearchLibraryPutInHandEffect(new TargetCardInLibrary(filter), true) + new SearchLibraryPutInHandEffect(new TargetCardInLibrary(filter), true), true )); // If one or more +1/+1 counters would be put on a creature or Vehicle you control, that many plus one +1/+1 counters are put on it instead. diff --git a/Mage.Sets/src/mage/cards/c/CarrionCruiser.java b/Mage.Sets/src/mage/cards/c/CarrionCruiser.java index d6b55e4d77a..4e8874f642a 100644 --- a/Mage.Sets/src/mage/cards/c/CarrionCruiser.java +++ b/Mage.Sets/src/mage/cards/c/CarrionCruiser.java @@ -35,7 +35,7 @@ public final class CarrionCruiser extends CardImpl { this.toughness = new MageInt(2); // When this Vehicle enters, mill two cards. Then return a creature or Vehicle card from your graveyard to your hand. - Ability ability = new EntersBattlefieldTriggeredAbility(new MillCardsControllerEffect(3)); + Ability ability = new EntersBattlefieldTriggeredAbility(new MillCardsControllerEffect(2)); ability.addEffect(new CarrionCruiserEffect()); this.addAbility(ability); @@ -66,7 +66,7 @@ class CarrionCruiserEffect extends OneShotEffect { CarrionCruiserEffect() { super(Outcome.Benefit); - staticText = "then return a creature or Vehicle card from your graveyard to your hand"; + staticText = "Then return a creature or Vehicle card from your graveyard to your hand"; } private CarrionCruiserEffect(final CarrionCruiserEffect effect) { diff --git a/Mage.Sets/src/mage/cards/c/ChandraSparkHunter.java b/Mage.Sets/src/mage/cards/c/ChandraSparkHunter.java index e6a2666cf20..3f551c2ad1e 100644 --- a/Mage.Sets/src/mage/cards/c/ChandraSparkHunter.java +++ b/Mage.Sets/src/mage/cards/c/ChandraSparkHunter.java @@ -64,7 +64,7 @@ public final class ChandraSparkHunter extends CardImpl { this.addAbility(new LoyaltyAbility(new CreateTokenEffect(new VehicleToken()), 0)); // -7: You get an emblem with "Whenever an artifact you control enters, this emblem deals 3 damage to any target." - this.addAbility(new LoyaltyAbility(new GetEmblemEffect(new ChandraSparkHunterEmblem()))); + this.addAbility(new LoyaltyAbility(new GetEmblemEffect(new ChandraSparkHunterEmblem()), -7)); } private ChandraSparkHunter(final ChandraSparkHunter card) { diff --git a/Mage.Sets/src/mage/cards/e/EndriderCatalyzer.java b/Mage.Sets/src/mage/cards/e/EndriderCatalyzer.java index d183da2f11b..ee03b0610df 100644 --- a/Mage.Sets/src/mage/cards/e/EndriderCatalyzer.java +++ b/Mage.Sets/src/mage/cards/e/EndriderCatalyzer.java @@ -32,7 +32,7 @@ public final class EndriderCatalyzer extends CardImpl { // Max speed -- {T}: Add {R}{R}. this.addAbility(new MaxSpeedAbility(new SimpleManaAbility( - Zone.BATTLEFIELD, Mana.GreenMana(2), new TapSourceCost() + Zone.BATTLEFIELD, Mana.RedMana(2), new TapSourceCost() ))); } diff --git a/Mage.Sets/src/mage/cards/g/GreenbeltGuardian.java b/Mage.Sets/src/mage/cards/g/GreenbeltGuardian.java index f00077baafa..d5d0d20920a 100644 --- a/Mage.Sets/src/mage/cards/g/GreenbeltGuardian.java +++ b/Mage.Sets/src/mage/cards/g/GreenbeltGuardian.java @@ -39,7 +39,7 @@ public final class GreenbeltGuardian extends CardImpl { // Exhaust -- {3}{G}: Put three +1/+1 counters on this creature. this.addAbility(new ExhaustAbility( - new AddCountersSourceEffect(CounterType.P1P1.createInstance()), new ManaCostsImpl<>("{3}{G}") + new AddCountersSourceEffect(CounterType.P1P1.createInstance(3)), new ManaCostsImpl<>("{3}{G}") )); } diff --git a/Mage.Sets/src/mage/cards/g/GuidelightPathmaker.java b/Mage.Sets/src/mage/cards/g/GuidelightPathmaker.java index 5e8b6c2a7ed..43a1fcfdf95 100644 --- a/Mage.Sets/src/mage/cards/g/GuidelightPathmaker.java +++ b/Mage.Sets/src/mage/cards/g/GuidelightPathmaker.java @@ -37,7 +37,7 @@ public final class GuidelightPathmaker extends CardImpl { this.addAbility(VigilanceAbility.getInstance()); // When this Vehicle enters, you may search your library for an artifact card and reveal it. Put it onto the battlefield if its mana value is 2 or less. Otherwise, put it into your hand. Then shuffle. - this.addAbility(new EntersBattlefieldTriggeredAbility(new GuidelightPathmakerEffect())); + this.addAbility(new EntersBattlefieldTriggeredAbility(new GuidelightPathmakerEffect(), true)); // Crew 2 this.addAbility(new CrewAbility(2)); diff --git a/Mage.Sets/src/mage/cards/h/HauntTheNetwork.java b/Mage.Sets/src/mage/cards/h/HauntTheNetwork.java index 683767551b5..8b3f689b625 100644 --- a/Mage.Sets/src/mage/cards/h/HauntTheNetwork.java +++ b/Mage.Sets/src/mage/cards/h/HauntTheNetwork.java @@ -26,7 +26,7 @@ public final class HauntTheNetwork extends CardImpl { this.getSpellAbility().addEffect(new InfoEffect("choose target opponent")); this.getSpellAbility().addEffect(new CreateTokenEffect(new ThopterColorlessToken(), 2)); this.getSpellAbility().addEffect(new LoseLifeTargetEffect(ArtifactYouControlCount.instance) - .setText("then the chosen player loses X life")); + .setText("Then the chosen player loses X life")); this.getSpellAbility().addEffect(new GainLifeEffect( ArtifactYouControlCount.instance, "and you gain X life, " + "where X is the number of artifacts you control" diff --git a/Mage.Sets/src/mage/cards/k/KickoffCelebrations.java b/Mage.Sets/src/mage/cards/k/KickoffCelebrations.java index d191894d023..6eed5fd499d 100644 --- a/Mage.Sets/src/mage/cards/k/KickoffCelebrations.java +++ b/Mage.Sets/src/mage/cards/k/KickoffCelebrations.java @@ -42,7 +42,7 @@ public final class KickoffCelebrations extends CardImpl { // When this enchantment enters, you may discard a card. If you do, draw two cards. this.addAbility(new EntersBattlefieldTriggeredAbility( - new DoIfCostPaid(new DrawCardSourceControllerEffect(1), new DiscardCardCost()) + new DoIfCostPaid(new DrawCardSourceControllerEffect(2), new DiscardCardCost()) )); // Max speed -- Sacrifice this enchantment: Creatures and Vehicles you control gain haste until end of turn. diff --git a/Mage.Sets/src/mage/cards/o/OviyaAutomechArtisan.java b/Mage.Sets/src/mage/cards/o/OviyaAutomechArtisan.java index c1cca3e803d..14865f03ca6 100644 --- a/Mage.Sets/src/mage/cards/o/OviyaAutomechArtisan.java +++ b/Mage.Sets/src/mage/cards/o/OviyaAutomechArtisan.java @@ -34,7 +34,7 @@ import java.util.UUID; public final class OviyaAutomechArtisan extends CardImpl { private static final FilterPermanent filter - = new FilterCreaturePermanent("creature that's attacking one of your opponents"); + = new FilterCreaturePermanent("each creature that's attacking one of your opponents"); static { filter.add(OviyaAutomechArtisanPredicate.instance); diff --git a/Mage.Sets/src/mage/cards/p/PactdollTerror.java b/Mage.Sets/src/mage/cards/p/PactdollTerror.java index a741d9c0c95..5770f25e2ab 100644 --- a/Mage.Sets/src/mage/cards/p/PactdollTerror.java +++ b/Mage.Sets/src/mage/cards/p/PactdollTerror.java @@ -29,7 +29,7 @@ public final class PactdollTerror extends CardImpl { Ability ability = new EntersBattlefieldThisOrAnotherTriggeredAbility( new LoseLifeOpponentsEffect(1), StaticFilters.FILTER_CONTROLLED_PERMANENT_ARTIFACT, - true, false + false, false ); ability.addEffect(new GainLifeEffect(1).concatBy("and")); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/p/PitAutomaton.java b/Mage.Sets/src/mage/cards/p/PitAutomaton.java index 9a4174f9c56..80b0021ae8f 100644 --- a/Mage.Sets/src/mage/cards/p/PitAutomaton.java +++ b/Mage.Sets/src/mage/cards/p/PitAutomaton.java @@ -95,6 +95,6 @@ class PitAutomatonTriggeredAbility extends DelayedTriggeredAbility { @Override public String getRule() { - return "When you next activate an exhaust ability this turn, copy it. You may choose new targets for the copy."; + return "When you next activate an exhaust ability that isn't a mana ability this turn, copy it. You may choose new targets for the copy."; } } diff --git a/Mage.Sets/src/mage/cards/r/RoverBlades.java b/Mage.Sets/src/mage/cards/r/RoverBlades.java index e9aba3f9705..a47c95132c1 100644 --- a/Mage.Sets/src/mage/cards/r/RoverBlades.java +++ b/Mage.Sets/src/mage/cards/r/RoverBlades.java @@ -32,7 +32,7 @@ public final class RoverBlades extends CardImpl { // Equipped creature has double strike. this.addAbility(new SimpleStaticAbility(new GainAbilityAttachedEffect( - DoubleStrikeAbility.getInstance(), AttachmentType.AURA + DoubleStrikeAbility.getInstance(), AttachmentType.EQUIPMENT ))); // Equip {4} diff --git a/Mage.Sets/src/mage/cards/s/SabSunenLuxaEmbodied.java b/Mage.Sets/src/mage/cards/s/SabSunenLuxaEmbodied.java index da37bff00f9..ff9fc16cecf 100644 --- a/Mage.Sets/src/mage/cards/s/SabSunenLuxaEmbodied.java +++ b/Mage.Sets/src/mage/cards/s/SabSunenLuxaEmbodied.java @@ -54,7 +54,7 @@ public final class SabSunenLuxaEmbodied extends CardImpl { ); ability.addEffect(new ConditionalOneShotEffect( new DrawCardSourceControllerEffect(2), SabSunenLuxaEmbodiedCondition.ODD, - "then if it has an odd number of counters on it, draw two cards" + "Then if it has an odd number of counters on it, draw two cards" )); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/SabotageStrategist.java b/Mage.Sets/src/mage/cards/s/SabotageStrategist.java index 75f6fa15714..43d5f1f6a0b 100644 --- a/Mage.Sets/src/mage/cards/s/SabotageStrategist.java +++ b/Mage.Sets/src/mage/cards/s/SabotageStrategist.java @@ -62,7 +62,7 @@ public final class SabotageStrategist extends CardImpl { class SabotageStrategistTriggeredAbility extends TriggeredAbilityImpl { SabotageStrategistTriggeredAbility() { - super(Zone.BATTLEFIELD, new BoostTargetEffect(-1, 0)); + super(Zone.BATTLEFIELD, new BoostTargetEffect(-1, 0).setText("those creatures get -1/-0 until end of turn")); this.setTriggerPhrase("Whenever one or more creatures attack you, "); } diff --git a/Mage.Sets/src/mage/cards/s/SamutTheDrivingForce.java b/Mage.Sets/src/mage/cards/s/SamutTheDrivingForce.java index 519c461d755..23211469d08 100644 --- a/Mage.Sets/src/mage/cards/s/SamutTheDrivingForce.java +++ b/Mage.Sets/src/mage/cards/s/SamutTheDrivingForce.java @@ -60,6 +60,7 @@ public final class SamutTheDrivingForce extends CardImpl { // Noncreature spells you cast cost {X} less to cast, where X is your speed. this.addAbility(new SimpleStaticAbility( new SpellsCostReductionControllerEffect(filter, ControllerSpeedCount.instance) + .setText("noncreature spells you cast cost {X} less to cast, where X is your speed") )); } diff --git a/Mage.Sets/src/mage/cards/t/TheAetherspark.java b/Mage.Sets/src/mage/cards/t/TheAetherspark.java index 22e0e814a82..c85453d48c8 100644 --- a/Mage.Sets/src/mage/cards/t/TheAetherspark.java +++ b/Mage.Sets/src/mage/cards/t/TheAetherspark.java @@ -68,7 +68,7 @@ public final class TheAetherspark extends CardImpl { this.addAbility(new LoyaltyAbility(new DrawCardSourceControllerEffect(2), -5)); // -10: Add ten mana of any one color. - this.addAbility(new LoyaltyAbility(new AddManaOfAnyColorEffect(3), -10)); + this.addAbility(new LoyaltyAbility(new AddManaOfAnyColorEffect(10), -10)); } private TheAetherspark(final TheAetherspark card) { diff --git a/Mage.Sets/src/mage/cards/t/TicketTortoise.java b/Mage.Sets/src/mage/cards/t/TicketTortoise.java index 9aa6417df1b..8d9a58dac6a 100644 --- a/Mage.Sets/src/mage/cards/t/TicketTortoise.java +++ b/Mage.Sets/src/mage/cards/t/TicketTortoise.java @@ -33,7 +33,8 @@ public final class TicketTortoise extends CardImpl { this.addAbility(DefenderAbility.getInstance()); // When this creature enters, if an opponent controls more lands than you, you create a Treasure token. - this.addAbility(new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new TreasureToken())).withInterveningIf(condition)); + this.addAbility(new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new TreasureToken()) + .setText("you create a Treasure token")).withInterveningIf(condition)); } private TicketTortoise(final TicketTortoise card) { diff --git a/Mage.Sets/src/mage/cards/v/VeteranBeastrider.java b/Mage.Sets/src/mage/cards/v/VeteranBeastrider.java index 03a6231687d..327092b813e 100644 --- a/Mage.Sets/src/mage/cards/v/VeteranBeastrider.java +++ b/Mage.Sets/src/mage/cards/v/VeteranBeastrider.java @@ -36,7 +36,7 @@ public final class VeteranBeastrider extends CardImpl { // {2}{G}{W}: Creatures you control get +1/+1 until end of turn. this.addAbility(new SimpleActivatedAbility(new BoostControlledEffect( - 1, 1, Duration.EndOfTurn, true + 1, 1, Duration.EndOfTurn, false ), new ManaCostsImpl<>("{2}{G}{W}"))); } diff --git a/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java b/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java index 1d70d7dd368..fb1776b8f48 100644 --- a/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java +++ b/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java @@ -70,7 +70,7 @@ public class VerifyCardDataTest { private static final Logger logger = Logger.getLogger(VerifyCardDataTest.class); - private static final String FULL_ABILITIES_CHECK_SET_CODES = "MH3;M3C"; // check ability text due mtgjson, can use multiple sets like MAT;CMD or * for all + private static final String FULL_ABILITIES_CHECK_SET_CODES = "DFT"; // check ability text due mtgjson, can use multiple sets like MAT;CMD or * for all private static final boolean CHECK_ONLY_ABILITIES_TEXT = false; // use when checking text locally, suppresses unnecessary checks and output messages private static final boolean CHECK_COPYABLE_FIELDS = true; // disable for better verify test performance diff --git a/Mage/src/main/java/mage/abilities/common/MaxSpeedAbility.java b/Mage/src/main/java/mage/abilities/common/MaxSpeedAbility.java index ce34f866ee1..d97c23e9c16 100644 --- a/Mage/src/main/java/mage/abilities/common/MaxSpeedAbility.java +++ b/Mage/src/main/java/mage/abilities/common/MaxSpeedAbility.java @@ -10,6 +10,7 @@ import mage.cards.Card; import mage.constants.*; import mage.game.Game; import mage.game.permanent.Permanent; +import mage.util.CardUtil; /** * @author TheElk801 @@ -85,6 +86,6 @@ class MaxSpeedAbilityEffect extends ContinuousEffectImpl { @Override public String getText(Mode mode) { - return "Max speed — " + ability.getRule(); + return "Max speed — " + CardUtil.getTextWithFirstCharUpperCase(ability.getRule()); } } diff --git a/Mage/src/main/java/mage/abilities/common/MayCastFromGraveyardSourceAbility.java b/Mage/src/main/java/mage/abilities/common/MayCastFromGraveyardSourceAbility.java index a86ac17e6c6..00f77b14586 100644 --- a/Mage/src/main/java/mage/abilities/common/MayCastFromGraveyardSourceAbility.java +++ b/Mage/src/main/java/mage/abilities/common/MayCastFromGraveyardSourceAbility.java @@ -35,7 +35,7 @@ class MayCastFromGraveyardEffect extends AsThoughEffectImpl { MayCastFromGraveyardEffect() { super(AsThoughEffectType.CAST_FROM_NOT_OWN_HAND_ZONE, Duration.EndOfGame, Outcome.PutCreatureInPlay); - staticText = "you may cast {this} from your graveyard"; + staticText = "you may cast this card from your graveyard"; } private MayCastFromGraveyardEffect(final MayCastFromGraveyardEffect effect) { diff --git a/Mage/src/main/java/mage/abilities/costs/common/ExileSourceFromGraveCost.java b/Mage/src/main/java/mage/abilities/costs/common/ExileSourceFromGraveCost.java index 51fad57ba09..4b1ad0b2610 100644 --- a/Mage/src/main/java/mage/abilities/costs/common/ExileSourceFromGraveCost.java +++ b/Mage/src/main/java/mage/abilities/costs/common/ExileSourceFromGraveCost.java @@ -16,7 +16,7 @@ import java.util.UUID; public class ExileSourceFromGraveCost extends CostImpl { public ExileSourceFromGraveCost() { - this.text = "exile {this} from your graveyard"; + this.text = "exile this card from your graveyard"; } private ExileSourceFromGraveCost(final ExileSourceFromGraveCost cost) { diff --git a/Mage/src/main/java/mage/abilities/effects/common/continuous/GainAbilitySourceEffect.java b/Mage/src/main/java/mage/abilities/effects/common/continuous/GainAbilitySourceEffect.java index c75f26a8aac..03195c6b9e0 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/continuous/GainAbilitySourceEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/continuous/GainAbilitySourceEffect.java @@ -36,8 +36,9 @@ public class GainAbilitySourceEffect extends ContinuousEffectImpl { super(duration, Layer.AbilityAddingRemovingEffects_6, SubLayer.NA, Outcome.AddAbility); this.ability = ability; this.onCard = onCard; - this.staticText = "{this} gains " + CardUtil.stripReminderText(ability.getRule()) - + (duration.toString().isEmpty() ? "" : ' ' + duration.toString()); + this.staticText = "{this} " + (duration == Duration.WhileOnBattlefield ? "has" : "gains") + + ' ' + CardUtil.stripReminderText(ability.getRule()) + + (duration.toString().isEmpty() ? "" : ' ' + duration.toString()); this.generateGainAbilityDependencies(ability, null); } diff --git a/Mage/src/main/java/mage/game/command/emblems/ChandraSparkHunterEmblem.java b/Mage/src/main/java/mage/game/command/emblems/ChandraSparkHunterEmblem.java index 8e986516110..843f2f6bb4f 100644 --- a/Mage/src/main/java/mage/game/command/emblems/ChandraSparkHunterEmblem.java +++ b/Mage/src/main/java/mage/game/command/emblems/ChandraSparkHunterEmblem.java @@ -20,8 +20,8 @@ public final class ChandraSparkHunterEmblem extends Emblem { public ChandraSparkHunterEmblem() { super("Emblem Chandra"); Ability ability = new EntersBattlefieldAllTriggeredAbility( - Zone.COMMAND, new DamageTargetEffect(3), - StaticFilters.FILTER_CONTROLLED_PERMANENT_ARTIFACT_AN, false + Zone.COMMAND, new DamageTargetEffect(3, "this emblem"), + StaticFilters.FILTER_CONTROLLED_PERMANENT_ARTIFACT, false ); ability.addTarget(new TargetAnyTarget()); this.getAbilities().add(ability); diff --git a/Mage/src/main/java/mage/game/permanent/token/PilotSaddleCrewToken.java b/Mage/src/main/java/mage/game/permanent/token/PilotSaddleCrewToken.java index e96c267aae3..e5fe9a90055 100644 --- a/Mage/src/main/java/mage/game/permanent/token/PilotSaddleCrewToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/PilotSaddleCrewToken.java @@ -11,7 +11,7 @@ import mage.constants.SubType; public final class PilotSaddleCrewToken extends TokenImpl { public PilotSaddleCrewToken() { - super("Pilot Token", "1/1 colorless Pilot creature token with \"This creature saddles Mounts and crews Vehicles as though its power were 2 greater.\""); + super("Pilot Token", "1/1 colorless Pilot creature token with \"This token saddles Mounts and crews Vehicles as though its power were 2 greater.\""); cardType.add(CardType.CREATURE); subtype.add(SubType.PILOT); power = new MageInt(1); diff --git a/Mage/src/main/java/mage/util/CardUtil.java b/Mage/src/main/java/mage/util/CardUtil.java index 7b81b895d68..7ba17e4036f 100644 --- a/Mage/src/main/java/mage/util/CardUtil.java +++ b/Mage/src/main/java/mage/util/CardUtil.java @@ -10,6 +10,7 @@ import mage.abilities.costs.VariableCost; import mage.abilities.costs.mana.*; import mage.abilities.dynamicvalue.DynamicValue; import mage.abilities.dynamicvalue.common.SavedDamageValue; +import mage.abilities.dynamicvalue.common.SavedDiscardValue; import mage.abilities.dynamicvalue.common.SavedGainedLifeValue; import mage.abilities.dynamicvalue.common.StaticValue; import mage.abilities.effects.ContinuousEffect; @@ -967,7 +968,9 @@ public final class CardUtil { boolean xValue = amount.toString().equals("X"); if (xValue) { sb.append("X ").append(counter.getName()).append(" counters"); - } else if (amount == SavedDamageValue.MANY || amount == SavedGainedLifeValue.MANY) { + } else if (amount == SavedDamageValue.MANY + || amount == SavedGainedLifeValue.MANY + || amount == SavedDiscardValue.MANY) { sb.append("that many ").append(counter.getName()).append(" counters"); } else { sb.append(counter.getDescription()); @@ -1176,7 +1179,7 @@ public final class CardUtil { .sum(); int remainingValue = maxValue - selectedValue; Set validTargets = new HashSet<>(); - for (UUID id: possibleTargets) { + for (UUID id : possibleTargets) { MageObject mageObject = game.getObject(id); if (mageObject != null && valueMapper.applyAsInt(mageObject) <= remainingValue) { validTargets.add(id);