Skip to content

Commit

Permalink
Various text fixes (#10251)
Browse files Browse the repository at this point in the history
* Fix text: Invigorate (fixes #8708) - override

* Fix text: sacrifice multiple permanents (as cost)

* Fix text: Coral Colony - override and add hint

* Fix text: Corpse Harvester (fixes #7837) - override

* Fix text: Solitary Camel, Sidewinder Naga

* Fix text: Malicious Advice

* Fix text: Ray of Command

* Fix text: Retreat to Hagra

* Fix reminder text for "End the turn."

* Fix text: Elspeth, Undaunted Hero

* Fix text: Gideon, Champion of Justice

* Fix text generation for condition: no counters

* Fix text: PhantasmalSphere

* Fix text: Retaliation

* Fix text generation for additional cost: discard X cards

* Fix text: Soul Separator

* Fix text: Thundermaw Hellkite

* Fix text: Torment of Hailfire

* Fix text: Twilight Prophet

* Fix text: ETB cantrips next turn's upkeep

* Fix text: Venser's Journal
  • Loading branch information
xenohedron authored Apr 25, 2023
1 parent 0bb56e9 commit 9abaa75
Show file tree
Hide file tree
Showing 33 changed files with 92 additions and 59 deletions.
9 changes: 7 additions & 2 deletions Mage.Sets/src/mage/cards/b/BankruptInBlood.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,9 @@
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.target.common.TargetControlledCreaturePermanent;
import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.common.FilterControlledPermanent;
import mage.target.common.TargetControlledPermanent;

import java.util.UUID;

Expand All @@ -14,11 +16,14 @@
*/
public final class BankruptInBlood extends CardImpl {

private static final FilterControlledPermanent filter
= new FilterControlledCreaturePermanent("creatures");

public BankruptInBlood(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{B}");

// As an additional cost to cast this spell, sacrifice two creatures.
this.getSpellAbility().addCost(new SacrificeTargetCost(new TargetControlledCreaturePermanent(2)));
this.getSpellAbility().addCost(new SacrificeTargetCost(new TargetControlledPermanent(2, filter)));

// Draw three cards.
this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(3));
Expand Down
3 changes: 2 additions & 1 deletion Mage.Sets/src/mage/cards/b/BestialFury.java
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,8 @@ public BestialFury(UUID ownerId, CardSetInfo setInfo) {

// When Bestial Fury enters the battlefield, draw a card at the beginning of the next turn's upkeep.
this.addAbility(new EntersBattlefieldTriggeredAbility(new CreateDelayedTriggeredAbilityEffect(
new AtTheBeginOfNextUpkeepDelayedTriggeredAbility(new DrawCardSourceControllerEffect(1), Duration.OneUse)), false));
new AtTheBeginOfNextUpkeepDelayedTriggeredAbility(new DrawCardSourceControllerEffect(1), Duration.OneUse))
.setText("draw a card at the beginning of the next turn's upkeep"), false));

// Whenever enchanted creature becomes blocked, it gets +4/+0 and gains trample until end of turn.
Ability pumpAbility = new BecomesBlockedAttachedTriggeredAbility(new BoostEnchantedEffect(4, 0, Duration.EndOfTurn), false);
Expand Down
9 changes: 6 additions & 3 deletions Mage.Sets/src/mage/cards/b/BogDown.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,8 @@
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.filter.StaticFilters;
import mage.filter.common.FilterControlledLandPermanent;
import mage.filter.common.FilterControlledPermanent;
import mage.target.TargetPlayer;
import mage.target.common.TargetControlledPermanent;

Expand All @@ -19,12 +20,14 @@
*/
public final class BogDown extends CardImpl {

private static final FilterControlledPermanent filter
= new FilterControlledLandPermanent("lands");

public BogDown(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{B}");

// Kicker-Sacrifice two lands.
this.addAbility(new KickerAbility(new SacrificeTargetCost(new TargetControlledPermanent(2, 2,
StaticFilters.FILTER_CONTROLLED_LAND_SHORT_TEXT, true))));
this.addAbility(new KickerAbility(new SacrificeTargetCost(new TargetControlledPermanent(2, filter))));

// Target player discards two cards. If Bog Down was kicked, that player discards three cards instead.
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(new DiscardTargetEffect(3),
Expand Down
3 changes: 2 additions & 1 deletion Mage.Sets/src/mage/cards/c/CarrierPigeons.java
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,8 @@ public CarrierPigeons(UUID ownerId, CardSetInfo setInfo) {

// When Carrier Pigeons enters the battlefield, draw a card at the beginning of the next turn's upkeep.
this.addAbility(new EntersBattlefieldTriggeredAbility(new CreateDelayedTriggeredAbilityEffect(
new AtTheBeginOfNextUpkeepDelayedTriggeredAbility(new DrawCardSourceControllerEffect(1), Duration.OneUse), false)));
new AtTheBeginOfNextUpkeepDelayedTriggeredAbility(new DrawCardSourceControllerEffect(1), Duration.OneUse), false)
.setText("draw a card at the beginning of the next turn's upkeep")));
}

private CarrierPigeons(final CarrierPigeons card) {
Expand Down
7 changes: 4 additions & 3 deletions Mage.Sets/src/mage/cards/c/CoralColony.java
Original file line number Diff line number Diff line change
Expand Up @@ -47,11 +47,12 @@ public CoralColony(UUID ownerId, CardSetInfo setInfo) {
// Defender
this.addAbility(DefenderAbility.getInstance());

// {1}{U}, {T}: Target player mills X cards, where X is the number of cards you control with defender.
Ability ability = new SimpleActivatedAbility(new MillCardsTargetEffect(xValue), new ManaCostsImpl<>("{1}{U}"));
// {1}{U}, {T}: Target player mills X cards, where X is the number of creatures you control with defender.
String ruleText = "target player mills X cards, where X is the number of creatures you control with defender";
Ability ability = new SimpleActivatedAbility(new MillCardsTargetEffect(xValue).setText(ruleText), new ManaCostsImpl<>("{1}{U}"));
ability.addCost(new TapSourceCost());
ability.addTarget(new TargetPlayer());
this.addAbility(ability);
this.addAbility(ability.addHint(hint));
}

private CoralColony(final CoralColony card) {
Expand Down
3 changes: 2 additions & 1 deletion Mage.Sets/src/mage/cards/c/CorpseHarvester.java
Original file line number Diff line number Diff line change
Expand Up @@ -35,9 +35,10 @@ public CorpseHarvester(UUID ownerId, CardSetInfo setInfo) {
this.toughness = new MageInt(3);

// {1}{B}, {tap}, Sacrifice a creature: Search your library for a Zombie card and a Swamp card, reveal them, and put them into your hand. Then shuffle your library.
String ruleText = "Search your library for a Zombie card and a Swamp card, reveal them, put them into your hand, then shuffle.";
Ability ability = new SimpleActivatedAbility(new SearchLibraryPutInHandEffect(
new CorpseHarvesterTarget(), true
), new ManaCostsImpl<>("{1}{B}"));
).setText(ruleText), new ManaCostsImpl<>("{1}{B}"));
ability.addCost(new TapSourceCost());
ability.addCost(new SacrificeTargetCost(new TargetControlledPermanent(FILTER_CONTROLLED_CREATURE_SHORT_TEXT)));
this.addAbility(ability);
Expand Down
2 changes: 1 addition & 1 deletion Mage.Sets/src/mage/cards/e/ElspethUndauntedHero.java
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ public ElspethUndauntedHero(UUID ownerId, CardSetInfo setInfo) {
this.setStartingLoyalty(5);

// +2: Put a +1/+1 counter on each of up to two target creatures.
Ability ability = new LoyaltyAbility(new AddCountersTargetEffect(CounterType.P1P1.createInstance()), 2);
Ability ability = new LoyaltyAbility(new AddCountersTargetEffect(CounterType.P1P1.createInstance()).setText("put a +1/+1 counter on each of up to two target creatures"), 2);
ability.addTarget(new TargetPermanent(0, 2, StaticFilters.FILTER_PERMANENT_CREATURES));
this.addAbility(ability);

Expand Down
11 changes: 8 additions & 3 deletions Mage.Sets/src/mage/cards/g/GaeasBalance.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,8 @@
import mage.constants.CardType;
import mage.constants.SubType;
import mage.filter.FilterCard;
import mage.filter.StaticFilters;
import mage.filter.common.FilterControlledLandPermanent;
import mage.filter.common.FilterControlledPermanent;
import mage.filter.common.FilterLandCard;
import mage.filter.predicate.Predicates;
import mage.game.Game;
Expand All @@ -22,16 +23,20 @@
*/
public final class GaeasBalance extends CardImpl {

private static final FilterControlledPermanent filter
= new FilterControlledLandPermanent("lands");

public GaeasBalance(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{G}");

// As an additional cost to cast Gaea's Balance, sacrifice five lands.
this.getSpellAbility().addCost(new SacrificeTargetCost(
new TargetControlledPermanent(5, StaticFilters.FILTER_CONTROLLED_LAND_SHORT_TEXT)
new TargetControlledPermanent(5, filter)
));

// Search your library for a land card of each basic land type and put them onto the battlefield. Then shuffle your library.
this.getSpellAbility().addEffect(new SearchLibraryPutInPlayEffect(new GaeasBalanceTarget()));
String ruleText = "Search your library for a land card of each basic land type, put those cards onto the battlefield, then shuffle.";
this.getSpellAbility().addEffect(new SearchLibraryPutInPlayEffect(new GaeasBalanceTarget()).setText(ruleText));
}

private GaeasBalance(final GaeasBalance card) {
Expand Down
5 changes: 3 additions & 2 deletions Mage.Sets/src/mage/cards/g/GideonChampionOfJustice.java
Original file line number Diff line number Diff line change
Expand Up @@ -49,8 +49,9 @@ public GideonChampionOfJustice(UUID ownerId, CardSetInfo setInfo) {
// 0: Until end of turn, Gideon becomes an indestructible Human Soldier creature with power and toughness each equal to the number of loyalty counters on him. He's still a planeswalker. Prevent all damage that would be dealt to him this turn.
LockedInDynamicValue loyaltyCount = new LockedInDynamicValue(new CountersSourceCount(CounterType.LOYALTY));
LoyaltyAbility ability2 = new LoyaltyAbility(new BecomesCreatureSourceEffect(
new GideonChampionOfJusticeToken(), "planeswalker", Duration.EndOfTurn, false, false, loyaltyCount, loyaltyCount), 0);
ability2.addEffect(new PreventAllDamageToSourceEffect(Duration.EndOfTurn));
new GideonChampionOfJusticeToken(), "planeswalker", Duration.EndOfTurn, false, false, loyaltyCount, loyaltyCount)
.setText("Until end of turn, {this} becomes a Human Soldier creature with power and toughness each equal to the number of loyalty counters on him and gains indestructible. He's still a planeswalker."), 0);
ability2.addEffect(new PreventAllDamageToSourceEffect(Duration.EndOfTurn).setText("prevent all damage that would be dealt to him this turn"));
this.addAbility(ability2);

// -15: Exile all other permanents.
Expand Down
9 changes: 6 additions & 3 deletions Mage.Sets/src/mage/cards/h/Hecatomb.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,10 @@
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Zone;
import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.common.FilterControlledLandPermanent;
import mage.filter.common.FilterControlledPermanent;
import mage.filter.predicate.permanent.TappedPredicate;
import mage.target.common.TargetControlledCreaturePermanent;
import mage.target.common.TargetControlledPermanent;
import mage.target.common.TargetAnyTarget;

Expand All @@ -32,13 +33,15 @@ public final class Hecatomb extends CardImpl {
filter.add(SubType.SWAMP.getPredicate());
filter.add(TappedPredicate.UNTAPPED);
}

private static final FilterControlledPermanent filter2
= new FilterControlledCreaturePermanent("creatures");

public Hecatomb(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{B}{B}");


// When Hecatomb enters the battlefield, sacrifice Hecatomb unless you sacrifice four creatures.
this.addAbility(new EntersBattlefieldTriggeredAbility(new SacrificeSourceUnlessPaysEffect(new SacrificeTargetCost(new TargetControlledCreaturePermanent(4))), false));
this.addAbility(new EntersBattlefieldTriggeredAbility(new SacrificeSourceUnlessPaysEffect(new SacrificeTargetCost(new TargetControlledPermanent(4, filter2)))));

// Tap an untapped Swamp you control: Hecatomb deals 1 damage to any target.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(1), new TapTargetCost(new TargetControlledPermanent(1, 1, filter, true)));
Expand Down
5 changes: 3 additions & 2 deletions Mage.Sets/src/mage/cards/i/Invigorate.java
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,9 @@ public final class Invigorate extends CardImpl {
public Invigorate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{G}");

// If you control a Forest, rather than pay Invigorate's mana cost, you may have an opponent gain 3 life.
this.addAbility(new AlternativeCostSourceAbility(new GainLifeOpponentCost(3), new PermanentsOnTheBattlefieldCondition(filter)));
// If you control a Forest, rather than pay this spell's mana cost, you may have an opponent gain 3 life.
this.addAbility(new AlternativeCostSourceAbility(new GainLifeOpponentCost(3), new PermanentsOnTheBattlefieldCondition(filter),
"If you control a Forest, rather than pay this spell's mana cost, you may have an opponent gain 3 life."));

// Target creature gets +4/+4 until end of turn.
this.getSpellAbility().addEffect(new BoostTargetEffect(4,4,Duration.EndOfTurn));
Expand Down
2 changes: 1 addition & 1 deletion Mage.Sets/src/mage/cards/j/JeweledAmulet.java
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
*/
public final class JeweledAmulet extends CardImpl {

private static final String rule = "{1}, {T}: Put a charge counter on {this}. Note the type of mana spent to pay this activation cost. Activate only if there are no charge counters on {this}";
private static final String rule = "{1}, {T}: Put a charge counter on {this}. Note the type of mana spent to pay this activation cost. Activate only if there are no charge counters on {this}.";

public JeweledAmulet(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{0}");
Expand Down
3 changes: 2 additions & 1 deletion Mage.Sets/src/mage/cards/k/KrovikanFetish.java
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,8 @@ public KrovikanFetish(UUID ownerId, CardSetInfo setInfo) {

// When Krovikan Fetish enters the battlefield, draw a card at the beginning of the next turn's upkeep.
this.addAbility(new EntersBattlefieldTriggeredAbility(new CreateDelayedTriggeredAbilityEffect(
new AtTheBeginOfNextUpkeepDelayedTriggeredAbility(new DrawCardSourceControllerEffect(1), Duration.OneUse)), false));
new AtTheBeginOfNextUpkeepDelayedTriggeredAbility(new DrawCardSourceControllerEffect(1), Duration.OneUse))
.setText("draw a card at the beginning of the next turn's upkeep"), false));

// Enchanted creature gets +1/+1.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(1, 1, Duration.WhileOnBattlefield)));
Expand Down
3 changes: 2 additions & 1 deletion Mage.Sets/src/mage/cards/k/KrovikanPlague.java
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,8 @@ public KrovikanPlague(UUID ownerId, CardSetInfo setInfo) {

// When Krovikan Plague enters the battlefield, draw a card at the beginning of the next turn's upkeep.
this.addAbility(new EntersBattlefieldTriggeredAbility(new CreateDelayedTriggeredAbilityEffect(
new AtTheBeginOfNextUpkeepDelayedTriggeredAbility(new DrawCardSourceControllerEffect(1), Duration.OneUse)), false));
new AtTheBeginOfNextUpkeepDelayedTriggeredAbility(new DrawCardSourceControllerEffect(1), Duration.OneUse))
.setText("draw a card at the beginning of the next turn's upkeep"), false));

// Tap enchanted creature: Tap enchanted creature: Krovikan Plague deals 1 damage to any target. Put a -0/-1 counter on enchanted creature. Activate this ability only if enchanted creature is untapped.
Ability ability2 = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD,
Expand Down
2 changes: 1 addition & 1 deletion Mage.Sets/src/mage/cards/m/MaliciousAdvice.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ public MaliciousAdvice(UUID ownerId, CardSetInfo setInfo) {

// Tap X target artifacts, creatures, and/or lands. You lose X life.
Effect effect = new TapTargetEffect();
effect.setText("X target artifacts, creatures, and/or lands");
effect.setText("Tap X target artifacts, creatures, and/or lands");
this.getSpellAbility().addEffect(effect);
this.getSpellAbility().addEffect(new LoseLifeSourceControllerEffect(ManacostVariableValue.REGULAR));
this.getSpellAbility().setTargetAdjuster(MaliciousAdviceAdjuster.instance);
Expand Down
4 changes: 2 additions & 2 deletions Mage.Sets/src/mage/cards/p/PhantasmalSphere.java
Original file line number Diff line number Diff line change
Expand Up @@ -69,8 +69,8 @@ class PhantasmalSphereEffect extends OneShotEffect {

public PhantasmalSphereEffect() {
super(Outcome.PutCreatureInPlay);
this.staticText = "target opponent puts an X/X blue Orb creature token "
+ "with flying onto the battlefield, where X is the number "
this.staticText = "target opponent creates an X/X blue Orb creature token "
+ "with flying, where X is the number "
+ "of +1/+1 counters on {this}";
}

Expand Down
9 changes: 7 additions & 2 deletions Mage.Sets/src/mage/cards/p/PhyrexianTribute.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,20 +7,25 @@
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.common.FilterControlledPermanent;
import mage.target.common.TargetArtifactPermanent;
import mage.target.common.TargetControlledCreaturePermanent;
import mage.target.common.TargetControlledPermanent;

/**
*
* @author nigelzor
*/
public final class PhyrexianTribute extends CardImpl {

private static final FilterControlledPermanent filter
= new FilterControlledCreaturePermanent("creatures");

public PhyrexianTribute(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{B}");

// As an additional cost to cast Phyrexian Tribute, sacrifice two creatures.
this.getSpellAbility().addCost(new SacrificeTargetCost(new TargetControlledCreaturePermanent(2)));
this.getSpellAbility().addCost(new SacrificeTargetCost(new TargetControlledPermanent(2, filter)));
// Destroy target artifact.
this.getSpellAbility().addEffect(new DestroyTargetEffect());
this.getSpellAbility().addTarget(new TargetArtifactPermanent());
Expand Down
3 changes: 2 additions & 1 deletion Mage.Sets/src/mage/cards/p/Pyknite.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,8 @@ public Pyknite(UUID ownerId, CardSetInfo setInfo) {

// When Pyknite enters the battlefield, draw a card at the beginning of the next turn's upkeep.
this.addAbility(new EntersBattlefieldTriggeredAbility(new CreateDelayedTriggeredAbilityEffect(
new AtTheBeginOfNextUpkeepDelayedTriggeredAbility(new DrawCardSourceControllerEffect(1), Duration.OneUse)), false));
new AtTheBeginOfNextUpkeepDelayedTriggeredAbility(new DrawCardSourceControllerEffect(1), Duration.OneUse))
.setText("draw a card at the beginning of the next turn's upkeep"), false));
}

private Pyknite(final Pyknite card) {
Expand Down
4 changes: 2 additions & 2 deletions Mage.Sets/src/mage/cards/r/RayOfCommand.java
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,8 @@ public RayOfCommand(UUID ownerId, CardSetInfo setInfo) {

// Untap target creature an opponent controls and gain control of it until end of turn. That creature gains haste until end of turn. When you lose control of the creature, tap it.
this.getSpellAbility().addEffect(new UntapTargetEffect());
this.getSpellAbility().addEffect(new GainControlTargetEffect(Duration.EndOfTurn));
this.getSpellAbility().addEffect(new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.EndOfTurn));
this.getSpellAbility().addEffect(new GainControlTargetEffect(Duration.EndOfTurn).setText("and gain control of it until end of turn"));
this.getSpellAbility().addEffect(new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.EndOfTurn).setText("that creature gains haste until end of turn"));
this.getSpellAbility().addEffect(new CreateDelayedTriggeredAbilityEffect(new RayOfCommandDelayedTriggeredAbility(), true));
this.getSpellAbility().addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE));
}
Expand Down
2 changes: 1 addition & 1 deletion Mage.Sets/src/mage/cards/r/Retaliation.java
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ public Retaliation(UUID ownerId, CardSetInfo setInfo) {
Duration.EndOfTurn), false),
Duration.WhileOnBattlefield, StaticFilters.FILTER_PERMANENT_CREATURES);
effect.setText("Creatures you control have \"Whenever this creature becomes blocked by a creature, "
+ "this creature gets +1/+1 until end of turn.");
+ "this creature gets +1/+1 until end of turn.\"");
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD,
effect));
}
Expand Down
2 changes: 1 addition & 1 deletion Mage.Sets/src/mage/cards/r/RetreatToHagra.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ public RetreatToHagra(UUID ownerId, CardSetInfo setInfo) {

// <i>Landfall</i>- Whenever a land enters the battlefield under your control,
// choose one - Target creature gets +1/+0 and gains deathtouch until end of turn;
LandfallAbility ability = new LandfallAbility(new BoostTargetEffect(1, 0, Duration.EndOfTurn), false);
LandfallAbility ability = new LandfallAbility(new BoostTargetEffect(1, 0, Duration.EndOfTurn).setText("target creature gets +1/+0"), false);
Effect effect = new GainAbilityTargetEffect(DeathtouchAbility.getInstance(), Duration.EndOfTurn).setText("and gains deathtouch until end of turn");
effect.setOutcome(Outcome.Benefit);
ability.addEffect(effect);
Expand Down
Loading

0 comments on commit 9abaa75

Please sign in to comment.