mirror of
https://github.com/correl/mage.git
synced 2024-11-14 11:09:31 +00:00
Various text fixes (#10251)
* 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
This commit is contained in:
parent
0bb56e99fd
commit
9abaa75bd4
33 changed files with 93 additions and 60 deletions
|
@ -5,7 +5,9 @@ import mage.abilities.effects.common.DrawCardSourceControllerEffect;
|
|||
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;
|
||||
|
||||
|
@ -14,11 +16,14 @@ import java.util.UUID;
|
|||
*/
|
||||
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));
|
||||
|
|
|
@ -43,7 +43,8 @@ public final class BestialFury extends CardImpl {
|
|||
|
||||
// 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);
|
||||
|
|
|
@ -8,7 +8,8 @@ import mage.abilities.keyword.KickerAbility;
|
|||
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;
|
||||
|
||||
|
@ -19,12 +20,14 @@ import java.util.UUID;
|
|||
*/
|
||||
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),
|
||||
|
|
|
@ -31,7 +31,8 @@ public final class CarrierPigeons extends CardImpl {
|
|||
|
||||
// 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) {
|
||||
|
|
|
@ -47,11 +47,12 @@ public final class CoralColony extends CardImpl {
|
|||
// 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) {
|
||||
|
|
|
@ -35,9 +35,10 @@ public final class CorpseHarvester extends CardImpl {
|
|||
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);
|
||||
|
|
|
@ -41,7 +41,7 @@ public final class ElspethUndauntedHero extends CardImpl {
|
|||
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);
|
||||
|
||||
|
|
|
@ -8,7 +8,8 @@ import mage.cards.*;
|
|||
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;
|
||||
|
@ -22,16 +23,20 @@ import java.util.UUID;
|
|||
*/
|
||||
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) {
|
||||
|
|
|
@ -49,8 +49,9 @@ public final class GideonChampionOfJustice extends CardImpl {
|
|||
// 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.
|
||||
|
|
|
@ -14,9 +14,10 @@ import mage.cards.CardSetInfo;
|
|||
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;
|
||||
|
||||
|
@ -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)));
|
||||
|
|
|
@ -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));
|
||||
|
|
|
@ -29,7 +29,7 @@ import java.util.UUID;
|
|||
*/
|
||||
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}");
|
||||
|
|
|
@ -40,7 +40,8 @@ public final class KrovikanFetish extends CardImpl {
|
|||
|
||||
// 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)));
|
||||
|
|
|
@ -61,7 +61,8 @@ public final class KrovikanPlague extends CardImpl {
|
|||
|
||||
// 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,
|
||||
|
|
|
@ -27,7 +27,7 @@ public final class MaliciousAdvice extends CardImpl {
|
|||
|
||||
// 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);
|
||||
|
|
|
@ -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}";
|
||||
}
|
||||
|
||||
|
|
|
@ -7,8 +7,10 @@ import mage.abilities.effects.common.DestroyTargetEffect;
|
|||
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;
|
||||
|
||||
/**
|
||||
*
|
||||
|
@ -16,11 +18,14 @@ import mage.target.common.TargetControlledCreaturePermanent;
|
|||
*/
|
||||
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());
|
||||
|
|
|
@ -27,7 +27,8 @@ public final class Pyknite extends CardImpl {
|
|||
|
||||
// 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) {
|
||||
|
|
|
@ -29,8 +29,8 @@ public final class RayOfCommand extends CardImpl {
|
|||
|
||||
// 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));
|
||||
}
|
||||
|
|
|
@ -31,7 +31,7 @@ public final class Retaliation extends CardImpl {
|
|||
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));
|
||||
}
|
||||
|
|
|
@ -27,7 +27,7 @@ public final class RetreatToHagra extends CardImpl {
|
|||
|
||||
// <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);
|
||||
|
|
|
@ -39,7 +39,9 @@ public final class RitualOfSteel extends CardImpl {
|
|||
this.addAbility(ability);
|
||||
|
||||
// When Ritual of Steel 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)), false)));
|
||||
this.addAbility(new EntersBattlefieldTriggeredAbility(new CreateDelayedTriggeredAbilityEffect(
|
||||
new AtTheBeginOfNextUpkeepDelayedTriggeredAbility(new DrawCardSourceControllerEffect(1)), false)
|
||||
.setText("draw a card at the beginning of the next turn's upkeep")));
|
||||
|
||||
// Enchanted creature gets +0/+2.
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(0,2, Duration.WhileOnBattlefield)));
|
||||
|
|
|
@ -1,28 +1,21 @@
|
|||
|
||||
package mage.cards.s;
|
||||
|
||||
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.DesertControlledOrGraveyardCondition;
|
||||
import mage.abilities.decorator.ConditionalContinuousEffect;
|
||||
import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount;
|
||||
import mage.abilities.effects.common.continuous.BoostSourceEffect;
|
||||
import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
|
||||
import mage.abilities.keyword.TrampleAbility;
|
||||
import mage.cards.Card;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.Zone;
|
||||
import mage.filter.FilterCard;
|
||||
import mage.filter.common.FilterControlledLandPermanent;
|
||||
import mage.game.Game;
|
||||
import mage.players.Player;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
|
@ -41,8 +34,8 @@ public final class SidewinderNaga extends CardImpl {
|
|||
// As long as you control a Desert or there is a Desert card in your graveyard, Sidewinder Naga gets +1/+0 and has trample.
|
||||
Ability ability = new SimpleStaticAbility(new ConditionalContinuousEffect(
|
||||
new BoostSourceEffect(1, 0, Duration.WhileOnBattlefield),
|
||||
DesertControlledOrGraveyardCondition.instance, "As long as you control a Desert " +
|
||||
"or there is a Desert card in your graveyard, {this} gets +1/+0 "
|
||||
DesertControlledOrGraveyardCondition.instance, "As long as you control a Desert " +
|
||||
"or there is a Desert card in your graveyard, {this} gets +1/+0"
|
||||
));
|
||||
ability.addEffect(new ConditionalContinuousEffect(new GainAbilitySourceEffect(
|
||||
TrampleAbility.getInstance(), Duration.WhileOnBattlefield
|
||||
|
|
|
@ -29,7 +29,7 @@ public final class SolitaryCamel extends CardImpl {
|
|||
this.addAbility(new SimpleStaticAbility(new ConditionalContinuousEffect(
|
||||
new GainAbilitySourceEffect(LifelinkAbility.getInstance()),
|
||||
DesertControlledOrGraveyardCondition.instance, "{this} has lifelink as long as " +
|
||||
"you control a desert or there is a desert card in your graveyard."
|
||||
"you control a Desert or there is a Desert card in your graveyard."
|
||||
)).addHint(DesertControlledOrGraveyardCondition.getHint()));
|
||||
}
|
||||
|
||||
|
|
|
@ -42,7 +42,7 @@ public final class SoulSeparator extends CardImpl {
|
|||
|
||||
CreateTokenCopyTargetEffect copyEffect = new CreateTokenCopyTargetEffect(null, null, false, 1, false, false, null, 1, 1, true);
|
||||
copyEffect.setAdditionalSubType(SubType.SPIRIT);
|
||||
copyEffect.setText("Create a token that's a copy of that card except it's 1/1, it's a Spirit in addition to its other types, and it has flying");
|
||||
copyEffect.setText("Exile target creature card from your graveyard. Create a token that's a copy of that card, except it's 1/1, it's a Spirit in addition to its other types, and it has flying");
|
||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, copyEffect, new ManaCostsImpl<>("{5}"));
|
||||
ability.addCost(new TapSourceCost());
|
||||
ability.addCost(new SacrificeSourceCost());
|
||||
|
@ -65,7 +65,7 @@ class SoulSeparatorEffect extends OneShotEffect {
|
|||
|
||||
public SoulSeparatorEffect() {
|
||||
super(Outcome.PutCreatureInPlay);
|
||||
this.staticText = "Create a black Zombie creature token with power equal to that card's power and toughness equal that card's toughness";
|
||||
this.staticText = "Create a black Zombie creature token with power equal to that card's power and toughness equal to that card's toughness";
|
||||
}
|
||||
|
||||
public SoulSeparatorEffect(final SoulSeparatorEffect effect) {
|
||||
|
|
|
@ -26,7 +26,7 @@ import mage.game.permanent.Permanent;
|
|||
*/
|
||||
public final class ThundermawHellkite extends CardImpl {
|
||||
|
||||
static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures with flying your opponents control");
|
||||
static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with flying your opponents control");
|
||||
|
||||
static {
|
||||
filter.add(new AbilityPredicate(FlyingAbility.class));
|
||||
|
|
|
@ -42,7 +42,7 @@ class TormentOfHailfireEffect extends OneShotEffect {
|
|||
|
||||
public TormentOfHailfireEffect() {
|
||||
super(Outcome.LoseLife);
|
||||
this.staticText = "Repeat the following process X times. Each opponent loses 3 life unless they sacrifice a nonland permanent or discards a card";
|
||||
this.staticText = "Repeat the following process X times. Each opponent loses 3 life unless that player sacrifices a nonland permanent or discards a card";
|
||||
}
|
||||
|
||||
public TormentOfHailfireEffect(final TormentOfHailfireEffect effect) {
|
||||
|
|
|
@ -44,7 +44,7 @@ public final class TwilightProphet extends CardImpl {
|
|||
// Each opponent loses X life and you gain X life, where X is that card's converted mana cost.
|
||||
this.addAbility(new ConditionalInterveningIfTriggeredAbility(new BeginningOfUpkeepTriggeredAbility(
|
||||
new TwilightProphetEffect(), TargetController.YOU, false), CitysBlessingCondition.instance,
|
||||
"At the beginning of your upkeep, if you have the city's blessing, reveal the top card of your library and put it into your hand."
|
||||
"At the beginning of your upkeep, if you have the city's blessing, reveal the top card of your library and put it into your hand. "
|
||||
+ "Each opponent loses X life and you gain X life, where X is that card's mana value.")
|
||||
.addHint(CitysBlessingHint.instance));
|
||||
|
||||
|
|
|
@ -41,7 +41,8 @@ public final class Vampirism extends CardImpl {
|
|||
|
||||
// When Vampirism 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 for each other creature you control.
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new VampirismBoostEnchantedEffect()));
|
||||
|
|
|
@ -30,7 +30,8 @@ public final class VensersJournal extends CardImpl {
|
|||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect));
|
||||
|
||||
// At the beginning of your upkeep, you gain 1 life for each card in your hand.
|
||||
this.addAbility(new BeginningOfUpkeepTriggeredAbility(new GainLifeEffect(CardsInControllerHandCount.instance), TargetController.YOU, false));
|
||||
this.addAbility(new BeginningOfUpkeepTriggeredAbility(new GainLifeEffect(CardsInControllerHandCount.instance)
|
||||
.setText("you gain 1 life for each card in your hand"), TargetController.YOU, false));
|
||||
}
|
||||
|
||||
private VensersJournal(final VensersJournal card) {
|
||||
|
|
|
@ -69,10 +69,16 @@ public class SourceHasCounterCondition implements Condition {
|
|||
@Override
|
||||
public String toString() {
|
||||
if (from != -1) {
|
||||
if (to == Integer.MAX_VALUE) {
|
||||
return "{this} has equal to or more than " + from + " " + this.counterType.toString() + " counters";
|
||||
if (from == 0) {
|
||||
if (to == 0) {
|
||||
return "{this} has no " + this.counterType.toString() + " counters on it";
|
||||
}
|
||||
return "{this} has " + CardUtil.numberToText(to) + " or fewer " + this.counterType.toString() + " counters on it";
|
||||
}
|
||||
return "{this} has between " + from + " and " + to + " " + this.counterType.toString() + " counters";
|
||||
if (to == Integer.MAX_VALUE) {
|
||||
return "{this} has " + CardUtil.numberToText(from) + " or more " + this.counterType.toString() + " counters on it";
|
||||
}
|
||||
return "{this} has between " + from + " and " + to + " " + this.counterType.toString() + " counters on it";
|
||||
} else {
|
||||
return "{this} has " + CardUtil.numberToText(amount) + " or more " + this.counterType.toString() + " counters on it";
|
||||
}
|
||||
|
|
|
@ -23,7 +23,7 @@ public class DiscardXTargetCost extends VariableCostImpl {
|
|||
public DiscardXTargetCost(FilterCard filter, boolean useAsAdditionalCost) {
|
||||
super(useAsAdditionalCost ? VariableCostType.ADDITIONAL : VariableCostType.NORMAL,
|
||||
filter.getMessage() + " to discard");
|
||||
this.text = (useAsAdditionalCost ? "as an additional cost to cast this spell, discard " : "Discard ") + xText + ' ' + filter.getMessage();
|
||||
this.text = (useAsAdditionalCost ? "discard " : "Discard ") + xText + ' ' + filter.getMessage();
|
||||
this.filter = filter;
|
||||
}
|
||||
|
||||
|
|
|
@ -10,7 +10,7 @@ public class EndTurnEffect extends OneShotEffect {
|
|||
|
||||
public EndTurnEffect() {
|
||||
super(Outcome.Detriment);
|
||||
staticText = "End the turn. <i>(Exile all spells and abilities on the stack, including this card. The player whose turn it is discards down to their maximum hand size. Damage wears off, and \"this turn\" and \"until end of turn\" effects end.)</i>";
|
||||
staticText = "End the turn. <i>(Exile all spells and abilities from the stack, including this card. The player whose turn it is discards down to their maximum hand size. Damage wears off, and \"this turn\" and \"until end of turn\" effects end.)</i>";
|
||||
}
|
||||
|
||||
public EndTurnEffect(EndTurnEffect effect) {
|
||||
|
|
Loading…
Reference in a new issue