[ONE] various text fixes

This commit is contained in:
theelk801 2023-04-24 20:12:20 -04:00
parent ed32ee554d
commit ff115cad48
48 changed files with 203 additions and 185 deletions

View file

@ -22,7 +22,7 @@ import java.util.UUID;
*/
public final class AgainstAllOdds extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("artifact or creature card you control");
private static final FilterControlledPermanent filter = new FilterControlledPermanent("artifact or creature you control");
private static final FilterCard filter2 = new FilterCard("artifact or creature card with mana value 3 or less from your graveyard");
static {

View file

@ -21,18 +21,17 @@ import mage.target.TargetPermanent;
import java.util.UUID;
/**
*
* @author AhmadYProjects
*/
public final class AnnexSentry extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("artifact or creature an opponent controls with cmc 3 or less");
private static final FilterPermanent filter = new FilterPermanent("artifact or creature an opponent controls with mana value 3 or less");
static {
filter.add(new ManaValuePredicate(ComparisonType.FEWER_THAN,4));
filter.add(new ManaValuePredicate(ComparisonType.FEWER_THAN, 4));
filter.add(Predicates.or
(CardType.ARTIFACT.getPredicate(),
CardType.CREATURE.getPredicate()));
CardType.CREATURE.getPredicate()));
filter.add(TargetController.OPPONENT.getControllerPredicate());
}

View file

@ -1,9 +1,5 @@
package mage.cards.a;
import java.util.Objects;
import java.util.Optional;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
@ -16,18 +12,23 @@ import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.LoseGameSourceControllerEffect;
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
import mage.abilities.effects.common.counter.RemoveCounterSourceEffect;
import mage.constants.Outcome;
import mage.constants.SubType;
import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Outcome;
import mage.constants.SubType;
import mage.constants.TargetController;
import mage.counters.CounterType;
import mage.filter.StaticFilters;
import mage.game.Controllable;
import mage.game.Game;
import mage.game.permanent.Permanent;
import java.util.Objects;
import java.util.Optional;
import java.util.UUID;
/**
* @author TheElk801
*/
@ -64,7 +65,10 @@ public final class ArchfiendOfTheDross extends CardImpl {
this.addAbility(ability);
// Whenever a creature an opponent controls dies, its controller loses 2 life.
this.addAbility(new DiesCreatureTriggeredAbility(new ArchfiendOfTheDrossEffect(), false));
this.addAbility(new DiesCreatureTriggeredAbility(
new ArchfiendOfTheDrossEffect(), false,
StaticFilters.FILTER_OPPONENTS_PERMANENT_A_CREATURE
));
}
private ArchfiendOfTheDross(final ArchfiendOfTheDross card) {

View file

@ -25,7 +25,7 @@ public final class BlazingCrescendo extends CardImpl {
// Exile the top card of your library. Until the end of your next turn, you may play that card.
this.getSpellAbility().addEffect(new ExileTopXMayPlayUntilEndOfTurnEffect(
1, false, Duration.UntilEndOfYourNextTurn
));
).concatBy("<br>"));
}
private BlazingCrescendo(final BlazingCrescendo card) {

View file

@ -28,7 +28,8 @@ public final class BlueSunsTwilight extends CardImpl {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{U}{U}");
// Gain control of target creature with mana value X or less. If X is 5 or more, create a token that's a copy of that creature.
this.getSpellAbility().addEffect(new GainControlTargetEffect(Duration.Custom, true));
this.getSpellAbility().addEffect(new GainControlTargetEffect(Duration.Custom, true)
.setText("gain control of target creature with mana value X or less"));
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(
new CreateTokenCopyTargetEffect(), BlueSunsTwilightCondition.instance,
"If X is 5 or more, create a token that's a copy of that creature"

View file

@ -1,7 +1,5 @@
package mage.cards.c;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.DealsCombatDamageToAPlayerTriggeredAbility;
@ -12,12 +10,14 @@ import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount;
import mage.abilities.effects.common.DamageTargetEffect;
import mage.abilities.effects.common.DoIfCostPaid;
import mage.abilities.effects.common.counter.ProliferateEffect;
import mage.constants.SubType;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.target.common.TargetAnyTarget;
import java.util.UUID;
/**
* @author TheElk801
*/
@ -40,7 +40,8 @@ public final class CacophonyScamp extends CardImpl {
), false));
// When Cacophony Scamp dies, it deals damage equal to its power to any target.
Ability ability = new DiesSourceTriggeredAbility(new DamageTargetEffect(xValue, "it"));
Ability ability = new DiesSourceTriggeredAbility(new DamageTargetEffect(xValue)
.setText("it deals damage equal to its power to any target"));
ability.addTarget(new TargetAnyTarget());
this.addAbility(ability);
}

View file

@ -32,6 +32,7 @@ public final class CephalopodSentry extends CardImpl {
// Cephalopod Sentry's power is equal to the number of artifacts you control.
this.addAbility(new SimpleStaticAbility(
Zone.ALL, new SetBasePowerSourceEffect(ArtifactYouControlCount.instance)
.setText("{this}'s power is equal to the number of artifacts you control")
));
}

View file

