Improved target messages fot multi-mode cards

This commit is contained in:
Oleg Agafonov 2019-01-21 16:19:10 +04:00
parent 6f4d04121d
commit 53d37eca16
15 changed files with 87 additions and 102 deletions

View file

@ -1,7 +1,5 @@
package mage.cards.d; package mage.cards.d;
import java.util.UUID;
import mage.abilities.Mode; import mage.abilities.Mode;
import mage.abilities.effects.common.DestroyTargetEffect; import mage.abilities.effects.common.DestroyTargetEffect;
import mage.abilities.effects.common.ReturnFromGraveyardToHandTargetEffect; import mage.abilities.effects.common.ReturnFromGraveyardToHandTargetEffect;
@ -13,19 +11,21 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
import mage.target.common.TargetCardInYourGraveyard; import mage.target.common.TargetCardInYourGraveyard;
import mage.target.common.TargetEnchantmentPermanent; import mage.target.common.TargetEnchantmentPermanent;
import java.util.UUID;
/** /**
*
* @author LevelX2 * @author LevelX2
*/ */
public final class DawnToDusk extends CardImpl { public final class DawnToDusk extends CardImpl {
private static final FilterCard filterCard = new FilterCard("enchantment card from your graveyard"); private static final FilterCard filterCard = new FilterCard("enchantment card from your graveyard");
static { static {
filterCard.add(new CardTypePredicate(CardType.ENCHANTMENT)); filterCard.add(new CardTypePredicate(CardType.ENCHANTMENT));
} }
public DawnToDusk(UUID ownerId, CardSetInfo setInfo) { public DawnToDusk(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{W}{W}"); super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{W}{W}");
// Choose one or both - // Choose one or both -
@ -33,11 +33,11 @@ public final class DawnToDusk extends CardImpl {
this.getSpellAbility().getModes().setMaxModes(2); this.getSpellAbility().getModes().setMaxModes(2);
// Return target enchantment card from your graveyard to your hand; // Return target enchantment card from your graveyard to your hand;
this.getSpellAbility().addEffect(new ReturnFromGraveyardToHandTargetEffect()); this.getSpellAbility().addEffect(new ReturnFromGraveyardToHandTargetEffect());
this.getSpellAbility().addTarget(new TargetCardInYourGraveyard(filterCard)); this.getSpellAbility().addTarget(new TargetCardInYourGraveyard(filterCard).withChooseHint("return from graveyard to hand"));
// and/or destroy target enchantment. // and/or destroy target enchantment.
Mode mode = new Mode(); Mode mode = new Mode();
mode.addEffect(new DestroyTargetEffect()); mode.addEffect(new DestroyTargetEffect());
mode.addTarget(new TargetEnchantmentPermanent()); mode.addTarget(new TargetEnchantmentPermanent().withChooseHint("destroy"));
this.getSpellAbility().addMode(mode); this.getSpellAbility().addMode(mode);
} }

View file

@ -1,7 +1,5 @@
package mage.cards.f; package mage.cards.f;
import java.util.UUID;
import mage.abilities.Mode; import mage.abilities.Mode;
import mage.abilities.effects.common.DestroyTargetEffect; import mage.abilities.effects.common.DestroyTargetEffect;
import mage.cards.CardImpl; import mage.cards.CardImpl;
@ -10,25 +8,26 @@ import mage.constants.CardType;
import mage.target.common.TargetArtifactPermanent; import mage.target.common.TargetArtifactPermanent;
import mage.target.common.TargetNonBasicLandPermanent; import mage.target.common.TargetNonBasicLandPermanent;
import java.util.UUID;
/** /**
*
* @author BetaSteward_at_googlemail.com * @author BetaSteward_at_googlemail.com
*/ */
public final class FissureVent extends CardImpl { public final class FissureVent extends CardImpl {
public FissureVent(UUID ownerId, CardSetInfo setInfo) { public FissureVent(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{R}{R}"); super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{R}{R}");
// Choose one or both - Destroy target artifact; and/or destroy target nonbasic land. // Choose one or both - Destroy target artifact; and/or destroy target nonbasic land.
this.getSpellAbility().getModes().setMinModes(1); this.getSpellAbility().getModes().setMinModes(1);
this.getSpellAbility().getModes().setMaxModes(2); this.getSpellAbility().getModes().setMaxModes(2);
this.getSpellAbility().addTarget(new TargetArtifactPermanent());
this.getSpellAbility().addEffect(new DestroyTargetEffect()); this.getSpellAbility().addEffect(new DestroyTargetEffect());
this.getSpellAbility().addTarget(new TargetArtifactPermanent().withChooseHint("destroy"));
Mode mode1 = new Mode(); Mode mode1 = new Mode();
mode1.addTarget(new TargetNonBasicLandPermanent());
mode1.addEffect(new DestroyTargetEffect()); mode1.addEffect(new DestroyTargetEffect());
mode1.addTarget(new TargetNonBasicLandPermanent().withChooseHint("destroy"));
this.getSpellAbility().addMode(mode1); this.getSpellAbility().addMode(mode1);
} }

View file

@ -1,7 +1,5 @@
package mage.cards.f; package mage.cards.f;
import java.util.UUID;
import mage.abilities.Mode; import mage.abilities.Mode;
import mage.abilities.effects.common.ReturnToHandTargetEffect; import mage.abilities.effects.common.ReturnToHandTargetEffect;
import mage.cards.CardImpl; import mage.cards.CardImpl;
@ -11,8 +9,9 @@ import mage.filter.StaticFilters;
import mage.filter.common.FilterArtifactCard; import mage.filter.common.FilterArtifactCard;
import mage.target.common.TargetCardInYourGraveyard; import mage.target.common.TargetCardInYourGraveyard;
import java.util.UUID;
/** /**
*
* @author fireshoes * @author fireshoes
*/ */
public final class FortuitousFind extends CardImpl { public final class FortuitousFind extends CardImpl {
@ -26,12 +25,12 @@ public final class FortuitousFind extends CardImpl {
// Return target artifact card from your graveyard to your hand.; // Return target artifact card from your graveyard to your hand.;
this.getSpellAbility().addEffect(new ReturnToHandTargetEffect()); this.getSpellAbility().addEffect(new ReturnToHandTargetEffect());
this.getSpellAbility().addTarget(new TargetCardInYourGraveyard(new FilterArtifactCard("artifact card from your graveyard"))); this.getSpellAbility().addTarget(new TargetCardInYourGraveyard(new FilterArtifactCard("artifact card from your graveyard")).withChooseHint("return to hand"));
// or Return target creature card from your graveyard to your hand. // or Return target creature card from your graveyard to your hand.
Mode mode = new Mode(); Mode mode = new Mode();
mode.addEffect(new ReturnToHandTargetEffect()); mode.addEffect(new ReturnToHandTargetEffect());
mode.addTarget(new TargetCardInYourGraveyard(StaticFilters.FILTER_CARD_CREATURE_YOUR_GRAVEYARD)); mode.addTarget(new TargetCardInYourGraveyard(StaticFilters.FILTER_CARD_CREATURE_YOUR_GRAVEYARD).withChooseHint("return to hand"));
this.getSpellAbility().addMode(mode); this.getSpellAbility().addMode(mode);
} }

View file

@ -1,7 +1,5 @@
package mage.cards.g; package mage.cards.g;
import java.util.UUID;
import mage.abilities.Mode; import mage.abilities.Mode;
import mage.abilities.effects.common.ReturnToHandTargetEffect; import mage.abilities.effects.common.ReturnToHandTargetEffect;
import mage.cards.CardImpl; import mage.cards.CardImpl;
@ -11,8 +9,9 @@ import mage.filter.StaticFilters;
import mage.filter.common.FilterLandCard; import mage.filter.common.FilterLandCard;
import mage.target.common.TargetCardInYourGraveyard; import mage.target.common.TargetCardInYourGraveyard;
import java.util.UUID;
/** /**
*
* @author North * @author North
*/ */
public final class GrimDiscovery extends CardImpl { public final class GrimDiscovery extends CardImpl {
@ -27,11 +26,11 @@ public final class GrimDiscovery extends CardImpl {
this.getSpellAbility().getModes().setMaxModes(2); this.getSpellAbility().getModes().setMaxModes(2);
// Return target creature card from your graveyard to your hand; // Return target creature card from your graveyard to your hand;
this.getSpellAbility().addEffect(new ReturnToHandTargetEffect()); this.getSpellAbility().addEffect(new ReturnToHandTargetEffect());
this.getSpellAbility().addTarget(new TargetCardInYourGraveyard(StaticFilters.FILTER_CARD_CREATURE_YOUR_GRAVEYARD)); this.getSpellAbility().addTarget(new TargetCardInYourGraveyard(StaticFilters.FILTER_CARD_CREATURE_YOUR_GRAVEYARD).withChooseHint("return to hand"));
// and/or return target land card from your graveyard to your hand. // and/or return target land card from your graveyard to your hand.
Mode mode1 = new Mode(); Mode mode1 = new Mode();
mode1.addEffect(new ReturnToHandTargetEffect()); mode1.addEffect(new ReturnToHandTargetEffect());
mode1.addTarget(new TargetCardInYourGraveyard(filterLandCard)); mode1.addTarget(new TargetCardInYourGraveyard(filterLandCard).withChooseHint("return to hand"));
this.getSpellAbility().addMode(mode1); this.getSpellAbility().addMode(mode1);
} }

View file

@ -1,7 +1,5 @@
package mage.cards.r; package mage.cards.r;
import java.util.UUID;
import mage.abilities.Mode; import mage.abilities.Mode;
import mage.abilities.effects.common.DestroyTargetEffect; import mage.abilities.effects.common.DestroyTargetEffect;
import mage.cards.CardImpl; import mage.cards.CardImpl;
@ -11,31 +9,31 @@ import mage.target.common.TargetArtifactPermanent;
import mage.target.common.TargetEnchantmentPermanent; import mage.target.common.TargetEnchantmentPermanent;
import mage.target.common.TargetLandPermanent; import mage.target.common.TargetLandPermanent;
/** import java.util.UUID;
*
* @author noxx
/**
* @author noxx
*/ */
public final class RainOfThorns extends CardImpl { public final class RainOfThorns extends CardImpl {
public RainOfThorns(UUID ownerId, CardSetInfo setInfo) { public RainOfThorns(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{G}{G}"); super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{G}{G}");
// Choose one or more - Destroy target artifact; destroy target enchantment; and/or destroy target land. // Choose one or more - Destroy target artifact; destroy target enchantment; and/or destroy target land.
this.getSpellAbility().addEffect(new DestroyTargetEffect()); this.getSpellAbility().addEffect(new DestroyTargetEffect());
this.getSpellAbility().addTarget(new TargetArtifactPermanent()); this.getSpellAbility().addTarget(new TargetArtifactPermanent().withChooseHint("destroy"));
this.getSpellAbility().getModes().setMaxModes(1); this.getSpellAbility().getModes().setMaxModes(1);
this.getSpellAbility().getModes().setMaxModes(3); this.getSpellAbility().getModes().setMaxModes(3);
Mode mode1 = new Mode(); Mode mode1 = new Mode();
mode1.addEffect(new DestroyTargetEffect()); mode1.addEffect(new DestroyTargetEffect());
mode1.addTarget(new TargetEnchantmentPermanent()); mode1.addTarget(new TargetEnchantmentPermanent().withChooseHint("destroy"));
this.getSpellAbility().addMode(mode1); this.getSpellAbility().addMode(mode1);
Mode mode2 = new Mode(); Mode mode2 = new Mode();
mode2.addEffect(new DestroyTargetEffect()); mode2.addEffect(new DestroyTargetEffect());
mode2.addTarget(new TargetLandPermanent()); mode2.addTarget(new TargetLandPermanent().withChooseHint("destroy"));
this.getSpellAbility().addMode(mode2); this.getSpellAbility().addMode(mode2);
} }

View file

@ -1,7 +1,5 @@
package mage.cards.r; package mage.cards.r;
import java.util.UUID;
import mage.abilities.Mode; import mage.abilities.Mode;
import mage.abilities.effects.common.ReturnToHandTargetEffect; import mage.abilities.effects.common.ReturnToHandTargetEffect;
import mage.cards.CardImpl; import mage.cards.CardImpl;
@ -11,8 +9,9 @@ import mage.filter.StaticFilters;
import mage.filter.common.FilterArtifactCard; import mage.filter.common.FilterArtifactCard;
import mage.target.common.TargetCardInYourGraveyard; import mage.target.common.TargetCardInYourGraveyard;
import java.util.UUID;
/** /**
*
* @author North * @author North
*/ */
public final class RememberTheFallen extends CardImpl { public final class RememberTheFallen extends CardImpl {
@ -28,12 +27,12 @@ public final class RememberTheFallen extends CardImpl {
// Return target creature card from your graveyard to your hand. // Return target creature card from your graveyard to your hand.
this.getSpellAbility().addEffect(new ReturnToHandTargetEffect()); this.getSpellAbility().addEffect(new ReturnToHandTargetEffect());
this.getSpellAbility().addTarget(new TargetCardInYourGraveyard(StaticFilters.FILTER_CARD_CREATURE_YOUR_GRAVEYARD)); this.getSpellAbility().addTarget(new TargetCardInYourGraveyard(StaticFilters.FILTER_CARD_CREATURE_YOUR_GRAVEYARD).withChooseHint("return to hand"));
// Return target artifact card from your graveyard to your hand. // Return target artifact card from your graveyard to your hand.
Mode mode = new Mode(); Mode mode = new Mode();
mode.addEffect(new ReturnToHandTargetEffect()); mode.addEffect(new ReturnToHandTargetEffect());
mode.addTarget(new TargetCardInYourGraveyard(filterArtifact)); mode.addTarget(new TargetCardInYourGraveyard(filterArtifact).withChooseHint("return to hand"));
this.getSpellAbility().addMode(mode); this.getSpellAbility().addMode(mode);
} }

View file

@ -1,7 +1,5 @@
package mage.cards.r; package mage.cards.r;
import java.util.UUID;
import mage.abilities.Mode; import mage.abilities.Mode;
import mage.abilities.effects.common.ReturnFromGraveyardToHandTargetEffect; import mage.abilities.effects.common.ReturnFromGraveyardToHandTargetEffect;
import mage.cards.CardImpl; import mage.cards.CardImpl;
@ -12,8 +10,9 @@ import mage.filter.StaticFilters;
import mage.filter.predicate.mageobject.CardTypePredicate; import mage.filter.predicate.mageobject.CardTypePredicate;
import mage.target.common.TargetCardInYourGraveyard; import mage.target.common.TargetCardInYourGraveyard;
import java.util.UUID;
/** /**
*
* @author LevelX2 * @author LevelX2
*/ */
public final class RevivingMelody extends CardImpl { public final class RevivingMelody extends CardImpl {
@ -33,11 +32,11 @@ public final class RevivingMelody extends CardImpl {
//Return target creature card from your graveyard to your hand; //Return target creature card from your graveyard to your hand;
this.getSpellAbility().addEffect(new ReturnFromGraveyardToHandTargetEffect()); this.getSpellAbility().addEffect(new ReturnFromGraveyardToHandTargetEffect());
this.getSpellAbility().addTarget(new TargetCardInYourGraveyard(StaticFilters.FILTER_CARD_CREATURE_YOUR_GRAVEYARD)); this.getSpellAbility().addTarget(new TargetCardInYourGraveyard(StaticFilters.FILTER_CARD_CREATURE_YOUR_GRAVEYARD).withChooseHint("return to hand"));
// and/or return target enchantment card from your graveyard to your hand. // and/or return target enchantment card from your graveyard to your hand.
Mode mode = new Mode(); Mode mode = new Mode();
mode.addEffect(new ReturnFromGraveyardToHandTargetEffect()); mode.addEffect(new ReturnFromGraveyardToHandTargetEffect());
mode.addTarget(new TargetCardInYourGraveyard(filterCard)); mode.addTarget(new TargetCardInYourGraveyard(filterCard).withChooseHint("return to hand"));
this.getSpellAbility().addMode(mode); this.getSpellAbility().addMode(mode);
} }

View file

@ -1,7 +1,5 @@
package mage.cards.s; package mage.cards.s;
import java.util.UUID;
import mage.abilities.Mode; import mage.abilities.Mode;
import mage.abilities.effects.common.CreateTokenCopyTargetEffect; import mage.abilities.effects.common.CreateTokenCopyTargetEffect;
import mage.cards.CardImpl; import mage.cards.CardImpl;
@ -10,30 +8,31 @@ import mage.constants.CardType;
import mage.target.common.TargetArtifactPermanent; import mage.target.common.TargetArtifactPermanent;
import mage.target.common.TargetCreaturePermanent; import mage.target.common.TargetCreaturePermanent;
import java.util.UUID;
/** /**
*
* @author LevelX2 * @author LevelX2
*/ */
public final class SaheelisArtistry extends CardImpl { public final class SaheelisArtistry extends CardImpl {
public SaheelisArtistry(UUID ownerId, CardSetInfo setInfo) { public SaheelisArtistry(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{U}{U}"); super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{U}{U}");
// Choose one or both // Choose one or both
this.getSpellAbility().getModes().setMinModes(1); this.getSpellAbility().getModes().setMinModes(1);
this.getSpellAbility().getModes().setMaxModes(2); this.getSpellAbility().getModes().setMaxModes(2);
// Create a token that's a copy of target artifact. // Create a token that's a copy of target artifact.
this.getSpellAbility().addTarget(new TargetArtifactPermanent());
CreateTokenCopyTargetEffect effect = new CreateTokenCopyTargetEffect(); CreateTokenCopyTargetEffect effect = new CreateTokenCopyTargetEffect();
effect.setText("Create a token that's a copy of target artifact"); effect.setText("Create a token that's a copy of target artifact");
this.getSpellAbility().addEffect(effect); this.getSpellAbility().addEffect(effect);
this.getSpellAbility().addTarget(new TargetArtifactPermanent().withChooseHint("create copy of that"));
// Create a token that's a copy of target creature, except that it's an artifact in addition to its other types. // Create a token that's a copy of target creature, except that it's an artifact in addition to its other types.
Mode mode1 = new Mode(); Mode mode1 = new Mode();
mode1.addTarget(new TargetCreaturePermanent());
effect = new CreateTokenCopyTargetEffect(); effect = new CreateTokenCopyTargetEffect();
effect.setBecomesArtifact(true); effect.setBecomesArtifact(true);
effect.setText("Create a token that's a copy of target creature, except that it's an artifact in addition to its other types"); effect.setText("Create a token that's a copy of target creature, except that it's an artifact in addition to its other types");
mode1.addEffect(effect); mode1.addEffect(effect);
mode1.addTarget(new TargetCreaturePermanent().withChooseHint("create copy of that, artifact type"));
this.getSpellAbility().addMode(mode1); this.getSpellAbility().addMode(mode1);
} }

View file

@ -1,8 +1,5 @@
package mage.cards.s; package mage.cards.s;
import java.util.List;
import java.util.UUID;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.Mode; import mage.abilities.Mode;
import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.costs.mana.GenericManaCost;
@ -29,22 +26,24 @@ import mage.players.Player;
import mage.target.TargetPlayer; import mage.target.TargetPlayer;
import mage.target.common.TargetCreaturePermanent; import mage.target.common.TargetCreaturePermanent;
import java.util.List;
import java.util.UUID;
/** /**
*
* @author LevelX2 * @author LevelX2
*/ */
public final class SavageAlliance extends CardImpl { public final class SavageAlliance extends CardImpl {
private static final FilterPlayer filterPlayer = new FilterPlayer("player whose creatures gain trample"); private static final FilterPlayer filterPlayer = new FilterPlayer();
private static final FilterCreaturePermanent filterCreature = new FilterCreaturePermanent("creature to deal 2 damage to"); private static final FilterCreaturePermanent filterCreature = new FilterCreaturePermanent();
private static final FilterPlayer filterOpponent = new FilterPlayer("opponent whose creatures get dealt damage"); private static final FilterPlayer filterOpponent = new FilterPlayer();
static { static {
filterOpponent.add(new PlayerPredicate(TargetController.OPPONENT)); filterOpponent.add(new PlayerPredicate(TargetController.OPPONENT));
} }
public SavageAlliance(UUID ownerId, CardSetInfo setInfo) { public SavageAlliance(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{R}"); super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{R}");
// Escalate {1} // Escalate {1}
this.addAbility(new EscalateAbility(new GenericManaCost(1))); this.addAbility(new EscalateAbility(new GenericManaCost(1)));
@ -55,20 +54,20 @@ public final class SavageAlliance extends CardImpl {
// Creatures target player controls gain trample until end of turn. // Creatures target player controls gain trample until end of turn.
this.getSpellAbility().addEffect(new SavageAllianceGainTrampleEffect()); this.getSpellAbility().addEffect(new SavageAllianceGainTrampleEffect());
this.getSpellAbility().addTarget(new TargetPlayer(1, 1, false, filterPlayer)); this.getSpellAbility().addTarget(new TargetPlayer(1, 1, false, filterPlayer).withChooseHint("whose creatures gain trample"));
// Savage Alliance deals 2 damage to target creature.; // Savage Alliance deals 2 damage to target creature.;
Mode mode = new Mode(); Mode mode = new Mode();
Effect effect = new DamageTargetEffect(2); Effect effect = new DamageTargetEffect(2);
effect.setText("{this} deals 2 damage to target creature"); effect.setText("{this} deals 2 damage to target creature");
mode.addEffect(effect); mode.addEffect(effect);
mode.addTarget(new TargetCreaturePermanent(filterCreature)); mode.addTarget(new TargetCreaturePermanent(filterCreature).withChooseHint("deals 2 damage to"));
this.getSpellAbility().addMode(mode); this.getSpellAbility().addMode(mode);
// Savage Alliance deals 1 damage to each creature target opponent controls. // Savage Alliance deals 1 damage to each creature target opponent controls.
mode = new Mode(); mode = new Mode();
mode.addEffect(new SavageAllianceDamageEffect()); mode.addEffect(new SavageAllianceDamageEffect());
mode.addTarget(new TargetPlayer(1, 1, false, filterOpponent)); mode.addTarget(new TargetPlayer(1, 1, false, filterOpponent).withChooseHint("whose creatures get dealt 1 damage"));
this.getSpellAbility().addMode(mode); this.getSpellAbility().addMode(mode);
} }

View file

@ -1,7 +1,5 @@
package mage.cards.s; package mage.cards.s;
import java.util.UUID;
import mage.abilities.Mode; import mage.abilities.Mode;
import mage.abilities.effects.common.CounterTargetEffect; import mage.abilities.effects.common.CounterTargetEffect;
import mage.abilities.effects.common.ReturnFromGraveyardToHandTargetEffect; import mage.abilities.effects.common.ReturnFromGraveyardToHandTargetEffect;
@ -12,8 +10,9 @@ import mage.filter.StaticFilters;
import mage.target.TargetSpell; import mage.target.TargetSpell;
import mage.target.common.TargetCardInYourGraveyard; import mage.target.common.TargetCardInYourGraveyard;
import java.util.UUID;
/** /**
*
* @author jeffwadsworth * @author jeffwadsworth
*/ */
public final class SoulManipulation extends CardImpl { public final class SoulManipulation extends CardImpl {
@ -27,12 +26,12 @@ public final class SoulManipulation extends CardImpl {
// Counter target creature spell; // Counter target creature spell;
this.getSpellAbility().addEffect(new CounterTargetEffect()); this.getSpellAbility().addEffect(new CounterTargetEffect());
this.getSpellAbility().addTarget(new TargetSpell(StaticFilters.FILTER_SPELL_CREATURE)); this.getSpellAbility().addTarget(new TargetSpell(StaticFilters.FILTER_SPELL_CREATURE).withChooseHint("counter it"));
// and/or return target creature card from your graveyard to your hand. // and/or return target creature card from your graveyard to your hand.
Mode mode = new Mode(); Mode mode = new Mode();
mode.addEffect(new ReturnFromGraveyardToHandTargetEffect()); mode.addEffect(new ReturnFromGraveyardToHandTargetEffect());
mode.addTarget(new TargetCardInYourGraveyard(StaticFilters.FILTER_CARD_CREATURE_YOUR_GRAVEYARD)); mode.addTarget(new TargetCardInYourGraveyard(StaticFilters.FILTER_CARD_CREATURE_YOUR_GRAVEYARD).withChooseHint("return it to hand"));
this.getSpellAbility().addMode(mode); this.getSpellAbility().addMode(mode);
} }

View file

@ -1,7 +1,5 @@
package mage.cards.s; package mage.cards.s;
import java.util.UUID;
import mage.abilities.Mode; import mage.abilities.Mode;
import mage.abilities.effects.common.continuous.BoostTargetEffect; import mage.abilities.effects.common.continuous.BoostTargetEffect;
import mage.abilities.effects.common.counter.AddCountersTargetEffect; import mage.abilities.effects.common.counter.AddCountersTargetEffect;
@ -12,14 +10,15 @@ import mage.constants.Duration;
import mage.counters.CounterType; import mage.counters.CounterType;
import mage.target.common.TargetCreaturePermanent; import mage.target.common.TargetCreaturePermanent;
import java.util.UUID;
/** /**
*
* @author LevelX2 * @author LevelX2
*/ */
public final class SubtleStrike extends CardImpl { public final class SubtleStrike extends CardImpl {
public SubtleStrike(UUID ownerId, CardSetInfo setInfo) { public SubtleStrike(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{B}"); super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{B}");
// Choose one or both // Choose one or both
this.getSpellAbility().getModes().setMinModes(1); this.getSpellAbility().getModes().setMinModes(1);
@ -28,15 +27,14 @@ public final class SubtleStrike extends CardImpl {
BoostTargetEffect minusOneMinusOne = new BoostTargetEffect(-1, -1, Duration.EndOfTurn); BoostTargetEffect minusOneMinusOne = new BoostTargetEffect(-1, -1, Duration.EndOfTurn);
minusOneMinusOne.setText("Target creature gets -1/-1 until end of turn"); minusOneMinusOne.setText("Target creature gets -1/-1 until end of turn");
this.getSpellAbility().addEffect(minusOneMinusOne); this.getSpellAbility().addEffect(minusOneMinusOne);
this.getSpellAbility().addTarget(new TargetCreaturePermanent()); this.getSpellAbility().addTarget(new TargetCreaturePermanent().withChooseHint("gets -1/-1 until end of turn"));
// Put a +1/+1 counter on target creature. // Put a +1/+1 counter on target creature.
Mode mode1 = new Mode(); Mode mode1 = new Mode();
AddCountersTargetEffect plusOnePlusOneCounter = new AddCountersTargetEffect(CounterType.P1P1.createInstance()); AddCountersTargetEffect plusOnePlusOneCounter = new AddCountersTargetEffect(CounterType.P1P1.createInstance());
plusOnePlusOneCounter.setText("Put a +1/+1 counter on target creature"); plusOnePlusOneCounter.setText("Put a +1/+1 counter on target creature");
mode1.addEffect(plusOnePlusOneCounter); mode1.addEffect(plusOnePlusOneCounter);
mode1.addTarget(new TargetCreaturePermanent()); mode1.addTarget(new TargetCreaturePermanent().withChooseHint("gets +1/+1 counter"));
this.getSpellAbility().addMode(mode1); this.getSpellAbility().addMode(mode1);
} }
public SubtleStrike(final SubtleStrike card) { public SubtleStrike(final SubtleStrike card) {

View file

@ -24,11 +24,11 @@ public final class SwirlingTorrent extends CardImpl {
// Put target creature on top of its owner's library. // Put target creature on top of its owner's library.
this.getSpellAbility().addEffect(new PutOnLibraryTargetEffect(true)); this.getSpellAbility().addEffect(new PutOnLibraryTargetEffect(true));
this.getSpellAbility().addTarget(new TargetCreaturePermanent()); this.getSpellAbility().addTarget(new TargetCreaturePermanent().withChooseHint("put on library top"));
// Return target creature to its owner's hand. // Return target creature to its owner's hand.
Mode mode = new Mode(new ReturnToHandTargetEffect()); Mode mode = new Mode(new ReturnToHandTargetEffect());
mode.addTarget(new TargetCreaturePermanent()); mode.addTarget(new TargetCreaturePermanent().withChooseHint("return to hand"));
this.getSpellAbility().addMode(mode); this.getSpellAbility().addMode(mode);
} }

View file

@ -1,7 +1,5 @@
package mage.cards.v; package mage.cards.v;
import java.util.UUID;
import mage.abilities.Mode; import mage.abilities.Mode;
import mage.abilities.effects.common.DestroyTargetEffect; import mage.abilities.effects.common.DestroyTargetEffect;
import mage.cards.CardImpl; import mage.cards.CardImpl;
@ -10,25 +8,26 @@ import mage.constants.CardType;
import mage.target.common.TargetArtifactPermanent; import mage.target.common.TargetArtifactPermanent;
import mage.target.common.TargetLandPermanent; import mage.target.common.TargetLandPermanent;
import java.util.UUID;
/** /**
*
* @author LevelX2 * @author LevelX2
*/ */
public final class Vandalize extends CardImpl { public final class Vandalize extends CardImpl {
public Vandalize(UUID ownerId, CardSetInfo setInfo) { public Vandalize(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{R}"); super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{R}");
// Choose one or both - Destroy target artifact; or Destroy target land. // Choose one or both - Destroy target artifact; or Destroy target land.
this.getSpellAbility().getModes().setMinModes(1); this.getSpellAbility().getModes().setMinModes(1);
this.getSpellAbility().getModes().setMaxModes(2); this.getSpellAbility().getModes().setMaxModes(2);
// Destroy target artifact
this.getSpellAbility().addTarget(new TargetArtifactPermanent());
this.getSpellAbility().addEffect(new DestroyTargetEffect()); this.getSpellAbility().addEffect(new DestroyTargetEffect());
this.getSpellAbility().addTarget(new TargetArtifactPermanent().withChooseHint("destroy"));
// Destroy target land
Mode mode1 = new Mode(); Mode mode1 = new Mode();
mode1.addTarget(new TargetLandPermanent());
mode1.addEffect(new DestroyTargetEffect()); mode1.addEffect(new DestroyTargetEffect());
mode1.addTarget(new TargetLandPermanent().withChooseHint("destroy"));
this.getSpellAbility().addMode(mode1); this.getSpellAbility().addMode(mode1);
} }

View file

@ -1,7 +1,5 @@
package mage.cards.v; package mage.cards.v;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.Mode; import mage.abilities.Mode;
@ -19,8 +17,9 @@ import mage.filter.predicate.mageobject.AnotherTargetPredicate;
import mage.target.Target; import mage.target.Target;
import mage.target.common.TargetOpponent; import mage.target.common.TargetOpponent;
import java.util.UUID;
/** /**
*
* @author anonymous * @author anonymous
*/ */
public final class VindictiveLich extends CardImpl { public final class VindictiveLich extends CardImpl {
@ -33,37 +32,37 @@ public final class VindictiveLich extends CardImpl {
this.toughness = new MageInt(1); this.toughness = new MageInt(1);
// When Vindictive Lich dies, choose one or more. Each mode must target a different player. // When Vindictive Lich dies, choose one or more. Each mode must target a different player.
// *Target opponent sacrifices a creature.
// * Target opponent sacrifices a creature.
Ability ability = new DiesTriggeredAbility(new SacrificeEffect(StaticFilters.FILTER_PERMANENT_CREATURE, 1, "target opponent")); Ability ability = new DiesTriggeredAbility(new SacrificeEffect(StaticFilters.FILTER_PERMANENT_CREATURE, 1, "target opponent"));
ability.getModes().setMinModes(1); ability.getModes().setMinModes(1);
ability.getModes().setMaxModes(3); ability.getModes().setMaxModes(3);
ability.getModes().setEachModeOnlyOnce(true); ability.getModes().setEachModeOnlyOnce(true);
ability.getModes().setMaxModesFilter(new FilterOpponent("a different player")); ability.getModes().setMaxModesFilter(new FilterOpponent("a different player"));
FilterOpponent filter = new FilterOpponent();
FilterOpponent filter = new FilterOpponent("opponent (sacrifice)");
filter.add(new AnotherTargetPredicate(1, true)); filter.add(new AnotherTargetPredicate(1, true));
Target target = new TargetOpponent(filter, false); Target target = new TargetOpponent(filter, false).withChooseHint("who sacrifice a creature");
target.setTargetTag(1); target.setTargetTag(1);
ability.addTarget(target); ability.addTarget(target);
// *Target opponent discards two cards. // * Target opponent discards two cards.
Mode mode = new Mode(); Mode mode = new Mode();
mode.addEffect(new DiscardTargetEffect(2, false)); mode.addEffect(new DiscardTargetEffect(2, false));
filter = new FilterOpponent("opponent (discard)"); filter = new FilterOpponent();
filter.add(new AnotherTargetPredicate(2, true)); filter.add(new AnotherTargetPredicate(2, true));
target = new TargetOpponent(filter, false); target = new TargetOpponent(filter, false);
target.setTargetTag(2); target.setTargetTag(2);
mode.addTarget(target); mode.addTarget(target.withChooseHint("who discard a card"));
ability.addMode(mode); ability.addMode(mode);
// *Target opponent loses 5 life. // * Target opponent loses 5 life.
mode = new Mode(); mode = new Mode();
mode.addEffect(new LoseLifeTargetEffect(5)); mode.addEffect(new LoseLifeTargetEffect(5));
filter = new FilterOpponent("opponent (life loss)"); filter = new FilterOpponent();
filter.add(new AnotherTargetPredicate(3, true)); filter.add(new AnotherTargetPredicate(3, true));
target = new TargetOpponent(filter, false); target = new TargetOpponent(filter, false);
target.setTargetTag(3); target.setTargetTag(3);
mode.addTarget(target); mode.addTarget(target.withChooseHint("who lose 5 life"));
ability.addMode(mode); ability.addMode(mode);
this.addAbility(ability); this.addAbility(ability);
} }

View file

@ -1,7 +1,5 @@
package mage.cards.w; package mage.cards.w;
import java.util.UUID;
import mage.abilities.Mode; import mage.abilities.Mode;
import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.effects.common.DamageTargetEffect;
import mage.abilities.effects.common.TapTargetEffect; import mage.abilities.effects.common.TapTargetEffect;
@ -10,26 +8,27 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.target.common.TargetCreaturePermanent; import mage.target.common.TargetCreaturePermanent;
import java.util.UUID;
/** /**
*
* @author LevelX2 * @author LevelX2
*/ */
public final class Winterflame extends CardImpl { public final class Winterflame extends CardImpl {
public Winterflame(UUID ownerId, CardSetInfo setInfo) { public Winterflame(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}{R}"); super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{U}{R}");
// Choose one or both - // Choose one or both -
this.getSpellAbility().getModes().setMinModes(1); this.getSpellAbility().getModes().setMinModes(1);
this.getSpellAbility().getModes().setMaxModes(2); this.getSpellAbility().getModes().setMaxModes(2);
// *Tap target creature // * Tap target creature
this.getSpellAbility().addEffect(new TapTargetEffect()); this.getSpellAbility().addEffect(new TapTargetEffect());
this.getSpellAbility().addTarget(new TargetCreaturePermanent()); this.getSpellAbility().addTarget(new TargetCreaturePermanent().withChooseHint("tap"));
// *Winterflame deals 2 damage to target creature // * Winterflame deals 2 damage to target creature
Mode mode = new Mode(); Mode mode = new Mode();
mode.addEffect(new DamageTargetEffect(2)); mode.addEffect(new DamageTargetEffect(2));
mode.addTarget(new TargetCreaturePermanent()); mode.addTarget(new TargetCreaturePermanent().withChooseHint("deals 2 damage to"));
this.getSpellAbility().addMode(mode); this.getSpellAbility().addMode(mode);
} }