lots of text fixes

This commit is contained in:
xenohedron 2023-10-12 21:34:58 -04:00
parent 0081279d15
commit 2013895530
142 changed files with 261 additions and 403 deletions

View file

@ -31,8 +31,8 @@ public final class AbundantMaw extends CardImpl {
this.addAbility(new EmergeAbility(this, new ManaCostsImpl<>("{6}{B}")));
// When you cast Abundant Maw, target opponent loses 3 life and you gain 3 life.
Ability ability = new CastSourceTriggeredAbility(new GainLifeEffect(3));
ability.addEffect(new LoseLifeTargetEffect(3).concatBy("and"));
Ability ability = new CastSourceTriggeredAbility(new LoseLifeTargetEffect(3));
ability.addEffect(new GainLifeEffect(3).concatBy("and"));
ability.addTarget(new TargetOpponent());
this.addAbility(ability);
}

View file

@ -53,7 +53,7 @@ public final class AceFearlessRebel extends CardImpl {
ability,
new SacrificeTargetCost(StaticFilters.FILTER_CONTROLLED_PERMANENT_ARTIFACT_AN),
"Sacrifice an artifact?"
)).setTriggerPhrase("Nitro-9"));
)).withFlavorWord("Nitro-9"));
// Doctor's companion
this.addAbility(DoctorsCompanionAbility.getInstance());

View file

@ -14,7 +14,6 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Zone;
import mage.filter.FilterCard;
import mage.filter.StaticFilters;
import mage.target.common.TargetCardInHand;
@ -34,7 +33,7 @@ public final class AdvancedStitchwing extends CardImpl {
// Flying
this.addAbility(FlyingAbility.getInstance());
// {2}{U}, Discard two cards: Return Advanced Stitchwing from your graveyard to the battlefield tapped.
Ability ability = new SimpleActivatedAbility(Zone.GRAVEYARD, new ReturnSourceFromGraveyardToBattlefieldEffect(true), new ManaCostsImpl<>("{2}{U}"));
Ability ability = new SimpleActivatedAbility(Zone.GRAVEYARD, new ReturnSourceFromGraveyardToBattlefieldEffect(true, false), new ManaCostsImpl<>("{2}{U}"));
ability.addCost(new DiscardTargetCost(new TargetCardInHand(2, StaticFilters.FILTER_CARD_CARDS)));
this.addAbility(ability);
}

View file

@ -24,7 +24,7 @@ public final class Aeolipile extends CardImpl {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
// {1}, {tap}, Sacrifice Aeolipile: Aeolipile deals 2 damage to any target.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(2), new ManaCostsImpl<>("{1}"));
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(2, "it"), new ManaCostsImpl<>("{1}"));
ability.addCost(new TapSourceCost());
ability.addCost(new SacrificeSourceCost());
ability.addTarget(new TargetAnyTarget());

View file

@ -40,7 +40,7 @@ public final class AerieOuphes extends CardImpl {
// Sacrifice Aerie Ouphes: Aerie Ouphes deals damage equal to its power to target creature with flying.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(new SourcePermanentPowerCount())
.setText("{this} deals damage equal to its power to target creature with flying"), new SacrificeSourceCost());
.setText("it deals damage equal to its power to target creature with flying"), new SacrificeSourceCost());
ability.addTarget(new TargetCreaturePermanent(filter));
this.addAbility(ability);

View file

@ -32,7 +32,7 @@ public final class AncientHydra extends CardImpl {
// Fading 5
this.addAbility(new FadingAbility(5, this));
// {1}, Remove a fade counter from Ancient Hydra: Ancient Hydra deals 1 damage to any target.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(1), new ManaCostsImpl<>("{1}"));
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(1, "it"), new ManaCostsImpl<>("{1}"));
ability.addCost(new RemoveCountersSourceCost(CounterType.FADE.createInstance(1)));
ability.addTarget(new TargetAnyTarget());
this.addAbility(ability);

View file