@ -23,7 +23,8 @@ public final class ChargeOfTheMites extends CardImpl {
// Choose one--
// * Charge of the Mites deals damage equal to the number of creatures you control to target creature or planeswalker.
this.getSpellAbility().addEffect(new DamageTargetEffect(CreaturesYouControlCount.instance));
this.getSpellAbility().addEffect(new DamageTargetEffect(CreaturesYouControlCount.instance)
.setText("{this} deals damage equal to the number of creatures you control to target creature or planeswalker"));
this.getSpellAbility().addTarget(new TargetCreatureOrPlaneswalker());
this.getSpellAbility().addHint(CreaturesYouControlHint.instance);

View file

@ -24,7 +24,7 @@ import java.util.UUID;
*/
public final class CinderslashRavager extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("permanent you control with an oil counter on it");
private static final FilterControlledPermanent filter = new FilterControlledPermanent("permanent you control with oil counters on it");
static {
filter.add(CounterType.OIL.getPredicate());
@ -48,7 +48,7 @@ public final class CinderslashRavager extends CardImpl {
// When Cinderslash Ravager enters the battlefield, it deals 1 damage to each creature your opponents control.
this.addAbility(new EntersBattlefieldTriggeredAbility(new DamageAllEffect(
1, "it", StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURES
1, "it", StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE
)));
}

View file

@ -30,7 +30,7 @@ public final class CutthroatCenturion extends CardImpl {
// Sacrifice another artifact or creature: Cutthroat Centurion gets +2/+2 until end of turn. Activate only once each turn.
this.addAbility(new LimitedTimesPerTurnActivatedAbility(
Zone.BATTLEFIELD, new BoostSourceEffect(2, 2, Duration.EndOfTurn),
new SacrificeTargetCost(StaticFilters.FILTER_CONTROLLED_ANOTHER_ARTIFACT_OR_CREATURE)
new SacrificeTargetCost(StaticFilters.FILTER_CONTROLLED_ANOTHER_ARTIFACT_OR_CREATURE_SHORT_TEXT)
));
}

View file

@ -1,14 +1,11 @@
package mage.cards.e;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.common.EntersBattlefieldAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.Condition;
import mage.abilities.condition.common.PermanentHasCounterCondition;
import mage.abilities.condition.common.SourceHasCounterCondition;
import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.decorator.ConditionalOneShotEffect;
@ -18,13 +15,15 @@ import mage.abilities.effects.common.counter.AddCountersSourceEffect;
import mage.abilities.effects.common.counter.RemoveCounterSourceEffect;
import mage.abilities.keyword.HexproofAbility;
import mage.abilities.keyword.TrampleAbility;
import mage.constants.SubType;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.TargetController;
import mage.counters.CounterType;
import java.util.UUID;
/**
* @author TheElk801
*/
@ -51,8 +50,8 @@ public final class EvolvedSpinoderm extends CardImpl {
this.addAbility(new SimpleStaticAbility(new ConditionalContinuousEffect(
new GainAbilitySourceEffect(HexproofAbility.getInstance()),
new GainAbilitySourceEffect(TrampleAbility.getInstance()),
condition1, "{this} has trample as long as it was two " +
"or fewer oil counters on it, Otherwise, it has hexproof"
condition1, "{this} has trample as long as it has two " +
"or fewer oil counters on it. Otherwise, it has hexproof"
)));
// At the beginning of your upkeep, remove an oil counter from Evolved Spinoderm. Then if it has no oil counters on it, sacrifice it.

View file

@ -15,6 +15,7 @@ import mage.game.permanent.token.custom.CreatureToken;
import java.util.UUID;
public class EyeOfMalcator extends CardImpl {
public EyeOfMalcator(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}{U}");
@ -23,12 +24,14 @@ public class EyeOfMalcator extends CardImpl {
//Whenever another artifact enters the battlefield under your control, Eye of Malcator becomes a 4/4 Phyrexian
//Eye artifact creature until end of turn.
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(new BecomesCreatureSourceEffect(
new CreatureToken(
4, 4, "4/4 Phyrexian Eye artifact creature", SubType.PHYREXIAN, SubType.EYE
).withType(CardType.ARTIFACT), "", Duration.EndOfTurn)
.setText("{this} becomes a 4/4 Phyrexian Eye artifact creature until end of turn"),
StaticFilters.FILTER_CONTROLLED_ANOTHER_ARTIFACT));
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(
new BecomesCreatureSourceEffect(
new CreatureToken(
4, 4, "4/4 Phyrexian Eye artifact creature", SubType.PHYREXIAN, SubType.EYE
).withType(CardType.ARTIFACT), "", Duration.EndOfTurn
).setText("{this} becomes a 4/4 Phyrexian Eye artifact creature until end of turn"),
StaticFilters.FILTER_CONTROLLED_ANOTHER_ARTIFACT
).setTriggerPhrase("Whenever another artifact enters the battlefield under your control, "));
}
private EyeOfMalcator(final EyeOfMalcator card) {

View file

@ -1,7 +1,5 @@
package mage.cards.e;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.common.ProliferatedControllerTriggeredAbility;
@ -9,11 +7,13 @@ import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.effects.common.DoIfCostPaid;
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
import mage.abilities.effects.common.counter.ProliferateEffect;
import mage.constants.SubType;
import mage.constants.SuperType;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.SuperType;
import java.util.UUID;
/**
* @author TheElk801

View file

@ -1,7 +1,5 @@
package mage.cards.f;
import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
@ -15,6 +13,8 @@ import mage.counters.CounterType;
import mage.game.Game;
import mage.players.Player;
import java.util.UUID;
/**
* @author TheElk801
*/
@ -46,7 +46,7 @@ class FeedTheInfectionEffect extends OneShotEffect {
FeedTheInfectionEffect() {
super(Outcome.Benefit);
staticText = "<br>" + AbilityWord.CORRUPTED.formatWord() +
"Each opponent with three or more poison counters loses 3 life";
"Each opponent who has three or more poison counters loses 3 life";
}
private FeedTheInfectionEffect(final FeedTheInfectionEffect effect) {

View file

@ -31,7 +31,7 @@ public final class FleshlessGladiator extends CardImpl {
// Corrupted -- {2}{B}: Return Fleshless Gladiator from your graveyard to the battlefield tapped. You lose 1 life. Activate only if an opponent has three or more poison counters.
Ability ability = new ConditionalActivatedAbility(
Zone.GRAVEYARD, new ReturnSourceFromGraveyardToBattlefieldEffect(true),
Zone.GRAVEYARD, new ReturnSourceFromGraveyardToBattlefieldEffect(true, false),
new ManaCostsImpl<>("{2}{B}"), CorruptedCondition.instance
);
ability.addEffect(new LoseLifeSourceControllerEffect(1));

View file

@ -2,17 +2,12 @@ package mage.cards.f;
import mage.MageInt;
import mage.abilities.common.AttacksTriggeredAbility;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.common.PutIntoGraveFromBattlefieldAllTriggeredAbility;
import mage.abilities.common.delayed.ReflexiveTriggeredAbility;
import mage.abilities.costs.common.PayLifeCost;
import mage.abilities.costs.common.RemoveCountersSourceCost;
import mage.abilities.effects.common.DoIfCostPaid;
import mage.abilities.effects.common.DoWhenCostPaid;
import mage.abilities.effects.common.combat.CantBlockTargetEffect;
import mage.abilities.effects.common.continuous.BoostTargetEffect;
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
import mage.cards.Card;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@ -45,8 +40,9 @@ public class ForgehammerCenturion extends CardImpl {
new CantBlockTargetEffect(Duration.EndOfTurn), false
);
ability.addTarget(new TargetCreaturePermanent());
this.addAbility(new AttacksTriggeredAbility(new DoWhenCostPaid(ability,
new RemoveCountersSourceCost(CounterType.OIL.createInstance(2)), "Remove 2 oil counters?"
this.addAbility(new AttacksTriggeredAbility(new DoWhenCostPaid(
ability, new RemoveCountersSourceCost(CounterType.OIL.createInstance(2))
.setText("remove two oil counters from it"), "Remove 2 oil counters?"
)));
}

View file

@ -1,7 +1,5 @@
package mage.cards.f;
import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.common.ActivateAsSorceryActivatedAbility;
import mage.abilities.common.SimpleActivatedAbility;
@ -9,16 +7,15 @@ import mage.abilities.costs.common.SacrificeSourceCost;
import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
import mage.abilities.effects.common.continuous.BoostTargetEffect;
import mage.abilities.effects.common.continuous.GainAbilityTargetEffect;
import mage.abilities.effects.common.counter.AddCountersTargetEffect;
import mage.abilities.keyword.TrampleAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.counters.CounterType;
import mage.target.common.TargetControlledCreaturePermanent;
import mage.target.common.TargetCreaturePermanent;
import mage.filter.StaticFilters;
import mage.target.TargetPermanent;
import java.util.UUID;
/**
* @author TheElk801
@ -41,7 +38,7 @@ public final class FurnaceSkullbomb extends CardImpl {
);
ability.addCost(new SacrificeSourceCost());
ability.addEffect(new DrawCardSourceControllerEffect(1));
ability.addTarget(new TargetControlledCreaturePermanent());
ability.addTarget(new TargetPermanent(StaticFilters.FILTER_CONTROLLED_PERMANENT_ARTIFACT_OR_CREATURE));
this.addAbility(ability);
}

View file

@ -17,20 +17,16 @@ import mage.target.TargetPermanent;
import java.util.UUID;
/**
*
* @author AhmadYProjects
*/
public final class GleefulDemolition extends CardImpl {
public GleefulDemolition(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{R}");
// Destroy target artifact. If you controlled that artifact, creature three 1/1 red Phyrexian Goblin creature tokens.
this.getSpellAbility().addTarget(new TargetPermanent(StaticFilters.FILTER_PERMANENT_ARTIFACT));
this.getSpellAbility().addEffect(new GleefulDemolitionEffect());
}
private GleefulDemolition(final GleefulDemolition card) {
@ -44,10 +40,10 @@ public final class GleefulDemolition extends CardImpl {
}
class GleefulDemolitionEffect extends OneShotEffect {
GleefulDemolitionEffect(){
GleefulDemolitionEffect() {
super(Outcome.Benefit);
staticText = "destroy target artifact. " +
"if you controlled that artifact, create three 1/1 red Phyrexian Goblin creature tokens";
"If you controlled that artifact, create three 1/1 red Phyrexian Goblin creature tokens";
}
private GleefulDemolitionEffect(final GleefulDemolitionEffect effect) {
@ -55,26 +51,24 @@ class GleefulDemolitionEffect extends OneShotEffect {
}
@Override
public GleefulDemolitionEffect copy(){
public GleefulDemolitionEffect copy() {
return new GleefulDemolitionEffect(this);
}
@Override
public boolean apply(Game game, Ability source){
public boolean apply(Game game, Ability source) {
Player player = game.getPlayer(source.getControllerId());
Permanent permanent = game.getPermanent(targetPointer.getFirst(game,source));
if (
permanent == null || player == null) {
Permanent permanent = game.getPermanent(targetPointer.getFirst(game, source));
if (permanent == null || player == null) {
return false;
}
boolean isMine = permanent.isControlledBy(source.getControllerId());
permanent.destroy(source, game, false);
if (isMine) {
Token token = new PhyrexianGoblinToken();
token.putOntoBattlefield(3,game,source);
token.putOntoBattlefield(3, game, source);
}
return true;
}
}
}

View file

@ -1,7 +1,5 @@
package mage.cards.g;
import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
@ -12,6 +10,7 @@ import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.keyword.ToxicAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.AbilityWord;
import mage.constants.CardType;
import mage.constants.Outcome;
import mage.constants.TargetController;
@ -19,12 +18,13 @@ import mage.filter.StaticFilters;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.game.permanent.token.PhyrexianBeastToxicToken;
import mage.game.permanent.token.PhyrexianGolemToken;
import mage.players.Player;
import mage.target.TargetPermanent;
import mage.target.common.TargetControlledCreaturePermanent;
import mage.util.CardUtil;
import java.util.UUID;
/**
* @author TheElk801
*/
@ -42,8 +42,8 @@ public final class GoliathHatchery extends CardImpl {
this.addAbility(new ConditionalInterveningIfTriggeredAbility(
new BeginningOfUpkeepTriggeredAbility(
new GoliathHatcheryEffect(), TargetController.YOU, false
), CorruptedCondition.instance, null
));
).setAbilityWord(AbilityWord.CORRUPTED), CorruptedCondition.instance, null
).addHint(CorruptedCondition.getHint()));
}
private GoliathHatchery(final GoliathHatchery card) {

View file

@ -20,7 +20,7 @@ public final class HazardousBlast extends CardImpl {
// Hazardous Blast deals 1 damage to each creature your opponents control. Creatures your opponents control can't block this turn.
this.getSpellAbility().addEffect(new DamageAllEffect(
1, StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE
1, StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURES
));
this.getSpellAbility().addEffect(new CantBlockAllEffect(
StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURES, Duration.EndOfTurn

View file

@ -14,14 +14,12 @@ import mage.target.common.TargetCreaturePermanent;
import java.util.UUID;
/**
*
* @author AhmadYProjects
*/
public final class HexgoldSlash extends CardImpl {
public HexgoldSlash(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{R}");
// Hexgold Slash deals 2 damage to target creature. If that creature has toxic, Hexgold Slash deals 4 damage to that creature instead.
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
@ -38,30 +36,30 @@ public final class HexgoldSlash extends CardImpl {
}
}
class HexgoldSlashEffect extends OneShotEffect{
public HexgoldSlashEffect(){
class HexgoldSlashEffect extends OneShotEffect {
public HexgoldSlashEffect() {
super(Outcome.Damage);
staticText = "{this} deals 2 damage to target creature. If that creature has toxic, {this} deals 4 damage instead";
staticText = "{this} deals 2 damage to target creature. If that creature has toxic, " +
"{this} deals 4 damage to that creature instead";
}
public HexgoldSlashEffect(final HexgoldSlashEffect effect){
public HexgoldSlashEffect(final HexgoldSlashEffect effect) {
super(effect);
}
@Override
public HexgoldSlashEffect copy(){
public HexgoldSlashEffect copy() {
return new HexgoldSlashEffect();
}
@Override
public boolean apply(Game game, Ability source){
public boolean apply(Game game, Ability source) {
Permanent permanent = game.getPermanent(getTargetPointer().getFirst(game, source));
if (permanent != null){
if (permanent != null) {
if (permanent.getAbilities(game).containsClass(ToxicAbility.class)) {
permanent.damage(4,source,game);
}
else{
permanent.damage(2,source,game);
permanent.damage(4, source, game);
} else {
permanent.damage(2, source, game);
}
return true;
}

View file

@ -28,7 +28,7 @@ import mage.filter.predicate.permanent.EquippedPredicate;
*/
public final class JorKadeenFirstGoldwarden extends CardImpl {
private static final FilterPermanent filter = new FilterControlledCreaturePermanent();
private static final FilterPermanent filter = new FilterControlledCreaturePermanent("equipped creatures you control");
private static final FilterPermanent filter2 = new FilterPermanent();
static {

View file

@ -40,7 +40,7 @@ public final class KaitoDancingShadow extends CardImpl {
public KaitoDancingShadow(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{2}{U}{B}");
this.addSuperType(SuperType.LEGENDARY);
this.subtype.add(SubType.KAITO);
this.setStartingLoyalty(3);
@ -50,7 +50,7 @@ public final class KaitoDancingShadow extends CardImpl {
this.addAbility(ability);
// +1: Up to one target creature can't attack or block until your next turn.
Ability KaitoCantAttackOrBlockAbility = new LoyaltyAbility(new CantAttackTargetEffect(Duration.UntilYourNextTurn).setText("Up to one target creature can't attack "), 1);
Ability KaitoCantAttackOrBlockAbility = new LoyaltyAbility(new CantAttackTargetEffect(Duration.UntilYourNextTurn).setText("Up to one target creature can't attack"), 1);
KaitoCantAttackOrBlockAbility.addEffect(new CantBlockTargetEffect(Duration.UntilYourNextTurn).setText("or block until your next turn"));
KaitoCantAttackOrBlockAbility.addTarget(new TargetPermanent(0, 1, StaticFilters.FILTER_PERMANENT_CREATURE));
this.addAbility(KaitoCantAttackOrBlockAbility);
@ -128,7 +128,7 @@ class KaitoDancingShadowEffect extends OneShotEffect {
}
@Override
public boolean apply(Game game, Ability source) {
public boolean apply(Game game, Ability source) {
KaitoDancingShadowWatcher watcher = game.getState().getWatcher(KaitoDancingShadowWatcher.class);
if (watcher == null) {
return false;
@ -221,7 +221,7 @@ class TargetCreatureThatDealtCombatDamage extends TargetObject {
return super.chooseTarget(Outcome.Benefit, playerId, source, game);
}
@Override
public TargetCreatureThatDealtCombatDamage copy() {
return new TargetCreatureThatDealtCombatDamage(this);

View file

@ -1,7 +1,5 @@
package mage.cards.k;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldThisOrAnotherTriggeredAbility;
@ -11,9 +9,9 @@ import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.effects.common.continuous.BoostControlledEffect;
import mage.constants.*;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
import mage.filter.FilterPermanent;
import mage.filter.common.FilterControlledPermanent;
import mage.filter.common.FilterCreaturePermanent;
@ -23,6 +21,8 @@ import mage.game.permanent.Permanent;
import mage.game.permanent.token.CatToken;
import mage.target.TargetPermanent;
import java.util.UUID;
/**
* @author TheElk801
*/
@ -47,7 +47,7 @@ public final class KembaKhaEnduring extends CardImpl {
// Whenever Kemba, Kha Enduring or another Cat enters the battlefield under your control, attach up to one target Equipment you control to that creature.
Ability ability = new EntersBattlefieldThisOrAnotherTriggeredAbility(
new KembaKhaEnduringEffect(), filter, true, true
new KembaKhaEnduringEffect(), filter, false, true
);
ability.addTarget(new TargetPermanent(0, 1, filter2));
this.addAbility(ability);

View file

@ -58,7 +58,7 @@ class KethekCrucibleGoliathEffect extends OneShotEffect {
KethekCrucibleGoliathEffect() {
super(Outcome.Benefit);
staticText = "you may sacrifice another creature. " +
"If you do, reveal cards from the top of your library" +
"If you do, reveal cards from the top of your library " +
"until you reveal a nonlegendary creature card with lesser mana value" +
", put it onto the battlefield, then put the rest on the bottom of your library in a random order.";
}
@ -97,7 +97,7 @@ class KethekCrucibleGoliathEffect extends OneShotEffect {
filterCreatureCard.add(new ManaValuePredicate(ComparisonType.FEWER_THAN, xValue));
//put it onto the battlefield, then put the rest on the bottom of your library in a random order.
RevealCardsFromLibraryUntilEffect effect = new RevealCardsFromLibraryUntilEffect(filterCreatureCard, Zone.BATTLEFIELD, Zone.LIBRARY);
effect.apply(game,source);
effect.apply(game, source);
return true;
}
}

View file

@ -39,7 +39,7 @@ public final class LatticeBladeMantis extends CardImpl {
// Whenever Lattice-Blade Mantis attacks, you may remove an oil counter from it. If you do, untap it and it gets +1/+1 until end of turn.
this.addAbility(new AttacksTriggeredAbility(new DoIfCostPaid(
new UntapSourceEffect().setText("untap it"),
new RemoveCountersSourceCost(CounterType.OIL.createInstance())
new RemoveCountersSourceCost(CounterType.OIL.createInstance()).setText("remove an oil counter from it")
).addEffect(new BoostSourceEffect(1, 1, Duration.EndOfTurn, "and it"))));
}

View file

@ -14,7 +14,10 @@ import mage.abilities.effects.common.DamageMultiEffect;
import mage.abilities.keyword.CompleatedAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
import mage.constants.CardType;
import mage.constants.Outcome;
import mage.constants.SubType;
import mage.constants.SuperType;
import mage.game.Game;
import mage.game.permanent.token.PhyrexianBeastToxicToken;
import mage.players.Player;
@ -39,19 +42,19 @@ public class LukkaBoundToRuin extends CardImpl {
this.addAbility(CompleatedAbility.getInstance());
// +1: Add {R}{G}. Spend this mana only to cast creature spells or activate abilities of creatures.
Ability ability = new LoyaltyAbility(new LukkaBoundToRuinManaEffect(),1);
Ability ability = new LoyaltyAbility(new LukkaBoundToRuinManaEffect(), 1);
this.addAbility(ability);
// 1: Create a 3/3 green Phyrexian Beast creature token with toxic 1.
ability = new LoyaltyAbility(new CreateTokenEffect(new PhyrexianBeastToxicToken()),-1);
ability = new LoyaltyAbility(new CreateTokenEffect(new PhyrexianBeastToxicToken()), -1);
this.addAbility(ability);
// 4: Lukka deals X damage divided as you choose among any number of target creatures and/or planeswalkers,
// where X is the greatest power among creatures you controlled as you activated this ability.
DynamicValue xValue = GreatestPowerAmongControlledCreaturesValue.instance;
DamageMultiEffect damageMultiEffect = new DamageMultiEffect(xValue);
damageMultiEffect.setText("Lukka deals X damage divided as you choose" +
" among any number of target creatures and/or planeswalkers," +
damageMultiEffect.setText("Lukka deals X damage divided as you choose " +
"among any number of target creatures and/or planeswalkers, " +
"where X is the greatest power among creatures you controlled as you activated this ability.");
ability = new LoyaltyAbility(damageMultiEffect, -4);
ability.setTargetAdjuster(LukkaBoundToRuinAdjuster.instance);
@ -99,7 +102,8 @@ class LukkaBoundToRuinManaEffect extends OneShotEffect {
class LukkaBoundToRuinConditionalMana extends ConditionalMana {
// Add {R}{G}
private static Mana mana = new Mana(0,0,0,1,1,0,0,0);
private static Mana mana = new Mana(0, 0, 0, 1, 1, 0, 0, 0);
public LukkaBoundToRuinConditionalMana() {
super(mana);
addCondition(LukkaBoundToRuinManaCondition.instance);
@ -130,11 +134,10 @@ enum LukkaBoundToRuinAdjuster implements TargetAdjuster {
public void adjustTargets(Ability ability, Game game) {
// Maximum targets is equal to the damage - as each target need to be assigned at least 1 damage
ability.getTargets().clear();
int xValue = GreatestPowerAmongControlledCreaturesValue.instance.calculate(game,ability,null);
int xValue = GreatestPowerAmongControlledCreaturesValue.instance.calculate(game, ability, null);
TargetCreatureOrPlaneswalkerAmount targetCreatureOrPlaneswalkerAmount = new TargetCreatureOrPlaneswalkerAmount(xValue);
targetCreatureOrPlaneswalkerAmount.setMinNumberOfTargets(0);
targetCreatureOrPlaneswalkerAmount.setMaxNumberOfTargets(xValue);
ability.addTarget(targetCreatureOrPlaneswalkerAmount);
}
}

View file

@ -1,7 +1,5 @@
package mage.cards.m;
import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.common.ActivateAsSorceryActivatedAbility;
import mage.abilities.common.SimpleActivatedAbility;
@ -15,7 +13,9 @@ import mage.abilities.keyword.TrampleAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.target.common.TargetCreaturePermanent;
import mage.target.common.TargetControlledCreaturePermanent;
import java.util.UUID;
/**
* @author TheElk801
@ -35,14 +35,14 @@ public final class MazeSkullbomb extends CardImpl {
// {2}{G}, Sacrifice Maze Skullbomb: Target creature gets +3/+3 and gains trample until end of turn. Draw a card. Activate only as a sorcery.
ability = new ActivateAsSorceryActivatedAbility(
new BoostTargetEffect(3, 3)
.setText("target creature gets +3/+3"),
.setText("target creature you control gets +3/+3"),
new ManaCostsImpl<>("{2}{G}")
);
ability.addCost(new SacrificeSourceCost());
ability.addEffect(new GainAbilityTargetEffect(TrampleAbility.getInstance())
.setText("and gains trample until end of turn"));
ability.addEffect(new DrawCardSourceControllerEffect(1));
ability.addTarget(new TargetCreaturePermanent());
ability.addTarget(new TargetControlledCreaturePermanent());
this.addAbility(ability);
}

View file

@ -1,7 +1,5 @@
package mage.cards.m;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.DealsCombatDamageToAPlayerTriggeredAbility;
import mage.abilities.common.SpellCastControllerTriggeredAbility;
@ -11,13 +9,15 @@ import mage.abilities.effects.common.CreateDelayedTriggeredAbilityEffect;
import mage.abilities.effects.common.DoIfCostPaid;
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
import mage.abilities.keyword.CantBeBlockedSourceAbility;
import mage.constants.SubType;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.counters.CounterType;
import mage.filter.StaticFilters;
import java.util.UUID;
/**
* @author TheElk801
*/
@ -44,7 +44,7 @@ public final class MercurialSpelldancer extends CardImpl {
this.addAbility(new DealsCombatDamageToAPlayerTriggeredAbility(
new DoIfCostPaid(
new CreateDelayedTriggeredAbilityEffect(new CopyNextSpellDelayedTriggeredAbility()),
new RemoveCountersSourceCost(CounterType.OIL.createInstance(2))
new RemoveCountersSourceCost(CounterType.OIL.createInstance(2)).setText("remove two oil counters from it")
), false
));
}

View file

@ -2,7 +2,8 @@ package mage.cards.n;
import mage.abilities.Ability;
import mage.abilities.LoyaltyAbility;
import mage.abilities.effects.*;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.RestrictionEffect;
import mage.abilities.effects.common.CreateTokenCopyTargetEffect;
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
import mage.abilities.effects.common.combat.AttacksIfAbleTargetEffect;
@ -31,6 +32,16 @@ import java.util.UUID;
*/
public final class NahiriTheUnforgiving extends CardImpl {
private static final FilterCard filter = new FilterCard("Equipment or creature with lesser manavalue than Nahiri's loyalty");
{
filter.add(Predicates.or(
CardType.CREATURE.getPredicate(),
SubType.EQUIPMENT.getPredicate()
));
filter.add(NahiriLoyaltyPredicate.instance);
}
public NahiriTheUnforgiving(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{1}{R}{R/W/P}{W}");
this.addSuperType(SuperType.LEGENDARY);
@ -45,7 +56,7 @@ public final class NahiriTheUnforgiving extends CardImpl {
LoyaltyAbility ability1 = new LoyaltyAbility(new AttacksIfAbleTargetEffect(Duration.UntilYourNextTurn)
.setText("Until your next turn, up to one target creature attacks"), 1);
ability1.addEffect(new NahiriTheUnforgivingRestrictionEffect());
ability1.addTarget(new TargetCreaturePermanent(0,1));
ability1.addTarget(new TargetCreaturePermanent(0, 1));
this.addAbility(ability1);
// +1: Discard a card, then draw a card.
@ -56,9 +67,6 @@ public final class NahiriTheUnforgiving extends CardImpl {
// 0: Exile target creature or Equipment card with mana value less than Nahiri's loyalty from your graveyard.
// Create a token that's a copy of it. That token gains haste. Exile it at the beginning of the next end step.
LoyaltyAbility ability3 = new LoyaltyAbility(new NahiriTheUnforgivingTokenEffect(), 0);
FilterCard filter = new FilterCard("Equipment or Creature with lesser manavalue than Nahiri's loyalty");
filter.add(Predicates.or(CardType.CREATURE.getPredicate(), SubType.EQUIPMENT.getPredicate()));
filter.add(NahiriLoyaltyPredicate.instance);
ability3.addTarget(new TargetCardInYourGraveyard(filter));
this.addAbility(ability3);
}
@ -80,7 +88,7 @@ enum NahiriLoyaltyPredicate implements ObjectSourcePlayerPredicate<Card> {
public boolean apply(ObjectSourcePlayer<Card> input, Game game) {
//mana value less than Nahiri's loyalty
int manaValue = input.getObject().getManaValue();
Card card = (Card) input.getSource().getSourceObject(game);
Card card = (Card) input.getSource().getSourceObject(game);
int loyalty = card.getCounters(game).getCount(CounterType.LOYALTY);
return manaValue < loyalty;
}
@ -118,7 +126,7 @@ class NahiriTheUnforgivingTokenEffect extends OneShotEffect {
NahiriTheUnforgivingTokenEffect() {
super(Outcome.Benefit);
this.staticText = "Exile target creature or Equipment card with mana value less than Nahiri's loyalty from your graveyard." +
this.staticText = "Exile target creature or Equipment card with mana value less than Nahiri's loyalty from your graveyard. " +
"Create a token that's a copy of it. That token gains haste. Exile it at the beginning of the next end step.";
}

View file

@ -24,7 +24,7 @@ import java.util.UUID;
*/
public final class NahirisSacrifice extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent(" an artifact or creature");
private static final FilterControlledPermanent filter = new FilterControlledPermanent("an artifact or creature");
static {
filter.add(Predicates.or(CardType.ARTIFACT.getPredicate(), CardType.CREATURE.getPredicate()));
@ -68,7 +68,7 @@ class SacrificeXManaValueCost extends VariableCostImpl implements SacrificeCost
public SacrificeXManaValueCost(FilterControlledPermanent filter, boolean useAsAdditionalCost) {
super(useAsAdditionalCost ? VariableCostType.ADDITIONAL : VariableCostType.NORMAL,
filter.getMessage() + " with manavalue X to sacrifice");
this.text = (useAsAdditionalCost ? " sacrifice" : "Sacrifice ") + filter.getMessage() + " with mana value " +xText;
this.text = (useAsAdditionalCost ? "sacrifice " : "Sacrifice ") + filter.getMessage() + " with mana value " +xText;
this.filter = filter;
}

View file

@ -1,23 +1,23 @@
package mage.cards.n;
import java.util.UUID;
import mage.abilities.common.DiesAttachedTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.common.AttachEffect;
import mage.abilities.effects.common.ReturnToBattlefieldUnderYourControlAttachedEffect;
import mage.abilities.effects.common.continuous.GainAbilityAttachedEffect;
import mage.abilities.keyword.ToxicAbility;
import mage.constants.AttachmentType;
import mage.constants.SubType;
import mage.abilities.effects.common.AttachEffect;
import mage.constants.Outcome;
import mage.target.TargetPermanent;
import mage.abilities.keyword.EnchantAbility;
import mage.abilities.keyword.ToxicAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.AttachmentType;
import mage.constants.CardType;
import mage.constants.Outcome;
import mage.constants.SubType;
import mage.target.TargetPermanent;
import mage.target.common.TargetControlledCreaturePermanent;
import java.util.UUID;
/**
* @author TheElk801
*/
@ -36,7 +36,7 @@ public final class NecrogenCommunion extends CardImpl {
// Enchanted creature has toxic 2.
this.addAbility(new SimpleStaticAbility(
new GainAbilityAttachedEffect(new ToxicAbility(2), AttachmentType.EQUIPMENT)
new GainAbilityAttachedEffect(new ToxicAbility(2), AttachmentType.AURA)
));
// When enchanted creature dies, return that card to the battlefield under your control.

View file

@ -1,28 +1,26 @@
package mage.cards.n;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.DealCombatDamageControlledTriggeredAbility;
import mage.abilities.common.DealsDamageToAPlayerAllTriggeredAbility;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.continuous.GainAbilityTargetEffect;
import mage.abilities.effects.common.counter.AddPoisonCounterTargetEffect;
import mage.abilities.keyword.DeathtouchAbility;
import mage.constants.SetTargetPointer;
import mage.constants.SubType;
import mage.abilities.keyword.ToxicAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Zone;
import mage.constants.SetTargetPointer;
import mage.constants.SubType;
import mage.filter.FilterPermanent;
import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.predicate.mageobject.AbilityPredicate;
import mage.target.TargetPermanent;
import java.util.UUID;
/**
* @author TheElk801
*/
@ -56,7 +54,9 @@ public final class NecrogenRotpriest extends CardImpl {
// {1}{B}{G}: Target creature you control with toxic gains deathtouch until end of turn.
Ability ability = new SimpleActivatedAbility(
new GainAbilityTargetEffect(DeathtouchAbility.getInstance()), new ManaCostsImpl<>("{1}{B}{G}")
new GainAbilityTargetEffect(DeathtouchAbility.getInstance())
.setText("target creature you control with toxic gains deathtouch until end of turn"),
new ManaCostsImpl<>("{1}{B}{G}")
);
ability.addTarget(new TargetPermanent(filter));
this.addAbility(ability);

View file

@ -44,7 +44,9 @@ public final class Necrosquito extends CardImpl {
));
// Necrosquito gets +1/+1 for each oil counter on it.
this.addAbility(new SimpleStaticAbility(new BoostSourceEffect(xValue, xValue, Duration.WhileOnBattlefield)));
this.addAbility(new SimpleStaticAbility(new BoostSourceEffect(
xValue, xValue, Duration.WhileOnBattlefield
).setText("{this} gets +1/+1 for each oil counter on it")));
// Whenever another creature or artifact you control is put into a graveyard from the battlefield, put an oil counter on Necrosquito.
this.addAbility(new PutIntoGraveFromBattlefieldAllTriggeredAbility(

View file

@ -1,29 +1,29 @@
package mage.cards.n;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.effects.common.ReturnFromGraveyardToHandTargetEffect;
import mage.constants.ComparisonType;
import mage.constants.SubType;
import mage.abilities.keyword.ToxicAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.ComparisonType;
import mage.constants.SubType;
import mage.filter.FilterCard;
import mage.filter.common.FilterCreatureCard;
import mage.filter.predicate.mageobject.ManaValuePredicate;
import mage.target.common.TargetCardInYourGraveyard;
import java.util.UUID;
/**
* @author TheElk801
*/
public final class NimraiserPaladin extends CardImpl {
private static final FilterCard filter
= new FilterCreatureCard("creature with mana value 3 or less from your graveyard");
= new FilterCreatureCard("creature card with mana value 3 or less from your graveyard");
static {
filter.add(new ManaValuePredicate(ComparisonType.FEWER_THAN, 4));

View file

@ -50,7 +50,7 @@ public final class OilGorgerTroll extends CardImpl {
Ability ability = new EntersBattlefieldTriggeredAbility(new GainLifeEffect(3));
ability.addEffect(new ConditionalOneShotEffect(
new DrawCardSourceControllerEffect(1), condition,
"then if you control a permanent with an oil counter on it, draw a card"
"Then if you control a permanent with an oil counter on it, draw a card"
));
this.addAbility(ability.addHint(hint));
}

View file

@ -1,7 +1,5 @@
package mage.cards.p;
import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
@ -11,18 +9,21 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.TargetController;
import java.util.UUID;
/**
*
* @author Loki
*/
public final class PhyrexianArena extends CardImpl {
public PhyrexianArena(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{B}{B}");
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{B}{B}");
// At the beginning of your upkeep, you draw a card and you lose 1 life.
Ability ability = new BeginningOfUpkeepTriggeredAbility(new DrawCardSourceControllerEffect(1), TargetController.YOU, false);
ability.addEffect(new LoseLifeSourceControllerEffect(1));
Ability ability = new BeginningOfUpkeepTriggeredAbility(
new DrawCardSourceControllerEffect(1, "you"), TargetController.YOU, false
);
ability.addEffect(new LoseLifeSourceControllerEffect(1).concatBy("and"));
this.addAbility(ability);
}

View file

@ -44,7 +44,7 @@ class PhyrexianAtlasEffect extends OneShotEffect {
PhyrexianAtlasEffect() {
super(Outcome.Benefit);
staticText = "each opponent with three or more poison counters loses 1 life";
staticText = "each opponent who has three or more poison counters loses 1 life";
}
private PhyrexianAtlasEffect(final PhyrexianAtlasEffect effect) {

View file

@ -88,6 +88,6 @@ class PhyrexianObliteratorTriggeredAbility extends TriggeredAbilityImpl {
@Override
public String getRule() {
return "Whenever a source deals damage to {this}, that source's controller sacrifices that many permanents";
return "Whenever a source deals damage to {this}, that source's controller sacrifices that many permanents.";
}
}

View file

@ -40,7 +40,7 @@ public final class RebelSalvo extends CardImpl {
this.getSpellAbility().addEffect(new DamageTargetEffect(5));
this.getSpellAbility().addTarget(new TargetCreatureOrPlaneswalker());
this.getSpellAbility().addEffect(new LoseAbilityTargetEffect(IndestructibleAbility.getInstance())
.setText("that permanent loses indestructible unil end of turn"));
.setText("that permanent loses indestructible until end of turn"));
}
private RebelSalvo(final RebelSalvo card) {

View file

@ -1,7 +1,5 @@
package mage.cards.s;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.SimpleActivatedAbility;
@ -11,14 +9,16 @@ import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
import mage.abilities.effects.keyword.ScryEffect;
import mage.constants.SubType;
import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.counters.CounterType;
import mage.filter.StaticFilters;
import java.util.UUID;
/**
* @author TheElk801
*/
@ -46,7 +46,7 @@ public final class SerumSovereign extends CardImpl {
new DrawCardSourceControllerEffect(1), new ManaCostsImpl<>("{U}")
);
ability.addCost(new RemoveCountersSourceCost(CounterType.OIL.createInstance()));
ability.addEffect(new ScryEffect(2));
ability.addEffect(new ScryEffect(2).concatBy(", then"));
this.addAbility(ability);
}

View file

@ -1,23 +1,18 @@
package mage.cards.t;
import java.util.Objects;
import java.util.Optional;
import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.CompositeCost;
import mage.abilities.costs.common.RemoveCounterCost;
import mage.abilities.costs.common.RemoveVariableCountersTargetCost;
import mage.abilities.costs.common.SacrificeSourceCost;
import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.effects.common.DamageTargetEffect;
import mage.abilities.effects.common.DestroyAllEffect;
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
import mage.constants.SuperType;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SuperType;
import mage.counters.CounterType;
import mage.filter.FilterPermanent;
import mage.filter.StaticFilters;
@ -29,6 +24,10 @@ import mage.game.permanent.Permanent;
import mage.target.TargetPermanent;
import mage.target.common.TargetAnyTarget;
import java.util.Objects;
import java.util.Optional;
import java.util.UUID;
/**
* @author TheElk801
*/
@ -61,7 +60,7 @@ public final class TheFiligreeSylex extends CardImpl {
this.addAbility(ability);
// {T}, Remove ten oil counters from among permanents you control and sacrifice The Filigree Sylex: It deals 10 damage to any target.
ability = new SimpleActivatedAbility(new DamageTargetEffect(10), new TapSourceCost());
ability = new SimpleActivatedAbility(new DamageTargetEffect(10, "it"), new TapSourceCost());
ability.addCost(new CompositeCost(
new RemoveCounterCost(new TargetPermanent(
0, Integer.MAX_VALUE,

View file

@ -25,12 +25,11 @@ import mage.target.common.TargetCreaturePermanent;
import java.util.UUID;
/**
*
* @author AhmadYProjects
*/
public final class TheSeedcore extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("1/1 creature");
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("1/1 creature");
static {
filter.add(new PowerPredicate(ComparisonType.EQUAL_TO, 1));
@ -51,8 +50,8 @@ public final class TheSeedcore extends CardImpl {
Zone.BATTLEFIELD,
new BoostTargetEffect(2, 1, Duration.EndOfTurn),
new TapSourceCost(),
CorruptedCondition.instance,
"{T}: Target 1/1 creature gets +2/+1 until end of turn. Activate only if an opponent has three or more poison counters.").setAbilityWord(AbilityWord.CORRUPTED).addHint(CorruptedCondition.getHint());
CorruptedCondition.instance
).setAbilityWord(AbilityWord.CORRUPTED).addHint(CorruptedCondition.getHint());
ability.addTarget(new TargetCreaturePermanent(filter));
this.addAbility(ability);
}
@ -66,6 +65,7 @@ public final class TheSeedcore extends CardImpl {
return new TheSeedcore(this);
}
}
class TheSeedcoreManaBuilder extends ConditionalManaBuilder {
@Override
@ -76,7 +76,7 @@ class TheSeedcoreManaBuilder extends ConditionalManaBuilder {
@Override
public String getRule() {
return "Spend this mana only to cast a Phyrexian creature spell.";
return "Spend this mana only to cast Phyrexian creature spells.";
}
}
@ -84,7 +84,7 @@ class TheSeedcoreConditionalMana extends ConditionalMana {
TheSeedcoreConditionalMana(Mana mana) {
super(mana);
staticText = "Spend this mana only to cast a Phyrexian creature spell.";
staticText = "Spend this mana only to cast Phyrexian creature spells.";
addCondition(new mage.cards.t.TheSeedcoreManaCondition());
}
}

View file

@ -1,7 +1,5 @@
package mage.cards.t;
import java.util.UUID;
import mage.abilities.dynamicvalue.common.ManacostVariableValue;
import mage.abilities.effects.common.continuous.BoostTargetEffect;
import mage.abilities.effects.common.continuous.GainAbilityTargetEffect;
@ -13,6 +11,8 @@ import mage.constants.CardType;
import mage.constants.Duration;
import mage.target.common.TargetControlledCreaturePermanent;
import java.util.UUID;
/**
* @author TheElk801
*/
@ -24,7 +24,7 @@ public final class TyvarsStand extends CardImpl {
// Target creature you control gets +X/+X and gains hexproof and indestructible until end of turn.
this.getSpellAbility().addEffect(new BoostTargetEffect(
ManacostVariableValue.REGULAR, ManacostVariableValue.REGULAR, Duration.EndOfTurn
));
).setText("target creature you control gets +X/+X"));
this.getSpellAbility().addEffect(new GainAbilityTargetEffect(HexproofAbility.getInstance())
.setText("and gains hexproof"));
this.getSpellAbility().addEffect(new GainAbilityTargetEffect(IndestructibleAbility.getInstance())

View file

@ -48,13 +48,14 @@ public final class UnctusGrandMetatect extends CardImpl {
this.addAbility(new SimpleStaticAbility(new GainAbilityControlledEffect(
new BecomesTappedSourceTriggeredAbility(
new DrawDiscardControllerEffect(1, 1)
), Duration.WhileOnBattlefield, filter, true
).setTriggerPhrase("Whenever this creature becomes tapped, "),
Duration.WhileOnBattlefield, filter, true
)));
// Other artifact creatures you control get +1/+1.
this.addAbility(new SimpleStaticAbility(new BoostControlledEffect(
1, 1, Duration.WhileOnBattlefield,
StaticFilters.FILTER_PERMANENT_ARTIFACT_CREATURE, true
StaticFilters.FILTER_PERMANENTS_ARTIFACT_CREATURE, true
)));
// {U/P}: Until end of turn, target creature you control becomes a blue artifact in addition to its other colors and types. Activate only as a sorcery.

View file

@ -5,7 +5,8 @@ import mage.abilities.effects.common.counter.ProliferateEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.filter.StaticFilters;
import mage.filter.FilterCard;
import mage.filter.common.FilterCreatureCard;
import mage.target.common.TargetCardInGraveyard;
import java.util.UUID;
@ -15,12 +16,14 @@ import java.util.UUID;
*/
public final class VatEmergence extends CardImpl {
private static final FilterCard filter = new FilterCreatureCard("creature card from a graveyard");
public VatEmergence(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{B}");
// Put target creature card from a graveyard onto the battlefield under your control. Proliferate.
this.getSpellAbility().addEffect(new ReturnFromGraveyardToBattlefieldTargetEffect());
this.getSpellAbility().addTarget(new TargetCardInGraveyard(StaticFilters.FILTER_CARD_CREATURE));
this.getSpellAbility().addTarget(new TargetCardInGraveyard(filter));
this.getSpellAbility().addEffect(new ProliferateEffect());
}

View file

@ -58,8 +58,8 @@ public class VerifyCardDataTest {
private static final Logger logger = Logger.getLogger(VerifyCardDataTest.class);
private static final String FULL_ABILITIES_CHECK_SET_CODE = "ONE"; // check all abilities and output cards with wrong abilities texts;
private static final boolean CHECK_ONLY_ABILITIES_TEXT = false; // use when checking text locally, suppresses unnecessary checks and output messages
private static final String FULL_ABILITIES_CHECK_SET_CODE = "MOC"; // check all abilities and output cards with wrong abilities texts;
private static final boolean AUTO_FIX_SAMPLE_DECKS = false; // debug only: auto-fix sample decks by test_checkSampleDecks test run

View file

@ -4,6 +4,7 @@ import mage.MageObject;
import mage.abilities.effects.Effect;
import mage.abilities.effects.common.DoIfCostPaid;
import mage.constants.AbilityType;
import mage.constants.AbilityWord;
import mage.constants.Zone;
import mage.game.Game;
import mage.game.events.GameEvent;
@ -330,6 +331,12 @@ public abstract class TriggeredAbilityImpl extends AbilityImpl implements Trigge
return optional;
}
@Override
public TriggeredAbilityImpl setAbilityWord(AbilityWord abilityWord) {
super.setAbilityWord(abilityWord);
return this;
}
public static boolean isInUseableZoneDiesTrigger(TriggeredAbility source, GameEvent event, Game game) {
// Get the source permanent of the ability
MageObject sourceObject = null;