diff --git a/Mage.Sets/src/mage/cards/a/AjaniNacatlAvenger.java b/Mage.Sets/src/mage/cards/a/AjaniNacatlAvenger.java index ca79322f610..1c33eedf4e9 100644 --- a/Mage.Sets/src/mage/cards/a/AjaniNacatlAvenger.java +++ b/Mage.Sets/src/mage/cards/a/AjaniNacatlAvenger.java @@ -88,7 +88,7 @@ class AjaniNacatlAvengerZeroEffect extends OneShotEffect { AjaniNacatlAvengerZeroEffect() { super(Outcome.PutCreatureInPlay); - staticText = "Create a 2/1 white Car Warrior creature token. " + staticText = "Create a 2/1 white Cat Warrior creature token. " + "When you do, if you control a red permanent other than {this}, " + "he deals damage equal to the number of creatures you control to any target."; } @@ -162,7 +162,7 @@ class AjaniNacatlAvengerMinusFourEffect extends OneShotEffect { .filter(player -> controller.hasOpponent(player.getId(), game)) .collect(Collectors.toList()); - Set toKeep = new HashSet(); + Set toKeep = new HashSet<>(); for (Player player : playerList) { for (CardType cardType : cardTypes) { String message = cardType.toString().equals("Artifact") ? "an " : "a "; @@ -189,4 +189,4 @@ class AjaniNacatlAvengerMinusFourEffect extends OneShotEffect { return true; } -} \ No newline at end of file +} diff --git a/Mage.Sets/src/mage/cards/a/AjaniNacatlPariah.java b/Mage.Sets/src/mage/cards/a/AjaniNacatlPariah.java index dc9a8e0b29c..d1fd5d5d4c3 100644 --- a/Mage.Sets/src/mage/cards/a/AjaniNacatlPariah.java +++ b/Mage.Sets/src/mage/cards/a/AjaniNacatlPariah.java @@ -46,8 +46,8 @@ public final class AjaniNacatlPariah extends CardImpl { this.addAbility(new TransformAbility()); this.addAbility(new DiesOneOrMoreCreatureTriggeredAbility( new ExileAndReturnSourceEffect(PutCards.BATTLEFIELD_TRANSFORMED, Pronoun.HE), - filter - )); + filter, + true)); } private AjaniNacatlPariah(final AjaniNacatlPariah card) { diff --git a/Mage.Sets/src/mage/cards/f/FortuneLoyalSteed.java b/Mage.Sets/src/mage/cards/f/FortuneLoyalSteed.java index b9ed19dcdec..bbe540e7bb2 100644 --- a/Mage.Sets/src/mage/cards/f/FortuneLoyalSteed.java +++ b/Mage.Sets/src/mage/cards/f/FortuneLoyalSteed.java @@ -49,7 +49,7 @@ public final class FortuneLoyalSteed extends CardImpl { // Whenever Fortune attacks while saddled, at end of combat, exile it and up to one creature that saddled it this turn, then return those cards to the battlefield under their owner's control. this.addAbility(new AttacksWhileSaddledTriggeredAbility(new CreateDelayedTriggeredAbilityEffect( - new AtTheEndOfCombatDelayedTriggeredAbility(new FortuneLoyalSteedEffect()).setTriggerPhrase("at end of combat") + new AtTheEndOfCombatDelayedTriggeredAbility(new FortuneLoyalSteedEffect()).setTriggerPhrase("at end of combat, ") ))); // Saddle 1 diff --git a/Mage.Sets/src/mage/cards/g/GreedsGambit.java b/Mage.Sets/src/mage/cards/g/GreedsGambit.java index 4c57898d798..7091c99c323 100644 --- a/Mage.Sets/src/mage/cards/g/GreedsGambit.java +++ b/Mage.Sets/src/mage/cards/g/GreedsGambit.java @@ -30,7 +30,7 @@ public final class GreedsGambit extends CardImpl { this.addAbility(ability); // At the beginning of your end step, you discard a card, lose 2 life, and sacrifice a creature. - ability = new BeginningOfEndStepTriggeredAbility(new DiscardControllerEffect(1), TargetController.YOU, false); + ability = new BeginningOfEndStepTriggeredAbility(new DiscardControllerEffect(1).setText("you discard a card"), TargetController.YOU, false); ability.addEffect(new LoseLifeSourceControllerEffect(2).setText(", lose 2 life")); ability.addEffect(new SacrificeControllerEffect( StaticFilters.FILTER_PERMANENT_A_CREATURE, 1, "" @@ -38,11 +38,11 @@ public final class GreedsGambit extends CardImpl { this.addAbility(ability); // When Greed's Gambit leaves the battlefield, you discard three cards, lose 6 life, and sacrifice three creatures. - ability = new LeavesBattlefieldTriggeredAbility(new DiscardControllerEffect(3), false); + ability = new LeavesBattlefieldTriggeredAbility(new DiscardControllerEffect(3).setText("you discard three cards"), false); ability.addEffect(new LoseLifeSourceControllerEffect(6).setText(", lose 6 life")); ability.addEffect(new SacrificeControllerEffect( StaticFilters.FILTER_PERMANENT_CREATURE, 3, "" - ).setText(", and sacrifice 3 creatures")); + ).setText(", and sacrifice three creatures")); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/h/HeadlinerScarlett.java b/Mage.Sets/src/mage/cards/h/HeadlinerScarlett.java index 1a8a240d35d..cf6438d8e79 100644 --- a/Mage.Sets/src/mage/cards/h/HeadlinerScarlett.java +++ b/Mage.Sets/src/mage/cards/h/HeadlinerScarlett.java @@ -63,7 +63,7 @@ class HeadlinerScarlettEntersEffect extends OneShotEffect { HeadlinerScarlettEntersEffect() { super(Outcome.Detriment); - staticText = "Creatures target player controls can't block this turn."; + staticText = "creatures target player controls can't block this turn"; } private HeadlinerScarlettEntersEffect(final HeadlinerScarlettEntersEffect effect) { @@ -167,4 +167,4 @@ class HeadlinerScarlettLookEffect extends AsThoughEffectImpl { return affectedControllerId.equals(authorizedPlayerId) && objectId.equals(cardId); } -} \ No newline at end of file +} diff --git a/Mage.Sets/src/mage/cards/k/KirriTalentedSprout.java b/Mage.Sets/src/mage/cards/k/KirriTalentedSprout.java index 5b20e423fbf..679d1076f49 100644 --- a/Mage.Sets/src/mage/cards/k/KirriTalentedSprout.java +++ b/Mage.Sets/src/mage/cards/k/KirriTalentedSprout.java @@ -47,7 +47,7 @@ public final class KirriTalentedSprout extends CardImpl { // Other Plants and Treefolk you control get +2/+0. this.addAbility(new SimpleStaticAbility(new BoostControlledEffect( - 2, 0, Duration.WhileControlled, filter, true + 2, 0, Duration.WhileOnBattlefield, filter, true ))); // At the beginning of your postcombat main phase, return target Plant, Treefolk, or land card from your graveyard to your hand. diff --git a/Mage.Sets/src/mage/cards/l/LumberingMegasloth.java b/Mage.Sets/src/mage/cards/l/LumberingMegasloth.java index 3afaa51da09..e332e7b1ba2 100644 --- a/Mage.Sets/src/mage/cards/l/LumberingMegasloth.java +++ b/Mage.Sets/src/mage/cards/l/LumberingMegasloth.java @@ -15,7 +15,9 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; import mage.constants.Zone; +import mage.counters.Counter; import mage.game.Game; +import mage.players.Player; import java.util.Objects; import java.util.UUID; @@ -59,7 +61,7 @@ public final class LumberingMegasloth extends CardImpl { enum LumberingMegaslothValue implements DynamicValue { instance; - private static final Hint hint = new ValueHint("Number of Counters:", instance); + private static final Hint hint = new ValueHint("Number of counters", instance); public static Hint getHint() { return hint; @@ -73,16 +75,16 @@ enum LumberingMegaslothValue implements DynamicValue { .filter(Objects::nonNull) .map(perm -> perm.getCounters(game)) .flatMap(counters -> counters.values().stream()) - .mapToInt(counter -> counter.getCount()) + .mapToInt(Counter::getCount) .sum(); int onPlayers = game.getState() .getPlayersInRange(sourceAbility.getControllerId(), game) .stream() .map(game::getPlayer) .filter(Objects::nonNull) - .map(player -> player.getCounters()) + .map(Player::getCounters) .flatMap(counters -> counters.values().stream()) - .mapToInt(counter -> counter.getCount()) + .mapToInt(Counter::getCount) .sum(); return onPermanents + onPlayers; } @@ -99,6 +101,6 @@ enum LumberingMegaslothValue implements DynamicValue { @Override public String getMessage() { - return "counters among players and permanents"; + return "counter among players and permanents"; } -} \ No newline at end of file +} diff --git a/Mage.Sets/src/mage/cards/m/MemoryVessel.java b/Mage.Sets/src/mage/cards/m/MemoryVessel.java index 5ef37794587..ab5eb1be2fc 100644 --- a/Mage.Sets/src/mage/cards/m/MemoryVessel.java +++ b/Mage.Sets/src/mage/cards/m/MemoryVessel.java @@ -51,7 +51,7 @@ class MemoryVesselExileEffect extends OneShotEffect { MemoryVesselExileEffect() { super(Outcome.Benefit); staticText = "each player exiles the top seven cards of their library. " + - "Until your next turn, players may play cards they exiled this way"; + "Until your next turn, players may play cards they exiled from their library this way"; } private MemoryVesselExileEffect(final MemoryVesselExileEffect effect) { diff --git a/Mage.Sets/src/mage/cards/o/OliviaOpulentOutlaw.java b/Mage.Sets/src/mage/cards/o/OliviaOpulentOutlaw.java index 37e2d4bc2e8..7e6bfd633e2 100644 --- a/Mage.Sets/src/mage/cards/o/OliviaOpulentOutlaw.java +++ b/Mage.Sets/src/mage/cards/o/OliviaOpulentOutlaw.java @@ -29,13 +29,13 @@ import java.util.UUID; */ public final class OliviaOpulentOutlaw extends CardImpl { - private static final FilterCreaturePermanent filter = new FilterCreaturePermanent(); + private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("outlaws"); static { filter.add(OutlawPredicate.instance); } - private static final FilterControlledPermanent filterTreasure = new FilterControlledPermanent("a Treasure"); + private static final FilterControlledPermanent filterTreasure = new FilterControlledPermanent("Treasures"); static { filterTreasure.add(SubType.TREASURE.getPredicate()); diff --git a/Mage.Sets/src/mage/cards/p/PreWarFormalwear.java b/Mage.Sets/src/mage/cards/p/PreWarFormalwear.java index 5728316de79..5cea2049e2e 100644 --- a/Mage.Sets/src/mage/cards/p/PreWarFormalwear.java +++ b/Mage.Sets/src/mage/cards/p/PreWarFormalwear.java @@ -5,7 +5,7 @@ import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.AttachEffect; -import mage.abilities.effects.common.continuous.BoostEnchantedEffect; +import mage.abilities.effects.common.continuous.BoostEquippedEffect; import mage.abilities.effects.common.continuous.GainAbilityAttachedEffect; import mage.abilities.keyword.EquipAbility; import mage.abilities.keyword.VigilanceAbility; @@ -47,7 +47,7 @@ public final class PreWarFormalwear extends CardImpl { this.addAbility(ability); // Equipped creature gets +2/+2 and has vigilance. - ability = new SimpleStaticAbility(new BoostEnchantedEffect(2, 2, Duration.WhileOnBattlefield)); + ability = new SimpleStaticAbility(new BoostEquippedEffect(2, 2, Duration.WhileOnBattlefield)); ability.addEffect(new GainAbilityAttachedEffect(VigilanceAbility.getInstance(), AttachmentType.AURA).setText("and has vigilance")); this.addAbility(ability); @@ -99,4 +99,4 @@ class PreWarFormalwerEffect extends OneShotEffect { return true; } -} \ No newline at end of file +} diff --git a/Mage.Sets/src/mage/cards/s/SandstormSalvager.java b/Mage.Sets/src/mage/cards/s/SandstormSalvager.java index d73ee881d12..14d93f38133 100644 --- a/Mage.Sets/src/mage/cards/s/SandstormSalvager.java +++ b/Mage.Sets/src/mage/cards/s/SandstormSalvager.java @@ -50,7 +50,8 @@ public final class SandstormSalvager extends CardImpl { new AddCountersAllEffect(CounterType.P1P1.createInstance(), filter), new GenericManaCost(2) ); ability.addCost(new TapSourceCost()); - ability.addEffect(new GainAbilityAllEffect(TrampleAbility.getInstance(), Duration.EndOfTurn, filter)); + ability.addEffect(new GainAbilityAllEffect(TrampleAbility.getInstance(), Duration.EndOfTurn, filter) + .setText("they gain trample until end of turn")); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/v/VengefulTownsfolk.java b/Mage.Sets/src/mage/cards/v/VengefulTownsfolk.java index cad0acb0dfa..e53e827942e 100644 --- a/Mage.Sets/src/mage/cards/v/VengefulTownsfolk.java +++ b/Mage.Sets/src/mage/cards/v/VengefulTownsfolk.java @@ -37,8 +37,8 @@ public final class VengefulTownsfolk extends CardImpl { // Whenever one or more other creatures you control die, put a +1/+1 counter on Vengeful Townsfolk. this.addAbility(new DiesOneOrMoreCreatureTriggeredAbility( new AddCountersSourceEffect(CounterType.P1P1.createInstance(1)), - filter - )); + filter, + false)); } private VengefulTownsfolk(final VengefulTownsfolk card) { diff --git a/Mage/src/main/java/mage/abilities/common/DiesOneOrMoreCreatureTriggeredAbility.java b/Mage/src/main/java/mage/abilities/common/DiesOneOrMoreCreatureTriggeredAbility.java index fad8d0b5eb7..7377db0cd3b 100644 --- a/Mage/src/main/java/mage/abilities/common/DiesOneOrMoreCreatureTriggeredAbility.java +++ b/Mage/src/main/java/mage/abilities/common/DiesOneOrMoreCreatureTriggeredAbility.java @@ -19,8 +19,8 @@ public class DiesOneOrMoreCreatureTriggeredAbility extends TriggeredAbilityImpl private final FilterCreaturePermanent filter; - public DiesOneOrMoreCreatureTriggeredAbility(Effect effect, FilterCreaturePermanent filter) { - super(Zone.BATTLEFIELD, effect, false); + public DiesOneOrMoreCreatureTriggeredAbility(Effect effect, FilterCreaturePermanent filter, boolean optional) { + super(Zone.BATTLEFIELD, effect, optional); this.filter = filter; this.setTriggerPhrase("Whenever one or more " + filter.getMessage() + " die, "); } @@ -59,4 +59,4 @@ public class DiesOneOrMoreCreatureTriggeredAbility extends TriggeredAbilityImpl .stream() .allMatch(e -> TriggeredAbilityImpl.isInUseableZoneDiesTrigger(this, e, game)); } -} \ No newline at end of file +} diff --git a/Mage/src/main/java/mage/abilities/effects/common/MillThenPutInHandEffect.java b/Mage/src/main/java/mage/abilities/effects/common/MillThenPutInHandEffect.java index 343b77ea07b..0a160d2bb08 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/MillThenPutInHandEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/MillThenPutInHandEffect.java @@ -132,13 +132,17 @@ public class MillThenPutInHandEffect extends OneShotEffect { return staticText; } StringBuilder sb = new StringBuilder("mill "); - sb.append(CardUtil.numberToText(amount)); - sb.append(" cards. "); + if (amount == 1) { + sb.append("a card. "); + } else { + sb.append(CardUtil.numberToText(amount)); + sb.append(" cards. "); + } sb.append(optional ? "You may " : "Then "); sb.append("put "); if (maxAmountReturned > 1) { sb.append(optional ? "up to " : ""); - sb.append(CardUtil.numberToText(maxAmountReturned) + " "); + sb.append(CardUtil.numberToText(maxAmountReturned)).append(" "); } sb.append(filter.getMessage()); sb.append(" from among "); diff --git a/Mage/src/main/java/mage/util/CardUtil.java b/Mage/src/main/java/mage/util/CardUtil.java index 97820c04195..c3ef609098c 100644 --- a/Mage/src/main/java/mage/util/CardUtil.java +++ b/Mage/src/main/java/mage/util/CardUtil.java @@ -990,6 +990,7 @@ public final class CardUtil { || text.startsWith("another ") || text.startsWith("any ") || text.startsWith("{this} ") + || text.startsWith("your ") || text.startsWith("one ")) { return text; }