@ -1,4 +1,3 @@
package mage.cards.a;
import java.util.UUID;
@ -25,7 +24,7 @@ import mage.filter.common.FilterControlledPermanent;
public final class AngelicOverseer extends CardImpl {
private static final String rule1 = "As long as you control a Human, {this} has hexproof";
private static final String rule2 = "and is indestructible";
private static final String rule2 = "and indestructible";
private static final FilterControlledPermanent filter = new FilterControlledPermanent("Human");
static {

View file

@ -43,7 +43,7 @@ public final class ArixmethesSlumberingIsle extends CardImpl {
// Arixmethes, Slumbering Isle enters the battlefield tapped with five slumber counters on it.
Ability ability = new EntersBattlefieldAbility(
new TapSourceEffect(true), false, null,
"{this} enters the battlefield tapped with five slumber counters on it", null
"{this} enters the battlefield tapped with five slumber counters on it.", null
);
ability.addEffect(new AddCountersSourceEffect(CounterType.SLUMBER.createInstance(5)));
this.addAbility(ability);

View file

@ -35,7 +35,7 @@ public final class ArmageddonClock extends CardImpl {
// {4}: Remove a doom counter from Armageddon Clock. Any player may activate this ability but only during any upkeep step.
ActivatedAbilityImpl ability = new ConditionalActivatedAbility(Zone.BATTLEFIELD,
new RemoveCounterSourceEffect(CounterType.DOOM.createInstance()), new ManaCostsImpl<>("{4}"), new IsStepCondition(PhaseStep.UPKEEP, false),
"Remove a doom counter from {this}. Any player may activate this ability but only during any upkeep step");
"{4}: Remove a doom counter from {this}. Any player may activate this ability but only during any upkeep step.");
ability.setMayActivate(TargetController.ANY);
this.addAbility(ability);

View file

@ -1,4 +1,3 @@
package mage.cards.a;
import java.util.UUID;
@ -13,7 +12,6 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.TargetController;
import mage.constants.Zone;
import mage.filter.common.FilterEnchantmentPermanent;
/**
@ -26,8 +24,9 @@ public final class AuraFlux extends CardImpl {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{U}");
// Other enchantments have "At the beginning of your upkeep, sacrifice this enchantment unless you pay {2}."
Ability gainedAbility = new BeginningOfUpkeepTriggeredAbility(new SacrificeSourceUnlessPaysEffect(new GenericManaCost(2)), TargetController.YOU, false);
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAllEffect(gainedAbility, Duration.WhileOnBattlefield, new FilterEnchantmentPermanent("enchantments"), true)));
Ability gainedAbility = new BeginningOfUpkeepTriggeredAbility(new SacrificeSourceUnlessPaysEffect(new GenericManaCost(2))
.setText("sacrifice this enchantment unless you pay {2}"), TargetController.YOU, false);
this.addAbility(new SimpleStaticAbility(new GainAbilityAllEffect(gainedAbility, Duration.WhileOnBattlefield, new FilterEnchantmentPermanent("enchantments"), true)));
}
private AuraFlux(final AuraFlux card) {

View file

@ -45,7 +45,7 @@ public final class AvatarOfFury extends CardImpl {
// If an opponent controls seven or more lands, Avatar of Fury costs {6} less to cast.
this.addAbility(new SimpleStaticAbility(Zone.ALL, new SpellCostReductionSourceEffect(6, AvatarOfFuryCondition.instance)
.setText("if an opponent controls seven or more lands, Avatar of Fury costs {6} less to cast"))
.setText("if an opponent controls seven or more lands, this spell costs {6} less to cast"))
.addHint(new ConditionHint(AvatarOfFuryCondition.instance, "Opponent controls seven or more lands"))
);

View file

@ -32,7 +32,7 @@ public final class AvatarOfHope extends CardImpl {
// If you have 3 or less life, Avatar of Hope costs {6} less to cast.
this.addAbility(new SimpleStaticAbility(Zone.ALL, new SpellCostReductionSourceEffect(6, AvatarOfHopeCondition.instance)
.setText("if you have 3 or less life, Avatar of Hope costs {6} less to cast"))
.setText("if you have 3 or less life, this spell costs {6} less to cast"))
.addHint(new ConditionHint(AvatarOfHopeCondition.instance))
);

View file

@ -27,7 +27,7 @@ public final class AvatarOfWill extends CardImpl {
// If an opponent has no cards in hand, Avatar of Will costs {6} less to cast.
this.addAbility(new SimpleStaticAbility(Zone.ALL, new SpellCostReductionSourceEffect(6, OpponentHasNoCardsInHandCondition.instance)
.setText("If an opponent has no cards in hand, Avatar of Will costs {6} less to cast")
.setText("If an opponent has no cards in hand, this spell costs {6} less to cast")
).addHint(new ConditionHint(OpponentHasNoCardsInHandCondition.instance, "Opponent has no cards in hand"))
);

View file

@ -34,7 +34,7 @@ public final class BarbarianRing extends CardImpl {
// Threshold - {R}, {T}, Sacrifice Barbarian Ring: Barbarian Ring deals 2 damage to any target. Activate this ability only if seven or more cards are in your graveyard.
Ability thresholdAbility = new ConditionalActivatedAbility(Zone.BATTLEFIELD,
new DamageTargetEffect(2),
new DamageTargetEffect(2, "it"),
new ManaCostsImpl<>("{R}"),
new CardsInControllerGraveyardCondition(7));
thresholdAbility.addCost(new TapSourceCost());

View file

@ -28,7 +28,7 @@ public final class BattlewiseHoplite extends CardImpl {
// Heroic - Whenever you cast a spell that targets Battlewise Hoplite, put a +1/+1 counter on Battlewise Hoplite, then scry 1.
Ability ability = new HeroicAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance()));
ability.addEffect(new ScryEffect(1, false));
ability.addEffect(new ScryEffect(1, false).concatBy(", then"));
this.addAbility(ability);
}

View file

@ -1,4 +1,3 @@
package mage.cards.b;
import java.util.UUID;
@ -10,10 +9,9 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.StaticFilters;
import mage.game.Game;
import mage.game.events.GameEvent;
import mage.game.events.GameEvent.EventType;
import mage.game.permanent.Permanent;
import mage.players.Player;
@ -27,7 +25,7 @@ public final class BenefactorsDraught extends CardImpl {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{G}");
// Untap all creatures.
this.getSpellAbility().addEffect(new UntapAllEffect(new FilterCreaturePermanent()));
this.getSpellAbility().addEffect(new UntapAllEffect(StaticFilters.FILTER_PERMANENT_CREATURES));
// Until end of turn, whenever a creature an opponent controls blocks, draw a card.
this.getSpellAbility().addEffect(new CreateDelayedTriggeredAbilityEffect(new BenefactorsDraughtTriggeredAbility()));

View file

@ -1,4 +1,3 @@
package mage.cards.b;
import java.util.UUID;
@ -40,7 +39,7 @@ public final class Bereavement extends CardImpl {
class BereavementTriggeredAbility extends TriggeredAbilityImpl {
public BereavementTriggeredAbility() {
BereavementTriggeredAbility() {
super(Zone.BATTLEFIELD, new DiscardTargetEffect(1));
}
@ -72,6 +71,6 @@ class BereavementTriggeredAbility extends TriggeredAbilityImpl {
@Override
public String getRule() {
return "Whenever a green creature dies, its controller discards a card";
return "Whenever a green creature dies, its controller discards a card.";
}
}

View file

@ -29,7 +29,7 @@ public final class BlightedGorge extends CardImpl {
// {4}{R}, {T}, Sacrifice Blighted Gorge: Blighted Gorge deals 2 damage to any target.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
new DamageTargetEffect(2),
new DamageTargetEffect(2, "it"),
new ManaCostsImpl<>("{4}{R}"));
ability.addCost(new TapSourceCost());
ability.addCost(new SacrificeSourceCost());

View file

@ -40,7 +40,7 @@ class BloodMoneyEffect extends OneShotEffect {
BloodMoneyEffect() {
super(Outcome.Benefit);
staticText = "destroy all creatures. For each nontoken creature destroyed this way, create a tapped Treasure token";
staticText = "destroy all creatures. For each nontoken creature destroyed this way, you create a tapped Treasure token";
}
private BloodMoneyEffect(final BloodMoneyEffect effect) {

View file

@ -43,7 +43,7 @@ public final class BoneDragon extends CardImpl {
// {3}{B}{B}, Exile seven other cards from your graveyard: Return Bone Dragon from your graveyard to the battlefield tapped.
Ability ability = new SimpleActivatedAbility(
Zone.GRAVEYARD,
new ReturnSourceFromGraveyardToBattlefieldEffect(true),
new ReturnSourceFromGraveyardToBattlefieldEffect(true, false),
new ManaCostsImpl<>("{3}{B}{B}")
);
ability.addCost(new ExileFromGraveCost(new TargetCardInYourGraveyard(7, filter)));

View file

@ -22,7 +22,7 @@ public final class BoneyardWurm extends CardImpl {
this.subtype.add(SubType.WURM);
// Boneyard Wurm's power and toughness are each equal to the number of creature cards in your graveyard.
DynamicValue value = new CardsInControllerGraveyardCount(StaticFilters.FILTER_CARD_CREATURE);
DynamicValue value = new CardsInControllerGraveyardCount(StaticFilters.FILTER_CARD_CREATURES);
this.addAbility(new SimpleStaticAbility(Zone.ALL, new SetBasePowerToughnessSourceEffect(value)));
}

View file

@ -4,15 +4,14 @@ import mage.abilities.Ability;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.common.SacrificeSourceCost;
import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.effects.common.DamageControllerEffect;
import mage.abilities.effects.common.FlipCoinEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Outcome;
import mage.constants.Zone;
import mage.game.Game;
import mage.game.permanent.token.DjinnToken;
import mage.players.Player;
import java.util.UUID;
@ -25,7 +24,10 @@ public final class BottleOfSuleiman extends CardImpl {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}");
// {1}, Sacrifice Bottle of Suleiman: Flip a coin. If you lose the flip, Bottle of Suleiman deals 5 damage to you. If you win the flip, create a 5/5 colorless Djinn artifact creature token with flying.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new BottleOfSuleimanEffect(), new GenericManaCost(1));
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new FlipCoinEffect(
new CreateTokenEffect(new DjinnToken()),
new DamageControllerEffect(5)
), new GenericManaCost(1));
ability.addCost(new SacrificeSourceCost());
this.addAbility(ability);
}
@ -39,37 +41,3 @@ public final class BottleOfSuleiman extends CardImpl {
return new BottleOfSuleiman(this);
}
}
class BottleOfSuleimanEffect extends OneShotEffect {
public BottleOfSuleimanEffect() {
super(Outcome.PutCreatureInPlay);
staticText = "Flip a coin. If you lose the flip, {this} deals 5 damage to you. If you win the flip, create a 5/5 colorless Djinn artifact creature token with flying.";
}
private BottleOfSuleimanEffect(final BottleOfSuleimanEffect effect) {
super(effect);
}
@Override
public BottleOfSuleimanEffect copy() {
return new BottleOfSuleimanEffect(this);
}
@Override
public boolean apply(Game game, Ability source) {
Player you = game.getPlayer(source.getControllerId());
if (you != null) {
if (you.flipCoin(source, game, true)) {
DjinnToken token = new DjinnToken();
token.putOntoBattlefield(1, game, source, source.getControllerId());
return true;
} else {
you.damage(5, source.getSourceId(), source, game);
return true;
}
}
return false;
}
}

View file

@ -42,7 +42,8 @@ public final class BrassTalonChimera extends CardImpl {
// Sacrifice Brass-Talon Chimera: Put a +2/+2 counter on target Chimera creature. It gains first strike. (This effect lasts indefinitely.)
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new AddCountersTargetEffect(CounterType.P2P2.createInstance()), new SacrificeSourceCost());
ability.addEffect(new GainAbilityTargetEffect(FirstStrikeAbility.getInstance(), Duration.WhileOnBattlefield).setText("It gains first strike. <i>(This effect lasts indefinitely.)</i>"));
ability.addEffect(new GainAbilityTargetEffect(FirstStrikeAbility.getInstance(), Duration.WhileOnBattlefield)
.setText("It gains first strike. <i>(This effect lasts indefinitely.)</i>"));
ability.addTarget(new TargetCreaturePermanent(filter));
addAbility(ability);
}

View file

@ -1,32 +1,24 @@
package mage.cards.b;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility;
import mage.abilities.effects.common.continuous.BoostSourceEffect;
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.common.FilterControlledCreaturePermanent;
import mage.filter.predicate.mageobject.AnotherPredicate;
import mage.filter.StaticFilters;
import java.util.UUID;
/**
*
* @author LevelX2
*/
public final class BronzebeakMoa extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("another creature under your control");
static {
filter.add(AnotherPredicate.instance);
}
public BronzebeakMoa (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{W}");
this.subtype.add(SubType.BIRD);
@ -35,8 +27,8 @@ public final class BronzebeakMoa extends CardImpl {
this.toughness = new MageInt(2);
// Whenever another creature enters the battlefield under your control, Bronzebeak Moa gets +3/+3 until end of turn.
this.addAbility(new EntersBattlefieldAllTriggeredAbility(Zone.BATTLEFIELD, new BoostSourceEffect(3,3, Duration.EndOfTurn),filter,false));
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(
new BoostSourceEffect(3,3, Duration.EndOfTurn), StaticFilters.FILTER_ANOTHER_CREATURE));
}
private BronzebeakMoa(final BronzebeakMoa card) {

View file

@ -1,27 +1,31 @@
package mage.cards.b;
import java.util.UUID;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.common.continuous.BoostControlledEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.Zone;
import mage.filter.common.FilterUntappedCreature;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.permanent.TappedPredicate;
import java.util.UUID;
/**
* @author noxx
*/
public final class BuildersBlessing extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("untapped creatures");
static {
filter.add(TappedPredicate.UNTAPPED);
}
public BuildersBlessing(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{W}");
// Untapped creatures you control get +0/+2.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostControlledEffect(0, 2, Duration.WhileOnBattlefield, new FilterUntappedCreature("untapped creatures"))));
this.addAbility(new SimpleStaticAbility(new BoostControlledEffect(0, 2, Duration.WhileOnBattlefield, filter)));
}
private BuildersBlessing(final BuildersBlessing card) {

View file

@ -1,4 +1,3 @@
package mage.cards.b;
import java.util.UUID;
@ -10,7 +9,6 @@ import mage.constants.CardType;
import mage.constants.Zone;
import mage.game.Game;
import mage.game.events.GameEvent;
import mage.game.events.GameEvent.EventType;
import mage.target.common.TargetAnyTarget;
/**
@ -38,12 +36,10 @@ public final class BurningVengeance extends CardImpl {
class BurningVengeanceOnCastAbility extends TriggeredAbilityImpl {
private static final String abilityText = "Whenever you cast a spell from your graveyard, {this} deals 2 damage to any target";
BurningVengeanceOnCastAbility() {
super(Zone.BATTLEFIELD, new DamageTargetEffect(2), false);
TargetAnyTarget target = new TargetAnyTarget();
this.addTarget(target);
this.addTarget(new TargetAnyTarget());
setTriggerPhrase("Whenever you cast a spell from your graveyard, ");
}
private BurningVengeanceOnCastAbility(final BurningVengeanceOnCastAbility ability) {
@ -65,8 +61,4 @@ class BurningVengeanceOnCastAbility extends TriggeredAbilityImpl {
return new BurningVengeanceOnCastAbility(this);
}
@Override
public String getRule() {
return abilityText;
}
}

View file

@ -1,29 +1,33 @@
package mage.cards.c;
import java.util.UUID;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.common.continuous.BoostControlledEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.Zone;
import mage.filter.common.FilterUntappedCreature;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.permanent.TappedPredicate;
import java.util.UUID;
/**
*
* @author KholdFuzion
*/
public final class Castle extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("untapped creatures");
static {
filter.add(TappedPredicate.UNTAPPED);
}
public Castle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{W}");
// 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(new BoostControlledEffect(0, 2, Duration.WhileOnBattlefield, filter)));
}
private Castle(final Castle card) {

View file

@ -42,7 +42,7 @@ public final class ChamberOfManipulation extends CardImpl {
controlAbility.addTarget(new TargetCreaturePermanent());
controlAbility.addCost(new DiscardTargetCost(new TargetCardInHand()));
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(controlAbility, AttachmentType.AURA,
Duration.WhileOnBattlefield, "Enchanted land has \"{t}, Discard a card: Gain control of target creature until end of turn.\"")));
Duration.WhileOnBattlefield, "Enchanted land has \"{T}, Discard a card: Gain control of target creature until end of turn.\"")));
}
private ChamberOfManipulation(final ChamberOfManipulation card) {

View file

@ -31,7 +31,7 @@ public final class CinderElemental extends CardImpl {
this.toughness = new MageInt(2);
// {X}{R}, {tap}, Sacrifice Cinder Elemental: Cinder Elemental deals X damage to any target.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(ManacostVariableValue.REGULAR), new ManaCostsImpl<>("{X}{R}"));
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(ManacostVariableValue.REGULAR, "it"), new ManaCostsImpl<>("{X}{R}"));
ability.addCost(new TapSourceCost());
ability.addCost(new SacrificeSourceCost());
ability.addTarget(new TargetAnyTarget());

View file

@ -43,7 +43,8 @@ public final class ClaimFame extends SplitCard {
// Aftermath
getRightHalfCard().addAbility(new AftermathAbility().setRuleAtTheTop(true));
// Target creature gets +2/+0 and gains haste until end of turn.
getRightHalfCard().getSpellAbility().addEffect(new BoostTargetEffect(2, 0, Duration.EndOfTurn));
getRightHalfCard().getSpellAbility().addEffect(new BoostTargetEffect(2, 0, Duration.EndOfTurn)
.setText("target creature gets +2/+0"));
getRightHalfCard().getSpellAbility().addEffect(new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.EndOfTurn)
.setText("and gains haste until end of turn"));
getRightHalfCard().getSpellAbility().addTarget(new TargetCreaturePermanent());

View file

@ -32,7 +32,7 @@ public final class CoercivePortal extends CardImpl {
false, false, "<i>Will of the council</i> &mdash; " +
"At the beginning of your upkeep, starting with you, each player votes for carnage or homage. " +
"If carnage gets more votes, sacrifice {this} and destroy all nonland permanents. " +
"If homage gets more votes or the vote is tied, draw a card"
"If homage gets more votes or the vote is tied, draw a card."
));
}

