Fix some card text

This commit is contained in:
Plopman 2018-04-16 21:03:16 +02:00
parent 261cbf4970
commit 36d69a96be
68 changed files with 101 additions and 171 deletions

View file

@ -54,7 +54,7 @@ public class ActOfHeroism extends CardImpl {
// It gets +2/+2 until end of turn
effect = new BoostTargetEffect(2, 2, Duration.EndOfTurn);
effect.setText("It gets +2/+2");
effect.setText("It gets +2/+2 until end of turn");
this.getSpellAbility().addEffect(effect);
// and can block an additional creature this turn

View file

@ -31,7 +31,7 @@ package mage.cards.a;
import java.util.UUID;
import mage.abilities.common.LandfallAbility;
import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.effects.common.continuous.BoostTargetEffect;
import mage.abilities.effects.common.continuous.BoostEquippedEffect;
import mage.abilities.keyword.EquipAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@ -39,10 +39,6 @@ import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.Outcome;
import mage.constants.SubType;
import mage.game.Game;
import mage.game.events.GameEvent;
import mage.game.permanent.Permanent;
import mage.target.common.TargetCreaturePermanent;
/**
*
@ -53,8 +49,12 @@ public class AdventuringGear extends CardImpl {
public AdventuringGear(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
this.subtype.add(SubType.EQUIPMENT);
// Landfall Whenever a land enters the battlefield under your control, equipped creature gets +2/+2 until end of turn.
this.addAbility(new LandfallAbility(new BoostEquippedEffect(2, 2, Duration.EndOfTurn), false));
// Equip {1} ({1}: Attach to target creature you control. Equip only as a sorcery.)
this.addAbility(new EquipAbility(Outcome.BoostCreature, new GenericManaCost(1)));
this.addAbility(new AdventuringGearAbility());
}
public AdventuringGear(final AdventuringGear card) {
@ -65,40 +65,4 @@ public class AdventuringGear extends CardImpl {
public AdventuringGear copy() {
return new AdventuringGear(this);
}
}
class AdventuringGearAbility extends LandfallAbility {
public AdventuringGearAbility() {
super(null, false);
this.addEffect(new BoostTargetEffect(2, 2, Duration.EndOfTurn));
this.addTarget(new TargetCreaturePermanent());
}
public AdventuringGearAbility(final AdventuringGearAbility ability) {
super(ability);
}
@Override
public boolean checkTrigger(GameEvent event, Game game) {
if (super.checkTrigger(event, game)) {
Permanent equipment = game.getPermanent(this.sourceId);
if (equipment != null && equipment.getAttachedTo() != null) {
Permanent creature = game.getPermanent(equipment.getAttachedTo());
if (creature != null) {
this.getTargets().get(0).clearChosen();
this.getTargets().get(0).add(creature.getId(), game);
return true;
}
}
}
return false;
}
@Override
public AdventuringGearAbility copy() {
return new AdventuringGearAbility(this);
}
}

View file

@ -91,7 +91,7 @@ class AllSunsDawnEffect extends OneShotEffect {
public AllSunsDawnEffect() {
super(Outcome.ReturnToHand);
this.staticText = "For each color, return up to one target card of that color from your graveyard to your hand. Exile {this}";
this.staticText = "For each color, return up to one target card of that color from your graveyard to your hand";
}
public AllSunsDawnEffect(final AllSunsDawnEffect effect) {

View file

@ -77,6 +77,7 @@ class PreventDamageToSourceByCardTypeEffect extends PreventAllDamageToSourceEffe
public PreventDamageToSourceByCardTypeEffect(CardType cardT){
super(Duration.WhileOnBattlefield);
staticText = "Prevent all damage that would be dealt to {this} by artifact sources";
cardType = cardT;
}

View file

@ -44,7 +44,7 @@ public class BeastHunt extends CardImpl {
public BeastHunt(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{G}");
this.getSpellAbility().addEffect(new RevealLibraryPutIntoHandEffect(3, new FilterCreatureCard(), Zone.GRAVEYARD));
this.getSpellAbility().addEffect(new RevealLibraryPutIntoHandEffect(3, new FilterCreatureCard("creature cards"), Zone.GRAVEYARD));
}
public BeastHunt(final BeastHunt card) {

View file

@ -30,6 +30,7 @@ package mage.cards.b;
import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.TriggeredAbilityImpl;
import mage.abilities.common.DiesCreatureTriggeredAbility;
import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.keyword.EquipAbility;
@ -56,8 +57,11 @@ public class BladeOfTheBloodchief extends CardImpl {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
this.subtype.add(SubType.EQUIPMENT);
// Whenever a creature dies, put a +1/+1 counter on equipped creature. If equipped creature is a Vampire, put two +1/+1 counters on it instead.
this.addAbility(new DiesCreatureTriggeredAbility(new BladeOfTheBloodchiefEffect(), false));
//Equip {1}
this.addAbility(new EquipAbility(Outcome.AddAbility, new GenericManaCost(1)));
this.addAbility(new BladeOfTheBloodChiefTriggeredAbility());
}
public BladeOfTheBloodchief(final BladeOfTheBloodchief card) {
@ -70,50 +74,6 @@ public class BladeOfTheBloodchief extends CardImpl {
}
}
class BladeOfTheBloodChiefTriggeredAbility extends TriggeredAbilityImpl {
private static final String text = "Whenever a creature dies, put a +1/+1 counter on equipped "
+ "creature. If equipped creature is a Vampire, put two +1/+1 counters on it instead.";
BladeOfTheBloodChiefTriggeredAbility() {
super(Zone.BATTLEFIELD, new BladeOfTheBloodchiefEffect());
}
BladeOfTheBloodChiefTriggeredAbility(final BladeOfTheBloodChiefTriggeredAbility ability) {
super(ability);
}
@Override
public boolean checkEventType(GameEvent event, Game game) {
return event.getType() == EventType.ZONE_CHANGE;
}
@Override
public boolean checkTrigger(GameEvent event, Game game) {
ZoneChangeEvent zEvent = (ZoneChangeEvent) event;
if (zEvent.getFromZone() == Zone.BATTLEFIELD && zEvent.getToZone() == Zone.GRAVEYARD) {
Permanent p = (Permanent) game.getLastKnownInformation(event.getTargetId(), Zone.BATTLEFIELD);
if (p != null && p.isCreature()) {
Permanent enchantment = game.getPermanent(getSourceId());
if (enchantment != null && enchantment.getAttachedTo() != null) {
return true;
}
}
}
return false;
}
@Override
public BladeOfTheBloodChiefTriggeredAbility copy() {
return new BladeOfTheBloodChiefTriggeredAbility(this);
}
@Override
public String getRule() {
return text;
}
}
class BladeOfTheBloodchiefEffect extends OneShotEffect {
BladeOfTheBloodchiefEffect() {

View file

@ -42,7 +42,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*/
public class Boil extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("islands");
private static final FilterPermanent filter = new FilterPermanent("Islands");
static {
filter.add(new SubtypePredicate(SubType.ISLAND));

View file

@ -35,6 +35,7 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.TargetController;
import mage.filter.StaticFilters;
import mage.filter.common.FilterControlledLandPermanent;
import mage.filter.common.FilterCreaturePermanent;
@ -48,10 +49,10 @@ public class BontusLastReckoning extends CardImpl {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{B}{B}");
// Destroy all creatures. Lands you control don't untap during your next untap step.
this.getSpellAbility().addEffect(new DestroyAllEffect(new FilterCreaturePermanent()));
this.getSpellAbility().addEffect(new DestroyAllEffect(StaticFilters.FILTER_PERMANENT_CREATURES));
this.getSpellAbility().addEffect(new DontUntapInControllersUntapStepAllEffect(
Duration.UntilYourNextTurn, TargetController.YOU, new FilterControlledLandPermanent("Lands you control"))
.setText("Lands you control don't untap during your next untap phase"));
.setText("Lands you control don't untap during your next untap step"));
}
public BontusLastReckoning(final BontusLastReckoning card) {

View file

@ -55,8 +55,9 @@ public class BroodmateDragon extends CardImpl {
this.power = new MageInt(4);
this.toughness = new MageInt(4);
this.addAbility(new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(dragonToken), false));
this.addAbility(FlyingAbility.getInstance());
this.addAbility(new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(dragonToken), false));
}
public BroodmateDragon(final BroodmateDragon card) {

View file

@ -47,7 +47,7 @@ public class BuildersBlessing extends CardImpl {
// Untapped creatures you control get +0/+2.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostControlledEffect(0, 2, Duration.WhileOnBattlefield, new FilterUntappedCreature())));
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostControlledEffect(0, 2, Duration.WhileOnBattlefield, new FilterUntappedCreature("untapped creatures"))));
}
public BuildersBlessing(final BuildersBlessing card) {

View file

@ -16,7 +16,7 @@ import java.util.UUID;
public class BullElephant extends CardImpl {
private static FilterControlledLandPermanent controlledForest = new FilterControlledLandPermanent("Forests you control");
private static FilterControlledLandPermanent controlledForest = new FilterControlledLandPermanent("Forests");
static {
controlledForest.add(new SubtypePredicate(SubType.FOREST));

View file

@ -54,7 +54,7 @@ import java.util.UUID;
public class CallToTheGrave extends CardImpl {
private static final String ruleText = "At the beginning of the end step, if no creatures are on the battlefield, sacrifice {this}.";
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("a non-Zombie creature");
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("non-Zombie creature");
static {
filter.add(Predicates.not(new SubtypePredicate(SubType.ZOMBIE)));

View file

@ -57,7 +57,9 @@ public class CallerOfGales extends CardImpl {
this.power = new MageInt(1);
this.toughness = new MageInt(1);
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new GainAbilityTargetEffect(FlyingAbility.getInstance(), Duration.EndOfTurn), new ManaCostsImpl("{U}"));
// {1}{U}, {T}: Target creature gains flying until end of turn.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new GainAbilityTargetEffect(FlyingAbility.getInstance(), Duration.EndOfTurn), new ManaCostsImpl("{1}{U}"));
ability.addCost(new TapSourceCost());
ability.addTarget(new TargetCreaturePermanent());
this.addAbility(ability);

View file

@ -64,7 +64,7 @@ public class ConsecrateLand extends CardImpl {
this.addAbility(ability);
// Enchanted land is indestructible and can't be enchanted by other Auras.
Ability ability2 = new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(IndestructibleAbility.getInstance(), AttachmentType.AURA));
Ability ability2 = new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(IndestructibleAbility.getInstance(), AttachmentType.AURA, Duration.WhileOnBattlefield, "Enchanted land is indestructible"));
ability2.addEffect(new ConsecrateLandRuleEffect());
this.addAbility(ability2);
}

View file

@ -131,7 +131,7 @@ class CyclopeanTombCreateTriggeredEffect extends OneShotEffect {
public CyclopeanTombCreateTriggeredEffect() {
super(Outcome.Benefit);
this.staticText = "At the beginning of each of your upkeeps for the rest of the game, remove all mire counters from a land that a mire counter was put onto with {this} but that a mire counter has not been removed from with {this}";
this.staticText = "at the beginning of each of your upkeeps for the rest of the game, remove all mire counters from a land that a mire counter was put onto with {this} but that a mire counter has not been removed from with {this}";
}
public CyclopeanTombCreateTriggeredEffect(final CyclopeanTombCreateTriggeredEffect effect) {

View file

@ -48,7 +48,7 @@ public class DeadDrop extends CardImpl {
// Delve
this.addAbility(new DelveAbility());
// Target player sacrifices two creatures
this.getSpellAbility().addEffect(new SacrificeEffect(StaticFilters.FILTER_PERMANENT_CREATURE, 2, "Target player"));
this.getSpellAbility().addEffect(new SacrificeEffect(StaticFilters.FILTER_PERMANENT_CREATURES, 2, "Target player"));
this.getSpellAbility().addTarget(new TargetPlayer());
}

View file

@ -88,6 +88,7 @@ class PreventDamageToSourceBySubtypeEffect extends PreventAllDamageToSourceEffec
public PreventDamageToSourceBySubtypeEffect(SubType sub){
super(Duration.WhileOnBattlefield);
subtype = sub;
staticText = "Prevent all damage that would be dealt to {this} by " + subtype.getDescription();
}
@Override

View file

@ -51,7 +51,7 @@ import mage.target.TargetPermanent;
* @author Plopman
*/
public class DevoutHarpist extends CardImpl {
private static final FilterEnchantmentPermanent filter = new FilterEnchantmentPermanent("Auras attached to a creature");
private static final FilterEnchantmentPermanent filter = new FilterEnchantmentPermanent("Aura attached to a creature");
static
{
filter.add(new SubtypePredicate(SubType.AURA));

View file

@ -40,6 +40,7 @@ import mage.filter.StaticFilters;
import mage.target.TargetPermanent;
import java.util.UUID;
import mage.abilities.costs.common.TapSourceCost;
/**
*
@ -50,7 +51,9 @@ public class DispellersCapsule extends CardImpl {
public DispellersCapsule (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{W}");
// {2}{W}, {T}, Sacrifice Dispeller's Capsule: Destroy target artifact or enchantment.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DestroyTargetEffect(), new ManaCostsImpl("{2}{W}"));
ability.addCost(new TapSourceCost());
ability.addCost(new SacrificeSourceCost());
ability.addTarget(new TargetPermanent(StaticFilters.FILTER_PERMANENT_ARTIFACT_OR_ENCHANTMENT));
this.addAbility(ability);

View file

@ -70,7 +70,7 @@ class DoomsdayEffect extends OneShotEffect {
public DoomsdayEffect() {
super(Outcome.LoseLife);
staticText = "Search your library and graveyard for five cards and exile the rest. Put the chosen cards on top of your library in any order. You lose half your life, rounded up";
staticText = "Search your library and graveyard for five cards and exile the rest. Put the chosen cards on top of your library in any order";
}
public DoomsdayEffect(final DoomsdayEffect effect) {

View file

@ -43,7 +43,7 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*/
public class Dredge extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("a creature or land");
private static final FilterPermanent filter = new FilterPermanent("creature or land");
static {
filter.add(Predicates.or(new CardTypePredicate(CardType.CREATURE), new CardTypePredicate(CardType.LAND)));

View file

@ -86,7 +86,7 @@ class EarthbindEffect extends OneShotEffect {
public EarthbindEffect() {
super(Outcome.Damage);
staticText = "if enchanted creature has flying, {this} deals 2 damage to that creature and Earthbind gains 'Enchanted creature loses flying.'";
staticText = "if enchanted creature has flying, {this} deals 2 damage to that creature and Earthbind gains \"Enchanted creature loses flying.\"";
}
public EarthbindEffect(final EarthbindEffect effect) {

View file

@ -66,7 +66,7 @@ public class Farmstead extends CardImpl {
new DoIfCostPaid(new GainLifeEffect(1), new ManaCostsImpl("{W}{W}")),
TargetController.YOU, true);
Effect effect = new GainAbilityAttachedEffect(ability, AttachmentType.AURA);
effect.setText("Enchanted artifact has \"At the beginning of your upkeep, you may pay {W}{W}. If you do, you gain 1 life.\"");
effect.setText("Enchanted land has \"At the beginning of your upkeep, you may pay {W}{W}. If you do, you gain 1 life.\"");
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect));
}

View file

@ -51,7 +51,7 @@ import mage.target.common.TargetControlledPermanent;
*/
public class GathererOfGraces extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("an aura");
private static final FilterControlledPermanent filter = new FilterControlledPermanent("an Aura");
static {
filter.add(new SubtypePredicate(SubType.AURA));

View file

@ -67,7 +67,7 @@ public class GenjuOfTheFalls extends CardImpl {
this.addAbility(ability);
// {2}: Enchanted Island becomes a 3/2 blue Spirit creature with flying until end of turn. It's still a land.
Ability ability2 = new SimpleActivatedAbility(Zone.BATTLEFIELD, new BecomesCreatureAttachedWithActivatedAbilityOrSpellEffect(new SpiritToken(), "Enchanted Island becomes a 3/2 blue Spirit creature with flying until end of turn. It's still a land", Duration.EndOfTurn), new GenericManaCost(2));
Ability ability2 = new SimpleActivatedAbility(Zone.BATTLEFIELD, new BecomesCreatureAttachedWithActivatedAbilityOrSpellEffect(new SpiritToken(), "Enchanted Island becomes a 3/2 blue Spirit creature with flying until end of turn. It's still a land", Duration.EndOfTurn), new GenericManaCost(2));
this.addAbility(ability2);
// When enchanted Island is put into a graveyard, you may return Genju of the Falls from your graveyard to your hand. TargetPermanent auraTarget = new TargetLandPermanent(filter);

View file

@ -54,7 +54,7 @@ public class GhostlyVisit extends CardImpl {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{B}");
// Destroy target nonblack creature.
this.getSpellAbility().addEffect(new DestroyTargetEffect(true));
this.getSpellAbility().addEffect(new DestroyTargetEffect());
this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter));
}

View file

@ -43,7 +43,7 @@ import mage.filter.predicate.permanent.TokenPredicate;
*/
public class HourOfReckoning extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nontoken creature");
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nontoken creatures");
static {
filter.add(Predicates.not(new TokenPredicate()));

View file

@ -46,7 +46,7 @@ import mage.target.common.TargetCardInLibrary;
*/
public class ImperialRecruiter extends CardImpl {
private static final FilterCreatureCard filter = new FilterCreatureCard("a creature card with power 2 or less");
private static final FilterCreatureCard filter = new FilterCreatureCard("creature card with power 2 or less");
static{
filter.add(new PowerPredicate(ComparisonType.FEWER_THAN, 3));

View file

@ -87,7 +87,7 @@ class InstigatorEffect extends OneShotEffect {
public InstigatorEffect() {
super(Outcome.Detriment);
staticText = "Creatures target player control attack this turn if able";
staticText = "Creatures target player controls attack this turn if able";
}
public InstigatorEffect(final InstigatorEffect effect) {

View file

@ -75,7 +75,7 @@ public class InstillFuror extends CardImpl {
new ConditionalOneShotEffect(new SacrificeSourceEffect(), new InvertCondition(AttackedThisTurnSourceCondition.instance),
"sacrifice this creature unless it attacked this turn"), TargetController.YOU, false);
Effect effect = new GainAbilityAttachedEffect(gainedAbility, AttachmentType.AURA, Duration.WhileOnBattlefield);
effect.setText("Enchanted creature has \"At the beginning of your upkeep, sacrifice this creature unless it attacked this turn.\"");
effect.setText("Enchanted creature has \"At the beginning of your end step, sacrifice this creature unless it attacked this turn.\"");
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect), new AttackedThisTurnWatcher());
}

View file

@ -59,7 +59,7 @@ public class JettingGlasskite extends CardImpl {
// Flying
this.addAbility(FlyingAbility.getInstance());
// Whenever Jetting Glasskite becomes the target of a spell or ability for the first time in a turn, counter that spell or ability.
// Whenever Jetting Glasskite becomes the target of a spell or ability for the first time each turn, counter that spell or ability.
this.addAbility(new JettingGlasskiteAbility());
}
@ -112,7 +112,7 @@ class JettingGlasskiteAbility extends TriggeredAbilityImpl {
@Override
public String getRule() {
return "Whenever {this} becomes the target of a spell or ability for the first time in a turn, counter that spell or ability.";
return "Whenever {this} becomes the target of a spell or ability for the first time each turn, counter that spell or ability.";
}
}

View file

@ -52,7 +52,7 @@ public class Kismet extends CardImpl {
public Kismet(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{W}");
// Artifacts, creatures, and lands played by your opponents enter the battlefield tapped.
// Artifacts, creatures, and lands your opponents control enter the battlefield tapped.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new KismetEffect()));
}
@ -70,7 +70,7 @@ class KismetEffect extends ReplacementEffectImpl {
KismetEffect() {
super(Duration.WhileOnBattlefield, Outcome.Tap);
staticText = "Artifacts, creatures, and lands played by your opponents enter the battlefield tapped";
staticText = "Artifacts, creatures, and lands your opponents control enter the battlefield tapped";
}
KismetEffect(final KismetEffect effect) {

View file

@ -48,7 +48,7 @@ public class Knighthood extends CardImpl {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{W}");
// Creatures you control have first strike.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityControlledEffect(FirstStrikeAbility.getInstance(), Duration.WhileOnBattlefield, StaticFilters.FILTER_PERMANENT_CREATURE, false)));
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityControlledEffect(FirstStrikeAbility.getInstance(), Duration.WhileOnBattlefield, StaticFilters.FILTER_PERMANENT_CREATURES, false)));
}

View file

@ -44,7 +44,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*/
public class KoboldTaskmaster extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Other Kobold creatures you control");
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Kobold creatures you control");
static {
filter.add(new ControllerPredicate(TargetController.YOU));

View file

@ -53,7 +53,7 @@ import java.util.UUID;
*/
public class LeadBellyChimera extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Chimera creature you control");
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Chimera creature");
static {
filter.add(new SubtypePredicate(SubType.CHIMERA));

View file

@ -38,6 +38,7 @@ import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.Zone;
import mage.filter.FilterPermanent;
import mage.filter.StaticFilters;
import mage.filter.predicate.mageobject.CardTypePredicate;
/**
@ -46,16 +47,10 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
*/
public class Levitation extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("creatures ");
static {
filter.add(new CardTypePredicate(CardType.CREATURE));
}
public Levitation (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{U}{U}");
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityControlledEffect(FlyingAbility.getInstance(), Duration.WhileOnBattlefield, filter, false)));
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityControlledEffect(FlyingAbility.getInstance(), Duration.WhileOnBattlefield, StaticFilters.FILTER_PERMANENT_CREATURES, false)));
}
public Levitation (final Levitation card) {

View file

@ -50,7 +50,8 @@ public class LotusCobra extends CardImpl {
this.power = new MageInt(2);
this.toughness = new MageInt(1);
this.addAbility(new LandfallAbility(new AddManaOfAnyColorEffect(), false));
// Landfall Whenever a land enters the battlefield under your control, you may add one mana of any color to your mana pool.
this.addAbility(new LandfallAbility(new AddManaOfAnyColorEffect(), true));
}
public LotusCobra(final LotusCobra card) {

View file

@ -51,7 +51,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
*/
public class LoxodonHierarch extends CardImpl {
private static FilterCreaturePermanent filter = new FilterCreaturePermanent("each creature you control");
private static FilterCreaturePermanent filter = new FilterCreaturePermanent("creature you control");
static {
filter.add(new ControllerPredicate(TargetController.YOU));

View file

@ -36,6 +36,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.filter.StaticFilters;
/**
*
@ -46,11 +47,11 @@ public class MakeAStand extends CardImpl {
public MakeAStand(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{W}");
// Creature you control get +1/+0 and gain indestructible until end of turn.
// Creatures you control get +1/+0 and gain indestructible until end of turn.
Effect effect1 = new BoostControlledEffect(1, 0, Duration.EndOfTurn);
effect1.setText("Creature you control get +1/+0");
effect1.setText("Creatures you control get +1/+0");
this.getSpellAbility().addEffect(effect1);
Effect effect2 = new GainAbilityControlledEffect(IndestructibleAbility.getInstance(), Duration.EndOfTurn);
Effect effect2 = new GainAbilityControlledEffect(IndestructibleAbility.getInstance(), Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURES);
effect2.setText("and gain indestructible until end of turn");
this.getSpellAbility().addEffect(effect2);
}

View file

@ -76,7 +76,7 @@ class NetherbornPhalanxEffect extends OneShotEffect {
NetherbornPhalanxEffect() {
super(Outcome.Sacrifice);
this.staticText = "Each opponent loses 1 life for each creature he or she controls";
this.staticText = "each opponent loses 1 life for each creature he or she controls";
}
NetherbornPhalanxEffect(final NetherbornPhalanxEffect effect) {

View file

@ -69,7 +69,7 @@ public class PresenceOfGond extends CardImpl {
// Enchanted creature has "{tap}: Create a 1/1 green Elf Warrior creature token."
Ability abilityToGain = new SimpleActivatedAbility(Zone.BATTLEFIELD, new CreateTokenEffect(new ElfToken()), new TapSourceCost());
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(abilityToGain, AttachmentType.AURA, Duration.WhileOnBattlefield,
"Enchanted creature has \"{t}: Create a 1/1 green Elf Warrior creature token.\"")));
"Enchanted creature has \"{T}: Create a 1/1 green Elf Warrior creature token.\"")));
}
public PresenceOfGond(final PresenceOfGond card) {

View file

@ -72,7 +72,7 @@ public class QuicksilverDagger extends CardImpl {
gainAbility.addEffect(new DrawCardSourceControllerEffect(1));
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD,
new GainAbilityAttachedEffect(gainAbility, AttachmentType.AURA, Duration.WhileOnBattlefield,
"Enchanted creature has \"{tap}: This creature deals 1 damage to target player. You draw a card.\"")
"Enchanted creature has \"{T}: This creature deals 1 damage to target player. You draw a card.\"")
));
}

View file

@ -46,7 +46,7 @@ import java.util.UUID;
*/
public class RendFlesh extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Non-Spirit");
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Non-Spirit creature");
static {
filter.add(Predicates.not(new SubtypePredicate(SubType.SPIRIT)));
@ -56,6 +56,7 @@ public class RendFlesh extends CardImpl {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{B}");
this.subtype.add(SubType.ARCANE);
// Destroy target non-Spirit creature.
Target target = new TargetCreaturePermanent(filter);
this.getSpellAbility().addTarget(target);
this.getSpellAbility().addEffect(new DestroyTargetEffect());

View file

@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanentAmount;
*/
public class RockSlide extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent();
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("attacking or blocking creatures without flying");
static {
filter.add(Predicates.or(

View file

@ -51,7 +51,7 @@ import java.util.UUID;
*/
public class SeshiroTheAnointed extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Snakes");
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Snake creatures");
static {
filter.add(new SubtypePredicate(SubType.SNAKE));
@ -65,7 +65,10 @@ public class SeshiroTheAnointed extends CardImpl {
this.power = new MageInt(3);
this.toughness = new MageInt(4);
// Other Snake creatures you control get +2/+2.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostControlledEffect(2, 2, Duration.WhileOnBattlefield, filter, true)));
// Whenever a Snake you control deals combat damage to a player, you may draw a card.
this.addAbility(new SeshiroTheAnointedAbility());
}

View file

@ -33,6 +33,7 @@ import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.AttachEffect;
import mage.abilities.effects.common.continuous.BoostEnchantedEffect;
import mage.abilities.effects.common.continuous.BoostEquippedEffect;
import mage.abilities.effects.common.continuous.GainAbilityAttachedEffect;
import mage.abilities.keyword.EnchantAbility;
@ -60,7 +61,7 @@ public class ShadowLance extends CardImpl {
Ability ability = new EnchantAbility(auraTarget.getTargetName());
this.addAbility(ability);
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(FirstStrikeAbility.getInstance(), AttachmentType.AURA)));
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostEquippedEffect(2, 2, Duration.EndOfTurn), new ManaCostsImpl("{1}{B}")));
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(2, 2, Duration.EndOfTurn), new ManaCostsImpl("{1}{B}")));
}
public ShadowLance(final ShadowLance card) {

View file

@ -67,7 +67,7 @@ public class ShisatoWhisperingHunter extends CardImpl {
// At the beginning of your upkeep, sacrifice a Snake.
this.addAbility(new BeginningOfUpkeepTriggeredAbility(new SacrificeControllerEffect(filter, 1,""), TargetController.YOU, false));
// Whenever Shisato, Whispering Hunter deals combat damage to a player, that player skips their next untap step.
this.addAbility(new DealsCombatDamageToAPlayerTriggeredAbility(new SkipNextPlayerUntapStepEffect("that "),false, true));
this.addAbility(new DealsCombatDamageToAPlayerTriggeredAbility(new SkipNextPlayerUntapStepEffect("that"), false, true));
}
public ShisatoWhisperingHunter(final ShisatoWhisperingHunter card) {

View file

@ -77,7 +77,7 @@ class SkeletonizeEffect extends OneShotEffect {
public SkeletonizeEffect() {
super(Outcome.PutCreatureInPlay);
this.staticText = "When a creature dealt damage this way dies this turn, create a 1/1 black Skeleton creature token with \"{B}: Regenerate this creature\"";
this.staticText = "When a creature dealt damage this way dies this turn, create a 1/1 black Skeleton creature token with \"{B}: Regenerate this creature.\"";
}
public SkeletonizeEffect(final SkeletonizeEffect effect) {

View file

@ -66,7 +66,7 @@ public class Subversion extends CardImpl {
public SubversionEffect() {
super(Outcome.Damage);
staticText = "Each opponent loses 1 life. You gain life equal to the life lost this way";
staticText = "each opponent loses 1 life. You gain life equal to the life lost this way";
}
public SubversionEffect(final SubversionEffect effect) {

View file

@ -34,6 +34,7 @@ import mage.abilities.effects.common.DestroyAllEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.filter.StaticFilters;
import mage.filter.common.FilterCreaturePermanent;
/**
@ -51,7 +52,7 @@ public class SupremeVerdict extends CardImpl {
this.addAbility(ability);
// Destroy all creatures.
this.getSpellAbility().addEffect(new DestroyAllEffect(new FilterCreaturePermanent()));
this.getSpellAbility().addEffect(new DestroyAllEffect(StaticFilters.FILTER_PERMANENT_CREATURES));
}
public SupremeVerdict(final SupremeVerdict card) {

View file

@ -78,7 +78,7 @@ public class SurrakDragonclaw extends CardImpl {
// Other creatures you control have trample.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD,
new GainAbilityControlledEffect(TrampleAbility.getInstance(), Duration.WhileOnBattlefield, StaticFilters.FILTER_PERMANENT_CREATURE, true)));
new GainAbilityControlledEffect(TrampleAbility.getInstance(), Duration.WhileOnBattlefield, StaticFilters.FILTER_PERMANENT_CREATURES, true)));
}

View file

@ -37,12 +37,11 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.ColoredManaSymbol;
import mage.constants.Zone;
import mage.filter.FilterCard;
import mage.filter.predicate.mageobject.CardTypePredicate;
import mage.target.common.TargetCardInHand;
import mage.target.common.TargetCardInLibrary;
import java.util.UUID;
import mage.filter.StaticFilters;
/**
*
@ -50,18 +49,12 @@ import java.util.UUID;
*/
public class SurvivalOfTheFittest extends CardImpl {
private static final FilterCard filter = new FilterCard("a creature card");
static {
filter.add(new CardTypePredicate(CardType.CREATURE));
}
public SurvivalOfTheFittest(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{G}");
// {G}, Discard a creature card: Search your library for a creature card, reveal that card, and put it into your hand. Then shuffle your library.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new SearchLibraryPutInHandEffect(new TargetCardInLibrary(filter), true, true), new ColoredManaCost(ColoredManaSymbol.G));
ability.addCost(new DiscardTargetCost(new TargetCardInHand(filter)));
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new SearchLibraryPutInHandEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_CREATURE), true, true), new ColoredManaCost(ColoredManaSymbol.G));
ability.addCost(new DiscardTargetCost(new TargetCardInHand(StaticFilters.FILTER_CARD_CREATURE)));
this.addAbility(ability);
}

View file

@ -83,7 +83,7 @@ class TreasureMapEffect extends OneShotEffect {
this.staticText = "Scry 1. Put a landmark counter on {this}. "
+ "Then if there are three or more landmark counters on it, "
+ "remove those counters, transform {this}, and create "
+ "three colorless Treasure artifact tokens with \"{T}, Sacrifice this artifact: Add one mana of any color to your mana pool.";
+ "three colorless Treasure artifact tokens with \"{T}, Sacrifice this artifact: Add one mana of any color to your mana pool.\"";
}
TreasureMapEffect(final TreasureMapEffect effect) {

View file

@ -72,6 +72,7 @@ class PreventDamageToSourceByCardTypeEffect extends PreventAllDamageToSourceEffe
public PreventDamageToSourceByCardTypeEffect() {
super(Duration.WhileOnBattlefield);
staticText = "Prevent all damage that would be dealt to {this} by creatures";
}
public PreventDamageToSourceByCardTypeEffect(final PreventDamageToSourceByCardTypeEffect effect) {

View file

@ -68,7 +68,7 @@ public class VanquishersBanner extends CardImpl {
this.addAbility(new AsEntersBattlefieldAbility(new ChooseCreatureTypeEffect(Outcome.Benefit)));
// Creatures you control of the chosen type get +1/+1.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostAllOfChosenSubtypeEffect(1, 1, Duration.WhileOnBattlefield, filter, true)));
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostAllOfChosenSubtypeEffect(1, 1, Duration.WhileOnBattlefield, filter, false)));
// Whenever you cast a creature spell of the chosen type, draw a card.
this.addAbility(new DrawCardIfCreatureTypeAbility());

View file

@ -44,7 +44,7 @@ public class WarriorsHonor extends CardImpl {
public WarriorsHonor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{W}");
this.getSpellAbility().addEffect(new BoostControlledEffect(1, 1, Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURE, false));
this.getSpellAbility().addEffect(new BoostControlledEffect(1, 1, Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURES, false));
}
public WarriorsHonor(final WarriorsHonor card) {

View file

@ -58,7 +58,7 @@ public class WarriorsStand extends CardImpl {
this.addAbility(ability);
// Creatures you control get +2/+2 until end of turn.
this.getSpellAbility().addEffect(new BoostControlledEffect(2, 2, Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURE, false));
this.getSpellAbility().addEffect(new BoostControlledEffect(2, 2, Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURES, false));
}
public WarriorsStand(final WarriorsStand card) {

View file

@ -43,7 +43,7 @@ import mage.filter.common.FilterControlledPermanent;
*/
public class Wildfire extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledLandPermanent("land");
private static final FilterControlledPermanent filter = new FilterControlledLandPermanent("lands");
public Wildfire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{R}{R}");
@ -52,7 +52,7 @@ public class Wildfire extends CardImpl {
//Each player sacrifices four lands.
this.getSpellAbility().addEffect(new SacrificeAllEffect(4, filter));
//Wildfire deals 4 damage to each creature.
this.getSpellAbility().addEffect(new DamageAllEffect(4, StaticFilters.FILTER_PERMANENT_CREATURES));
this.getSpellAbility().addEffect(new DamageAllEffect(4, StaticFilters.FILTER_PERMANENT_CREATURE));
}
public Wildfire(final Wildfire card) {

View file

@ -70,7 +70,7 @@ public class YoseiTheMorningStar extends CardImpl {
this.addAbility(FlyingAbility.getInstance());
// When Yosei, the Morning Star dies, target player skips their next untap step. Tap up to five target permanents that player controls.
Ability ability = new DiesTriggeredAbility(new SkipNextPlayerUntapStepEffect("target "));
Ability ability = new DiesTriggeredAbility(new SkipNextPlayerUntapStepEffect("target"));
ability.addTarget(new TargetPlayer());
ability.addTarget(new YoseiTheMorningStarTarget());
ability.addEffect(new YoseiTheMorningStarTapEffect());

View file

@ -121,7 +121,7 @@ public class AlternativeCostSourceAbility extends StaticAbility implements Alter
private AlternativeCost2 convertToAlternativeCost(Cost cost) {
//return cost != null ? new AlternativeCost2Impl(null, cost.getText(), cost) : null;
return cost != null ? new AlternativeCost2Impl(null, "", cost) : null;
return cost != null ? new AlternativeCost2Impl(null, "", "", cost) : null;
}
@Override

View file

@ -47,7 +47,7 @@ public class PayLoyaltyCost extends CostImpl {
public PayLoyaltyCost(int amount) {
this.amount = amount;
this.text = Integer.toString(amount);
if (amount >= 0) {
if (amount > 0) {
this.text = '+' + this.text;
}
}

View file

@ -26,7 +26,7 @@ public class ChooseBasicLandTypeEffect extends OneShotEffect {
public ChooseBasicLandTypeEffect(Outcome outcome) {
super(outcome);
this.staticText = "Choose a basic land type";
this.staticText = "choose a basic land type";
}
public ChooseBasicLandTypeEffect(final ChooseBasicLandTypeEffect effect) {

View file

@ -158,7 +158,7 @@ public class RevealCardsFromLibraryUntilEffect extends OneShotEffect {
if (anyOrder) {
sb.append("any");
} else {
sb.append("random");
sb.append("a random");
}
sb.append(" order.");

View file

@ -182,7 +182,7 @@ public class SacrificeOpponentsUnlessPayEffect extends OneShotEffect{
private void setText() {
StringBuilder sb = new StringBuilder();
sb.append("Each opponent sacrifices ");
sb.append("each opponent sacrifices ");
if (amount.toString().equals("X")) {
sb.append(amount.toString());

View file

@ -58,11 +58,11 @@ public class BoostAllEffect extends ContinuousEffectImpl {
}
public BoostAllEffect(DynamicValue power, DynamicValue toughness, Duration duration) {
this(power, toughness, duration, new FilterCreaturePermanent("All creatures"), false);
this(power, toughness, duration, new FilterCreaturePermanent("all creatures"), false);
}
public BoostAllEffect(int power, int toughness, Duration duration, boolean excludeSource) {
this(power, toughness, duration, new FilterCreaturePermanent("All creatures"), excludeSource);
this(power, toughness, duration, new FilterCreaturePermanent("all creatures"), excludeSource);
}
public BoostAllEffect(int power, int toughness, Duration duration, FilterCreaturePermanent filter, boolean excludeSource) {

View file

@ -39,7 +39,7 @@ public class MenaceAbility extends StaticAbility { // Menace may not be a Single
@Override
public String getRule() {
String res = "Menace";
String res = "menace";
if (this.showAbilityHint) {
res += " <i>(This creature can't be blocked except by two or more creatures.)</i>";
}

View file

@ -39,7 +39,7 @@ import mage.abilities.keyword.FlyingAbility;
public class WaspToken extends TokenImpl {
public WaspToken() {
super("Wasp", "1/1 colorless Insect artifact creature token with flying");
super("Wasp", "1/1 colorless Insect artifact creature token with flying named Wasp");
cardType.add(CardType.ARTIFACT);
cardType.add(CardType.CREATURE);
this.subtype.add(SubType.INSECT);

View file

@ -50,7 +50,7 @@ public class TargetActivatedAbility extends TargetObject {
protected final FilterAbility filter;
public TargetActivatedAbility() {
this(new FilterAbility());
this(new FilterAbility("activated ability"));
}
public TargetActivatedAbility(FilterAbility filter) {