From 201389553065200873bdb2fb8a4f54ffaff8d032 Mon Sep 17 00:00:00 2001 From: xenohedron Date: Thu, 12 Oct 2023 21:34:58 -0400 Subject: [PATCH] lots of text fixes --- Mage.Sets/src/mage/cards/a/AbundantMaw.java | 4 +- .../src/mage/cards/a/AceFearlessRebel.java | 2 +- .../src/mage/cards/a/AdvancedStitchwing.java | 3 +- Mage.Sets/src/mage/cards/a/Aeolipile.java | 2 +- Mage.Sets/src/mage/cards/a/AerieOuphes.java | 2 +- Mage.Sets/src/mage/cards/a/AncientHydra.java | 2 +- .../src/mage/cards/a/AngelicOverseer.java | 3 +- .../cards/a/ArixmethesSlumberingIsle.java | 2 +- .../src/mage/cards/a/ArmageddonClock.java | 2 +- Mage.Sets/src/mage/cards/a/AuraFlux.java | 7 ++- Mage.Sets/src/mage/cards/a/AvatarOfFury.java | 2 +- Mage.Sets/src/mage/cards/a/AvatarOfHope.java | 2 +- Mage.Sets/src/mage/cards/a/AvatarOfWill.java | 2 +- Mage.Sets/src/mage/cards/b/BarbarianRing.java | 2 +- .../src/mage/cards/b/BattlewiseHoplite.java | 2 +- .../src/mage/cards/b/BenefactorsDraught.java | 6 +-- Mage.Sets/src/mage/cards/b/Bereavement.java | 5 +- Mage.Sets/src/mage/cards/b/BlightedGorge.java | 2 +- Mage.Sets/src/mage/cards/b/BloodMoney.java | 2 +- Mage.Sets/src/mage/cards/b/BoneDragon.java | 2 +- Mage.Sets/src/mage/cards/b/BoneyardWurm.java | 2 +- .../src/mage/cards/b/BottleOfSuleiman.java | 46 +++---------------- .../src/mage/cards/b/BrassTalonChimera.java | 3 +- Mage.Sets/src/mage/cards/b/BronzebeakMoa.java | 20 +++----- .../src/mage/cards/b/BuildersBlessing.java | 16 ++++--- .../src/mage/cards/b/BurningVengeance.java | 12 +---- Mage.Sets/src/mage/cards/c/Castle.java | 16 ++++--- .../mage/cards/c/ChamberOfManipulation.java | 2 +- .../src/mage/cards/c/CinderElemental.java | 2 +- Mage.Sets/src/mage/cards/c/ClaimFame.java | 3 +- .../src/mage/cards/c/CoercivePortal.java | 2 +- .../src/mage/cards/c/ConsecrateLand.java | 3 +- .../src/mage/cards/c/CracklingTriton.java | 2 +- .../src/mage/cards/c/CurseOfOblivion.java | 2 +- .../src/mage/cards/c/CurseOfVitality.java | 2 +- .../src/mage/cards/c/CyclopeanMummy.java | 2 +- Mage.Sets/src/mage/cards/d/DecimatorWeb.java | 7 ++- Mage.Sets/src/mage/cards/d/DelifsCube.java | 4 +- .../src/mage/cards/d/DevoutChaplain.java | 3 +- .../src/mage/cards/d/DivebomberGriffin.java | 2 +- Mage.Sets/src/mage/cards/d/Doomfall.java | 2 +- .../src/mage/cards/e/EarlOfSquirrel.java | 2 +- .../mage/cards/e/EdricSpymasterOfTrest.java | 3 +- Mage.Sets/src/mage/cards/e/EmmaraTandris.java | 3 +- .../src/mage/cards/e/EnterTheGodEternals.java | 2 +- Mage.Sets/src/mage/cards/f/FaerieNoble.java | 2 +- Mage.Sets/src/mage/cards/f/FatalMutation.java | 4 +- .../src/mage/cards/f/FavorableWinds.java | 13 +++--- Mage.Sets/src/mage/cards/f/FiveAlarmFire.java | 2 +- .../src/mage/cards/f/FleetfeatherSandals.java | 6 +-- .../src/mage/cards/f/FlitterstepEidolon.java | 2 +- Mage.Sets/src/mage/cards/f/FontOfIre.java | 2 +- .../mage/cards/f/FromUnderTheFloorboards.java | 4 +- .../src/mage/cards/g/GerrardsBattleCry.java | 5 +- Mage.Sets/src/mage/cards/g/GiftOfDoom.java | 3 +- .../src/mage/cards/g/GleamOfAuthority.java | 24 +++------- Mage.Sets/src/mage/cards/g/Goblinslide.java | 3 +- .../src/mage/cards/g/GodPharaohsFaithful.java | 2 +- Mage.Sets/src/mage/cards/g/GroundPounder.java | 2 +- Mage.Sets/src/mage/cards/g/GruulWarChant.java | 9 ++-- .../src/mage/cards/h/HandOfThePraetors.java | 11 ++--- .../src/mage/cards/h/HarrowingJourney.java | 4 +- Mage.Sets/src/mage/cards/h/HiredTorturer.java | 4 +- .../mage/cards/h/HorrifyingRevelation.java | 4 +- .../src/mage/cards/i/IcatianJavelineers.java | 2 +- Mage.Sets/src/mage/cards/i/Insight.java | 4 +- .../src/mage/cards/i/IronHeartChimera.java | 6 +-- Mage.Sets/src/mage/cards/i/IronMaiden.java | 3 +- Mage.Sets/src/mage/cards/j/JadeBearer.java | 17 +++---- Mage.Sets/src/mage/cards/j/JujuBubble.java | 2 +- .../src/mage/cards/k/KarplusanHound.java | 3 +- .../src/mage/cards/k/KjeldoranEliteGuard.java | 3 +- .../src/mage/cards/l/LeadBellyChimera.java | 4 +- .../src/mage/cards/l/LozhanDragonsLegacy.java | 2 +- .../src/mage/cards/m/MalakirSoothsayer.java | 4 +- Mage.Sets/src/mage/cards/m/ManorGargoyle.java | 2 +- .../src/mage/cards/m/MiirymSentinelWyrm.java | 2 +- Mage.Sets/src/mage/cards/m/MizziumTank.java | 2 +- Mage.Sets/src/mage/cards/m/MoggFanatic.java | 2 +- Mage.Sets/src/mage/cards/m/MortalWound.java | 4 +- Mage.Sets/src/mage/cards/m/Mugging.java | 3 +- .../src/mage/cards/m/MummyParamount.java | 5 +- .../src/mage/cards/n/NissasRevelation.java | 2 +- Mage.Sets/src/mage/cards/n/NoMercy.java | 2 +- Mage.Sets/src/mage/cards/n/NoxiousGhoul.java | 2 +- .../src/mage/cards/o/OasisRitualist.java | 4 +- .../src/mage/cards/o/OketrasLastMercy.java | 4 +- .../src/mage/cards/o/OraclesInsight.java | 3 +- Mage.Sets/src/mage/cards/p/PainKami.java | 2 +- Mage.Sets/src/mage/cards/p/PharikasCure.java | 2 +- .../src/mage/cards/p/PharikasMender.java | 2 +- Mage.Sets/src/mage/cards/p/PolisCrusher.java | 2 +- Mage.Sets/src/mage/cards/p/PsychicStrike.java | 9 ++-- .../src/mage/cards/p/PurgeTheProfane.java | 2 +- .../src/mage/cards/r/RagebloodShaman.java | 9 ++-- Mage.Sets/src/mage/cards/r/RaidersSpoils.java | 9 +--- .../src/mage/cards/r/RasputinDreamweaver.java | 2 +- .../src/mage/cards/r/ResoluteSurvivors.java | 16 +++---- .../src/mage/cards/r/ReverentMantra.java | 2 +- .../src/mage/cards/r/RhonassMonument.java | 6 +-- Mage.Sets/src/mage/cards/r/RighteousWar.java | 4 +- .../cards/r/RofellosLlanowarEmissary.java | 4 +- Mage.Sets/src/mage/cards/r/RunicArmasaur.java | 5 +- .../src/mage/cards/s/SarythTheVipersFang.java | 13 +++--- Mage.Sets/src/mage/cards/s/Scaldkin.java | 2 +- .../src/mage/cards/s/ScrollOfOrigins.java | 3 +- Mage.Sets/src/mage/cards/s/SealOfFire.java | 2 +- .../src/mage/cards/s/SealOfTheGuildpact.java | 5 +- .../src/mage/cards/s/SelesnyaEulogist.java | 2 +- Mage.Sets/src/mage/cards/s/SkaabRuinator.java | 2 +- Mage.Sets/src/mage/cards/s/SpareFromEvil.java | 2 +- .../src/mage/cards/s/SpellheartChimera.java | 2 +- .../src/mage/cards/s/StructuralCollapse.java | 3 +- Mage.Sets/src/mage/cards/s/Stupor.java | 3 +- Mage.Sets/src/mage/cards/t/ThrabenSentry.java | 4 +- .../src/mage/cards/t/ThrakkusTheButcher.java | 2 +- Mage.Sets/src/mage/cards/t/TickingGnomes.java | 2 +- .../src/mage/cards/t/TinWingChimera.java | 6 +-- Mage.Sets/src/mage/cards/t/ToilTrouble.java | 3 +- .../src/mage/cards/t/TraitorousBlood.java | 2 +- Mage.Sets/src/mage/cards/t/TriadOfFates.java | 6 +-- .../src/mage/cards/t/TriumphOfTheHordes.java | 11 +++-- .../src/mage/cards/u/UndercityPlague.java | 5 +- Mage.Sets/src/mage/cards/u/UrzasGuilt.java | 4 +- Mage.Sets/src/mage/cards/v/VaultSkyward.java | 4 +- .../src/mage/cards/v/VedalkenAnatomist.java | 2 +- Mage.Sets/src/mage/cards/v/VeilOfBirds.java | 2 +- .../src/mage/cards/v/VeiledApparition.java | 2 +- Mage.Sets/src/mage/cards/v/VeiledSentry.java | 2 +- Mage.Sets/src/mage/cards/v/VeiledSerpent.java | 2 +- Mage.Sets/src/mage/cards/v/VipersKiss.java | 6 +-- .../src/mage/cards/v/VulshokReplica.java | 3 +- .../src/mage/cards/w/WarTorchGoblin.java | 2 +- Mage.Sets/src/mage/cards/w/Warmth.java | 2 +- .../src/mage/cards/w/WatchersOfTheDead.java | 4 +- Mage.Sets/src/mage/cards/w/Web.java | 7 ++- .../common/SourcePhaseInTriggeredAbility.java | 2 +- .../common/ExileFromZoneTargetEffect.java | 6 ++- .../common/MayTapOrUntapTargetEffect.java | 9 +--- .../effects/common/RollDiceEffect.java | 3 +- .../GainProtectionFromColorAllEffect.java | 5 +- .../filter/common/FilterUntappedCreature.java | 29 ------------ 142 files changed, 261 insertions(+), 403 deletions(-) delete mode 100644 Mage/src/main/java/mage/filter/common/FilterUntappedCreature.java diff --git a/Mage.Sets/src/mage/cards/a/AbundantMaw.java b/Mage.Sets/src/mage/cards/a/AbundantMaw.java index 22088397493..2c564e00cf4 100644 --- a/Mage.Sets/src/mage/cards/a/AbundantMaw.java +++ b/Mage.Sets/src/mage/cards/a/AbundantMaw.java @@ -31,8 +31,8 @@ public final class AbundantMaw extends CardImpl { this.addAbility(new EmergeAbility(this, new ManaCostsImpl<>("{6}{B}"))); // When you cast Abundant Maw, target opponent loses 3 life and you gain 3 life. - Ability ability = new CastSourceTriggeredAbility(new GainLifeEffect(3)); - ability.addEffect(new LoseLifeTargetEffect(3).concatBy("and")); + Ability ability = new CastSourceTriggeredAbility(new LoseLifeTargetEffect(3)); + ability.addEffect(new GainLifeEffect(3).concatBy("and")); ability.addTarget(new TargetOpponent()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/a/AceFearlessRebel.java b/Mage.Sets/src/mage/cards/a/AceFearlessRebel.java index 1aeb144daca..fe77742c321 100644 --- a/Mage.Sets/src/mage/cards/a/AceFearlessRebel.java +++ b/Mage.Sets/src/mage/cards/a/AceFearlessRebel.java @@ -53,7 +53,7 @@ public final class AceFearlessRebel extends CardImpl { ability, new SacrificeTargetCost(StaticFilters.FILTER_CONTROLLED_PERMANENT_ARTIFACT_AN), "Sacrifice an artifact?" - )).setTriggerPhrase("Nitro-9")); + )).withFlavorWord("Nitro-9")); // Doctor's companion this.addAbility(DoctorsCompanionAbility.getInstance()); diff --git a/Mage.Sets/src/mage/cards/a/AdvancedStitchwing.java b/Mage.Sets/src/mage/cards/a/AdvancedStitchwing.java index eb45bfa5d36..208ed972cb7 100644 --- a/Mage.Sets/src/mage/cards/a/AdvancedStitchwing.java +++ b/Mage.Sets/src/mage/cards/a/AdvancedStitchwing.java @@ -14,7 +14,6 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; import mage.constants.Zone; -import mage.filter.FilterCard; import mage.filter.StaticFilters; import mage.target.common.TargetCardInHand; @@ -34,7 +33,7 @@ public final class AdvancedStitchwing extends CardImpl { // Flying this.addAbility(FlyingAbility.getInstance()); // {2}{U}, Discard two cards: Return Advanced Stitchwing from your graveyard to the battlefield tapped. - Ability ability = new SimpleActivatedAbility(Zone.GRAVEYARD, new ReturnSourceFromGraveyardToBattlefieldEffect(true), new ManaCostsImpl<>("{2}{U}")); + Ability ability = new SimpleActivatedAbility(Zone.GRAVEYARD, new ReturnSourceFromGraveyardToBattlefieldEffect(true, false), new ManaCostsImpl<>("{2}{U}")); ability.addCost(new DiscardTargetCost(new TargetCardInHand(2, StaticFilters.FILTER_CARD_CARDS))); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/a/Aeolipile.java b/Mage.Sets/src/mage/cards/a/Aeolipile.java index ac83131cfe3..d58131f88ba 100644 --- a/Mage.Sets/src/mage/cards/a/Aeolipile.java +++ b/Mage.Sets/src/mage/cards/a/Aeolipile.java @@ -24,7 +24,7 @@ public final class Aeolipile extends CardImpl { super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}"); // {1}, {tap}, Sacrifice Aeolipile: Aeolipile deals 2 damage to any target. - Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(2), new ManaCostsImpl<>("{1}")); + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(2, "it"), new ManaCostsImpl<>("{1}")); ability.addCost(new TapSourceCost()); ability.addCost(new SacrificeSourceCost()); ability.addTarget(new TargetAnyTarget()); diff --git a/Mage.Sets/src/mage/cards/a/AerieOuphes.java b/Mage.Sets/src/mage/cards/a/AerieOuphes.java index 3a2510d7652..54eb8d72b71 100644 --- a/Mage.Sets/src/mage/cards/a/AerieOuphes.java +++ b/Mage.Sets/src/mage/cards/a/AerieOuphes.java @@ -40,7 +40,7 @@ public final class AerieOuphes extends CardImpl { // Sacrifice Aerie Ouphes: Aerie Ouphes deals damage equal to its power to target creature with flying. Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(new SourcePermanentPowerCount()) - .setText("{this} deals damage equal to its power to target creature with flying"), new SacrificeSourceCost()); + .setText("it deals damage equal to its power to target creature with flying"), new SacrificeSourceCost()); ability.addTarget(new TargetCreaturePermanent(filter)); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/a/AncientHydra.java b/Mage.Sets/src/mage/cards/a/AncientHydra.java index 1683be4300e..7a2a2d432b9 100644 --- a/Mage.Sets/src/mage/cards/a/AncientHydra.java +++ b/Mage.Sets/src/mage/cards/a/AncientHydra.java @@ -32,7 +32,7 @@ public final class AncientHydra extends CardImpl { // Fading 5 this.addAbility(new FadingAbility(5, this)); // {1}, Remove a fade counter from Ancient Hydra: Ancient Hydra deals 1 damage to any target. - Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(1), new ManaCostsImpl<>("{1}")); + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(1, "it"), new ManaCostsImpl<>("{1}")); ability.addCost(new RemoveCountersSourceCost(CounterType.FADE.createInstance(1))); ability.addTarget(new TargetAnyTarget()); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/a/AngelicOverseer.java b/Mage.Sets/src/mage/cards/a/AngelicOverseer.java index 6d9c0805d9a..48d49d07e0a 100644 --- a/Mage.Sets/src/mage/cards/a/AngelicOverseer.java +++ b/Mage.Sets/src/mage/cards/a/AngelicOverseer.java @@ -1,4 +1,3 @@ - package mage.cards.a; import java.util.UUID; @@ -25,7 +24,7 @@ import mage.filter.common.FilterControlledPermanent; public final class AngelicOverseer extends CardImpl { private static final String rule1 = "As long as you control a Human, {this} has hexproof"; - private static final String rule2 = "and is indestructible"; + private static final String rule2 = "and indestructible"; private static final FilterControlledPermanent filter = new FilterControlledPermanent("Human"); static { diff --git a/Mage.Sets/src/mage/cards/a/ArixmethesSlumberingIsle.java b/Mage.Sets/src/mage/cards/a/ArixmethesSlumberingIsle.java index 9467eb125c4..d5e73c52b2d 100644 --- a/Mage.Sets/src/mage/cards/a/ArixmethesSlumberingIsle.java +++ b/Mage.Sets/src/mage/cards/a/ArixmethesSlumberingIsle.java @@ -43,7 +43,7 @@ public final class ArixmethesSlumberingIsle extends CardImpl { // Arixmethes, Slumbering Isle enters the battlefield tapped with five slumber counters on it. Ability ability = new EntersBattlefieldAbility( new TapSourceEffect(true), false, null, - "{this} enters the battlefield tapped with five slumber counters on it", null + "{this} enters the battlefield tapped with five slumber counters on it.", null ); ability.addEffect(new AddCountersSourceEffect(CounterType.SLUMBER.createInstance(5))); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/a/ArmageddonClock.java b/Mage.Sets/src/mage/cards/a/ArmageddonClock.java index 34765583d58..4d617d726c2 100644 --- a/Mage.Sets/src/mage/cards/a/ArmageddonClock.java +++ b/Mage.Sets/src/mage/cards/a/ArmageddonClock.java @@ -35,7 +35,7 @@ public final class ArmageddonClock extends CardImpl { // {4}: Remove a doom counter from Armageddon Clock. Any player may activate this ability but only during any upkeep step. ActivatedAbilityImpl ability = new ConditionalActivatedAbility(Zone.BATTLEFIELD, new RemoveCounterSourceEffect(CounterType.DOOM.createInstance()), new ManaCostsImpl<>("{4}"), new IsStepCondition(PhaseStep.UPKEEP, false), - "Remove a doom counter from {this}. Any player may activate this ability but only during any upkeep step"); + "{4}: Remove a doom counter from {this}. Any player may activate this ability but only during any upkeep step."); ability.setMayActivate(TargetController.ANY); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/a/AuraFlux.java b/Mage.Sets/src/mage/cards/a/AuraFlux.java index b23d4ddcca0..1f61e68a70e 100644 --- a/Mage.Sets/src/mage/cards/a/AuraFlux.java +++ b/Mage.Sets/src/mage/cards/a/AuraFlux.java @@ -1,4 +1,3 @@ - package mage.cards.a; import java.util.UUID; @@ -13,7 +12,6 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; import mage.constants.TargetController; -import mage.constants.Zone; import mage.filter.common.FilterEnchantmentPermanent; /** @@ -26,8 +24,9 @@ public final class AuraFlux extends CardImpl { super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{U}"); // Other enchantments have "At the beginning of your upkeep, sacrifice this enchantment unless you pay {2}." - Ability gainedAbility = new BeginningOfUpkeepTriggeredAbility(new SacrificeSourceUnlessPaysEffect(new GenericManaCost(2)), TargetController.YOU, false); - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAllEffect(gainedAbility, Duration.WhileOnBattlefield, new FilterEnchantmentPermanent("enchantments"), true))); + Ability gainedAbility = new BeginningOfUpkeepTriggeredAbility(new SacrificeSourceUnlessPaysEffect(new GenericManaCost(2)) + .setText("sacrifice this enchantment unless you pay {2}"), TargetController.YOU, false); + this.addAbility(new SimpleStaticAbility(new GainAbilityAllEffect(gainedAbility, Duration.WhileOnBattlefield, new FilterEnchantmentPermanent("enchantments"), true))); } private AuraFlux(final AuraFlux card) { diff --git a/Mage.Sets/src/mage/cards/a/AvatarOfFury.java b/Mage.Sets/src/mage/cards/a/AvatarOfFury.java index 2073fc4b786..bcdd9b609c0 100644 --- a/Mage.Sets/src/mage/cards/a/AvatarOfFury.java +++ b/Mage.Sets/src/mage/cards/a/AvatarOfFury.java @@ -45,7 +45,7 @@ public final class AvatarOfFury extends CardImpl { // If an opponent controls seven or more lands, Avatar of Fury costs {6} less to cast. this.addAbility(new SimpleStaticAbility(Zone.ALL, new SpellCostReductionSourceEffect(6, AvatarOfFuryCondition.instance) - .setText("if an opponent controls seven or more lands, Avatar of Fury costs {6} less to cast")) + .setText("if an opponent controls seven or more lands, this spell costs {6} less to cast")) .addHint(new ConditionHint(AvatarOfFuryCondition.instance, "Opponent controls seven or more lands")) ); diff --git a/Mage.Sets/src/mage/cards/a/AvatarOfHope.java b/Mage.Sets/src/mage/cards/a/AvatarOfHope.java index 2c40e9d674f..f2ad028ddbc 100644 --- a/Mage.Sets/src/mage/cards/a/AvatarOfHope.java +++ b/Mage.Sets/src/mage/cards/a/AvatarOfHope.java @@ -32,7 +32,7 @@ public final class AvatarOfHope extends CardImpl { // If you have 3 or less life, Avatar of Hope costs {6} less to cast. this.addAbility(new SimpleStaticAbility(Zone.ALL, new SpellCostReductionSourceEffect(6, AvatarOfHopeCondition.instance) - .setText("if you have 3 or less life, Avatar of Hope costs {6} less to cast")) + .setText("if you have 3 or less life, this spell costs {6} less to cast")) .addHint(new ConditionHint(AvatarOfHopeCondition.instance)) ); diff --git a/Mage.Sets/src/mage/cards/a/AvatarOfWill.java b/Mage.Sets/src/mage/cards/a/AvatarOfWill.java index 603d5d04a85..7f9e11ce448 100644 --- a/Mage.Sets/src/mage/cards/a/AvatarOfWill.java +++ b/Mage.Sets/src/mage/cards/a/AvatarOfWill.java @@ -27,7 +27,7 @@ public final class AvatarOfWill extends CardImpl { // If an opponent has no cards in hand, Avatar of Will costs {6} less to cast. this.addAbility(new SimpleStaticAbility(Zone.ALL, new SpellCostReductionSourceEffect(6, OpponentHasNoCardsInHandCondition.instance) - .setText("If an opponent has no cards in hand, Avatar of Will costs {6} less to cast") + .setText("If an opponent has no cards in hand, this spell costs {6} less to cast") ).addHint(new ConditionHint(OpponentHasNoCardsInHandCondition.instance, "Opponent has no cards in hand")) ); diff --git a/Mage.Sets/src/mage/cards/b/BarbarianRing.java b/Mage.Sets/src/mage/cards/b/BarbarianRing.java index 3d721dc9643..947a8386b37 100644 --- a/Mage.Sets/src/mage/cards/b/BarbarianRing.java +++ b/Mage.Sets/src/mage/cards/b/BarbarianRing.java @@ -34,7 +34,7 @@ public final class BarbarianRing extends CardImpl { // Threshold - {R}, {T}, Sacrifice Barbarian Ring: Barbarian Ring deals 2 damage to any target. Activate this ability only if seven or more cards are in your graveyard. Ability thresholdAbility = new ConditionalActivatedAbility(Zone.BATTLEFIELD, - new DamageTargetEffect(2), + new DamageTargetEffect(2, "it"), new ManaCostsImpl<>("{R}"), new CardsInControllerGraveyardCondition(7)); thresholdAbility.addCost(new TapSourceCost()); diff --git a/Mage.Sets/src/mage/cards/b/BattlewiseHoplite.java b/Mage.Sets/src/mage/cards/b/BattlewiseHoplite.java index 205b00562ef..bd40d2c4077 100644 --- a/Mage.Sets/src/mage/cards/b/BattlewiseHoplite.java +++ b/Mage.Sets/src/mage/cards/b/BattlewiseHoplite.java @@ -28,7 +28,7 @@ public final class BattlewiseHoplite extends CardImpl { // Heroic - Whenever you cast a spell that targets Battlewise Hoplite, put a +1/+1 counter on Battlewise Hoplite, then scry 1. Ability ability = new HeroicAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance())); - ability.addEffect(new ScryEffect(1, false)); + ability.addEffect(new ScryEffect(1, false).concatBy(", then")); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/b/BenefactorsDraught.java b/Mage.Sets/src/mage/cards/b/BenefactorsDraught.java index f5567ff1170..c117dcd2f27 100644 --- a/Mage.Sets/src/mage/cards/b/BenefactorsDraught.java +++ b/Mage.Sets/src/mage/cards/b/BenefactorsDraught.java @@ -1,4 +1,3 @@ - package mage.cards.b; import java.util.UUID; @@ -10,10 +9,9 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; -import mage.filter.common.FilterCreaturePermanent; +import mage.filter.StaticFilters; import mage.game.Game; import mage.game.events.GameEvent; -import mage.game.events.GameEvent.EventType; import mage.game.permanent.Permanent; import mage.players.Player; @@ -27,7 +25,7 @@ public final class BenefactorsDraught extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{G}"); // Untap all creatures. - this.getSpellAbility().addEffect(new UntapAllEffect(new FilterCreaturePermanent())); + this.getSpellAbility().addEffect(new UntapAllEffect(StaticFilters.FILTER_PERMANENT_CREATURES)); // Until end of turn, whenever a creature an opponent controls blocks, draw a card. this.getSpellAbility().addEffect(new CreateDelayedTriggeredAbilityEffect(new BenefactorsDraughtTriggeredAbility())); diff --git a/Mage.Sets/src/mage/cards/b/Bereavement.java b/Mage.Sets/src/mage/cards/b/Bereavement.java index 4b6a0f8f254..9f90fc52865 100644 --- a/Mage.Sets/src/mage/cards/b/Bereavement.java +++ b/Mage.Sets/src/mage/cards/b/Bereavement.java @@ -1,4 +1,3 @@ - package mage.cards.b; import java.util.UUID; @@ -40,7 +39,7 @@ public final class Bereavement extends CardImpl { class BereavementTriggeredAbility extends TriggeredAbilityImpl { - public BereavementTriggeredAbility() { + BereavementTriggeredAbility() { super(Zone.BATTLEFIELD, new DiscardTargetEffect(1)); } @@ -72,6 +71,6 @@ class BereavementTriggeredAbility extends TriggeredAbilityImpl { @Override public String getRule() { - return "Whenever a green creature dies, its controller discards a card"; + return "Whenever a green creature dies, its controller discards a card."; } } diff --git a/Mage.Sets/src/mage/cards/b/BlightedGorge.java b/Mage.Sets/src/mage/cards/b/BlightedGorge.java index 5a096ba121d..59cd161df34 100644 --- a/Mage.Sets/src/mage/cards/b/BlightedGorge.java +++ b/Mage.Sets/src/mage/cards/b/BlightedGorge.java @@ -29,7 +29,7 @@ public final class BlightedGorge extends CardImpl { // {4}{R}, {T}, Sacrifice Blighted Gorge: Blighted Gorge deals 2 damage to any target. Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, - new DamageTargetEffect(2), + new DamageTargetEffect(2, "it"), new ManaCostsImpl<>("{4}{R}")); ability.addCost(new TapSourceCost()); ability.addCost(new SacrificeSourceCost()); diff --git a/Mage.Sets/src/mage/cards/b/BloodMoney.java b/Mage.Sets/src/mage/cards/b/BloodMoney.java index cacf25f81a4..1c140952a0b 100644 --- a/Mage.Sets/src/mage/cards/b/BloodMoney.java +++ b/Mage.Sets/src/mage/cards/b/BloodMoney.java @@ -40,7 +40,7 @@ class BloodMoneyEffect extends OneShotEffect { BloodMoneyEffect() { super(Outcome.Benefit); - staticText = "destroy all creatures. For each nontoken creature destroyed this way, create a tapped Treasure token"; + staticText = "destroy all creatures. For each nontoken creature destroyed this way, you create a tapped Treasure token"; } private BloodMoneyEffect(final BloodMoneyEffect effect) { diff --git a/Mage.Sets/src/mage/cards/b/BoneDragon.java b/Mage.Sets/src/mage/cards/b/BoneDragon.java index f356a27c55e..376ab62b425 100644 --- a/Mage.Sets/src/mage/cards/b/BoneDragon.java +++ b/Mage.Sets/src/mage/cards/b/BoneDragon.java @@ -43,7 +43,7 @@ public final class BoneDragon extends CardImpl { // {3}{B}{B}, Exile seven other cards from your graveyard: Return Bone Dragon from your graveyard to the battlefield tapped. Ability ability = new SimpleActivatedAbility( Zone.GRAVEYARD, - new ReturnSourceFromGraveyardToBattlefieldEffect(true), + new ReturnSourceFromGraveyardToBattlefieldEffect(true, false), new ManaCostsImpl<>("{3}{B}{B}") ); ability.addCost(new ExileFromGraveCost(new TargetCardInYourGraveyard(7, filter))); diff --git a/Mage.Sets/src/mage/cards/b/BoneyardWurm.java b/Mage.Sets/src/mage/cards/b/BoneyardWurm.java index 9676683c732..9df6b1075fa 100644 --- a/Mage.Sets/src/mage/cards/b/BoneyardWurm.java +++ b/Mage.Sets/src/mage/cards/b/BoneyardWurm.java @@ -22,7 +22,7 @@ public final class BoneyardWurm extends CardImpl { this.subtype.add(SubType.WURM); // Boneyard Wurm's power and toughness are each equal to the number of creature cards in your graveyard. - DynamicValue value = new CardsInControllerGraveyardCount(StaticFilters.FILTER_CARD_CREATURE); + DynamicValue value = new CardsInControllerGraveyardCount(StaticFilters.FILTER_CARD_CREATURES); this.addAbility(new SimpleStaticAbility(Zone.ALL, new SetBasePowerToughnessSourceEffect(value))); } diff --git a/Mage.Sets/src/mage/cards/b/BottleOfSuleiman.java b/Mage.Sets/src/mage/cards/b/BottleOfSuleiman.java index bd9270cb213..505a927094c 100644 --- a/Mage.Sets/src/mage/cards/b/BottleOfSuleiman.java +++ b/Mage.Sets/src/mage/cards/b/BottleOfSuleiman.java @@ -4,15 +4,14 @@ import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.common.SacrificeSourceCost; import mage.abilities.costs.mana.GenericManaCost; -import mage.abilities.effects.OneShotEffect; +import mage.abilities.effects.common.CreateTokenEffect; +import mage.abilities.effects.common.DamageControllerEffect; +import mage.abilities.effects.common.FlipCoinEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.constants.Outcome; import mage.constants.Zone; -import mage.game.Game; import mage.game.permanent.token.DjinnToken; -import mage.players.Player; import java.util.UUID; @@ -25,7 +24,10 @@ public final class BottleOfSuleiman extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}"); // {1}, Sacrifice Bottle of Suleiman: Flip a coin. If you lose the flip, Bottle of Suleiman deals 5 damage to you. If you win the flip, create a 5/5 colorless Djinn artifact creature token with flying. - Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new BottleOfSuleimanEffect(), new GenericManaCost(1)); + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new FlipCoinEffect( + new CreateTokenEffect(new DjinnToken()), + new DamageControllerEffect(5) + ), new GenericManaCost(1)); ability.addCost(new SacrificeSourceCost()); this.addAbility(ability); } @@ -39,37 +41,3 @@ public final class BottleOfSuleiman extends CardImpl { return new BottleOfSuleiman(this); } } - -class BottleOfSuleimanEffect extends OneShotEffect { - - public BottleOfSuleimanEffect() { - super(Outcome.PutCreatureInPlay); - staticText = "Flip a coin. If you lose the flip, {this} deals 5 damage to you. If you win the flip, create a 5/5 colorless Djinn artifact creature token with flying."; - } - - private BottleOfSuleimanEffect(final BottleOfSuleimanEffect effect) { - super(effect); - } - - @Override - public BottleOfSuleimanEffect copy() { - return new BottleOfSuleimanEffect(this); - } - - @Override - public boolean apply(Game game, Ability source) { - Player you = game.getPlayer(source.getControllerId()); - if (you != null) { - if (you.flipCoin(source, game, true)) { - DjinnToken token = new DjinnToken(); - token.putOntoBattlefield(1, game, source, source.getControllerId()); - return true; - } else { - you.damage(5, source.getSourceId(), source, game); - return true; - } - - } - return false; - } -} diff --git a/Mage.Sets/src/mage/cards/b/BrassTalonChimera.java b/Mage.Sets/src/mage/cards/b/BrassTalonChimera.java index 7c0756c793f..cfe4aa43c1b 100644 --- a/Mage.Sets/src/mage/cards/b/BrassTalonChimera.java +++ b/Mage.Sets/src/mage/cards/b/BrassTalonChimera.java @@ -42,7 +42,8 @@ public final class BrassTalonChimera extends CardImpl { // Sacrifice Brass-Talon Chimera: Put a +2/+2 counter on target Chimera creature. It gains first strike. (This effect lasts indefinitely.) Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new AddCountersTargetEffect(CounterType.P2P2.createInstance()), new SacrificeSourceCost()); - ability.addEffect(new GainAbilityTargetEffect(FirstStrikeAbility.getInstance(), Duration.WhileOnBattlefield).setText("It gains first strike. (This effect lasts indefinitely.)")); + ability.addEffect(new GainAbilityTargetEffect(FirstStrikeAbility.getInstance(), Duration.WhileOnBattlefield) + .setText("It gains first strike. (This effect lasts indefinitely.)")); ability.addTarget(new TargetCreaturePermanent(filter)); addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/b/BronzebeakMoa.java b/Mage.Sets/src/mage/cards/b/BronzebeakMoa.java index af355950f87..e9e08b4717b 100644 --- a/Mage.Sets/src/mage/cards/b/BronzebeakMoa.java +++ b/Mage.Sets/src/mage/cards/b/BronzebeakMoa.java @@ -1,32 +1,24 @@ - - package mage.cards.b; -import java.util.UUID; import mage.MageInt; -import mage.abilities.common.EntersBattlefieldAllTriggeredAbility; +import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility; import mage.abilities.effects.common.continuous.BoostSourceEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; import mage.constants.SubType; -import mage.constants.Zone; -import mage.filter.common.FilterControlledCreaturePermanent; -import mage.filter.predicate.mageobject.AnotherPredicate; +import mage.filter.StaticFilters; + +import java.util.UUID; /** * * @author LevelX2 */ - public final class BronzebeakMoa extends CardImpl { - private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("another creature under your control"); - static { - filter.add(AnotherPredicate.instance); - } public BronzebeakMoa (UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{W}"); this.subtype.add(SubType.BIRD); @@ -35,8 +27,8 @@ public final class BronzebeakMoa extends CardImpl { this.toughness = new MageInt(2); // Whenever another creature enters the battlefield under your control, Bronzebeak Moa gets +3/+3 until end of turn. - this.addAbility(new EntersBattlefieldAllTriggeredAbility(Zone.BATTLEFIELD, new BoostSourceEffect(3,3, Duration.EndOfTurn),filter,false)); - + this.addAbility(new EntersBattlefieldControlledTriggeredAbility( + new BoostSourceEffect(3,3, Duration.EndOfTurn), StaticFilters.FILTER_ANOTHER_CREATURE)); } private BronzebeakMoa(final BronzebeakMoa card) { diff --git a/Mage.Sets/src/mage/cards/b/BuildersBlessing.java b/Mage.Sets/src/mage/cards/b/BuildersBlessing.java index a64d1e6ad82..eef192722f9 100644 --- a/Mage.Sets/src/mage/cards/b/BuildersBlessing.java +++ b/Mage.Sets/src/mage/cards/b/BuildersBlessing.java @@ -1,27 +1,31 @@ - package mage.cards.b; -import java.util.UUID; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.common.continuous.BoostControlledEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; -import mage.constants.Zone; -import mage.filter.common.FilterUntappedCreature; +import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.permanent.TappedPredicate; + +import java.util.UUID; /** * @author noxx */ public final class BuildersBlessing extends CardImpl { + private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("untapped creatures"); + static { + filter.add(TappedPredicate.UNTAPPED); + } + public BuildersBlessing(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{W}"); - // Untapped creatures you control get +0/+2. - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostControlledEffect(0, 2, Duration.WhileOnBattlefield, new FilterUntappedCreature("untapped creatures")))); + this.addAbility(new SimpleStaticAbility(new BoostControlledEffect(0, 2, Duration.WhileOnBattlefield, filter))); } private BuildersBlessing(final BuildersBlessing card) { diff --git a/Mage.Sets/src/mage/cards/b/BurningVengeance.java b/Mage.Sets/src/mage/cards/b/BurningVengeance.java index cf588d3e76b..9a4d8c7f87a 100644 --- a/Mage.Sets/src/mage/cards/b/BurningVengeance.java +++ b/Mage.Sets/src/mage/cards/b/BurningVengeance.java @@ -1,4 +1,3 @@ - package mage.cards.b; import java.util.UUID; @@ -10,7 +9,6 @@ import mage.constants.CardType; import mage.constants.Zone; import mage.game.Game; import mage.game.events.GameEvent; -import mage.game.events.GameEvent.EventType; import mage.target.common.TargetAnyTarget; /** @@ -38,12 +36,10 @@ public final class BurningVengeance extends CardImpl { class BurningVengeanceOnCastAbility extends TriggeredAbilityImpl { - private static final String abilityText = "Whenever you cast a spell from your graveyard, {this} deals 2 damage to any target"; - BurningVengeanceOnCastAbility() { super(Zone.BATTLEFIELD, new DamageTargetEffect(2), false); - TargetAnyTarget target = new TargetAnyTarget(); - this.addTarget(target); + this.addTarget(new TargetAnyTarget()); + setTriggerPhrase("Whenever you cast a spell from your graveyard, "); } private BurningVengeanceOnCastAbility(final BurningVengeanceOnCastAbility ability) { @@ -65,8 +61,4 @@ class BurningVengeanceOnCastAbility extends TriggeredAbilityImpl { return new BurningVengeanceOnCastAbility(this); } - @Override - public String getRule() { - return abilityText; - } } diff --git a/Mage.Sets/src/mage/cards/c/Castle.java b/Mage.Sets/src/mage/cards/c/Castle.java index 33b3cd45ff2..bbc584f70a8 100644 --- a/Mage.Sets/src/mage/cards/c/Castle.java +++ b/Mage.Sets/src/mage/cards/c/Castle.java @@ -1,29 +1,33 @@ - package mage.cards.c; -import java.util.UUID; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.common.continuous.BoostControlledEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; -import mage.constants.Zone; -import mage.filter.common.FilterUntappedCreature; +import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.permanent.TappedPredicate; + +import java.util.UUID; /** * * @author KholdFuzion - */ public final class Castle extends CardImpl { + private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("untapped creatures"); + static { + filter.add(TappedPredicate.UNTAPPED); + } + public Castle(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{W}"); // Untapped creatures you control get +0/+2. - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostControlledEffect(0, 2, Duration.WhileOnBattlefield, new FilterUntappedCreature()))); + this.addAbility(new SimpleStaticAbility(new BoostControlledEffect(0, 2, Duration.WhileOnBattlefield, filter))); } private Castle(final Castle card) { diff --git a/Mage.Sets/src/mage/cards/c/ChamberOfManipulation.java b/Mage.Sets/src/mage/cards/c/ChamberOfManipulation.java index 8cb63f4a8f6..6bb422cba54 100644 --- a/Mage.Sets/src/mage/cards/c/ChamberOfManipulation.java +++ b/Mage.Sets/src/mage/cards/c/ChamberOfManipulation.java @@ -42,7 +42,7 @@ public final class ChamberOfManipulation extends CardImpl { controlAbility.addTarget(new TargetCreaturePermanent()); controlAbility.addCost(new DiscardTargetCost(new TargetCardInHand())); this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(controlAbility, AttachmentType.AURA, - Duration.WhileOnBattlefield, "Enchanted land has \"{t}, Discard a card: Gain control of target creature until end of turn.\""))); + Duration.WhileOnBattlefield, "Enchanted land has \"{T}, Discard a card: Gain control of target creature until end of turn.\""))); } private ChamberOfManipulation(final ChamberOfManipulation card) { diff --git a/Mage.Sets/src/mage/cards/c/CinderElemental.java b/Mage.Sets/src/mage/cards/c/CinderElemental.java index ca6e6a7ccff..19aea72d13c 100644 --- a/Mage.Sets/src/mage/cards/c/CinderElemental.java +++ b/Mage.Sets/src/mage/cards/c/CinderElemental.java @@ -31,7 +31,7 @@ public final class CinderElemental extends CardImpl { this.toughness = new MageInt(2); // {X}{R}, {tap}, Sacrifice Cinder Elemental: Cinder Elemental deals X damage to any target. - Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(ManacostVariableValue.REGULAR), new ManaCostsImpl<>("{X}{R}")); + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(ManacostVariableValue.REGULAR, "it"), new ManaCostsImpl<>("{X}{R}")); ability.addCost(new TapSourceCost()); ability.addCost(new SacrificeSourceCost()); ability.addTarget(new TargetAnyTarget()); diff --git a/Mage.Sets/src/mage/cards/c/ClaimFame.java b/Mage.Sets/src/mage/cards/c/ClaimFame.java index fcd9a4c36aa..86f4b77ab63 100644 --- a/Mage.Sets/src/mage/cards/c/ClaimFame.java +++ b/Mage.Sets/src/mage/cards/c/ClaimFame.java @@ -43,7 +43,8 @@ public final class ClaimFame extends SplitCard { // Aftermath getRightHalfCard().addAbility(new AftermathAbility().setRuleAtTheTop(true)); // Target creature gets +2/+0 and gains haste until end of turn. - getRightHalfCard().getSpellAbility().addEffect(new BoostTargetEffect(2, 0, Duration.EndOfTurn)); + getRightHalfCard().getSpellAbility().addEffect(new BoostTargetEffect(2, 0, Duration.EndOfTurn) + .setText("target creature gets +2/+0")); getRightHalfCard().getSpellAbility().addEffect(new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.EndOfTurn) .setText("and gains haste until end of turn")); getRightHalfCard().getSpellAbility().addTarget(new TargetCreaturePermanent()); diff --git a/Mage.Sets/src/mage/cards/c/CoercivePortal.java b/Mage.Sets/src/mage/cards/c/CoercivePortal.java index 6f974f82fdd..bb6b7808401 100644 --- a/Mage.Sets/src/mage/cards/c/CoercivePortal.java +++ b/Mage.Sets/src/mage/cards/c/CoercivePortal.java @@ -32,7 +32,7 @@ public final class CoercivePortal extends CardImpl { false, false, "Will of the council — " + "At the beginning of your upkeep, starting with you, each player votes for carnage or homage. " + "If carnage gets more votes, sacrifice {this} and destroy all nonland permanents. " + - "If homage gets more votes or the vote is tied, draw a card" + "If homage gets more votes or the vote is tied, draw a card." )); } diff --git a/Mage.Sets/src/mage/cards/c/ConsecrateLand.java b/Mage.Sets/src/mage/cards/c/ConsecrateLand.java index afe3a4833cd..873af3d5d45 100644 --- a/Mage.Sets/src/mage/cards/c/ConsecrateLand.java +++ b/Mage.Sets/src/mage/cards/c/ConsecrateLand.java @@ -14,7 +14,6 @@ import mage.cards.CardSetInfo; import mage.constants.*; import mage.game.Game; import mage.game.events.GameEvent; -import mage.game.events.GameEvent.EventType; import mage.game.permanent.Permanent; import mage.target.TargetPermanent; import mage.target.common.TargetLandPermanent; @@ -38,7 +37,7 @@ public final class ConsecrateLand extends CardImpl { this.addAbility(ability); // Enchanted land is indestructible and can't be enchanted by other Auras. - Ability ability2 = new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(IndestructibleAbility.getInstance(), AttachmentType.AURA, Duration.WhileOnBattlefield, "Enchanted land is indestructible")); + Ability ability2 = new SimpleStaticAbility(new GainAbilityAttachedEffect(IndestructibleAbility.getInstance(), AttachmentType.AURA, Duration.WhileOnBattlefield, "Enchanted land has indestructible")); ability2.addEffect(new ConsecrateLandRuleEffect()); this.addAbility(ability2); } diff --git a/Mage.Sets/src/mage/cards/c/CracklingTriton.java b/Mage.Sets/src/mage/cards/c/CracklingTriton.java index 0f4fec2ab91..f329fa11fd4 100644 --- a/Mage.Sets/src/mage/cards/c/CracklingTriton.java +++ b/Mage.Sets/src/mage/cards/c/CracklingTriton.java @@ -30,7 +30,7 @@ public final class CracklingTriton extends CardImpl { this.toughness = new MageInt(3); // {2}{R}, Sacrifice Crackling Triton: Crackling Triton deals 2 damage to any target. - Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(2), new ManaCostsImpl<>("{2}{R}")); + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(2, "it"), new ManaCostsImpl<>("{2}{R}")); ability.addCost(new SacrificeSourceCost()); ability.addTarget(new TargetAnyTarget()); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/c/CurseOfOblivion.java b/Mage.Sets/src/mage/cards/c/CurseOfOblivion.java index cb3e9cb25e5..f66502b321c 100644 --- a/Mage.Sets/src/mage/cards/c/CurseOfOblivion.java +++ b/Mage.Sets/src/mage/cards/c/CurseOfOblivion.java @@ -32,7 +32,7 @@ public final class CurseOfOblivion extends CardImpl { // At the beginning of enchanted player's upkeep, that player exiles two cards from their graveyard. this.addAbility(new BeginningOfUpkeepTriggeredAbility(new ExileFromZoneTargetEffect( Zone.GRAVEYARD, StaticFilters.FILTER_CARD_CARDS, 2, false - ).setText("that player exiles two cards from their graveyard"), TargetController.ENCHANTED, false)); + ), TargetController.ENCHANTED, false)); } private CurseOfOblivion(final CurseOfOblivion card) { diff --git a/Mage.Sets/src/mage/cards/c/CurseOfVitality.java b/Mage.Sets/src/mage/cards/c/CurseOfVitality.java index f172e205f86..f54be276769 100644 --- a/Mage.Sets/src/mage/cards/c/CurseOfVitality.java +++ b/Mage.Sets/src/mage/cards/c/CurseOfVitality.java @@ -55,7 +55,7 @@ class CurseOfVitalityEffect extends OneShotEffect { CurseOfVitalityEffect() { super(Outcome.Benefit); - this.staticText = "gain 2 life. Each opponent attacking that player does the same."; + this.staticText = "you gain 2 life. Each opponent attacking that player does the same."; } private CurseOfVitalityEffect(final CurseOfVitalityEffect effect) { diff --git a/Mage.Sets/src/mage/cards/c/CyclopeanMummy.java b/Mage.Sets/src/mage/cards/c/CyclopeanMummy.java index 5ddbc1c9f17..a4333416a76 100644 --- a/Mage.Sets/src/mage/cards/c/CyclopeanMummy.java +++ b/Mage.Sets/src/mage/cards/c/CyclopeanMummy.java @@ -23,7 +23,7 @@ public final class CyclopeanMummy extends CardImpl { this.toughness = new MageInt(1); // When Cyclopean Mummy dies, exile it. - this.addAbility(new DiesSourceTriggeredAbility(new ExileSourceEffect())); + this.addAbility(new DiesSourceTriggeredAbility(new ExileSourceEffect().setText("exile it"))); } private CyclopeanMummy(final CyclopeanMummy card) { diff --git a/Mage.Sets/src/mage/cards/d/DecimatorWeb.java b/Mage.Sets/src/mage/cards/d/DecimatorWeb.java index 03dfb9ae0d3..9747d8f0a69 100644 --- a/Mage.Sets/src/mage/cards/d/DecimatorWeb.java +++ b/Mage.Sets/src/mage/cards/d/DecimatorWeb.java @@ -1,5 +1,3 @@ - - package mage.cards.d; import java.util.UUID; @@ -27,8 +25,9 @@ public final class DecimatorWeb extends CardImpl { super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}"); Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new LoseLifeTargetEffect(2), new ManaCostsImpl<>("{4}")); ability.addCost(new TapSourceCost()); - ability.addEffect(new AddCountersTargetEffect(CounterType.POISON.createInstance())); - ability.addEffect(new MillCardsTargetEffect(6)); + ability.addEffect(new AddCountersTargetEffect(CounterType.POISON.createInstance()) + .setText(", gets a poison counter")); + ability.addEffect(new MillCardsTargetEffect(6).setText(", then mills six cards")); ability.addTarget(new TargetOpponent()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/d/DelifsCube.java b/Mage.Sets/src/mage/cards/d/DelifsCube.java index 9732043d492..e13aeabddd6 100644 --- a/Mage.Sets/src/mage/cards/d/DelifsCube.java +++ b/Mage.Sets/src/mage/cards/d/DelifsCube.java @@ -14,11 +14,11 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; -import mage.constants.Outcome; import mage.counters.CounterType; import mage.game.Game; import mage.game.events.GameEvent; import mage.target.common.TargetControlledCreaturePermanent; +import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -41,7 +41,7 @@ public final class DelifsCube extends CardImpl { // {2}, Remove a cube counter from Delif's Cube: Regenerate target creature. ability = new SimpleActivatedAbility(new RegenerateTargetEffect(), new GenericManaCost(2)); ability.addCost(new RemoveCountersSourceCost(CounterType.CUBE.createInstance())); - ability.addTarget(new TargetControlledCreaturePermanent()); + ability.addTarget(new TargetCreaturePermanent()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/d/DevoutChaplain.java b/Mage.Sets/src/mage/cards/d/DevoutChaplain.java index 359f3de6ce5..bfe805f223b 100644 --- a/Mage.Sets/src/mage/cards/d/DevoutChaplain.java +++ b/Mage.Sets/src/mage/cards/d/DevoutChaplain.java @@ -1,4 +1,3 @@ - package mage.cards.d; import mage.MageInt; @@ -25,7 +24,7 @@ import java.util.UUID; * @author noxx */ public final class DevoutChaplain extends CardImpl { - private static final FilterControlledPermanent humanFilter = new FilterControlledPermanent("untapped Human you control"); + private static final FilterControlledPermanent humanFilter = new FilterControlledPermanent("untapped Humans you control"); static { humanFilter.add(TappedPredicate.UNTAPPED); diff --git a/Mage.Sets/src/mage/cards/d/DivebomberGriffin.java b/Mage.Sets/src/mage/cards/d/DivebomberGriffin.java index c440838a5ff..a277f231690 100644 --- a/Mage.Sets/src/mage/cards/d/DivebomberGriffin.java +++ b/Mage.Sets/src/mage/cards/d/DivebomberGriffin.java @@ -32,7 +32,7 @@ public final class DivebomberGriffin extends CardImpl { this.addAbility(FlyingAbility.getInstance()); // {tap}, Sacrifice Divebomber Griffin: Divebomber Griffin deals 3 damage to target attacking or blocking creature. - Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(3), new TapSourceCost()); + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(3, "it"), new TapSourceCost()); ability.addCost(new SacrificeSourceCost()); ability.addTarget(new TargetCreaturePermanent(new FilterAttackingOrBlockingCreature())); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/d/Doomfall.java b/Mage.Sets/src/mage/cards/d/Doomfall.java index d92f1f435e9..e622d96099b 100644 --- a/Mage.Sets/src/mage/cards/d/Doomfall.java +++ b/Mage.Sets/src/mage/cards/d/Doomfall.java @@ -56,7 +56,7 @@ class DoomfallEffect extends OneShotEffect { public DoomfallEffect() { super(Outcome.Exile); - this.staticText = "target player exiles a creature they control"; + this.staticText = "target opponent exiles a creature they control"; } private DoomfallEffect(final DoomfallEffect effect) { diff --git a/Mage.Sets/src/mage/cards/e/EarlOfSquirrel.java b/Mage.Sets/src/mage/cards/e/EarlOfSquirrel.java index c7ea9fe0d27..83600e44b11 100644 --- a/Mage.Sets/src/mage/cards/e/EarlOfSquirrel.java +++ b/Mage.Sets/src/mage/cards/e/EarlOfSquirrel.java @@ -23,7 +23,7 @@ import java.util.UUID; public final class EarlOfSquirrel extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Creature tokens you control"); - private static final FilterCreaturePermanent filter2 = new FilterCreaturePermanent("Squirrels you control"); + private static final FilterCreaturePermanent filter2 = new FilterCreaturePermanent("Squirrels"); static { filter.add(TokenPredicate.TRUE); diff --git a/Mage.Sets/src/mage/cards/e/EdricSpymasterOfTrest.java b/Mage.Sets/src/mage/cards/e/EdricSpymasterOfTrest.java index d1ef52f0390..168c82ae6cc 100644 --- a/Mage.Sets/src/mage/cards/e/EdricSpymasterOfTrest.java +++ b/Mage.Sets/src/mage/cards/e/EdricSpymasterOfTrest.java @@ -15,7 +15,6 @@ import mage.constants.Zone; import mage.game.Game; import mage.game.events.DamagedPlayerEvent; import mage.game.events.GameEvent; -import mage.game.events.GameEvent.EventType; import mage.target.targetpointer.FixedTarget; /** @@ -80,6 +79,6 @@ class EdricSpymasterOfTrestTriggeredAbility extends TriggeredAbilityImpl { @Override public String getRule() { - return "Whenever a creature deals combat damage to one of your opponents, its controller may draw a card"; + return "Whenever a creature deals combat damage to one of your opponents, its controller may draw a card."; } } diff --git a/Mage.Sets/src/mage/cards/e/EmmaraTandris.java b/Mage.Sets/src/mage/cards/e/EmmaraTandris.java index 75d864f0087..3fa1ea16729 100644 --- a/Mage.Sets/src/mage/cards/e/EmmaraTandris.java +++ b/Mage.Sets/src/mage/cards/e/EmmaraTandris.java @@ -6,7 +6,6 @@ import mage.abilities.effects.common.PreventAllDamageToAllEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.*; -import mage.filter.StaticFilters; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.permanent.TokenPredicate; @@ -34,7 +33,7 @@ public final class EmmaraTandris extends CardImpl { this.toughness = new MageInt(7); // Prevent all damage that would be dealt to creature tokens you control. - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new PreventAllDamageToAllEffect(Duration.WhileOnBattlefield, StaticFilters.FILTER_CREATURE_TOKENS))); + this.addAbility(new SimpleStaticAbility(new PreventAllDamageToAllEffect(Duration.WhileOnBattlefield, filter))); } private EmmaraTandris(final EmmaraTandris card) { diff --git a/Mage.Sets/src/mage/cards/e/EnterTheGodEternals.java b/Mage.Sets/src/mage/cards/e/EnterTheGodEternals.java index 05acd8c90a2..582e587c496 100644 --- a/Mage.Sets/src/mage/cards/e/EnterTheGodEternals.java +++ b/Mage.Sets/src/mage/cards/e/EnterTheGodEternals.java @@ -45,7 +45,7 @@ class EnterTheGodEternalsEffect extends OneShotEffect { EnterTheGodEternalsEffect() { super(Outcome.Benefit); staticText = "{this} deals 4 damage to target creature and you gain life equal to the damage dealt this way. " - + "Target player mills four cards. Amass 4."; + + "Target player mills four cards. Amass Zombies 4."; } private EnterTheGodEternalsEffect(final EnterTheGodEternalsEffect effect) { diff --git a/Mage.Sets/src/mage/cards/f/FaerieNoble.java b/Mage.Sets/src/mage/cards/f/FaerieNoble.java index 17f3c7263b4..8a7074d25db 100644 --- a/Mage.Sets/src/mage/cards/f/FaerieNoble.java +++ b/Mage.Sets/src/mage/cards/f/FaerieNoble.java @@ -40,7 +40,7 @@ public final class FaerieNoble extends CardImpl { // Other Faerie creatures you control get +0/+1. this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostControlledEffect(0, 1, Duration.WhileOnBattlefield, filter, true))); // {tap}: Other Faerie creatures you control get +1/+0 until end of turn. - Effect effect = new BoostControlledEffect(1, 0, Duration.WhileOnBattlefield, filter, true); + Effect effect = new BoostControlledEffect(1, 0, Duration.EndOfTurn, filter, true); Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, effect, new TapSourceCost()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/f/FatalMutation.java b/Mage.Sets/src/mage/cards/f/FatalMutation.java index 92add95162f..989229771bc 100644 --- a/Mage.Sets/src/mage/cards/f/FatalMutation.java +++ b/Mage.Sets/src/mage/cards/f/FatalMutation.java @@ -1,4 +1,3 @@ - package mage.cards.f; import java.util.UUID; @@ -54,7 +53,7 @@ class FatalMutationAbility extends TriggeredAbilityImpl { public FatalMutationAbility(Effect effect) { super(Zone.BATTLEFIELD, effect, false); - setTriggerPhrase("Whenever enchanted creature is turned face up, "); + setTriggerPhrase("When enchanted creature is turned face up, "); } private FatalMutationAbility(final FatalMutationAbility ability) { @@ -81,4 +80,3 @@ class FatalMutationAbility extends TriggeredAbilityImpl { } } - diff --git a/Mage.Sets/src/mage/cards/f/FavorableWinds.java b/Mage.Sets/src/mage/cards/f/FavorableWinds.java index 74a1074444d..552efaffaea 100644 --- a/Mage.Sets/src/mage/cards/f/FavorableWinds.java +++ b/Mage.Sets/src/mage/cards/f/FavorableWinds.java @@ -1,25 +1,24 @@ - package mage.cards.f; -import java.util.UUID; import mage.abilities.common.SimpleStaticAbility; -import mage.abilities.effects.common.continuous.BoostControlledEffect; +import mage.abilities.effects.common.continuous.BoostAllEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; -import mage.constants.Zone; -import mage.filter.common.FilterCreaturePermanent; +import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.predicate.mageobject.AbilityPredicate; +import java.util.UUID; + /** * * @author noxx */ public final class FavorableWinds extends CardImpl { - private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Creatures you control with flying"); + private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("creatures you control with flying"); static { filter.add(new AbilityPredicate(FlyingAbility.class)); @@ -29,7 +28,7 @@ public final class FavorableWinds extends CardImpl { super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{U}"); // Creatures you control with flying get +1/+1. - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostControlledEffect(1, 1, Duration.WhileOnBattlefield, filter, false))); + this.addAbility(new SimpleStaticAbility(new BoostAllEffect(1, 1, Duration.WhileOnBattlefield, filter, false))); } private FavorableWinds(final FavorableWinds card) { diff --git a/Mage.Sets/src/mage/cards/f/FiveAlarmFire.java b/Mage.Sets/src/mage/cards/f/FiveAlarmFire.java index d6a31abbb4b..4e2113188fe 100644 --- a/Mage.Sets/src/mage/cards/f/FiveAlarmFire.java +++ b/Mage.Sets/src/mage/cards/f/FiveAlarmFire.java @@ -37,7 +37,7 @@ public final class FiveAlarmFire extends CardImpl { //Whenever a creature you control deals combat damage, put a blaze counter on Five-Alarm Fire. this.addAbility(new FiveAlarmFireTriggeredAbility()); //Remove five blaze counters from Five-Alarm Fire: Five-Alarm Fire deals 5 damage to any target. - Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(5), new RemoveCountersSourceCost(CounterType.BLAZE.createInstance(5))); + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(5, "it"), new RemoveCountersSourceCost(CounterType.BLAZE.createInstance(5))); ability.addTarget(new TargetAnyTarget()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/f/FleetfeatherSandals.java b/Mage.Sets/src/mage/cards/f/FleetfeatherSandals.java index bf33c517010..145fbfd8ad8 100644 --- a/Mage.Sets/src/mage/cards/f/FleetfeatherSandals.java +++ b/Mage.Sets/src/mage/cards/f/FleetfeatherSandals.java @@ -1,4 +1,3 @@ - package mage.cards.f; import java.util.UUID; @@ -24,9 +23,8 @@ public final class FleetfeatherSandals extends CardImpl { this.subtype.add(SubType.EQUIPMENT); // Equipped creature has flying and haste. - Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, - new GainAbilityAttachedEffect(FlyingAbility.getInstance(), AttachmentType.AURA, Duration.WhileInGraveyard)); - ability.addEffect(new GainAbilityAttachedEffect(HasteAbility.getInstance(), AttachmentType.AURA, Duration.WhileInGraveyard)); + Ability ability = new SimpleStaticAbility(new GainAbilityAttachedEffect(FlyingAbility.getInstance(), AttachmentType.EQUIPMENT)); + ability.addEffect(new GainAbilityAttachedEffect(HasteAbility.getInstance(), AttachmentType.EQUIPMENT).setText("and haste")); this.addAbility(ability); // Equip {2} this.addAbility(new EquipAbility(Outcome.AddAbility, new GenericManaCost(2))); diff --git a/Mage.Sets/src/mage/cards/f/FlitterstepEidolon.java b/Mage.Sets/src/mage/cards/f/FlitterstepEidolon.java index 9af08dab707..0556b056104 100644 --- a/Mage.Sets/src/mage/cards/f/FlitterstepEidolon.java +++ b/Mage.Sets/src/mage/cards/f/FlitterstepEidolon.java @@ -36,7 +36,7 @@ public final class FlitterstepEidolon extends CardImpl { this.addAbility(new CantBeBlockedSourceAbility()); // Enchanted creature gets +1/+1 and can't be blocked. Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(1,1, Duration.WhileOnBattlefield)); - ability.addEffect(new CantBeBlockedAttachedEffect(AttachmentType.AURA)); + ability.addEffect(new CantBeBlockedAttachedEffect(AttachmentType.AURA).setText("and can't be blocked")); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/f/FontOfIre.java b/Mage.Sets/src/mage/cards/f/FontOfIre.java index 8a012a878fe..861dbfc2df3 100644 --- a/Mage.Sets/src/mage/cards/f/FontOfIre.java +++ b/Mage.Sets/src/mage/cards/f/FontOfIre.java @@ -23,7 +23,7 @@ public final class FontOfIre extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{R}"); // {3}{R}, Sacrifice Font of Ire: Font of Ire deals 5 damage to target player. - Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(5), new ManaCostsImpl<>("{3}{R}")); + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(5, "it"), new ManaCostsImpl<>("{3}{R}")); ability.addCost(new SacrificeSourceCost()); ability.addTarget(new TargetPlayerOrPlaneswalker()); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/f/FromUnderTheFloorboards.java b/Mage.Sets/src/mage/cards/f/FromUnderTheFloorboards.java index 27ab9e75b2d..014a7754548 100644 --- a/Mage.Sets/src/mage/cards/f/FromUnderTheFloorboards.java +++ b/Mage.Sets/src/mage/cards/f/FromUnderTheFloorboards.java @@ -34,9 +34,9 @@ public final class FromUnderTheFloorboards extends CardImpl { // If From Under the Floorboards's madness cost was paid, instead create X of those tokens tapped and you gain X life. DynamicValue xValue = new FromUnderTheFloorboardsManacostVariableValue(); Effect effect = new CreateTokenEffect(new ZombieToken(), xValue, true, false); - effect.setText("Create three 2/2 black Zombie creature tokens tapped and you gain 3 life. If {this} madness cost was paid, instead create X of those tokens tapped and you gain X life"); + effect.setText("Create three tapped 2/2 black Zombie creature tokens and you gain 3 life. If this spell's madness cost was paid, instead create X of those tokens"); this.getSpellAbility().addEffect(effect); - this.getSpellAbility().addEffect(new GainLifeEffect(xValue)); + this.getSpellAbility().addEffect(new GainLifeEffect(xValue).concatBy("and")); } private FromUnderTheFloorboards(final FromUnderTheFloorboards card) { diff --git a/Mage.Sets/src/mage/cards/g/GerrardsBattleCry.java b/Mage.Sets/src/mage/cards/g/GerrardsBattleCry.java index 9621f81124a..930acdf5fed 100644 --- a/Mage.Sets/src/mage/cards/g/GerrardsBattleCry.java +++ b/Mage.Sets/src/mage/cards/g/GerrardsBattleCry.java @@ -1,4 +1,3 @@ - package mage.cards.g; import java.util.UUID; @@ -21,7 +20,9 @@ public final class GerrardsBattleCry extends CardImpl { public GerrardsBattleCry(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{W}"); - this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostControlledEffect(1, 1, Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURE, false), new ManaCostsImpl<>("{2}{W}"))); + this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, + new BoostControlledEffect(1, 1, Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURES, false), + new ManaCostsImpl<>("{2}{W}"))); } private GerrardsBattleCry(final GerrardsBattleCry card) { diff --git a/Mage.Sets/src/mage/cards/g/GiftOfDoom.java b/Mage.Sets/src/mage/cards/g/GiftOfDoom.java index 3452516fb4c..27457bf2633 100644 --- a/Mage.Sets/src/mage/cards/g/GiftOfDoom.java +++ b/Mage.Sets/src/mage/cards/g/GiftOfDoom.java @@ -24,7 +24,6 @@ import mage.players.Player; import mage.target.TargetPermanent; import mage.target.common.TargetControlledPermanent; import mage.target.common.TargetCreaturePermanent; -import mage.target.targetadjustment.TargetAdjuster; import java.util.UUID; @@ -51,7 +50,7 @@ public final class GiftOfDoom extends CardImpl { )); ability2.addEffect(new GainAbilityAttachedEffect( IndestructibleAbility.getInstance(), AttachmentType.AURA - )); + ).setText("and indestructible")); this.addAbility(ability2); // Morph—Sacrifice another creature. diff --git a/Mage.Sets/src/mage/cards/g/GleamOfAuthority.java b/Mage.Sets/src/mage/cards/g/GleamOfAuthority.java index 96265eff9e0..d73aab1c354 100644 --- a/Mage.Sets/src/mage/cards/g/GleamOfAuthority.java +++ b/Mage.Sets/src/mage/cards/g/GleamOfAuthority.java @@ -1,4 +1,3 @@ - package mage.cards.g; import mage.abilities.Ability; @@ -18,7 +17,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.*; import mage.counters.CounterType; -import mage.filter.common.FilterCreaturePermanent; +import mage.filter.StaticFilters; import mage.game.Game; import mage.game.permanent.Permanent; import mage.target.TargetPermanent; @@ -44,8 +43,7 @@ public final class GleamOfAuthority extends CardImpl { this.addAbility(ability); // Enchanted creature gets +1/+1 for each +1/+1 counter on other creatures you control - DynamicValue amount = new CountersOnControlledCount(); - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(amount, amount, Duration.WhileOnBattlefield) + this.addAbility(new SimpleStaticAbility(new BoostEnchantedEffect(CountersOnControlledCount.instance, CountersOnControlledCount.instance) .setText("Enchanted creature gets +1/+1 for each +1/+1 counter on other creatures you control.") )); @@ -53,7 +51,7 @@ public final class GleamOfAuthority extends CardImpl { ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(VigilanceAbility.getInstance(), AttachmentType.AURA)); Ability gainedAbility = new SimpleActivatedAbility(Zone.BATTLEFIELD, new BolsterEffect(1), new ManaCostsImpl<>("{W}")); gainedAbility.addCost(new TapSourceCost()); - ability.addEffect(new GainAbilityAttachedEffect(gainedAbility, AttachmentType.AURA).setText("and \"{W}, {T}: Bloster 1.\"")); + ability.addEffect(new GainAbilityAttachedEffect(gainedAbility, AttachmentType.AURA).setText("and \"{W}, {T}: Bolster 1.\"")); this.addAbility(ability); } @@ -67,22 +65,14 @@ public final class GleamOfAuthority extends CardImpl { } } -class CountersOnControlledCount implements DynamicValue { - - static FilterCreaturePermanent filter = new FilterCreaturePermanent(); - - CountersOnControlledCount() { - } - - private CountersOnControlledCount(final CountersOnControlledCount dynamicValue) { - super(); - } +enum CountersOnControlledCount implements DynamicValue { + instance; @Override public int calculate(Game game, Ability sourceAbility, Effect effect) { int count = 0; Permanent enchantment = game.getPermanent(sourceAbility.getSourceId()); - for (Permanent permanent : game.getState().getBattlefield().getAllActivePermanents(filter, sourceAbility.getControllerId(), game)) { + for (Permanent permanent : game.getBattlefield().getAllActivePermanents(StaticFilters.FILTER_PERMANENT_CREATURE, sourceAbility.getControllerId(), game)) { if (!permanent.getId().equals(enchantment.getAttachedTo())) { count += permanent.getCounters(game).getCount(CounterType.P1P1); } @@ -92,7 +82,7 @@ class CountersOnControlledCount implements DynamicValue { @Override public CountersOnControlledCount copy() { - return new CountersOnControlledCount(this); + return instance; } @Override diff --git a/Mage.Sets/src/mage/cards/g/Goblinslide.java b/Mage.Sets/src/mage/cards/g/Goblinslide.java index 0d08e8cd1f5..e0e7f1e1fd3 100644 --- a/Mage.Sets/src/mage/cards/g/Goblinslide.java +++ b/Mage.Sets/src/mage/cards/g/Goblinslide.java @@ -1,4 +1,3 @@ - package mage.cards.g; import java.util.UUID; @@ -25,7 +24,7 @@ public final class Goblinslide extends CardImpl { this.addAbility(new SpellCastControllerTriggeredAbility(new DoIfCostPaid( new CreateTokenEffect(new GoblinToken(true)), new GenericManaCost(1)), - StaticFilters.FILTER_SPELL_NON_CREATURE, + StaticFilters.FILTER_SPELL_A_NON_CREATURE, false )); } diff --git a/Mage.Sets/src/mage/cards/g/GodPharaohsFaithful.java b/Mage.Sets/src/mage/cards/g/GodPharaohsFaithful.java index 4cbc21ed9c3..a1e8ea0622e 100644 --- a/Mage.Sets/src/mage/cards/g/GodPharaohsFaithful.java +++ b/Mage.Sets/src/mage/cards/g/GodPharaohsFaithful.java @@ -20,7 +20,7 @@ import mage.filter.predicate.mageobject.ColorPredicate; */ public final class GodPharaohsFaithful extends CardImpl { - private static final FilterSpell filter = new FilterSpell("a blue, black or red spell"); + private static final FilterSpell filter = new FilterSpell("a blue, black, or red spell"); static { filter.add(Predicates.or(new ColorPredicate(ObjectColor.BLUE), new ColorPredicate(ObjectColor.BLACK), new ColorPredicate(ObjectColor.RED))); } diff --git a/Mage.Sets/src/mage/cards/g/GroundPounder.java b/Mage.Sets/src/mage/cards/g/GroundPounder.java index 4b6983a4e0a..9e105a63ecc 100644 --- a/Mage.Sets/src/mage/cards/g/GroundPounder.java +++ b/Mage.Sets/src/mage/cards/g/GroundPounder.java @@ -109,6 +109,6 @@ class GroundPounderTriggeredAbility extends TriggeredAbilityImpl { @Override public String getRule() { - return "Whenever you roll a 5 or higher on a die, {this} gains trample until end of turn"; + return "Whenever you roll a 5 or higher on a die, {this} gains trample until end of turn."; } } diff --git a/Mage.Sets/src/mage/cards/g/GruulWarChant.java b/Mage.Sets/src/mage/cards/g/GruulWarChant.java index b5f645a99b7..c63618e8235 100644 --- a/Mage.Sets/src/mage/cards/g/GruulWarChant.java +++ b/Mage.Sets/src/mage/cards/g/GruulWarChant.java @@ -1,4 +1,3 @@ - package mage.cards.g; import java.util.UUID; @@ -12,7 +11,6 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; import mage.constants.TargetController; -import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.permanent.AttackingPredicate; @@ -33,10 +31,9 @@ public final class GruulWarChant extends CardImpl { // Attacking creatures you control get +1/+0 and have menace. (They can't be blocked except by two or more creatures.) - Ability ability = new SimpleStaticAbility( - Zone.BATTLEFIELD, - new GainAbilityAllEffect(new MenaceAbility(false), Duration.WhileOnBattlefield, filter)); - ability.addEffect(new BoostAllEffect(1,0, Duration.WhileOnBattlefield, filter, false)); + Ability ability = new SimpleStaticAbility(new BoostAllEffect(1,0, Duration.WhileOnBattlefield, filter, false)); + ability.addEffect(new GainAbilityAllEffect(new MenaceAbility(false), Duration.WhileOnBattlefield, filter) + .setText("and have menace")); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/h/HandOfThePraetors.java b/Mage.Sets/src/mage/cards/h/HandOfThePraetors.java index 53c5b8259a8..97da98912a5 100644 --- a/Mage.Sets/src/mage/cards/h/HandOfThePraetors.java +++ b/Mage.Sets/src/mage/cards/h/HandOfThePraetors.java @@ -1,12 +1,10 @@ - - package mage.cards.h; import java.util.UUID; import mage.MageInt; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SpellCastControllerTriggeredAbility; -import mage.abilities.effects.common.continuous.BoostControlledEffect; +import mage.abilities.effects.common.continuous.BoostAllEffect; import mage.abilities.effects.common.counter.AddPoisonCounterTargetEffect; import mage.abilities.keyword.InfectAbility; import mage.cards.CardImpl; @@ -14,9 +12,8 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; import mage.constants.Duration; -import mage.constants.Zone; import mage.filter.FilterSpell; -import mage.filter.common.FilterCreaturePermanent; +import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.predicate.mageobject.AbilityPredicate; import mage.target.TargetPlayer; @@ -26,7 +23,7 @@ import mage.target.TargetPlayer; */ public final class HandOfThePraetors extends CardImpl { - private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures with infect"); + private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("creatures you control with infect"); private static final FilterSpell filterSpell = new FilterSpell("a creature spell with infect"); static { @@ -44,7 +41,7 @@ public final class HandOfThePraetors extends CardImpl { this.toughness = new MageInt(2); this.addAbility(InfectAbility.getInstance()); - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostControlledEffect(1, 1, Duration.WhileOnBattlefield, filter, true))); + this.addAbility(new SimpleStaticAbility(new BoostAllEffect(1, 1, Duration.WhileOnBattlefield, filter, true))); SpellCastControllerTriggeredAbility ability = new SpellCastControllerTriggeredAbility(new AddPoisonCounterTargetEffect(1), filterSpell, false); ability.addTarget(new TargetPlayer()); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/h/HarrowingJourney.java b/Mage.Sets/src/mage/cards/h/HarrowingJourney.java index 19ad209ea35..1775707ee30 100644 --- a/Mage.Sets/src/mage/cards/h/HarrowingJourney.java +++ b/Mage.Sets/src/mage/cards/h/HarrowingJourney.java @@ -1,4 +1,3 @@ - package mage.cards.h; import java.util.UUID; @@ -18,10 +17,9 @@ public final class HarrowingJourney extends CardImpl { public HarrowingJourney(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{B}"); - // Target player draws three cards and loses 3 life. this.getSpellAbility().addEffect(new DrawCardTargetEffect(3)); - this.getSpellAbility().addEffect(new LoseLifeTargetEffect(3)); + this.getSpellAbility().addEffect(new LoseLifeTargetEffect(3).setText("and loses 3 life")); this.getSpellAbility().addTarget(new TargetPlayer()); } diff --git a/Mage.Sets/src/mage/cards/h/HiredTorturer.java b/Mage.Sets/src/mage/cards/h/HiredTorturer.java index 6af3ec9c734..c0b3477d705 100644 --- a/Mage.Sets/src/mage/cards/h/HiredTorturer.java +++ b/Mage.Sets/src/mage/cards/h/HiredTorturer.java @@ -1,5 +1,3 @@ - - package mage.cards.h; import java.util.UUID; @@ -66,7 +64,7 @@ class HiredTorturerEffect extends OneShotEffect { public HiredTorturerEffect() { super(Outcome.Detriment); - staticText = "and reveals a card at random from their hand"; + staticText = ", then reveals a card at random from their hand"; } private HiredTorturerEffect(final HiredTorturerEffect effect) { diff --git a/Mage.Sets/src/mage/cards/h/HorrifyingRevelation.java b/Mage.Sets/src/mage/cards/h/HorrifyingRevelation.java index 622186b3499..ddc1c888895 100644 --- a/Mage.Sets/src/mage/cards/h/HorrifyingRevelation.java +++ b/Mage.Sets/src/mage/cards/h/HorrifyingRevelation.java @@ -1,4 +1,3 @@ - package mage.cards.h; import java.util.UUID; @@ -18,10 +17,9 @@ public final class HorrifyingRevelation extends CardImpl { public HorrifyingRevelation(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{B}"); - this.getSpellAbility().addTarget(new TargetPlayer()); this.getSpellAbility().addEffect(new DiscardTargetEffect(1)); - this.getSpellAbility().addEffect(new MillCardsTargetEffect(1)); + this.getSpellAbility().addEffect(new MillCardsTargetEffect(1).setText(", then mills a card")); } private HorrifyingRevelation(final HorrifyingRevelation card) { diff --git a/Mage.Sets/src/mage/cards/i/IcatianJavelineers.java b/Mage.Sets/src/mage/cards/i/IcatianJavelineers.java index cf22eeb631a..602052ccff7 100644 --- a/Mage.Sets/src/mage/cards/i/IcatianJavelineers.java +++ b/Mage.Sets/src/mage/cards/i/IcatianJavelineers.java @@ -35,7 +35,7 @@ public final class IcatianJavelineers extends CardImpl { this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.JAVELIN.createInstance()), "with a javelin counter on it")); // {tap}, Remove a javelin counter from Icatian Javelineers: Icatian Javelineers deals 1 damage to any target. - Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(1), new TapSourceCost()); + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(1, "it"), new TapSourceCost()); ability.addCost(new RemoveCountersSourceCost(CounterType.JAVELIN.createInstance())); ability.addTarget(new TargetAnyTarget()); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/i/Insight.java b/Mage.Sets/src/mage/cards/i/Insight.java index f0fc8a179d7..cdb3e0286a9 100644 --- a/Mage.Sets/src/mage/cards/i/Insight.java +++ b/Mage.Sets/src/mage/cards/i/Insight.java @@ -17,7 +17,7 @@ import mage.filter.predicate.mageobject.ColorPredicate; */ public final class Insight extends CardImpl { - private static final FilterSpell filter = new FilterSpell("green spell"); + private static final FilterSpell filter = new FilterSpell("a green spell"); static { filter.add(new ColorPredicate(ObjectColor.GREEN)); @@ -28,7 +28,7 @@ public final class Insight extends CardImpl { // Whenever an opponent casts a green spell, you draw a card. - this.addAbility(new SpellCastOpponentTriggeredAbility(new DrawCardSourceControllerEffect(1), filter, false)); + this.addAbility(new SpellCastOpponentTriggeredAbility(new DrawCardSourceControllerEffect(1, "you"), filter, false)); } private Insight(final Insight card) { diff --git a/Mage.Sets/src/mage/cards/i/IronHeartChimera.java b/Mage.Sets/src/mage/cards/i/IronHeartChimera.java index 52b969aab40..d69696056d1 100644 --- a/Mage.Sets/src/mage/cards/i/IronHeartChimera.java +++ b/Mage.Sets/src/mage/cards/i/IronHeartChimera.java @@ -1,4 +1,3 @@ - package mage.cards.i; import mage.MageInt; @@ -26,7 +25,7 @@ import java.util.UUID; */ public final class IronHeartChimera extends CardImpl { - private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Chimera creature you control"); + private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Chimera creature"); static { filter.add(SubType.CHIMERA.getPredicate()); @@ -44,7 +43,8 @@ public final class IronHeartChimera extends CardImpl { // Sacrifice Iron-Heart Chimera: Put a +2/+2 counter on target Chimera creature. It gains vigilance. Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new AddCountersTargetEffect(CounterType.P2P2.createInstance()), new SacrificeSourceCost()); - ability.addEffect(new GainAbilityTargetEffect(VigilanceAbility.getInstance(), Duration.WhileOnBattlefield)); + ability.addEffect(new GainAbilityTargetEffect(VigilanceAbility.getInstance(), Duration.WhileOnBattlefield) + .setText("It gains vigilance. (This effect lasts indefinitely.)")); ability.addTarget(new TargetCreaturePermanent(filter)); addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/i/IronMaiden.java b/Mage.Sets/src/mage/cards/i/IronMaiden.java index cae9107d065..db3611c4aa7 100644 --- a/Mage.Sets/src/mage/cards/i/IronMaiden.java +++ b/Mage.Sets/src/mage/cards/i/IronMaiden.java @@ -1,7 +1,6 @@ package mage.cards.i; import mage.abilities.Ability; -import mage.abilities.Mode; import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; import mage.abilities.effects.OneShotEffect; import mage.cards.CardImpl; @@ -42,11 +41,11 @@ class IronMaidenEffect extends OneShotEffect { private IronMaidenEffect(final IronMaidenEffect effect) { super(effect); - this.staticText = "Iron Maiden deals X damage to that player, where X is the number of cards in their hand minus 4"; } public IronMaidenEffect() { super(Outcome.Damage); + this.staticText = "{this} deals X damage to that player, where X is the number of cards in their hand minus 4"; } @Override diff --git a/Mage.Sets/src/mage/cards/j/JadeBearer.java b/Mage.Sets/src/mage/cards/j/JadeBearer.java index e2dc0843194..98c977b51a2 100644 --- a/Mage.Sets/src/mage/cards/j/JadeBearer.java +++ b/Mage.Sets/src/mage/cards/j/JadeBearer.java @@ -1,4 +1,3 @@ - package mage.cards.j; import java.util.UUID; @@ -10,9 +9,9 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.*; import mage.counters.CounterType; -import mage.filter.common.FilterCreaturePermanent; +import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.predicate.mageobject.AnotherPredicate; -import mage.target.common.TargetCreaturePermanent; +import mage.target.TargetPermanent; /** * @@ -20,12 +19,10 @@ import mage.target.common.TargetCreaturePermanent; */ public final class JadeBearer extends CardImpl { - private static final FilterCreaturePermanent filterYourAnotherMerfolk = new FilterCreaturePermanent(); + private static final FilterControlledCreaturePermanent filter = + new FilterControlledCreaturePermanent(SubType.MERFOLK, "another target Merfolk you control"); static { - filterYourAnotherMerfolk.add(AnotherPredicate.instance); - filterYourAnotherMerfolk.add(SubType.MERFOLK.getPredicate()); - filterYourAnotherMerfolk.add(TargetController.YOU.getControllerPredicate()); - filterYourAnotherMerfolk.setMessage("another " + SubType.MERFOLK.toString() + " you control"); + filter.add(AnotherPredicate.instance); } public JadeBearer(UUID ownerId, CardSetInfo setInfo) { @@ -38,7 +35,7 @@ public final class JadeBearer extends CardImpl { // When Jade Bearer enters the battlefield, put a +1/+1 counter on another target Merfolk you control. Ability ability = new EntersBattlefieldTriggeredAbility(new AddCountersTargetEffect(CounterType.P1P1.createInstance()), false); - ability.addTarget(new TargetCreaturePermanent(filterYourAnotherMerfolk)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } @@ -50,4 +47,4 @@ public final class JadeBearer extends CardImpl { public JadeBearer copy() { return new JadeBearer(this); } -} \ No newline at end of file +} diff --git a/Mage.Sets/src/mage/cards/j/JujuBubble.java b/Mage.Sets/src/mage/cards/j/JujuBubble.java index b3791e4d247..e15b58d9727 100644 --- a/Mage.Sets/src/mage/cards/j/JujuBubble.java +++ b/Mage.Sets/src/mage/cards/j/JujuBubble.java @@ -28,7 +28,7 @@ public final class JujuBubble extends CardImpl { // When you play a card, sacrifice Juju Bubble. this.addAbility(new PlayCardTriggeredAbility(TargetController.YOU, Zone.BATTLEFIELD, - new SacrificeSourceEffect(), false)); + new SacrificeSourceEffect(), false).setTriggerPhrase("When you play a card, ")); // {2}: You gain 1 life. this.addAbility(new SimpleActivatedAbility(new GainLifeEffect(1), new GenericManaCost(2))); diff --git a/Mage.Sets/src/mage/cards/k/KarplusanHound.java b/Mage.Sets/src/mage/cards/k/KarplusanHound.java index 0594dc97da8..cfd0c78ea9d 100644 --- a/Mage.Sets/src/mage/cards/k/KarplusanHound.java +++ b/Mage.Sets/src/mage/cards/k/KarplusanHound.java @@ -1,4 +1,3 @@ - package mage.cards.k; import java.util.UUID; @@ -33,7 +32,7 @@ public final class KarplusanHound extends CardImpl { Ability ability = new ConditionalInterveningIfTriggeredAbility( new AttacksTriggeredAbility(new DamageTargetEffect(2), false), new PermanentsOnTheBattlefieldCondition(filter), - "if you control a Chandra planeswalker, " + "Whenever {this} attacks, if you control a Chandra planeswalker, " + "this creature deals 2 damage to any target" ); ability.addTarget(new TargetAnyTarget()); diff --git a/Mage.Sets/src/mage/cards/k/KjeldoranEliteGuard.java b/Mage.Sets/src/mage/cards/k/KjeldoranEliteGuard.java index 4620d62c95f..4480660ced7 100644 --- a/Mage.Sets/src/mage/cards/k/KjeldoranEliteGuard.java +++ b/Mage.Sets/src/mage/cards/k/KjeldoranEliteGuard.java @@ -57,8 +57,7 @@ class KjeldoranEliteGuardEffect extends OneShotEffect { KjeldoranEliteGuardEffect() { super(Outcome.Neutral); staticText = "Target creature gets +2/+2 until end of turn. " - + "When that creature leaves the battlefield this turn, sacrifice Kjeldoran Elite Guard. " - + "Activate only during combat."; + + "When that creature leaves the battlefield this turn, sacrifice Kjeldoran Elite Guard."; } @Override diff --git a/Mage.Sets/src/mage/cards/l/LeadBellyChimera.java b/Mage.Sets/src/mage/cards/l/LeadBellyChimera.java index 9b326478f41..917ddd8f8aa 100644 --- a/Mage.Sets/src/mage/cards/l/LeadBellyChimera.java +++ b/Mage.Sets/src/mage/cards/l/LeadBellyChimera.java @@ -1,4 +1,3 @@ - package mage.cards.l; import mage.MageInt; @@ -44,7 +43,8 @@ public final class LeadBellyChimera extends CardImpl { // Sacrifice Lead-Belly Chimera: Put a +2/+2 counter on target Chimera creature. It gains trample. Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new AddCountersTargetEffect(CounterType.P2P2.createInstance()), new SacrificeSourceCost()); - ability.addEffect(new GainAbilityTargetEffect(TrampleAbility.getInstance(), Duration.WhileOnBattlefield)); + ability.addEffect(new GainAbilityTargetEffect(TrampleAbility.getInstance(), Duration.WhileOnBattlefield) + .setText("It gains trample. (This effect lasts indefinitely.)")); ability.addTarget(new TargetCreaturePermanent(filter)); addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/l/LozhanDragonsLegacy.java b/Mage.Sets/src/mage/cards/l/LozhanDragonsLegacy.java index 6cf1e61d8b3..1fa59966910 100644 --- a/Mage.Sets/src/mage/cards/l/LozhanDragonsLegacy.java +++ b/Mage.Sets/src/mage/cards/l/LozhanDragonsLegacy.java @@ -29,7 +29,7 @@ import java.util.UUID; */ public final class LozhanDragonsLegacy extends CardImpl { - private static final FilterSpell filter = new FilterSpell("an Adventure spell or Dragon spell"); + private static final FilterSpell filter = new FilterSpell("an Adventure or Dragon spell"); private static final FilterPermanentOrPlayer filter2 = new FilterAnyTarget("any target that isn't a commander"); diff --git a/Mage.Sets/src/mage/cards/m/MalakirSoothsayer.java b/Mage.Sets/src/mage/cards/m/MalakirSoothsayer.java index 3e05b674b76..59c1dcd3ca3 100644 --- a/Mage.Sets/src/mage/cards/m/MalakirSoothsayer.java +++ b/Mage.Sets/src/mage/cards/m/MalakirSoothsayer.java @@ -1,4 +1,3 @@ - package mage.cards.m; import java.util.UUID; @@ -46,8 +45,7 @@ public final class MalakirSoothsayer extends CardImpl { new TapSourceCost()); ability.setAbilityWord(AbilityWord.COHORT); ability.addCost(new TapTargetCost(new TargetControlledCreaturePermanent(1, 1, filter, false))); - Effect effect = new LoseLifeSourceControllerEffect(1); - effect.setText("and you lose a life"); + Effect effect = new LoseLifeSourceControllerEffect(1).concatBy("and"); ability.addEffect(effect); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/m/ManorGargoyle.java b/Mage.Sets/src/mage/cards/m/ManorGargoyle.java index f95a0cc1c78..f0101955cb8 100644 --- a/Mage.Sets/src/mage/cards/m/ManorGargoyle.java +++ b/Mage.Sets/src/mage/cards/m/ManorGargoyle.java @@ -32,7 +32,7 @@ import mage.game.permanent.Permanent; */ public final class ManorGargoyle extends CardImpl { - private static final String rule = "{this} is indestructible as long as it has defender."; + private static final String rule = "{this} has indestructible as long as it has defender."; public ManorGargoyle(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{5}"); diff --git a/Mage.Sets/src/mage/cards/m/MiirymSentinelWyrm.java b/Mage.Sets/src/mage/cards/m/MiirymSentinelWyrm.java index 736a9c9f795..93257ecac1f 100644 --- a/Mage.Sets/src/mage/cards/m/MiirymSentinelWyrm.java +++ b/Mage.Sets/src/mage/cards/m/MiirymSentinelWyrm.java @@ -48,7 +48,7 @@ public final class MiirymSentinelWyrm extends CardImpl { Zone.BATTLEFIELD, new CreateTokenCopyTargetEffect(true).setIsntLegendary(true), filter, false, SetTargetPointer.PERMANENT, "Whenever another nontoken Dragon " + "enters the battlefield under your control, create a token that's a copy of it, " + - "except the token isn't legendary if that Dragon is legendary." + "except the token isn't legendary." )); } diff --git a/Mage.Sets/src/mage/cards/m/MizziumTank.java b/Mage.Sets/src/mage/cards/m/MizziumTank.java index 5201a837df7..4d8e8a21f41 100644 --- a/Mage.Sets/src/mage/cards/m/MizziumTank.java +++ b/Mage.Sets/src/mage/cards/m/MizziumTank.java @@ -34,7 +34,7 @@ public final class MizziumTank extends CardImpl { // Whenever you cast a noncreature spell, Mizzium Tank becomes an artifact creature and gets +1/+1 until end of turn. Ability ability = new SpellCastControllerTriggeredAbility(new AddCardTypeSourceEffect( Duration.EndOfTurn, CardType.ARTIFACT, CardType.CREATURE - ).setText("{this} becomes an artifact creature"), StaticFilters.FILTER_SPELL_NON_CREATURE, false); + ).setText("{this} becomes an artifact creature"), StaticFilters.FILTER_SPELL_A_NON_CREATURE, false); ability.addEffect(new BoostSourceEffect( 1, 1, Duration.EndOfTurn ).setText("and gets +1/+1 until end of turn")); diff --git a/Mage.Sets/src/mage/cards/m/MoggFanatic.java b/Mage.Sets/src/mage/cards/m/MoggFanatic.java index 098c1faa79e..d386cde732d 100644 --- a/Mage.Sets/src/mage/cards/m/MoggFanatic.java +++ b/Mage.Sets/src/mage/cards/m/MoggFanatic.java @@ -28,7 +28,7 @@ public final class MoggFanatic extends CardImpl { this.toughness = new MageInt(1); // Sacrifice Mogg Fanatic: Mogg Fanatic deals 1 damage to any target. - Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(1), new SacrificeSourceCost()); + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(1, "it"), new SacrificeSourceCost()); ability.addTarget(new TargetAnyTarget()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/m/MortalWound.java b/Mage.Sets/src/mage/cards/m/MortalWound.java index fa9bd9ccc80..46c865183d6 100644 --- a/Mage.Sets/src/mage/cards/m/MortalWound.java +++ b/Mage.Sets/src/mage/cards/m/MortalWound.java @@ -1,4 +1,3 @@ - package mage.cards.m; import java.util.UUID; @@ -32,7 +31,8 @@ public final class MortalWound extends CardImpl { Ability ability = new EnchantAbility(auraTarget); this.addAbility(ability); // When enchanted creature is dealt damage, destroy it. - this.addAbility(new DealtDamageAttachedTriggeredAbility(new DestroyAttachedToEffect("it"), false)); + this.addAbility(new DealtDamageAttachedTriggeredAbility(new DestroyAttachedToEffect("it"), false) + .setTriggerPhrase("When enchanted creature is dealt damage, ")); } private MortalWound(final MortalWound card) { diff --git a/Mage.Sets/src/mage/cards/m/Mugging.java b/Mage.Sets/src/mage/cards/m/Mugging.java index 8c667fe340f..cafce54ccee 100644 --- a/Mage.Sets/src/mage/cards/m/Mugging.java +++ b/Mage.Sets/src/mage/cards/m/Mugging.java @@ -22,7 +22,8 @@ public final class Mugging extends CardImpl { // Mugging deals 2 damage to target creature. That creature can't block this turn. this.getSpellAbility().addEffect(new DamageTargetEffect(2)); - this.getSpellAbility().addEffect(new CantBlockTargetEffect(Duration.EndOfTurn)); + this.getSpellAbility().addEffect(new CantBlockTargetEffect(Duration.EndOfTurn) + .setText("That creature can't block this turn")); this.getSpellAbility().addTarget(new TargetCreaturePermanent()); } diff --git a/Mage.Sets/src/mage/cards/m/MummyParamount.java b/Mage.Sets/src/mage/cards/m/MummyParamount.java index c061c996ab9..356ccec5e17 100644 --- a/Mage.Sets/src/mage/cards/m/MummyParamount.java +++ b/Mage.Sets/src/mage/cards/m/MummyParamount.java @@ -1,9 +1,8 @@ - package mage.cards.m; import java.util.UUID; import mage.MageInt; -import mage.abilities.common.EntersBattlefieldAllTriggeredAbility; +import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility; import mage.abilities.effects.common.continuous.BoostSourceEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; @@ -33,7 +32,7 @@ public final class MummyParamount extends CardImpl { this.toughness = new MageInt(2); // Whenever another Zombie enters the battlefield under your control, Mummy Paramount gets +1/+1 until end of turn. - this.addAbility(new EntersBattlefieldAllTriggeredAbility(new BoostSourceEffect(1, 1, Duration.EndOfTurn), filter)); + this.addAbility(new EntersBattlefieldControlledTriggeredAbility(new BoostSourceEffect(1, 1, Duration.EndOfTurn), filter)); } private MummyParamount(final MummyParamount card) { diff --git a/Mage.Sets/src/mage/cards/n/NissasRevelation.java b/Mage.Sets/src/mage/cards/n/NissasRevelation.java index 3cd20baf995..fb738ca94c0 100644 --- a/Mage.Sets/src/mage/cards/n/NissasRevelation.java +++ b/Mage.Sets/src/mage/cards/n/NissasRevelation.java @@ -26,7 +26,7 @@ public final class NissasRevelation extends CardImpl { super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{5}{G}{G}"); // Scry 5, then reveal the top card of your library. If it's a creature card, you draw cards equal to its power and you gain life equal to its toughness. - this.getSpellAbility().addEffect(new ScryEffect(5)); + this.getSpellAbility().addEffect(new ScryEffect(5, false)); this.getSpellAbility().addEffect(new NissasRevelationEffect()); } diff --git a/Mage.Sets/src/mage/cards/n/NoMercy.java b/Mage.Sets/src/mage/cards/n/NoMercy.java index 49a6da0df2b..8bf1494e14a 100644 --- a/Mage.Sets/src/mage/cards/n/NoMercy.java +++ b/Mage.Sets/src/mage/cards/n/NoMercy.java @@ -69,7 +69,7 @@ public final class NoMercy extends CardImpl { @Override public String getRule() { - return "Whenever a creature deals damage to you, destroy it"; + return "Whenever a creature deals damage to you, destroy it."; } } diff --git a/Mage.Sets/src/mage/cards/n/NoxiousGhoul.java b/Mage.Sets/src/mage/cards/n/NoxiousGhoul.java index 1409bedb6f7..852de264283 100644 --- a/Mage.Sets/src/mage/cards/n/NoxiousGhoul.java +++ b/Mage.Sets/src/mage/cards/n/NoxiousGhoul.java @@ -36,7 +36,7 @@ public final class NoxiousGhoul extends CardImpl { // Whenever Noxious Ghoul or another Zombie enters the battlefield, all non-Zombie creatures get -1/-1 until end of turn. this.addAbility(new EntersBattlefieldThisOrAnotherTriggeredAbility(new BoostAllEffect( -1, -1, Duration.EndOfTurn, filter, false - ), filter2, false, true)); + ), filter2)); } private NoxiousGhoul(final NoxiousGhoul card) { diff --git a/Mage.Sets/src/mage/cards/o/OasisRitualist.java b/Mage.Sets/src/mage/cards/o/OasisRitualist.java index 97bc4049047..5819239ab07 100644 --- a/Mage.Sets/src/mage/cards/o/OasisRitualist.java +++ b/Mage.Sets/src/mage/cards/o/OasisRitualist.java @@ -1,4 +1,3 @@ - package mage.cards.o; import java.util.UUID; @@ -6,7 +5,6 @@ import mage.MageInt; import mage.abilities.costs.common.ExertSourceCost; import mage.abilities.costs.common.TapSourceCost; import mage.abilities.effects.mana.AddManaOfAnyColorEffect; -import mage.abilities.effects.mana.ManaEffect; import mage.abilities.mana.AnyColorManaAbility; import mage.abilities.mana.SimpleManaAbility; import mage.cards.CardImpl; @@ -33,7 +31,7 @@ public final class OasisRitualist extends CardImpl { this.addAbility(new AnyColorManaAbility()); // {T}, Exert Oasis Ritualist: Add two mana of any one color to your manna pool. SimpleManaAbility ability = new SimpleManaAbility(Zone.BATTLEFIELD, - (ManaEffect) new AddManaOfAnyColorEffect(2).setText("Add two mana of any one color to your manna pool. (An exerted creature won't untap during your next untap step.)"), + new AddManaOfAnyColorEffect(2).setText("Add two mana of any one color. (An exerted creature won't untap during your next untap step.)"), new TapSourceCost()); ability.addCost(new ExertSourceCost()); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/o/OketrasLastMercy.java b/Mage.Sets/src/mage/cards/o/OketrasLastMercy.java index eacbfe91f67..ae29c463a13 100644 --- a/Mage.Sets/src/mage/cards/o/OketrasLastMercy.java +++ b/Mage.Sets/src/mage/cards/o/OketrasLastMercy.java @@ -41,9 +41,9 @@ public final class OketrasLastMercy extends CardImpl { class OketrasLastMercyEffect extends OneShotEffect { - public OketrasLastMercyEffect() { + OketrasLastMercyEffect() { super(Outcome.Benefit); - staticText = "Your life total becomes your starting life total"; + staticText = "Your life total becomes equal to your starting life total"; } private OketrasLastMercyEffect(final OketrasLastMercyEffect effect) { diff --git a/Mage.Sets/src/mage/cards/o/OraclesInsight.java b/Mage.Sets/src/mage/cards/o/OraclesInsight.java index bdade2f208f..639c77606c9 100644 --- a/Mage.Sets/src/mage/cards/o/OraclesInsight.java +++ b/Mage.Sets/src/mage/cards/o/OraclesInsight.java @@ -41,8 +41,7 @@ public final class OraclesInsight extends CardImpl { // Enchanted creature has "{T}: Scry 1, then draw a card." ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new ScryEffect(1, false), new TapSourceCost()); - Effect effect = new DrawCardSourceControllerEffect(1); - effect.setText("then draw a card"); + Effect effect = new DrawCardSourceControllerEffect(1).concatBy(", then"); ability.addEffect(effect); this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(ability, AttachmentType.AURA, Duration.WhileOnBattlefield))); } diff --git a/Mage.Sets/src/mage/cards/p/PainKami.java b/Mage.Sets/src/mage/cards/p/PainKami.java index 0c6955a4e4a..5216627200e 100644 --- a/Mage.Sets/src/mage/cards/p/PainKami.java +++ b/Mage.Sets/src/mage/cards/p/PainKami.java @@ -28,7 +28,7 @@ public final class PainKami extends CardImpl { this.power = new MageInt(2); this.toughness = new MageInt(2); - Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(ManacostVariableValue.REGULAR), new ManaCostsImpl<>("{X}{R}")); + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(ManacostVariableValue.REGULAR, "it"), new ManaCostsImpl<>("{X}{R}")); ability.addCost(new SacrificeSourceCost()); ability.addTarget(new TargetCreaturePermanent()); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/p/PharikasCure.java b/Mage.Sets/src/mage/cards/p/PharikasCure.java index d20f5e4679d..2297efad30f 100644 --- a/Mage.Sets/src/mage/cards/p/PharikasCure.java +++ b/Mage.Sets/src/mage/cards/p/PharikasCure.java @@ -22,7 +22,7 @@ public final class PharikasCure extends CardImpl { // Pharika's Cure deals 2 damage to target creature and you gain 2 life. this.getSpellAbility().addEffect(new DamageTargetEffect(2)); this.getSpellAbility().addTarget(new TargetCreaturePermanent()); - this.getSpellAbility().addEffect(new GainLifeEffect(2)); + this.getSpellAbility().addEffect(new GainLifeEffect(2).concatBy("and")); } private PharikasCure(final PharikasCure card) { diff --git a/Mage.Sets/src/mage/cards/p/PharikasMender.java b/Mage.Sets/src/mage/cards/p/PharikasMender.java index a7d488a96a0..07791e6c096 100644 --- a/Mage.Sets/src/mage/cards/p/PharikasMender.java +++ b/Mage.Sets/src/mage/cards/p/PharikasMender.java @@ -36,7 +36,7 @@ public final class PharikasMender extends CardImpl { this.toughness = new MageInt(3); // When Pharika's Mender enters the battlefield, you may return target creature or enchantment card from your graveyard to your hand. - Ability ability = new EntersBattlefieldTriggeredAbility(new ReturnFromGraveyardToHandTargetEffect()); + Ability ability = new EntersBattlefieldTriggeredAbility(new ReturnFromGraveyardToHandTargetEffect(), true); Target target = new TargetCardInYourGraveyard(filter); ability.addTarget(target); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/p/PolisCrusher.java b/Mage.Sets/src/mage/cards/p/PolisCrusher.java index fbbecb52c09..1a1ca134934 100644 --- a/Mage.Sets/src/mage/cards/p/PolisCrusher.java +++ b/Mage.Sets/src/mage/cards/p/PolisCrusher.java @@ -108,6 +108,6 @@ class PolisCrusherTriggeredAbility extends TriggeredAbilityImpl { @Override public String getRule() { return "Whenever {this} deals combat damage to a player," - + " if {this} is monstrous, destroy target enchantment that player controls"; + + " if {this} is monstrous, destroy target enchantment that player controls."; } } diff --git a/Mage.Sets/src/mage/cards/p/PsychicStrike.java b/Mage.Sets/src/mage/cards/p/PsychicStrike.java index fbe49e6e112..208c50fe765 100644 --- a/Mage.Sets/src/mage/cards/p/PsychicStrike.java +++ b/Mage.Sets/src/mage/cards/p/PsychicStrike.java @@ -1,4 +1,3 @@ - package mage.cards.p; import java.util.UUID; @@ -8,7 +7,6 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Outcome; -import mage.filter.StaticFilters; import mage.game.Game; import mage.game.stack.StackObject; import mage.players.Player; @@ -23,9 +21,8 @@ public final class PsychicStrike extends CardImpl { public PsychicStrike(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}{B}"); - // Counter target spell. Its controller puts the top two cards of their library into their graveyard. - this.getSpellAbility().addTarget(new TargetSpell(StaticFilters.FILTER_SPELL)); + this.getSpellAbility().addTarget(new TargetSpell()); this.getSpellAbility().addEffect(new PsychicStrikeEffect()); } @@ -41,9 +38,9 @@ public final class PsychicStrike extends CardImpl { class PsychicStrikeEffect extends OneShotEffect { - public PsychicStrikeEffect() { + PsychicStrikeEffect() { super(Outcome.Detriment); - staticText = "Counter target spell. Its controller puts the top two cards of their library into their graveyard"; + staticText = "Counter target spell. Its controller mills two cards"; } private PsychicStrikeEffect(final PsychicStrikeEffect effect) { diff --git a/Mage.Sets/src/mage/cards/p/PurgeTheProfane.java b/Mage.Sets/src/mage/cards/p/PurgeTheProfane.java index ac46c40cbaf..46f8e880036 100644 --- a/Mage.Sets/src/mage/cards/p/PurgeTheProfane.java +++ b/Mage.Sets/src/mage/cards/p/PurgeTheProfane.java @@ -22,7 +22,7 @@ public final class PurgeTheProfane extends CardImpl { // Target opponent discards two cards and you gain 2 life. this.getSpellAbility().addEffect(new DiscardTargetEffect(2)); this.getSpellAbility().addTarget(new TargetOpponent()); - this.getSpellAbility().addEffect(new GainLifeEffect(2)); + this.getSpellAbility().addEffect(new GainLifeEffect(2).concatBy("and")); } private PurgeTheProfane(final PurgeTheProfane card) { diff --git a/Mage.Sets/src/mage/cards/r/RagebloodShaman.java b/Mage.Sets/src/mage/cards/r/RagebloodShaman.java index 4926a326f99..e86166369af 100644 --- a/Mage.Sets/src/mage/cards/r/RagebloodShaman.java +++ b/Mage.Sets/src/mage/cards/r/RagebloodShaman.java @@ -1,10 +1,9 @@ - package mage.cards.r; import java.util.UUID; import mage.MageInt; +import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; -import mage.abilities.dynamicvalue.common.StaticValue; import mage.abilities.effects.common.continuous.BoostControlledEffect; import mage.abilities.effects.common.continuous.GainAbilityControlledEffect; import mage.abilities.keyword.TrampleAbility; @@ -35,8 +34,10 @@ public final class RagebloodShaman extends CardImpl { // Trample this.addAbility(TrampleAbility.getInstance()); // Other Minotaur creatures you control get +1/+1 and have trample. - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostControlledEffect(StaticValue.get(1), StaticValue.get(1), Duration.WhileOnBattlefield, filter, true))); - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityControlledEffect(TrampleAbility.getInstance(), Duration.WhileOnBattlefield, filter, true))); + Ability ability = new SimpleStaticAbility(new BoostControlledEffect(1, 1, Duration.WhileOnBattlefield, filter, true)); + ability.addEffect(new GainAbilityControlledEffect(TrampleAbility.getInstance(), Duration.WhileOnBattlefield, filter, true) + .setText("and have trample")); + this.addAbility(ability); } private RagebloodShaman(final RagebloodShaman card) { diff --git a/Mage.Sets/src/mage/cards/r/RaidersSpoils.java b/Mage.Sets/src/mage/cards/r/RaidersSpoils.java index 986be72f816..79c33631452 100644 --- a/Mage.Sets/src/mage/cards/r/RaidersSpoils.java +++ b/Mage.Sets/src/mage/cards/r/RaidersSpoils.java @@ -1,4 +1,3 @@ - package mage.cards.r; import java.util.UUID; @@ -28,7 +27,6 @@ public final class RaidersSpoils extends CardImpl { public RaidersSpoils(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{B}"); - // Creatures you control get +1/+0. this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostControlledEffect(1, 0, Duration.WhileOnBattlefield))); @@ -50,6 +48,7 @@ class RaidersSpoilsTriggeredAbility extends TriggeredAbilityImpl { RaidersSpoilsTriggeredAbility() { super(Zone.BATTLEFIELD, new DoIfCostPaid(new DrawCardSourceControllerEffect(1), new PayLifeCost(1)), false); + setTriggerPhrase("Whenever a Warrior you control deals combat damage to a player, "); } private RaidersSpoilsTriggeredAbility(final RaidersSpoilsTriggeredAbility ability) { @@ -75,9 +74,5 @@ class RaidersSpoilsTriggeredAbility extends TriggeredAbilityImpl { } return false; } - - @Override - public String getRule() { - return "Whenever a Warrior you control deals combat damage to a player, you may pay 1 life. If you do, draw a card"; - } + } diff --git a/Mage.Sets/src/mage/cards/r/RasputinDreamweaver.java b/Mage.Sets/src/mage/cards/r/RasputinDreamweaver.java index c114f101294..eda5e45c9f2 100644 --- a/Mage.Sets/src/mage/cards/r/RasputinDreamweaver.java +++ b/Mage.Sets/src/mage/cards/r/RasputinDreamweaver.java @@ -43,7 +43,7 @@ public final class RasputinDreamweaver extends CardImpl { this.toughness = new MageInt(1); // Rasputin Dreamweaver enters the battlefield with seven dream counters on it. - this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.DREAM.createInstance(7)), "seven dream counters on it")); + this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.DREAM.createInstance(7)), "with seven dream counters on it")); // Remove a dream counter from Rasputin: Add {C}. this.addAbility(new SimpleManaAbility(Zone.BATTLEFIELD, Mana.ColorlessMana(1), diff --git a/Mage.Sets/src/mage/cards/r/ResoluteSurvivors.java b/Mage.Sets/src/mage/cards/r/ResoluteSurvivors.java index 3dc95cbe6c6..afcb5c8c6b1 100644 --- a/Mage.Sets/src/mage/cards/r/ResoluteSurvivors.java +++ b/Mage.Sets/src/mage/cards/r/ResoluteSurvivors.java @@ -1,18 +1,18 @@ - package mage.cards.r; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.ExertCreatureControllerTriggeredAbility; -import mage.abilities.effects.Effect; +import mage.abilities.effects.common.DamagePlayersEffect; import mage.abilities.effects.common.GainLifeEffect; -import mage.abilities.effects.common.LoseLifeOpponentsEffect; import mage.abilities.keyword.ExertAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; +import mage.constants.TargetController; + +import java.util.UUID; /** * @@ -32,12 +32,8 @@ public final class ResoluteSurvivors extends CardImpl { this.addAbility(new ExertAbility(null, false)); // Whenever you exert a creature, Resolute Survivors deals 1 damage to each opponent and you gain 1 life. - Effect effect = new LoseLifeOpponentsEffect(1); - effect.setText("Whenever you exert a creature, {this} deals 1 damage to each opponent"); - Ability ability = new ExertCreatureControllerTriggeredAbility(effect); - effect = new GainLifeEffect(1); - effect.setText("and you gain 1 life"); - ability.addEffect(effect); + Ability ability = new ExertCreatureControllerTriggeredAbility(new DamagePlayersEffect(1, TargetController.OPPONENT)); + ability.addEffect(new GainLifeEffect(1).concatBy("and")); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/r/ReverentMantra.java b/Mage.Sets/src/mage/cards/r/ReverentMantra.java index 4b2911d55dc..beb1f050847 100644 --- a/Mage.Sets/src/mage/cards/r/ReverentMantra.java +++ b/Mage.Sets/src/mage/cards/r/ReverentMantra.java @@ -35,7 +35,7 @@ public final class ReverentMantra extends CardImpl { // Choose a color. All creatures gain protection from the chosen color until end of turn. this.getSpellAbility().addEffect(new GainProtectionFromColorAllEffect( - Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURE + Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_ALL_CREATURES )); } diff --git a/Mage.Sets/src/mage/cards/r/RhonassMonument.java b/Mage.Sets/src/mage/cards/r/RhonassMonument.java index 26e522b0a8c..a24e0a3b715 100644 --- a/Mage.Sets/src/mage/cards/r/RhonassMonument.java +++ b/Mage.Sets/src/mage/cards/r/RhonassMonument.java @@ -1,4 +1,3 @@ - package mage.cards.r; import java.util.UUID; @@ -49,9 +48,10 @@ public final class RhonassMonument extends CardImpl { this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new SpellsCostReductionControllerEffect(filter, 1))); // Whenever you cast a creature spell, target creature you control gets +2/+2 and gains trample until end of turn. - Ability ability = new SpellCastControllerTriggeredAbility(new BoostTargetEffect(2, 2, Duration.EndOfTurn), filter2, false); + Ability ability = new SpellCastControllerTriggeredAbility(new BoostTargetEffect(2, 2, Duration.EndOfTurn) + .setText("target creature you control gets +2/+2"), filter2, false); Effect effect = new GainAbilityTargetEffect(TrampleAbility.getInstance(), Duration.EndOfTurn); - effect.setText(" and gains trample until end of turn"); + effect.setText("and gains trample until end of turn"); ability.addEffect(effect); ability.addTarget(new TargetControlledCreaturePermanent()); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/r/RighteousWar.java b/Mage.Sets/src/mage/cards/r/RighteousWar.java index a541948fbf8..09f2165673c 100644 --- a/Mage.Sets/src/mage/cards/r/RighteousWar.java +++ b/Mage.Sets/src/mage/cards/r/RighteousWar.java @@ -20,8 +20,8 @@ import mage.filter.predicate.mageobject.ColorPredicate; */ public final class RighteousWar extends CardImpl { - private static final FilterCreaturePermanent whiteFilter = new FilterCreaturePermanent("white creatures you control"); - private static final FilterCreaturePermanent blackFilter = new FilterCreaturePermanent("black creatures you control"); + private static final FilterCreaturePermanent whiteFilter = new FilterCreaturePermanent("white creatures"); + private static final FilterCreaturePermanent blackFilter = new FilterCreaturePermanent("black creatures"); static { whiteFilter.add(new ColorPredicate(ObjectColor.WHITE)); diff --git a/Mage.Sets/src/mage/cards/r/RofellosLlanowarEmissary.java b/Mage.Sets/src/mage/cards/r/RofellosLlanowarEmissary.java index 5e398b4a149..5bbf4683aa9 100644 --- a/Mage.Sets/src/mage/cards/r/RofellosLlanowarEmissary.java +++ b/Mage.Sets/src/mage/cards/r/RofellosLlanowarEmissary.java @@ -1,5 +1,3 @@ - - package mage.cards.r; import java.util.UUID; @@ -21,7 +19,7 @@ import mage.filter.common.FilterControlledPermanent; */ public final class RofellosLlanowarEmissary extends CardImpl { - private static final FilterControlledPermanent filter = new FilterControlledPermanent("for each Forest you control"); + private static final FilterControlledPermanent filter = new FilterControlledPermanent("Forest you control"); static { filter.add(SubType.FOREST.getPredicate()); diff --git a/Mage.Sets/src/mage/cards/r/RunicArmasaur.java b/Mage.Sets/src/mage/cards/r/RunicArmasaur.java index 80d62d9d807..a6da7f45b1b 100644 --- a/Mage.Sets/src/mage/cards/r/RunicArmasaur.java +++ b/Mage.Sets/src/mage/cards/r/RunicArmasaur.java @@ -46,6 +46,7 @@ class RunicArmasaurTriggeredAbility extends TriggeredAbilityImpl { RunicArmasaurTriggeredAbility() { super(Zone.BATTLEFIELD, new DrawCardSourceControllerEffect(1), true); + setTriggerPhrase("Whenever an opponent activates an ability of a creature or land that isn't a mana ability, "); } private RunicArmasaurTriggeredAbility(final RunicArmasaurTriggeredAbility ability) { @@ -77,8 +78,4 @@ class RunicArmasaurTriggeredAbility extends TriggeredAbilityImpl { return false; } - @Override - public String getRule() { - return "Whenever an opponent activates an ability of a creature or a land that is not a mana ability, you may draw a card."; - } } diff --git a/Mage.Sets/src/mage/cards/s/SarythTheVipersFang.java b/Mage.Sets/src/mage/cards/s/SarythTheVipersFang.java index 1f622dc48b1..e3eea006854 100644 --- a/Mage.Sets/src/mage/cards/s/SarythTheVipersFang.java +++ b/Mage.Sets/src/mage/cards/s/SarythTheVipersFang.java @@ -14,9 +14,8 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.*; import mage.filter.FilterPermanent; -import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.common.FilterControlledPermanent; -import mage.filter.common.FilterUntappedCreature; +import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.AnotherPredicate; import mage.filter.predicate.permanent.TappedPredicate; @@ -29,11 +28,13 @@ import java.util.UUID; */ public final class SarythTheVipersFang extends CardImpl { - private static final FilterPermanent filterTapped = new FilterControlledCreaturePermanent("tapped creatures"); + private static final FilterPermanent filterTapped = new FilterCreaturePermanent("tapped creatures"); + private static final FilterPermanent filterUntapped = new FilterCreaturePermanent("untapped creatures"); private static final FilterPermanent filterAbility = new FilterControlledPermanent("another target creature or land you control"); static { filterTapped.add(TappedPredicate.TAPPED); + filterUntapped.add(TappedPredicate.UNTAPPED); filterAbility.add(Predicates.or( CardType.CREATURE.getPredicate(), CardType.LAND.getPredicate() @@ -51,13 +52,13 @@ public final class SarythTheVipersFang extends CardImpl { this.toughness = new MageInt(4); // Other tapped creatures you control have deathtouch. - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, + this.addAbility(new SimpleStaticAbility( new GainAbilityControlledEffect(DeathtouchAbility.getInstance(), Duration.WhileOnBattlefield, filterTapped, true) )); // Other untapped creatures you control have hexproof. - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, - new GainAbilityControlledEffect(HexproofAbility.getInstance(), Duration.WhileOnBattlefield, new FilterUntappedCreature("untapped creatures"), true) + this.addAbility(new SimpleStaticAbility( + new GainAbilityControlledEffect(HexproofAbility.getInstance(), Duration.WhileOnBattlefield, filterUntapped, true) )); // {1}, {T}: Untap another target creature or land you control. diff --git a/Mage.Sets/src/mage/cards/s/Scaldkin.java b/Mage.Sets/src/mage/cards/s/Scaldkin.java index f6172d8ad28..c774f73f01d 100644 --- a/Mage.Sets/src/mage/cards/s/Scaldkin.java +++ b/Mage.Sets/src/mage/cards/s/Scaldkin.java @@ -32,7 +32,7 @@ public final class Scaldkin extends CardImpl { // Flying this.addAbility(FlyingAbility.getInstance()); // {2}{R}, Sacrifice Scaldkin: Scaldkin deals 2 damage to any target. - Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(2), new ManaCostsImpl<>("{2}{R}")); + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(2, "it"), new ManaCostsImpl<>("{2}{R}")); ability.addCost(new SacrificeSourceCost()); ability.addTarget(new TargetAnyTarget()); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/s/ScrollOfOrigins.java b/Mage.Sets/src/mage/cards/s/ScrollOfOrigins.java index 0772dff0170..17d4a194423 100644 --- a/Mage.Sets/src/mage/cards/s/ScrollOfOrigins.java +++ b/Mage.Sets/src/mage/cards/s/ScrollOfOrigins.java @@ -1,4 +1,3 @@ - package mage.cards.s; import java.util.UUID; @@ -26,7 +25,7 @@ public final class ScrollOfOrigins extends CardImpl { // {2}, {tap}: Draw a card if you have seven or more cards in hand. Ability ability = new ConditionalActivatedAbility(Zone.BATTLEFIELD, new DrawCardSourceControllerEffect(1), new GenericManaCost(2), new CardsInHandCondition(ComparisonType.MORE_THAN, 6), - "Draw a card if you have seven or more cards in hand."); + "{2}, {T}: Draw a card if you have seven or more cards in hand."); ability.addCost(new TapSourceCost()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/SealOfFire.java b/Mage.Sets/src/mage/cards/s/SealOfFire.java index 7eb61c3930a..448448a5fe4 100644 --- a/Mage.Sets/src/mage/cards/s/SealOfFire.java +++ b/Mage.Sets/src/mage/cards/s/SealOfFire.java @@ -23,7 +23,7 @@ public final class SealOfFire extends CardImpl { // Sacrifice Seal of Fire: Seal of Fire deals 2 damage to any target. - Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(2), new SacrificeSourceCost()); + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(2, "it"), new SacrificeSourceCost()); ability.addTarget(new TargetAnyTarget()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/SealOfTheGuildpact.java b/Mage.Sets/src/mage/cards/s/SealOfTheGuildpact.java index 88a30cfe3f7..9271565faa9 100644 --- a/Mage.Sets/src/mage/cards/s/SealOfTheGuildpact.java +++ b/Mage.Sets/src/mage/cards/s/SealOfTheGuildpact.java @@ -1,4 +1,3 @@ - package mage.cards.s; import java.util.HashSet; @@ -8,7 +7,7 @@ import mage.MageObject; import mage.ObjectColor; import mage.abilities.Ability; import mage.abilities.SpellAbility; -import mage.abilities.common.EntersBattlefieldAbility; +import mage.abilities.common.AsEntersBattlefieldAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.cost.CostModificationEffectImpl; @@ -35,7 +34,7 @@ public final class SealOfTheGuildpact extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{5}"); // As Seal of the Guildpact enters the battlefield, choose two colors. - this.addAbility(new EntersBattlefieldAbility(new SealOfTheGuildpactChooseColorEffect())); + this.addAbility(new AsEntersBattlefieldAbility(new SealOfTheGuildpactChooseColorEffect())); // Each spell you cast costs {1} less to cast for each of the chosen colors it is. this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new SealOfTheGuildpactCostReductionEffect())); diff --git a/Mage.Sets/src/mage/cards/s/SelesnyaEulogist.java b/Mage.Sets/src/mage/cards/s/SelesnyaEulogist.java index e7b7734ac4d..3c6987114f0 100644 --- a/Mage.Sets/src/mage/cards/s/SelesnyaEulogist.java +++ b/Mage.Sets/src/mage/cards/s/SelesnyaEulogist.java @@ -30,7 +30,7 @@ public final class SelesnyaEulogist extends CardImpl { // {2}{G}: Exile target creature card from a graveyard, then populate. Ability ability = new SimpleActivatedAbility( - new ExileTargetEffect().setText("exile target creature card from a graveyard,"), + new ExileTargetEffect().setText("exile target creature card from a graveyard"), new ManaCostsImpl<>("{2}{G}") ); ability.addEffect(new PopulateEffect("then")); diff --git a/Mage.Sets/src/mage/cards/s/SkaabRuinator.java b/Mage.Sets/src/mage/cards/s/SkaabRuinator.java index b3c3ba7fafd..daa1321b874 100644 --- a/Mage.Sets/src/mage/cards/s/SkaabRuinator.java +++ b/Mage.Sets/src/mage/cards/s/SkaabRuinator.java @@ -28,7 +28,7 @@ public final class SkaabRuinator extends CardImpl { // As an additional cost to cast Skaab Ruinator, exile three creature cards from your graveyard. this.getSpellAbility().addCost(new ExileFromGraveCost(new TargetCardInYourGraveyard( - 3, StaticFilters.FILTER_CARD_CREATURE_YOUR_GRAVEYARD + 3, StaticFilters.FILTER_CARD_CREATURES_YOUR_GRAVEYARD ))); // Flying diff --git a/Mage.Sets/src/mage/cards/s/SpareFromEvil.java b/Mage.Sets/src/mage/cards/s/SpareFromEvil.java index 065640cdbcd..d61dc860a73 100644 --- a/Mage.Sets/src/mage/cards/s/SpareFromEvil.java +++ b/Mage.Sets/src/mage/cards/s/SpareFromEvil.java @@ -28,7 +28,7 @@ public final class SpareFromEvil extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{W}"); // Creatures you control gain protection from non-Human creatures until end of turn. - this.getSpellAbility().addEffect(new GainAbilityControlledEffect(new ProtectionAbility(filterNonHuman), Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURE, false)); + this.getSpellAbility().addEffect(new GainAbilityControlledEffect(new ProtectionAbility(filterNonHuman), Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURES, false)); } private SpareFromEvil(final SpareFromEvil card) { diff --git a/Mage.Sets/src/mage/cards/s/SpellheartChimera.java b/Mage.Sets/src/mage/cards/s/SpellheartChimera.java index b0fa53ae3bf..92758f0fc14 100644 --- a/Mage.Sets/src/mage/cards/s/SpellheartChimera.java +++ b/Mage.Sets/src/mage/cards/s/SpellheartChimera.java @@ -34,7 +34,7 @@ public final class SpellheartChimera extends CardImpl { this.addAbility(TrampleAbility.getInstance()); // Spellheart Chimera's power is equal to the number of instant and sorcery cards in your graveyard. this.addAbility(new SimpleStaticAbility(Zone.ALL, new SetBasePowerSourceEffect( - new CardsInControllerGraveyardCount(new FilterInstantOrSorceryCard("instant and sorcery cards in your graveyard"))))); + new CardsInControllerGraveyardCount(new FilterInstantOrSorceryCard("instant and sorcery cards"))))); } private SpellheartChimera(final SpellheartChimera card) { diff --git a/Mage.Sets/src/mage/cards/s/StructuralCollapse.java b/Mage.Sets/src/mage/cards/s/StructuralCollapse.java index 0f465c4a792..71968fe0135 100644 --- a/Mage.Sets/src/mage/cards/s/StructuralCollapse.java +++ b/Mage.Sets/src/mage/cards/s/StructuralCollapse.java @@ -23,7 +23,8 @@ public final class StructuralCollapse extends CardImpl { // Target player sacrifices an artifact and a land. Structural Collapse deals 2 damage to that player. this.getSpellAbility().addEffect(new SacrificeEffect(new FilterArtifactPermanent(), 1, "Target player")); - this.getSpellAbility().addEffect(new SacrificeEffect(StaticFilters.FILTER_LANDS, 1, "Target player")); + this.getSpellAbility().addEffect(new SacrificeEffect(StaticFilters.FILTER_LANDS, 1, "Target player") + .setText("and a land")); this.getSpellAbility().addEffect(new DamageTargetEffect(2)); this.getSpellAbility().addTarget(new TargetPlayer()); } diff --git a/Mage.Sets/src/mage/cards/s/Stupor.java b/Mage.Sets/src/mage/cards/s/Stupor.java index d22f5d102a0..61f46a70616 100644 --- a/Mage.Sets/src/mage/cards/s/Stupor.java +++ b/Mage.Sets/src/mage/cards/s/Stupor.java @@ -1,4 +1,3 @@ - package mage.cards.s; import java.util.UUID; @@ -20,7 +19,7 @@ public final class Stupor extends CardImpl { // Target opponent discards a card at random, then discards a card. this.getSpellAbility().addEffect(new DiscardTargetEffect(1, true)); - this.getSpellAbility().addEffect(new DiscardTargetEffect(1)); + this.getSpellAbility().addEffect(new DiscardTargetEffect(1).setText(", then discards a card")); this.getSpellAbility().addTarget(new TargetOpponent()); } diff --git a/Mage.Sets/src/mage/cards/t/ThrabenSentry.java b/Mage.Sets/src/mage/cards/t/ThrabenSentry.java index 8ed58112222..7ccaf78bd07 100644 --- a/Mage.Sets/src/mage/cards/t/ThrabenSentry.java +++ b/Mage.Sets/src/mage/cards/t/ThrabenSentry.java @@ -11,7 +11,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; -import mage.filter.common.FilterControlledCreaturePermanent; +import mage.filter.StaticFilters; /** * @author nantuko @@ -32,7 +32,7 @@ public final class ThrabenSentry extends CardImpl { // Whenever another creature you control dies, you may transform Thraben Sentry. this.addAbility(new TransformAbility()); - this.addAbility(new DiesCreatureTriggeredAbility(new TransformSourceEffect(), true, new FilterControlledCreaturePermanent())); + this.addAbility(new DiesCreatureTriggeredAbility(new TransformSourceEffect(), true, StaticFilters.FILTER_ANOTHER_CREATURE_YOU_CONTROL)); } private ThrabenSentry(final ThrabenSentry card) { diff --git a/Mage.Sets/src/mage/cards/t/ThrakkusTheButcher.java b/Mage.Sets/src/mage/cards/t/ThrakkusTheButcher.java index 1cd818313af..563838fd3fb 100644 --- a/Mage.Sets/src/mage/cards/t/ThrakkusTheButcher.java +++ b/Mage.Sets/src/mage/cards/t/ThrakkusTheButcher.java @@ -57,7 +57,7 @@ class ThrakkusTheButcherEffect extends OneShotEffect { ThrakkusTheButcherEffect() { super(Outcome.Benefit); - staticText = "double the power of each dragon you control until end of turn"; + staticText = "double the power of each Dragon you control until end of turn"; } private ThrakkusTheButcherEffect(final ThrakkusTheButcherEffect effect) { diff --git a/Mage.Sets/src/mage/cards/t/TickingGnomes.java b/Mage.Sets/src/mage/cards/t/TickingGnomes.java index 882a7edabf6..e9cd153a227 100644 --- a/Mage.Sets/src/mage/cards/t/TickingGnomes.java +++ b/Mage.Sets/src/mage/cards/t/TickingGnomes.java @@ -31,7 +31,7 @@ public final class TickingGnomes extends CardImpl { // Echo {3} this.addAbility(new EchoAbility("{3}")); // Sacrifice Ticking Gnomes: Ticking Gnomes deals 1 damage to any target. - Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(1), new SacrificeSourceCost()); + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(1, "it"), new SacrificeSourceCost()); ability.addTarget(new TargetAnyTarget()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/t/TinWingChimera.java b/Mage.Sets/src/mage/cards/t/TinWingChimera.java index 5be3e3ece59..58354c79201 100644 --- a/Mage.Sets/src/mage/cards/t/TinWingChimera.java +++ b/Mage.Sets/src/mage/cards/t/TinWingChimera.java @@ -1,4 +1,3 @@ - package mage.cards.t; import mage.MageInt; @@ -26,7 +25,7 @@ import java.util.UUID; */ public final class TinWingChimera extends CardImpl { - private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Chimera creature you control"); + private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Chimera creature"); static { filter.add(SubType.CHIMERA.getPredicate()); @@ -44,7 +43,8 @@ public final class TinWingChimera extends CardImpl { // Sacrifice Tin-Wing Chimera: Put a +2/+2 counter on target Chimera creature. It gains flying. Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new AddCountersTargetEffect(CounterType.P2P2.createInstance()), new SacrificeSourceCost()); - ability.addEffect(new GainAbilityTargetEffect(FlyingAbility.getInstance(), Duration.WhileOnBattlefield)); + ability.addEffect(new GainAbilityTargetEffect(FlyingAbility.getInstance(), Duration.WhileOnBattlefield) + .setText("It gains flying. (This effect lasts indefinitely.)")); ability.addTarget(new TargetCreaturePermanent(filter)); addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/t/ToilTrouble.java b/Mage.Sets/src/mage/cards/t/ToilTrouble.java index 49e8ce37f46..c1c2a83838a 100644 --- a/Mage.Sets/src/mage/cards/t/ToilTrouble.java +++ b/Mage.Sets/src/mage/cards/t/ToilTrouble.java @@ -1,4 +1,3 @@ - package mage.cards.t; import java.util.UUID; @@ -22,7 +21,7 @@ public final class ToilTrouble extends SplitCard { // Target player draws two cards and loses 2 life. getLeftHalfCard().getSpellAbility().addTarget(new TargetPlayer().withChooseHint("to draw two cards and lose 2 life")); getLeftHalfCard().getSpellAbility().addEffect(new DrawCardTargetEffect(2)); - getLeftHalfCard().getSpellAbility().addEffect(new LoseLifeTargetEffect(2)); + getLeftHalfCard().getSpellAbility().addEffect(new LoseLifeTargetEffect(2).setText("and loses 2 life")); // Trouble // Trouble deals damage to target player equal to the number of cards in that player's hand. diff --git a/Mage.Sets/src/mage/cards/t/TraitorousBlood.java b/Mage.Sets/src/mage/cards/t/TraitorousBlood.java index 299422a0517..e8456cb1317 100644 --- a/Mage.Sets/src/mage/cards/t/TraitorousBlood.java +++ b/Mage.Sets/src/mage/cards/t/TraitorousBlood.java @@ -27,7 +27,7 @@ public final class TraitorousBlood extends CardImpl { this.getSpellAbility().addEffect(new GainControlTargetEffect(Duration.EndOfTurn)); this.getSpellAbility().addEffect(new UntapTargetEffect().setText("Untap it")); this.getSpellAbility().addEffect(new GainAbilityTargetEffect(TrampleAbility.getInstance(), Duration.EndOfTurn).setText("It gains trample")); - this.getSpellAbility().addEffect(new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.EndOfTurn).setText("and hast until end of turn")); + this.getSpellAbility().addEffect(new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.EndOfTurn).setText("and haste until end of turn")); } private TraitorousBlood(final TraitorousBlood card) { diff --git a/Mage.Sets/src/mage/cards/t/TriadOfFates.java b/Mage.Sets/src/mage/cards/t/TriadOfFates.java index 3b9723adec2..64fc33c8a14 100644 --- a/Mage.Sets/src/mage/cards/t/TriadOfFates.java +++ b/Mage.Sets/src/mage/cards/t/TriadOfFates.java @@ -13,8 +13,8 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.*; import mage.counters.CounterType; +import mage.filter.StaticFilters; import mage.filter.common.FilterCreaturePermanent; -import mage.filter.predicate.mageobject.AnotherPredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; @@ -28,11 +28,9 @@ import java.util.UUID; */ public final class TriadOfFates extends CardImpl { - private static final FilterCreaturePermanent filter = new FilterCreaturePermanent(); private static final FilterCreaturePermanent filterCounter = new FilterCreaturePermanent("creature that has a fate counter on it"); static { - filter.add(AnotherPredicate.instance); filterCounter.add(CounterType.FATE.getPredicate()); } @@ -48,7 +46,7 @@ public final class TriadOfFates extends CardImpl { // {1}, {T}: Put a fate counter on another target creature. Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new AddCountersTargetEffect(CounterType.FATE.createInstance()), new ManaCostsImpl<>("{1}")); ability.addCost(new TapSourceCost()); - Target target = new TargetCreaturePermanent(filter); + Target target = new TargetCreaturePermanent(StaticFilters.FILTER_ANOTHER_TARGET_CREATURE); ability.addTarget(target); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/t/TriumphOfTheHordes.java b/Mage.Sets/src/mage/cards/t/TriumphOfTheHordes.java index 153e40b5871..86aa5cfae08 100644 --- a/Mage.Sets/src/mage/cards/t/TriumphOfTheHordes.java +++ b/Mage.Sets/src/mage/cards/t/TriumphOfTheHordes.java @@ -1,4 +1,3 @@ - package mage.cards.t; import java.util.UUID; @@ -17,14 +16,16 @@ import mage.filter.StaticFilters; */ public final class TriumphOfTheHordes extends CardImpl { - public TriumphOfTheHordes(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{G}{G}"); - this.getSpellAbility().addEffect(new BoostControlledEffect(1, 1, Duration.EndOfTurn)); - this.getSpellAbility().addEffect(new GainAbilityControlledEffect(TrampleAbility.getInstance(), Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURES)); - this.getSpellAbility().addEffect(new GainAbilityControlledEffect(InfectAbility.getInstance(), Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURES)); + this.getSpellAbility().addEffect(new BoostControlledEffect(1, 1, Duration.EndOfTurn) + .setText("Until end of turn, creatures you control get +1/+1")); + this.getSpellAbility().addEffect(new GainAbilityControlledEffect(TrampleAbility.getInstance(), + Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURES).setText("and gain trample")); + this.getSpellAbility().addEffect(new GainAbilityControlledEffect(InfectAbility.getInstance(), + Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURES).setText("and infect")); } private TriumphOfTheHordes(final TriumphOfTheHordes card) { diff --git a/Mage.Sets/src/mage/cards/u/UndercityPlague.java b/Mage.Sets/src/mage/cards/u/UndercityPlague.java index cea2bd85f70..2b7525204d5 100644 --- a/Mage.Sets/src/mage/cards/u/UndercityPlague.java +++ b/Mage.Sets/src/mage/cards/u/UndercityPlague.java @@ -25,8 +25,9 @@ public final class UndercityPlague extends CardImpl { // Target player loses 1 life, discards a card, then sacrifices a permanent. this.getSpellAbility().addTarget(new TargetPlayer()); this.getSpellAbility().addEffect(new LoseLifeTargetEffect(1)); - this.getSpellAbility().addEffect(new DiscardTargetEffect(1)); - this.getSpellAbility().addEffect(new SacrificeEffect(new FilterPermanent(),1,"then that player")); + this.getSpellAbility().addEffect(new DiscardTargetEffect(1).setText(", discards a card")); + this.getSpellAbility().addEffect(new SacrificeEffect(new FilterPermanent(),1,"then that player") + .setText(", then sacrifices a permanent")); // Cipher (Then you may exile this spell card encoded on a creature you control. Whenever that creature deals combat damage to a player, its controller may cast a copy of the encoded card without paying its mana cost.) this.getSpellAbility().addEffect(new CipherEffect()); diff --git a/Mage.Sets/src/mage/cards/u/UrzasGuilt.java b/Mage.Sets/src/mage/cards/u/UrzasGuilt.java index 584f15bff2b..137aae472a5 100644 --- a/Mage.Sets/src/mage/cards/u/UrzasGuilt.java +++ b/Mage.Sets/src/mage/cards/u/UrzasGuilt.java @@ -22,10 +22,10 @@ public final class UrzasGuilt extends CardImpl { // Each player draws two cards, then discards three cards, then loses 4 life. this.getSpellAbility().addEffect(new DrawCardAllEffect(2)); Effect effect = new DiscardEachPlayerEffect(3, false); - effect.setText("then discards three cards,"); + effect.setText(", then discards three cards"); this.getSpellAbility().addEffect(effect); effect = new LoseLifeAllPlayersEffect(4); - effect.setText("then loses 4 life"); + effect.setText(", then loses 4 life"); this.getSpellAbility().addEffect(effect); } diff --git a/Mage.Sets/src/mage/cards/v/VaultSkyward.java b/Mage.Sets/src/mage/cards/v/VaultSkyward.java index 35b2c2e6f45..b19d83e7bc5 100644 --- a/Mage.Sets/src/mage/cards/v/VaultSkyward.java +++ b/Mage.Sets/src/mage/cards/v/VaultSkyward.java @@ -1,5 +1,3 @@ - - package mage.cards.v; import java.util.UUID; @@ -22,7 +20,7 @@ public final class VaultSkyward extends CardImpl { super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{U}"); this.getSpellAbility().addEffect(new GainAbilityTargetEffect(FlyingAbility.getInstance(), Duration.EndOfTurn)); - this.getSpellAbility().addEffect(new UntapTargetEffect()); + this.getSpellAbility().addEffect(new UntapTargetEffect().setText("Untap it")); this.getSpellAbility().addTarget(new TargetCreaturePermanent()); } diff --git a/Mage.Sets/src/mage/cards/v/VedalkenAnatomist.java b/Mage.Sets/src/mage/cards/v/VedalkenAnatomist.java index 2add95c6a0b..e216ee649e1 100644 --- a/Mage.Sets/src/mage/cards/v/VedalkenAnatomist.java +++ b/Mage.Sets/src/mage/cards/v/VedalkenAnatomist.java @@ -33,7 +33,7 @@ public final class VedalkenAnatomist extends CardImpl { this.toughness = new MageInt(2); Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new AddCountersTargetEffect(CounterType.M1M1.createInstance()), new ManaCostsImpl<>("{2}{U}")); - ability.addEffect(new MayTapOrUntapTargetEffect()); + ability.addEffect(new MayTapOrUntapTargetEffect().setText("You may tap or untap that creature")); ability.addCost(new TapSourceCost()); ability.addTarget(new TargetCreaturePermanent()); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/v/VeilOfBirds.java b/Mage.Sets/src/mage/cards/v/VeilOfBirds.java index 765e6569ee1..6cf073bbfe3 100644 --- a/Mage.Sets/src/mage/cards/v/VeilOfBirds.java +++ b/Mage.Sets/src/mage/cards/v/VeilOfBirds.java @@ -32,7 +32,7 @@ public final class VeilOfBirds extends CardImpl { TriggeredAbility ability = new SpellCastOpponentTriggeredAbility(new BecomesCreatureSourceEffect(new VeilOfBirdsToken(), null, Duration.WhileOnBattlefield), filter, false); this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, new SourceMatchesFilterCondition(StaticFilters.FILTER_PERMANENT_ENCHANTMENT), - "Whenever an opponent casts a spell, if Veil of Birds is an enchantment, Veil of Birds becomes a 1/1 Bird creature with flying.")); + "When an opponent casts a spell, if {this} is an enchantment, {this} becomes a 1/1 Bird creature with flying.")); } private VeilOfBirds(final VeilOfBirds card) { diff --git a/Mage.Sets/src/mage/cards/v/VeiledApparition.java b/Mage.Sets/src/mage/cards/v/VeiledApparition.java index 2d5d062ef1b..8fe3329f472 100644 --- a/Mage.Sets/src/mage/cards/v/VeiledApparition.java +++ b/Mage.Sets/src/mage/cards/v/VeiledApparition.java @@ -38,7 +38,7 @@ public final class VeiledApparition extends CardImpl { TriggeredAbility ability = new SpellCastOpponentTriggeredAbility(new BecomesCreatureSourceEffect(new VeilApparitionToken(), null, Duration.WhileOnBattlefield), filter, false); this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, new SourceMatchesFilterCondition(StaticFilters.FILTER_PERMANENT_ENCHANTMENT), - "Whenever an opponent casts a spell, if Veiled Apparition is an enchantment, Veiled Apparition becomes a 3/3 Illusion creature with flying and \"At the beginning of your upkeep, sacrifice Veiled Apparition unless you pay {1}{U}.")); + "When an opponent casts a spell, if {this} is an enchantment, {this} becomes a 3/3 Illusion creature with flying and \"At the beginning of your upkeep, sacrifice Veiled Apparition unless you pay {1}{U}.")); } diff --git a/Mage.Sets/src/mage/cards/v/VeiledSentry.java b/Mage.Sets/src/mage/cards/v/VeiledSentry.java index 134182b7075..2eb916af549 100644 --- a/Mage.Sets/src/mage/cards/v/VeiledSentry.java +++ b/Mage.Sets/src/mage/cards/v/VeiledSentry.java @@ -29,7 +29,7 @@ public final class VeiledSentry extends CardImpl { // When an opponent casts a spell, if Veiled Sentry is an enchantment, Veiled Sentry becomes an Illusion creature with power and toughness each equal to that spell's converted mana cost. this.addAbility(new ConditionalInterveningIfTriggeredAbility( new SpellCastOpponentTriggeredAbility(new VeiledSentryEffect(), false), - condition, "Whenever an opponent casts a spell, if {this} is an enchantment, " + + condition, "When an opponent casts a spell, if {this} is an enchantment, " + "{this} becomes an Illusion creature with power and toughness equal to that spell's mana value." )); } diff --git a/Mage.Sets/src/mage/cards/v/VeiledSerpent.java b/Mage.Sets/src/mage/cards/v/VeiledSerpent.java index f0a7335de66..e30338bdc53 100644 --- a/Mage.Sets/src/mage/cards/v/VeiledSerpent.java +++ b/Mage.Sets/src/mage/cards/v/VeiledSerpent.java @@ -35,7 +35,7 @@ public final class VeiledSerpent extends CardImpl { TriggeredAbility ability = new SpellCastOpponentTriggeredAbility(new BecomesCreatureSourceEffect(new VeiledSerpentToken(), null, Duration.WhileOnBattlefield), new FilterSpell(), false); this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, new SourceMatchesFilterCondition(StaticFilters.FILTER_PERMANENT_ENCHANTMENT), - "Whenever an opponent casts a spell, if Veiled Serpent is an enchantment, Veiled Serpent becomes a 4/4 Serpent creature that can't attack unless defending player controls an Island.")); + "When an opponent casts a spell, if {this} is an enchantment, {this} becomes a 4/4 Serpent creature that can't attack unless defending player controls an Island.")); // Cycling {2} this.addAbility(new CyclingAbility(new ManaCostsImpl<>("{2}"))); diff --git a/Mage.Sets/src/mage/cards/v/VipersKiss.java b/Mage.Sets/src/mage/cards/v/VipersKiss.java index cbdc8ac4a32..1f212419970 100644 --- a/Mage.Sets/src/mage/cards/v/VipersKiss.java +++ b/Mage.Sets/src/mage/cards/v/VipersKiss.java @@ -1,4 +1,3 @@ - package mage.cards.v; import java.util.UUID; @@ -15,7 +14,6 @@ import mage.constants.CardType; import mage.constants.SubType; import mage.constants.Duration; import mage.constants.Outcome; -import mage.constants.Zone; import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; @@ -37,9 +35,9 @@ public final class VipersKiss extends CardImpl { Ability ability = new EnchantAbility(auraTarget); this.addAbility(ability); // Enchanted creature gets -1/-1 and its activated abilities can't be activated. - ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(-1,-1, Duration.WhileOnBattlefield)); + ability = new SimpleStaticAbility(new BoostEnchantedEffect(-1,-1, Duration.WhileOnBattlefield)); Effect effect = new CantActivateAbilitiesAttachedEffect(); - effect.setText("and its activated abilities can't be activated"); + effect.setText(", and its activated abilities can't be activated"); ability.addEffect(effect); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/v/VulshokReplica.java b/Mage.Sets/src/mage/cards/v/VulshokReplica.java index d4a9a3fa41c..7247b9d8b0d 100644 --- a/Mage.Sets/src/mage/cards/v/VulshokReplica.java +++ b/Mage.Sets/src/mage/cards/v/VulshokReplica.java @@ -1,4 +1,3 @@ - package mage.cards.v; import java.util.UUID; @@ -26,7 +25,7 @@ public final class VulshokReplica extends CardImpl { this.subtype.add(SubType.BERSERKER); this.power = new MageInt(3); this.toughness = new MageInt(1); - Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(3), new ManaCostsImpl<>("{1}{R}")); + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(3, "it"), new ManaCostsImpl<>("{1}{R}")); ability.addCost(new SacrificeSourceCost()); ability.addTarget(new TargetPlayerOrPlaneswalker()); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/w/WarTorchGoblin.java b/Mage.Sets/src/mage/cards/w/WarTorchGoblin.java index fc9263b7b59..0c139d308ef 100644 --- a/Mage.Sets/src/mage/cards/w/WarTorchGoblin.java +++ b/Mage.Sets/src/mage/cards/w/WarTorchGoblin.java @@ -32,7 +32,7 @@ public final class WarTorchGoblin extends CardImpl { this.toughness = new MageInt(1); // {R}, Sacrifice War-Torch Goblin: War-Torch Goblin deals 2 damage to target blocking creature. - Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(2), new ColoredManaCost(ColoredManaSymbol.R)); + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(2, "it"), new ColoredManaCost(ColoredManaSymbol.R)); ability.addCost(new SacrificeSourceCost()); ability.addTarget(new TargetCreaturePermanent(new FilterBlockingCreature())); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/w/Warmth.java b/Mage.Sets/src/mage/cards/w/Warmth.java index 0915db7ce27..a7d309d9d06 100644 --- a/Mage.Sets/src/mage/cards/w/Warmth.java +++ b/Mage.Sets/src/mage/cards/w/Warmth.java @@ -17,7 +17,7 @@ import mage.filter.predicate.mageobject.ColorPredicate; */ public final class Warmth extends CardImpl { - private static final FilterSpell filter = new FilterSpell("red spell"); + private static final FilterSpell filter = new FilterSpell("a red spell"); static { filter.add(new ColorPredicate(ObjectColor.RED)); } diff --git a/Mage.Sets/src/mage/cards/w/WatchersOfTheDead.java b/Mage.Sets/src/mage/cards/w/WatchersOfTheDead.java index 73a51806bb6..846fe83be09 100644 --- a/Mage.Sets/src/mage/cards/w/WatchersOfTheDead.java +++ b/Mage.Sets/src/mage/cards/w/WatchersOfTheDead.java @@ -49,9 +49,9 @@ public final class WatchersOfTheDead extends CardImpl { class WatchersOfTheDeadEffect extends OneShotEffect { - public WatchersOfTheDeadEffect() { + WatchersOfTheDeadEffect() { super(Outcome.Benefit); - this.staticText = "Each opponent chooses 2 cards in their graveyard and exiles the rest"; + this.staticText = "Each opponent chooses two cards in their graveyard and exiles the rest"; } private WatchersOfTheDeadEffect(final WatchersOfTheDeadEffect effect) { diff --git a/Mage.Sets/src/mage/cards/w/Web.java b/Mage.Sets/src/mage/cards/w/Web.java index 3734f104797..07eef3c18db 100644 --- a/Mage.Sets/src/mage/cards/w/Web.java +++ b/Mage.Sets/src/mage/cards/w/Web.java @@ -1,4 +1,3 @@ - package mage.cards.w; import java.util.UUID; @@ -26,7 +25,6 @@ public final class Web extends CardImpl { super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{G}"); this.subtype.add(SubType.AURA); - // Enchant creature TargetPermanent auraTarget = new TargetCreaturePermanent(); this.getSpellAbility().addTarget(auraTarget); @@ -34,8 +32,9 @@ public final class Web extends CardImpl { Ability ability = new EnchantAbility(auraTarget); this.addAbility(ability); // Enchanted creature gets +0/+2 and has reach. - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(0, 2, Duration.WhileOnBattlefield))); - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(ReachAbility.getInstance(), AttachmentType.AURA))); + Ability ability2 = new SimpleStaticAbility(new BoostEnchantedEffect(0, 2, Duration.WhileOnBattlefield)); + ability2.addEffect(new GainAbilityAttachedEffect(ReachAbility.getInstance(), AttachmentType.AURA).setText("and has reach")); + this.addAbility(ability2); } private Web(final Web card) { diff --git a/Mage/src/main/java/mage/abilities/common/SourcePhaseInTriggeredAbility.java b/Mage/src/main/java/mage/abilities/common/SourcePhaseInTriggeredAbility.java index 702d4ab1a16..3bf89758443 100644 --- a/Mage/src/main/java/mage/abilities/common/SourcePhaseInTriggeredAbility.java +++ b/Mage/src/main/java/mage/abilities/common/SourcePhaseInTriggeredAbility.java @@ -13,7 +13,7 @@ public class SourcePhaseInTriggeredAbility extends TriggeredAbilityImpl { public SourcePhaseInTriggeredAbility(Effect effect, boolean optional) { super(Zone.BATTLEFIELD, effect, optional); - setTriggerPhrase("When {this} phases in, "); + setTriggerPhrase("Whenever {this} phases in, "); } protected SourcePhaseInTriggeredAbility(final SourcePhaseInTriggeredAbility ability) { diff --git a/Mage/src/main/java/mage/abilities/effects/common/ExileFromZoneTargetEffect.java b/Mage/src/main/java/mage/abilities/effects/common/ExileFromZoneTargetEffect.java index 82037f02383..5aeacfbb538 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/ExileFromZoneTargetEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/ExileFromZoneTargetEffect.java @@ -1,4 +1,3 @@ - package mage.abilities.effects.common; import mage.abilities.Ability; @@ -85,7 +84,10 @@ public class ExileFromZoneTargetEffect extends OneShotEffect { @Override public String getText(Mode mode) { - return "target " + (mode.getTargets().isEmpty() ? "player" : mode.getTargets().get(0).getTargetName()) + if (staticText != null && !staticText.isEmpty()) { + return staticText; + } + return getTargetPointer().describeTargets(mode.getTargets(), "that player") + " exiles " + CardUtil.numberToText(amount, "a") + ' ' + filter.getMessage() + " from their " + zone.toString().toLowerCase(); } diff --git a/Mage/src/main/java/mage/abilities/effects/common/MayTapOrUntapTargetEffect.java b/Mage/src/main/java/mage/abilities/effects/common/MayTapOrUntapTargetEffect.java index 5595d0ae0de..dc836388364 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/MayTapOrUntapTargetEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/MayTapOrUntapTargetEffect.java @@ -45,14 +45,9 @@ public class MayTapOrUntapTargetEffect extends OneShotEffect { @Override public String getText(Mode mode) { - if (!staticText.isEmpty()) { + if (staticText != null && !staticText.isEmpty()) { return staticText; } - if (mode.getTargets().isEmpty()) { - return "you may tap or untap it"; - } else { - String targetName = mode.getTargets().get(0).getTargetName(); - return "you may tap or untap " + (targetName.contains("target") ? "" : "target ") + targetName; - } + return "you may tap or untap " + getTargetPointer().describeTargets(mode.getTargets(), "it"); } } diff --git a/Mage/src/main/java/mage/abilities/effects/common/RollDiceEffect.java b/Mage/src/main/java/mage/abilities/effects/common/RollDiceEffect.java index 48df79794b9..16bbc2acaeb 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/RollDiceEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/RollDiceEffect.java @@ -9,6 +9,7 @@ import mage.abilities.effects.OneShotEffect; import mage.constants.Outcome; import mage.game.Game; import mage.players.Player; +import mage.util.CardUtil; /** * @author spjspj @@ -56,7 +57,7 @@ public class RollDiceEffect extends OneShotEffect { if (!staticText.isEmpty()) { return staticText; } - return "Roll a " + numSides + " sided die"; + return "Roll a " + CardUtil.numberToText(numSides) + "-sided die"; } @Override diff --git a/Mage/src/main/java/mage/abilities/effects/common/continuous/GainProtectionFromColorAllEffect.java b/Mage/src/main/java/mage/abilities/effects/common/continuous/GainProtectionFromColorAllEffect.java index afc603bea65..f800e4cfa9e 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/continuous/GainProtectionFromColorAllEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/continuous/GainProtectionFromColorAllEffect.java @@ -1,4 +1,3 @@ - package mage.abilities.effects.common.continuous; import mage.MageObject; @@ -13,6 +12,7 @@ import mage.filter.FilterPermanent; import mage.filter.predicate.mageobject.ColorPredicate; import mage.game.Game; import mage.players.Player; +import mage.util.CardUtil; /** * @author LoneFox @@ -65,6 +65,7 @@ public class GainProtectionFromColorAllEffect extends GainAbilityAllEffect { return staticText; } - return "Choose a color. " + filter.getMessage() + " gain protection from the chosen color " + duration.toString(); + return "Choose a color. " + CardUtil.getTextWithFirstCharUpperCase(filter.getMessage()) + + " gain protection from the chosen color " + duration.toString(); } } diff --git a/Mage/src/main/java/mage/filter/common/FilterUntappedCreature.java b/Mage/src/main/java/mage/filter/common/FilterUntappedCreature.java deleted file mode 100644 index 97422cb080b..00000000000 --- a/Mage/src/main/java/mage/filter/common/FilterUntappedCreature.java +++ /dev/null @@ -1,29 +0,0 @@ - - -package mage.filter.common; - -import mage.filter.predicate.permanent.TappedPredicate; - -/** - * @author noxx - */ -public class FilterUntappedCreature extends FilterCreaturePermanent { - - public FilterUntappedCreature() { - this("untapped creature"); - } - - public FilterUntappedCreature(String name) { - super(name); - this.add(TappedPredicate.UNTAPPED); - } - - protected FilterUntappedCreature(final FilterUntappedCreature filter) { - super(filter); - } - - @Override - public FilterUntappedCreature copy() { - return new FilterUntappedCreature(this); - } -}