View file

@ -14,7 +14,6 @@ import mage.cards.CardSetInfo;
import mage.constants.*;
import mage.game.Game;
import mage.game.events.GameEvent;
import mage.game.events.GameEvent.EventType;
import mage.game.permanent.Permanent;
import mage.target.TargetPermanent;
import mage.target.common.TargetLandPermanent;
@ -38,7 +37,7 @@ public final 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, Duration.WhileOnBattlefield, "Enchanted land is indestructible"));
Ability ability2 = new SimpleStaticAbility(new GainAbilityAttachedEffect(IndestructibleAbility.getInstance(), AttachmentType.AURA, Duration.WhileOnBattlefield, "Enchanted land has indestructible"));
ability2.addEffect(new ConsecrateLandRuleEffect());
this.addAbility(ability2);
}

View file

@ -30,7 +30,7 @@ public final class CracklingTriton extends CardImpl {
this.toughness = new MageInt(3);
// {2}{R}, Sacrifice Crackling Triton: Crackling Triton deals 2 damage to any target.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(2), new ManaCostsImpl<>("{2}{R}"));
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(2, "it"), new ManaCostsImpl<>("{2}{R}"));
ability.addCost(new SacrificeSourceCost());
ability.addTarget(new TargetAnyTarget());
this.addAbility(ability);

View file

