mirror of
https://github.com/correl/mage.git
synced 2024-12-01 11:09:56 +00:00
[CMR] more text fixes
This commit is contained in:
parent
d227932ff3
commit
35902ee84a
35 changed files with 179 additions and 139 deletions
|
@ -32,10 +32,10 @@ public final class AngelicArmaments extends CardImpl {
|
||||||
).setText(", has flying"));
|
).setText(", has flying"));
|
||||||
ability.addEffect(new AddCardColorAttachedEffect(
|
ability.addEffect(new AddCardColorAttachedEffect(
|
||||||
ObjectColor.WHITE, Duration.WhileOnBattlefield, AttachmentType.EQUIPMENT
|
ObjectColor.WHITE, Duration.WhileOnBattlefield, AttachmentType.EQUIPMENT
|
||||||
).setText(", and is"));
|
).setText(","));
|
||||||
ability.addEffect(new AddCardSubtypeAttachedEffect(
|
ability.addEffect(new AddCardSubtypeAttachedEffect(
|
||||||
SubType.ANGEL, Duration.WhileOnBattlefield, AttachmentType.EQUIPMENT
|
SubType.ANGEL, Duration.WhileOnBattlefield, AttachmentType.EQUIPMENT
|
||||||
).setText("white Angel in addition to its other colors and types").concatBy("a"));
|
).setText("is a white Angel in addition to its other colors and types").concatBy("and"));
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
|
|
||||||
// Equip {4}
|
// Equip {4}
|
||||||
|
|
|
@ -27,7 +27,7 @@ public final class ArmillarySphere extends CardImpl {
|
||||||
|
|
||||||
// {2}, {tap}, Sacrifice Armillary Sphere: Search your library for up to two basic land cards, reveal them, and put them into your hand. Then shuffle your library.
|
// {2}, {tap}, Sacrifice Armillary Sphere: Search your library for up to two basic land cards, reveal them, and put them into your hand. Then shuffle your library.
|
||||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
|
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
|
||||||
new SearchLibraryPutInHandEffect(new TargetCardInLibrary(0, 2, StaticFilters.FILTER_CARD_BASIC_LAND), true, true),
|
new SearchLibraryPutInHandEffect(new TargetCardInLibrary(0, 2, StaticFilters.FILTER_CARD_BASIC_LANDS), true, true),
|
||||||
new GenericManaCost(2));
|
new GenericManaCost(2));
|
||||||
ability.addCost(new TapSourceCost());
|
ability.addCost(new TapSourceCost());
|
||||||
ability.addCost(new SacrificeSourceCost());
|
ability.addCost(new SacrificeSourceCost());
|
||||||
|
|
|
@ -33,7 +33,7 @@ public final class FlamekinHerald extends CardImpl {
|
||||||
this.toughness = new MageInt(2);
|
this.toughness = new MageInt(2);
|
||||||
|
|
||||||
// Commander spells you cast have cascade.
|
// Commander spells you cast have cascade.
|
||||||
this.addAbility(new SimpleStaticAbility(new GainAbilitySpellsEffect(new CascadeAbility(), filter)));
|
this.addAbility(new SimpleStaticAbility(new GainAbilitySpellsEffect(new CascadeAbility(false), filter)));
|
||||||
}
|
}
|
||||||
|
|
||||||
private FlamekinHerald(final FlamekinHerald card) {
|
private FlamekinHerald(final FlamekinHerald card) {
|
||||||
|
|
|
@ -1,10 +1,8 @@
|
||||||
|
|
||||||
package mage.cards.i;
|
package mage.cards.i;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.abilities.Ability;
|
|
||||||
import mage.abilities.common.LandfallAbility;
|
import mage.abilities.common.LandfallAbility;
|
||||||
import mage.abilities.common.SimpleActivatedAbility;
|
import mage.abilities.common.SimpleActivatedAbility;
|
||||||
|
import mage.abilities.costs.CompositeCost;
|
||||||
import mage.abilities.costs.common.RemoveCountersSourceCost;
|
import mage.abilities.costs.common.RemoveCountersSourceCost;
|
||||||
import mage.abilities.costs.common.SacrificeSourceCost;
|
import mage.abilities.costs.common.SacrificeSourceCost;
|
||||||
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
|
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
|
||||||
|
@ -12,25 +10,30 @@ import mage.abilities.effects.common.counter.AddCountersSourceEffect;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.Zone;
|
|
||||||
import mage.counters.CounterType;
|
import mage.counters.CounterType;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author Loki
|
* @author Loki
|
||||||
*/
|
*/
|
||||||
public final class IorRuinExpedition extends CardImpl {
|
public final class IorRuinExpedition extends CardImpl {
|
||||||
|
|
||||||
public IorRuinExpedition(UUID ownerId, CardSetInfo setInfo) {
|
public IorRuinExpedition(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{U}");
|
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{U}");
|
||||||
|
|
||||||
// Landfall - Whenever a land enters the battlefield under your control, you may put a quest counter on Ior Ruin Expedition.
|
// Landfall - Whenever a land enters the battlefield under your control, you may put a quest counter on Ior Ruin Expedition.
|
||||||
this.addAbility(new LandfallAbility(new AddCountersSourceEffect(CounterType.QUEST.createInstance()), true));
|
this.addAbility(new LandfallAbility(new AddCountersSourceEffect(CounterType.QUEST.createInstance()), true));
|
||||||
|
|
||||||
// Remove three quest counters from Ior Ruin Expedition and sacrifice it: Draw two cards.
|
// Remove three quest counters from Ior Ruin Expedition and sacrifice it: Draw two cards.
|
||||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DrawCardSourceControllerEffect(2), new RemoveCountersSourceCost(CounterType.QUEST.createInstance(3)));
|
this.addAbility(new SimpleActivatedAbility(
|
||||||
ability.addCost(new SacrificeSourceCost());
|
new DrawCardSourceControllerEffect(2),
|
||||||
this.addAbility(ability);
|
new CompositeCost(
|
||||||
|
new RemoveCountersSourceCost(CounterType.QUEST.createInstance(3)),
|
||||||
|
new SacrificeSourceCost(),
|
||||||
|
"Remove three quest counters from {this} and sacrifice it"
|
||||||
|
)
|
||||||
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
public IorRuinExpedition(final IorRuinExpedition card) {
|
public IorRuinExpedition(final IorRuinExpedition card) {
|
||||||
|
|
|
@ -99,7 +99,7 @@ class KaradorGhostChieftainCastFromGraveyardEffect extends AsThoughEffectImpl {
|
||||||
|
|
||||||
KaradorGhostChieftainCastFromGraveyardEffect() {
|
KaradorGhostChieftainCastFromGraveyardEffect() {
|
||||||
super(AsThoughEffectType.PLAY_FROM_NOT_OWN_HAND_ZONE, Duration.WhileOnBattlefield, Outcome.PutCreatureInPlay, true);
|
super(AsThoughEffectType.PLAY_FROM_NOT_OWN_HAND_ZONE, Duration.WhileOnBattlefield, Outcome.PutCreatureInPlay, true);
|
||||||
staticText = "During each of your turns, you may cast a creature card from your graveyard";
|
staticText = "During each of your turns, you may cast a creature spell from your graveyard";
|
||||||
}
|
}
|
||||||
|
|
||||||
KaradorGhostChieftainCastFromGraveyardEffect(final KaradorGhostChieftainCastFromGraveyardEffect effect) {
|
KaradorGhostChieftainCastFromGraveyardEffect(final KaradorGhostChieftainCastFromGraveyardEffect effect) {
|
||||||
|
|
|
@ -1,9 +1,8 @@
|
||||||
|
|
||||||
|
|
||||||
package mage.cards.k;
|
package mage.cards.k;
|
||||||
|
|
||||||
import mage.abilities.common.LandfallAbility;
|
import mage.abilities.common.LandfallAbility;
|
||||||
import mage.abilities.common.SimpleActivatedAbility;
|
import mage.abilities.common.SimpleActivatedAbility;
|
||||||
|
import mage.abilities.costs.CompositeCost;
|
||||||
import mage.abilities.costs.common.RemoveCountersSourceCost;
|
import mage.abilities.costs.common.RemoveCountersSourceCost;
|
||||||
import mage.abilities.costs.common.SacrificeSourceCost;
|
import mage.abilities.costs.common.SacrificeSourceCost;
|
||||||
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
|
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
|
||||||
|
@ -12,7 +11,6 @@ import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.Outcome;
|
import mage.constants.Outcome;
|
||||||
import mage.constants.Zone;
|
|
||||||
import mage.counters.CounterType;
|
import mage.counters.CounterType;
|
||||||
import mage.filter.StaticFilters;
|
import mage.filter.StaticFilters;
|
||||||
import mage.target.common.TargetCardInLibrary;
|
import mage.target.common.TargetCardInLibrary;
|
||||||
|
@ -20,22 +18,25 @@ import mage.target.common.TargetCardInLibrary;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author Viserion
|
* @author Viserion
|
||||||
*/
|
*/
|
||||||
public final class KhalniHeartExpedition extends CardImpl {
|
public final class KhalniHeartExpedition extends CardImpl {
|
||||||
|
|
||||||
public KhalniHeartExpedition(UUID ownerId, CardSetInfo setInfo) {
|
public KhalniHeartExpedition(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{G}");
|
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{G}");
|
||||||
|
|
||||||
|
|
||||||
this.addAbility(new LandfallAbility(new AddCountersSourceEffect(CounterType.QUEST.createInstance()), true));
|
this.addAbility(new LandfallAbility(new AddCountersSourceEffect(CounterType.QUEST.createInstance()), true));
|
||||||
TargetCardInLibrary target = new TargetCardInLibrary(0, 2, StaticFilters.FILTER_CARD_BASIC_LAND);
|
|
||||||
SimpleActivatedAbility ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
|
this.addAbility(new SimpleActivatedAbility(
|
||||||
new SearchLibraryPutInPlayEffect(target, true, Outcome.PutLandInPlay),
|
new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(
|
||||||
new RemoveCountersSourceCost(CounterType.QUEST.createInstance(3)));
|
0, 2, StaticFilters.FILTER_CARD_BASIC_LAND
|
||||||
ability.addCost(new SacrificeSourceCost());
|
), true, Outcome.PutLandInPlay),
|
||||||
this.addAbility(ability);
|
new CompositeCost(
|
||||||
|
new RemoveCountersSourceCost(CounterType.QUEST.createInstance(3)),
|
||||||
|
new SacrificeSourceCost(),
|
||||||
|
"Remove three quest counters from {this} and sacrifice it"
|
||||||
|
)
|
||||||
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
public KhalniHeartExpedition(final KhalniHeartExpedition card) {
|
public KhalniHeartExpedition(final KhalniHeartExpedition card) {
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
package mage.cards.m;
|
package mage.cards.m;
|
||||||
|
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
|
@ -9,32 +8,34 @@ import mage.abilities.effects.common.DamageTargetEffect;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.Zone;
|
import mage.filter.common.FilterControlledPermanent;
|
||||||
import mage.filter.StaticFilters;
|
import mage.filter.predicate.Predicates;
|
||||||
import mage.target.common.TargetControlledPermanent;
|
|
||||||
import mage.target.common.TargetAnyTarget;
|
import mage.target.common.TargetAnyTarget;
|
||||||
|
import mage.target.common.TargetControlledPermanent;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author TheElk801
|
* @author TheElk801
|
||||||
*/
|
*/
|
||||||
public final class MakeshiftMunitions extends CardImpl {
|
public final class MakeshiftMunitions extends CardImpl {
|
||||||
|
|
||||||
|
private static final FilterControlledPermanent filter = new FilterControlledPermanent("artifact or creature");
|
||||||
|
|
||||||
|
static {
|
||||||
|
filter.add(Predicates.or(
|
||||||
|
CardType.ARTIFACT.getPredicate(),
|
||||||
|
CardType.CREATURE.getPredicate()
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
public MakeshiftMunitions(UUID ownerId, CardSetInfo setInfo) {
|
public MakeshiftMunitions(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{R}");
|
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{R}");
|
||||||
|
|
||||||
// {1}, Sacrifice an artifact or creature: Makeshift Munitions deals 1 damage to any target.
|
// {1}, Sacrifice an artifact or creature: Makeshift Munitions deals 1 damage to any target.
|
||||||
Ability ability = new SimpleActivatedAbility(
|
Ability ability = new SimpleActivatedAbility(new DamageTargetEffect(1), new GenericManaCost(1));
|
||||||
Zone.BATTLEFIELD,
|
ability.addCost(new SacrificeTargetCost(new TargetControlledPermanent(filter)));
|
||||||
new DamageTargetEffect(1),
|
|
||||||
new SacrificeTargetCost(new TargetControlledPermanent(StaticFilters.FILTER_CONTROLLED_PERMANENT_ARTIFACT_OR_CREATURE))
|
|
||||||
);
|
|
||||||
ability.addTarget(new TargetAnyTarget());
|
ability.addTarget(new TargetAnyTarget());
|
||||||
ability.addCost(new GenericManaCost(1));
|
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -47,7 +47,7 @@ class ManaDrainCounterEffect extends OneShotEffect {
|
||||||
|
|
||||||
public ManaDrainCounterEffect() {
|
public ManaDrainCounterEffect() {
|
||||||
super(Outcome.Benefit);
|
super(Outcome.Benefit);
|
||||||
this.staticText = "Counter target spell. At the beginning of your next main phase, add X mana of {C}, where X is that spell's converted mana cost";
|
this.staticText = "Counter target spell. At the beginning of your next main phase, add an amount of {C} equal to that spell's converted mana cost";
|
||||||
}
|
}
|
||||||
|
|
||||||
public ManaDrainCounterEffect(final ManaDrainCounterEffect effect) {
|
public ManaDrainCounterEffect(final ManaDrainCounterEffect effect) {
|
||||||
|
|
|
@ -35,7 +35,10 @@ public final class MerchantRaiders extends CardImpl {
|
||||||
this.toughness = new MageInt(4);
|
this.toughness = new MageInt(4);
|
||||||
|
|
||||||
// Whenever Merchant Raiders or another Pirate enters the battlefield under your control, tap up to one target creature. That creature doesn't untap during its controller's untap step for as long as you control Merchant Raiders.
|
// Whenever Merchant Raiders or another Pirate enters the battlefield under your control, tap up to one target creature. That creature doesn't untap during its controller's untap step for as long as you control Merchant Raiders.
|
||||||
Ability ability = new EntersBattlefieldThisOrAnotherTriggeredAbility(new TapTargetEffect(), filter,false,true);
|
Ability ability = new EntersBattlefieldThisOrAnotherTriggeredAbility(
|
||||||
|
new TapTargetEffect().setText("up to one target creature"),
|
||||||
|
filter, false, true
|
||||||
|
);
|
||||||
ability.addEffect(new MerchantRaidersEffect());
|
ability.addEffect(new MerchantRaidersEffect());
|
||||||
ability.addTarget(new TargetCreaturePermanent(0, 1));
|
ability.addTarget(new TargetCreaturePermanent(0, 1));
|
||||||
this.addAbility(ability, new MerchantRaidersWatcher());
|
this.addAbility(ability, new MerchantRaidersWatcher());
|
||||||
|
|
|
@ -67,7 +67,7 @@ class MuldrothaTheGravetideCastFromGraveyardEffect extends AsThoughEffectImpl {
|
||||||
|
|
||||||
public MuldrothaTheGravetideCastFromGraveyardEffect() {
|
public MuldrothaTheGravetideCastFromGraveyardEffect() {
|
||||||
super(AsThoughEffectType.PLAY_FROM_NOT_OWN_HAND_ZONE, Duration.WhileOnBattlefield, Outcome.Benefit, true);
|
super(AsThoughEffectType.PLAY_FROM_NOT_OWN_HAND_ZONE, Duration.WhileOnBattlefield, Outcome.Benefit, true);
|
||||||
staticText = "During each of your turns, you may play up to one permanent card of each permanent type from your graveyard. "
|
staticText = "During each of your turns, you may play a land and cast a permanent spell of each permanent type from your graveyard. "
|
||||||
+ "<i>(If a card has multiple permanent types, choose one as you play it.)</i>";
|
+ "<i>(If a card has multiple permanent types, choose one as you play it.)</i>";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -20,8 +20,8 @@ public final class NecroticHex extends CardImpl {
|
||||||
|
|
||||||
// Each player sacrifices six creatures.
|
// Each player sacrifices six creatures.
|
||||||
this.getSpellAbility().addEffect(new SacrificeAllEffect(
|
this.getSpellAbility().addEffect(new SacrificeAllEffect(
|
||||||
2, StaticFilters.FILTER_CONTROLLED_CREATURE_SHORT_TEXT
|
6, StaticFilters.FILTER_CONTROLLED_CREATURE_SHORT_TEXT
|
||||||
));
|
).setText("each player sacrifices six creatures"));
|
||||||
|
|
||||||
// You create six tapped 2/2 black creature tokens.
|
// You create six tapped 2/2 black creature tokens.
|
||||||
this.getSpellAbility().addEffect(new CreateTokenEffect(
|
this.getSpellAbility().addEffect(new CreateTokenEffect(
|
||||||
|
|
|
@ -24,7 +24,7 @@ public final class PhyrexianRager extends CardImpl {
|
||||||
this.power = new MageInt(2);
|
this.power = new MageInt(2);
|
||||||
this.toughness = new MageInt(2);
|
this.toughness = new MageInt(2);
|
||||||
Ability ability = new EntersBattlefieldTriggeredAbility(
|
Ability ability = new EntersBattlefieldTriggeredAbility(
|
||||||
new DrawCardSourceControllerEffect(1), false
|
new DrawCardSourceControllerEffect(1).setText("you draw a card"), false
|
||||||
);
|
);
|
||||||
ability.addEffect(new LoseLifeSourceControllerEffect(1).concatBy("and"));
|
ability.addEffect(new LoseLifeSourceControllerEffect(1).concatBy("and"));
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
|
|
|
@ -41,7 +41,8 @@ public final class PortRazer extends CardImpl {
|
||||||
"untap all creatures you control"
|
"untap all creatures you control"
|
||||||
), false
|
), false
|
||||||
);
|
);
|
||||||
ability.addEffect(new AdditionalCombatPhaseEffect());
|
ability.addEffect(new AdditionalCombatPhaseEffect()
|
||||||
|
.setText("After this phase, there is an additional combat phase."));
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
|
|
||||||
// Port Razer can't attack a player it has already attacked this turn.
|
// Port Razer can't attack a player it has already attacked this turn.
|
||||||
|
|
|
@ -1,45 +1,47 @@
|
||||||
|
|
||||||
package mage.cards.q;
|
package mage.cards.q;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.PutCardIntoGraveFromAnywhereAllTriggeredAbility;
|
import mage.abilities.common.PutCardIntoGraveFromAnywhereAllTriggeredAbility;
|
||||||
import mage.abilities.common.SimpleActivatedAbility;
|
import mage.abilities.common.SimpleActivatedAbility;
|
||||||
|
import mage.abilities.costs.CompositeCost;
|
||||||
import mage.abilities.costs.common.RemoveCountersSourceCost;
|
import mage.abilities.costs.common.RemoveCountersSourceCost;
|
||||||
import mage.abilities.costs.common.SacrificeSourceCost;
|
import mage.abilities.costs.common.SacrificeSourceCost;
|
||||||
import mage.abilities.effects.OneShotEffect;
|
import mage.abilities.effects.OneShotEffect;
|
||||||
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
|
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
|
||||||
import mage.cards.Card;
|
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.Outcome;
|
import mage.constants.Outcome;
|
||||||
import mage.constants.TargetController;
|
import mage.constants.TargetController;
|
||||||
import mage.constants.Zone;
|
|
||||||
import mage.counters.CounterType;
|
import mage.counters.CounterType;
|
||||||
import mage.game.Game;
|
import mage.game.Game;
|
||||||
import mage.players.Player;
|
import mage.players.Player;
|
||||||
import mage.target.TargetPlayer;
|
import mage.target.TargetPlayer;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author North
|
* @author North
|
||||||
*/
|
*/
|
||||||
public final class QuestForAncientSecrets extends CardImpl {
|
public final class QuestForAncientSecrets extends CardImpl {
|
||||||
|
|
||||||
public QuestForAncientSecrets(UUID ownerId, CardSetInfo setInfo) {
|
public QuestForAncientSecrets(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{U}");
|
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{U}");
|
||||||
|
|
||||||
|
|
||||||
// Whenever a card is put into your graveyard from anywhere, you may put a quest counter on Quest for Ancient Secrets.
|
// Whenever a card is put into your graveyard from anywhere, you may put a quest counter on Quest for Ancient Secrets.
|
||||||
this.addAbility(new PutCardIntoGraveFromAnywhereAllTriggeredAbility(
|
this.addAbility(new PutCardIntoGraveFromAnywhereAllTriggeredAbility(
|
||||||
new AddCountersSourceEffect(CounterType.QUEST.createInstance()), true, TargetController.YOU));
|
new AddCountersSourceEffect(CounterType.QUEST.createInstance()), true, TargetController.YOU
|
||||||
|
));
|
||||||
|
|
||||||
// Remove five quest counters from Quest for Ancient Secrets and sacrifice it: Target player shuffles their graveyard into their library.
|
// Remove five quest counters from Quest for Ancient Secrets and sacrifice it: Target player shuffles their graveyard into their library.
|
||||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
|
Ability ability = new SimpleActivatedAbility(
|
||||||
new QuestForAncientSecretsEffect(),
|
new QuestForAncientSecretsEffect(),
|
||||||
new RemoveCountersSourceCost(CounterType.QUEST.createInstance(5)));
|
new CompositeCost(
|
||||||
ability.addCost(new SacrificeSourceCost());
|
new RemoveCountersSourceCost(CounterType.QUEST.createInstance(5)),
|
||||||
|
new SacrificeSourceCost(),
|
||||||
|
"Remove five quest counters from {this} and sacrifice it"
|
||||||
|
)
|
||||||
|
);
|
||||||
ability.addTarget(new TargetPlayer());
|
ability.addTarget(new TargetPlayer());
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
@ -56,12 +58,12 @@ public final class QuestForAncientSecrets extends CardImpl {
|
||||||
|
|
||||||
class QuestForAncientSecretsEffect extends OneShotEffect {
|
class QuestForAncientSecretsEffect extends OneShotEffect {
|
||||||
|
|
||||||
public QuestForAncientSecretsEffect() {
|
QuestForAncientSecretsEffect() {
|
||||||
super(Outcome.Neutral);
|
super(Outcome.Neutral);
|
||||||
this.staticText = "Target player shuffles their graveyard into their library";
|
this.staticText = "Target player shuffles their graveyard into their library";
|
||||||
}
|
}
|
||||||
|
|
||||||
public QuestForAncientSecretsEffect(final QuestForAncientSecretsEffect effect) {
|
private QuestForAncientSecretsEffect(final QuestForAncientSecretsEffect effect) {
|
||||||
super(effect);
|
super(effect);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -73,13 +75,11 @@ class QuestForAncientSecretsEffect extends OneShotEffect {
|
||||||
@Override
|
@Override
|
||||||
public boolean apply(Game game, Ability source) {
|
public boolean apply(Game game, Ability source) {
|
||||||
Player player = game.getPlayer(source.getFirstTarget());
|
Player player = game.getPlayer(source.getFirstTarget());
|
||||||
if (player != null) {
|
if (player == null) {
|
||||||
for (Card card: player.getGraveyard().getCards(game)) {
|
return false;
|
||||||
player.moveCardToLibraryWithInfo(card, source.getSourceId(), game, Zone.GRAVEYARD, true, true);
|
|
||||||
}
|
|
||||||
player.shuffleLibrary(source, game);
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
return false;
|
player.putCardsOnBottomOfLibrary(player.getGraveyard(), game, source, false);
|
||||||
|
player.shuffleLibrary(source, game);
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,10 +1,9 @@
|
||||||
|
|
||||||
package mage.cards.q;
|
package mage.cards.q;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.TriggeredAbilityImpl;
|
import mage.abilities.TriggeredAbilityImpl;
|
||||||
import mage.abilities.common.SimpleActivatedAbility;
|
import mage.abilities.common.SimpleActivatedAbility;
|
||||||
|
import mage.abilities.costs.CompositeCost;
|
||||||
import mage.abilities.costs.common.RemoveCountersSourceCost;
|
import mage.abilities.costs.common.RemoveCountersSourceCost;
|
||||||
import mage.abilities.costs.common.SacrificeSourceCost;
|
import mage.abilities.costs.common.SacrificeSourceCost;
|
||||||
import mage.abilities.effects.ReplacementEffectImpl;
|
import mage.abilities.effects.ReplacementEffectImpl;
|
||||||
|
@ -21,8 +20,9 @@ import mage.game.events.GameEvent;
|
||||||
import mage.game.events.GameEvent.EventType;
|
import mage.game.events.GameEvent.EventType;
|
||||||
import mage.util.CardUtil;
|
import mage.util.CardUtil;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author jeffwadsworth
|
* @author jeffwadsworth
|
||||||
*/
|
*/
|
||||||
public final class QuestForPureFlame extends CardImpl {
|
public final class QuestForPureFlame extends CardImpl {
|
||||||
|
@ -34,9 +34,14 @@ public final class QuestForPureFlame extends CardImpl {
|
||||||
this.addAbility(new QuestForPureFlameTriggeredAbility());
|
this.addAbility(new QuestForPureFlameTriggeredAbility());
|
||||||
|
|
||||||
// Remove four quest counters from Quest for Pure Flame and sacrifice it: If any source you control would deal damage to a creature or player this turn, it deals double that damage to that creature or player instead.
|
// Remove four quest counters from Quest for Pure Flame and sacrifice it: If any source you control would deal damage to a creature or player this turn, it deals double that damage to that creature or player instead.
|
||||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new QuestForPureFlameEffect(), new RemoveCountersSourceCost(CounterType.QUEST.createInstance(4)));
|
this.addAbility(new SimpleActivatedAbility(
|
||||||
ability.addCost(new SacrificeSourceCost());
|
new QuestForPureFlameEffect(),
|
||||||
this.addAbility(ability);
|
new CompositeCost(
|
||||||
|
new RemoveCountersSourceCost(CounterType.QUEST.createInstance(4)),
|
||||||
|
new SacrificeSourceCost(),
|
||||||
|
"Remove four quest counters from {this} and sacrifice it"
|
||||||
|
)
|
||||||
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
public QuestForPureFlame(final QuestForPureFlame card) {
|
public QuestForPureFlame(final QuestForPureFlame card) {
|
||||||
|
@ -51,11 +56,11 @@ public final class QuestForPureFlame extends CardImpl {
|
||||||
|
|
||||||
class QuestForPureFlameTriggeredAbility extends TriggeredAbilityImpl {
|
class QuestForPureFlameTriggeredAbility extends TriggeredAbilityImpl {
|
||||||
|
|
||||||
public QuestForPureFlameTriggeredAbility() {
|
QuestForPureFlameTriggeredAbility() {
|
||||||
super(Zone.BATTLEFIELD, new AddCountersSourceEffect(CounterType.QUEST.createInstance()), true);
|
super(Zone.BATTLEFIELD, new AddCountersSourceEffect(CounterType.QUEST.createInstance()), true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public QuestForPureFlameTriggeredAbility(final QuestForPureFlameTriggeredAbility ability) {
|
private QuestForPureFlameTriggeredAbility(final QuestForPureFlameTriggeredAbility ability) {
|
||||||
super(ability);
|
super(ability);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -85,12 +90,13 @@ class QuestForPureFlameTriggeredAbility extends TriggeredAbilityImpl {
|
||||||
|
|
||||||
class QuestForPureFlameEffect extends ReplacementEffectImpl {
|
class QuestForPureFlameEffect extends ReplacementEffectImpl {
|
||||||
|
|
||||||
public QuestForPureFlameEffect() {
|
QuestForPureFlameEffect() {
|
||||||
super(Duration.EndOfTurn, Outcome.Damage);
|
super(Duration.EndOfTurn, Outcome.Damage);
|
||||||
staticText = "If any source you control would deal damage to a permanent or player this turn, it deals double that damage to that permanent or player instead";
|
staticText = "If any source you control would deal damage to a permanent or player this turn, " +
|
||||||
|
"it deals double that damage to that permanent or player instead";
|
||||||
}
|
}
|
||||||
|
|
||||||
public QuestForPureFlameEffect(final QuestForPureFlameEffect effect) {
|
private QuestForPureFlameEffect(final QuestForPureFlameEffect effect) {
|
||||||
super(effect);
|
super(effect);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
|
|
||||||
package mage.cards.q;
|
package mage.cards.q;
|
||||||
|
|
||||||
import java.util.UUID;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.DealsDamageToACreatureAllTriggeredAbility;
|
import mage.abilities.common.DealsDamageToACreatureAllTriggeredAbility;
|
||||||
import mage.abilities.common.SimpleActivatedAbility;
|
import mage.abilities.common.SimpleActivatedAbility;
|
||||||
|
import mage.abilities.costs.CompositeCost;
|
||||||
import mage.abilities.costs.common.RemoveCountersSourceCost;
|
import mage.abilities.costs.common.RemoveCountersSourceCost;
|
||||||
import mage.abilities.costs.common.SacrificeSourceCost;
|
import mage.abilities.costs.common.SacrificeSourceCost;
|
||||||
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
|
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
|
||||||
|
@ -12,32 +12,34 @@ import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.SetTargetPointer;
|
import mage.constants.SetTargetPointer;
|
||||||
import mage.constants.Zone;
|
|
||||||
import mage.counters.CounterType;
|
import mage.counters.CounterType;
|
||||||
import mage.filter.StaticFilters;
|
import mage.filter.StaticFilters;
|
||||||
import mage.target.common.TargetCreaturePermanent;
|
import mage.target.common.TargetCreaturePermanent;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author North
|
* @author North
|
||||||
*/
|
*/
|
||||||
public final class QuestForTheGemblades extends CardImpl {
|
public final class QuestForTheGemblades extends CardImpl {
|
||||||
|
|
||||||
public QuestForTheGemblades(UUID ownerId, CardSetInfo setInfo) {
|
public QuestForTheGemblades(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{G}");
|
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{G}");
|
||||||
|
|
||||||
|
|
||||||
// Whenever a creature you control deals combat damage to a creature, you may put a quest counter on Quest for the Gemblades.
|
// Whenever a creature you control deals combat damage to a creature, you may put a quest counter on Quest for the Gemblades.
|
||||||
this.addAbility(new DealsDamageToACreatureAllTriggeredAbility(
|
this.addAbility(new DealsDamageToACreatureAllTriggeredAbility(
|
||||||
new AddCountersSourceEffect(CounterType.QUEST.createInstance()), false,
|
new AddCountersSourceEffect(CounterType.QUEST.createInstance()), false,
|
||||||
StaticFilters.FILTER_CONTROLLED_A_CREATURE,
|
StaticFilters.FILTER_CONTROLLED_A_CREATURE, SetTargetPointer.PERMANENT, true
|
||||||
SetTargetPointer.PERMANENT, true));
|
));
|
||||||
|
|
||||||
// Remove a quest counter from Quest for the Gemblades and sacrifice it: Put four +1/+1 counters on target creature.
|
// Remove a quest counter from Quest for the Gemblades and sacrifice it: Put four +1/+1 counters on target creature.
|
||||||
SimpleActivatedAbility ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
|
Ability ability = new SimpleActivatedAbility(
|
||||||
new AddCountersTargetEffect(CounterType.P1P1.createInstance(4)),
|
new AddCountersTargetEffect(CounterType.P1P1.createInstance(4)),
|
||||||
new RemoveCountersSourceCost(CounterType.QUEST.createInstance()));
|
new CompositeCost(
|
||||||
ability.addCost(new SacrificeSourceCost());
|
new RemoveCountersSourceCost(CounterType.QUEST.createInstance()),
|
||||||
|
new SacrificeSourceCost(),
|
||||||
|
"Remove a quest counter from {this} and sacrifice it"
|
||||||
|
));
|
||||||
ability.addTarget(new TargetCreaturePermanent());
|
ability.addTarget(new TargetCreaturePermanent());
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
|
|
||||||
package mage.cards.q;
|
package mage.cards.q;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.abilities.common.DiesCreatureTriggeredAbility;
|
import mage.abilities.common.DiesCreatureTriggeredAbility;
|
||||||
import mage.abilities.common.SimpleActivatedAbility;
|
import mage.abilities.common.SimpleActivatedAbility;
|
||||||
|
import mage.abilities.costs.CompositeCost;
|
||||||
import mage.abilities.costs.common.RemoveCountersSourceCost;
|
import mage.abilities.costs.common.RemoveCountersSourceCost;
|
||||||
import mage.abilities.costs.common.SacrificeSourceCost;
|
import mage.abilities.costs.common.SacrificeSourceCost;
|
||||||
import mage.abilities.effects.common.CreateTokenEffect;
|
import mage.abilities.effects.common.CreateTokenEffect;
|
||||||
|
@ -11,12 +11,12 @@ import mage.abilities.effects.common.counter.AddCountersSourceEffect;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.Zone;
|
|
||||||
import mage.counters.CounterType;
|
import mage.counters.CounterType;
|
||||||
import mage.game.permanent.token.QuestForTheGravelordZombieToken;
|
import mage.game.permanent.token.QuestForTheGravelordZombieToken;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author North
|
* @author North
|
||||||
*/
|
*/
|
||||||
public final class QuestForTheGravelord extends CardImpl {
|
public final class QuestForTheGravelord extends CardImpl {
|
||||||
|
@ -26,12 +26,16 @@ public final class QuestForTheGravelord extends CardImpl {
|
||||||
|
|
||||||
// Whenever a creature dies, you may put a quest counter on Quest for the Gravelord.
|
// Whenever a creature dies, you may put a quest counter on Quest for the Gravelord.
|
||||||
this.addAbility(new DiesCreatureTriggeredAbility(new AddCountersSourceEffect(CounterType.QUEST.createInstance()), true));
|
this.addAbility(new DiesCreatureTriggeredAbility(new AddCountersSourceEffect(CounterType.QUEST.createInstance()), true));
|
||||||
|
|
||||||
// Remove three quest counters from Quest for the Gravelord and sacrifice it: Create a 5/5 black Zombie Giant creature token.
|
// Remove three quest counters from Quest for the Gravelord and sacrifice it: Create a 5/5 black Zombie Giant creature token.
|
||||||
SimpleActivatedAbility ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
|
this.addAbility(new SimpleActivatedAbility(
|
||||||
new CreateTokenEffect(new QuestForTheGravelordZombieToken()),
|
new CreateTokenEffect(new QuestForTheGravelordZombieToken()),
|
||||||
new RemoveCountersSourceCost(CounterType.QUEST.createInstance(3)));
|
new CompositeCost(
|
||||||
ability.addCost(new SacrificeSourceCost());
|
new RemoveCountersSourceCost(CounterType.QUEST.createInstance(3)),
|
||||||
this.addAbility(ability);
|
new SacrificeSourceCost(),
|
||||||
|
"Remove three quest counters from {this} and sacrifice it"
|
||||||
|
)
|
||||||
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
public QuestForTheGravelord(final QuestForTheGravelord card) {
|
public QuestForTheGravelord(final QuestForTheGravelord card) {
|
||||||
|
|
|
@ -1,10 +1,9 @@
|
||||||
|
|
||||||
package mage.cards.q;
|
package mage.cards.q;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.SimpleActivatedAbility;
|
import mage.abilities.common.SimpleActivatedAbility;
|
||||||
import mage.abilities.common.SpellCastControllerTriggeredAbility;
|
import mage.abilities.common.SpellCastControllerTriggeredAbility;
|
||||||
|
import mage.abilities.costs.CompositeCost;
|
||||||
import mage.abilities.costs.common.RemoveCountersSourceCost;
|
import mage.abilities.costs.common.RemoveCountersSourceCost;
|
||||||
import mage.abilities.costs.common.SacrificeSourceCost;
|
import mage.abilities.costs.common.SacrificeSourceCost;
|
||||||
import mage.abilities.effects.OneShotEffect;
|
import mage.abilities.effects.OneShotEffect;
|
||||||
|
@ -26,8 +25,9 @@ import mage.target.Target;
|
||||||
import mage.target.common.TargetCardInLibrary;
|
import mage.target.common.TargetCardInLibrary;
|
||||||
import mage.target.common.TargetControlledCreaturePermanent;
|
import mage.target.common.TargetControlledCreaturePermanent;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author Loki, North
|
* @author Loki, North
|
||||||
*/
|
*/
|
||||||
public final class QuestForTheHolyRelic extends CardImpl {
|
public final class QuestForTheHolyRelic extends CardImpl {
|
||||||
|
@ -36,11 +36,20 @@ public final class QuestForTheHolyRelic extends CardImpl {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{W}");
|
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{W}");
|
||||||
|
|
||||||
// Whenever you cast a creature spell, you may put a quest counter on Quest for the Holy Relic.
|
// Whenever you cast a creature spell, you may put a quest counter on Quest for the Holy Relic.
|
||||||
this.addAbility(new SpellCastControllerTriggeredAbility(new AddCountersSourceEffect(CounterType.QUEST.createInstance()), StaticFilters.FILTER_SPELL_A_CREATURE, true));
|
this.addAbility(new SpellCastControllerTriggeredAbility(
|
||||||
|
new AddCountersSourceEffect(CounterType.QUEST.createInstance()),
|
||||||
|
StaticFilters.FILTER_SPELL_A_CREATURE, true
|
||||||
|
));
|
||||||
|
|
||||||
// Remove five quest counters from Quest for the Holy Relic and sacrifice it: Search your library for an Equipment card, put it onto the battlefield, and attach it to a creature you control. Then shuffle your library.
|
// Remove five quest counters from Quest for the Holy Relic and sacrifice it: Search your library for an Equipment card, put it onto the battlefield, and attach it to a creature you control. Then shuffle your library.
|
||||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new QuestForTheHolyRelicEffect(), new RemoveCountersSourceCost(CounterType.QUEST.createInstance(5)));
|
this.addAbility(new SimpleActivatedAbility(
|
||||||
ability.addCost(new SacrificeSourceCost());
|
new QuestForTheHolyRelicEffect(),
|
||||||
this.addAbility(ability);
|
new CompositeCost(
|
||||||
|
new RemoveCountersSourceCost(CounterType.QUEST.createInstance(5)),
|
||||||
|
new SacrificeSourceCost(),
|
||||||
|
"Remove five quest counters from {this} and sacrifice it"
|
||||||
|
))
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public QuestForTheHolyRelic(final QuestForTheHolyRelic card) {
|
public QuestForTheHolyRelic(final QuestForTheHolyRelic card) {
|
||||||
|
@ -55,12 +64,12 @@ public final class QuestForTheHolyRelic extends CardImpl {
|
||||||
|
|
||||||
class QuestForTheHolyRelicEffect extends OneShotEffect {
|
class QuestForTheHolyRelicEffect extends OneShotEffect {
|
||||||
|
|
||||||
public QuestForTheHolyRelicEffect() {
|
QuestForTheHolyRelicEffect() {
|
||||||
super(Outcome.PutCardInPlay);
|
super(Outcome.PutCardInPlay);
|
||||||
this.staticText = "Search your library for an Equipment card, put it onto the battlefield, and attach it to a creature you control. Then shuffle your library";
|
this.staticText = "Search your library for an Equipment card, put it onto the battlefield, and attach it to a creature you control. Then shuffle your library";
|
||||||
}
|
}
|
||||||
|
|
||||||
public QuestForTheHolyRelicEffect(final QuestForTheHolyRelicEffect effect) {
|
private QuestForTheHolyRelicEffect(final QuestForTheHolyRelicEffect effect) {
|
||||||
super(effect);
|
super(effect);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -45,7 +45,7 @@ public final class ReyavMasterSmith extends CardImpl {
|
||||||
this.addAbility(new AttacksCreatureYouControlTriggeredAbility(
|
this.addAbility(new AttacksCreatureYouControlTriggeredAbility(
|
||||||
new GainAbilityTargetEffect(
|
new GainAbilityTargetEffect(
|
||||||
DoubleStrikeAbility.getInstance(), Duration.EndOfTurn,
|
DoubleStrikeAbility.getInstance(), Duration.EndOfTurn,
|
||||||
"that creature gains double strike until end of turn."
|
"that creature gains double strike until end of turn"
|
||||||
), false, filter, true
|
), false, filter, true
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,7 +40,7 @@ public final class RingOfValkas extends CardImpl {
|
||||||
|
|
||||||
// At the beginning of your upkeep, put a +1/+1 counter on equipped creature if it's red.
|
// At the beginning of your upkeep, put a +1/+1 counter on equipped creature if it's red.
|
||||||
TriggeredAbility triggeredAbility = new BeginningOfUpkeepTriggeredAbility(Zone.BATTLEFIELD, new AddPlusOneCountersAttachedEffect(1), TargetController.YOU, false);
|
TriggeredAbility triggeredAbility = new BeginningOfUpkeepTriggeredAbility(Zone.BATTLEFIELD, new AddPlusOneCountersAttachedEffect(1), TargetController.YOU, false);
|
||||||
ConditionalInterveningIfTriggeredAbility ability = new ConditionalInterveningIfTriggeredAbility(triggeredAbility, new AttachedToMatchesFilterCondition(filter), "At the beginning of your upkeep, put a +1/+1 counter on equipped creature if it's red");
|
ConditionalInterveningIfTriggeredAbility ability = new ConditionalInterveningIfTriggeredAbility(triggeredAbility, new AttachedToMatchesFilterCondition(filter), "At the beginning of your upkeep, put a +1/+1 counter on equipped creature if it's red.");
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
|
|
||||||
// Equip {1}
|
// Equip {1}
|
||||||
|
|
|
@ -41,7 +41,7 @@ public final class SakashimasProtege extends CardImpl {
|
||||||
|
|
||||||
// You may have Sakashima's Protege enter the battlefield as a copy of any permanent that entered the battlefield this turn.
|
// You may have Sakashima's Protege enter the battlefield as a copy of any permanent that entered the battlefield this turn.
|
||||||
this.addAbility(new EntersBattlefieldAbility(new CopyPermanentEffect(filter)
|
this.addAbility(new EntersBattlefieldAbility(new CopyPermanentEffect(filter)
|
||||||
.setText("you may have {this} enter the battlefield as a copy of any permanent that entered the battlefield this turn"), true));
|
.setText("as a copy of any permanent that entered the battlefield this turn"), true));
|
||||||
}
|
}
|
||||||
|
|
||||||
private SakashimasProtege(final SakashimasProtege card) {
|
private SakashimasProtege(final SakashimasProtege card) {
|
||||||
|
|
|
@ -31,7 +31,7 @@ public final class SlayersStronghold extends CardImpl {
|
||||||
// {R}{W}, {tap}: Target creature gets +2/+0 and gains vigilance and haste until end of turn.
|
// {R}{W}, {tap}: Target creature gets +2/+0 and gains vigilance and haste until end of turn.
|
||||||
Ability ability = new SimpleActivatedAbility(new BoostTargetEffect(
|
Ability ability = new SimpleActivatedAbility(new BoostTargetEffect(
|
||||||
2, 0, Duration.EndOfTurn
|
2, 0, Duration.EndOfTurn
|
||||||
).setText("target creatures gets +2/+0"), new ManaCostsImpl("{R}{W}"));
|
).setText("target creature gets +2/+0"), new ManaCostsImpl("{R}{W}"));
|
||||||
ability.addEffect(new GainAbilityTargetEffect(
|
ability.addEffect(new GainAbilityTargetEffect(
|
||||||
VigilanceAbility.getInstance(), Duration.EndOfTurn
|
VigilanceAbility.getInstance(), Duration.EndOfTurn
|
||||||
).setText("and gains vigilance"));
|
).setText("and gains vigilance"));
|
||||||
|
|
|
@ -22,7 +22,7 @@ import java.util.UUID;
|
||||||
*/
|
*/
|
||||||
public final class SlurrkAllIngesting extends CardImpl {
|
public final class SlurrkAllIngesting extends CardImpl {
|
||||||
|
|
||||||
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent();
|
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature you control");
|
||||||
|
|
||||||
static {
|
static {
|
||||||
filter.add(CounterType.P1P1.getPredicate());
|
filter.add(CounterType.P1P1.getPredicate());
|
||||||
|
|
|
@ -32,7 +32,7 @@ public final class SoulOfEternity extends CardImpl {
|
||||||
Zone.ALL,
|
Zone.ALL,
|
||||||
new SetPowerToughnessSourceEffect(
|
new SetPowerToughnessSourceEffect(
|
||||||
ControllerLifeCount.instance, Duration.EndOfGame
|
ControllerLifeCount.instance, Duration.EndOfGame
|
||||||
)
|
).setText("{this}'s power and toughness are each equal to your life total")
|
||||||
));
|
));
|
||||||
|
|
||||||
// Encore {7}{W}{W}
|
// Encore {7}{W}{W}
|
||||||
|
|
|
@ -1,10 +1,9 @@
|
||||||
|
|
||||||
package mage.cards.s;
|
package mage.cards.s;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.LandfallAbility;
|
import mage.abilities.common.LandfallAbility;
|
||||||
import mage.abilities.common.SimpleActivatedAbility;
|
import mage.abilities.common.SimpleActivatedAbility;
|
||||||
|
import mage.abilities.costs.CompositeCost;
|
||||||
import mage.abilities.costs.common.RemoveCountersSourceCost;
|
import mage.abilities.costs.common.RemoveCountersSourceCost;
|
||||||
import mage.abilities.costs.common.SacrificeSourceCost;
|
import mage.abilities.costs.common.SacrificeSourceCost;
|
||||||
import mage.abilities.effects.common.ReturnToHandTargetEffect;
|
import mage.abilities.effects.common.ReturnToHandTargetEffect;
|
||||||
|
@ -12,27 +11,35 @@ import mage.abilities.effects.common.counter.AddCountersSourceEffect;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.Zone;
|
|
||||||
import mage.counters.CounterType;
|
import mage.counters.CounterType;
|
||||||
import mage.filter.common.FilterCreatureCard;
|
import mage.filter.StaticFilters;
|
||||||
import mage.target.common.TargetCardInYourGraveyard;
|
import mage.target.common.TargetCardInYourGraveyard;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author North
|
* @author North
|
||||||
*/
|
*/
|
||||||
public final class SoulStairExpedition extends CardImpl {
|
public final class SoulStairExpedition extends CardImpl {
|
||||||
|
|
||||||
public SoulStairExpedition(UUID ownerId, CardSetInfo setInfo) {
|
public SoulStairExpedition(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{B}");
|
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{B}");
|
||||||
|
|
||||||
|
|
||||||
// Landfall - Whenever a land enters the battlefield under your control, you may put a quest counter on Soul Stair Expedition.
|
// Landfall - Whenever a land enters the battlefield under your control, you may put a quest counter on Soul Stair Expedition.
|
||||||
this.addAbility(new LandfallAbility(Zone.BATTLEFIELD, new AddCountersSourceEffect(CounterType.QUEST.createInstance()), true));
|
this.addAbility(new LandfallAbility(new AddCountersSourceEffect(CounterType.QUEST.createInstance()), true));
|
||||||
|
|
||||||
// Remove three quest counters from Soul Stair Expedition and sacrifice it: Return up to two target creature cards from your graveyard to your hand.
|
// Remove three quest counters from Soul Stair Expedition and sacrifice it: Return up to two target creature cards from your graveyard to your hand.
|
||||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new ReturnToHandTargetEffect(), new RemoveCountersSourceCost(CounterType.QUEST.createInstance(3)));
|
Ability ability = new SimpleActivatedAbility(
|
||||||
ability.addCost(new SacrificeSourceCost());
|
new ReturnToHandTargetEffect(),
|
||||||
ability.addTarget(new TargetCardInYourGraveyard(0, 2, new FilterCreatureCard("creature cards from your graveyard")));
|
new CompositeCost(
|
||||||
|
new RemoveCountersSourceCost(CounterType.QUEST.createInstance(3)),
|
||||||
|
new SacrificeSourceCost(),
|
||||||
|
"Remove three quest counters from {this} and sacrifice it"
|
||||||
|
)
|
||||||
|
);
|
||||||
|
ability.addTarget(new TargetCardInYourGraveyard(
|
||||||
|
0, 2, StaticFilters.FILTER_CARD_CREATURES_YOUR_GRAVEYARD
|
||||||
|
));
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -44,7 +44,7 @@ class SoulsFireEffect extends OneShotEffect {
|
||||||
|
|
||||||
public SoulsFireEffect() {
|
public SoulsFireEffect() {
|
||||||
super(Outcome.Damage);
|
super(Outcome.Damage);
|
||||||
this.staticText = "Target creature you control on the battlefield deals damage equal to its power to any target";
|
this.staticText = "Target creature you control deals damage equal to its power to any target";
|
||||||
}
|
}
|
||||||
|
|
||||||
public SoulsFireEffect(final SoulsFireEffect effect) {
|
public SoulsFireEffect(final SoulsFireEffect effect) {
|
||||||
|
|
|
@ -23,7 +23,7 @@ public final class VividCrag extends CardImpl {
|
||||||
public VividCrag(UUID ownerId, CardSetInfo setInfo) {
|
public VividCrag(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
|
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
|
||||||
// Vivid Crag enters the battlefield tapped with two charge counters on it.
|
// Vivid Crag enters the battlefield tapped with two charge counters on it.
|
||||||
Ability ability = new EntersBattlefieldAbility(new TapSourceEffect(true), false, null, "{this} enters the battlefield tapped with two charge counters on it", null);
|
Ability ability = new EntersBattlefieldAbility(new TapSourceEffect(true), false, null, "{this} enters the battlefield tapped with two charge counters on it.", null);
|
||||||
ability.addEffect(new AddCountersSourceEffect(CounterType.CHARGE.createInstance(2)));
|
ability.addEffect(new AddCountersSourceEffect(CounterType.CHARGE.createInstance(2)));
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
// {tap}: Add {R}.
|
// {tap}: Add {R}.
|
||||||
|
|
|
@ -23,7 +23,7 @@ public final class VividCreek extends CardImpl {
|
||||||
public VividCreek(UUID ownerId, CardSetInfo setInfo) {
|
public VividCreek(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
|
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
|
||||||
// Vivid Creek enters the battlefield tapped with two charge counters on it.
|
// Vivid Creek enters the battlefield tapped with two charge counters on it.
|
||||||
Ability ability = new EntersBattlefieldAbility(new TapSourceEffect(true), false, null, "{this} enters the battlefield tapped with two charge counters on it", null);
|
Ability ability = new EntersBattlefieldAbility(new TapSourceEffect(true), false, null, "{this} enters the battlefield tapped with two charge counters on it.", null);
|
||||||
ability.addEffect(new AddCountersSourceEffect(CounterType.CHARGE.createInstance(2)));
|
ability.addEffect(new AddCountersSourceEffect(CounterType.CHARGE.createInstance(2)));
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
// {tap}: Add {U}.
|
// {tap}: Add {U}.
|
||||||
|
|
|
@ -23,7 +23,7 @@ public final class VividGrove extends CardImpl {
|
||||||
public VividGrove(UUID ownerId, CardSetInfo setInfo) {
|
public VividGrove(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
|
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
|
||||||
// Vivid Grove enters the battlefield tapped with two charge counters on it.
|
// Vivid Grove enters the battlefield tapped with two charge counters on it.
|
||||||
Ability ability = new EntersBattlefieldAbility(new TapSourceEffect(true), false, null, "{this} enters the battlefield tapped with two charge counters on it", null);
|
Ability ability = new EntersBattlefieldAbility(new TapSourceEffect(true), false, null, "{this} enters the battlefield tapped with two charge counters on it.", null);
|
||||||
ability.addEffect(new AddCountersSourceEffect(CounterType.CHARGE.createInstance(2)));
|
ability.addEffect(new AddCountersSourceEffect(CounterType.CHARGE.createInstance(2)));
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
// {tap}: Add {G}.
|
// {tap}: Add {G}.
|
||||||
|
|
|
@ -24,7 +24,7 @@ public final class VividMarsh extends CardImpl {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
|
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
|
||||||
|
|
||||||
// Vivid Marsh enters the battlefield tapped with two charge counters on it.
|
// Vivid Marsh enters the battlefield tapped with two charge counters on it.
|
||||||
Ability ability = new EntersBattlefieldAbility(new TapSourceEffect(true), false, null, "{this} enters the battlefield tapped with two charge counters on it", null);
|
Ability ability = new EntersBattlefieldAbility(new TapSourceEffect(true), false, null, "{this} enters the battlefield tapped with two charge counters on it.", null);
|
||||||
ability.addEffect(new AddCountersSourceEffect(CounterType.CHARGE.createInstance(2)));
|
ability.addEffect(new AddCountersSourceEffect(CounterType.CHARGE.createInstance(2)));
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
// {tap}: Add {B}.
|
// {tap}: Add {B}.
|
||||||
|
|
|
@ -23,7 +23,7 @@ public final class VividMeadow extends CardImpl {
|
||||||
public VividMeadow(UUID ownerId, CardSetInfo setInfo) {
|
public VividMeadow(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
|
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
|
||||||
// Vivid Meadow enters the battlefield tapped with two charge counters on it.
|
// Vivid Meadow enters the battlefield tapped with two charge counters on it.
|
||||||
Ability ability = new EntersBattlefieldAbility(new TapSourceEffect(true), false, null, "{this} enters the battlefield tapped with two charge counters on it", null);
|
Ability ability = new EntersBattlefieldAbility(new TapSourceEffect(true), false, null, "{this} enters the battlefield tapped with two charge counters on it.", null);
|
||||||
ability.addEffect(new AddCountersSourceEffect(CounterType.CHARGE.createInstance(2)));
|
ability.addEffect(new AddCountersSourceEffect(CounterType.CHARGE.createInstance(2)));
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
// {tap}: Add {W}.
|
// {tap}: Add {W}.
|
||||||
|
|
|
@ -3,6 +3,7 @@ package mage.cards.z;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.LandfallAbility;
|
import mage.abilities.common.LandfallAbility;
|
||||||
import mage.abilities.common.SimpleActivatedAbility;
|
import mage.abilities.common.SimpleActivatedAbility;
|
||||||
|
import mage.abilities.costs.CompositeCost;
|
||||||
import mage.abilities.costs.common.RemoveCountersSourceCost;
|
import mage.abilities.costs.common.RemoveCountersSourceCost;
|
||||||
import mage.abilities.costs.common.SacrificeSourceCost;
|
import mage.abilities.costs.common.SacrificeSourceCost;
|
||||||
import mage.abilities.effects.OneShotEffect;
|
import mage.abilities.effects.OneShotEffect;
|
||||||
|
@ -12,7 +13,6 @@ import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.Outcome;
|
import mage.constants.Outcome;
|
||||||
import mage.constants.Zone;
|
|
||||||
import mage.counters.CounterType;
|
import mage.counters.CounterType;
|
||||||
import mage.game.Game;
|
import mage.game.Game;
|
||||||
import mage.game.permanent.token.RedElementalWithTrampleAndHaste;
|
import mage.game.permanent.token.RedElementalWithTrampleAndHaste;
|
||||||
|
@ -28,11 +28,16 @@ public final class ZektarShrineExpedition extends CardImpl {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{R}");
|
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{R}");
|
||||||
|
|
||||||
// Landfall - Whenever a land enters the battlefield under your control, you may put a quest counter on Zektar Shrine Expedition.
|
// Landfall - Whenever a land enters the battlefield under your control, you may put a quest counter on Zektar Shrine Expedition.
|
||||||
this.addAbility(new LandfallAbility(Zone.BATTLEFIELD, new AddCountersSourceEffect(CounterType.QUEST.createInstance()), true));
|
this.addAbility(new LandfallAbility(new AddCountersSourceEffect(CounterType.QUEST.createInstance()), true));
|
||||||
// Remove three quest counters from Zektar Shrine Expedition and sacrifice it: Create a 7/1 red Elemental creature token with trample and haste. Exile it at the beginning of the next end step.
|
// Remove three quest counters from Zektar Shrine Expedition and sacrifice it: Create a 7/1 red Elemental creature token with trample and haste. Exile it at the beginning of the next end step.
|
||||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new ZektarShrineExpeditionEffect(), new RemoveCountersSourceCost(CounterType.QUEST.createInstance(3)));
|
this.addAbility(new SimpleActivatedAbility(
|
||||||
ability.addCost(new SacrificeSourceCost());
|
new ZektarShrineExpeditionEffect(),
|
||||||
this.addAbility(ability);
|
new CompositeCost(
|
||||||
|
new RemoveCountersSourceCost(CounterType.QUEST.createInstance(3)),
|
||||||
|
new SacrificeSourceCost(),
|
||||||
|
"Remove three quest counters from {this} and sacrifice it"
|
||||||
|
)
|
||||||
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
public ZektarShrineExpedition(final ZektarShrineExpedition card) {
|
public ZektarShrineExpedition(final ZektarShrineExpedition card) {
|
||||||
|
@ -47,12 +52,12 @@ public final class ZektarShrineExpedition extends CardImpl {
|
||||||
|
|
||||||
class ZektarShrineExpeditionEffect extends OneShotEffect {
|
class ZektarShrineExpeditionEffect extends OneShotEffect {
|
||||||
|
|
||||||
public ZektarShrineExpeditionEffect() {
|
ZektarShrineExpeditionEffect() {
|
||||||
super(Outcome.PutCreatureInPlay);
|
super(Outcome.PutCreatureInPlay);
|
||||||
this.staticText = "Create a 7/1 red Elemental creature token with trample and haste. Exile it at the beginning of the next end step";
|
this.staticText = "Create a 7/1 red Elemental creature token with trample and haste. Exile it at the beginning of the next end step";
|
||||||
}
|
}
|
||||||
|
|
||||||
public ZektarShrineExpeditionEffect(final ZektarShrineExpeditionEffect effect) {
|
private ZektarShrineExpeditionEffect(final ZektarShrineExpeditionEffect effect) {
|
||||||
super(effect);
|
super(effect);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -63,7 +68,6 @@ class ZektarShrineExpeditionEffect extends OneShotEffect {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean apply(Game game, Ability source) {
|
public boolean apply(Game game, Ability source) {
|
||||||
|
|
||||||
CreateTokenEffect effect = new CreateTokenEffect(new RedElementalWithTrampleAndHaste());
|
CreateTokenEffect effect = new CreateTokenEffect(new RedElementalWithTrampleAndHaste());
|
||||||
if (effect.apply(game, source)) {
|
if (effect.apply(game, source)) {
|
||||||
effect.exileTokensCreatedAtNextEndStep(game, source);
|
effect.exileTokensCreatedAtNextEndStep(game, source);
|
||||||
|
@ -71,5 +75,4 @@ class ZektarShrineExpeditionEffect extends OneShotEffect {
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -53,7 +53,7 @@ public class VerifyCardDataTest {
|
||||||
|
|
||||||
private static final Logger logger = Logger.getLogger(VerifyCardDataTest.class);
|
private static final Logger logger = Logger.getLogger(VerifyCardDataTest.class);
|
||||||
|
|
||||||
private static final String FULL_ABILITIES_CHECK_SET_CODE = "M20"; // check all abilities and output cards with wrong abilities texts;
|
private static final String FULL_ABILITIES_CHECK_SET_CODE = "CMR"; // check all abilities and output cards with wrong abilities texts;
|
||||||
private static final boolean AUTO_FIX_SAMPLE_DECKS = false; // debug only: fix sample decks if it contains errors like wrong card numbers
|
private static final boolean AUTO_FIX_SAMPLE_DECKS = false; // debug only: fix sample decks if it contains errors like wrong card numbers
|
||||||
|
|
||||||
private static final HashMap<String, Set<String>> skipCheckLists = new HashMap<>();
|
private static final HashMap<String, Set<String>> skipCheckLists = new HashMap<>();
|
||||||
|
|
|
@ -25,7 +25,7 @@ public class IsPhaseCondition implements Condition {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return new StringBuilder("during ").append(turnPhase).toString();
|
return new StringBuilder("during ").append(turnPhase).toString().toLowerCase();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,7 +18,7 @@ import mage.constants.Zone;
|
||||||
public final class DragonEggDragonToken extends TokenImpl {
|
public final class DragonEggDragonToken extends TokenImpl {
|
||||||
|
|
||||||
public DragonEggDragonToken() {
|
public DragonEggDragonToken() {
|
||||||
super("Dragon", "2/2 red Dragon creature token with flying and \"{R}: This creature gets +1/+0 until end of turn");
|
super("Dragon", "2/2 red Dragon creature token with flying and \"{R}: This creature gets +1/+0 until end of turn.\"");
|
||||||
this.setOriginalExpansionSetCode("M14");
|
this.setOriginalExpansionSetCode("M14");
|
||||||
cardType.add(CardType.CREATURE);
|
cardType.add(CardType.CREATURE);
|
||||||
color.setRed(true);
|
color.setRed(true);
|
||||||
|
|
Loading…
Reference in a new issue