From 481384a3c855715eb488f440223800879f7439d9 Mon Sep 17 00:00:00 2001 From: xenohedron Date: Sun, 16 Jul 2023 00:35:18 -0400 Subject: [PATCH] Text fixes [M10] [M11] [M12] [M13] [M14] [M15] [ORI] (#10630) * Text fixes M10-ORI core sets, part 1 * Text fixes M10-ORI core sets, part 2 * Text fixes M10-ORI core sets, part 3 * another text fix --- .../src/mage/cards/a/AccordersShield.java | 15 +++++++----- .../mage/cards/a/AjaniCallerOfThePride.java | 4 ++-- Mage.Sets/src/mage/cards/a/AjanisChosen.java | 14 ++++++----- .../src/mage/cards/a/AltacBloodseeker.java | 2 +- .../src/mage/cards/a/AngelicArbiter.java | 2 +- .../src/mage/cards/a/AnimistsAwakening.java | 2 +- .../src/mage/cards/a/ArchangelOfThune.java | 2 +- Mage.Sets/src/mage/cards/a/AutumnsVeil.java | 9 +++---- .../src/mage/cards/a/AvariciousDragon.java | 3 ++- .../src/mage/cards/b/BloodhunterBat.java | 2 +- .../src/mage/cards/b/BoonweaverGiant.java | 2 +- .../src/mage/cards/c/CallToTheGrave.java | 2 +- Mage.Sets/src/mage/cards/c/ChandrasFury.java | 5 ++-- Mage.Sets/src/mage/cards/c/CleaverRiot.java | 2 +- .../mage/cards/c/ClericOfTheForwardOrder.java | 4 ++-- .../src/mage/cards/c/CripplingBlight.java | 7 ++++-- .../src/mage/cards/c/CrumblingColossus.java | 3 ++- .../src/mage/cards/d/DarksteelForge.java | 18 +++----------- .../src/mage/cards/d/DemonOfDeathsGate.java | 4 ++-- .../src/mage/cards/d/DespoilerOfSouls.java | 2 +- .../src/mage/cards/d/DestructiveForce.java | 2 +- .../src/mage/cards/d/DiabolicRevelation.java | 2 +- .../src/mage/cards/e/EnshroudingMist.java | 2 +- Mage.Sets/src/mage/cards/f/Fervor.java | 2 +- .../src/mage/cards/f/FleshpulperGiant.java | 2 +- .../src/mage/cards/g/GoblinKaboomist.java | 1 + Mage.Sets/src/mage/cards/g/GriffinRider.java | 24 +++++++------------ Mage.Sets/src/mage/cards/g/Grindclock.java | 2 +- .../src/mage/cards/g/GuardianOfTheAges.java | 12 ++++------ .../src/mage/cards/h/HonoredHierarch.java | 2 +- Mage.Sets/src/mage/cards/i/Incite.java | 2 +- .../src/mage/cards/j/JaceTelepathUnbound.java | 2 +- .../mage/cards/k/KurkeshOnakkeAncient.java | 6 ++--- .../src/mage/cards/l/LilianasReaver.java | 2 +- .../src/mage/cards/l/LordOfTheUnreal.java | 3 ++- Mage.Sets/src/mage/cards/m/MantleOfWebs.java | 11 +++------ Mage.Sets/src/mage/cards/m/MindUnbound.java | 2 +- .../src/mage/cards/m/MindclawShaman.java | 2 +- Mage.Sets/src/mage/cards/m/Mindsparker.java | 2 +- Mage.Sets/src/mage/cards/m/MoltenBirth.java | 4 ++-- Mage.Sets/src/mage/cards/n/Necrobite.java | 2 +- .../src/mage/cards/n/NissasPilgrimage.java | 2 +- .../src/mage/cards/p/ParagonOfNewDawns.java | 2 +- Mage.Sets/src/mage/cards/p/PrismRing.java | 5 ++-- .../src/mage/cards/r/ReclusiveArtificer.java | 12 +++------- .../src/mage/cards/r/ResoluteArchangel.java | 2 +- .../src/mage/cards/s/ScepterOfEmpires.java | 2 +- .../src/mage/cards/s/SorinsVengeance.java | 2 +- Mage.Sets/src/mage/cards/s/SpectraWard.java | 3 ++- Mage.Sets/src/mage/cards/s/SpiritBonds.java | 11 ++++----- Mage.Sets/src/mage/cards/s/StabbingPain.java | 2 +- .../mage/cards/s/StaffOfTheDeathMagus.java | 8 +++++-- .../mage/cards/s/StaffOfTheFlameMagus.java | 7 ++++-- .../src/mage/cards/s/StaffOfTheMindMagus.java | 7 ++++-- .../src/mage/cards/s/StaffOfTheSunMagus.java | 7 ++++-- .../src/mage/cards/s/StaffOfTheWildMagus.java | 9 ++++--- .../src/mage/cards/s/StonehornChanter.java | 7 +++--- Mage.Sets/src/mage/cards/s/SunbladeElf.java | 6 ++--- .../src/mage/cards/s/SuppressionBonds.java | 7 +----- Mage.Sets/src/mage/cards/t/TasteOfBlood.java | 2 +- Mage.Sets/src/mage/cards/t/TenaciousDead.java | 3 ++- Mage.Sets/src/mage/cards/t/TheChainVeil.java | 2 +- .../src/mage/cards/t/TouchOfMoonglove.java | 2 +- .../src/mage/cards/t/TricksOfTheTrade.java | 9 +++---- Mage.Sets/src/mage/cards/v/VoraciousWurm.java | 3 ++- Mage.Sets/src/mage/cards/w/WildEvocation.java | 2 +- Mage.Sets/src/mage/cards/w/Willbreaker.java | 2 +- Mage.Sets/src/mage/cards/x/XathridGorgon.java | 2 +- .../BeginningOfCombatTriggeredAbility.java | 2 +- .../CantBeCounteredControlledEffect.java | 3 +++ .../common/CantBeTargetedAllEffect.java | 4 +++- .../common/CantBeTargetedSourceEffect.java | 4 +++- ...getOfTargetSpellAbilityToSourceEffect.java | 2 +- .../common/ExileAndReturnSourceEffect.java | 3 ++- .../abilities/keyword/ProtectionAbility.java | 3 +-- .../main/java/mage/filter/StaticFilters.java | 5 +++- .../emblems/GarrukApexPredatorEmblem.java | 2 +- .../mage/game/permanent/token/SquidToken.java | 2 +- 78 files changed, 175 insertions(+), 176 deletions(-) diff --git a/Mage.Sets/src/mage/cards/a/AccordersShield.java b/Mage.Sets/src/mage/cards/a/AccordersShield.java index 7a2b344fdd9..48cb3bb6064 100644 --- a/Mage.Sets/src/mage/cards/a/AccordersShield.java +++ b/Mage.Sets/src/mage/cards/a/AccordersShield.java @@ -1,10 +1,9 @@ - - package mage.cards.a; import java.util.UUID; + +import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; -import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.effects.common.continuous.BoostEquippedEffect; import mage.abilities.effects.common.continuous.GainAbilityAttachedEffect; import mage.abilities.keyword.EquipAbility; @@ -22,9 +21,13 @@ public final class AccordersShield extends CardImpl { public AccordersShield (UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{0}"); this.subtype.add(SubType.EQUIPMENT); - this.addAbility(new EquipAbility(Outcome.AddAbility, new GenericManaCost(3))); - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(VigilanceAbility.getInstance(), AttachmentType.EQUIPMENT))); - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEquippedEffect(0, 3))); + + Ability ability = new SimpleStaticAbility(new BoostEquippedEffect(0, 3)); + ability.addEffect(new GainAbilityAttachedEffect(VigilanceAbility.getInstance(), AttachmentType.EQUIPMENT).setText("and has vigilance")); + this.addAbility(ability); + + this.addAbility(new EquipAbility(3)); + } public AccordersShield (final AccordersShield card) { diff --git a/Mage.Sets/src/mage/cards/a/AjaniCallerOfThePride.java b/Mage.Sets/src/mage/cards/a/AjaniCallerOfThePride.java index 86b31f88433..da496743f48 100644 --- a/Mage.Sets/src/mage/cards/a/AjaniCallerOfThePride.java +++ b/Mage.Sets/src/mage/cards/a/AjaniCallerOfThePride.java @@ -42,8 +42,8 @@ public final class AjaniCallerOfThePride extends CardImpl { this.addAbility(ability); // -3: Target creature gains flying and double strike until end of turn. Effects effects = new Effects(); - effects.add(new GainAbilityTargetEffect(FlyingAbility.getInstance(), Duration.EndOfTurn)); - effects.add(new GainAbilityTargetEffect(DoubleStrikeAbility.getInstance(), Duration.EndOfTurn)); + effects.add(new GainAbilityTargetEffect(FlyingAbility.getInstance(), Duration.EndOfTurn).setText("target creature gains flying")); + effects.add(new GainAbilityTargetEffect(DoubleStrikeAbility.getInstance(), Duration.EndOfTurn).setText("and double strike until end of turn")); ability = new LoyaltyAbility(effects, -3); ability.addTarget(new TargetCreaturePermanent()); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/a/AjanisChosen.java b/Mage.Sets/src/mage/cards/a/AjanisChosen.java index 11449b828a7..9d570428317 100644 --- a/Mage.Sets/src/mage/cards/a/AjanisChosen.java +++ b/Mage.Sets/src/mage/cards/a/AjanisChosen.java @@ -2,12 +2,12 @@ package mage.cards.a; import mage.MageInt; import mage.abilities.Ability; -import mage.abilities.common.EntersBattlefieldAllTriggeredAbility; +import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility; import mage.abilities.effects.OneShotEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.*; -import mage.filter.common.FilterControlledEnchantmentPermanent; +import mage.filter.common.FilterEnchantmentPermanent; import mage.game.Game; import mage.game.permanent.Permanent; import mage.game.permanent.token.CatToken; @@ -21,6 +21,8 @@ import java.util.UUID; */ public final class AjanisChosen extends CardImpl { + private static final FilterEnchantmentPermanent filter = new FilterEnchantmentPermanent("an enchantment"); + public AjanisChosen(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}{W}"); this.subtype.add(SubType.CAT); @@ -30,9 +32,9 @@ public final class AjanisChosen extends CardImpl { this.toughness = new MageInt(3); // Whenever an enchantment enters the battlefield under your control, create a 2/2 white Cat creature token. If that enchantment is an Aura, you may attach it to the token. - this.addAbility(new EntersBattlefieldAllTriggeredAbility( - Zone.BATTLEFIELD, new AjanisChosenEffect(), new FilterControlledEnchantmentPermanent(), false, SetTargetPointer.PERMANENT, - "Whenever an enchantment enters the battlefield under your control, create a 2/2 white Cat creature token. If that enchantment is an Aura, you may attach it to the token")); + this.addAbility(new EntersBattlefieldControlledTriggeredAbility( + Zone.BATTLEFIELD, new AjanisChosenEffect(), filter, + false, SetTargetPointer.PERMANENT, null)); } private AjanisChosen(final AjanisChosen card) { @@ -90,4 +92,4 @@ class AjanisChosenEffect extends OneShotEffect { } return false; } -} \ No newline at end of file +} diff --git a/Mage.Sets/src/mage/cards/a/AltacBloodseeker.java b/Mage.Sets/src/mage/cards/a/AltacBloodseeker.java index dfb56e9a31e..7e087b2f74e 100644 --- a/Mage.Sets/src/mage/cards/a/AltacBloodseeker.java +++ b/Mage.Sets/src/mage/cards/a/AltacBloodseeker.java @@ -34,7 +34,7 @@ public final class AltacBloodseeker extends CardImpl { // Whenever a creature an opponent controls dies, Altac Bloodseeker gets +2/+0 and gains first strike and haste until end of turn. Effect effect = new BoostSourceEffect(2, 0, Duration.EndOfTurn); effect.setText("{this} gets +2/+0"); - Ability ability = new DiesCreatureTriggeredAbility(effect, false, StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE); + Ability ability = new DiesCreatureTriggeredAbility(effect, false, StaticFilters.FILTER_OPPONENTS_PERMANENT_A_CREATURE); effect = new GainAbilitySourceEffect(FirstStrikeAbility.getInstance(), Duration.EndOfTurn); effect.setText("and gains first strike"); diff --git a/Mage.Sets/src/mage/cards/a/AngelicArbiter.java b/Mage.Sets/src/mage/cards/a/AngelicArbiter.java index 64b74a7824e..81f26520e8b 100644 --- a/Mage.Sets/src/mage/cards/a/AngelicArbiter.java +++ b/Mage.Sets/src/mage/cards/a/AngelicArbiter.java @@ -86,7 +86,7 @@ class AngelicArbiterEffect2 extends ContinuousRuleModifyingEffectImpl { public AngelicArbiterEffect2() { super(Duration.WhileOnBattlefield, Outcome.Benefit); - staticText = "Each opponent who attacked this turn can't cast spells"; + staticText = "Each opponent who attacked with a creature this turn can't cast spells"; } public AngelicArbiterEffect2(final AngelicArbiterEffect2 effect) { diff --git a/Mage.Sets/src/mage/cards/a/AnimistsAwakening.java b/Mage.Sets/src/mage/cards/a/AnimistsAwakening.java index 5f0a53da478..442196e4f9c 100644 --- a/Mage.Sets/src/mage/cards/a/AnimistsAwakening.java +++ b/Mage.Sets/src/mage/cards/a/AnimistsAwakening.java @@ -45,7 +45,7 @@ class AnimistsAwakeningEffect extends OneShotEffect { public AnimistsAwakeningEffect() { super(Outcome.PutCardInPlay); - staticText = "Reveal the top X cards of your library. Put all land cards from among them onto the battlefield tapped and the rest on the bottom of your library in any order." + staticText = "Reveal the top X cards of your library. Put all land cards from among them onto the battlefield tapped and the rest on the bottom of your library in a random order." + "
Spell mastery — If there are two or more instant and/or sorcery cards in your graveyard, untap those lands"; } diff --git a/Mage.Sets/src/mage/cards/a/ArchangelOfThune.java b/Mage.Sets/src/mage/cards/a/ArchangelOfThune.java index aca8171f558..48cf3df711f 100644 --- a/Mage.Sets/src/mage/cards/a/ArchangelOfThune.java +++ b/Mage.Sets/src/mage/cards/a/ArchangelOfThune.java @@ -36,7 +36,7 @@ public final class ArchangelOfThune extends CardImpl { this.addAbility(new GainLifeControllerTriggeredAbility( new AddCountersAllEffect( CounterType.P1P1.createInstance(), - StaticFilters.FILTER_CONTROLLED_CREATURES + StaticFilters.FILTER_CONTROLLED_CREATURE ), false )); } diff --git a/Mage.Sets/src/mage/cards/a/AutumnsVeil.java b/Mage.Sets/src/mage/cards/a/AutumnsVeil.java index a23d07d4ade..081c8d5361a 100644 --- a/Mage.Sets/src/mage/cards/a/AutumnsVeil.java +++ b/Mage.Sets/src/mage/cards/a/AutumnsVeil.java @@ -1,5 +1,3 @@ - - package mage.cards.a; import java.util.UUID; @@ -11,7 +9,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; import mage.filter.FilterSpell; -import mage.filter.common.FilterControlledCreaturePermanent; +import mage.filter.StaticFilters; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.ColorPredicate; @@ -22,7 +20,6 @@ import mage.filter.predicate.mageobject.ColorPredicate; public final class AutumnsVeil extends CardImpl { private static final FilterSpell filterTarget1 = new FilterSpell("spells you control"); - private static final FilterControlledCreaturePermanent filterTarget2 = new FilterControlledCreaturePermanent(); private static final FilterSpell filterSource = new FilterSpell("blue or black spells"); static { @@ -38,7 +35,8 @@ public final class AutumnsVeil extends CardImpl { this.getSpellAbility().addEffect(new CantBeCounteredControlledEffect(filterTarget1, filterSource, Duration.EndOfTurn)); // and creatures you control can't be the targets of blue or black spells this turn. - this.getSpellAbility().addEffect(new CantBeTargetedAllEffect(filterTarget2, filterSource, Duration.EndOfTurn)); + this.getSpellAbility().addEffect(new CantBeTargetedAllEffect(StaticFilters.FILTER_CONTROLLED_CREATURES, filterSource, Duration.EndOfTurn) + .concatBy(", and")); } private AutumnsVeil(final AutumnsVeil card) { @@ -51,4 +49,3 @@ public final class AutumnsVeil extends CardImpl { } } - diff --git a/Mage.Sets/src/mage/cards/a/AvariciousDragon.java b/Mage.Sets/src/mage/cards/a/AvariciousDragon.java index 56896b5e762..782dc2f9107 100644 --- a/Mage.Sets/src/mage/cards/a/AvariciousDragon.java +++ b/Mage.Sets/src/mage/cards/a/AvariciousDragon.java @@ -29,7 +29,8 @@ public final class AvariciousDragon extends CardImpl { // Flying this.addAbility(FlyingAbility.getInstance()); // At the beginning of your draw step, draw an additional card. - this.addAbility(new BeginningOfDrawTriggeredAbility(new DrawCardSourceControllerEffect(1), TargetController.YOU, false)); + this.addAbility(new BeginningOfDrawTriggeredAbility(new DrawCardSourceControllerEffect(1) + .setText("draw an additional card"), TargetController.YOU, false)); // At the beginning of your end step, discard your hand. this.addAbility(new BeginningOfEndStepTriggeredAbility(new DiscardHandControllerEffect(), TargetController.YOU, false)); } diff --git a/Mage.Sets/src/mage/cards/b/BloodhunterBat.java b/Mage.Sets/src/mage/cards/b/BloodhunterBat.java index 9c421c045f7..8fe3a6ee759 100644 --- a/Mage.Sets/src/mage/cards/b/BloodhunterBat.java +++ b/Mage.Sets/src/mage/cards/b/BloodhunterBat.java @@ -31,7 +31,7 @@ public final class BloodhunterBat extends CardImpl { this.addAbility(FlyingAbility.getInstance()); // When Bloodhunter Bat enters the battlefield, target player loses 2 life and you gain 2 life. Ability ability = new EntersBattlefieldTriggeredAbility(new LoseLifeTargetEffect(2)); - ability.addEffect(new GainLifeEffect(2)); + ability.addEffect(new GainLifeEffect(2).concatBy("and")); ability.addTarget(new TargetPlayer()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/b/BoonweaverGiant.java b/Mage.Sets/src/mage/cards/b/BoonweaverGiant.java index f9782089c14..8f2ef511dbc 100644 --- a/Mage.Sets/src/mage/cards/b/BoonweaverGiant.java +++ b/Mage.Sets/src/mage/cards/b/BoonweaverGiant.java @@ -55,7 +55,7 @@ class BoonweaverGiantEffect extends OneShotEffect { public BoonweaverGiantEffect() { super(Outcome.UnboostCreature); - this.staticText = "you may search your graveyard, hand, and/or library for an Aura card and put it onto the battlefield attached to {this}." + + this.staticText = "you may search your graveyard, hand, and/or library for an Aura card and put it onto the battlefield attached to {this}. " + "If you search your library this way, shuffle."; } diff --git a/Mage.Sets/src/mage/cards/c/CallToTheGrave.java b/Mage.Sets/src/mage/cards/c/CallToTheGrave.java index ad8889a8fee..31b045c048d 100644 --- a/Mage.Sets/src/mage/cards/c/CallToTheGrave.java +++ b/Mage.Sets/src/mage/cards/c/CallToTheGrave.java @@ -37,7 +37,7 @@ public final class CallToTheGrave extends CardImpl { super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{4}{B}"); // At the beginning of each player's upkeep, that player sacrifices a non-Zombie creature. - Ability ability = new BeginningOfUpkeepTriggeredAbility(new SacrificeEffect(filter, 1, "that player "), TargetController.ANY, false); + Ability ability = new BeginningOfUpkeepTriggeredAbility(new SacrificeEffect(filter, 1, "that player"), TargetController.ANY, false); this.addAbility(ability); // At the beginning of the end step, if no creatures are on the battlefield, sacrifice Call to the Grave. TriggeredAbility triggered = new OnEventTriggeredAbility(GameEvent.EventType.END_TURN_STEP_PRE, "beginning of the end step", true, new SacrificeSourceEffect()); diff --git a/Mage.Sets/src/mage/cards/c/ChandrasFury.java b/Mage.Sets/src/mage/cards/c/ChandrasFury.java index f09106f4523..98e752ca138 100644 --- a/Mage.Sets/src/mage/cards/c/ChandrasFury.java +++ b/Mage.Sets/src/mage/cards/c/ChandrasFury.java @@ -7,7 +7,6 @@ import mage.abilities.effects.common.DamageTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.common.FilterCreaturePermanent; import mage.target.common.TargetPlayerOrPlaneswalker; /** @@ -21,8 +20,8 @@ public final class ChandrasFury extends CardImpl { // Chandra's Fury deals 4 damage to target player and 1 damage to each creature that player controls. this.getSpellAbility().addEffect(new DamageTargetEffect(4)); - this.getSpellAbility().addEffect(new DamageAllControlledTargetEffect(1, new FilterCreaturePermanent()) - .setText("and each creature that player or that planeswalker's controller controls") + this.getSpellAbility().addEffect(new DamageAllControlledTargetEffect(1) + .setText("and 1 damage to each creature that player or that planeswalker's controller controls") ); this.getSpellAbility().addTarget(new TargetPlayerOrPlaneswalker()); } diff --git a/Mage.Sets/src/mage/cards/c/CleaverRiot.java b/Mage.Sets/src/mage/cards/c/CleaverRiot.java index 69168651edd..0d7a07776f3 100644 --- a/Mage.Sets/src/mage/cards/c/CleaverRiot.java +++ b/Mage.Sets/src/mage/cards/c/CleaverRiot.java @@ -20,7 +20,7 @@ public final class CleaverRiot extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{R}"); // Creatures you control gain double strike until end of turn. - this.getSpellAbility().addEffect(new GainAbilityControlledEffect(DoubleStrikeAbility.getInstance(), Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURE, false)); + this.getSpellAbility().addEffect(new GainAbilityControlledEffect(DoubleStrikeAbility.getInstance(), Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURES, false)); } private CleaverRiot(final CleaverRiot card) { diff --git a/Mage.Sets/src/mage/cards/c/ClericOfTheForwardOrder.java b/Mage.Sets/src/mage/cards/c/ClericOfTheForwardOrder.java index ca172def8dd..62d96a34d4b 100644 --- a/Mage.Sets/src/mage/cards/c/ClericOfTheForwardOrder.java +++ b/Mage.Sets/src/mage/cards/c/ClericOfTheForwardOrder.java @@ -20,7 +20,7 @@ import mage.filter.predicate.mageobject.NamePredicate; */ public final class ClericOfTheForwardOrder extends CardImpl { - private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("each creature you control named Cleric of the Forward Order"); + private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature you control named Cleric of the Forward Order"); static { filter.add(new NamePredicate("Cleric of the Forward Order")); @@ -46,4 +46,4 @@ public final class ClericOfTheForwardOrder extends CardImpl { public ClericOfTheForwardOrder copy() { return new ClericOfTheForwardOrder(this); } -} \ No newline at end of file +} diff --git a/Mage.Sets/src/mage/cards/c/CripplingBlight.java b/Mage.Sets/src/mage/cards/c/CripplingBlight.java index afb3375946e..85d80fa5275 100644 --- a/Mage.Sets/src/mage/cards/c/CripplingBlight.java +++ b/Mage.Sets/src/mage/cards/c/CripplingBlight.java @@ -2,6 +2,8 @@ package mage.cards.c; import java.util.UUID; + +import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.common.AttachEffect; import mage.abilities.effects.common.combat.CantBlockAttachedEffect; @@ -31,8 +33,9 @@ public final class CripplingBlight extends CardImpl { this.addAbility(new EnchantAbility(auraTarget)); // Enchanted creature gets -1/-1 and can't block. - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(-1, -1, Duration.WhileOnBattlefield))); - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CantBlockAttachedEffect(AttachmentType.AURA))); + Ability ability = new SimpleStaticAbility(new BoostEnchantedEffect(-1, -1)); + ability.addEffect(new CantBlockAttachedEffect(AttachmentType.AURA).setText("and can't block")); + this.addAbility(ability); } private CripplingBlight(final CripplingBlight card) { diff --git a/Mage.Sets/src/mage/cards/c/CrumblingColossus.java b/Mage.Sets/src/mage/cards/c/CrumblingColossus.java index 04ad1df1dd1..da233545dbf 100644 --- a/Mage.Sets/src/mage/cards/c/CrumblingColossus.java +++ b/Mage.Sets/src/mage/cards/c/CrumblingColossus.java @@ -28,7 +28,8 @@ public final class CrumblingColossus extends CardImpl { this.addAbility(TrampleAbility.getInstance()); - this.addAbility(new AttacksTriggeredAbility(new CreateDelayedTriggeredAbilityEffect(new AtTheEndOfCombatDelayedTriggeredAbility(new SacrificeSourceEffect())), false)); + this.addAbility(new AttacksTriggeredAbility(new CreateDelayedTriggeredAbilityEffect(new AtTheEndOfCombatDelayedTriggeredAbility(new SacrificeSourceEffect())) + .setText("sacrifice it at end of combat"), false).setTriggerPhrase("When {this} attacks, ")); } private CrumblingColossus(final CrumblingColossus card) { diff --git a/Mage.Sets/src/mage/cards/d/DarksteelForge.java b/Mage.Sets/src/mage/cards/d/DarksteelForge.java index 08d2cd2d7b6..8a661da14b3 100644 --- a/Mage.Sets/src/mage/cards/d/DarksteelForge.java +++ b/Mage.Sets/src/mage/cards/d/DarksteelForge.java @@ -1,38 +1,26 @@ - - package mage.cards.d; import java.util.UUID; import mage.abilities.common.SimpleStaticAbility; -import mage.abilities.effects.Effect; import mage.abilities.effects.common.continuous.GainAbilityAllEffect; import mage.abilities.keyword.IndestructibleAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; -import mage.constants.Zone; -import mage.filter.common.FilterControlledPermanent; +import mage.filter.StaticFilters; /** * @author Loki */ public final class DarksteelForge extends CardImpl { - private static final FilterControlledPermanent filter = new FilterControlledPermanent("Artifacts you control"); - - static { - filter.add(CardType.ARTIFACT.getPredicate()); - } - public DarksteelForge(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{9}"); // Artifacts you control are indestructible. - Effect effect = new GainAbilityAllEffect(IndestructibleAbility.getInstance(), Duration.WhileOnBattlefield, filter, false); - effect.setText("Artifacts you control are indestructible"); - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect)); - + this.addAbility(new SimpleStaticAbility(new GainAbilityAllEffect(IndestructibleAbility.getInstance(), + Duration.WhileOnBattlefield, StaticFilters.FILTER_CONTROLLED_PERMANENT_ARTIFACTS, false))); } private DarksteelForge(final DarksteelForge card) { diff --git a/Mage.Sets/src/mage/cards/d/DemonOfDeathsGate.java b/Mage.Sets/src/mage/cards/d/DemonOfDeathsGate.java index 1ac3d6d925a..9f9bdb4410b 100644 --- a/Mage.Sets/src/mage/cards/d/DemonOfDeathsGate.java +++ b/Mage.Sets/src/mage/cards/d/DemonOfDeathsGate.java @@ -24,7 +24,7 @@ import mage.target.common.TargetControlledPermanent; */ public final class DemonOfDeathsGate extends CardImpl { - private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("black creature"); + private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("black creatures"); static { filter.add(new ColorPredicate(ObjectColor.BLACK)); @@ -39,7 +39,7 @@ public final class DemonOfDeathsGate extends CardImpl { // You may pay 6 life and sacrifice three black creatures rather than pay Demon of Death's Gate's mana cost AlternativeCostSourceAbility alternateCosts = new AlternativeCostSourceAbility(new PayLifeCost(6)); - alternateCosts.addCost(new SacrificeTargetCost(new TargetControlledPermanent(3, 3, filter, false))); + alternateCosts.addCost(new SacrificeTargetCost(new TargetControlledPermanent(3, filter))); this.addAbility(alternateCosts); this.addAbility(FlyingAbility.getInstance()); diff --git a/Mage.Sets/src/mage/cards/d/DespoilerOfSouls.java b/Mage.Sets/src/mage/cards/d/DespoilerOfSouls.java index 581a37661db..03cf9bdc02d 100644 --- a/Mage.Sets/src/mage/cards/d/DespoilerOfSouls.java +++ b/Mage.Sets/src/mage/cards/d/DespoilerOfSouls.java @@ -42,7 +42,7 @@ public final class DespoilerOfSouls extends CardImpl { // {B}{B}, Exile two other creature cards from your graveyard: Return Despoiler of Souls from your graveyard to the battlefield. Ability ability = new SimpleActivatedAbility( Zone.GRAVEYARD, - new ReturnSourceFromGraveyardToBattlefieldEffect(false), + new ReturnSourceFromGraveyardToBattlefieldEffect(false, false), new ManaCostsImpl<>("{B}{B}") ); ability.addCost(new ExileFromGraveCost(new TargetCardInYourGraveyard(2, filter))); diff --git a/Mage.Sets/src/mage/cards/d/DestructiveForce.java b/Mage.Sets/src/mage/cards/d/DestructiveForce.java index 68fa44a23ce..df91072e7b0 100644 --- a/Mage.Sets/src/mage/cards/d/DestructiveForce.java +++ b/Mage.Sets/src/mage/cards/d/DestructiveForce.java @@ -19,7 +19,7 @@ import mage.filter.common.FilterCreaturePermanent; */ public final class DestructiveForce extends CardImpl { - private static final FilterControlledPermanent filterLand = new FilterControlledLandPermanent(); + private static final FilterControlledPermanent filterLand = new FilterControlledLandPermanent("lands"); private static final FilterPermanent filterCreature = new FilterCreaturePermanent(); diff --git a/Mage.Sets/src/mage/cards/d/DiabolicRevelation.java b/Mage.Sets/src/mage/cards/d/DiabolicRevelation.java index 42bd43284fc..8e82a67d2b2 100644 --- a/Mage.Sets/src/mage/cards/d/DiabolicRevelation.java +++ b/Mage.Sets/src/mage/cards/d/DiabolicRevelation.java @@ -39,7 +39,7 @@ class DiabolicRevelationEffect extends OneShotEffect { DiabolicRevelationEffect() { super(Outcome.Benefit); - this.staticText = "Search your library for up to X cards and put those cards into your hand. Then shuffle"; + this.staticText = "Search your library for up to X cards, put those cards into your hand, then shuffle"; } private DiabolicRevelationEffect(final DiabolicRevelationEffect effect) { diff --git a/Mage.Sets/src/mage/cards/e/EnshroudingMist.java b/Mage.Sets/src/mage/cards/e/EnshroudingMist.java index d861b0779df..c47e08dbd6d 100644 --- a/Mage.Sets/src/mage/cards/e/EnshroudingMist.java +++ b/Mage.Sets/src/mage/cards/e/EnshroudingMist.java @@ -27,7 +27,7 @@ public final class EnshroudingMist extends CardImpl { // Target creature gets +1/+1 until end of turn. Prevent all damage that would dealt to it this turn. If it's renowned, untap it. this.getSpellAbility().addEffect(new BoostTargetEffect(1, 1, Duration.EndOfTurn)); Effect effect = new PreventDamageToTargetEffect(Duration.EndOfTurn, Integer.MAX_VALUE); - effect.setText("Prevent all damage that would dealt to it this turn"); + effect.setText("Prevent all damage that would be dealt to it this turn"); this.getSpellAbility().addEffect(effect); OneShotEffect effect2 = new UntapTargetEffect(); effect2.setText("untap it"); diff --git a/Mage.Sets/src/mage/cards/f/Fervor.java b/Mage.Sets/src/mage/cards/f/Fervor.java index 07a7105c70f..bb9514e88fe 100644 --- a/Mage.Sets/src/mage/cards/f/Fervor.java +++ b/Mage.Sets/src/mage/cards/f/Fervor.java @@ -23,7 +23,7 @@ public final class Fervor extends CardImpl { // Creatures you control have haste. this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityControlledEffect( - HasteAbility.getInstance(), Duration.WhileOnBattlefield, StaticFilters.FILTER_PERMANENT_CREATURE, false))); + HasteAbility.getInstance(), Duration.WhileOnBattlefield, StaticFilters.FILTER_PERMANENT_CREATURES, false))); } private Fervor(final Fervor card) { diff --git a/Mage.Sets/src/mage/cards/f/FleshpulperGiant.java b/Mage.Sets/src/mage/cards/f/FleshpulperGiant.java index 756716c6bf9..ae1354019a3 100644 --- a/Mage.Sets/src/mage/cards/f/FleshpulperGiant.java +++ b/Mage.Sets/src/mage/cards/f/FleshpulperGiant.java @@ -21,7 +21,7 @@ import mage.target.common.TargetCreaturePermanent; */ public final class FleshpulperGiant extends CardImpl { - private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with toughess 2 or less"); + private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with toughness 2 or less"); static { filter.add(new ToughnessPredicate(ComparisonType.FEWER_THAN, 3)); diff --git a/Mage.Sets/src/mage/cards/g/GoblinKaboomist.java b/Mage.Sets/src/mage/cards/g/GoblinKaboomist.java index bc54544f06d..4d204297d39 100644 --- a/Mage.Sets/src/mage/cards/g/GoblinKaboomist.java +++ b/Mage.Sets/src/mage/cards/g/GoblinKaboomist.java @@ -54,6 +54,7 @@ class GoblinKaboomistFlipCoinEffect extends OneShotEffect { public GoblinKaboomistFlipCoinEffect() { super(Outcome.Damage); + staticText = "Then flip a coin. If you lose the flip, {this} deals 2 damage to itself"; } public GoblinKaboomistFlipCoinEffect(final GoblinKaboomistFlipCoinEffect effect) { diff --git a/Mage.Sets/src/mage/cards/g/GriffinRider.java b/Mage.Sets/src/mage/cards/g/GriffinRider.java index ae5e110c30e..7d19dd153ba 100644 --- a/Mage.Sets/src/mage/cards/g/GriffinRider.java +++ b/Mage.Sets/src/mage/cards/g/GriffinRider.java @@ -1,9 +1,10 @@ - package mage.cards.g; import java.util.UUID; import mage.MageInt; +import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.condition.Condition; import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition; import mage.abilities.decorator.ConditionalContinuousEffect; import mage.abilities.effects.common.continuous.BoostSourceEffect; @@ -14,9 +15,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; import mage.constants.SubType; -import mage.constants.Zone; -import mage.filter.FilterPermanent; -import mage.filter.common.FilterCreaturePermanent; +import mage.filter.common.FilterControlledCreaturePermanent; /** * @@ -24,13 +23,7 @@ import mage.filter.common.FilterCreaturePermanent; */ public final class GriffinRider extends CardImpl { - private static final String rule1 = "As long as you control a Griffin creature, {this} gets +3/+3."; - private static final String rule2 = "As long as you control a Griffin creature, {this} has flying."; - private static final FilterPermanent filterGriffinCard = new FilterCreaturePermanent(); - - static { - filterGriffinCard.add(SubType.GRIFFIN.getPredicate()); - } + private static final Condition condition = new PermanentsOnTheBattlefieldCondition(new FilterControlledCreaturePermanent(SubType.GRIFFIN)); public GriffinRider(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}"); @@ -42,10 +35,11 @@ public final class GriffinRider extends CardImpl { this.toughness = new MageInt(1); // As long as you control a Griffin creature, Griffin Rider gets +3/+3 and has flying. - ConditionalContinuousEffect effect1 = new ConditionalContinuousEffect(new BoostSourceEffect(3, 3, Duration.WhileOnBattlefield), new PermanentsOnTheBattlefieldCondition(filterGriffinCard), rule1); - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect1)); - ConditionalContinuousEffect effect2 = new ConditionalContinuousEffect(new GainAbilitySourceEffect(FlyingAbility.getInstance()), new PermanentsOnTheBattlefieldCondition(filterGriffinCard), rule2); - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect2)); + Ability ability = new SimpleStaticAbility(new ConditionalContinuousEffect(new BoostSourceEffect(3, 3, Duration.WhileOnBattlefield), + condition, "as long as you control a Griffin creature, {this} gets +3/+3")); + ability.addEffect(new ConditionalContinuousEffect(new GainAbilitySourceEffect(FlyingAbility.getInstance()), + condition, "and has flying")); + this.addAbility(ability); } private GriffinRider(final GriffinRider card) { diff --git a/Mage.Sets/src/mage/cards/g/Grindclock.java b/Mage.Sets/src/mage/cards/g/Grindclock.java index 4dccac6bf8a..623f70bf8cf 100644 --- a/Mage.Sets/src/mage/cards/g/Grindclock.java +++ b/Mage.Sets/src/mage/cards/g/Grindclock.java @@ -48,7 +48,7 @@ class GrindclockEffect extends OneShotEffect { public GrindclockEffect() { super(Outcome.Detriment); - staticText = "Target player puts the top X cards of their library into their graveyard, where X is the number of charge counters on {this}"; + staticText = "Target player mills X cards, where X is the number of charge counters on {this}"; } public GrindclockEffect(final GrindclockEffect effect) { diff --git a/Mage.Sets/src/mage/cards/g/GuardianOfTheAges.java b/Mage.Sets/src/mage/cards/g/GuardianOfTheAges.java index 08d836f4352..4e66463eadd 100644 --- a/Mage.Sets/src/mage/cards/g/GuardianOfTheAges.java +++ b/Mage.Sets/src/mage/cards/g/GuardianOfTheAges.java @@ -17,7 +17,6 @@ import mage.filter.FilterCard; import mage.filter.predicate.Predicates; import mage.game.Game; import mage.game.events.GameEvent; -import mage.game.events.GameEvent.EventType; import mage.game.permanent.Permanent; /** @@ -69,17 +68,14 @@ class GuardianOfTheAgesTriggerAbility extends TriggeredAbilityImpl { @Override public boolean checkTrigger(GameEvent event, Game game){ Permanent creature = game.getPermanent(event.getSourceId()); - if (creature != null && filter.match(creature, game) - && game.getOpponents(this.getControllerId()).contains(creature.getControllerId()) - && game.getPermanent(this.getSourceId()).getAbilities().contains(DefenderAbility.getInstance())) { - return true; - } - return false; + return creature != null && filter.match(creature, game) + && game.getOpponents(this.getControllerId()).contains(creature.getControllerId()) + && game.getPermanent(this.getSourceId()).getAbilities().contains(DefenderAbility.getInstance()); } @Override public String getRule(){ - return "Whenever a creature attacks you or a planeswalker you control, if {this} has defender, it loses defender and gains trample."; + return "When a creature attacks you or a planeswalker you control, if {this} has defender, it loses defender and gains trample."; } @Override diff --git a/Mage.Sets/src/mage/cards/h/HonoredHierarch.java b/Mage.Sets/src/mage/cards/h/HonoredHierarch.java index a48fdb1ce71..b142799529d 100644 --- a/Mage.Sets/src/mage/cards/h/HonoredHierarch.java +++ b/Mage.Sets/src/mage/cards/h/HonoredHierarch.java @@ -39,7 +39,7 @@ public final class HonoredHierarch extends CardImpl { Effect effect = new ConditionalContinuousEffect( new GainAbilitySourceEffect(VigilanceAbility.getInstance(), Duration.WhileOnBattlefield), RenownedSourceCondition.instance, - "As long as {this} is renown, it has vigilance"); + "As long as {this} is renowned, it has vigilance"); Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, effect); effect = new ConditionalContinuousEffect( new GainAbilitySourceEffect(new AnyColorManaAbility(), Duration.WhileOnBattlefield), diff --git a/Mage.Sets/src/mage/cards/i/Incite.java b/Mage.Sets/src/mage/cards/i/Incite.java index 0c36ff9cfd4..f3da767313c 100644 --- a/Mage.Sets/src/mage/cards/i/Incite.java +++ b/Mage.Sets/src/mage/cards/i/Incite.java @@ -25,7 +25,7 @@ public final class Incite extends CardImpl { // Target creature becomes red until end of turn and attacks this turn if able. this.getSpellAbility().addTarget(new TargetCreaturePermanent()); this.getSpellAbility().addEffect(new BecomesColorTargetEffect(ObjectColor.RED, Duration.EndOfTurn, "Target creature becomes red until end of turn")); - this.getSpellAbility().addEffect(new AttacksIfAbleTargetEffect(Duration.EndOfTurn)); + this.getSpellAbility().addEffect(new AttacksIfAbleTargetEffect(Duration.EndOfTurn).setText("and attacks this turn if able")); } private Incite(final Incite card) { diff --git a/Mage.Sets/src/mage/cards/j/JaceTelepathUnbound.java b/Mage.Sets/src/mage/cards/j/JaceTelepathUnbound.java index 156b89e565c..9c53e6c80cd 100644 --- a/Mage.Sets/src/mage/cards/j/JaceTelepathUnbound.java +++ b/Mage.Sets/src/mage/cards/j/JaceTelepathUnbound.java @@ -42,7 +42,7 @@ public final class JaceTelepathUnbound extends CardImpl { // -3: You may cast target instant or sorcery card from your graveyard this turn. If that card would be put into your graveyard this turn, exile it instead. CastCardFromGraveyardThenExileItEffect minusEffect = new CastCardFromGraveyardThenExileItEffect(); - minusEffect.setText("You may cast target instant or sorcery card from your graveyard this turn. If that card would be put into your graveyard this turn, exile it instead"); + minusEffect.setText("You may cast target instant or sorcery card from your graveyard this turn. If that spell would be put into your graveyard, exile it instead"); ability = new LoyaltyAbility(minusEffect, -3); ability.addTarget(new TargetCardInYourGraveyard(new FilterInstantOrSorceryCard())); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/k/KurkeshOnakkeAncient.java b/Mage.Sets/src/mage/cards/k/KurkeshOnakkeAncient.java index ecf45446243..d7a27da0d58 100644 --- a/Mage.Sets/src/mage/cards/k/KurkeshOnakkeAncient.java +++ b/Mage.Sets/src/mage/cards/k/KurkeshOnakkeAncient.java @@ -2,7 +2,7 @@ package mage.cards.k; import mage.MageInt; import mage.abilities.TriggeredAbilityImpl; -import mage.abilities.costs.mana.GenericManaCost; +import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.common.CopyStackObjectEffect; import mage.abilities.effects.common.DoIfCostPaid; import mage.abilities.mana.ActivatedManaAbilityImpl; @@ -50,8 +50,8 @@ public final class KurkeshOnakkeAncient extends CardImpl { class KurkeshOnakkeAncientTriggeredAbility extends TriggeredAbilityImpl { KurkeshOnakkeAncientTriggeredAbility() { - super(Zone.BATTLEFIELD, new DoIfCostPaid(new CopyStackObjectEffect(), new GenericManaCost(1))); - setTriggerPhrase("Whenever you activate an ability of an artifact, if it isn't a mana ability"); + super(Zone.BATTLEFIELD, new DoIfCostPaid(new CopyStackObjectEffect(), new ManaCostsImpl<>("{R}"))); + setTriggerPhrase("Whenever you activate an ability of an artifact, if it isn't a mana ability, "); } KurkeshOnakkeAncientTriggeredAbility(final KurkeshOnakkeAncientTriggeredAbility ability) { diff --git a/Mage.Sets/src/mage/cards/l/LilianasReaver.java b/Mage.Sets/src/mage/cards/l/LilianasReaver.java index 969547bd0b6..6ed7a948921 100644 --- a/Mage.Sets/src/mage/cards/l/LilianasReaver.java +++ b/Mage.Sets/src/mage/cards/l/LilianasReaver.java @@ -32,7 +32,7 @@ public final class LilianasReaver extends CardImpl { // Whenever Liliana's Reaver deals combat damage to a player, that player discards a card and you create a tapped 2/2 black Zombie creature token. Ability ability = new DealsCombatDamageToAPlayerTriggeredAbility(new DiscardTargetEffect(1), false, true); - ability.addEffect(new CreateTokenEffect(new ZombieToken(), 1, true, false)); + ability.addEffect(new CreateTokenEffect(new ZombieToken(), 1, true, false).concatBy("and you")); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/l/LordOfTheUnreal.java b/Mage.Sets/src/mage/cards/l/LordOfTheUnreal.java index 762c985a377..26a13fadd63 100644 --- a/Mage.Sets/src/mage/cards/l/LordOfTheUnreal.java +++ b/Mage.Sets/src/mage/cards/l/LordOfTheUnreal.java @@ -38,7 +38,8 @@ public final class LordOfTheUnreal extends CardImpl { // Illusion creatures you control get +1/+1 and have hexproof Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostControlledEffect(1, 1, Duration.WhileOnBattlefield, filter, false)); - ability.addEffect(new GainAbilityControlledEffect(HexproofAbility.getInstance(), Duration.WhileOnBattlefield, filter, false)); + ability.addEffect(new GainAbilityControlledEffect(HexproofAbility.getInstance(), Duration.WhileOnBattlefield, filter, false) + .setText("and have hexproof")); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/m/MantleOfWebs.java b/Mage.Sets/src/mage/cards/m/MantleOfWebs.java index e2e630128b7..4fdb4b74ff6 100644 --- a/Mage.Sets/src/mage/cards/m/MantleOfWebs.java +++ b/Mage.Sets/src/mage/cards/m/MantleOfWebs.java @@ -1,10 +1,8 @@ - package mage.cards.m; import java.util.UUID; import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; -import mage.abilities.effects.Effect; import mage.abilities.effects.common.AttachEffect; import mage.abilities.effects.common.continuous.BoostEnchantedEffect; import mage.abilities.effects.common.continuous.GainAbilityAttachedEffect; @@ -15,9 +13,7 @@ import mage.cards.CardSetInfo; import mage.constants.AttachmentType; 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; @@ -39,10 +35,9 @@ public final class MantleOfWebs extends CardImpl { this.addAbility(ability); // Enchanted creature gets +1/+3 and has reach. - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(1, 3, Duration.WhileOnBattlefield))); - Effect effect = new GainAbilityAttachedEffect(ReachAbility.getInstance(), AttachmentType.AURA); - effect.setText("and has reach"); - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect)); + Ability ability1 = new SimpleStaticAbility(new BoostEnchantedEffect(1, 3)); + ability1.addEffect(new GainAbilityAttachedEffect(ReachAbility.getInstance(), AttachmentType.AURA).setText("and has reach")); + this.addAbility(ability1); } private MantleOfWebs(final MantleOfWebs card) { diff --git a/Mage.Sets/src/mage/cards/m/MindUnbound.java b/Mage.Sets/src/mage/cards/m/MindUnbound.java index 999262000e4..9d94eaaa922 100644 --- a/Mage.Sets/src/mage/cards/m/MindUnbound.java +++ b/Mage.Sets/src/mage/cards/m/MindUnbound.java @@ -25,7 +25,7 @@ public final class MindUnbound extends CardImpl { // At the beginning of your upkeep, put a lore counter on Mind Unbound, then draw a card for each lore counter on Mind Unbound. Ability ability = new BeginningOfUpkeepTriggeredAbility(new AddCountersSourceEffect(CounterType.LORE.createInstance()), TargetController.YOU, false); - ability.addEffect(new DrawCardSourceControllerEffect(new CountersSourceCount(CounterType.LORE))); + ability.addEffect(new DrawCardSourceControllerEffect(new CountersSourceCount(CounterType.LORE)).concatBy(", then")); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/m/MindclawShaman.java b/Mage.Sets/src/mage/cards/m/MindclawShaman.java index bed6d16c69e..55f0831312b 100644 --- a/Mage.Sets/src/mage/cards/m/MindclawShaman.java +++ b/Mage.Sets/src/mage/cards/m/MindclawShaman.java @@ -54,7 +54,7 @@ class MindclawShamanEffect extends OneShotEffect { public MindclawShamanEffect() { super(Outcome.PlayForFree); this.staticText = "target opponent reveals their hand. You may cast " - + "an instant or sorcery card from it without paying its mana cost"; + + "an instant or sorcery spell from among those cards without paying its mana cost"; } public MindclawShamanEffect(final MindclawShamanEffect effect) { diff --git a/Mage.Sets/src/mage/cards/m/Mindsparker.java b/Mage.Sets/src/mage/cards/m/Mindsparker.java index 8b1ac1751cc..46728f65c9e 100644 --- a/Mage.Sets/src/mage/cards/m/Mindsparker.java +++ b/Mage.Sets/src/mage/cards/m/Mindsparker.java @@ -22,7 +22,7 @@ import java.util.UUID; */ public final class Mindsparker extends CardImpl { - private static final FilterSpell filter = new FilterSpell("white or blue instant or sorcery spell"); + private static final FilterSpell filter = new FilterSpell("a white or blue instant or sorcery spell"); static { filter.add(Predicates.or( diff --git a/Mage.Sets/src/mage/cards/m/MoltenBirth.java b/Mage.Sets/src/mage/cards/m/MoltenBirth.java index 3400c0b7edc..5bda7a6076b 100644 --- a/Mage.Sets/src/mage/cards/m/MoltenBirth.java +++ b/Mage.Sets/src/mage/cards/m/MoltenBirth.java @@ -26,7 +26,7 @@ public final class MoltenBirth extends CardImpl { // Create two 1/1 red Elemental creature tokens. Then flip a coin. If you win the flip, return Molten Birth to its owner's hand. this.getSpellAbility().addEffect(new CreateTokenEffect(new RedElementalToken(), 2)); - this.getSpellAbility().addEffect(new MoltenBirthEffect()); + this.getSpellAbility().addEffect(new MoltenBirthEffect().concatBy(", then")); } private MoltenBirth(final MoltenBirth card) { @@ -43,7 +43,7 @@ class MoltenBirthEffect extends OneShotEffect { MoltenBirthEffect() { super(Outcome.PutCreatureInPlay); - staticText = "Then flip a coin. If you win the flip, return {this} to its owner's hand"; + staticText = "flip a coin. If you win the flip, return {this} to its owner's hand"; } private MoltenBirthEffect(final MoltenBirthEffect effect) { diff --git a/Mage.Sets/src/mage/cards/n/Necrobite.java b/Mage.Sets/src/mage/cards/n/Necrobite.java index 4c93201d33f..8ce70bb9abd 100644 --- a/Mage.Sets/src/mage/cards/n/Necrobite.java +++ b/Mage.Sets/src/mage/cards/n/Necrobite.java @@ -24,7 +24,7 @@ public final class Necrobite extends CardImpl { // Target creature gains deathtouch until end of turn. Regenerate it. this.getSpellAbility().addEffect(new GainAbilityTargetEffect(DeathtouchAbility.getInstance(), Duration.EndOfTurn)); - this.getSpellAbility().addEffect(new RegenerateTargetEffect()); + this.getSpellAbility().addEffect(new RegenerateTargetEffect().setText("Regenerate it")); this.getSpellAbility().addTarget(new TargetCreaturePermanent()); } diff --git a/Mage.Sets/src/mage/cards/n/NissasPilgrimage.java b/Mage.Sets/src/mage/cards/n/NissasPilgrimage.java index dd062015bd8..3158482b003 100644 --- a/Mage.Sets/src/mage/cards/n/NissasPilgrimage.java +++ b/Mage.Sets/src/mage/cards/n/NissasPilgrimage.java @@ -57,7 +57,7 @@ class NissasPilgrimageEffect extends OneShotEffect { public NissasPilgrimageEffect() { super(Outcome.Benefit); this.staticText = "Search your library for up to two basic Forest cards, reveal those cards, and put one onto the battlefield tapped and the rest into your hand. Then shuffle." - + "
Spell Mastery — If there are two or more instant and/or sorcery cards in your graveyard, search your library for up to three basic Forest cards instead of two."; + + "
Spell mastery — If there are two or more instant and/or sorcery cards in your graveyard, search your library for up to three basic Forest cards instead of two."; } public NissasPilgrimageEffect(final NissasPilgrimageEffect effect) { diff --git a/Mage.Sets/src/mage/cards/p/ParagonOfNewDawns.java b/Mage.Sets/src/mage/cards/p/ParagonOfNewDawns.java index 3e957fbbd97..29bad7770ee 100644 --- a/Mage.Sets/src/mage/cards/p/ParagonOfNewDawns.java +++ b/Mage.Sets/src/mage/cards/p/ParagonOfNewDawns.java @@ -31,7 +31,7 @@ import mage.target.common.TargetCreaturePermanent; public final class ParagonOfNewDawns extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("white creatures"); - private static final FilterCreaturePermanent filter2 = new FilterCreaturePermanent("Another white creature you control"); + private static final FilterCreaturePermanent filter2 = new FilterCreaturePermanent("another target white creature you control"); static { filter.add(new ColorPredicate(ObjectColor.WHITE)); diff --git a/Mage.Sets/src/mage/cards/p/PrismRing.java b/Mage.Sets/src/mage/cards/p/PrismRing.java index 63c1917967a..01d3b842035 100644 --- a/Mage.Sets/src/mage/cards/p/PrismRing.java +++ b/Mage.Sets/src/mage/cards/p/PrismRing.java @@ -1,10 +1,9 @@ - package mage.cards.p; import java.util.UUID; import mage.ObjectColor; import mage.abilities.TriggeredAbilityImpl; -import mage.abilities.common.EntersBattlefieldAbility; +import mage.abilities.common.AsEntersBattlefieldAbility; import mage.abilities.effects.common.ChooseColorEffect; import mage.abilities.effects.common.GainLifeEffect; import mage.cards.CardImpl; @@ -26,7 +25,7 @@ public final class PrismRing extends CardImpl { super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}"); // As Prism Ring enters the battlefield, choose a color. - this.addAbility(new EntersBattlefieldAbility(new ChooseColorEffect(Outcome.Neutral))); + this.addAbility(new AsEntersBattlefieldAbility(new ChooseColorEffect(Outcome.Neutral))); // Whenever you cast a spell of the chosen color, you gain 1 life. this.addAbility(new PrismRingTriggeredAbility()); diff --git a/Mage.Sets/src/mage/cards/r/ReclusiveArtificer.java b/Mage.Sets/src/mage/cards/r/ReclusiveArtificer.java index 9b9639d03bb..2d3be6af4a0 100644 --- a/Mage.Sets/src/mage/cards/r/ReclusiveArtificer.java +++ b/Mage.Sets/src/mage/cards/r/ReclusiveArtificer.java @@ -1,4 +1,3 @@ - package mage.cards.r; import java.util.UUID; @@ -12,7 +11,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; -import mage.filter.common.FilterControlledPermanent; +import mage.filter.StaticFilters; import mage.target.common.TargetCreaturePermanent; /** @@ -20,12 +19,6 @@ import mage.target.common.TargetCreaturePermanent; * @author fireshoes */ public final class ReclusiveArtificer extends CardImpl { - - private static final FilterControlledPermanent filter = new FilterControlledPermanent("artifacts you control"); - - static { - filter.add(CardType.ARTIFACT.getPredicate()); - } public ReclusiveArtificer(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}{R}"); @@ -38,7 +31,8 @@ public final class ReclusiveArtificer extends CardImpl { this.addAbility(HasteAbility.getInstance()); // When Reclusive Artificer enters the battlefield, you may have it deal damage to target creature equal to the number of artifacts you control. - Ability ability = new EntersBattlefieldTriggeredAbility(new DamageTargetEffect(new PermanentsOnBattlefieldCount(filter)), true); + Ability ability = new EntersBattlefieldTriggeredAbility(new DamageTargetEffect(new PermanentsOnBattlefieldCount(StaticFilters.FILTER_CONTROLLED_PERMANENT_ARTIFACTS)) + .setText("it deals damage to target creature equal to the number of artifacts you control"), true); ability.addTarget(new TargetCreaturePermanent()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/r/ResoluteArchangel.java b/Mage.Sets/src/mage/cards/r/ResoluteArchangel.java index a2f45ca67fb..96efd0ecee0 100644 --- a/Mage.Sets/src/mage/cards/r/ResoluteArchangel.java +++ b/Mage.Sets/src/mage/cards/r/ResoluteArchangel.java @@ -34,7 +34,7 @@ public final class ResoluteArchangel extends CardImpl { this.addAbility(FlyingAbility.getInstance()); // When Resolute Angel enters the battlefield, if your life total is lower than your starting life total, it becomes equal to your starting life total. this.addAbility(new EntersBattlefieldTriggeredAbility(new ConditionalOneShotEffect(new ResoluteArchangelEffect(), ControllerLifeLowerThanStrtingLife.instance, - "if your life total is lower than your starting life total, it becomes equal to your starting life total"))); + "if your life total is less than your starting life total, it becomes equal to your starting life total"))); } private ResoluteArchangel(final ResoluteArchangel card) { diff --git a/Mage.Sets/src/mage/cards/s/ScepterOfEmpires.java b/Mage.Sets/src/mage/cards/s/ScepterOfEmpires.java index 2154756833f..dbbde1526dc 100644 --- a/Mage.Sets/src/mage/cards/s/ScepterOfEmpires.java +++ b/Mage.Sets/src/mage/cards/s/ScepterOfEmpires.java @@ -43,7 +43,7 @@ class ScepterOfEmpiresEffect extends OneShotEffect { public ScepterOfEmpiresEffect() { super(Outcome.PutCreatureInPlay); - staticText = "Scepter of Empires deals 1 damage to target player or planeswalker. It deals 3 damage to that player or planeswalker instead if you control artifacts named Crown of Empires and Throne of Empires"; + staticText = "Scepter of Empires deals 1 damage to target player or planeswalker. It deals 3 damage instead if you control artifacts named Crown of Empires and Throne of Empires"; } public ScepterOfEmpiresEffect(ScepterOfEmpiresEffect effect) { diff --git a/Mage.Sets/src/mage/cards/s/SorinsVengeance.java b/Mage.Sets/src/mage/cards/s/SorinsVengeance.java index 9dbf716ae4d..0be34016b12 100644 --- a/Mage.Sets/src/mage/cards/s/SorinsVengeance.java +++ b/Mage.Sets/src/mage/cards/s/SorinsVengeance.java @@ -19,7 +19,7 @@ public final class SorinsVengeance extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{B}{B}{B}"); this.getSpellAbility().addEffect(new DamageTargetEffect(10)); - this.getSpellAbility().addEffect(new GainLifeEffect(10)); + this.getSpellAbility().addEffect(new GainLifeEffect(10).concatBy("and")); this.getSpellAbility().addTarget(new TargetPlayerOrPlaneswalker()); } diff --git a/Mage.Sets/src/mage/cards/s/SpectraWard.java b/Mage.Sets/src/mage/cards/s/SpectraWard.java index 36afa3d2efe..6da03d53222 100644 --- a/Mage.Sets/src/mage/cards/s/SpectraWard.java +++ b/Mage.Sets/src/mage/cards/s/SpectraWard.java @@ -57,7 +57,8 @@ public final class SpectraWard extends CardImpl { ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(2,2, Duration.WhileOnBattlefield)); ProtectionAbility protectionAbility = new ProtectionAbility(filter); protectionAbility.setRemovesAuras(false); - ability.addEffect(new GainAbilityAttachedEffect(protectionAbility, AttachmentType.AURA, Duration.WhileOnBattlefield)); + ability.addEffect(new GainAbilityAttachedEffect(protectionAbility, AttachmentType.AURA, Duration.WhileOnBattlefield) + .setText("and has protection from all colors. This effect doesn't remove Auras")); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/SpiritBonds.java b/Mage.Sets/src/mage/cards/s/SpiritBonds.java index 77440d7b325..98a17673e2d 100644 --- a/Mage.Sets/src/mage/cards/s/SpiritBonds.java +++ b/Mage.Sets/src/mage/cards/s/SpiritBonds.java @@ -16,13 +16,12 @@ import mage.constants.Duration; import mage.constants.SubType; import mage.constants.Zone; import mage.filter.StaticFilters; -import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.common.FilterControlledPermanent; +import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; -import mage.filter.predicate.permanent.TokenPredicate; import mage.game.permanent.token.SpiritWhiteToken; -import mage.target.common.TargetControlledCreaturePermanent; import mage.target.common.TargetControlledPermanent; +import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -31,7 +30,7 @@ import java.util.UUID; */ public final class SpiritBonds extends CardImpl { - private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("non-Spirit creature you control"); + private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("non-Spirit creature"); private static final FilterControlledPermanent filterSpirit = new FilterControlledPermanent("Spirit"); static { @@ -46,11 +45,11 @@ public final class SpiritBonds extends CardImpl { // Whenever a nontoken creature enters the battlefield under your control, you may pay {W}. If you do, but a 1/1 white Spirit creature token with flying into play. this.addAbility(new EntersBattlefieldControlledTriggeredAbility(Zone.BATTLEFIELD, new DoIfCostPaid(new CreateTokenEffect(new SpiritWhiteToken()), new ManaCostsImpl<>("{W}")), StaticFilters.FILTER_CREATURE_NON_TOKEN, false)); - // {1}{W}, Sacrifice a Spirit: Target non-Spirit creature you control gains indestructible until end of turn. + // {1}{W}, Sacrifice a Spirit: Target non-Spirit creature gains indestructible until end of turn. Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new GainAbilityTargetEffect(IndestructibleAbility.getInstance(), Duration.EndOfTurn), new ManaCostsImpl<>("{1}{W}")); ability.addCost(new SacrificeTargetCost(new TargetControlledPermanent(1, 1, filterSpirit, true))); - ability.addTarget(new TargetControlledCreaturePermanent(filter)); + ability.addTarget(new TargetCreaturePermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/StabbingPain.java b/Mage.Sets/src/mage/cards/s/StabbingPain.java index e4977950373..c0ccf37be7d 100644 --- a/Mage.Sets/src/mage/cards/s/StabbingPain.java +++ b/Mage.Sets/src/mage/cards/s/StabbingPain.java @@ -22,7 +22,7 @@ public final class StabbingPain extends CardImpl { this.getSpellAbility().addTarget(new TargetCreaturePermanent()); this.getSpellAbility().addEffect(new BoostTargetEffect(-1, -1, Duration.EndOfTurn)); - this.getSpellAbility().addEffect(new TapTargetEffect()); + this.getSpellAbility().addEffect(new TapTargetEffect("tap that creature")); } private StabbingPain(final StabbingPain card) { diff --git a/Mage.Sets/src/mage/cards/s/StaffOfTheDeathMagus.java b/Mage.Sets/src/mage/cards/s/StaffOfTheDeathMagus.java index b6909ec750f..7c93b76fda3 100644 --- a/Mage.Sets/src/mage/cards/s/StaffOfTheDeathMagus.java +++ b/Mage.Sets/src/mage/cards/s/StaffOfTheDeathMagus.java @@ -6,6 +6,7 @@ import mage.ObjectColor; import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility; import mage.abilities.common.SpellCastControllerTriggeredAbility; import mage.abilities.effects.common.GainLifeEffect; +import mage.abilities.meta.OrTriggeredAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; @@ -33,8 +34,11 @@ public final class StaffOfTheDeathMagus extends CardImpl { super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}"); // Whenever you cast a black spell or a Swamp enters the battlefield under your control, you gain 1 life. - this.addAbility(new SpellCastControllerTriggeredAbility(new GainLifeEffect(1), filterSpell,false)); - this.addAbility(new EntersBattlefieldControlledTriggeredAbility(Zone.BATTLEFIELD, new GainLifeEffect(1), filterLand, false)); + this.addAbility(new OrTriggeredAbility(Zone.BATTLEFIELD, new GainLifeEffect(1), false, + "Whenever you cast a black spell or a Swamp enters the battlefield under your control, ", + new SpellCastControllerTriggeredAbility(null, filterSpell,false), + new EntersBattlefieldControlledTriggeredAbility(null, filterLand))); + } private StaffOfTheDeathMagus(final StaffOfTheDeathMagus card) { diff --git a/Mage.Sets/src/mage/cards/s/StaffOfTheFlameMagus.java b/Mage.Sets/src/mage/cards/s/StaffOfTheFlameMagus.java index f554bce4b56..520d5ed5a21 100644 --- a/Mage.Sets/src/mage/cards/s/StaffOfTheFlameMagus.java +++ b/Mage.Sets/src/mage/cards/s/StaffOfTheFlameMagus.java @@ -6,6 +6,7 @@ import mage.ObjectColor; import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility; import mage.abilities.common.SpellCastControllerTriggeredAbility; import mage.abilities.effects.common.GainLifeEffect; +import mage.abilities.meta.OrTriggeredAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; @@ -33,8 +34,10 @@ public final class StaffOfTheFlameMagus extends CardImpl { super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}"); // Whenever you cast a red spell or a Mountain enters the battlefield under your control, you gain 1 life. - this.addAbility(new SpellCastControllerTriggeredAbility(new GainLifeEffect(1), filterSpell,false)); - this.addAbility(new EntersBattlefieldControlledTriggeredAbility(Zone.BATTLEFIELD, new GainLifeEffect(1), filterLand, false)); + this.addAbility(new OrTriggeredAbility(Zone.BATTLEFIELD, new GainLifeEffect(1), false, + "Whenever you cast a red spell or a Mountain enters the battlefield under your control, ", + new SpellCastControllerTriggeredAbility(null, filterSpell,false), + new EntersBattlefieldControlledTriggeredAbility(null, filterLand))); } private StaffOfTheFlameMagus(final StaffOfTheFlameMagus card) { diff --git a/Mage.Sets/src/mage/cards/s/StaffOfTheMindMagus.java b/Mage.Sets/src/mage/cards/s/StaffOfTheMindMagus.java index 1bd98537404..2adfd2f31c4 100644 --- a/Mage.Sets/src/mage/cards/s/StaffOfTheMindMagus.java +++ b/Mage.Sets/src/mage/cards/s/StaffOfTheMindMagus.java @@ -6,6 +6,7 @@ import mage.ObjectColor; import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility; import mage.abilities.common.SpellCastControllerTriggeredAbility; import mage.abilities.effects.common.GainLifeEffect; +import mage.abilities.meta.OrTriggeredAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; @@ -33,8 +34,10 @@ public final class StaffOfTheMindMagus extends CardImpl { super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}"); // Whenever you cast a blue spell or an Island enters the battlefield under your control, you gain 1 life. - this.addAbility(new SpellCastControllerTriggeredAbility(new GainLifeEffect(1), filterSpell,false)); - this.addAbility(new EntersBattlefieldControlledTriggeredAbility(Zone.BATTLEFIELD, new GainLifeEffect(1), filterLand, false)); + this.addAbility(new OrTriggeredAbility(Zone.BATTLEFIELD, new GainLifeEffect(1), false, + "Whenever you cast a blue spell or an Island enters the battlefield under your control, ", + new SpellCastControllerTriggeredAbility(null, filterSpell,false), + new EntersBattlefieldControlledTriggeredAbility(null, filterLand))); } private StaffOfTheMindMagus(final StaffOfTheMindMagus card) { diff --git a/Mage.Sets/src/mage/cards/s/StaffOfTheSunMagus.java b/Mage.Sets/src/mage/cards/s/StaffOfTheSunMagus.java index 3be026158bf..98e1cf3ea44 100644 --- a/Mage.Sets/src/mage/cards/s/StaffOfTheSunMagus.java +++ b/Mage.Sets/src/mage/cards/s/StaffOfTheSunMagus.java @@ -6,6 +6,7 @@ import mage.ObjectColor; import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility; import mage.abilities.common.SpellCastControllerTriggeredAbility; import mage.abilities.effects.common.GainLifeEffect; +import mage.abilities.meta.OrTriggeredAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; @@ -33,8 +34,10 @@ public final class StaffOfTheSunMagus extends CardImpl { super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}"); // Whenever you cast a white spell or a Plains enters the battlefield under your control, you gain 1 life. - this.addAbility(new SpellCastControllerTriggeredAbility(new GainLifeEffect(1), filterSpell,false)); - this.addAbility(new EntersBattlefieldControlledTriggeredAbility(Zone.BATTLEFIELD, new GainLifeEffect(1), filterLand, false)); + this.addAbility(new OrTriggeredAbility(Zone.BATTLEFIELD, new GainLifeEffect(1), false, + "Whenever you cast a white spell or a Plains enters the battlefield under your control, ", + new SpellCastControllerTriggeredAbility(null, filterSpell,false), + new EntersBattlefieldControlledTriggeredAbility(null, filterLand))); } private StaffOfTheSunMagus(final StaffOfTheSunMagus card) { diff --git a/Mage.Sets/src/mage/cards/s/StaffOfTheWildMagus.java b/Mage.Sets/src/mage/cards/s/StaffOfTheWildMagus.java index 7983f90f66a..0035e8f0369 100644 --- a/Mage.Sets/src/mage/cards/s/StaffOfTheWildMagus.java +++ b/Mage.Sets/src/mage/cards/s/StaffOfTheWildMagus.java @@ -6,6 +6,7 @@ import mage.ObjectColor; import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility; import mage.abilities.common.SpellCastControllerTriggeredAbility; import mage.abilities.effects.common.GainLifeEffect; +import mage.abilities.meta.OrTriggeredAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; @@ -32,9 +33,11 @@ public final class StaffOfTheWildMagus extends CardImpl { public StaffOfTheWildMagus(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}"); - // Whenever you cast a green spell or a Forest enters the battlefield under your control, you may gain 1 life. - this.addAbility(new SpellCastControllerTriggeredAbility(new GainLifeEffect(1), filterSpell,false)); - this.addAbility(new EntersBattlefieldControlledTriggeredAbility(Zone.BATTLEFIELD, new GainLifeEffect(1), filterLand, false)); + // Whenever you cast a green spell or a Forest enters the battlefield under your control, you gain 1 life. + this.addAbility(new OrTriggeredAbility(Zone.BATTLEFIELD, new GainLifeEffect(1), false, + "Whenever you cast a green spell or a Forest enters the battlefield under your control, ", + new SpellCastControllerTriggeredAbility(null, filterSpell,false), + new EntersBattlefieldControlledTriggeredAbility(null, filterLand))); } private StaffOfTheWildMagus(final StaffOfTheWildMagus card) { diff --git a/Mage.Sets/src/mage/cards/s/StonehornChanter.java b/Mage.Sets/src/mage/cards/s/StonehornChanter.java index 065949b277b..7adcf9ae4ba 100644 --- a/Mage.Sets/src/mage/cards/s/StonehornChanter.java +++ b/Mage.Sets/src/mage/cards/s/StonehornChanter.java @@ -1,4 +1,3 @@ - package mage.cards.s; import java.util.UUID; @@ -31,8 +30,10 @@ public final class StonehornChanter extends CardImpl { this.toughness = new MageInt(4); // {5}{W}: Stonehorn Chanter gains vigilance and lifelink until end of turn. - Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new GainAbilitySourceEffect(VigilanceAbility.getInstance(), Duration.EndOfTurn), new ManaCostsImpl<>("{5}{W}")); - ability.addEffect(new GainAbilitySourceEffect(LifelinkAbility.getInstance())); + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new GainAbilitySourceEffect(VigilanceAbility.getInstance(), Duration.EndOfTurn) + .setText("{this} gains vigilance"), new ManaCostsImpl<>("{5}{W}")); + ability.addEffect(new GainAbilitySourceEffect(LifelinkAbility.getInstance(), Duration.EndOfTurn) + .setText("and lifelink until end of turn")); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/SunbladeElf.java b/Mage.Sets/src/mage/cards/s/SunbladeElf.java index 939de6e681c..84a5cc447c4 100644 --- a/Mage.Sets/src/mage/cards/s/SunbladeElf.java +++ b/Mage.Sets/src/mage/cards/s/SunbladeElf.java @@ -13,7 +13,6 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; import mage.constants.SubType; -import mage.constants.Zone; import mage.filter.FilterPermanent; import mage.filter.StaticFilters; @@ -38,9 +37,10 @@ public final class SunbladeElf extends CardImpl { this.toughness = new MageInt(1); // Sunblade Elf gets +1/+1 as long as you control a Plains. - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostSourceWhileControlsEffect(filter, 1, 1))); + this.addAbility(new SimpleStaticAbility(new BoostSourceWhileControlsEffect(filter, 1, 1))); // {4}{W}: Creatures you control get +1/+1 until end of turn. - this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostControlledEffect(1, 1, Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURE, false), new ManaCostsImpl<>("{4}{W}"))); + this.addAbility(new SimpleActivatedAbility(new BoostControlledEffect(1, 1, Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURES, false), + new ManaCostsImpl<>("{4}{W}"))); } diff --git a/Mage.Sets/src/mage/cards/s/SuppressionBonds.java b/Mage.Sets/src/mage/cards/s/SuppressionBonds.java index 828ba9055cd..a05b2de7b65 100644 --- a/Mage.Sets/src/mage/cards/s/SuppressionBonds.java +++ b/Mage.Sets/src/mage/cards/s/SuppressionBonds.java @@ -1,10 +1,8 @@ - package mage.cards.s; import java.util.UUID; import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; -import mage.abilities.effects.Effect; import mage.abilities.effects.common.AttachEffect; import mage.abilities.effects.common.combat.CantBlockAttackActivateAttachedEffect; import mage.abilities.keyword.EnchantAbility; @@ -13,7 +11,6 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; import mage.constants.Outcome; -import mage.constants.Zone; import mage.target.TargetPermanent; import mage.target.common.TargetNonlandPermanent; @@ -35,9 +32,7 @@ public final class SuppressionBonds extends CardImpl { this.addAbility(ability); // Enchanted permanent can't attack or block, and its activated abilities can't be actiated. - Effect effect = new CantBlockAttackActivateAttachedEffect(); - effect.setText("Enchanted permanent can't attack or block, and its activated abilities can't be actiated"); - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CantBlockAttackActivateAttachedEffect())); + this.addAbility(new SimpleStaticAbility(new CantBlockAttackActivateAttachedEffect("permanent"))); } private SuppressionBonds(final SuppressionBonds card) { diff --git a/Mage.Sets/src/mage/cards/t/TasteOfBlood.java b/Mage.Sets/src/mage/cards/t/TasteOfBlood.java index 94b73393e59..6bc22f5b0cf 100644 --- a/Mage.Sets/src/mage/cards/t/TasteOfBlood.java +++ b/Mage.Sets/src/mage/cards/t/TasteOfBlood.java @@ -19,7 +19,7 @@ public final class TasteOfBlood extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{B}"); this.getSpellAbility().addEffect(new DamageTargetEffect(1)); - this.getSpellAbility().addEffect(new GainLifeEffect(1)); + this.getSpellAbility().addEffect(new GainLifeEffect(1).concatBy("and")); this.getSpellAbility().addTarget(new TargetPlayerOrPlaneswalker()); } diff --git a/Mage.Sets/src/mage/cards/t/TenaciousDead.java b/Mage.Sets/src/mage/cards/t/TenaciousDead.java index 449e31f9bc1..65b79d7cd06 100644 --- a/Mage.Sets/src/mage/cards/t/TenaciousDead.java +++ b/Mage.Sets/src/mage/cards/t/TenaciousDead.java @@ -28,7 +28,8 @@ public final class TenaciousDead extends CardImpl { this.toughness = new MageInt(1); // When Tenacious Dead dies, you may pay {1}{B}. If you do, return it to the battlefield tapped under its owner's control. - Effect effect = new DoIfCostPaid(new ReturnToBattlefieldUnderOwnerControlSourceEffect(true), new ManaCostsImpl<>("{1}{B}")); + Effect effect = new DoIfCostPaid(new ReturnToBattlefieldUnderOwnerControlSourceEffect(true) + .setText("return it to the battlefield tapped under its owner's control"), new ManaCostsImpl<>("{1}{B}")); this.addAbility(new DiesSourceTriggeredAbility(effect, false)); } diff --git a/Mage.Sets/src/mage/cards/t/TheChainVeil.java b/Mage.Sets/src/mage/cards/t/TheChainVeil.java index a6392c06155..e908f49b0ed 100644 --- a/Mage.Sets/src/mage/cards/t/TheChainVeil.java +++ b/Mage.Sets/src/mage/cards/t/TheChainVeil.java @@ -92,7 +92,7 @@ class TheChainVeilIncreaseLoyaltyUseEffect extends ContinuousEffectImpl { public TheChainVeilIncreaseLoyaltyUseEffect() { super(Duration.EndOfTurn, Layer.RulesEffects, SubLayer.NA, Outcome.Benefit); - staticText = "For each planeswalker you control, you may activate one of its loyalty abilities once this turn as though none of its loyalty abilities had been activated this turn"; + staticText = "For each planeswalker you control, you may activate one of its loyalty abilities once this turn as though none of its loyalty abilities have been activated this turn"; } public TheChainVeilIncreaseLoyaltyUseEffect(final TheChainVeilIncreaseLoyaltyUseEffect effect) { diff --git a/Mage.Sets/src/mage/cards/t/TouchOfMoonglove.java b/Mage.Sets/src/mage/cards/t/TouchOfMoonglove.java index fdd0c7d2cd3..0df2157f924 100644 --- a/Mage.Sets/src/mage/cards/t/TouchOfMoonglove.java +++ b/Mage.Sets/src/mage/cards/t/TouchOfMoonglove.java @@ -58,7 +58,7 @@ class TouchOfMoongloveAddTriggerEffect extends OneShotEffect { public TouchOfMoongloveAddTriggerEffect() { super(Outcome.LoseLife); - this.staticText = "Whenever a creature dealt damage by that creature this turn dies, its controller loses 2 life"; + this.staticText = "Whenever a creature dealt damage by that creature dies this turn, its controller loses 2 life"; } public TouchOfMoongloveAddTriggerEffect(final TouchOfMoongloveAddTriggerEffect effect) { diff --git a/Mage.Sets/src/mage/cards/t/TricksOfTheTrade.java b/Mage.Sets/src/mage/cards/t/TricksOfTheTrade.java index 5153bae3b98..b0980cc66f3 100644 --- a/Mage.Sets/src/mage/cards/t/TricksOfTheTrade.java +++ b/Mage.Sets/src/mage/cards/t/TricksOfTheTrade.java @@ -2,6 +2,8 @@ package mage.cards.t; import java.util.UUID; + +import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.common.AttachEffect; import mage.abilities.effects.common.combat.CantBeBlockedAttachedEffect; @@ -12,9 +14,7 @@ import mage.cards.CardSetInfo; import mage.constants.AttachmentType; 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; @@ -36,8 +36,9 @@ public final class TricksOfTheTrade extends CardImpl { this.addAbility(new EnchantAbility(auraTarget)); // Enchanted creature gets +2/+0 and can't be blocked. - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(2, 0, Duration.WhileOnBattlefield))); - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CantBeBlockedAttachedEffect(AttachmentType.AURA))); + Ability ability = new SimpleStaticAbility(new BoostEnchantedEffect(2, 0)); + ability.addEffect(new CantBeBlockedAttachedEffect(AttachmentType.AURA).setText("and can't be blocked")); + this.addAbility(ability); } private TricksOfTheTrade(final TricksOfTheTrade card) { diff --git a/Mage.Sets/src/mage/cards/v/VoraciousWurm.java b/Mage.Sets/src/mage/cards/v/VoraciousWurm.java index 289a7ef2ed2..272f610b9a4 100644 --- a/Mage.Sets/src/mage/cards/v/VoraciousWurm.java +++ b/Mage.Sets/src/mage/cards/v/VoraciousWurm.java @@ -28,7 +28,8 @@ public final class VoraciousWurm extends CardImpl { // Voracious Wurm enters the battlefield with X +1/+1 counters on it, where X is the amount of life you've gained this turn. this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect( CounterType.P1P1.createInstance(0), ControllerGotLifeCount.instance, true - )).addHint(ControllerGotLifeCount.getHint()), new PlayerGainedLifeWatcher()); + ), "with X +1/+1 counters on it, where X is the amount of life you've gained this turn") + .addHint(ControllerGotLifeCount.getHint()), new PlayerGainedLifeWatcher()); } private VoraciousWurm(final VoraciousWurm card) { diff --git a/Mage.Sets/src/mage/cards/w/WildEvocation.java b/Mage.Sets/src/mage/cards/w/WildEvocation.java index 60ffae042c7..f774f0a2cb7 100644 --- a/Mage.Sets/src/mage/cards/w/WildEvocation.java +++ b/Mage.Sets/src/mage/cards/w/WildEvocation.java @@ -51,7 +51,7 @@ class WildEvocationEffect extends OneShotEffect { public WildEvocationEffect() { super(Outcome.PutCardInPlay); staticText = "that player reveals a card at random from their hand. " - + "If it's a land card, that player puts it onto the battlefield. " + + "If it's a land card, the player puts it onto the battlefield. " + "Otherwise, the player casts it without paying its mana cost if able"; } diff --git a/Mage.Sets/src/mage/cards/w/Willbreaker.java b/Mage.Sets/src/mage/cards/w/Willbreaker.java index 5a75ce72f4b..a8fda611681 100644 --- a/Mage.Sets/src/mage/cards/w/Willbreaker.java +++ b/Mage.Sets/src/mage/cards/w/Willbreaker.java @@ -78,7 +78,7 @@ class WillbreakerTriggeredAbility extends TriggeredAbilityImpl { @Override public String getRule() { return "Whenever a creature an opponent controls becomes the target of a spell or ability you control, " - + "gain control of that creature for as long as you control {this}"; + + "gain control of that creature for as long as you control {this}."; } @Override diff --git a/Mage.Sets/src/mage/cards/x/XathridGorgon.java b/Mage.Sets/src/mage/cards/x/XathridGorgon.java index 33f6b264d65..1aaa2862d38 100644 --- a/Mage.Sets/src/mage/cards/x/XathridGorgon.java +++ b/Mage.Sets/src/mage/cards/x/XathridGorgon.java @@ -52,7 +52,7 @@ public final class XathridGorgon extends CardImpl { effect = new AddCardTypeTargetEffect(Duration.Custom, CardType.ARTIFACT); effect.setText("and becomes a colorless"); ability.addEffect(effect); - ability.addEffect(new BecomesColorTargetEffect(ObjectColor.COLORLESS, Duration.Custom, "artifact in addition to its other types")); + ability.addEffect(new BecomesColorTargetEffect(ObjectColor.COLORLESS, Duration.Custom, " artifact in addition to its other types")); ability.addEffect(new XathridGorgonCantActivateEffect()); this.addAbility(ability); diff --git a/Mage/src/main/java/mage/abilities/common/BeginningOfCombatTriggeredAbility.java b/Mage/src/main/java/mage/abilities/common/BeginningOfCombatTriggeredAbility.java index 68e9740781a..6483b1f437a 100644 --- a/Mage/src/main/java/mage/abilities/common/BeginningOfCombatTriggeredAbility.java +++ b/Mage/src/main/java/mage/abilities/common/BeginningOfCombatTriggeredAbility.java @@ -80,7 +80,7 @@ public class BeginningOfCombatTriggeredAbility extends TriggeredAbilityImpl { case YOU: return "At the beginning of combat on your turn, " + generateZoneString(); case OPPONENT: - return "At the beginning of each opponent's combat step, " + generateZoneString(); + return "At the beginning of combat on each opponent's turn, " + generateZoneString(); case EACH_PLAYER: return "At the beginning of combat on each player's turn, " + generateZoneString(); case ANY: diff --git a/Mage/src/main/java/mage/abilities/effects/common/CantBeCounteredControlledEffect.java b/Mage/src/main/java/mage/abilities/effects/common/CantBeCounteredControlledEffect.java index 9b6023211c9..bd488c92215 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/CantBeCounteredControlledEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/CantBeCounteredControlledEffect.java @@ -82,6 +82,9 @@ public class CantBeCounteredControlledEffect extends ContinuousRuleModifyingEffe if (filterSource != null) { sb.append(" by ").append(filterSource.getMessage()); } + if (duration == Duration.EndOfTurn) { + sb.append(" this turn"); + } staticText = sb.toString(); } diff --git a/Mage/src/main/java/mage/abilities/effects/common/CantBeTargetedAllEffect.java b/Mage/src/main/java/mage/abilities/effects/common/CantBeTargetedAllEffect.java index c32aabf7c5b..92d6bc7afc1 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/CantBeTargetedAllEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/CantBeTargetedAllEffect.java @@ -90,7 +90,9 @@ public class CantBeTargetedAllEffect extends ContinuousRuleModifyingEffectImpl { } else { sb.append("spells"); } - if (!duration.toString().isEmpty()) { + if (duration == Duration.EndOfTurn) { + sb.append(" this turn"); + } else if (!duration.toString().isEmpty()) { sb.append(' ').append(duration.toString()); } staticText = sb.toString(); diff --git a/Mage/src/main/java/mage/abilities/effects/common/CantBeTargetedSourceEffect.java b/Mage/src/main/java/mage/abilities/effects/common/CantBeTargetedSourceEffect.java index 69a35c9f438..916281e185d 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/CantBeTargetedSourceEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/CantBeTargetedSourceEffect.java @@ -68,7 +68,9 @@ public class CantBeTargetedSourceEffect extends ContinuousRuleModifyingEffectImp StringBuilder sb = new StringBuilder(); sb.append("{this} can't be the target of "); sb.append(filterSource.getMessage()); - sb.append(' ').append(duration.toString()); + if (!duration.toString().isEmpty()) { + sb.append(' ').append(duration.toString()); + } staticText = sb.toString(); } diff --git a/Mage/src/main/java/mage/abilities/effects/common/ChangeATargetOfTargetSpellAbilityToSourceEffect.java b/Mage/src/main/java/mage/abilities/effects/common/ChangeATargetOfTargetSpellAbilityToSourceEffect.java index 9cfb2c7675b..86a628f6d13 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/ChangeATargetOfTargetSpellAbilityToSourceEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/ChangeATargetOfTargetSpellAbilityToSourceEffect.java @@ -22,7 +22,7 @@ public class ChangeATargetOfTargetSpellAbilityToSourceEffect extends OneShotEffe public ChangeATargetOfTargetSpellAbilityToSourceEffect() { super(Outcome.Neutral); - staticText = "Change a target of target spell or ability to {this}"; + staticText = "change a target of target spell or ability to {this}"; } public ChangeATargetOfTargetSpellAbilityToSourceEffect(final ChangeATargetOfTargetSpellAbilityToSourceEffect effect) { diff --git a/Mage/src/main/java/mage/abilities/effects/common/ExileAndReturnSourceEffect.java b/Mage/src/main/java/mage/abilities/effects/common/ExileAndReturnSourceEffect.java index 4356b695b75..222f82c887a 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/ExileAndReturnSourceEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/ExileAndReturnSourceEffect.java @@ -92,6 +92,7 @@ public class ExileAndReturnSourceEffect extends OneShotEffect { } return "exile {this}, then return " + pronoun.getObjective() + ' ' + putCards.getMessage(false, false).replace("onto", "to") + " under " + - (this.returnUnderYourControl ? "your" : pronoun.getPossessive() + ' ' + "owner's") + " control"; + (returnUnderYourControl ? "your" : pronoun.getPossessive() + " owner's") + " control" + + (additionalEffect == null ? "" : ". If you do, " + additionalEffect.getText(mode)); } } diff --git a/Mage/src/main/java/mage/abilities/keyword/ProtectionAbility.java b/Mage/src/main/java/mage/abilities/keyword/ProtectionAbility.java index ecb7bd20ff6..856c2fa9bcc 100644 --- a/Mage/src/main/java/mage/abilities/keyword/ProtectionAbility.java +++ b/Mage/src/main/java/mage/abilities/keyword/ProtectionAbility.java @@ -11,7 +11,6 @@ import mage.filter.predicate.mageobject.ColorPredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.game.stack.Spell; -import mage.game.stack.StackObject; import mage.players.Player; import mage.util.CardUtil; @@ -74,7 +73,7 @@ public class ProtectionAbility extends StaticAbility { @Override public String getRule() { - return "protection from " + filter.getMessage() + (removeAuras ? "" : ". This effect doesn't remove auras."); + return "protection from " + filter.getMessage() + (removeAuras ? "" : ". This effect doesn't remove Auras."); } public boolean canTarget(MageObject source, Game game) { diff --git a/Mage/src/main/java/mage/filter/StaticFilters.java b/Mage/src/main/java/mage/filter/StaticFilters.java index 6d002d114b2..155ba8575ad 100644 --- a/Mage/src/main/java/mage/filter/StaticFilters.java +++ b/Mage/src/main/java/mage/filter/StaticFilters.java @@ -26,6 +26,10 @@ import mage.filter.predicate.permanent.TokenPredicate; */ public final class StaticFilters { + // Hide constructor - not to be instantiated + private StaticFilters() { + } + public static final FilterSpiritOrArcaneCard FILTER_SPIRIT_OR_ARCANE_CARD = new FilterSpiritOrArcaneCard(); static { @@ -261,7 +265,6 @@ public final class StaticFilters { FILTER_PERMANENT_ENCHANTMENT.setLockedFilter(true); } - public static final FilterEnchantmentPermanent FILTER_PERMANENT_ENCHANTMENTS = new FilterEnchantmentPermanent("enchantments"); static { diff --git a/Mage/src/main/java/mage/game/command/emblems/GarrukApexPredatorEmblem.java b/Mage/src/main/java/mage/game/command/emblems/GarrukApexPredatorEmblem.java index 87328b9c5f9..7b0aabbae2c 100644 --- a/Mage/src/main/java/mage/game/command/emblems/GarrukApexPredatorEmblem.java +++ b/Mage/src/main/java/mage/game/command/emblems/GarrukApexPredatorEmblem.java @@ -28,7 +28,7 @@ public final class GarrukApexPredatorEmblem extends Emblem { effect.setText("it gets +5/+5"); Ability ability = new AttackedByCreatureTriggeredAbility(Zone.COMMAND, effect, false, SetTargetPointer.PERMANENT); effect = new GainAbilityTargetEffect(TrampleAbility.getInstance(), Duration.EndOfTurn); - ability.addEffect(effect.concatBy("and")); + ability.addEffect(effect.setText("and gains trample until end of turn")); this.getAbilities().add(ability); } diff --git a/Mage/src/main/java/mage/game/permanent/token/SquidToken.java b/Mage/src/main/java/mage/game/permanent/token/SquidToken.java index 5bd708f989c..af219490073 100644 --- a/Mage/src/main/java/mage/game/permanent/token/SquidToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/SquidToken.java @@ -11,7 +11,7 @@ import mage.constants.SubType; public final class SquidToken extends TokenImpl { public SquidToken() { - super("Squid Token", "1/1 blue Squid creature token with Islandwalk"); + super("Squid Token", "1/1 blue Squid creature token with islandwalk"); cardType.add(CardType.CREATURE); color.setBlue(true); subtype.add(SubType.SQUID);