@ -32,7 +32,7 @@ public final class CurseOfOblivion extends CardImpl {
// At the beginning of enchanted player's upkeep, that player exiles two cards from their graveyard.
this.addAbility(new BeginningOfUpkeepTriggeredAbility(new ExileFromZoneTargetEffect(
Zone.GRAVEYARD, StaticFilters.FILTER_CARD_CARDS, 2, false
).setText("that player exiles two cards from their graveyard"), TargetController.ENCHANTED, false));
), TargetController.ENCHANTED, false));
}
private CurseOfOblivion(final CurseOfOblivion card) {

View file

@ -55,7 +55,7 @@ class CurseOfVitalityEffect extends OneShotEffect {
CurseOfVitalityEffect() {
super(Outcome.Benefit);
this.staticText = "gain 2 life. Each opponent attacking that player does the same.";
this.staticText = "you gain 2 life. Each opponent attacking that player does the same.";
}
private CurseOfVitalityEffect(final CurseOfVitalityEffect effect) {

View file

@ -23,7 +23,7 @@ public final class CyclopeanMummy extends CardImpl {
this.toughness = new MageInt(1);
// When Cyclopean Mummy dies, exile it.
this.addAbility(new DiesSourceTriggeredAbility(new ExileSourceEffect()));
this.addAbility(new DiesSourceTriggeredAbility(new ExileSourceEffect().setText("exile it")));
}
private CyclopeanMummy(final CyclopeanMummy card) {

View file

@ -1,5 +1,3 @@
package mage.cards.d;
import java.util.UUID;
@ -27,8 +25,9 @@ public final class DecimatorWeb extends CardImpl {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new LoseLifeTargetEffect(2), new ManaCostsImpl<>("{4}"));
ability.addCost(new TapSourceCost());
ability.addEffect(new AddCountersTargetEffect(CounterType.POISON.createInstance()));
ability.addEffect(new MillCardsTargetEffect(6));
ability.addEffect(new AddCountersTargetEffect(CounterType.POISON.createInstance())
.setText(", gets a poison counter"));
ability.addEffect(new MillCardsTargetEffect(6).setText(", then mills six cards"));
ability.addTarget(new TargetOpponent());
this.addAbility(ability);
}

View file

@ -14,11 +14,11 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.Outcome;
import mage.counters.CounterType;
import mage.game.Game;
import mage.game.events.GameEvent;
import mage.target.common.TargetControlledCreaturePermanent;
import mage.target.common.TargetCreaturePermanent;
import java.util.UUID;
@ -41,7 +41,7 @@ public final class DelifsCube extends CardImpl {
// {2}, Remove a cube counter from Delif's Cube: Regenerate target creature.
ability = new SimpleActivatedAbility(new RegenerateTargetEffect(), new GenericManaCost(2));
ability.addCost(new RemoveCountersSourceCost(CounterType.CUBE.createInstance()));
ability.addTarget(new TargetControlledCreaturePermanent());
ability.addTarget(new TargetCreaturePermanent());
this.addAbility(ability);
}

View file

@ -1,4 +1,3 @@
package mage.cards.d;
import mage.MageInt;
@ -25,7 +24,7 @@ import java.util.UUID;
* @author noxx
*/
public final class DevoutChaplain extends CardImpl {
private static final FilterControlledPermanent humanFilter = new FilterControlledPermanent("untapped Human you control");
private static final FilterControlledPermanent humanFilter = new FilterControlledPermanent("untapped Humans you control");
static {
humanFilter.add(TappedPredicate.UNTAPPED);

View file

@ -32,7 +32,7 @@ public final class DivebomberGriffin extends CardImpl {
this.addAbility(FlyingAbility.getInstance());
// {tap}, Sacrifice Divebomber Griffin: Divebomber Griffin deals 3 damage to target attacking or blocking creature.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(3), new TapSourceCost());
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(3, "it"), new TapSourceCost());
ability.addCost(new SacrificeSourceCost());
ability.addTarget(new TargetCreaturePermanent(new FilterAttackingOrBlockingCreature()));
this.addAbility(ability);

View file

@ -56,7 +56,7 @@ class DoomfallEffect extends OneShotEffect {
public DoomfallEffect() {
super(Outcome.Exile);
this.staticText = "target player exiles a creature they control";
this.staticText = "target opponent exiles a creature they control";
}
private DoomfallEffect(final DoomfallEffect effect) {

View file

@ -23,7 +23,7 @@ import java.util.UUID;
public final class EarlOfSquirrel extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Creature tokens you control");
private static final FilterCreaturePermanent filter2 = new FilterCreaturePermanent("Squirrels you control");
private static final FilterCreaturePermanent filter2 = new FilterCreaturePermanent("Squirrels");
static {
filter.add(TokenPredicate.TRUE);

View file

@ -15,7 +15,6 @@ import mage.constants.Zone;
import mage.game.Game;
import mage.game.events.DamagedPlayerEvent;
import mage.game.events.GameEvent;
import mage.game.events.GameEvent.EventType;
import mage.target.targetpointer.FixedTarget;
/**
@ -80,6 +79,6 @@ class EdricSpymasterOfTrestTriggeredAbility extends TriggeredAbilityImpl {
@Override
public String getRule() {
return "Whenever a creature deals combat damage to one of your opponents, its controller may draw a card";
return "Whenever a creature deals combat damage to one of your opponents, its controller may draw a card.";
}
}

View file

@ -6,7 +6,6 @@ import mage.abilities.effects.common.PreventAllDamageToAllEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
import mage.filter.StaticFilters;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.permanent.TokenPredicate;
@ -34,7 +33,7 @@ public final class EmmaraTandris extends CardImpl {
this.toughness = new MageInt(7);
// Prevent all damage that would be dealt to creature tokens you control.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new PreventAllDamageToAllEffect(Duration.WhileOnBattlefield, StaticFilters.FILTER_CREATURE_TOKENS)));
this.addAbility(new SimpleStaticAbility(new PreventAllDamageToAllEffect(Duration.WhileOnBattlefield, filter)));
}
private EmmaraTandris(final EmmaraTandris card) {

View file

@ -45,7 +45,7 @@ class EnterTheGodEternalsEffect extends OneShotEffect {
EnterTheGodEternalsEffect() {
super(Outcome.Benefit);
staticText = "{this} deals 4 damage to target creature and you gain life equal to the damage dealt this way. "
+ "Target player mills four cards. Amass 4.";
+ "Target player mills four cards. Amass Zombies 4.";
}
private EnterTheGodEternalsEffect(final EnterTheGodEternalsEffect effect) {

View file

@ -40,7 +40,7 @@ public final class FaerieNoble extends CardImpl {
// Other Faerie creatures you control get +0/+1.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostControlledEffect(0, 1, Duration.WhileOnBattlefield, filter, true)));
// {tap}: Other Faerie creatures you control get +1/+0 until end of turn.
Effect effect = new BoostControlledEffect(1, 0, Duration.WhileOnBattlefield, filter, true);
Effect effect = new BoostControlledEffect(1, 0, Duration.EndOfTurn, filter, true);
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, effect, new TapSourceCost());
this.addAbility(ability);
}

View file

@ -1,4 +1,3 @@
package mage.cards.f;
import java.util.UUID;
@ -54,7 +53,7 @@ class FatalMutationAbility extends TriggeredAbilityImpl {
public FatalMutationAbility(Effect effect) {
super(Zone.BATTLEFIELD, effect, false);
setTriggerPhrase("Whenever enchanted creature is turned face up, ");
setTriggerPhrase("When enchanted creature is turned face up, ");
}
private FatalMutationAbility(final FatalMutationAbility ability) {
@ -81,4 +80,3 @@ class FatalMutationAbility extends TriggeredAbilityImpl {
}
}

View file

@ -1,25 +1,24 @@
package mage.cards.f;
import java.util.UUID;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.common.continuous.BoostControlledEffect;
import mage.abilities.effects.common.continuous.BoostAllEffect;
import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.Zone;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.predicate.mageobject.AbilityPredicate;
import java.util.UUID;
/**
*
* @author noxx
*/
public final class FavorableWinds extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Creatures you control with flying");
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("creatures you control with flying");
static {
filter.add(new AbilityPredicate(FlyingAbility.class));
@ -29,7 +28,7 @@ public final class FavorableWinds extends CardImpl {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{U}");
// Creatures you control with flying get +1/+1.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostControlledEffect(1, 1, Duration.WhileOnBattlefield, filter, false)));
this.addAbility(new SimpleStaticAbility(new BoostAllEffect(1, 1, Duration.WhileOnBattlefield, filter, false)));
}
private FavorableWinds(final FavorableWinds card) {

View file

@ -37,7 +37,7 @@ public final class FiveAlarmFire extends CardImpl {
//Whenever a creature you control deals combat damage, put a blaze counter on Five-Alarm Fire.
this.addAbility(new FiveAlarmFireTriggeredAbility());
//Remove five blaze counters from Five-Alarm Fire: Five-Alarm Fire deals 5 damage to any target.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(5), new RemoveCountersSourceCost(CounterType.BLAZE.createInstance(5)));
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(5, "it"), new RemoveCountersSourceCost(CounterType.BLAZE.createInstance(5)));
ability.addTarget(new TargetAnyTarget());
this.addAbility(ability);
}

View file

@ -1,4 +1,3 @@
package mage.cards.f;
import java.util.UUID;
@ -24,9 +23,8 @@ public final class FleetfeatherSandals extends CardImpl {
this.subtype.add(SubType.EQUIPMENT);
// Equipped creature has flying and haste.
Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD,
new GainAbilityAttachedEffect(FlyingAbility.getInstance(), AttachmentType.AURA, Duration.WhileInGraveyard));
ability.addEffect(new GainAbilityAttachedEffect(HasteAbility.getInstance(), AttachmentType.AURA, Duration.WhileInGraveyard));
Ability ability = new SimpleStaticAbility(new GainAbilityAttachedEffect(FlyingAbility.getInstance(), AttachmentType.EQUIPMENT));
ability.addEffect(new GainAbilityAttachedEffect(HasteAbility.getInstance(), AttachmentType.EQUIPMENT).setText("and haste"));
this.addAbility(ability);
// Equip {2}
this.addAbility(new EquipAbility(Outcome.AddAbility, new GenericManaCost(2)));

View file

@ -36,7 +36,7 @@ public final class FlitterstepEidolon extends CardImpl {
this.addAbility(new CantBeBlockedSourceAbility());
// Enchanted creature gets +1/+1 and can't be blocked.
Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(1,1, Duration.WhileOnBattlefield));
ability.addEffect(new CantBeBlockedAttachedEffect(AttachmentType.AURA));
ability.addEffect(new CantBeBlockedAttachedEffect(AttachmentType.AURA).setText("and can't be blocked"));
this.addAbility(ability);
}

View file

@ -23,7 +23,7 @@ public final class FontOfIre extends CardImpl {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{R}");
// {3}{R}, Sacrifice Font of Ire: Font of Ire deals 5 damage to target player.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(5), new ManaCostsImpl<>("{3}{R}"));
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(5, "it"), new ManaCostsImpl<>("{3}{R}"));
ability.addCost(new SacrificeSourceCost());
ability.addTarget(new TargetPlayerOrPlaneswalker());
this.addAbility(ability);

View file

@ -34,9 +34,9 @@ public final class FromUnderTheFloorboards extends CardImpl {
// If From Under the Floorboards's madness cost was paid, instead create X of those tokens tapped and you gain X life.
DynamicValue xValue = new FromUnderTheFloorboardsManacostVariableValue();
Effect effect = new CreateTokenEffect(new ZombieToken(), xValue, true, false);
effect.setText("Create three 2/2 black Zombie creature tokens tapped and you gain 3 life. If {this} madness cost was paid, instead create X of those tokens tapped and you gain X life");
effect.setText("Create three tapped 2/2 black Zombie creature tokens and you gain 3 life. If this spell's madness cost was paid, instead create X of those tokens");
this.getSpellAbility().addEffect(effect);
this.getSpellAbility().addEffect(new GainLifeEffect(xValue));
this.getSpellAbility().addEffect(new GainLifeEffect(xValue).concatBy("and"));
}
private FromUnderTheFloorboards(final FromUnderTheFloorboards card) {

View file

@ -1,4 +1,3 @@
package mage.cards.g;
import java.util.UUID;
@ -21,7 +20,9 @@ public final class GerrardsBattleCry extends CardImpl {
public GerrardsBattleCry(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{W}");
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostControlledEffect(1, 1, Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURE, false), new ManaCostsImpl<>("{2}{W}")));
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD,
new BoostControlledEffect(1, 1, Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURES, false),
new ManaCostsImpl<>("{2}{W}")));
}
private GerrardsBattleCry(final GerrardsBattleCry card) {

View file

@ -24,7 +24,6 @@ import mage.players.Player;
import mage.target.TargetPermanent;
import mage.target.common.TargetControlledPermanent;
import mage.target.common.TargetCreaturePermanent;
import mage.target.targetadjustment.TargetAdjuster;
import java.util.UUID;
@ -51,7 +50,7 @@ public final class GiftOfDoom extends CardImpl {
));
ability2.addEffect(new GainAbilityAttachedEffect(
IndestructibleAbility.getInstance(), AttachmentType.AURA
));
).setText("and indestructible"));
this.addAbility(ability2);
// MorphSacrifice another creature.

View file

@ -1,4 +1,3 @@
package mage.cards.g;
import mage.abilities.Ability;
@ -18,7 +17,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
import mage.counters.CounterType;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.StaticFilters;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.target.TargetPermanent;
@ -44,8 +43,7 @@ public final class GleamOfAuthority extends CardImpl {
this.addAbility(ability);
// Enchanted creature gets +1/+1 for each +1/+1 counter on other creatures you control
DynamicValue amount = new CountersOnControlledCount();
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(amount, amount, Duration.WhileOnBattlefield)
this.addAbility(new SimpleStaticAbility(new BoostEnchantedEffect(CountersOnControlledCount.instance, CountersOnControlledCount.instance)
.setText("Enchanted creature gets +1/+1 for each +1/+1 counter on other creatures you control.")
));
@ -53,7 +51,7 @@ public final class GleamOfAuthority extends CardImpl {
ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(VigilanceAbility.getInstance(), AttachmentType.AURA));
Ability gainedAbility = new SimpleActivatedAbility(Zone.BATTLEFIELD, new BolsterEffect(1), new ManaCostsImpl<>("{W}"));
gainedAbility.addCost(new TapSourceCost());
ability.addEffect(new GainAbilityAttachedEffect(gainedAbility, AttachmentType.AURA).setText("and \"{W}, {T}: Bloster 1.\""));
ability.addEffect(new GainAbilityAttachedEffect(gainedAbility, AttachmentType.AURA).setText("and \"{W}, {T}: Bolster 1.\""));
this.addAbility(ability);
}
@ -67,22 +65,14 @@ public final class GleamOfAuthority extends CardImpl {
}
}
class CountersOnControlledCount implements DynamicValue {
static FilterCreaturePermanent filter = new FilterCreaturePermanent();
CountersOnControlledCount() {
}
private CountersOnControlledCount(final CountersOnControlledCount dynamicValue) {
super();
}
enum CountersOnControlledCount implements DynamicValue {
instance;
@Override
public int calculate(Game game, Ability sourceAbility, Effect effect) {
int count = 0;
Permanent enchantment = game.getPermanent(sourceAbility.getSourceId());
for (Permanent permanent : game.getState().getBattlefield().getAllActivePermanents(filter, sourceAbility.getControllerId(), game)) {
for (Permanent permanent : game.getBattlefield().getAllActivePermanents(StaticFilters.FILTER_PERMANENT_CREATURE, sourceAbility.getControllerId(), game)) {
if (!permanent.getId().equals(enchantment.getAttachedTo())) {
count += permanent.getCounters(game).getCount(CounterType.P1P1);
}
@ -92,7 +82,7 @@ class CountersOnControlledCount implements DynamicValue {
@Override
public CountersOnControlledCount copy() {
return new CountersOnControlledCount(this);
return instance;
}
@Override

View file

@ -1,4 +1,3 @@
package mage.cards.g;
import java.util.UUID;
@ -25,7 +24,7 @@ public final class Goblinslide extends CardImpl {
this.addAbility(new SpellCastControllerTriggeredAbility(new DoIfCostPaid(
new CreateTokenEffect(new GoblinToken(true)),
new GenericManaCost(1)),
StaticFilters.FILTER_SPELL_NON_CREATURE,
StaticFilters.FILTER_SPELL_A_NON_CREATURE,
false
));
}

View file

@ -20,7 +20,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*/
public final class GodPharaohsFaithful extends CardImpl {
private static final FilterSpell filter = new FilterSpell("a blue, black or red spell");
private static final FilterSpell filter = new FilterSpell("a blue, black, or red spell");
static {
filter.add(Predicates.or(new ColorPredicate(ObjectColor.BLUE), new ColorPredicate(ObjectColor.BLACK), new ColorPredicate(ObjectColor.RED)));
}

View file

@ -109,6 +109,6 @@ class GroundPounderTriggeredAbility extends TriggeredAbilityImpl {
@Override
public String getRule() {
return "Whenever you roll a 5 or higher on a die, {this} gains trample until end of turn";
return "Whenever you roll a 5 or higher on a die, {this} gains trample until end of turn.";
}
}

View file

@ -1,4 +1,3 @@
package mage.cards.g;
import java.util.UUID;
@ -12,7 +11,6 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.TargetController;
import mage.constants.Zone;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.permanent.AttackingPredicate;
@ -33,10 +31,9 @@ public final class GruulWarChant extends CardImpl {
// Attacking creatures you control get +1/+0 and have menace. (They can't be blocked except by two or more creatures.)
Ability ability = new SimpleStaticAbility(
Zone.BATTLEFIELD,
new GainAbilityAllEffect(new MenaceAbility(false), Duration.WhileOnBattlefield, filter));
ability.addEffect(new BoostAllEffect(1,0, Duration.WhileOnBattlefield, filter, false));
Ability ability = new SimpleStaticAbility(new BoostAllEffect(1,0, Duration.WhileOnBattlefield, filter, false));
ability.addEffect(new GainAbilityAllEffect(new MenaceAbility(false), Duration.WhileOnBattlefield, filter)
.setText("and have menace"));
this.addAbility(ability);
}

View file

@ -1,12 +1,10 @@
package mage.cards.h;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.common.SpellCastControllerTriggeredAbility;
import mage.abilities.effects.common.continuous.BoostControlledEffect;
import mage.abilities.effects.common.continuous.BoostAllEffect;
import mage.abilities.effects.common.counter.AddPoisonCounterTargetEffect;
import mage.abilities.keyword.InfectAbility;
import mage.cards.CardImpl;
@ -14,9 +12,8 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Duration;
import mage.constants.Zone;
import mage.filter.FilterSpell;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.predicate.mageobject.AbilityPredicate;
import mage.target.TargetPlayer;
@ -26,7 +23,7 @@ import mage.target.TargetPlayer;
*/
public final class HandOfThePraetors extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures with infect");
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("creatures you control with infect");
private static final FilterSpell filterSpell = new FilterSpell("a creature spell with infect");
static {
@ -44,7 +41,7 @@ public final class HandOfThePraetors extends CardImpl {
this.toughness = new MageInt(2);
this.addAbility(InfectAbility.getInstance());
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostControlledEffect(1, 1, Duration.WhileOnBattlefield, filter, true)));
this.addAbility(new SimpleStaticAbility(new BoostAllEffect(1, 1, Duration.WhileOnBattlefield, filter, true)));
SpellCastControllerTriggeredAbility ability = new SpellCastControllerTriggeredAbility(new AddPoisonCounterTargetEffect(1), filterSpell, false);
ability.addTarget(new TargetPlayer());
this.addAbility(ability);

View file

@ -1,4 +1,3 @@
package mage.cards.h;
import java.util.UUID;
@ -18,10 +17,9 @@ public final class HarrowingJourney extends CardImpl {
public HarrowingJourney(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{B}");
// Target player draws three cards and loses 3 life.
this.getSpellAbility().addEffect(new DrawCardTargetEffect(3));
this.getSpellAbility().addEffect(new LoseLifeTargetEffect(3));
this.getSpellAbility().addEffect(new LoseLifeTargetEffect(3).setText("and loses 3 life"));
this.getSpellAbility().addTarget(new TargetPlayer());
}

View file

@ -1,5 +1,3 @@
package mage.cards.h;
import java.util.UUID;
@ -66,7 +64,7 @@ class HiredTorturerEffect extends OneShotEffect {
public HiredTorturerEffect() {
super(Outcome.Detriment);
staticText = "and reveals a card at random from their hand";
staticText = ", then reveals a card at random from their hand";
}
private HiredTorturerEffect(final HiredTorturerEffect effect) {

View file

@ -1,4 +1,3 @@
package mage.cards.h;
import java.util.UUID;
@ -18,10 +17,9 @@ public final class HorrifyingRevelation extends CardImpl {
public HorrifyingRevelation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{B}");
this.getSpellAbility().addTarget(new TargetPlayer());
this.getSpellAbility().addEffect(new DiscardTargetEffect(1));
this.getSpellAbility().addEffect(new MillCardsTargetEffect(1));
this.getSpellAbility().addEffect(new MillCardsTargetEffect(1).setText(", then mills a card"));
}
private HorrifyingRevelation(final HorrifyingRevelation card) {

View file

@ -35,7 +35,7 @@ public final class IcatianJavelineers extends CardImpl {
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.JAVELIN.createInstance()), "with a javelin counter on it"));
// {tap}, Remove a javelin counter from Icatian Javelineers: Icatian Javelineers deals 1 damage to any target.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(1), new TapSourceCost());
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(1, "it"), new TapSourceCost());
ability.addCost(new RemoveCountersSourceCost(CounterType.JAVELIN.createInstance()));
ability.addTarget(new TargetAnyTarget());
this.addAbility(ability);

View file

@ -17,7 +17,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*/
public final class Insight extends CardImpl {
private static final FilterSpell filter = new FilterSpell("green spell");
private static final FilterSpell filter = new FilterSpell("a green spell");
static {
filter.add(new ColorPredicate(ObjectColor.GREEN));
@ -28,7 +28,7 @@ public final class Insight extends CardImpl {
// Whenever an opponent casts a green spell, you draw a card.
this.addAbility(new SpellCastOpponentTriggeredAbility(new DrawCardSourceControllerEffect(1), filter, false));
this.addAbility(new SpellCastOpponentTriggeredAbility(new DrawCardSourceControllerEffect(1, "you"), filter, false));
}
private Insight(final Insight card) {

View file

@ -1,4 +1,3 @@
package mage.cards.i;
import mage.MageInt;
@ -26,7 +25,7 @@ import java.util.UUID;
*/
public final class IronHeartChimera 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(SubType.CHIMERA.getPredicate());
@ -44,7 +43,8 @@ public final class IronHeartChimera extends CardImpl {
// Sacrifice Iron-Heart Chimera: Put a +2/+2 counter on target Chimera creature. It gains vigilance.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new AddCountersTargetEffect(CounterType.P2P2.createInstance()), new SacrificeSourceCost());
ability.addEffect(new GainAbilityTargetEffect(VigilanceAbility.getInstance(), Duration.WhileOnBattlefield));
ability.addEffect(new GainAbilityTargetEffect(VigilanceAbility.getInstance(), Duration.WhileOnBattlefield)
.setText("It gains vigilance. <i>(This effect lasts indefinitely.)</i>"));
ability.addTarget(new TargetCreaturePermanent(filter));
addAbility(ability);
}

View file

@ -1,7 +1,6 @@
package mage.cards.i;
import mage.abilities.Ability;
import mage.abilities.Mode;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.effects.OneShotEffect;
import mage.cards.CardImpl;
@ -42,11 +41,11 @@ class IronMaidenEffect extends OneShotEffect {
private IronMaidenEffect(final IronMaidenEffect effect) {
super(effect);
this.staticText = "Iron Maiden deals X damage to that player, where X is the number of cards in their hand minus 4";
}
public IronMaidenEffect() {
super(Outcome.Damage);
this.staticText = "{this} deals X damage to that player, where X is the number of cards in their hand minus 4";
}
@Override

View file

@ -1,4 +1,3 @@
package mage.cards.j;
import java.util.UUID;
@ -10,9 +9,9 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
import mage.counters.CounterType;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.predicate.mageobject.AnotherPredicate;
import mage.target.common.TargetCreaturePermanent;
import mage.target.TargetPermanent;
/**
*
@ -20,12 +19,10 @@ import mage.target.common.TargetCreaturePermanent;
*/
public final class JadeBearer extends CardImpl {
private static final FilterCreaturePermanent filterYourAnotherMerfolk = new FilterCreaturePermanent();
private static final FilterControlledCreaturePermanent filter =
new FilterControlledCreaturePermanent(SubType.MERFOLK, "another target Merfolk you control");
static {
filterYourAnotherMerfolk.add(AnotherPredicate.instance);
filterYourAnotherMerfolk.add(SubType.MERFOLK.getPredicate());
filterYourAnotherMerfolk.add(TargetController.YOU.getControllerPredicate());
filterYourAnotherMerfolk.setMessage("another " + SubType.MERFOLK.toString() + " you control");
filter.add(AnotherPredicate.instance);
}
public JadeBearer(UUID ownerId, CardSetInfo setInfo) {
@ -38,7 +35,7 @@ public final class JadeBearer extends CardImpl {
// When Jade Bearer enters the battlefield, put a +1/+1 counter on another target Merfolk you control.
Ability ability = new EntersBattlefieldTriggeredAbility(new AddCountersTargetEffect(CounterType.P1P1.createInstance()), false);
ability.addTarget(new TargetCreaturePermanent(filterYourAnotherMerfolk));
ability.addTarget(new TargetPermanent(filter));
this.addAbility(ability);
}
@ -50,4 +47,4 @@ public final class JadeBearer extends CardImpl {
public JadeBearer copy() {
return new JadeBearer(this);
}
}
}

View file

@ -28,7 +28,7 @@ public final class JujuBubble extends CardImpl {
// When you play a card, sacrifice Juju Bubble.
this.addAbility(new PlayCardTriggeredAbility(TargetController.YOU, Zone.BATTLEFIELD,
new SacrificeSourceEffect(), false));
new SacrificeSourceEffect(), false).setTriggerPhrase("When you play a card, "));
// {2}: You gain 1 life.
this.addAbility(new SimpleActivatedAbility(new GainLifeEffect(1), new GenericManaCost(2)));

View file

@ -1,4 +1,3 @@
package mage.cards.k;
import java.util.UUID;
@ -33,7 +32,7 @@ public final class KarplusanHound extends CardImpl {
Ability ability = new ConditionalInterveningIfTriggeredAbility(
new AttacksTriggeredAbility(new DamageTargetEffect(2), false),
new PermanentsOnTheBattlefieldCondition(filter),
"if you control a Chandra planeswalker, "
"Whenever {this} attacks, if you control a Chandra planeswalker, "
+ "this creature deals 2 damage to any target"
);
ability.addTarget(new TargetAnyTarget());

View file

@ -57,8 +57,7 @@ class KjeldoranEliteGuardEffect extends OneShotEffect {
KjeldoranEliteGuardEffect() {
super(Outcome.Neutral);
staticText = "Target creature gets +2/+2 until end of turn. "
+ "When that creature leaves the battlefield this turn, sacrifice Kjeldoran Elite Guard. "
+ "Activate only during combat.";
+ "When that creature leaves the battlefield this turn, sacrifice Kjeldoran Elite Guard.";
}
@Override

View file

@ -1,4 +1,3 @@
package mage.cards.l;
import mage.MageInt;
@ -44,7 +43,8 @@ public final class LeadBellyChimera extends CardImpl {
// Sacrifice Lead-Belly Chimera: Put a +2/+2 counter on target Chimera creature. It gains trample.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new AddCountersTargetEffect(CounterType.P2P2.createInstance()), new SacrificeSourceCost());
ability.addEffect(new GainAbilityTargetEffect(TrampleAbility.getInstance(), Duration.WhileOnBattlefield));
ability.addEffect(new GainAbilityTargetEffect(TrampleAbility.getInstance(), Duration.WhileOnBattlefield)
.setText("It gains trample. <i>(This effect lasts indefinitely.)</i>"));
ability.addTarget(new TargetCreaturePermanent(filter));
addAbility(ability);
}

View file

@ -29,7 +29,7 @@ import java.util.UUID;
*/
public final class LozhanDragonsLegacy extends CardImpl {
private static final FilterSpell filter = new FilterSpell("an Adventure spell or Dragon spell");
private static final FilterSpell filter = new FilterSpell("an Adventure or Dragon spell");
private static final FilterPermanentOrPlayer filter2
= new FilterAnyTarget("any target that isn't a commander");

View file

@ -1,4 +1,3 @@
package mage.cards.m;
import java.util.UUID;
@ -46,8 +45,7 @@ public final class MalakirSoothsayer extends CardImpl {
new TapSourceCost());
ability.setAbilityWord(AbilityWord.COHORT);
ability.addCost(new TapTargetCost(new TargetControlledCreaturePermanent(1, 1, filter, false)));
Effect effect = new LoseLifeSourceControllerEffect(1);
effect.setText("and you lose a life");
Effect effect = new LoseLifeSourceControllerEffect(1).concatBy("and");
ability.addEffect(effect);
this.addAbility(ability);

View file

@ -32,7 +32,7 @@ import mage.game.permanent.Permanent;
*/
public final class ManorGargoyle extends CardImpl {
private static final String rule = "{this} is indestructible as long as it has defender.";
private static final String rule = "{this} has indestructible as long as it has defender.";
public ManorGargoyle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{5}");

View file

@ -48,7 +48,7 @@ public final class MiirymSentinelWyrm extends CardImpl {
Zone.BATTLEFIELD, new CreateTokenCopyTargetEffect(true).setIsntLegendary(true),
filter, false, SetTargetPointer.PERMANENT, "Whenever another nontoken Dragon " +
"enters the battlefield under your control, create a token that's a copy of it, " +
"except the token isn't legendary if that Dragon is legendary."
"except the token isn't legendary."
));
}

View file

@ -34,7 +34,7 @@ public final class MizziumTank extends CardImpl {
// Whenever you cast a noncreature spell, Mizzium Tank becomes an artifact creature and gets +1/+1 until end of turn.
Ability ability = new SpellCastControllerTriggeredAbility(new AddCardTypeSourceEffect(
Duration.EndOfTurn, CardType.ARTIFACT, CardType.CREATURE
).setText("{this} becomes an artifact creature"), StaticFilters.FILTER_SPELL_NON_CREATURE, false);
).setText("{this} becomes an artifact creature"), StaticFilters.FILTER_SPELL_A_NON_CREATURE, false);
ability.addEffect(new BoostSourceEffect(
1, 1, Duration.EndOfTurn
).setText("and gets +1/+1 until end of turn"));

View file

@ -28,7 +28,7 @@ public final class MoggFanatic extends CardImpl {
this.toughness = new MageInt(1);
// Sacrifice Mogg Fanatic: Mogg Fanatic deals 1 damage to any target.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(1), new SacrificeSourceCost());
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(1, "it"), new SacrificeSourceCost());
ability.addTarget(new TargetAnyTarget());
this.addAbility(ability);
}

View file

@ -1,4 +1,3 @@
package mage.cards.m;
import java.util.UUID;
@ -32,7 +31,8 @@ public final class MortalWound extends CardImpl {
Ability ability = new EnchantAbility(auraTarget);
this.addAbility(ability);
// When enchanted creature is dealt damage, destroy it.
this.addAbility(new DealtDamageAttachedTriggeredAbility(new DestroyAttachedToEffect("it"), false));
this.addAbility(new DealtDamageAttachedTriggeredAbility(new DestroyAttachedToEffect("it"), false)
.setTriggerPhrase("When enchanted creature is dealt damage, "));
}
private MortalWound(final MortalWound card) {

View file

@ -22,7 +22,8 @@ public final class Mugging extends CardImpl {
// Mugging deals 2 damage to target creature. That creature can't block this turn.
this.getSpellAbility().addEffect(new DamageTargetEffect(2));
this.getSpellAbility().addEffect(new CantBlockTargetEffect(Duration.EndOfTurn));
this.getSpellAbility().addEffect(new CantBlockTargetEffect(Duration.EndOfTurn)
.setText("That creature can't block this turn"));
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
}

View file

@ -1,9 +1,8 @@
package mage.cards.m;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility;
import mage.abilities.effects.common.continuous.BoostSourceEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@ -33,7 +32,7 @@ public final class MummyParamount extends CardImpl {
this.toughness = new MageInt(2);
// Whenever another Zombie enters the battlefield under your control, Mummy Paramount gets +1/+1 until end of turn.
this.addAbility(new EntersBattlefieldAllTriggeredAbility(new BoostSourceEffect(1, 1, Duration.EndOfTurn), filter));
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(new BoostSourceEffect(1, 1, Duration.EndOfTurn), filter));
}
private MummyParamount(final MummyParamount card) {

View file

@ -26,7 +26,7 @@ public final class NissasRevelation extends CardImpl {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{5}{G}{G}");
// Scry 5, then reveal the top card of your library. If it's a creature card, you draw cards equal to its power and you gain life equal to its toughness.
this.getSpellAbility().addEffect(new ScryEffect(5));
this.getSpellAbility().addEffect(new ScryEffect(5, false));
this.getSpellAbility().addEffect(new NissasRevelationEffect());
}

View file

@ -69,7 +69,7 @@ public final class NoMercy extends CardImpl {
@Override
public String getRule() {
return "Whenever a creature deals damage to you, destroy it";
return "Whenever a creature deals damage to you, destroy it.";
}
}

View file

@ -36,7 +36,7 @@ public final class NoxiousGhoul extends CardImpl {
// Whenever Noxious Ghoul or another Zombie enters the battlefield, all non-Zombie creatures get -1/-1 until end of turn.
this.addAbility(new EntersBattlefieldThisOrAnotherTriggeredAbility(new BoostAllEffect(
-1, -1, Duration.EndOfTurn, filter, false
), filter2, false, true));
), filter2));
}
private NoxiousGhoul(final NoxiousGhoul card) {

View file

@ -1,4 +1,3 @@
package mage.cards.o;
import java.util.UUID;
@ -6,7 +5,6 @@ import mage.MageInt;
import mage.abilities.costs.common.ExertSourceCost;
import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.effects.mana.AddManaOfAnyColorEffect;
import mage.abilities.effects.mana.ManaEffect;
import mage.abilities.mana.AnyColorManaAbility;
import mage.abilities.mana.SimpleManaAbility;
import mage.cards.CardImpl;
@ -33,7 +31,7 @@ public final class OasisRitualist extends CardImpl {
this.addAbility(new AnyColorManaAbility());
// {T}, Exert Oasis Ritualist: Add two mana of any one color to your manna pool.
SimpleManaAbility ability = new SimpleManaAbility(Zone.BATTLEFIELD,
(ManaEffect) new AddManaOfAnyColorEffect(2).setText("Add two mana of any one color to your manna pool. <i> (An exerted creature won't untap during your next untap step.)</i>"),
new AddManaOfAnyColorEffect(2).setText("Add two mana of any one color. <i>(An exerted creature won't untap during your next untap step.)</i>"),
new TapSourceCost());
ability.addCost(new ExertSourceCost());
this.addAbility(ability);

View file

@ -41,9 +41,9 @@ public final class OketrasLastMercy extends CardImpl {
class OketrasLastMercyEffect extends OneShotEffect {
public OketrasLastMercyEffect() {
OketrasLastMercyEffect() {
super(Outcome.Benefit);
staticText = "Your life total becomes your starting life total";
staticText = "Your life total becomes equal to your starting life total";
}
private OketrasLastMercyEffect(final OketrasLastMercyEffect effect) {

View file

@ -41,8 +41,7 @@ public final class OraclesInsight extends CardImpl {
// Enchanted creature has "{T}: Scry 1, then draw a card."
ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new ScryEffect(1, false), new TapSourceCost());
Effect effect = new DrawCardSourceControllerEffect(1);
effect.setText("then draw a card");
Effect effect = new DrawCardSourceControllerEffect(1).concatBy(", then");
ability.addEffect(effect);
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(ability, AttachmentType.AURA, Duration.WhileOnBattlefield)));
}

View file

@ -28,7 +28,7 @@ public final class PainKami extends CardImpl {
this.power = new MageInt(2);
this.toughness = new MageInt(2);
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(ManacostVariableValue.REGULAR), new ManaCostsImpl<>("{X}{R}"));
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(ManacostVariableValue.REGULAR, "it"), new ManaCostsImpl<>("{X}{R}"));
ability.addCost(new SacrificeSourceCost());
ability.addTarget(new TargetCreaturePermanent());
this.addAbility(ability);

View file

@ -22,7 +22,7 @@ public final class PharikasCure extends CardImpl {
// Pharika's Cure deals 2 damage to target creature and you gain 2 life.
this.getSpellAbility().addEffect(new DamageTargetEffect(2));
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
this.getSpellAbility().addEffect(new GainLifeEffect(2));
this.getSpellAbility().addEffect(new GainLifeEffect(2).concatBy("and"));
}
private PharikasCure(final PharikasCure card) {

View file

@ -36,7 +36,7 @@ public final class PharikasMender extends CardImpl {
this.toughness = new MageInt(3);
// When Pharika's Mender enters the battlefield, you may return target creature or enchantment card from your graveyard to your hand.
Ability ability = new EntersBattlefieldTriggeredAbility(new ReturnFromGraveyardToHandTargetEffect());
Ability ability = new EntersBattlefieldTriggeredAbility(new ReturnFromGraveyardToHandTargetEffect(), true);
Target target = new TargetCardInYourGraveyard(filter);
ability.addTarget(target);
this.addAbility(ability);

View file

@ -108,6 +108,6 @@ class PolisCrusherTriggeredAbility extends TriggeredAbilityImpl {
@Override
public String getRule() {
return "Whenever {this} deals combat damage to a player,"
+ " if {this} is monstrous, destroy target enchantment that player controls";
+ " if {this} is monstrous, destroy target enchantment that player controls.";
}
}

View file

@ -1,4 +1,3 @@
package mage.cards.p;
import java.util.UUID;
@ -8,7 +7,6 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Outcome;
import mage.filter.StaticFilters;
import mage.game.Game;
import mage.game.stack.StackObject;
import mage.players.Player;
@ -23,9 +21,8 @@ public final class PsychicStrike extends CardImpl {
public PsychicStrike(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}{B}");
// Counter target spell. Its controller puts the top two cards of their library into their graveyard.
this.getSpellAbility().addTarget(new TargetSpell(StaticFilters.FILTER_SPELL));
this.getSpellAbility().addTarget(new TargetSpell());
this.getSpellAbility().addEffect(new PsychicStrikeEffect());
}
@ -41,9 +38,9 @@ public final class PsychicStrike extends CardImpl {
class PsychicStrikeEffect extends OneShotEffect {
public PsychicStrikeEffect() {
PsychicStrikeEffect() {
super(Outcome.Detriment);
staticText = "Counter target spell. Its controller puts the top two cards of their library into their graveyard";
staticText = "Counter target spell. Its controller mills two cards";
}
private PsychicStrikeEffect(final PsychicStrikeEffect effect) {

View file

@ -22,7 +22,7 @@ public final class PurgeTheProfane extends CardImpl {
// Target opponent discards two cards and you gain 2 life.
this.getSpellAbility().addEffect(new DiscardTargetEffect(2));
this.getSpellAbility().addTarget(new TargetOpponent());
this.getSpellAbility().addEffect(new GainLifeEffect(2));
this.getSpellAbility().addEffect(new GainLifeEffect(2).concatBy("and"));
}
private PurgeTheProfane(final PurgeTheProfane card) {

View file

@ -1,10 +1,9 @@
package mage.cards.r;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.dynamicvalue.common.StaticValue;
import mage.abilities.effects.common.continuous.BoostControlledEffect;
import mage.abilities.effects.common.continuous.GainAbilityControlledEffect;
import mage.abilities.keyword.TrampleAbility;
@ -35,8 +34,10 @@ public final class RagebloodShaman extends CardImpl {
// Trample
this.addAbility(TrampleAbility.getInstance());
// Other Minotaur creatures you control get +1/+1 and have trample.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostControlledEffect(StaticValue.get(1), StaticValue.get(1), Duration.WhileOnBattlefield, filter, true)));
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityControlledEffect(TrampleAbility.getInstance(), Duration.WhileOnBattlefield, filter, true)));
Ability ability = new SimpleStaticAbility(new BoostControlledEffect(1, 1, Duration.WhileOnBattlefield, filter, true));
ability.addEffect(new GainAbilityControlledEffect(TrampleAbility.getInstance(), Duration.WhileOnBattlefield, filter, true)
.setText("and have trample"));
this.addAbility(ability);
}
private RagebloodShaman(final RagebloodShaman card) {

View file

@ -1,4 +1,3 @@
package mage.cards.r;
import java.util.UUID;
@ -28,7 +27,6 @@ public final class RaidersSpoils extends CardImpl {
public RaidersSpoils(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{B}");
// Creatures you control get +1/+0.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostControlledEffect(1, 0, Duration.WhileOnBattlefield)));
@ -50,6 +48,7 @@ class RaidersSpoilsTriggeredAbility extends TriggeredAbilityImpl {
RaidersSpoilsTriggeredAbility() {
super(Zone.BATTLEFIELD, new DoIfCostPaid(new DrawCardSourceControllerEffect(1), new PayLifeCost(1)), false);
setTriggerPhrase("Whenever a Warrior you control deals combat damage to a player, ");
}
private RaidersSpoilsTriggeredAbility(final RaidersSpoilsTriggeredAbility ability) {
@ -75,9 +74,5 @@ class RaidersSpoilsTriggeredAbility extends TriggeredAbilityImpl {
}
return false;
}
@Override
public String getRule() {
return "Whenever a Warrior you control deals combat damage to a player, you may pay 1 life. If you do, draw a card";
}
}

View file

@ -43,7 +43,7 @@ public final class RasputinDreamweaver extends CardImpl {
this.toughness = new MageInt(1);
// Rasputin Dreamweaver enters the battlefield with seven dream counters on it.
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.DREAM.createInstance(7)), "seven dream counters on it"));
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.DREAM.createInstance(7)), "with seven dream counters on it"));
// Remove a dream counter from Rasputin: Add {C}.
this.addAbility(new SimpleManaAbility(Zone.BATTLEFIELD, Mana.ColorlessMana(1),

View file

@ -1,18 +1,18 @@
package mage.cards.r;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.ExertCreatureControllerTriggeredAbility;
import mage.abilities.effects.Effect;
import mage.abilities.effects.common.DamagePlayersEffect;
import mage.abilities.effects.common.GainLifeEffect;
import mage.abilities.effects.common.LoseLifeOpponentsEffect;
import mage.abilities.keyword.ExertAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.TargetController;
import java.util.UUID;
/**
*
@ -32,12 +32,8 @@ public final class ResoluteSurvivors extends CardImpl {
this.addAbility(new ExertAbility(null, false));
// Whenever you exert a creature, Resolute Survivors deals 1 damage to each opponent and you gain 1 life.
Effect effect = new LoseLifeOpponentsEffect(1);
effect.setText("Whenever you exert a creature, {this} deals 1 damage to each opponent");
Ability ability = new ExertCreatureControllerTriggeredAbility(effect);
effect = new GainLifeEffect(1);
effect.setText("and you gain 1 life");
ability.addEffect(effect);
Ability ability = new ExertCreatureControllerTriggeredAbility(new DamagePlayersEffect(1, TargetController.OPPONENT));
ability.addEffect(new GainLifeEffect(1).concatBy("and"));
this.addAbility(ability);
}

View file

@ -35,7 +35,7 @@ public final class ReverentMantra extends CardImpl {
// Choose a color. All creatures gain protection from the chosen color until end of turn.
this.getSpellAbility().addEffect(new GainProtectionFromColorAllEffect(
Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURE
Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_ALL_CREATURES
));
}

View file

@ -1,4 +1,3 @@
package mage.cards.r;
import java.util.UUID;
@ -49,9 +48,10 @@ public final class RhonassMonument extends CardImpl {
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new SpellsCostReductionControllerEffect(filter, 1)));
// Whenever you cast a creature spell, target creature you control gets +2/+2 and gains trample until end of turn.
Ability ability = new SpellCastControllerTriggeredAbility(new BoostTargetEffect(2, 2, Duration.EndOfTurn), filter2, false);
Ability ability = new SpellCastControllerTriggeredAbility(new BoostTargetEffect(2, 2, Duration.EndOfTurn)
.setText("target creature you control gets +2/+2"), filter2, false);
Effect effect = new GainAbilityTargetEffect(TrampleAbility.getInstance(), Duration.EndOfTurn);
effect.setText(" and gains trample until end of turn");
effect.setText("and gains trample until end of turn");
ability.addEffect(effect);
ability.addTarget(new TargetControlledCreaturePermanent());
this.addAbility(ability);

Some files were not shown because too many files have changed in this diff Show more