mirror of
https://github.com/correl/mage.git
synced 2024-11-25 03:00:11 +00:00
text fixes
This commit is contained in:
parent
b27f2f04c1
commit
8f9afcb617
79 changed files with 158 additions and 177 deletions
|
@ -57,7 +57,7 @@ public final class AyliEternalPilgrim extends CardImpl {
|
|||
new ExileTargetEffect(),
|
||||
new ManaCostsImpl("{1}{W}{B}"),
|
||||
new AyliEternalPilgrimCondition(),
|
||||
"{1}{W}{B}, Sacrifice another creature: Exile target nonland permanent. Activate only if you have at least 10 life more than your starting life total");
|
||||
"{1}{W}{B}, Sacrifice another creature: Exile target nonland permanent. Activate only if you have at least 10 life more than your starting life total.");
|
||||
ability.addCost(new SacrificeTargetCost(new TargetControlledPermanent(StaticFilters.FILTER_CONTROLLED_ANOTHER_CREATURE)));
|
||||
ability.addTarget(new TargetNonlandPermanent());
|
||||
this.addAbility(ability);
|
||||
|
|
|
@ -25,7 +25,7 @@ import mage.target.common.TargetOpponent;
|
|||
*/
|
||||
public final class BafflingEnd extends CardImpl {
|
||||
|
||||
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with mana value 3 or less an opponent controls");
|
||||
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls with mana value 3 or less");
|
||||
|
||||
static {
|
||||
filter.add(new ManaValuePredicate(ComparisonType.FEWER_THAN, 4));
|
||||
|
|
|
@ -32,7 +32,7 @@ public final class BaralsExpertise extends CardImpl {
|
|||
getSpellAbility().addTarget(new TargetPermanent(0, 3, filter, false));
|
||||
|
||||
// You may cast a card with converted mana cost 4 or less from your hand without paying its mana cost.
|
||||
getSpellAbility().addEffect(new CastWithoutPayingManaCostEffect(4));
|
||||
getSpellAbility().addEffect(new CastWithoutPayingManaCostEffect(4).concatBy("<br>"));
|
||||
}
|
||||
|
||||
private BaralsExpertise(final BaralsExpertise card) {
|
||||
|
|
|
@ -27,7 +27,7 @@ public final class BorderlandRanger extends CardImpl {
|
|||
this.toughness = new MageInt(2);
|
||||
|
||||
// When Borderland Ranger enters the battlefield, you may search your library for a basic land card, reveal it, and put it into your hand. If you do, shuffle your library.
|
||||
this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true, false), true));
|
||||
this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true, true), true));
|
||||
}
|
||||
|
||||
private BorderlandRanger(final BorderlandRanger card) {
|
||||
|
|
|
@ -70,8 +70,8 @@ class BrainInAJarCastEffect extends OneShotEffect {
|
|||
|
||||
public BrainInAJarCastEffect() {
|
||||
super(Outcome.PlayForFree);
|
||||
this.staticText = ", then you may cast an instant or sorcery card "
|
||||
+ "with mana values equal to the number of charge "
|
||||
this.staticText = ", then you may cast an instant or sorcery spell "
|
||||
+ "with mana value equal to the number of charge "
|
||||
+ "counters on {this} from your hand without paying its mana cost";
|
||||
}
|
||||
|
||||
|
|
|
@ -84,6 +84,6 @@ class ActivateAsSorceryConditionalActivatedAbility extends ActivatedAbilityImpl
|
|||
|
||||
@Override
|
||||
public String getRule() {
|
||||
return super.getRule() + " Activate only as a sorcery, and only if seven or more cards are in your graveyard.";
|
||||
return super.getRule() + " Activate only as a sorcery and only if seven or more cards are in your graveyard.";
|
||||
}
|
||||
}
|
||||
|
|
|
@ -88,7 +88,7 @@ class CharmedPendantManaEffect extends ManaEffect {
|
|||
|
||||
public CharmedPendantManaEffect() {
|
||||
super();
|
||||
staticText = "For each colored mana symbol in that card's mana cost, add one mana of that color";
|
||||
staticText = "For each colored mana symbol in the milled card's mana cost, add one mana of that color";
|
||||
}
|
||||
|
||||
public CharmedPendantManaEffect(final CharmedPendantManaEffect effect) {
|
||||
|
|
|
@ -25,7 +25,7 @@ public final class Conflux extends CardImpl {
|
|||
this.getSpellAbility().addEffect(new SearchLibraryPutInHandEffect(
|
||||
new ConfluxTarget(), true, true
|
||||
).setText("search your library for a white card, a blue card, a black card, a red card, and a green card. " +
|
||||
"Reveal those cards and put them into your hand. Then shuffle"));
|
||||
"Reveal those cards, put them into your hand, then shuffle"));
|
||||
}
|
||||
|
||||
private Conflux(final Conflux card) {
|
||||
|
|
|
@ -53,7 +53,7 @@ class SearchLibraryPutInGraveyard extends SearchEffect {
|
|||
|
||||
public SearchLibraryPutInGraveyard() {
|
||||
super(new TargetCardInLibrary(StaticFilters.FILTER_CARD_CREATURE), Outcome.Neutral);
|
||||
staticText = "search your library for a card and put that card into your graveyard. Then shuffle";
|
||||
staticText = "search your library for a creature card, put that card into your graveyard, then shuffle";
|
||||
}
|
||||
|
||||
public SearchLibraryPutInGraveyard(final SearchLibraryPutInGraveyard effect) {
|
||||
|
|
|
@ -27,7 +27,7 @@ public final class DisasterRadius extends CardImpl {
|
|||
|
||||
|
||||
// As an additional cost to cast Disaster Radius, reveal a creature card from your hand.
|
||||
TargetCardInHand targetCard = new TargetCardInHand(new FilterCreatureCard("a creature card"));
|
||||
TargetCardInHand targetCard = new TargetCardInHand(new FilterCreatureCard("a creature card from your hand"));
|
||||
this.getSpellAbility().addCost(new RevealTargetFromHandCost(targetCard));
|
||||
|
||||
// Disaster Radius deals X damage to each creature your opponents control, where X is the revealed card's converted mana cost.
|
||||
|
|
|
@ -38,7 +38,7 @@ public final class Dispossess extends CardImpl {
|
|||
class DispossessEffect extends SearchTargetGraveyardHandLibraryForCardNameAndExileEffect {
|
||||
|
||||
public DispossessEffect() {
|
||||
super(true, "target opponent's", "any number of cards with that name");
|
||||
super(true, "target opponent's", "any number of cards with the chosen name");
|
||||
}
|
||||
|
||||
public DispossessEffect(final DispossessEffect effect) {
|
||||
|
|
|
@ -40,8 +40,8 @@ class DistantMemoriesEffect extends OneShotEffect {
|
|||
|
||||
public DistantMemoriesEffect() {
|
||||
super(Outcome.DrawCard);
|
||||
this.staticText = "Search your library for a card, exile it, then shuffle "
|
||||
+ "your library. Any opponent may have you put that card into "
|
||||
this.staticText = "Search your library for a card, exile it, then shuffle. "
|
||||
+ "Any opponent may have you put that card into "
|
||||
+ "your hand. If no player does, you draw three cards";
|
||||
}
|
||||
|
||||
|
|
|
@ -27,7 +27,7 @@ import java.util.UUID;
|
|||
*/
|
||||
public final class EdificeOfAuthority extends CardImpl {
|
||||
|
||||
private static final String rule = "{1}, {T}: Until your next turn, target creature can't attack or block and its activated abilities can't be activated. Activate only if there are three or more brick counter on {this}.";
|
||||
private static final String rule = "{1}, {T}: Until your next turn, target creature can't attack or block and its activated abilities can't be activated. Activate only if there are three or more brick counters on {this}.";
|
||||
|
||||
public EdificeOfAuthority(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
|
||||
|
|
|
@ -33,7 +33,7 @@ public final class EmberwildeAugur extends CardImpl {
|
|||
// Sacrifice Emberwilde Augur: Emberwilde Augur deals 3 damage to target player. Activate this ability only during your upkeep.
|
||||
Ability ability = new ActivateIfConditionActivatedAbility(
|
||||
Zone.BATTLEFIELD,
|
||||
new DamageTargetEffect(3),
|
||||
new DamageTargetEffect(3, "it"),
|
||||
new SacrificeSourceCost(),
|
||||
new IsStepCondition(PhaseStep.UPKEEP));
|
||||
ability.addTarget(new TargetPlayerOrPlaneswalker());
|
||||
|
|
|
@ -1,48 +1,38 @@
|
|||
|
||||
package mage.cards.f;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.MageObject;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.SimpleActivatedAbility;
|
||||
import mage.abilities.ActivatedAbilityImpl;
|
||||
import mage.abilities.costs.common.SacrificeSourceCost;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.effects.OneShotEffect;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.cards.Cards;
|
||||
import mage.cards.CardsImpl;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.ComparisonType;
|
||||
import mage.constants.Outcome;
|
||||
import mage.constants.TimingRule;
|
||||
import mage.constants.Zone;
|
||||
import mage.constants.*;
|
||||
import mage.filter.FilterCard;
|
||||
import mage.filter.common.FilterCreatureCard;
|
||||
import mage.filter.predicate.mageobject.ManaValuePredicate;
|
||||
import mage.game.Game;
|
||||
import mage.game.permanent.Permanent;
|
||||
import mage.players.Player;
|
||||
import mage.target.common.TargetCardInLibrary;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
|
||||
*/
|
||||
public final class Fleshwrither extends CardImpl {
|
||||
|
||||
public Fleshwrither(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}{B}");
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}{B}");
|
||||
this.subtype.add(SubType.HORROR);
|
||||
this.power = new MageInt(3);
|
||||
this.toughness = new MageInt(3);
|
||||
|
||||
// Transfigure {1}{B}{B}: Sacrifice this creature: Search your library for a creature card with the same converted mana cost as this
|
||||
// creature and put that card onto the battlefield. Then shuffle your library. Transfigure only as a sorcery.
|
||||
SimpleActivatedAbility ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new FleshwritherEffect(), new ManaCostsImpl("{1}{B}{B}"));
|
||||
ability.addCost(new SacrificeSourceCost());
|
||||
ability.setTiming(TimingRule.SORCERY);
|
||||
this.addAbility(ability);
|
||||
this.addAbility(new FleshwritherAbility());
|
||||
}
|
||||
|
||||
private Fleshwrither(final Fleshwrither card) {
|
||||
|
@ -55,11 +45,35 @@ public final class Fleshwrither extends CardImpl {
|
|||
}
|
||||
}
|
||||
|
||||
class FleshwritherAbility extends ActivatedAbilityImpl {
|
||||
|
||||
FleshwritherAbility() {
|
||||
super(Zone.BATTLEFIELD, new FleshwritherEffect(), new ManaCostsImpl<>("{1}{B}{B}"));
|
||||
this.addCost(new SacrificeSourceCost());
|
||||
this.setTiming(TimingRule.SORCERY);
|
||||
}
|
||||
|
||||
private FleshwritherAbility(final FleshwritherAbility ability) {
|
||||
super(ability);
|
||||
}
|
||||
|
||||
@Override
|
||||
public FleshwritherAbility copy() {
|
||||
return new FleshwritherAbility(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getRule() {
|
||||
return "Transfigure {1}{B}{B} <i>({1}{B}{B}, Sacrifice this creature: " +
|
||||
"Search your library for a creature card with the same mana value as this creature, " +
|
||||
"put that card onto the battlefield, then shuffle. Transfigure only as a sorcery.)</i>";
|
||||
}
|
||||
}
|
||||
|
||||
class FleshwritherEffect extends OneShotEffect {
|
||||
|
||||
FleshwritherEffect() {
|
||||
super(Outcome.Benefit);
|
||||
staticText = "Transfigure: Sacrifice this creature: Search your library for a creature card with the same mana value as this creature and put that card onto the battlefield";
|
||||
}
|
||||
|
||||
FleshwritherEffect(final FleshwritherEffect effect) {
|
||||
|
@ -69,24 +83,19 @@ class FleshwritherEffect extends OneShotEffect {
|
|||
@Override
|
||||
public boolean apply(Game game, Ability source) {
|
||||
Player controller = game.getPlayer(source.getControllerId());
|
||||
MageObject sourceObject = game.getObject(source.getSourceId());
|
||||
if (sourceObject != null && controller != null) {
|
||||
FilterCreatureCard filter = new FilterCreatureCard("creature with mana value " + sourceObject.getManaValue());
|
||||
filter.add(new ManaValuePredicate(ComparisonType.EQUAL_TO, sourceObject.getManaValue()));
|
||||
TargetCardInLibrary target = new TargetCardInLibrary(1, filter);
|
||||
if (controller.searchLibrary(target, source, game)) {
|
||||
if (!target.getTargets().isEmpty()) {
|
||||
Cards chosen = new CardsImpl(target.getTargets());
|
||||
controller.moveCards(chosen, Zone.BATTLEFIELD, source, game);
|
||||
}
|
||||
Permanent sourcePermanent = source.getSourcePermanentOrLKI(game);
|
||||
if (sourcePermanent == null || controller == null) {
|
||||
return false;
|
||||
}
|
||||
FilterCard filter = new FilterCreatureCard("creature card with mana value " + sourcePermanent.getManaValue());
|
||||
filter.add(new ManaValuePredicate(ComparisonType.EQUAL_TO, sourcePermanent.getManaValue()));
|
||||
TargetCardInLibrary target = new TargetCardInLibrary(filter);
|
||||
controller.searchLibrary(target, source, game);
|
||||
controller.moveCards(controller.getLibrary().getCard(target.getFirstTarget(), game), Zone.BATTLEFIELD, source, game);
|
||||
controller.shuffleLibrary(source, game);
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public FleshwritherEffect copy() {
|
||||
return new FleshwritherEffect(this);
|
||||
|
|
|
@ -24,7 +24,7 @@ import java.util.UUID;
|
|||
*/
|
||||
public final class ForerunnerOfTheEmpire extends CardImpl {
|
||||
|
||||
private static final FilterCreaturePermanent filterAnyDinosaur = new FilterCreaturePermanent(SubType.DINOSAUR, SubType.DINOSAUR.toString());
|
||||
private static final FilterCreaturePermanent filterAnyDinosaur = new FilterCreaturePermanent(SubType.DINOSAUR, "a " + SubType.DINOSAUR.toString());
|
||||
|
||||
static {
|
||||
filterAnyDinosaur.add(TargetController.YOU.getControllerPredicate());
|
||||
|
|
|
@ -28,7 +28,7 @@ public final class Foresight extends CardImpl {
|
|||
this.getSpellAbility().addEffect(new ForesightEffect());
|
||||
|
||||
// Draw a card at the beginning of the next turn's upkeep.
|
||||
this.getSpellAbility().addEffect(new CreateDelayedTriggeredAbilityEffect(new AtTheBeginOfNextUpkeepDelayedTriggeredAbility(new DrawCardSourceControllerEffect(1)), false));
|
||||
this.getSpellAbility().addEffect(new CreateDelayedTriggeredAbilityEffect(new AtTheBeginOfNextUpkeepDelayedTriggeredAbility(new DrawCardSourceControllerEffect(1)), false).concatBy("<br>"));
|
||||
}
|
||||
|
||||
private Foresight(final Foresight card) {
|
||||
|
|
|
@ -16,7 +16,7 @@ import mage.target.common.TargetCardInLibrary;
|
|||
*/
|
||||
public final class GaeasBounty extends CardImpl {
|
||||
|
||||
private static final FilterLandCard filter = new FilterLandCard("Forest");
|
||||
private static final FilterLandCard filter = new FilterLandCard("Forest cards");
|
||||
|
||||
static {
|
||||
filter.add(SubType.FOREST.getPredicate());
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
|
||||
package mage.cards.g;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.Mana;
|
||||
import mage.abilities.common.LimitedTimesPerTurnActivatedAbility;
|
||||
import mage.abilities.costs.common.SacrificeSourceCost;
|
||||
|
@ -13,21 +12,28 @@ import mage.cards.CardSetInfo;
|
|||
import mage.constants.*;
|
||||
import mage.filter.FilterCard;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author spjspj
|
||||
*/
|
||||
public final class GaeasTouch extends CardImpl {
|
||||
|
||||
private static final FilterCard filter = new FilterCard("a basic Forest card");
|
||||
|
||||
static {
|
||||
filter.add(SuperType.BASIC.getPredicate());
|
||||
filter.add(SubType.FOREST.getPredicate());
|
||||
}
|
||||
|
||||
public GaeasTouch(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{G}{G}");
|
||||
|
||||
// You may put a basic Forest card from your hand onto the battlefield. Activate this ability only any time you could cast a sorcery and only once each turn.
|
||||
FilterCard filter = new FilterCard("basic Forest card");
|
||||
filter.add(SuperType.BASIC.getPredicate());
|
||||
filter.add(SubType.FOREST.getPredicate());
|
||||
LimitedTimesPerTurnActivatedAbility ability = new LimitedTimesPerTurnActivatedAbility(Zone.BATTLEFIELD,
|
||||
new PutCardFromHandOntoBattlefieldEffect(filter), new GenericManaCost(0), 1);
|
||||
LimitedTimesPerTurnActivatedAbility ability = new LimitedTimesPerTurnActivatedAbility(
|
||||
Zone.BATTLEFIELD, new PutCardFromHandOntoBattlefieldEffect(filter),
|
||||
new GenericManaCost(0), 1
|
||||
);
|
||||
ability.setTiming(TimingRule.SORCERY);
|
||||
addAbility(ability);
|
||||
|
||||
|
|
|
@ -56,7 +56,7 @@ public final class GateToTheAfterlife extends CardImpl {
|
|||
// {2}, {T}, Sacrifice Gate to the Afterlife: Search your graveyard, hand, and/or library for a card named God-Pharaoh's Gift and put it onto the battlefield. If you seearch your library this way, shuffle it. Activate this ability only if there are six or more creature cards in your graveyard.
|
||||
ability = new ConditionalActivatedAbility(
|
||||
Zone.BATTLEFIELD, new GateToTheAfterlifeEffect(), new GenericManaCost(2),
|
||||
new CardsInControllerGraveyardCondition(6, StaticFilters.FILTER_CARD_CREATURE)
|
||||
new CardsInControllerGraveyardCondition(6, StaticFilters.FILTER_CARD_CREATURES)
|
||||
);
|
||||
ability.addCost(new TapSourceCost());
|
||||
ability.addCost(new SacrificeSourceCost());
|
||||
|
|
|
@ -66,7 +66,7 @@ class GryffsBoonEffect extends OneShotEffect {
|
|||
|
||||
public GryffsBoonEffect() {
|
||||
super(Outcome.PutCardInPlay);
|
||||
staticText = "Return {this} from your graveyard to the battlefield attached to target creatur";
|
||||
staticText = "Return {this} from your graveyard to the battlefield attached to target creature";
|
||||
}
|
||||
|
||||
public GryffsBoonEffect(final GryffsBoonEffect effect) {
|
||||
|
|
|
@ -55,7 +55,7 @@ class HarvestSeasonEffect extends OneShotEffect {
|
|||
HarvestSeasonEffect() {
|
||||
super(Outcome.Benefit);
|
||||
this.staticText = "Search your library for up to X basic land cards, where X is the number of tapped creatures you control,"
|
||||
+ " and put those cards onto the battlefield tapped, then shuffle.";
|
||||
+ " put those cards onto the battlefield tapped, then shuffle.";
|
||||
}
|
||||
|
||||
HarvestSeasonEffect(final HarvestSeasonEffect effect) {
|
||||
|
|
|
@ -39,7 +39,7 @@ public final class KariZevsExpertise extends CardImpl {
|
|||
this.getSpellAbility().addEffect(new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.EndOfTurn).setText("It gains haste until end of turn"));
|
||||
|
||||
// You may cast a card with converted mana cost 2 or less from your hand without paying its mana cost.
|
||||
this.getSpellAbility().addEffect(new CastWithoutPayingManaCostEffect(2));
|
||||
this.getSpellAbility().addEffect(new CastWithoutPayingManaCostEffect(2).concatBy("<br>"));
|
||||
}
|
||||
|
||||
private KariZevsExpertise(final KariZevsExpertise card) {
|
||||
|
|
|
@ -29,7 +29,7 @@ public final class KhalniHeartExpedition extends CardImpl {
|
|||
|
||||
this.addAbility(new SimpleActivatedAbility(
|
||||
new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(
|
||||
0, 2, StaticFilters.FILTER_CARD_BASIC_LAND
|
||||
0, 2, StaticFilters.FILTER_CARD_BASIC_LANDS
|
||||
), true, Outcome.PutLandInPlay),
|
||||
new CompositeCost(
|
||||
new RemoveCountersSourceCost(CounterType.QUEST.createInstance(3)),
|
||||
|
|
|
@ -34,7 +34,7 @@ public final class KindlyStranger extends CardImpl {
|
|||
this.addAbility(new ConditionalActivatedAbility(
|
||||
Zone.BATTLEFIELD, new TransformSourceEffect(true), new ManaCostsImpl<>("{2}{B}"),
|
||||
DeliriumCondition.instance, "<i>Delirium</i> — {2}{B}: Transform {this}. " +
|
||||
"Activate this ability only if there are four or more card types among cards in your graveyard."
|
||||
"Activate only if there are four or more card types among cards in your graveyard."
|
||||
).addHint(DeliriumHint.instance));
|
||||
}
|
||||
|
||||
|
|
|
@ -36,7 +36,7 @@ public final class KuldothaPhoenix extends CardImpl {
|
|||
// <i>Metalcraft</i> — {4}: Return Kuldotha Phoenix from your graveyard to the battlefield.
|
||||
// Activate this ability only during your upkeep and only if you control three or more artifacts.
|
||||
Ability ability = new ConditionalActivatedAbility(Zone.GRAVEYARD,
|
||||
new ReturnSourceFromGraveyardToBattlefieldEffect(false, true),
|
||||
new ReturnSourceFromGraveyardToBattlefieldEffect(false, false),
|
||||
new ManaCostsImpl("{4}"),
|
||||
new CompoundCondition("during your upkeep and only if you control three or more artifacts",
|
||||
new IsStepCondition(PhaseStep.UPKEEP), MetalcraftCondition.instance)
|
||||
|
|
|
@ -1,40 +1,41 @@
|
|||
|
||||
package mage.cards.l;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
||||
import mage.abilities.costs.Cost;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.effects.OneShotEffect;
|
||||
import mage.abilities.effects.common.DoIfCostPaid;
|
||||
import mage.abilities.effects.common.search.SearchLibraryPutInPlayEffect;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.Outcome;
|
||||
import mage.filter.FilterCard;
|
||||
import mage.filter.predicate.mageobject.NamePredicate;
|
||||
import mage.game.Game;
|
||||
import mage.players.Player;
|
||||
import mage.target.common.TargetCardInLibrary;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author LoneFox
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author LoneFox
|
||||
*/
|
||||
public final class LlanowarSentinel extends CardImpl {
|
||||
|
||||
private static final FilterCard filter = new FilterCard("a card named Llanowar Sentinel");
|
||||
|
||||
static {
|
||||
filter.add(new NamePredicate("Llanowar Sentinel"));
|
||||
}
|
||||
|
||||
public LlanowarSentinel(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}");
|
||||
this.subtype.add(SubType.ELF);
|
||||
this.power = new MageInt(2);
|
||||
this.toughness = new MageInt(3);
|
||||
|
||||
// When Llanowar Sentinel enters the battlefield, you may pay {1}{G}. If you do, search your library for a card named Llanowar Sentinel and put that card onto the battlefield. Then shuffle your library.
|
||||
this.addAbility(new EntersBattlefieldTriggeredAbility(new LlanowarSentinelEffect()));
|
||||
this.addAbility(new EntersBattlefieldTriggeredAbility(new DoIfCostPaid(
|
||||
new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(filter)), new ManaCostsImpl<>("{1}{G}")
|
||||
)));
|
||||
}
|
||||
|
||||
private LlanowarSentinel(final LlanowarSentinel card) {
|
||||
|
@ -46,36 +47,3 @@ public final class LlanowarSentinel extends CardImpl {
|
|||
return new LlanowarSentinel(this);
|
||||
}
|
||||
}
|
||||
|
||||
class LlanowarSentinelEffect extends OneShotEffect {
|
||||
|
||||
LlanowarSentinelEffect() {
|
||||
super(Outcome.Benefit);
|
||||
this.staticText = "you may pay {1}{G}. If you do, search your library for a card named Llanowar Sentinel and put that card onto the battlefield. Then shuffle"; }
|
||||
|
||||
LlanowarSentinelEffect(final LlanowarSentinelEffect effect) {
|
||||
super(effect);
|
||||
}
|
||||
|
||||
@Override
|
||||
public LlanowarSentinelEffect copy() {
|
||||
return new LlanowarSentinelEffect(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean apply(Game game, Ability source) {
|
||||
Player player = game.getPlayer(source.getControllerId());
|
||||
if(player != null) {
|
||||
if(player.chooseUse(Outcome.BoostCreature, "Do you want to to pay {1}{G}?", source, game)) {
|
||||
Cost cost = new ManaCostsImpl("{1}{G}");
|
||||
if(cost.pay(source, game, source, source.getControllerId(), false, null)) {
|
||||
FilterCard filter = new FilterCard("card named Llanowar Sentinel");
|
||||
filter.add(new NamePredicate("Llanowar Sentinel"));
|
||||
new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(0, 1, filter), false, true).apply(game, source);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -43,7 +43,7 @@ class ManaSeveranceEffect extends SearchEffect {
|
|||
|
||||
public ManaSeveranceEffect() {
|
||||
super(new TargetCardInLibrary(0, Integer.MAX_VALUE, new FilterLandCard()), Outcome.Exile);
|
||||
this.staticText = "Search your library for any number of land cards and remove them from the game. Shuffle your library afterwards.";
|
||||
this.staticText = "search your library for any number of land cards, exile them, then shuffle";
|
||||
}
|
||||
|
||||
public ManaSeveranceEffect(final ManaSeveranceEffect effect) {
|
||||
|
|
|
@ -17,7 +17,7 @@ import java.util.UUID;
|
|||
*/
|
||||
public final class OpenTheGates extends CardImpl {
|
||||
|
||||
private static final FilterCard filter = new FilterCard("basic land card or a Gate card");
|
||||
private static final FilterCard filter = new FilterCard("a basic land card or a Gate card");
|
||||
|
||||
static {
|
||||
filter.add(Predicates.or(
|
||||
|
|
|
@ -68,7 +68,7 @@ class OracleEnVecEffect extends OneShotEffect {
|
|||
super(Outcome.Benefit);
|
||||
this.staticText = "Target opponent chooses any number of creatures they control. During that player's next turn, " +
|
||||
"the chosen creatures attack if able, and other creatures can't attack. At the beginning of that turn's end step, " +
|
||||
"destroy each of the chosen creatures that didn't attack";
|
||||
"destroy each of the chosen creatures that didn't attack this turn";
|
||||
}
|
||||
|
||||
OracleEnVecEffect(final OracleEnVecEffect effect) {
|
||||
|
|
|
@ -42,7 +42,7 @@ public final class OraclesVault extends CardImpl {
|
|||
this.addAbility(new ConditionalActivatedAbility(Zone.BATTLEFIELD,
|
||||
new OraclesVaultFreeEffect(), new TapSourceCost(), new SourceHasCounterCondition(CounterType.BRICK, 3, Integer.MAX_VALUE),
|
||||
"{T}: Exile the top card of your library. Until end of turn, you may play that card without paying its mana cost. "
|
||||
+ "Activate only if there are three or more brick counters on {this}"));
|
||||
+ "Activate only if there are three or more brick counters on {this}."));
|
||||
}
|
||||
|
||||
private OraclesVault(final OraclesVault card) {
|
||||
|
|
|
@ -37,7 +37,7 @@ public final class ParallaxNexus extends CardImpl {
|
|||
this.addAbility(ability);
|
||||
|
||||
// When Parallax Nexus leaves the battlefield, each player returns to their hand all cards they own exiled with Parallax Nexus.
|
||||
this.addAbility(new LeavesBattlefieldTriggeredAbility(new ReturnFromExileEffect(Zone.HAND), false));
|
||||
this.addAbility(new LeavesBattlefieldTriggeredAbility(new ReturnFromExileEffect(Zone.HAND).setText("each player returns to their hand all cards they own exiled with {this}"), false));
|
||||
}
|
||||
|
||||
private ParallaxNexus(final ParallaxNexus card) {
|
||||
|
|
|
@ -53,7 +53,7 @@ class PutridCyclopEffect extends OneShotEffect {
|
|||
|
||||
public PutridCyclopEffect() {
|
||||
super(Outcome.Detriment);
|
||||
this.staticText = "scry 1, then reveal the top card of your library. {this} gets -X/-X until end of turn, where X is that card's mana value"
|
||||
this.staticText = "scry 1, then reveal the top card of your library. {this} gets -X/-X until end of turn, where X is that card's mana value."
|
||||
+ " <i>(To scry 1, look at the top card of your library, then you may put that card on the bottom of your library.)</i>";
|
||||
}
|
||||
|
||||
|
|
|
@ -24,7 +24,7 @@ public final class RishkarsExpertise extends CardImpl {
|
|||
this.getSpellAbility().addEffect(effect);
|
||||
|
||||
// You may cast a card with converted mana cost 5 or less from your hand without paying its mana cost.
|
||||
this.getSpellAbility().addEffect(new CastWithoutPayingManaCostEffect(5));
|
||||
this.getSpellAbility().addEffect(new CastWithoutPayingManaCostEffect(5).concatBy("<br>"));
|
||||
}
|
||||
|
||||
private RishkarsExpertise(final RishkarsExpertise card) {
|
||||
|
|
|
@ -44,8 +44,8 @@ class RitesOfSpringEffect extends OneShotEffect {
|
|||
|
||||
RitesOfSpringEffect() {
|
||||
super(Outcome.DrawCard);
|
||||
this.staticText = "Discard any number of cards. Search your library for up to that many basic land cards, " +
|
||||
"reveal those cards, and put them into your hand. Then shuffle.";
|
||||
this.staticText = "discard any number of cards. Search your library for up to that many basic land cards, " +
|
||||
"reveal them, put them into your hand, then shuffle";
|
||||
}
|
||||
|
||||
private RitesOfSpringEffect(final RitesOfSpringEffect effect) {
|
||||
|
|
|
@ -63,7 +63,7 @@ class ChooseNumberEffect extends OneShotEffect {
|
|||
public boolean apply(Game game, Ability source) {
|
||||
Player controller = game.getPlayer(source.getControllerId());
|
||||
if (controller != null) {
|
||||
int numberChoice = controller.announceXMana(0, Integer.MAX_VALUE, "Choose a number. Noncreature spells with the chosen mana value can't be cast", game, source);
|
||||
int numberChoice = controller.announceXMana(0, Integer.MAX_VALUE, "Choose a number.", game, source);
|
||||
game.getState().setValue(source.getSourceId().toString(), numberChoice);
|
||||
|
||||
Permanent permanent = game.getPermanentEntering(source.getSourceId());
|
||||
|
@ -82,7 +82,7 @@ class ChooseNumberEffect extends OneShotEffect {
|
|||
}
|
||||
|
||||
private String setText() {
|
||||
return "Choose a number. Noncreature spells with the chosen mana value can't be cast";
|
||||
return "Choose a number. Noncreature spells with mana value equal to the chosen number can't be cast";
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -92,7 +92,7 @@ class SanctumPrelateReplacementEffect extends ContinuousRuleModifyingEffectImpl
|
|||
|
||||
public SanctumPrelateReplacementEffect() {
|
||||
super(Duration.WhileOnBattlefield, Outcome.Detriment);
|
||||
staticText = "Noncreature spells with the chosen mana value can't be cast";
|
||||
staticText = "Noncreature spells with mana value equal to the chosen number can't be cast";
|
||||
}
|
||||
|
||||
public SanctumPrelateReplacementEffect(final SanctumPrelateReplacementEffect effect) {
|
||||
|
|
|
@ -47,7 +47,7 @@ class ScatteringStrokeEffect extends OneShotEffect {
|
|||
|
||||
public ScatteringStrokeEffect() {
|
||||
super(Outcome.Benefit);
|
||||
this.staticText = "Counter target spell. Clash with an opponent. If you win, at the beginning of your next main phase, you may add {X}, where X is that spell's mana value";
|
||||
this.staticText = "Counter target spell. Clash with an opponent. If you win, at the beginning of your next main phase, you may add an amount of {C} equal to that spell's mana value";
|
||||
}
|
||||
|
||||
public ScatteringStrokeEffect(final ScatteringStrokeEffect effect) {
|
||||
|
|
|
@ -42,7 +42,7 @@ class SchemingSymmetryEffect extends OneShotEffect {
|
|||
SchemingSymmetryEffect() {
|
||||
super(Outcome.Benefit);
|
||||
staticText = "Choose two target players. Each of them searches their library for a card, " +
|
||||
"then shuffles and puts that card on top of it.";
|
||||
"then shuffles and puts that card on top";
|
||||
}
|
||||
|
||||
private SchemingSymmetryEffect(final SchemingSymmetryEffect effect) {
|
||||
|
|
|
@ -25,7 +25,8 @@ public final class ShardConvergence extends CardImpl {
|
|||
// Search your library for a Plains card, an Island card, a Swamp card, and a Mountain card. Reveal those cards and put them into your hand. Then shuffle your library.
|
||||
this.getSpellAbility().addEffect(new SearchLibraryPutInHandEffect(
|
||||
new ShardConvergenceTarget(), true
|
||||
));
|
||||
).setText("search your library for a Plains card, an Island card, a Swamp card, and a Mountain card. " +
|
||||
"Reveal those cards, put them into your hand, then shuffle"));
|
||||
}
|
||||
|
||||
private ShardConvergence(final ShardConvergence card) {
|
||||
|
|
|
@ -23,7 +23,7 @@ public final class SramsExpertise extends CardImpl {
|
|||
this.getSpellAbility().addEffect(new CreateTokenEffect(new ServoToken(), 3));
|
||||
|
||||
// You may cast a card with converted mana cost 3 or less from your hand without paying its mana cost.
|
||||
this.getSpellAbility().addEffect(new CastWithoutPayingManaCostEffect(3));
|
||||
this.getSpellAbility().addEffect(new CastWithoutPayingManaCostEffect(3).concatBy("<br>"));
|
||||
}
|
||||
|
||||
private SramsExpertise(final SramsExpertise card) {
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
package mage.cards.s;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.condition.common.DeliriumCondition;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
|
@ -10,10 +8,9 @@ import mage.abilities.effects.common.continuous.BoostSourceEffect;
|
|||
import mage.abilities.hint.common.DeliriumHint;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.Zone;
|
||||
import mage.constants.*;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author fireshoes
|
||||
|
@ -32,9 +29,8 @@ public final class StallionOfAshmouth extends CardImpl {
|
|||
this.addAbility(new ConditionalActivatedAbility(
|
||||
Zone.BATTLEFIELD,
|
||||
new BoostSourceEffect(1, 1, Duration.EndOfTurn),
|
||||
new ManaCostsImpl("{1}{B}"),
|
||||
DeliriumCondition.instance)
|
||||
.addHint(DeliriumHint.instance));
|
||||
new ManaCostsImpl<>("{1}{B}"), DeliriumCondition.instance
|
||||
).setAbilityWord(AbilityWord.DELIRIUM).addHint(DeliriumHint.instance));
|
||||
}
|
||||
|
||||
private StallionOfAshmouth(final StallionOfAshmouth card) {
|
||||
|
|
|
@ -51,7 +51,7 @@ class TariffEffect extends OneShotEffect {
|
|||
|
||||
public TariffEffect() {
|
||||
super(Outcome.DestroyPermanent);
|
||||
this.staticText = "Each player sacrifices the creature they control with the highest mana value unless they pay that creature's mana cost. If two or more creatures a player controls are tied for highest cost, that player chooses one.";
|
||||
this.staticText = "Each player sacrifices the creature they control with the highest mana value unless they pay that creature's mana cost. If two or more creatures a player controls are tied for highest, that player chooses one.";
|
||||
}
|
||||
|
||||
public TariffEffect(final TariffEffect effect) {
|
||||
|
|
|
@ -50,7 +50,8 @@ class TrenchGorgerEffect extends OneShotEffect {
|
|||
|
||||
public TrenchGorgerEffect() {
|
||||
super(Outcome.BoostCreature);
|
||||
this.staticText = "you may search your library for any number of land cards, exile them, then shuffle. If you do, {this}'s power and toughness each become equal to the number of cards exiled this way";
|
||||
this.staticText = "search your library for any number of land cards, exile them, then shuffle. " +
|
||||
"If you do, {this} has base power and base toughness each equal to the number of cards exiled this way";
|
||||
}
|
||||
|
||||
public TrenchGorgerEffect(final TrenchGorgerEffect effect) {
|
||||
|
|
|
@ -95,7 +95,7 @@ class VerdantSuccessionTriggeredAbility extends TriggeredAbilityImpl {
|
|||
|
||||
@Override
|
||||
public String getRule() {
|
||||
return "Whenever a green nontoken creature dies, that creature's controller may search their library for a card with the same name as that creature and put it onto the battlefield. If that player does, they shuffle.";
|
||||
return "Whenever a green nontoken creature dies, that creature's controller may search their library for a card with the same name as that creature, put it onto the battlefield, then shuffle.";
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -31,7 +31,7 @@ public final class WarpedLandscape extends CardImpl {
|
|||
|
||||
// {2}, {T}, Sacrifice Warped Landscape: Search your library for a basic land card and put it onto the battlefield tapped. Then shuffle your library.
|
||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
|
||||
new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(0, 1, StaticFilters.FILTER_CARD_BASIC_LAND), true, true),
|
||||
new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true, true),
|
||||
new GenericManaCost(2));
|
||||
ability.addCost(new TapSourceCost());
|
||||
ability.addCost(new SacrificeSourceCost());
|
||||
|
|
|
@ -34,7 +34,7 @@ public final class WildFieldScarecrow extends CardImpl {
|
|||
|
||||
// {2}, Sacrifice Wild-Field Scarecrow: Search your library for up to two basic land cards, reveal them, and put them into your hand. Then shuffle your library.
|
||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
|
||||
new SearchLibraryPutInHandEffect(new TargetCardInLibrary(0, 2, StaticFilters.FILTER_CARD_BASIC_LAND), true, true),
|
||||
new SearchLibraryPutInHandEffect(new TargetCardInLibrary(0, 2, StaticFilters.FILTER_CARD_BASIC_LANDS), true, true),
|
||||
new GenericManaCost(2));
|
||||
ability.addCost(new SacrificeSourceCost());
|
||||
this.addAbility(ability);
|
||||
|
|
|
@ -42,7 +42,7 @@ public final class WolfOfDevilsBreach extends CardImpl {
|
|||
toPay.add(new DiscardCardCost());
|
||||
Ability ability = new AttacksTriggeredAbility(new DoIfCostPaid(new DamageTargetEffect(new WolfOfDevilsBreachDiscardCostCardConvertedMana()), toPay,
|
||||
"Pay {1}{R} and discard a card to let {this} do damage to target creature or planeswalker equal to the discarded card's mana value?", true), false,
|
||||
"Whenever {this} attacks you may pay {1}{R} and discard a card. If you do, {this} deals damage to target creature or planeswalker "
|
||||
"Whenever {this} attacks, you may pay {1}{R} and discard a card. If you do, {this} deals damage to target creature or planeswalker "
|
||||
+ "equal to the discarded card's mana value.");
|
||||
ability.addTarget(new TargetCreatureOrPlaneswalker());
|
||||
this.addAbility(ability);
|
||||
|
|
|
@ -23,7 +23,7 @@ public final class YahennisExpertise extends CardImpl {
|
|||
this.getSpellAbility().addEffect(new BoostAllEffect(-3, -3, Duration.EndOfTurn));
|
||||
|
||||
// You may cast a card with converted mana cost 3 or less from your hand without paying its mana cost.
|
||||
this.getSpellAbility().addEffect(new CastWithoutPayingManaCostEffect(3));
|
||||
this.getSpellAbility().addEffect(new CastWithoutPayingManaCostEffect(3).concatBy("<br>"));
|
||||
}
|
||||
|
||||
private YahennisExpertise(final YahennisExpertise card) {
|
||||
|
|
|
@ -188,7 +188,7 @@ public class BecomesCreatureTargetEffect extends ContinuousEffectImpl {
|
|||
sb.append(". It's still a land");
|
||||
}
|
||||
}
|
||||
return sb.toString();
|
||||
return sb.toString().replace(" .", ".");
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -39,7 +39,7 @@ public class CastWithoutPayingManaCostEffect extends OneShotEffect {
|
|||
public CastWithoutPayingManaCostEffect(DynamicValue maxCost) {
|
||||
super(Outcome.PlayForFree);
|
||||
this.manaCost = maxCost;
|
||||
this.staticText = "you may cast a card with mana value "
|
||||
this.staticText = "you may cast a spell with mana value "
|
||||
+ maxCost + " or less from your hand without paying its mana cost";
|
||||
}
|
||||
|
||||
|
|
|
@ -55,7 +55,7 @@ public class GravestormAbility extends TriggeredAbilityImpl {
|
|||
|
||||
@Override
|
||||
public String getRule() {
|
||||
return "Gravestorm <i>(When you cast this spell, copy it for each permanent put into a graveyard this turn. You may choose new targets for the copies.</i>)";
|
||||
return "Gravestorm <i>(When you cast this spell, copy it for each permanent put into a graveyard this turn. You may choose new targets for the copies.)</i>";
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue