From d5822a72462d4798dae2ab2da390aae3a1401060 Mon Sep 17 00:00:00 2001 From: Evan Kranzler Date: Fri, 29 Jan 2021 17:37:56 -0500 Subject: [PATCH] [KHM] various text fixes --- .../src/mage/cards/a/AlrundGodOfTheCosmos.java | 6 +++--- Mage.Sets/src/mage/cards/a/AlrundsEpiphany.java | 2 +- Mage.Sets/src/mage/cards/a/AscendantSpirit.java | 2 +- Mage.Sets/src/mage/cards/a/AxgardArmory.java | 8 +++++--- .../src/mage/cards/b/BeholdTheMultiverse.java | 2 +- .../src/mage/cards/b/BindingTheOldGods.java | 2 +- .../src/mage/cards/b/BretagardStronghold.java | 4 ++-- Mage.Sets/src/mage/cards/d/DoomskarTitan.java | 1 + Mage.Sets/src/mage/cards/e/ElvenAmbush.java | 2 +- .../src/mage/cards/e/EradicatorValkyrie.java | 3 ++- Mage.Sets/src/mage/cards/f/FacelessHaven.java | 2 +- .../src/mage/cards/f/ForgingTheTyriteSword.java | 2 +- Mage.Sets/src/mage/cards/f/FrenziedRaider.java | 2 +- .../src/mage/cards/f/FrostpyreArcanist.java | 4 ++-- .../src/mage/cards/f/FynnTheFangbearer.java | 2 +- Mage.Sets/src/mage/cards/g/GiantsAmulet.java | 5 +++-- .../src/mage/cards/g/GildedAssaultCart.java | 2 +- Mage.Sets/src/mage/cards/g/GlitteringFrost.java | 3 ++- Mage.Sets/src/mage/cards/h/HorizonSeeker.java | 2 +- .../src/mage/cards/i/InvasionOfTheGiants.java | 2 +- .../src/mage/cards/n/NarfiBetrayerKing.java | 2 +- Mage.Sets/src/mage/cards/p/PortOfKarfell.java | 2 +- .../src/mage/cards/p/PriestOfTheHauntedEdge.java | 5 +++-- Mage.Sets/src/mage/cards/r/RaiseTheDraugr.java | 2 +- Mage.Sets/src/mage/cards/r/RallyTheRanks.java | 16 +++++++++++++--- .../src/mage/cards/r/ReidaneGodOfTheWorthy.java | 7 +++++-- Mage.Sets/src/mage/cards/r/RunAshore.java | 3 +++ Mage.Sets/src/mage/cards/s/SearchForGlory.java | 2 +- .../src/mage/cards/s/ShepherdOfTheCosmos.java | 2 +- Mage.Sets/src/mage/cards/s/SkemfarAvenger.java | 2 +- Mage.Sets/src/mage/cards/s/SkemfarElderhall.java | 2 +- Mage.Sets/src/mage/cards/s/SmashingSuccess.java | 2 +- .../src/mage/cards/s/SpiritOfTheAldergard.java | 2 +- Mage.Sets/src/mage/cards/s/StarnheimCourser.java | 2 +- .../src/mage/cards/t/TheBearsOfLittjara.java | 2 +- Mage.Sets/src/mage/cards/t/TheWorldTree.java | 7 +++++-- Mage.Sets/src/mage/cards/t/ToralfGodOfFury.java | 2 +- Mage.Sets/src/mage/cards/w/Withercrown.java | 2 +- .../java/mage/verify/VerifyCardDataTest.java | 2 +- .../condition/common/ForetoldCondition.java | 2 +- .../costs/common/RevealTargetFromHandCost.java | 2 +- .../abilities/effects/common/DoIfCostPaid.java | 1 + .../abilities/effects/common/DoWhenCostPaid.java | 1 + .../LookLibraryTopCardTargetPlayerEffect.java | 2 +- .../SetPowerToughnessTargetEffect.java | 14 ++++++++++++-- .../game/command/emblems/TyvarKellEmblem.java | 8 +++++--- 46 files changed, 97 insertions(+), 57 deletions(-) diff --git a/Mage.Sets/src/mage/cards/a/AlrundGodOfTheCosmos.java b/Mage.Sets/src/mage/cards/a/AlrundGodOfTheCosmos.java index 3c50b13bd1..076d9d7190 100644 --- a/Mage.Sets/src/mage/cards/a/AlrundGodOfTheCosmos.java +++ b/Mage.Sets/src/mage/cards/a/AlrundGodOfTheCosmos.java @@ -69,8 +69,8 @@ public final class AlrundGodOfTheCosmos extends ModalDoubleFacesCard { this.getRightHalfCard().addAbility(FlyingAbility.getInstance()); // Whenever Hakka, Whispering Raven deals combat damage to a player, return it to its owner’s hand, then scry 2. - Ability ability3 = new DealsCombatDamageToAPlayerTriggeredAbility(new ReturnToHandSourceEffect(), false); - ability3.addEffect(new ScryEffect(2)); + Ability ability3 = new DealsCombatDamageToAPlayerTriggeredAbility(new ReturnToHandSourceEffect().setText("return it to its owner's hand"), false); + ability3.addEffect(new ScryEffect(2).concatBy(", then")); this.getRightHalfCard().addAbility(ability3); } @@ -89,7 +89,7 @@ class AlrundGodOfTheCosmosEffect extends OneShotEffect { public AlrundGodOfTheCosmosEffect() { super(Outcome.Neutral); - staticText = "then reveal the top two cards of your library. Put all cards of the chosen type into your hand and the rest on the bottom of your library in any order"; + staticText = ", then reveal the top two cards of your library. Put all cards of the chosen type revealed this way into your hand and the rest on the bottom of your library in any order"; } public AlrundGodOfTheCosmosEffect(final AlrundGodOfTheCosmosEffect effect) { diff --git a/Mage.Sets/src/mage/cards/a/AlrundsEpiphany.java b/Mage.Sets/src/mage/cards/a/AlrundsEpiphany.java index 37ad9ab5bc..8e582f23c7 100644 --- a/Mage.Sets/src/mage/cards/a/AlrundsEpiphany.java +++ b/Mage.Sets/src/mage/cards/a/AlrundsEpiphany.java @@ -20,7 +20,7 @@ public final class AlrundsEpiphany extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{5}{U}{U}"); // Create two 1/1 blue Bird creature tokens with flying. Take an extra turn after this one. Exile Alrund's Epiphany. - this.getSpellAbility().addEffect(new CreateTokenEffect(new OwlToken())); + this.getSpellAbility().addEffect(new CreateTokenEffect(new OwlToken(), 2)); this.getSpellAbility().addEffect(new AddExtraTurnControllerEffect()); this.getSpellAbility().addEffect(ExileSpellEffect.getInstance()); diff --git a/Mage.Sets/src/mage/cards/a/AscendantSpirit.java b/Mage.Sets/src/mage/cards/a/AscendantSpirit.java index ce2612dc16..b9972d2aa0 100644 --- a/Mage.Sets/src/mage/cards/a/AscendantSpirit.java +++ b/Mage.Sets/src/mage/cards/a/AscendantSpirit.java @@ -101,7 +101,7 @@ class AscendantSpiritAngelEffect extends OneShotEffect { AscendantSpiritAngelEffect() { super(Outcome.Benefit); staticText = "if {this} is an Angel, put two +1/+1 counters on it and it gains " + - "\"Whenever this creature deals damage to a player, draw a card.\""; + "\"Whenever this creature deals combat damage to a player, draw a card.\""; } private AscendantSpiritAngelEffect(final AscendantSpiritAngelEffect effect) { diff --git a/Mage.Sets/src/mage/cards/a/AxgardArmory.java b/Mage.Sets/src/mage/cards/a/AxgardArmory.java index 7e0b26526d..070b13df46 100644 --- a/Mage.Sets/src/mage/cards/a/AxgardArmory.java +++ b/Mage.Sets/src/mage/cards/a/AxgardArmory.java @@ -27,7 +27,6 @@ public final class AxgardArmory extends CardImpl { public AxgardArmory(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.LAND}, ""); - // Axgard Armory enters the battlefield tapped. this.addAbility(new EntersBattlefieldTappedAbility()); @@ -35,8 +34,11 @@ public final class AxgardArmory extends CardImpl { this.addAbility(new WhiteManaAbility()); // {1}{R}{R}{W}, {T}: Sacrifice Axgard Armory: Search your library for an Aura card and/or Equipment card, reveal them, put them into your hand, then shuffle your library. - Ability ability = new SimpleActivatedAbility(new SearchLibraryPutInHandEffect( - new AxgardArmoryTarget()), new ManaCostsImpl("{1}{R}{R}{W}") + Ability ability = new SimpleActivatedAbility( + new SearchLibraryPutInHandEffect(new AxgardArmoryTarget()) + .setText("search your library for an Aura card and/or Equipment card, reveal them, " + + "put them into your hand, then shuffle your library"), + new ManaCostsImpl("{1}{R}{R}{W}") ); ability.addCost(new TapSourceCost()); ability.addCost(new SacrificeSourceCost()); diff --git a/Mage.Sets/src/mage/cards/b/BeholdTheMultiverse.java b/Mage.Sets/src/mage/cards/b/BeholdTheMultiverse.java index 2100c3c9c7..fded182fcb 100644 --- a/Mage.Sets/src/mage/cards/b/BeholdTheMultiverse.java +++ b/Mage.Sets/src/mage/cards/b/BeholdTheMultiverse.java @@ -18,7 +18,7 @@ public final class BeholdTheMultiverse extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{3}{U}"); // Scry 2, then draw two cards. - this.getSpellAbility().addEffect(new ScryEffect(2)); + this.getSpellAbility().addEffect(new ScryEffect(2, false)); this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(2).concatBy(", then")); // Foretell {1}{U} diff --git a/Mage.Sets/src/mage/cards/b/BindingTheOldGods.java b/Mage.Sets/src/mage/cards/b/BindingTheOldGods.java index 55adb86bc2..828bf9dcc0 100644 --- a/Mage.Sets/src/mage/cards/b/BindingTheOldGods.java +++ b/Mage.Sets/src/mage/cards/b/BindingTheOldGods.java @@ -50,7 +50,7 @@ public final class BindingTheOldGods extends CardImpl { // III — Creatures you control gain deathtouch until end of turn. sagaAbility.addChapterEffect(this, SagaChapter.CHAPTER_III, new GainAbilityControlledEffect(DeathtouchAbility.getInstance(), Duration.EndOfTurn, - StaticFilters.FILTER_CONTROLLED_CREATURES) + StaticFilters.FILTER_PERMANENT_CREATURES) ); this.addAbility(sagaAbility); } diff --git a/Mage.Sets/src/mage/cards/b/BretagardStronghold.java b/Mage.Sets/src/mage/cards/b/BretagardStronghold.java index 4057c81003..937672350f 100644 --- a/Mage.Sets/src/mage/cards/b/BretagardStronghold.java +++ b/Mage.Sets/src/mage/cards/b/BretagardStronghold.java @@ -45,11 +45,11 @@ public final class BretagardStronghold extends CardImpl { Ability ability = new ActivateAsSorceryActivatedAbility(Zone.BATTLEFIELD, countersEffect, new ManaCostsImpl<>("{G}{W}{W}")); Effect vigilanceEffect = new GainAbilityTargetEffect(VigilanceAbility.getInstance(), Duration.EndOfTurn); - vigilanceEffect.setText("They gain vigilance until end of turn"); + vigilanceEffect.setText("They gain vigilance"); ability.addEffect(vigilanceEffect); Effect lifelinkEffect = new GainAbilityTargetEffect(LifelinkAbility.getInstance(), Duration.EndOfTurn); - lifelinkEffect.setText("They gain lifelink until end of turn"); + lifelinkEffect.setText("and lifelink until end of turn"); ability.addEffect(lifelinkEffect); ability.addCost(new TapSourceCost()); diff --git a/Mage.Sets/src/mage/cards/d/DoomskarTitan.java b/Mage.Sets/src/mage/cards/d/DoomskarTitan.java index 703a5a4953..d46d435abe 100644 --- a/Mage.Sets/src/mage/cards/d/DoomskarTitan.java +++ b/Mage.Sets/src/mage/cards/d/DoomskarTitan.java @@ -31,6 +31,7 @@ public final class DoomskarTitan extends CardImpl { // When Doomskar Titan enters the battlefield, creatures you control get +1/+0 and gain haste until end of turn. Ability ability = new EntersBattlefieldTriggeredAbility( new BoostControlledEffect(1, 0, Duration.EndOfTurn) + .setText("creatures you control get +1/+0") ); ability.addEffect(new GainAbilityControlledEffect( HasteAbility.getInstance(), Duration.EndOfTurn diff --git a/Mage.Sets/src/mage/cards/e/ElvenAmbush.java b/Mage.Sets/src/mage/cards/e/ElvenAmbush.java index a71ba2387e..15090fa5d0 100644 --- a/Mage.Sets/src/mage/cards/e/ElvenAmbush.java +++ b/Mage.Sets/src/mage/cards/e/ElvenAmbush.java @@ -19,7 +19,7 @@ import mage.game.permanent.token.ElfToken; */ public final class ElvenAmbush extends CardImpl { - private static final FilterControlledPermanent filter = new FilterControlledPermanent("Elves you control"); + private static final FilterControlledPermanent filter = new FilterControlledPermanent("Elf you control"); static { filter.add(SubType.ELF.getPredicate()); diff --git a/Mage.Sets/src/mage/cards/e/EradicatorValkyrie.java b/Mage.Sets/src/mage/cards/e/EradicatorValkyrie.java index d967ce8bf5..25529e6cb1 100644 --- a/Mage.Sets/src/mage/cards/e/EradicatorValkyrie.java +++ b/Mage.Sets/src/mage/cards/e/EradicatorValkyrie.java @@ -14,6 +14,7 @@ import mage.constants.CardType; import mage.constants.SubType; import mage.filter.StaticFilters; import mage.target.common.TargetControlledCreaturePermanent; +import mage.target.common.TargetControlledPermanent; import java.util.UUID; @@ -43,7 +44,7 @@ public final class EradicatorValkyrie extends CardImpl { Ability ability = new BoastAbility(new SacrificeOpponentsEffect( StaticFilters.FILTER_PERMANENT_CREATURE_OR_PLANESWALKER ), "{1}{B}"); - ability.addCost(new SacrificeTargetCost(new TargetControlledCreaturePermanent())); + ability.addCost(new SacrificeTargetCost(new TargetControlledPermanent(StaticFilters.FILTER_CONTROLLED_CREATURE_SHORT_TEXT))); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/f/FacelessHaven.java b/Mage.Sets/src/mage/cards/f/FacelessHaven.java index 1a1f3ef6eb..9364592a25 100644 --- a/Mage.Sets/src/mage/cards/f/FacelessHaven.java +++ b/Mage.Sets/src/mage/cards/f/FacelessHaven.java @@ -31,7 +31,7 @@ public final class FacelessHaven extends CardImpl { // {S}{S}{S}: Faceless Haven becomes a 4/3 creature with vigilance and all creature types until end of turn. It's still a land. this.addAbility(new SimpleActivatedAbility(new BecomesCreatureSourceEffect( new FacelessHavenToken(), "land", Duration.EndOfTurn - ), new ManaCostsImpl("{S}{S}{S}"))); + ).setText("{this} becomes a 4/3 creature with vigilance and all creature types until end of turn. It's still a land"), new ManaCostsImpl("{S}{S}{S}"))); } private FacelessHaven(final FacelessHaven card) { diff --git a/Mage.Sets/src/mage/cards/f/ForgingTheTyriteSword.java b/Mage.Sets/src/mage/cards/f/ForgingTheTyriteSword.java index e334fe24d4..d2888199f8 100644 --- a/Mage.Sets/src/mage/cards/f/ForgingTheTyriteSword.java +++ b/Mage.Sets/src/mage/cards/f/ForgingTheTyriteSword.java @@ -22,7 +22,7 @@ import java.util.UUID; public final class ForgingTheTyriteSword extends CardImpl { private static final FilterCard filter - = new FilterCard("a card named Halvar, God of Battle or an Equipment card"); + = new FilterCard("card named Halvar, God of Battle or an Equipment card"); static { filter.add(Predicates.or( diff --git a/Mage.Sets/src/mage/cards/f/FrenziedRaider.java b/Mage.Sets/src/mage/cards/f/FrenziedRaider.java index 1d055668da..681148ea58 100644 --- a/Mage.Sets/src/mage/cards/f/FrenziedRaider.java +++ b/Mage.Sets/src/mage/cards/f/FrenziedRaider.java @@ -74,6 +74,6 @@ class FrenziedRaiderTriggeredAbility extends TriggeredAbilityImpl { @Override public String getRule() { - return "Whenever you activate a boast ability, put a +1/+1 counter on {this}"; + return "Whenever you activate a boast ability, put a +1/+1 counter on {this}."; } } diff --git a/Mage.Sets/src/mage/cards/f/FrostpyreArcanist.java b/Mage.Sets/src/mage/cards/f/FrostpyreArcanist.java index d9a380f671..17af9f4e0d 100644 --- a/Mage.Sets/src/mage/cards/f/FrostpyreArcanist.java +++ b/Mage.Sets/src/mage/cards/f/FrostpyreArcanist.java @@ -34,9 +34,9 @@ import java.util.UUID; */ public final class FrostpyreArcanist extends CardImpl { - private static final FilterPermanent filter = new FilterControlledPermanent("you control a Giant or Wizard"); + private static final FilterPermanent filter = new FilterControlledPermanent("you control a Giant or a Wizard"); private static final FilterCard filter2 = new FilterInstantOrSorceryCard( - "an instant or sorcery card with the same name as a card in your graveyard" + "instant or sorcery card with the same name as a card in your graveyard" ); static { diff --git a/Mage.Sets/src/mage/cards/f/FynnTheFangbearer.java b/Mage.Sets/src/mage/cards/f/FynnTheFangbearer.java index 4f59904fbc..9b2a6b6d69 100644 --- a/Mage.Sets/src/mage/cards/f/FynnTheFangbearer.java +++ b/Mage.Sets/src/mage/cards/f/FynnTheFangbearer.java @@ -23,7 +23,7 @@ import java.util.UUID; public final class FynnTheFangbearer extends CardImpl { private static final FilterPermanent filter - = new FilterControlledCreaturePermanent("creature you control with deathtouch"); + = new FilterControlledCreaturePermanent("a creature you control with deathtouch"); static { filter.add(new AbilityPredicate(DeathtouchAbility.class)); diff --git a/Mage.Sets/src/mage/cards/g/GiantsAmulet.java b/Mage.Sets/src/mage/cards/g/GiantsAmulet.java index 3850fde425..e8aff45d03 100644 --- a/Mage.Sets/src/mage/cards/g/GiantsAmulet.java +++ b/Mage.Sets/src/mage/cards/g/GiantsAmulet.java @@ -45,8 +45,9 @@ public final class GiantsAmulet extends CardImpl { HexproofAbility.getInstance(), Duration.WhileOnBattlefield ), new InvertCondition(SourceTappedCondition.instance), - "{this} has hexproof as long as it's untapped") - ), AttachmentType.EQUIPMENT)); + "{this} has hexproof as long as it's untapped" + )), AttachmentType.EQUIPMENT + ).setText("and has \"This creature has hexproof as long as it's untapped.\"")); this.addAbility(ability); // Equip {2} diff --git a/Mage.Sets/src/mage/cards/g/GildedAssaultCart.java b/Mage.Sets/src/mage/cards/g/GildedAssaultCart.java index 8ba3ff8fff..b0307cb9d5 100644 --- a/Mage.Sets/src/mage/cards/g/GildedAssaultCart.java +++ b/Mage.Sets/src/mage/cards/g/GildedAssaultCart.java @@ -22,7 +22,7 @@ import java.util.UUID; public final class GildedAssaultCart extends CardImpl { private static final FilterControlledPermanent filter - = new FilterControlledPermanent(SubType.TREASURE, "treasures"); + = new FilterControlledPermanent(SubType.TREASURE, "Treasures"); public GildedAssaultCart(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{1}{R}{R}"); diff --git a/Mage.Sets/src/mage/cards/g/GlitteringFrost.java b/Mage.Sets/src/mage/cards/g/GlitteringFrost.java index f414b428ef..57c5690378 100644 --- a/Mage.Sets/src/mage/cards/g/GlitteringFrost.java +++ b/Mage.Sets/src/mage/cards/g/GlitteringFrost.java @@ -39,7 +39,8 @@ public final class GlitteringFrost extends CardImpl { ).setText("enchanted land is snow"))); // Whenever enchanted land is tapped for mana, its controller adds an additional one mana of any color. - this.addAbility(new EnchantedTappedTriggeredManaAbility(new AddManaAnyColorAttachedControllerEffect())); + this.addAbility(new EnchantedTappedTriggeredManaAbility(new AddManaAnyColorAttachedControllerEffect() + .setText("its controller adds an additional one mana of any color"))); } private GlitteringFrost(final GlitteringFrost card) { diff --git a/Mage.Sets/src/mage/cards/h/HorizonSeeker.java b/Mage.Sets/src/mage/cards/h/HorizonSeeker.java index ef7cc7fda1..627c60529e 100644 --- a/Mage.Sets/src/mage/cards/h/HorizonSeeker.java +++ b/Mage.Sets/src/mage/cards/h/HorizonSeeker.java @@ -27,7 +27,7 @@ public final class HorizonSeeker extends CardImpl { // Boast — {1}{G}: Search your library for a basic land card, reveal it, put it into your hand, then shuffle your library. this.addAbility(new BoastAbility(new SearchLibraryPutInHandEffect( - new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND_A), true + new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true ), "{1}{G}")); } diff --git a/Mage.Sets/src/mage/cards/i/InvasionOfTheGiants.java b/Mage.Sets/src/mage/cards/i/InvasionOfTheGiants.java index a86c7c130e..cd67d815d4 100644 --- a/Mage.Sets/src/mage/cards/i/InvasionOfTheGiants.java +++ b/Mage.Sets/src/mage/cards/i/InvasionOfTheGiants.java @@ -83,7 +83,7 @@ class InvasionOfTheGiantsEffect extends CostModificationEffectImpl { InvasionOfTheGiantsEffect() { super(Duration.EndOfTurn, Outcome.Benefit, CostModificationType.REDUCE_COST); - staticText = "the next Giant spell you cast this turns costs {2} less to cast"; + staticText = "the next Giant spell you cast this turn costs {2} less to cast"; } private InvasionOfTheGiantsEffect(final InvasionOfTheGiantsEffect effect) { diff --git a/Mage.Sets/src/mage/cards/n/NarfiBetrayerKing.java b/Mage.Sets/src/mage/cards/n/NarfiBetrayerKing.java index e7f5dd8b3a..ec4992aa4d 100644 --- a/Mage.Sets/src/mage/cards/n/NarfiBetrayerKing.java +++ b/Mage.Sets/src/mage/cards/n/NarfiBetrayerKing.java @@ -47,7 +47,7 @@ public final class NarfiBetrayerKing extends CardImpl { // {S}{S}{S}: Return Narfi, Betrayer King from your graveyard to the battlefield tapped. this.addAbility(new SimpleActivatedAbility( Zone.GRAVEYARD, - new ReturnSourceFromGraveyardToBattlefieldEffect(true), + new ReturnSourceFromGraveyardToBattlefieldEffect(true, false), new ManaCostsImpl("{S}{S}{S}") )); } diff --git a/Mage.Sets/src/mage/cards/p/PortOfKarfell.java b/Mage.Sets/src/mage/cards/p/PortOfKarfell.java index a582b29f60..e986112518 100644 --- a/Mage.Sets/src/mage/cards/p/PortOfKarfell.java +++ b/Mage.Sets/src/mage/cards/p/PortOfKarfell.java @@ -57,7 +57,7 @@ class PortOfKarfellEffect extends OneShotEffect { PortOfKarfellEffect() { super(Outcome.Benefit); - staticText = "mill four cards, then return a creature card from your graveyard to the battlefield"; + staticText = "mill four cards, then return a creature card from your graveyard to the battlefield tapped"; } private PortOfKarfellEffect(final PortOfKarfellEffect effect) { diff --git a/Mage.Sets/src/mage/cards/p/PriestOfTheHauntedEdge.java b/Mage.Sets/src/mage/cards/p/PriestOfTheHauntedEdge.java index 25bb97b27f..8d53e0b0d8 100644 --- a/Mage.Sets/src/mage/cards/p/PriestOfTheHauntedEdge.java +++ b/Mage.Sets/src/mage/cards/p/PriestOfTheHauntedEdge.java @@ -6,6 +6,7 @@ import mage.abilities.common.ActivateAsSorceryActivatedAbility; import mage.abilities.costs.common.SacrificeSourceCost; import mage.abilities.costs.common.TapSourceCost; import mage.abilities.dynamicvalue.DynamicValue; +import mage.abilities.dynamicvalue.MultipliedValue; import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.effects.common.continuous.BoostTargetEffect; import mage.cards.CardImpl; @@ -28,7 +29,7 @@ public final class PriestOfTheHauntedEdge extends CardImpl { filter.add(SuperType.SNOW.getPredicate()); } - private static final DynamicValue xValue = new PermanentsOnBattlefieldCount(filter); + private static final DynamicValue xValue = new MultipliedValue(new PermanentsOnBattlefieldCount(filter), -1); public PriestOfTheHauntedEdge(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}"); @@ -43,7 +44,7 @@ public final class PriestOfTheHauntedEdge extends CardImpl { Ability ability = new ActivateAsSorceryActivatedAbility( Zone.BATTLEFIELD, new BoostTargetEffect( xValue, xValue, Duration.EndOfTurn, true - ), new TapSourceCost()); + ).setText("target creature gets -X/-X until end of turn, where X is the number of snow lands you control"), new TapSourceCost()); ability.addCost(new SacrificeSourceCost()); ability.addTarget(new TargetCreaturePermanent()); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/r/RaiseTheDraugr.java b/Mage.Sets/src/mage/cards/r/RaiseTheDraugr.java index 820a24f20d..8e6c1295a8 100644 --- a/Mage.Sets/src/mage/cards/r/RaiseTheDraugr.java +++ b/Mage.Sets/src/mage/cards/r/RaiseTheDraugr.java @@ -50,7 +50,7 @@ class RaiseTheDraugrTarget extends TargetCardInYourGraveyard { RaiseTheDraugrTarget() { super(2, 2, StaticFilters.FILTER_CARD_CREATURE, false); - targetName = "creature cards that share a creature type"; + targetName = "creature cards that share a creature type from your graveyard"; } private RaiseTheDraugrTarget(final RaiseTheDraugrTarget target) { diff --git a/Mage.Sets/src/mage/cards/r/RallyTheRanks.java b/Mage.Sets/src/mage/cards/r/RallyTheRanks.java index 03212f2cc5..8f5f0dcc7e 100644 --- a/Mage.Sets/src/mage/cards/r/RallyTheRanks.java +++ b/Mage.Sets/src/mage/cards/r/RallyTheRanks.java @@ -3,12 +3,15 @@ package mage.cards.r; import mage.abilities.common.AsEntersBattlefieldAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.common.ChooseCreatureTypeEffect; -import mage.abilities.effects.common.continuous.BoostAllOfChosenSubtypeEffect; +import mage.abilities.effects.common.continuous.BoostAllEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; import mage.constants.Outcome; +import mage.constants.TargetController; +import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.ChosenSubtypePredicate; import java.util.UUID; @@ -17,6 +20,13 @@ import java.util.UUID; */ public final class RallyTheRanks extends CardImpl { + private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures you control of the chosen type"); + + static { + filter.add(TargetController.YOU.getControllerPredicate()); + filter.add(ChosenSubtypePredicate.TRUE); + } + public RallyTheRanks(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{W}"); @@ -24,8 +34,8 @@ public final class RallyTheRanks extends CardImpl { this.addAbility(new AsEntersBattlefieldAbility(new ChooseCreatureTypeEffect(Outcome.BoostCreature))); // Creatures you control of the chosen type get +1/+1. - this.addAbility(new SimpleStaticAbility(new BoostAllOfChosenSubtypeEffect( - 1, 1, Duration.WhileOnBattlefield, false + this.addAbility(new SimpleStaticAbility(new BoostAllEffect( + 1, 1, Duration.WhileOnBattlefield, filter, false ))); } diff --git a/Mage.Sets/src/mage/cards/r/ReidaneGodOfTheWorthy.java b/Mage.Sets/src/mage/cards/r/ReidaneGodOfTheWorthy.java index 29ae22b739..c5970ed9dd 100644 --- a/Mage.Sets/src/mage/cards/r/ReidaneGodOfTheWorthy.java +++ b/Mage.Sets/src/mage/cards/r/ReidaneGodOfTheWorthy.java @@ -121,7 +121,7 @@ class ReidaneGodOfTheWorthyCostEffect extends CostModificationEffectImpl { ReidaneGodOfTheWorthyCostEffect() { super(Duration.WhileOnBattlefield, Outcome.Benefit, CostModificationType.INCREASE_COST); - staticText = "Noncreature spells your opponents cast with converted mana cost 4 or greater cost {2} more to cast until your next turn"; + staticText = "Noncreature spells your opponents cast with converted mana cost 4 or greater cost {2} more to cast"; } private ReidaneGodOfTheWorthyCostEffect(ReidaneGodOfTheWorthyCostEffect effect) { @@ -155,7 +155,7 @@ class ValkmiraProtectorsShieldPreventionEffect extends PreventionEffectImpl { ValkmiraProtectorsShieldPreventionEffect() { super(Duration.WhileOnBattlefield, 1, false, false); - this.staticText = "If a source would deal damage to you or a permanent you control, prevent 1 of that damage"; + this.staticText = "If a source an opponent controls would deal damage to you or a permanent you control, prevent 1 of that damage"; } private ValkmiraProtectorsShieldPreventionEffect(ValkmiraProtectorsShieldPreventionEffect effect) { @@ -169,6 +169,9 @@ class ValkmiraProtectorsShieldPreventionEffect extends PreventionEffectImpl { @Override public boolean applies(GameEvent event, Ability source, Game game) { + if (!game.getOpponents(event.getSourceId()).contains(source.getControllerId())) { + return false; + } switch (event.getType()) { case DAMAGE_PLAYER: return source.isControlledBy(event.getTargetId()) diff --git a/Mage.Sets/src/mage/cards/r/RunAshore.java b/Mage.Sets/src/mage/cards/r/RunAshore.java index fac88b0e3f..5b761dfcd0 100644 --- a/Mage.Sets/src/mage/cards/r/RunAshore.java +++ b/Mage.Sets/src/mage/cards/r/RunAshore.java @@ -24,6 +24,9 @@ public final class RunAshore extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{4}{U}{U}"); // Choose one or both — + this.getSpellAbility().getModes().setMinModes(1); + this.getSpellAbility().getModes().setMaxModes(2); + // • The owner of target nonland permanent puts it on the top or bottom of their library. this.getSpellAbility().addEffect(new RunAshoreEffect()); this.getSpellAbility().addTarget(new TargetNonlandPermanent()); diff --git a/Mage.Sets/src/mage/cards/s/SearchForGlory.java b/Mage.Sets/src/mage/cards/s/SearchForGlory.java index 8394658d89..3b68ecccc2 100644 --- a/Mage.Sets/src/mage/cards/s/SearchForGlory.java +++ b/Mage.Sets/src/mage/cards/s/SearchForGlory.java @@ -22,7 +22,7 @@ import java.util.UUID; public final class SearchForGlory extends CardImpl { private static final FilterCard filter = new FilterCard( - "a snow permanent card, a legendary card, or a Saga card" + "snow permanent card, a legendary card, or a Saga card" ); static { diff --git a/Mage.Sets/src/mage/cards/s/ShepherdOfTheCosmos.java b/Mage.Sets/src/mage/cards/s/ShepherdOfTheCosmos.java index d551e56d7a..720d7d14d0 100644 --- a/Mage.Sets/src/mage/cards/s/ShepherdOfTheCosmos.java +++ b/Mage.Sets/src/mage/cards/s/ShepherdOfTheCosmos.java @@ -43,7 +43,7 @@ public final class ShepherdOfTheCosmos extends CardImpl { this.addAbility(FlyingAbility.getInstance()); // When Shepherd of the Cosmos enters the battlefield, return target permanent card with converted mana cost 2 or less from your graveyard to the battlefield. - Ability ability = new EntersBattlefieldTriggeredAbility(new ReturnFromGraveyardToBattlefieldTargetEffect()); + Ability ability = new EntersBattlefieldTriggeredAbility(new ReturnFromGraveyardToBattlefieldTargetEffect(false, false)); ability.addTarget(new TargetCardInYourGraveyard(filter)); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/s/SkemfarAvenger.java b/Mage.Sets/src/mage/cards/s/SkemfarAvenger.java index be39957121..21501ed866 100644 --- a/Mage.Sets/src/mage/cards/s/SkemfarAvenger.java +++ b/Mage.Sets/src/mage/cards/s/SkemfarAvenger.java @@ -44,7 +44,7 @@ public final class SkemfarAvenger extends CardImpl { // Whenever another nontoken Elf or Berserker you control dies, you draw a card and you lose 1 life. Ability ability = new DiesCreatureTriggeredAbility( - new DrawCardSourceControllerEffect(1), false, filter + new DrawCardSourceControllerEffect(1).setText("you draw a card"), false, filter ); ability.addEffect(new LoseLifeSourceControllerEffect(1).concatBy("and")); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/s/SkemfarElderhall.java b/Mage.Sets/src/mage/cards/s/SkemfarElderhall.java index 73612997b5..6e41005c3c 100644 --- a/Mage.Sets/src/mage/cards/s/SkemfarElderhall.java +++ b/Mage.Sets/src/mage/cards/s/SkemfarElderhall.java @@ -42,7 +42,7 @@ public final class SkemfarElderhall extends CardImpl { ability.addCost(new TapSourceCost()); ability.addCost(new SacrificeSourceCost()); ability.addEffect(new CreateTokenEffect(new ElfToken(), 2)); - ability.addTarget(new TargetPermanent(StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL)); + ability.addTarget(new TargetPermanent(0, 1, StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL, false)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/SmashingSuccess.java b/Mage.Sets/src/mage/cards/s/SmashingSuccess.java index 5bf135d7ca..ff575de473 100644 --- a/Mage.Sets/src/mage/cards/s/SmashingSuccess.java +++ b/Mage.Sets/src/mage/cards/s/SmashingSuccess.java @@ -50,7 +50,7 @@ class SmashingSuccessEffect extends OneShotEffect { public SmashingSuccessEffect() { super(Outcome.DestroyPermanent); - staticText = "Destroy target artifact or land. If an artifact is destroyed this was, create a Treasure token."; + staticText = "Destroy target artifact or land. If an artifact is destroyed this way, create a Treasure token."; } private SmashingSuccessEffect(final SmashingSuccessEffect effect) { diff --git a/Mage.Sets/src/mage/cards/s/SpiritOfTheAldergard.java b/Mage.Sets/src/mage/cards/s/SpiritOfTheAldergard.java index e35eaf6b36..5bd8561dc0 100644 --- a/Mage.Sets/src/mage/cards/s/SpiritOfTheAldergard.java +++ b/Mage.Sets/src/mage/cards/s/SpiritOfTheAldergard.java @@ -29,7 +29,7 @@ import java.util.UUID; public final class SpiritOfTheAldergard extends CardImpl { private static final FilterCard filter - = new FilterLandCard("a snow land card"); + = new FilterLandCard("snow land card"); private static final FilterPermanent filter2 = new FilterControlledPermanent("other snow permanent you control"); diff --git a/Mage.Sets/src/mage/cards/s/StarnheimCourser.java b/Mage.Sets/src/mage/cards/s/StarnheimCourser.java index 9a585d0ab5..0f63ab4c32 100644 --- a/Mage.Sets/src/mage/cards/s/StarnheimCourser.java +++ b/Mage.Sets/src/mage/cards/s/StarnheimCourser.java @@ -18,7 +18,7 @@ import java.util.UUID; */ public final class StarnheimCourser extends CardImpl { - private static final FilterCard filter = new FilterArtifactOrEnchantmentCard("artifact and enchantment"); + private static final FilterCard filter = new FilterArtifactOrEnchantmentCard("artifact and enchantment spells"); public StarnheimCourser(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}"); diff --git a/Mage.Sets/src/mage/cards/t/TheBearsOfLittjara.java b/Mage.Sets/src/mage/cards/t/TheBearsOfLittjara.java index 163c2e2cbb..19686b8710 100644 --- a/Mage.Sets/src/mage/cards/t/TheBearsOfLittjara.java +++ b/Mage.Sets/src/mage/cards/t/TheBearsOfLittjara.java @@ -38,7 +38,7 @@ public final class TheBearsOfLittjara extends CardImpl { // I — Create a 2/2 blue Shapeshifter creature token with changeling. sagaAbility.addChapterEffect( - this, SagaChapter.CHAPTER_II, + this, SagaChapter.CHAPTER_I, new CreateTokenEffect(new ShapeshifterBlueToken()) ); diff --git a/Mage.Sets/src/mage/cards/t/TheWorldTree.java b/Mage.Sets/src/mage/cards/t/TheWorldTree.java index 134557ffa8..3f84c114a8 100644 --- a/Mage.Sets/src/mage/cards/t/TheWorldTree.java +++ b/Mage.Sets/src/mage/cards/t/TheWorldTree.java @@ -22,7 +22,6 @@ import mage.constants.Duration; import mage.constants.SubType; import mage.filter.FilterCard; import mage.filter.StaticFilters; -import mage.filter.common.FilterBySubtypeCard; import mage.target.common.TargetCardInLibrary; import java.util.UUID; @@ -32,11 +31,15 @@ import java.util.UUID; */ public final class TheWorldTree extends CardImpl { - private static final FilterCard filter = new FilterBySubtypeCard(SubType.GOD); + private static final FilterCard filter = new FilterCard("God cards"); private static final Condition condition = new PermanentsOnTheBattlefieldCondition( StaticFilters.FILTER_CONTROLLED_PERMANENT_LAND, ComparisonType.MORE_THAN, 5 ); + static { + filter.add(SubType.GOD.getPredicate()); + } + public TheWorldTree(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.LAND}, ""); diff --git a/Mage.Sets/src/mage/cards/t/ToralfGodOfFury.java b/Mage.Sets/src/mage/cards/t/ToralfGodOfFury.java index e2e7f41ec8..fdc9c4d7cb 100644 --- a/Mage.Sets/src/mage/cards/t/ToralfGodOfFury.java +++ b/Mage.Sets/src/mage/cards/t/ToralfGodOfFury.java @@ -67,7 +67,7 @@ public final class ToralfGodOfFury extends ModalDoubleFacesCard { // Equipped creature has "{1}{R}, {T}, Unattach Toralf's Hammer: It deals 3 damage to any target. Return Toralf's Hammer to its owner's hand." this.getRightHalfCard().addAbility(new SimpleStaticAbility(new GainAbilityWithAttachmentEffect( - "equipped creature has \"{tap}, Unattach {this}: It deals 3 damage to any target. Return {this} to its owner's hand.\"", + "equipped creature has \"{1}{R}, {T}, Unattach {this}: It deals 3 damage to any target. Return {this} to its owner's hand.\"", new ToralfsHammerEffect(), new TargetAnyTarget(), new UnattachCost(), new ManaCostsImpl<>("{1}{R}"), new TapSourceCost() ))); diff --git a/Mage.Sets/src/mage/cards/w/Withercrown.java b/Mage.Sets/src/mage/cards/w/Withercrown.java index 6bddb9302a..ce6d35ee2c 100644 --- a/Mage.Sets/src/mage/cards/w/Withercrown.java +++ b/Mage.Sets/src/mage/cards/w/Withercrown.java @@ -55,7 +55,7 @@ public final class Withercrown extends CardImpl { effect2.setText("you lose 1 life unless you sacrifice this creature."); Effect effect3 = new GainAbilityAttachedEffect(new BeginningOfUpkeepTriggeredAbility(Zone.BATTLEFIELD, effect2, TargetController.YOU, false, false, null), AttachmentType.AURA); - effect3.setText("and has “At the beginning of your upkeep, you lose 1 life unless you sacrifice this creature."); + effect3.setText("and has \"At the beginning of your upkeep, you lose 1 life unless you sacrifice this creature.\""); abilityTest.addEffect(effect3); this.addAbility(abilityTest); diff --git a/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java b/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java index eca0cba80c..e0f7db91dd 100644 --- a/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java +++ b/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java @@ -54,7 +54,7 @@ public class VerifyCardDataTest { private static final Logger logger = Logger.getLogger(VerifyCardDataTest.class); - private static final String FULL_ABILITIES_CHECK_SET_CODE = "CMR"; // check all abilities and output cards with wrong abilities texts; + private static final String FULL_ABILITIES_CHECK_SET_CODE = "KHM"; // check all abilities and output cards with wrong abilities texts; private static final boolean AUTO_FIX_SAMPLE_DECKS = false; // debug only: auto-fix sample decks by test_checkSampleDecks test run private static final HashMap> skipCheckLists = new HashMap<>(); diff --git a/Mage/src/main/java/mage/abilities/condition/common/ForetoldCondition.java b/Mage/src/main/java/mage/abilities/condition/common/ForetoldCondition.java index cdbaad4cdc..1495146ba9 100644 --- a/Mage/src/main/java/mage/abilities/condition/common/ForetoldCondition.java +++ b/Mage/src/main/java/mage/abilities/condition/common/ForetoldCondition.java @@ -24,6 +24,6 @@ public enum ForetoldCondition implements Condition { @Override public String toString() { - return "this card was foretold"; + return "this spell was foretold"; } } \ No newline at end of file diff --git a/Mage/src/main/java/mage/abilities/costs/common/RevealTargetFromHandCost.java b/Mage/src/main/java/mage/abilities/costs/common/RevealTargetFromHandCost.java index 1b45d62919..1ab24181ba 100644 --- a/Mage/src/main/java/mage/abilities/costs/common/RevealTargetFromHandCost.java +++ b/Mage/src/main/java/mage/abilities/costs/common/RevealTargetFromHandCost.java @@ -27,7 +27,7 @@ public class RevealTargetFromHandCost extends CostImpl { public RevealTargetFromHandCost(TargetCardInHand target) { this.addTarget(target); - this.text = (target.getNumberOfTargets() == 0 ? "You may reveal " : "Reveal ") + target.getTargetName(); + this.text = (target.getNumberOfTargets() == 0 ? "you may reveal " : "reveal ") + target.getTargetName(); this.revealedCards = new ArrayList<>(); } diff --git a/Mage/src/main/java/mage/abilities/effects/common/DoIfCostPaid.java b/Mage/src/main/java/mage/abilities/effects/common/DoIfCostPaid.java index fa1ac5841e..1ae34af645 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/DoIfCostPaid.java +++ b/Mage/src/main/java/mage/abilities/effects/common/DoIfCostPaid.java @@ -168,6 +168,7 @@ public class DoIfCostPaid extends OneShotEffect { && !costText.toLowerCase(Locale.ENGLISH).startsWith("sacrifice") && !costText.toLowerCase(Locale.ENGLISH).startsWith("remove") && !costText.toLowerCase(Locale.ENGLISH).startsWith("tap") + && !costText.toLowerCase(Locale.ENGLISH).startsWith("reveal") && !costText.toLowerCase(Locale.ENGLISH).startsWith("pay")) { sb.append("pay "); } diff --git a/Mage/src/main/java/mage/abilities/effects/common/DoWhenCostPaid.java b/Mage/src/main/java/mage/abilities/effects/common/DoWhenCostPaid.java index fb410fb557..d5bec143b6 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/DoWhenCostPaid.java +++ b/Mage/src/main/java/mage/abilities/effects/common/DoWhenCostPaid.java @@ -88,6 +88,7 @@ public class DoWhenCostPaid extends OneShotEffect { && !costText.toLowerCase(Locale.ENGLISH).startsWith("sacrifice") && !costText.toLowerCase(Locale.ENGLISH).startsWith("remove") && !costText.toLowerCase(Locale.ENGLISH).startsWith("tap") + && !costText.toLowerCase(Locale.ENGLISH).startsWith("reveal") && !costText.toLowerCase(Locale.ENGLISH).startsWith("pay")) { sb.append("pay "); } diff --git a/Mage/src/main/java/mage/abilities/effects/common/LookLibraryTopCardTargetPlayerEffect.java b/Mage/src/main/java/mage/abilities/effects/common/LookLibraryTopCardTargetPlayerEffect.java index e84bedee13..c45555bcbc 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/LookLibraryTopCardTargetPlayerEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/LookLibraryTopCardTargetPlayerEffect.java @@ -107,7 +107,7 @@ public class LookLibraryTopCardTargetPlayerEffect extends OneShotEffect { } else { sb.append("that card"); } - sb.append(" into that player's graveyard"); + sb.append(" into their graveyard"); } if (mayShuffleAfter) { sb.append(". You may then have that player shuffle that library"); diff --git a/Mage/src/main/java/mage/abilities/effects/common/continuous/SetPowerToughnessTargetEffect.java b/Mage/src/main/java/mage/abilities/effects/common/continuous/SetPowerToughnessTargetEffect.java index fd1f1310a9..b8ff7c4f84 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/continuous/SetPowerToughnessTargetEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/continuous/SetPowerToughnessTargetEffect.java @@ -11,6 +11,7 @@ import mage.constants.Outcome; import mage.constants.SubLayer; import mage.game.Game; import mage.game.permanent.Permanent; +import mage.target.Target; import java.util.UUID; @@ -70,8 +71,17 @@ public class SetPowerToughnessTargetEffect extends ContinuousEffectImpl { if (!mode.getTargets().get(0).getTargetName().contains("target")) { sb.append("target "); } - sb.append(mode.getTargets().get(0).getTargetName()).append(" has base power and toughness "); - sb.append(power).append('/').append(toughness).append(' ').append(duration.toString()); + sb.append(mode.getTargets().get(0).getTargetName()); + if (mode.getTargets().stream().mapToInt(Target::getMaxNumberOfTargets).max().orElse(0) > 1) { + sb.append(" have"); + } else { + sb.append(" has"); + } + sb.append(" base power and toughness "); + sb.append(power).append('/').append(toughness); + if (!duration.toString().isEmpty()) { + sb.append(' ').append(duration.toString()); + } return sb.toString(); } diff --git a/Mage/src/main/java/mage/game/command/emblems/TyvarKellEmblem.java b/Mage/src/main/java/mage/game/command/emblems/TyvarKellEmblem.java index b99d0d8aff..6500ee4fd3 100644 --- a/Mage/src/main/java/mage/game/command/emblems/TyvarKellEmblem.java +++ b/Mage/src/main/java/mage/game/command/emblems/TyvarKellEmblem.java @@ -27,9 +27,11 @@ public final class TyvarKellEmblem extends Emblem { this.setName("Emblem Tyvar"); this.setExpansionSetCodeForImage("KHM"); - Ability ability = new SpellCastControllerTriggeredAbility(Zone.COMMAND, - new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.EndOfTurn, null, true), - filter, false, true, true + Ability ability = new SpellCastControllerTriggeredAbility( + Zone.COMMAND, + new GainAbilityTargetEffect( + HasteAbility.getInstance(), Duration.EndOfTurn, null, true + ).setText("it gains haste until end of turn"), filter, false, true, true ); ability.addEffect(new DrawCardSourceControllerEffect(2, "you").concatBy("and")); this.getAbilities().add(ability);