diff --git a/Mage.Sets/src/mage/cards/a/AgainstAllOdds.java b/Mage.Sets/src/mage/cards/a/AgainstAllOdds.java index 6bc6c8f8a7d..694ab005db0 100644 --- a/Mage.Sets/src/mage/cards/a/AgainstAllOdds.java +++ b/Mage.Sets/src/mage/cards/a/AgainstAllOdds.java @@ -22,7 +22,7 @@ import java.util.UUID; */ public final class AgainstAllOdds extends CardImpl { - private static final FilterControlledPermanent filter = new FilterControlledPermanent("artifact or creature card you control"); + private static final FilterControlledPermanent filter = new FilterControlledPermanent("artifact or creature you control"); private static final FilterCard filter2 = new FilterCard("artifact or creature card with mana value 3 or less from your graveyard"); static { diff --git a/Mage.Sets/src/mage/cards/a/AnnexSentry.java b/Mage.Sets/src/mage/cards/a/AnnexSentry.java index 56042a62978..e45e09ea29f 100644 --- a/Mage.Sets/src/mage/cards/a/AnnexSentry.java +++ b/Mage.Sets/src/mage/cards/a/AnnexSentry.java @@ -21,18 +21,17 @@ import mage.target.TargetPermanent; import java.util.UUID; /** - * * @author AhmadYProjects */ public final class AnnexSentry extends CardImpl { - private static final FilterPermanent filter = new FilterPermanent("artifact or creature an opponent controls with cmc 3 or less"); + private static final FilterPermanent filter = new FilterPermanent("artifact or creature an opponent controls with mana value 3 or less"); static { - filter.add(new ManaValuePredicate(ComparisonType.FEWER_THAN,4)); + filter.add(new ManaValuePredicate(ComparisonType.FEWER_THAN, 4)); filter.add(Predicates.or (CardType.ARTIFACT.getPredicate(), - CardType.CREATURE.getPredicate())); + CardType.CREATURE.getPredicate())); filter.add(TargetController.OPPONENT.getControllerPredicate()); } diff --git a/Mage.Sets/src/mage/cards/a/ArchfiendOfTheDross.java b/Mage.Sets/src/mage/cards/a/ArchfiendOfTheDross.java index e4c4ba49fe5..342d5fcc579 100644 --- a/Mage.Sets/src/mage/cards/a/ArchfiendOfTheDross.java +++ b/Mage.Sets/src/mage/cards/a/ArchfiendOfTheDross.java @@ -1,9 +1,5 @@ package mage.cards.a; -import java.util.Objects; -import java.util.Optional; -import java.util.UUID; - import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; @@ -16,18 +12,23 @@ import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.LoseGameSourceControllerEffect; import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.abilities.effects.common.counter.RemoveCounterSourceEffect; -import mage.constants.Outcome; -import mage.constants.SubType; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.Outcome; +import mage.constants.SubType; import mage.constants.TargetController; import mage.counters.CounterType; +import mage.filter.StaticFilters; import mage.game.Controllable; import mage.game.Game; import mage.game.permanent.Permanent; +import java.util.Objects; +import java.util.Optional; +import java.util.UUID; + /** * @author TheElk801 */ @@ -64,7 +65,10 @@ public final class ArchfiendOfTheDross extends CardImpl { this.addAbility(ability); // Whenever a creature an opponent controls dies, its controller loses 2 life. - this.addAbility(new DiesCreatureTriggeredAbility(new ArchfiendOfTheDrossEffect(), false)); + this.addAbility(new DiesCreatureTriggeredAbility( + new ArchfiendOfTheDrossEffect(), false, + StaticFilters.FILTER_OPPONENTS_PERMANENT_A_CREATURE + )); } private ArchfiendOfTheDross(final ArchfiendOfTheDross card) { diff --git a/Mage.Sets/src/mage/cards/b/BlazingCrescendo.java b/Mage.Sets/src/mage/cards/b/BlazingCrescendo.java index 7b981604f03..466d070bcc6 100644 --- a/Mage.Sets/src/mage/cards/b/BlazingCrescendo.java +++ b/Mage.Sets/src/mage/cards/b/BlazingCrescendo.java @@ -25,7 +25,7 @@ public final class BlazingCrescendo extends CardImpl { // Exile the top card of your library. Until the end of your next turn, you may play that card. this.getSpellAbility().addEffect(new ExileTopXMayPlayUntilEndOfTurnEffect( 1, false, Duration.UntilEndOfYourNextTurn - )); + ).concatBy("
")); } private BlazingCrescendo(final BlazingCrescendo card) { diff --git a/Mage.Sets/src/mage/cards/b/BlueSunsTwilight.java b/Mage.Sets/src/mage/cards/b/BlueSunsTwilight.java index d0db602e869..8181631d06e 100644 --- a/Mage.Sets/src/mage/cards/b/BlueSunsTwilight.java +++ b/Mage.Sets/src/mage/cards/b/BlueSunsTwilight.java @@ -28,7 +28,8 @@ public final class BlueSunsTwilight extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{U}{U}"); // Gain control of target creature with mana value X or less. If X is 5 or more, create a token that's a copy of that creature. - this.getSpellAbility().addEffect(new GainControlTargetEffect(Duration.Custom, true)); + this.getSpellAbility().addEffect(new GainControlTargetEffect(Duration.Custom, true) + .setText("gain control of target creature with mana value X or less")); this.getSpellAbility().addEffect(new ConditionalOneShotEffect( new CreateTokenCopyTargetEffect(), BlueSunsTwilightCondition.instance, "If X is 5 or more, create a token that's a copy of that creature" diff --git a/Mage.Sets/src/mage/cards/c/CacophonyScamp.java b/Mage.Sets/src/mage/cards/c/CacophonyScamp.java index d3f8ed0448b..2d7e9000ba9 100644 --- a/Mage.Sets/src/mage/cards/c/CacophonyScamp.java +++ b/Mage.Sets/src/mage/cards/c/CacophonyScamp.java @@ -1,7 +1,5 @@ package mage.cards.c; -import java.util.UUID; - import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.DealsCombatDamageToAPlayerTriggeredAbility; @@ -12,12 +10,14 @@ import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.effects.common.DoIfCostPaid; import mage.abilities.effects.common.counter.ProliferateEffect; -import mage.constants.SubType; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.target.common.TargetAnyTarget; +import java.util.UUID; + /** * @author TheElk801 */ @@ -40,7 +40,8 @@ public final class CacophonyScamp extends CardImpl { ), false)); // When Cacophony Scamp dies, it deals damage equal to its power to any target. - Ability ability = new DiesSourceTriggeredAbility(new DamageTargetEffect(xValue, "it")); + Ability ability = new DiesSourceTriggeredAbility(new DamageTargetEffect(xValue) + .setText("it deals damage equal to its power to any target")); ability.addTarget(new TargetAnyTarget()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/c/CephalopodSentry.java b/Mage.Sets/src/mage/cards/c/CephalopodSentry.java index 0c3130c6dd9..9c695a04b0f 100644 --- a/Mage.Sets/src/mage/cards/c/CephalopodSentry.java +++ b/Mage.Sets/src/mage/cards/c/CephalopodSentry.java @@ -32,6 +32,7 @@ public final class CephalopodSentry extends CardImpl { // Cephalopod Sentry's power is equal to the number of artifacts you control. this.addAbility(new SimpleStaticAbility( Zone.ALL, new SetBasePowerSourceEffect(ArtifactYouControlCount.instance) + .setText("{this}'s power is equal to the number of artifacts you control") )); } diff --git a/Mage.Sets/src/mage/cards/c/ChargeOfTheMites.java b/Mage.Sets/src/mage/cards/c/ChargeOfTheMites.java index 15f9e2c36e7..0bdea508ff8 100644 --- a/Mage.Sets/src/mage/cards/c/ChargeOfTheMites.java +++ b/Mage.Sets/src/mage/cards/c/ChargeOfTheMites.java @@ -23,7 +23,8 @@ public final class ChargeOfTheMites extends CardImpl { // Choose one-- // * Charge of the Mites deals damage equal to the number of creatures you control to target creature or planeswalker. - this.getSpellAbility().addEffect(new DamageTargetEffect(CreaturesYouControlCount.instance)); + this.getSpellAbility().addEffect(new DamageTargetEffect(CreaturesYouControlCount.instance) + .setText("{this} deals damage equal to the number of creatures you control to target creature or planeswalker")); this.getSpellAbility().addTarget(new TargetCreatureOrPlaneswalker()); this.getSpellAbility().addHint(CreaturesYouControlHint.instance); diff --git a/Mage.Sets/src/mage/cards/c/CinderslashRavager.java b/Mage.Sets/src/mage/cards/c/CinderslashRavager.java index 948f5b64b68..f2a26e23846 100644 --- a/Mage.Sets/src/mage/cards/c/CinderslashRavager.java +++ b/Mage.Sets/src/mage/cards/c/CinderslashRavager.java @@ -24,7 +24,7 @@ import java.util.UUID; */ public final class CinderslashRavager extends CardImpl { - private static final FilterControlledPermanent filter = new FilterControlledPermanent("permanent you control with an oil counter on it"); + private static final FilterControlledPermanent filter = new FilterControlledPermanent("permanent you control with oil counters on it"); static { filter.add(CounterType.OIL.getPredicate()); @@ -48,7 +48,7 @@ public final class CinderslashRavager extends CardImpl { // When Cinderslash Ravager enters the battlefield, it deals 1 damage to each creature your opponents control. this.addAbility(new EntersBattlefieldTriggeredAbility(new DamageAllEffect( - 1, "it", StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURES + 1, "it", StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE ))); } diff --git a/Mage.Sets/src/mage/cards/c/CutthroatCenturion.java b/Mage.Sets/src/mage/cards/c/CutthroatCenturion.java index 02e7eec95d9..f90c0405bd6 100644 --- a/Mage.Sets/src/mage/cards/c/CutthroatCenturion.java +++ b/Mage.Sets/src/mage/cards/c/CutthroatCenturion.java @@ -30,7 +30,7 @@ public final class CutthroatCenturion extends CardImpl { // Sacrifice another artifact or creature: Cutthroat Centurion gets +2/+2 until end of turn. Activate only once each turn. this.addAbility(new LimitedTimesPerTurnActivatedAbility( Zone.BATTLEFIELD, new BoostSourceEffect(2, 2, Duration.EndOfTurn), - new SacrificeTargetCost(StaticFilters.FILTER_CONTROLLED_ANOTHER_ARTIFACT_OR_CREATURE) + new SacrificeTargetCost(StaticFilters.FILTER_CONTROLLED_ANOTHER_ARTIFACT_OR_CREATURE_SHORT_TEXT) )); } diff --git a/Mage.Sets/src/mage/cards/e/EvolvedSpinoderm.java b/Mage.Sets/src/mage/cards/e/EvolvedSpinoderm.java index 376269a7ca1..02e19c67b27 100644 --- a/Mage.Sets/src/mage/cards/e/EvolvedSpinoderm.java +++ b/Mage.Sets/src/mage/cards/e/EvolvedSpinoderm.java @@ -1,14 +1,11 @@ package mage.cards.e; -import java.util.UUID; - import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; import mage.abilities.common.EntersBattlefieldAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.condition.Condition; -import mage.abilities.condition.common.PermanentHasCounterCondition; import mage.abilities.condition.common.SourceHasCounterCondition; import mage.abilities.decorator.ConditionalContinuousEffect; import mage.abilities.decorator.ConditionalOneShotEffect; @@ -18,13 +15,15 @@ import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.abilities.effects.common.counter.RemoveCounterSourceEffect; import mage.abilities.keyword.HexproofAbility; import mage.abilities.keyword.TrampleAbility; -import mage.constants.SubType; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.TargetController; import mage.counters.CounterType; +import java.util.UUID; + /** * @author TheElk801 */ @@ -51,8 +50,8 @@ public final class EvolvedSpinoderm extends CardImpl { this.addAbility(new SimpleStaticAbility(new ConditionalContinuousEffect( new GainAbilitySourceEffect(HexproofAbility.getInstance()), new GainAbilitySourceEffect(TrampleAbility.getInstance()), - condition1, "{this} has trample as long as it was two " + - "or fewer oil counters on it, Otherwise, it has hexproof" + condition1, "{this} has trample as long as it has two " + + "or fewer oil counters on it. Otherwise, it has hexproof" ))); // At the beginning of your upkeep, remove an oil counter from Evolved Spinoderm. Then if it has no oil counters on it, sacrifice it. diff --git a/Mage.Sets/src/mage/cards/e/EyeOfMalcator.java b/Mage.Sets/src/mage/cards/e/EyeOfMalcator.java index 3267288e9ae..5bb26a34362 100644 --- a/Mage.Sets/src/mage/cards/e/EyeOfMalcator.java +++ b/Mage.Sets/src/mage/cards/e/EyeOfMalcator.java @@ -15,6 +15,7 @@ import mage.game.permanent.token.custom.CreatureToken; import java.util.UUID; public class EyeOfMalcator extends CardImpl { + public EyeOfMalcator(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}{U}"); @@ -23,12 +24,14 @@ public class EyeOfMalcator extends CardImpl { //Whenever another artifact enters the battlefield under your control, Eye of Malcator becomes a 4/4 Phyrexian //Eye artifact creature until end of turn. - this.addAbility(new EntersBattlefieldControlledTriggeredAbility(new BecomesCreatureSourceEffect( - new CreatureToken( - 4, 4, "4/4 Phyrexian Eye artifact creature", SubType.PHYREXIAN, SubType.EYE - ).withType(CardType.ARTIFACT), "", Duration.EndOfTurn) - .setText("{this} becomes a 4/4 Phyrexian Eye artifact creature until end of turn"), - StaticFilters.FILTER_CONTROLLED_ANOTHER_ARTIFACT)); + this.addAbility(new EntersBattlefieldControlledTriggeredAbility( + new BecomesCreatureSourceEffect( + new CreatureToken( + 4, 4, "4/4 Phyrexian Eye artifact creature", SubType.PHYREXIAN, SubType.EYE + ).withType(CardType.ARTIFACT), "", Duration.EndOfTurn + ).setText("{this} becomes a 4/4 Phyrexian Eye artifact creature until end of turn"), + StaticFilters.FILTER_CONTROLLED_ANOTHER_ARTIFACT + ).setTriggerPhrase("Whenever another artifact enters the battlefield under your control, ")); } private EyeOfMalcator(final EyeOfMalcator card) { diff --git a/Mage.Sets/src/mage/cards/e/EzuriStalkerOfSpheres.java b/Mage.Sets/src/mage/cards/e/EzuriStalkerOfSpheres.java index 321ce83580d..1729f630256 100644 --- a/Mage.Sets/src/mage/cards/e/EzuriStalkerOfSpheres.java +++ b/Mage.Sets/src/mage/cards/e/EzuriStalkerOfSpheres.java @@ -1,7 +1,5 @@ package mage.cards.e; -import java.util.UUID; - import mage.MageInt; import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.common.ProliferatedControllerTriggeredAbility; @@ -9,11 +7,13 @@ import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.effects.common.DoIfCostPaid; import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.effects.common.counter.ProliferateEffect; -import mage.constants.SubType; -import mage.constants.SuperType; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; +import mage.constants.SuperType; + +import java.util.UUID; /** * @author TheElk801 diff --git a/Mage.Sets/src/mage/cards/f/FeedTheInfection.java b/Mage.Sets/src/mage/cards/f/FeedTheInfection.java index ee3407c223e..7e73e380d3d 100644 --- a/Mage.Sets/src/mage/cards/f/FeedTheInfection.java +++ b/Mage.Sets/src/mage/cards/f/FeedTheInfection.java @@ -1,7 +1,5 @@ package mage.cards.f; -import java.util.UUID; - import mage.abilities.Ability; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.DrawCardSourceControllerEffect; @@ -15,6 +13,8 @@ import mage.counters.CounterType; import mage.game.Game; import mage.players.Player; +import java.util.UUID; + /** * @author TheElk801 */ @@ -46,7 +46,7 @@ class FeedTheInfectionEffect extends OneShotEffect { FeedTheInfectionEffect() { super(Outcome.Benefit); staticText = "
" + AbilityWord.CORRUPTED.formatWord() + - "Each opponent with three or more poison counters loses 3 life"; + "Each opponent who has three or more poison counters loses 3 life"; } private FeedTheInfectionEffect(final FeedTheInfectionEffect effect) { diff --git a/Mage.Sets/src/mage/cards/f/FleshlessGladiator.java b/Mage.Sets/src/mage/cards/f/FleshlessGladiator.java index 2fd61bea12f..4677f02dad8 100644 --- a/Mage.Sets/src/mage/cards/f/FleshlessGladiator.java +++ b/Mage.Sets/src/mage/cards/f/FleshlessGladiator.java @@ -31,7 +31,7 @@ public final class FleshlessGladiator extends CardImpl { // Corrupted -- {2}{B}: Return Fleshless Gladiator from your graveyard to the battlefield tapped. You lose 1 life. Activate only if an opponent has three or more poison counters. Ability ability = new ConditionalActivatedAbility( - Zone.GRAVEYARD, new ReturnSourceFromGraveyardToBattlefieldEffect(true), + Zone.GRAVEYARD, new ReturnSourceFromGraveyardToBattlefieldEffect(true, false), new ManaCostsImpl<>("{2}{B}"), CorruptedCondition.instance ); ability.addEffect(new LoseLifeSourceControllerEffect(1)); diff --git a/Mage.Sets/src/mage/cards/f/ForgehammerCenturion.java b/Mage.Sets/src/mage/cards/f/ForgehammerCenturion.java index feabe83210f..b5809012aa5 100644 --- a/Mage.Sets/src/mage/cards/f/ForgehammerCenturion.java +++ b/Mage.Sets/src/mage/cards/f/ForgehammerCenturion.java @@ -2,17 +2,12 @@ package mage.cards.f; import mage.MageInt; import mage.abilities.common.AttacksTriggeredAbility; -import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.common.PutIntoGraveFromBattlefieldAllTriggeredAbility; import mage.abilities.common.delayed.ReflexiveTriggeredAbility; -import mage.abilities.costs.common.PayLifeCost; import mage.abilities.costs.common.RemoveCountersSourceCost; -import mage.abilities.effects.common.DoIfCostPaid; import mage.abilities.effects.common.DoWhenCostPaid; import mage.abilities.effects.common.combat.CantBlockTargetEffect; -import mage.abilities.effects.common.continuous.BoostTargetEffect; import mage.abilities.effects.common.counter.AddCountersSourceEffect; -import mage.cards.Card; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; @@ -45,8 +40,9 @@ public class ForgehammerCenturion extends CardImpl { new CantBlockTargetEffect(Duration.EndOfTurn), false ); ability.addTarget(new TargetCreaturePermanent()); - this.addAbility(new AttacksTriggeredAbility(new DoWhenCostPaid(ability, - new RemoveCountersSourceCost(CounterType.OIL.createInstance(2)), "Remove 2 oil counters?" + this.addAbility(new AttacksTriggeredAbility(new DoWhenCostPaid( + ability, new RemoveCountersSourceCost(CounterType.OIL.createInstance(2)) + .setText("remove two oil counters from it"), "Remove 2 oil counters?" ))); } diff --git a/Mage.Sets/src/mage/cards/f/FurnaceSkullbomb.java b/Mage.Sets/src/mage/cards/f/FurnaceSkullbomb.java index 6b91a9365b4..d4a3b387a71 100644 --- a/Mage.Sets/src/mage/cards/f/FurnaceSkullbomb.java +++ b/Mage.Sets/src/mage/cards/f/FurnaceSkullbomb.java @@ -1,7 +1,5 @@ package mage.cards.f; -import java.util.UUID; - import mage.abilities.Ability; import mage.abilities.common.ActivateAsSorceryActivatedAbility; import mage.abilities.common.SimpleActivatedAbility; @@ -9,16 +7,15 @@ import mage.abilities.costs.common.SacrificeSourceCost; import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.common.DrawCardSourceControllerEffect; -import mage.abilities.effects.common.continuous.BoostTargetEffect; -import mage.abilities.effects.common.continuous.GainAbilityTargetEffect; import mage.abilities.effects.common.counter.AddCountersTargetEffect; -import mage.abilities.keyword.TrampleAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.counters.CounterType; -import mage.target.common.TargetControlledCreaturePermanent; -import mage.target.common.TargetCreaturePermanent; +import mage.filter.StaticFilters; +import mage.target.TargetPermanent; + +import java.util.UUID; /** * @author TheElk801 @@ -41,7 +38,7 @@ public final class FurnaceSkullbomb extends CardImpl { ); ability.addCost(new SacrificeSourceCost()); ability.addEffect(new DrawCardSourceControllerEffect(1)); - ability.addTarget(new TargetControlledCreaturePermanent()); + ability.addTarget(new TargetPermanent(StaticFilters.FILTER_CONTROLLED_PERMANENT_ARTIFACT_OR_CREATURE)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/g/GleefulDemolition.java b/Mage.Sets/src/mage/cards/g/GleefulDemolition.java index 154e6bdb7d2..8c021912f98 100644 --- a/Mage.Sets/src/mage/cards/g/GleefulDemolition.java +++ b/Mage.Sets/src/mage/cards/g/GleefulDemolition.java @@ -17,20 +17,16 @@ import mage.target.TargetPermanent; import java.util.UUID; /** - * * @author AhmadYProjects */ public final class GleefulDemolition extends CardImpl { public GleefulDemolition(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{R}"); - // Destroy target artifact. If you controlled that artifact, creature three 1/1 red Phyrexian Goblin creature tokens. this.getSpellAbility().addTarget(new TargetPermanent(StaticFilters.FILTER_PERMANENT_ARTIFACT)); this.getSpellAbility().addEffect(new GleefulDemolitionEffect()); - - } private GleefulDemolition(final GleefulDemolition card) { @@ -44,10 +40,10 @@ public final class GleefulDemolition extends CardImpl { } class GleefulDemolitionEffect extends OneShotEffect { - GleefulDemolitionEffect(){ + GleefulDemolitionEffect() { super(Outcome.Benefit); staticText = "destroy target artifact. " + - "if you controlled that artifact, create three 1/1 red Phyrexian Goblin creature tokens"; + "If you controlled that artifact, create three 1/1 red Phyrexian Goblin creature tokens"; } private GleefulDemolitionEffect(final GleefulDemolitionEffect effect) { @@ -55,26 +51,24 @@ class GleefulDemolitionEffect extends OneShotEffect { } @Override - public GleefulDemolitionEffect copy(){ + public GleefulDemolitionEffect copy() { return new GleefulDemolitionEffect(this); } @Override - public boolean apply(Game game, Ability source){ + public boolean apply(Game game, Ability source) { Player player = game.getPlayer(source.getControllerId()); - Permanent permanent = game.getPermanent(targetPointer.getFirst(game,source)); - - if ( - permanent == null || player == null) { + Permanent permanent = game.getPermanent(targetPointer.getFirst(game, source)); + if (permanent == null || player == null) { return false; } boolean isMine = permanent.isControlledBy(source.getControllerId()); permanent.destroy(source, game, false); if (isMine) { Token token = new PhyrexianGoblinToken(); - token.putOntoBattlefield(3,game,source); + token.putOntoBattlefield(3, game, source); } return true; } -} \ No newline at end of file +} diff --git a/Mage.Sets/src/mage/cards/g/GoliathHatchery.java b/Mage.Sets/src/mage/cards/g/GoliathHatchery.java index dee49a09d65..2192d8c8cc5 100644 --- a/Mage.Sets/src/mage/cards/g/GoliathHatchery.java +++ b/Mage.Sets/src/mage/cards/g/GoliathHatchery.java @@ -1,7 +1,5 @@ package mage.cards.g; -import java.util.UUID; - import mage.abilities.Ability; import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; import mage.abilities.common.EntersBattlefieldTriggeredAbility; @@ -12,6 +10,7 @@ import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.keyword.ToxicAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.AbilityWord; import mage.constants.CardType; import mage.constants.Outcome; import mage.constants.TargetController; @@ -19,12 +18,13 @@ import mage.filter.StaticFilters; import mage.game.Game; import mage.game.permanent.Permanent; import mage.game.permanent.token.PhyrexianBeastToxicToken; -import mage.game.permanent.token.PhyrexianGolemToken; import mage.players.Player; import mage.target.TargetPermanent; import mage.target.common.TargetControlledCreaturePermanent; import mage.util.CardUtil; +import java.util.UUID; + /** * @author TheElk801 */ @@ -42,8 +42,8 @@ public final class GoliathHatchery extends CardImpl { this.addAbility(new ConditionalInterveningIfTriggeredAbility( new BeginningOfUpkeepTriggeredAbility( new GoliathHatcheryEffect(), TargetController.YOU, false - ), CorruptedCondition.instance, null - )); + ).setAbilityWord(AbilityWord.CORRUPTED), CorruptedCondition.instance, null + ).addHint(CorruptedCondition.getHint())); } private GoliathHatchery(final GoliathHatchery card) { diff --git a/Mage.Sets/src/mage/cards/h/HazardousBlast.java b/Mage.Sets/src/mage/cards/h/HazardousBlast.java index 39d04f25cbd..61e01fdd328 100644 --- a/Mage.Sets/src/mage/cards/h/HazardousBlast.java +++ b/Mage.Sets/src/mage/cards/h/HazardousBlast.java @@ -20,7 +20,7 @@ public final class HazardousBlast extends CardImpl { // Hazardous Blast deals 1 damage to each creature your opponents control. Creatures your opponents control can't block this turn. this.getSpellAbility().addEffect(new DamageAllEffect( - 1, StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE + 1, StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURES )); this.getSpellAbility().addEffect(new CantBlockAllEffect( StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURES, Duration.EndOfTurn diff --git a/Mage.Sets/src/mage/cards/h/HexgoldSlash.java b/Mage.Sets/src/mage/cards/h/HexgoldSlash.java index c61f754f032..cfa629e776d 100644 --- a/Mage.Sets/src/mage/cards/h/HexgoldSlash.java +++ b/Mage.Sets/src/mage/cards/h/HexgoldSlash.java @@ -14,14 +14,12 @@ import mage.target.common.TargetCreaturePermanent; import java.util.UUID; /** - * * @author AhmadYProjects */ public final class HexgoldSlash extends CardImpl { public HexgoldSlash(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{R}"); - // Hexgold Slash deals 2 damage to target creature. If that creature has toxic, Hexgold Slash deals 4 damage to that creature instead. this.getSpellAbility().addTarget(new TargetCreaturePermanent()); @@ -38,30 +36,30 @@ public final class HexgoldSlash extends CardImpl { } } -class HexgoldSlashEffect extends OneShotEffect{ - public HexgoldSlashEffect(){ +class HexgoldSlashEffect extends OneShotEffect { + public HexgoldSlashEffect() { super(Outcome.Damage); - staticText = "{this} deals 2 damage to target creature. If that creature has toxic, {this} deals 4 damage instead"; + staticText = "{this} deals 2 damage to target creature. If that creature has toxic, " + + "{this} deals 4 damage to that creature instead"; } - public HexgoldSlashEffect(final HexgoldSlashEffect effect){ + public HexgoldSlashEffect(final HexgoldSlashEffect effect) { super(effect); } @Override - public HexgoldSlashEffect copy(){ + public HexgoldSlashEffect copy() { return new HexgoldSlashEffect(); } @Override - public boolean apply(Game game, Ability source){ + public boolean apply(Game game, Ability source) { Permanent permanent = game.getPermanent(getTargetPointer().getFirst(game, source)); - if (permanent != null){ + if (permanent != null) { if (permanent.getAbilities(game).containsClass(ToxicAbility.class)) { - permanent.damage(4,source,game); - } - else{ - permanent.damage(2,source,game); + permanent.damage(4, source, game); + } else { + permanent.damage(2, source, game); } return true; } diff --git a/Mage.Sets/src/mage/cards/j/JorKadeenFirstGoldwarden.java b/Mage.Sets/src/mage/cards/j/JorKadeenFirstGoldwarden.java index 712fce2b531..c148a0a8771 100644 --- a/Mage.Sets/src/mage/cards/j/JorKadeenFirstGoldwarden.java +++ b/Mage.Sets/src/mage/cards/j/JorKadeenFirstGoldwarden.java @@ -28,7 +28,7 @@ import mage.filter.predicate.permanent.EquippedPredicate; */ public final class JorKadeenFirstGoldwarden extends CardImpl { - private static final FilterPermanent filter = new FilterControlledCreaturePermanent(); + private static final FilterPermanent filter = new FilterControlledCreaturePermanent("equipped creatures you control"); private static final FilterPermanent filter2 = new FilterPermanent(); static { diff --git a/Mage.Sets/src/mage/cards/k/KaitoDancingShadow.java b/Mage.Sets/src/mage/cards/k/KaitoDancingShadow.java index f78f50f78fe..94fa5ed30cb 100644 --- a/Mage.Sets/src/mage/cards/k/KaitoDancingShadow.java +++ b/Mage.Sets/src/mage/cards/k/KaitoDancingShadow.java @@ -40,7 +40,7 @@ public final class KaitoDancingShadow extends CardImpl { public KaitoDancingShadow(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{2}{U}{B}"); - + this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.KAITO); this.setStartingLoyalty(3); @@ -50,7 +50,7 @@ public final class KaitoDancingShadow extends CardImpl { this.addAbility(ability); // +1: Up to one target creature can't attack or block until your next turn. - Ability KaitoCantAttackOrBlockAbility = new LoyaltyAbility(new CantAttackTargetEffect(Duration.UntilYourNextTurn).setText("Up to one target creature can't attack "), 1); + Ability KaitoCantAttackOrBlockAbility = new LoyaltyAbility(new CantAttackTargetEffect(Duration.UntilYourNextTurn).setText("Up to one target creature can't attack"), 1); KaitoCantAttackOrBlockAbility.addEffect(new CantBlockTargetEffect(Duration.UntilYourNextTurn).setText("or block until your next turn")); KaitoCantAttackOrBlockAbility.addTarget(new TargetPermanent(0, 1, StaticFilters.FILTER_PERMANENT_CREATURE)); this.addAbility(KaitoCantAttackOrBlockAbility); @@ -128,7 +128,7 @@ class KaitoDancingShadowEffect extends OneShotEffect { } @Override - public boolean apply(Game game, Ability source) { + public boolean apply(Game game, Ability source) { KaitoDancingShadowWatcher watcher = game.getState().getWatcher(KaitoDancingShadowWatcher.class); if (watcher == null) { return false; @@ -221,7 +221,7 @@ class TargetCreatureThatDealtCombatDamage extends TargetObject { return super.chooseTarget(Outcome.Benefit, playerId, source, game); } - + @Override public TargetCreatureThatDealtCombatDamage copy() { return new TargetCreatureThatDealtCombatDamage(this); diff --git a/Mage.Sets/src/mage/cards/k/KembaKhaEnduring.java b/Mage.Sets/src/mage/cards/k/KembaKhaEnduring.java index 88e142f97f1..3c140115491 100644 --- a/Mage.Sets/src/mage/cards/k/KembaKhaEnduring.java +++ b/Mage.Sets/src/mage/cards/k/KembaKhaEnduring.java @@ -1,7 +1,5 @@ package mage.cards.k; -import java.util.UUID; - import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.EntersBattlefieldThisOrAnotherTriggeredAbility; @@ -11,9 +9,9 @@ import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.continuous.BoostControlledEffect; -import mage.constants.*; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.*; import mage.filter.FilterPermanent; import mage.filter.common.FilterControlledPermanent; import mage.filter.common.FilterCreaturePermanent; @@ -23,6 +21,8 @@ import mage.game.permanent.Permanent; import mage.game.permanent.token.CatToken; import mage.target.TargetPermanent; +import java.util.UUID; + /** * @author TheElk801 */ @@ -47,7 +47,7 @@ public final class KembaKhaEnduring extends CardImpl { // Whenever Kemba, Kha Enduring or another Cat enters the battlefield under your control, attach up to one target Equipment you control to that creature. Ability ability = new EntersBattlefieldThisOrAnotherTriggeredAbility( - new KembaKhaEnduringEffect(), filter, true, true + new KembaKhaEnduringEffect(), filter, false, true ); ability.addTarget(new TargetPermanent(0, 1, filter2)); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/k/KethekCrucibleGoliath.java b/Mage.Sets/src/mage/cards/k/KethekCrucibleGoliath.java index 7131b173a69..2b99c64d0c3 100644 --- a/Mage.Sets/src/mage/cards/k/KethekCrucibleGoliath.java +++ b/Mage.Sets/src/mage/cards/k/KethekCrucibleGoliath.java @@ -58,7 +58,7 @@ class KethekCrucibleGoliathEffect extends OneShotEffect { KethekCrucibleGoliathEffect() { super(Outcome.Benefit); staticText = "you may sacrifice another creature. " + - "If you do, reveal cards from the top of your library" + + "If you do, reveal cards from the top of your library " + "until you reveal a nonlegendary creature card with lesser mana value" + ", put it onto the battlefield, then put the rest on the bottom of your library in a random order."; } @@ -97,7 +97,7 @@ class KethekCrucibleGoliathEffect extends OneShotEffect { filterCreatureCard.add(new ManaValuePredicate(ComparisonType.FEWER_THAN, xValue)); //put it onto the battlefield, then put the rest on the bottom of your library in a random order. RevealCardsFromLibraryUntilEffect effect = new RevealCardsFromLibraryUntilEffect(filterCreatureCard, Zone.BATTLEFIELD, Zone.LIBRARY); - effect.apply(game,source); + effect.apply(game, source); return true; } } diff --git a/Mage.Sets/src/mage/cards/l/LatticeBladeMantis.java b/Mage.Sets/src/mage/cards/l/LatticeBladeMantis.java index 48ed0defd09..825c2e56742 100644 --- a/Mage.Sets/src/mage/cards/l/LatticeBladeMantis.java +++ b/Mage.Sets/src/mage/cards/l/LatticeBladeMantis.java @@ -39,7 +39,7 @@ public final class LatticeBladeMantis extends CardImpl { // Whenever Lattice-Blade Mantis attacks, you may remove an oil counter from it. If you do, untap it and it gets +1/+1 until end of turn. this.addAbility(new AttacksTriggeredAbility(new DoIfCostPaid( new UntapSourceEffect().setText("untap it"), - new RemoveCountersSourceCost(CounterType.OIL.createInstance()) + new RemoveCountersSourceCost(CounterType.OIL.createInstance()).setText("remove an oil counter from it") ).addEffect(new BoostSourceEffect(1, 1, Duration.EndOfTurn, "and it")))); } diff --git a/Mage.Sets/src/mage/cards/l/LukkaBoundToRuin.java b/Mage.Sets/src/mage/cards/l/LukkaBoundToRuin.java index f41942c19b1..9172e605cc1 100644 --- a/Mage.Sets/src/mage/cards/l/LukkaBoundToRuin.java +++ b/Mage.Sets/src/mage/cards/l/LukkaBoundToRuin.java @@ -14,7 +14,10 @@ import mage.abilities.effects.common.DamageMultiEffect; import mage.abilities.keyword.CompleatedAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.*; +import mage.constants.CardType; +import mage.constants.Outcome; +import mage.constants.SubType; +import mage.constants.SuperType; import mage.game.Game; import mage.game.permanent.token.PhyrexianBeastToxicToken; import mage.players.Player; @@ -39,19 +42,19 @@ public class LukkaBoundToRuin extends CardImpl { this.addAbility(CompleatedAbility.getInstance()); // +1: Add {R}{G}. Spend this mana only to cast creature spells or activate abilities of creatures. - Ability ability = new LoyaltyAbility(new LukkaBoundToRuinManaEffect(),1); + Ability ability = new LoyaltyAbility(new LukkaBoundToRuinManaEffect(), 1); this.addAbility(ability); // −1: Create a 3/3 green Phyrexian Beast creature token with toxic 1. - ability = new LoyaltyAbility(new CreateTokenEffect(new PhyrexianBeastToxicToken()),-1); + ability = new LoyaltyAbility(new CreateTokenEffect(new PhyrexianBeastToxicToken()), -1); this.addAbility(ability); // −4: Lukka deals X damage divided as you choose among any number of target creatures and/or planeswalkers, // where X is the greatest power among creatures you controlled as you activated this ability. DynamicValue xValue = GreatestPowerAmongControlledCreaturesValue.instance; DamageMultiEffect damageMultiEffect = new DamageMultiEffect(xValue); - damageMultiEffect.setText("Lukka deals X damage divided as you choose" + - " among any number of target creatures and/or planeswalkers," + + damageMultiEffect.setText("Lukka deals X damage divided as you choose " + + "among any number of target creatures and/or planeswalkers, " + "where X is the greatest power among creatures you controlled as you activated this ability."); ability = new LoyaltyAbility(damageMultiEffect, -4); ability.setTargetAdjuster(LukkaBoundToRuinAdjuster.instance); @@ -99,7 +102,8 @@ class LukkaBoundToRuinManaEffect extends OneShotEffect { class LukkaBoundToRuinConditionalMana extends ConditionalMana { // Add {R}{G} - private static Mana mana = new Mana(0,0,0,1,1,0,0,0); + private static Mana mana = new Mana(0, 0, 0, 1, 1, 0, 0, 0); + public LukkaBoundToRuinConditionalMana() { super(mana); addCondition(LukkaBoundToRuinManaCondition.instance); @@ -130,11 +134,10 @@ enum LukkaBoundToRuinAdjuster implements TargetAdjuster { public void adjustTargets(Ability ability, Game game) { // Maximum targets is equal to the damage - as each target need to be assigned at least 1 damage ability.getTargets().clear(); - int xValue = GreatestPowerAmongControlledCreaturesValue.instance.calculate(game,ability,null); + int xValue = GreatestPowerAmongControlledCreaturesValue.instance.calculate(game, ability, null); TargetCreatureOrPlaneswalkerAmount targetCreatureOrPlaneswalkerAmount = new TargetCreatureOrPlaneswalkerAmount(xValue); targetCreatureOrPlaneswalkerAmount.setMinNumberOfTargets(0); targetCreatureOrPlaneswalkerAmount.setMaxNumberOfTargets(xValue); ability.addTarget(targetCreatureOrPlaneswalkerAmount); } } - diff --git a/Mage.Sets/src/mage/cards/m/MazeSkullbomb.java b/Mage.Sets/src/mage/cards/m/MazeSkullbomb.java index 0376ddbbf0e..2f150d42e6f 100644 --- a/Mage.Sets/src/mage/cards/m/MazeSkullbomb.java +++ b/Mage.Sets/src/mage/cards/m/MazeSkullbomb.java @@ -1,7 +1,5 @@ package mage.cards.m; -import java.util.UUID; - import mage.abilities.Ability; import mage.abilities.common.ActivateAsSorceryActivatedAbility; import mage.abilities.common.SimpleActivatedAbility; @@ -15,7 +13,9 @@ import mage.abilities.keyword.TrampleAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.target.common.TargetCreaturePermanent; +import mage.target.common.TargetControlledCreaturePermanent; + +import java.util.UUID; /** * @author TheElk801 @@ -35,14 +35,14 @@ public final class MazeSkullbomb extends CardImpl { // {2}{G}, Sacrifice Maze Skullbomb: Target creature gets +3/+3 and gains trample until end of turn. Draw a card. Activate only as a sorcery. ability = new ActivateAsSorceryActivatedAbility( new BoostTargetEffect(3, 3) - .setText("target creature gets +3/+3"), + .setText("target creature you control gets +3/+3"), new ManaCostsImpl<>("{2}{G}") ); ability.addCost(new SacrificeSourceCost()); ability.addEffect(new GainAbilityTargetEffect(TrampleAbility.getInstance()) .setText("and gains trample until end of turn")); ability.addEffect(new DrawCardSourceControllerEffect(1)); - ability.addTarget(new TargetCreaturePermanent()); + ability.addTarget(new TargetControlledCreaturePermanent()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/m/MercurialSpelldancer.java b/Mage.Sets/src/mage/cards/m/MercurialSpelldancer.java index e2f21ad29fe..5cdde496e65 100644 --- a/Mage.Sets/src/mage/cards/m/MercurialSpelldancer.java +++ b/Mage.Sets/src/mage/cards/m/MercurialSpelldancer.java @@ -1,7 +1,5 @@ package mage.cards.m; -import java.util.UUID; - import mage.MageInt; import mage.abilities.common.DealsCombatDamageToAPlayerTriggeredAbility; import mage.abilities.common.SpellCastControllerTriggeredAbility; @@ -11,13 +9,15 @@ import mage.abilities.effects.common.CreateDelayedTriggeredAbilityEffect; import mage.abilities.effects.common.DoIfCostPaid; import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.abilities.keyword.CantBeBlockedSourceAbility; -import mage.constants.SubType; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.counters.CounterType; import mage.filter.StaticFilters; +import java.util.UUID; + /** * @author TheElk801 */ @@ -44,7 +44,7 @@ public final class MercurialSpelldancer extends CardImpl { this.addAbility(new DealsCombatDamageToAPlayerTriggeredAbility( new DoIfCostPaid( new CreateDelayedTriggeredAbilityEffect(new CopyNextSpellDelayedTriggeredAbility()), - new RemoveCountersSourceCost(CounterType.OIL.createInstance(2)) + new RemoveCountersSourceCost(CounterType.OIL.createInstance(2)).setText("remove two oil counters from it") ), false )); } diff --git a/Mage.Sets/src/mage/cards/n/NahiriTheUnforgiving.java b/Mage.Sets/src/mage/cards/n/NahiriTheUnforgiving.java index e36c8005fda..65a0c8d1904 100644 --- a/Mage.Sets/src/mage/cards/n/NahiriTheUnforgiving.java +++ b/Mage.Sets/src/mage/cards/n/NahiriTheUnforgiving.java @@ -2,7 +2,8 @@ package mage.cards.n; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.effects.*; +import mage.abilities.effects.OneShotEffect; +import mage.abilities.effects.RestrictionEffect; import mage.abilities.effects.common.CreateTokenCopyTargetEffect; import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.effects.common.combat.AttacksIfAbleTargetEffect; @@ -31,6 +32,16 @@ import java.util.UUID; */ public final class NahiriTheUnforgiving extends CardImpl { + private static final FilterCard filter = new FilterCard("Equipment or creature with lesser manavalue than Nahiri's loyalty"); + + { + filter.add(Predicates.or( + CardType.CREATURE.getPredicate(), + SubType.EQUIPMENT.getPredicate() + )); + filter.add(NahiriLoyaltyPredicate.instance); + } + public NahiriTheUnforgiving(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{1}{R}{R/W/P}{W}"); this.addSuperType(SuperType.LEGENDARY); @@ -45,7 +56,7 @@ public final class NahiriTheUnforgiving extends CardImpl { LoyaltyAbility ability1 = new LoyaltyAbility(new AttacksIfAbleTargetEffect(Duration.UntilYourNextTurn) .setText("Until your next turn, up to one target creature attacks"), 1); ability1.addEffect(new NahiriTheUnforgivingRestrictionEffect()); - ability1.addTarget(new TargetCreaturePermanent(0,1)); + ability1.addTarget(new TargetCreaturePermanent(0, 1)); this.addAbility(ability1); // +1: Discard a card, then draw a card. @@ -56,9 +67,6 @@ public final class NahiriTheUnforgiving extends CardImpl { // 0: Exile target creature or Equipment card with mana value less than Nahiri's loyalty from your graveyard. // Create a token that's a copy of it. That token gains haste. Exile it at the beginning of the next end step. LoyaltyAbility ability3 = new LoyaltyAbility(new NahiriTheUnforgivingTokenEffect(), 0); - FilterCard filter = new FilterCard("Equipment or Creature with lesser manavalue than Nahiri's loyalty"); - filter.add(Predicates.or(CardType.CREATURE.getPredicate(), SubType.EQUIPMENT.getPredicate())); - filter.add(NahiriLoyaltyPredicate.instance); ability3.addTarget(new TargetCardInYourGraveyard(filter)); this.addAbility(ability3); } @@ -80,7 +88,7 @@ enum NahiriLoyaltyPredicate implements ObjectSourcePlayerPredicate { public boolean apply(ObjectSourcePlayer input, Game game) { //mana value less than Nahiri's loyalty int manaValue = input.getObject().getManaValue(); - Card card = (Card) input.getSource().getSourceObject(game); + Card card = (Card) input.getSource().getSourceObject(game); int loyalty = card.getCounters(game).getCount(CounterType.LOYALTY); return manaValue < loyalty; } @@ -118,7 +126,7 @@ class NahiriTheUnforgivingTokenEffect extends OneShotEffect { NahiriTheUnforgivingTokenEffect() { super(Outcome.Benefit); - this.staticText = "Exile target creature or Equipment card with mana value less than Nahiri's loyalty from your graveyard." + + this.staticText = "Exile target creature or Equipment card with mana value less than Nahiri's loyalty from your graveyard. " + "Create a token that's a copy of it. That token gains haste. Exile it at the beginning of the next end step."; } diff --git a/Mage.Sets/src/mage/cards/n/NahirisSacrifice.java b/Mage.Sets/src/mage/cards/n/NahirisSacrifice.java index db1450b2145..7f9f28e0344 100644 --- a/Mage.Sets/src/mage/cards/n/NahirisSacrifice.java +++ b/Mage.Sets/src/mage/cards/n/NahirisSacrifice.java @@ -24,7 +24,7 @@ import java.util.UUID; */ public final class NahirisSacrifice extends CardImpl { - private static final FilterControlledPermanent filter = new FilterControlledPermanent(" an artifact or creature"); + private static final FilterControlledPermanent filter = new FilterControlledPermanent("an artifact or creature"); static { filter.add(Predicates.or(CardType.ARTIFACT.getPredicate(), CardType.CREATURE.getPredicate())); @@ -68,7 +68,7 @@ class SacrificeXManaValueCost extends VariableCostImpl implements SacrificeCost public SacrificeXManaValueCost(FilterControlledPermanent filter, boolean useAsAdditionalCost) { super(useAsAdditionalCost ? VariableCostType.ADDITIONAL : VariableCostType.NORMAL, filter.getMessage() + " with manavalue X to sacrifice"); - this.text = (useAsAdditionalCost ? " sacrifice" : "Sacrifice ") + filter.getMessage() + " with mana value " +xText; + this.text = (useAsAdditionalCost ? "sacrifice " : "Sacrifice ") + filter.getMessage() + " with mana value " +xText; this.filter = filter; } diff --git a/Mage.Sets/src/mage/cards/n/NecrogenCommunion.java b/Mage.Sets/src/mage/cards/n/NecrogenCommunion.java index 812e569a4d2..c8a7ced5779 100644 --- a/Mage.Sets/src/mage/cards/n/NecrogenCommunion.java +++ b/Mage.Sets/src/mage/cards/n/NecrogenCommunion.java @@ -1,23 +1,23 @@ package mage.cards.n; -import java.util.UUID; - import mage.abilities.common.DiesAttachedTriggeredAbility; import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.effects.common.AttachEffect; import mage.abilities.effects.common.ReturnToBattlefieldUnderYourControlAttachedEffect; import mage.abilities.effects.common.continuous.GainAbilityAttachedEffect; -import mage.abilities.keyword.ToxicAbility; -import mage.constants.AttachmentType; -import mage.constants.SubType; -import mage.abilities.effects.common.AttachEffect; -import mage.constants.Outcome; -import mage.target.TargetPermanent; import mage.abilities.keyword.EnchantAbility; +import mage.abilities.keyword.ToxicAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.AttachmentType; import mage.constants.CardType; +import mage.constants.Outcome; +import mage.constants.SubType; +import mage.target.TargetPermanent; import mage.target.common.TargetControlledCreaturePermanent; +import java.util.UUID; + /** * @author TheElk801 */ @@ -36,7 +36,7 @@ public final class NecrogenCommunion extends CardImpl { // Enchanted creature has toxic 2. this.addAbility(new SimpleStaticAbility( - new GainAbilityAttachedEffect(new ToxicAbility(2), AttachmentType.EQUIPMENT) + new GainAbilityAttachedEffect(new ToxicAbility(2), AttachmentType.AURA) )); // When enchanted creature dies, return that card to the battlefield under your control. diff --git a/Mage.Sets/src/mage/cards/n/NecrogenRotpriest.java b/Mage.Sets/src/mage/cards/n/NecrogenRotpriest.java index f3688e9542c..c2b9da60d25 100644 --- a/Mage.Sets/src/mage/cards/n/NecrogenRotpriest.java +++ b/Mage.Sets/src/mage/cards/n/NecrogenRotpriest.java @@ -1,28 +1,26 @@ package mage.cards.n; -import java.util.UUID; - import mage.MageInt; import mage.abilities.Ability; -import mage.abilities.common.DealCombatDamageControlledTriggeredAbility; import mage.abilities.common.DealsDamageToAPlayerAllTriggeredAbility; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.common.continuous.GainAbilityTargetEffect; import mage.abilities.effects.common.counter.AddPoisonCounterTargetEffect; import mage.abilities.keyword.DeathtouchAbility; -import mage.constants.SetTargetPointer; -import mage.constants.SubType; import mage.abilities.keyword.ToxicAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.constants.Zone; +import mage.constants.SetTargetPointer; +import mage.constants.SubType; import mage.filter.FilterPermanent; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.predicate.mageobject.AbilityPredicate; import mage.target.TargetPermanent; +import java.util.UUID; + /** * @author TheElk801 */ @@ -56,7 +54,9 @@ public final class NecrogenRotpriest extends CardImpl { // {1}{B}{G}: Target creature you control with toxic gains deathtouch until end of turn. Ability ability = new SimpleActivatedAbility( - new GainAbilityTargetEffect(DeathtouchAbility.getInstance()), new ManaCostsImpl<>("{1}{B}{G}") + new GainAbilityTargetEffect(DeathtouchAbility.getInstance()) + .setText("target creature you control with toxic gains deathtouch until end of turn"), + new ManaCostsImpl<>("{1}{B}{G}") ); ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/n/Necrosquito.java b/Mage.Sets/src/mage/cards/n/Necrosquito.java index b3869430446..4b1e3090444 100644 --- a/Mage.Sets/src/mage/cards/n/Necrosquito.java +++ b/Mage.Sets/src/mage/cards/n/Necrosquito.java @@ -44,7 +44,9 @@ public final class Necrosquito extends CardImpl { )); // Necrosquito gets +1/+1 for each oil counter on it. - this.addAbility(new SimpleStaticAbility(new BoostSourceEffect(xValue, xValue, Duration.WhileOnBattlefield))); + this.addAbility(new SimpleStaticAbility(new BoostSourceEffect( + xValue, xValue, Duration.WhileOnBattlefield + ).setText("{this} gets +1/+1 for each oil counter on it"))); // Whenever another creature or artifact you control is put into a graveyard from the battlefield, put an oil counter on Necrosquito. this.addAbility(new PutIntoGraveFromBattlefieldAllTriggeredAbility( diff --git a/Mage.Sets/src/mage/cards/n/NimraiserPaladin.java b/Mage.Sets/src/mage/cards/n/NimraiserPaladin.java index 41bd436a449..69dd567cfc6 100644 --- a/Mage.Sets/src/mage/cards/n/NimraiserPaladin.java +++ b/Mage.Sets/src/mage/cards/n/NimraiserPaladin.java @@ -1,29 +1,29 @@ package mage.cards.n; -import java.util.UUID; - import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.effects.common.ReturnFromGraveyardToHandTargetEffect; -import mage.constants.ComparisonType; -import mage.constants.SubType; import mage.abilities.keyword.ToxicAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.ComparisonType; +import mage.constants.SubType; import mage.filter.FilterCard; import mage.filter.common.FilterCreatureCard; import mage.filter.predicate.mageobject.ManaValuePredicate; import mage.target.common.TargetCardInYourGraveyard; +import java.util.UUID; + /** * @author TheElk801 */ public final class NimraiserPaladin extends CardImpl { private static final FilterCard filter - = new FilterCreatureCard("creature with mana value 3 or less from your graveyard"); + = new FilterCreatureCard("creature card with mana value 3 or less from your graveyard"); static { filter.add(new ManaValuePredicate(ComparisonType.FEWER_THAN, 4)); diff --git a/Mage.Sets/src/mage/cards/o/OilGorgerTroll.java b/Mage.Sets/src/mage/cards/o/OilGorgerTroll.java index 2526e2f38fb..6596f75eb5e 100644 --- a/Mage.Sets/src/mage/cards/o/OilGorgerTroll.java +++ b/Mage.Sets/src/mage/cards/o/OilGorgerTroll.java @@ -50,7 +50,7 @@ public final class OilGorgerTroll extends CardImpl { Ability ability = new EntersBattlefieldTriggeredAbility(new GainLifeEffect(3)); ability.addEffect(new ConditionalOneShotEffect( new DrawCardSourceControllerEffect(1), condition, - "then if you control a permanent with an oil counter on it, draw a card" + "Then if you control a permanent with an oil counter on it, draw a card" )); this.addAbility(ability.addHint(hint)); } diff --git a/Mage.Sets/src/mage/cards/p/PhyrexianArena.java b/Mage.Sets/src/mage/cards/p/PhyrexianArena.java index 2708db02fba..0d1f3227b7d 100644 --- a/Mage.Sets/src/mage/cards/p/PhyrexianArena.java +++ b/Mage.Sets/src/mage/cards/p/PhyrexianArena.java @@ -1,7 +1,5 @@ - package mage.cards.p; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; import mage.abilities.effects.common.DrawCardSourceControllerEffect; @@ -11,18 +9,21 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.TargetController; +import java.util.UUID; + /** - * * @author Loki */ public final class PhyrexianArena extends CardImpl { public PhyrexianArena(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{B}{B}"); + super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{B}{B}"); // At the beginning of your upkeep, you draw a card and you lose 1 life. - Ability ability = new BeginningOfUpkeepTriggeredAbility(new DrawCardSourceControllerEffect(1), TargetController.YOU, false); - ability.addEffect(new LoseLifeSourceControllerEffect(1)); + Ability ability = new BeginningOfUpkeepTriggeredAbility( + new DrawCardSourceControllerEffect(1, "you"), TargetController.YOU, false + ); + ability.addEffect(new LoseLifeSourceControllerEffect(1).concatBy("and")); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/p/PhyrexianAtlas.java b/Mage.Sets/src/mage/cards/p/PhyrexianAtlas.java index d095d6b0758..20671845947 100644 --- a/Mage.Sets/src/mage/cards/p/PhyrexianAtlas.java +++ b/Mage.Sets/src/mage/cards/p/PhyrexianAtlas.java @@ -44,7 +44,7 @@ class PhyrexianAtlasEffect extends OneShotEffect { PhyrexianAtlasEffect() { super(Outcome.Benefit); - staticText = "each opponent with three or more poison counters loses 1 life"; + staticText = "each opponent who has three or more poison counters loses 1 life"; } private PhyrexianAtlasEffect(final PhyrexianAtlasEffect effect) { diff --git a/Mage.Sets/src/mage/cards/p/PhyrexianObliterator.java b/Mage.Sets/src/mage/cards/p/PhyrexianObliterator.java index 31b0acd27f5..e332f99709c 100644 --- a/Mage.Sets/src/mage/cards/p/PhyrexianObliterator.java +++ b/Mage.Sets/src/mage/cards/p/PhyrexianObliterator.java @@ -88,6 +88,6 @@ class PhyrexianObliteratorTriggeredAbility extends TriggeredAbilityImpl { @Override public String getRule() { - return "Whenever a source deals damage to {this}, that source's controller sacrifices that many permanents"; + return "Whenever a source deals damage to {this}, that source's controller sacrifices that many permanents."; } } diff --git a/Mage.Sets/src/mage/cards/r/RebelSalvo.java b/Mage.Sets/src/mage/cards/r/RebelSalvo.java index 9a96110cf22..e35891c1812 100644 --- a/Mage.Sets/src/mage/cards/r/RebelSalvo.java +++ b/Mage.Sets/src/mage/cards/r/RebelSalvo.java @@ -40,7 +40,7 @@ public final class RebelSalvo extends CardImpl { this.getSpellAbility().addEffect(new DamageTargetEffect(5)); this.getSpellAbility().addTarget(new TargetCreatureOrPlaneswalker()); this.getSpellAbility().addEffect(new LoseAbilityTargetEffect(IndestructibleAbility.getInstance()) - .setText("that permanent loses indestructible unil end of turn")); + .setText("that permanent loses indestructible until end of turn")); } private RebelSalvo(final RebelSalvo card) { diff --git a/Mage.Sets/src/mage/cards/s/SerumSovereign.java b/Mage.Sets/src/mage/cards/s/SerumSovereign.java index 18500473282..9e621fb47ba 100644 --- a/Mage.Sets/src/mage/cards/s/SerumSovereign.java +++ b/Mage.Sets/src/mage/cards/s/SerumSovereign.java @@ -1,7 +1,5 @@ package mage.cards.s; -import java.util.UUID; - import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; @@ -11,14 +9,16 @@ import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.abilities.effects.keyword.ScryEffect; -import mage.constants.SubType; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.counters.CounterType; import mage.filter.StaticFilters; +import java.util.UUID; + /** * @author TheElk801 */ @@ -46,7 +46,7 @@ public final class SerumSovereign extends CardImpl { new DrawCardSourceControllerEffect(1), new ManaCostsImpl<>("{U}") ); ability.addCost(new RemoveCountersSourceCost(CounterType.OIL.createInstance())); - ability.addEffect(new ScryEffect(2)); + ability.addEffect(new ScryEffect(2).concatBy(", then")); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/t/TheFiligreeSylex.java b/Mage.Sets/src/mage/cards/t/TheFiligreeSylex.java index 5b2d411cfdf..cafa0dca460 100644 --- a/Mage.Sets/src/mage/cards/t/TheFiligreeSylex.java +++ b/Mage.Sets/src/mage/cards/t/TheFiligreeSylex.java @@ -1,23 +1,18 @@ package mage.cards.t; -import java.util.Objects; -import java.util.Optional; -import java.util.UUID; - import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.CompositeCost; import mage.abilities.costs.common.RemoveCounterCost; -import mage.abilities.costs.common.RemoveVariableCountersTargetCost; import mage.abilities.costs.common.SacrificeSourceCost; import mage.abilities.costs.common.TapSourceCost; import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.effects.common.DestroyAllEffect; import mage.abilities.effects.common.counter.AddCountersSourceEffect; -import mage.constants.SuperType; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SuperType; import mage.counters.CounterType; import mage.filter.FilterPermanent; import mage.filter.StaticFilters; @@ -29,6 +24,10 @@ import mage.game.permanent.Permanent; import mage.target.TargetPermanent; import mage.target.common.TargetAnyTarget; +import java.util.Objects; +import java.util.Optional; +import java.util.UUID; + /** * @author TheElk801 */ @@ -61,7 +60,7 @@ public final class TheFiligreeSylex extends CardImpl { this.addAbility(ability); // {T}, Remove ten oil counters from among permanents you control and sacrifice The Filigree Sylex: It deals 10 damage to any target. - ability = new SimpleActivatedAbility(new DamageTargetEffect(10), new TapSourceCost()); + ability = new SimpleActivatedAbility(new DamageTargetEffect(10, "it"), new TapSourceCost()); ability.addCost(new CompositeCost( new RemoveCounterCost(new TargetPermanent( 0, Integer.MAX_VALUE, diff --git a/Mage.Sets/src/mage/cards/t/TheSeedcore.java b/Mage.Sets/src/mage/cards/t/TheSeedcore.java index 05a3ea0d861..3f84b2fb9a2 100644 --- a/Mage.Sets/src/mage/cards/t/TheSeedcore.java +++ b/Mage.Sets/src/mage/cards/t/TheSeedcore.java @@ -25,12 +25,11 @@ import mage.target.common.TargetCreaturePermanent; import java.util.UUID; /** - * * @author AhmadYProjects */ public final class TheSeedcore extends CardImpl { - private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("1/1 creature"); + private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("1/1 creature"); static { filter.add(new PowerPredicate(ComparisonType.EQUAL_TO, 1)); @@ -51,8 +50,8 @@ public final class TheSeedcore extends CardImpl { Zone.BATTLEFIELD, new BoostTargetEffect(2, 1, Duration.EndOfTurn), new TapSourceCost(), - CorruptedCondition.instance, - "{T}: Target 1/1 creature gets +2/+1 until end of turn. Activate only if an opponent has three or more poison counters.").setAbilityWord(AbilityWord.CORRUPTED).addHint(CorruptedCondition.getHint()); + CorruptedCondition.instance + ).setAbilityWord(AbilityWord.CORRUPTED).addHint(CorruptedCondition.getHint()); ability.addTarget(new TargetCreaturePermanent(filter)); this.addAbility(ability); } @@ -66,6 +65,7 @@ public final class TheSeedcore extends CardImpl { return new TheSeedcore(this); } } + class TheSeedcoreManaBuilder extends ConditionalManaBuilder { @Override @@ -76,7 +76,7 @@ class TheSeedcoreManaBuilder extends ConditionalManaBuilder { @Override public String getRule() { - return "Spend this mana only to cast a Phyrexian creature spell."; + return "Spend this mana only to cast Phyrexian creature spells."; } } @@ -84,7 +84,7 @@ class TheSeedcoreConditionalMana extends ConditionalMana { TheSeedcoreConditionalMana(Mana mana) { super(mana); - staticText = "Spend this mana only to cast a Phyrexian creature spell."; + staticText = "Spend this mana only to cast Phyrexian creature spells."; addCondition(new mage.cards.t.TheSeedcoreManaCondition()); } } diff --git a/Mage.Sets/src/mage/cards/t/TyvarsStand.java b/Mage.Sets/src/mage/cards/t/TyvarsStand.java index af319cd66ea..3a9e2d8e382 100644 --- a/Mage.Sets/src/mage/cards/t/TyvarsStand.java +++ b/Mage.Sets/src/mage/cards/t/TyvarsStand.java @@ -1,7 +1,5 @@ package mage.cards.t; -import java.util.UUID; - import mage.abilities.dynamicvalue.common.ManacostVariableValue; import mage.abilities.effects.common.continuous.BoostTargetEffect; import mage.abilities.effects.common.continuous.GainAbilityTargetEffect; @@ -13,6 +11,8 @@ import mage.constants.CardType; import mage.constants.Duration; import mage.target.common.TargetControlledCreaturePermanent; +import java.util.UUID; + /** * @author TheElk801 */ @@ -24,7 +24,7 @@ public final class TyvarsStand extends CardImpl { // Target creature you control gets +X/+X and gains hexproof and indestructible until end of turn. this.getSpellAbility().addEffect(new BoostTargetEffect( ManacostVariableValue.REGULAR, ManacostVariableValue.REGULAR, Duration.EndOfTurn - )); + ).setText("target creature you control gets +X/+X")); this.getSpellAbility().addEffect(new GainAbilityTargetEffect(HexproofAbility.getInstance()) .setText("and gains hexproof")); this.getSpellAbility().addEffect(new GainAbilityTargetEffect(IndestructibleAbility.getInstance()) diff --git a/Mage.Sets/src/mage/cards/u/UnctusGrandMetatect.java b/Mage.Sets/src/mage/cards/u/UnctusGrandMetatect.java index 66eb0d70ac3..af1582a7c7f 100644 --- a/Mage.Sets/src/mage/cards/u/UnctusGrandMetatect.java +++ b/Mage.Sets/src/mage/cards/u/UnctusGrandMetatect.java @@ -48,13 +48,14 @@ public final class UnctusGrandMetatect extends CardImpl { this.addAbility(new SimpleStaticAbility(new GainAbilityControlledEffect( new BecomesTappedSourceTriggeredAbility( new DrawDiscardControllerEffect(1, 1) - ), Duration.WhileOnBattlefield, filter, true + ).setTriggerPhrase("Whenever this creature becomes tapped, "), + Duration.WhileOnBattlefield, filter, true ))); // Other artifact creatures you control get +1/+1. this.addAbility(new SimpleStaticAbility(new BoostControlledEffect( 1, 1, Duration.WhileOnBattlefield, - StaticFilters.FILTER_PERMANENT_ARTIFACT_CREATURE, true + StaticFilters.FILTER_PERMANENTS_ARTIFACT_CREATURE, true ))); // {U/P}: Until end of turn, target creature you control becomes a blue artifact in addition to its other colors and types. Activate only as a sorcery. diff --git a/Mage.Sets/src/mage/cards/v/VatEmergence.java b/Mage.Sets/src/mage/cards/v/VatEmergence.java index c16168eb6e7..3a6d06b12ab 100644 --- a/Mage.Sets/src/mage/cards/v/VatEmergence.java +++ b/Mage.Sets/src/mage/cards/v/VatEmergence.java @@ -5,7 +5,8 @@ import mage.abilities.effects.common.counter.ProliferateEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.StaticFilters; +import mage.filter.FilterCard; +import mage.filter.common.FilterCreatureCard; import mage.target.common.TargetCardInGraveyard; import java.util.UUID; @@ -15,12 +16,14 @@ import java.util.UUID; */ public final class VatEmergence extends CardImpl { + private static final FilterCard filter = new FilterCreatureCard("creature card from a graveyard"); + public VatEmergence(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{B}"); // Put target creature card from a graveyard onto the battlefield under your control. Proliferate. this.getSpellAbility().addEffect(new ReturnFromGraveyardToBattlefieldTargetEffect()); - this.getSpellAbility().addTarget(new TargetCardInGraveyard(StaticFilters.FILTER_CARD_CREATURE)); + this.getSpellAbility().addTarget(new TargetCardInGraveyard(filter)); this.getSpellAbility().addEffect(new ProliferateEffect()); } diff --git a/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java b/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java index 3cec32be1a1..37cb86fa8e8 100644 --- a/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java +++ b/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java @@ -58,8 +58,8 @@ public class VerifyCardDataTest { private static final Logger logger = Logger.getLogger(VerifyCardDataTest.class); + private static final String FULL_ABILITIES_CHECK_SET_CODE = "ONE"; // check all abilities and output cards with wrong abilities texts; private static final boolean CHECK_ONLY_ABILITIES_TEXT = false; // use when checking text locally, suppresses unnecessary checks and output messages - private static final String FULL_ABILITIES_CHECK_SET_CODE = "MOC"; // 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 diff --git a/Mage/src/main/java/mage/abilities/TriggeredAbilityImpl.java b/Mage/src/main/java/mage/abilities/TriggeredAbilityImpl.java index d43797cdc23..5112f8810e3 100644 --- a/Mage/src/main/java/mage/abilities/TriggeredAbilityImpl.java +++ b/Mage/src/main/java/mage/abilities/TriggeredAbilityImpl.java @@ -4,6 +4,7 @@ import mage.MageObject; import mage.abilities.effects.Effect; import mage.abilities.effects.common.DoIfCostPaid; import mage.constants.AbilityType; +import mage.constants.AbilityWord; import mage.constants.Zone; import mage.game.Game; import mage.game.events.GameEvent; @@ -330,6 +331,12 @@ public abstract class TriggeredAbilityImpl extends AbilityImpl implements Trigge return optional; } + @Override + public TriggeredAbilityImpl setAbilityWord(AbilityWord abilityWord) { + super.setAbilityWord(abilityWord); + return this; + } + public static boolean isInUseableZoneDiesTrigger(TriggeredAbility source, GameEvent event, Game game) { // Get the source permanent of the ability MageObject sourceObject = null;