mirror of
https://github.com/magefree/mage.git
synced 2025-12-22 03:22:00 -08:00
some text fixes
This commit is contained in:
parent
17b7de4e87
commit
3baabe2534
28 changed files with 78 additions and 74 deletions
|
|
@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
|
||||||
public class Bequeathal extends CardImpl {
|
public class Bequeathal extends CardImpl {
|
||||||
|
|
||||||
public Bequeathal(UUID ownerId, CardSetInfo setInfo) {
|
public Bequeathal(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{G}");
|
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{G}");
|
||||||
this.subtype.add(SubType.AURA);
|
this.subtype.add(SubType.AURA);
|
||||||
|
|
||||||
// Enchant creature
|
// Enchant creature
|
||||||
|
|
@ -59,7 +59,7 @@ public class Bequeathal extends CardImpl {
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
|
|
||||||
// When enchanted creature dies, you draw two cards.
|
// When enchanted creature dies, you draw two cards.
|
||||||
this.addAbility( new DiesAttachedTriggeredAbility(new DrawCardSourceControllerEffect(2), "enchanted creature"));
|
this.addAbility(new DiesAttachedTriggeredAbility(new DrawCardSourceControllerEffect(2).setText("you draw two cards"), "enchanted creature"));
|
||||||
}
|
}
|
||||||
|
|
||||||
public Bequeathal(final Bequeathal card) {
|
public Bequeathal(final Bequeathal card) {
|
||||||
|
|
|
||||||
|
|
@ -50,7 +50,7 @@ public class ChillHaunting extends CardImpl {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{B}");
|
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{B}");
|
||||||
|
|
||||||
// As an additional cost to cast Chill Haunting, exile X creature cards from your graveyard.
|
// As an additional cost to cast Chill Haunting, exile X creature cards from your graveyard.
|
||||||
this.getSpellAbility().addCost(new ExileXFromYourGraveCost(new FilterCreatureCard("cards from your graveyard")));
|
this.getSpellAbility().addCost(new ExileXFromYourGraveCost(new FilterCreatureCard("cards from your graveyard"), true));
|
||||||
|
|
||||||
// Target creature gets -X/-X until end of turn.
|
// Target creature gets -X/-X until end of turn.
|
||||||
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
|
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
|
||||||
|
|
|
||||||
|
|
@ -45,7 +45,7 @@ import mage.constants.CardType;
|
||||||
import mage.constants.SetTargetPointer;
|
import mage.constants.SetTargetPointer;
|
||||||
import mage.constants.Zone;
|
import mage.constants.Zone;
|
||||||
import mage.counters.CounterType;
|
import mage.counters.CounterType;
|
||||||
import mage.filter.StaticFilters;
|
import mage.filter.FilterSpell;
|
||||||
import mage.target.TargetSpell;
|
import mage.target.TargetSpell;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -55,19 +55,19 @@ import mage.target.TargetSpell;
|
||||||
public class DecreeOfSilence extends CardImpl {
|
public class DecreeOfSilence extends CardImpl {
|
||||||
|
|
||||||
public DecreeOfSilence(UUID ownerId, CardSetInfo setInfo) {
|
public DecreeOfSilence(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{6}{U}{U}");
|
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{6}{U}{U}");
|
||||||
|
|
||||||
// Whenever an opponent casts a spell, counter that spell and put a depletion counter on Decree of Silence. If there are three or more depletion counters on Decree of Silence, sacrifice it.
|
// Whenever an opponent casts a spell, counter that spell and put a depletion counter on Decree of Silence. If there are three or more depletion counters on Decree of Silence, sacrifice it.
|
||||||
Effect effect = new CounterTargetEffect();
|
Effect effect = new CounterTargetEffect();
|
||||||
effect.setText("counter that spell");
|
effect.setText("counter that spell");
|
||||||
Ability ability = new SpellCastOpponentTriggeredAbility(Zone.BATTLEFIELD, effect, StaticFilters.FILTER_SPELL,
|
Ability ability = new SpellCastOpponentTriggeredAbility(Zone.BATTLEFIELD, effect, new FilterSpell("a spell"),
|
||||||
false, SetTargetPointer.SPELL);
|
false, SetTargetPointer.SPELL);
|
||||||
effect = new AddCountersSourceEffect(CounterType.DEPLETION.createInstance());
|
effect = new AddCountersSourceEffect(CounterType.DEPLETION.createInstance());
|
||||||
effect.setText("and put a depletion counter on {this}.");
|
effect.setText("and put a depletion counter on {this}.");
|
||||||
ability.addEffect(effect);
|
ability.addEffect(effect);
|
||||||
ability.addEffect(new ConditionalOneShotEffect(new SacrificeSourceEffect(),
|
ability.addEffect(new ConditionalOneShotEffect(new SacrificeSourceEffect(),
|
||||||
new SourceHasCounterCondition(CounterType.DEPLETION, 3, Integer.MAX_VALUE),
|
new SourceHasCounterCondition(CounterType.DEPLETION, 3, Integer.MAX_VALUE),
|
||||||
" If there are three or more depletion counters on {this}, sacrifice it"));
|
" If there are three or more depletion counters on {this}, sacrifice it"));
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
// Cycling {4}{U}{U}
|
// Cycling {4}{U}{U}
|
||||||
this.addAbility(new CyclingAbility(new ManaCostsImpl("{4}{U}{U}")));
|
this.addAbility(new CyclingAbility(new ManaCostsImpl("{4}{U}{U}")));
|
||||||
|
|
|
||||||
|
|
@ -52,7 +52,7 @@ import mage.players.Player;
|
||||||
public class EntropicSpecter extends CardImpl {
|
public class EntropicSpecter extends CardImpl {
|
||||||
|
|
||||||
public EntropicSpecter(UUID ownerId, CardSetInfo setInfo) {
|
public EntropicSpecter(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}{B}");
|
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}{B}");
|
||||||
this.subtype.add(SubType.SPECTER);
|
this.subtype.add(SubType.SPECTER);
|
||||||
this.subtype.add(SubType.SPIRIT);
|
this.subtype.add(SubType.SPIRIT);
|
||||||
|
|
||||||
|
|
@ -105,7 +105,7 @@ class CardsInTargetPlayerHandCount implements DynamicValue {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getMessage() {
|
public String getMessage() {
|
||||||
return "cards in chosen opponents hand";
|
return "cards in the chosen player's hand";
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
|
|
@ -56,7 +56,7 @@ public class MercurialKite extends CardImpl {
|
||||||
// Whenever Mercurial Kite deals combat damage to a creature, tap that creature. That creature doesn't untap during its controller's next untap step.
|
// Whenever Mercurial Kite deals combat damage to a creature, tap that creature. That creature doesn't untap during its controller's next untap step.
|
||||||
Ability ability;
|
Ability ability;
|
||||||
ability = new DealsDamageToACreatureTriggeredAbility(new TapTargetEffect("that creature"), true, false, true);
|
ability = new DealsDamageToACreatureTriggeredAbility(new TapTargetEffect("that creature"), true, false, true);
|
||||||
ability.addEffect(new DontUntapInControllersNextUntapStepTargetEffect("and it"));
|
ability.addEffect(new DontUntapInControllersNextUntapStepTargetEffect(". That creature"));
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -53,19 +53,19 @@ import mage.target.TargetSpell;
|
||||||
public class MischievousQuanar extends CardImpl {
|
public class MischievousQuanar extends CardImpl {
|
||||||
|
|
||||||
public MischievousQuanar(UUID ownerId, CardSetInfo setInfo) {
|
public MischievousQuanar(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}");
|
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{U}");
|
||||||
this.subtype.add(SubType.BEAST);
|
this.subtype.add(SubType.BEAST);
|
||||||
this.power = new MageInt(3);
|
this.power = new MageInt(3);
|
||||||
this.toughness = new MageInt(3);
|
this.toughness = new MageInt(3);
|
||||||
|
|
||||||
// {3}{U}{U}: Turn Mischievous Quanar face down.
|
// {3}{U}{U}: Turn Mischievous Quanar face down.
|
||||||
Effect effect = new BecomesFaceDownCreatureEffect(Duration.Custom, BecomesFaceDownCreatureEffect.FaceDownType.MANUAL);
|
Effect effect = new BecomesFaceDownCreatureEffect(Duration.Custom, BecomesFaceDownCreatureEffect.FaceDownType.MANUAL);
|
||||||
effect.setText("Turn Michievous Quanar face down. <i>(It becomes a 2/2 creature.)</i>");
|
effect.setText("Turn {this} face down. <i>(It becomes a 2/2 creature.)</i>");
|
||||||
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, effect, new ManaCostsImpl("{3}{U}{U}")));
|
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, effect, new ManaCostsImpl("{3}{U}{U}")));
|
||||||
|
|
||||||
// Morph {1}{U}{U}
|
// Morph {1}{U}{U}
|
||||||
this.addAbility(new MorphAbility(this, new ManaCostsImpl("{1}{U}{U}")));
|
this.addAbility(new MorphAbility(this, new ManaCostsImpl("{1}{U}{U}")));
|
||||||
|
|
||||||
// When Mischievous Quanar is turned face up, copy target instant or sorcery spell. You may choose new targets for that copy.
|
// When Mischievous Quanar is turned face up, copy target instant or sorcery spell. You may choose new targets for that copy.
|
||||||
Effect effect2 = new CopyTargetSpellEffect();
|
Effect effect2 = new CopyTargetSpellEffect();
|
||||||
effect2.setText("copy target instant or sorcery spell. You may choose new targets for that copy");
|
effect2.setText("copy target instant or sorcery spell. You may choose new targets for that copy");
|
||||||
|
|
|
||||||
|
|
@ -52,7 +52,7 @@ import java.util.UUID;
|
||||||
public class OneWithNature extends CardImpl {
|
public class OneWithNature extends CardImpl {
|
||||||
|
|
||||||
public OneWithNature(UUID ownerId, CardSetInfo setInfo) {
|
public OneWithNature(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{G}");
|
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{G}");
|
||||||
this.subtype.add(SubType.AURA);
|
this.subtype.add(SubType.AURA);
|
||||||
|
|
||||||
// Enchant creature
|
// Enchant creature
|
||||||
|
|
@ -61,12 +61,13 @@ public class OneWithNature extends CardImpl {
|
||||||
this.getSpellAbility().addEffect(new AttachEffect(Outcome.PutLandInPlay));
|
this.getSpellAbility().addEffect(new AttachEffect(Outcome.PutLandInPlay));
|
||||||
Ability ability = new EnchantAbility(auraTarget.getTargetName());
|
Ability ability = new EnchantAbility(auraTarget.getTargetName());
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
|
|
||||||
// Whenever enchanted creature deals combat damage to a player, you may search your library for a basic land card, put that card onto the battlefield tapped, then shuffle your library.
|
// Whenever enchanted creature deals combat damage to a player, you may search your library for a basic land card, put that card onto the battlefield tapped, then shuffle your library.
|
||||||
ability = new DealsDamageToAPlayerAttachedTriggeredAbility(
|
ability = new DealsDamageToAPlayerAttachedTriggeredAbility(
|
||||||
new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_BASIC_LAND_CARD), true, Outcome.PutLandInPlay),
|
new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_BASIC_LAND_CARD), true, Outcome.PutLandInPlay)
|
||||||
|
.setText("you may search your library for a basic land card, put that card onto the battlefield tapped, then shuffle your library."),
|
||||||
"enchanted creature", true, false, true, TargetController.ANY);
|
"enchanted creature", true, false, true, TargetController.ANY);
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
||||||
public OneWithNature(final OneWithNature card) {
|
public OneWithNature(final OneWithNature card) {
|
||||||
|
|
|
||||||
|
|
@ -45,7 +45,7 @@ import mage.target.common.TargetControlledPermanent;
|
||||||
*/
|
*/
|
||||||
public class RavenGuildInitiate extends CardImpl {
|
public class RavenGuildInitiate extends CardImpl {
|
||||||
|
|
||||||
private static final FilterControlledPermanent filter = new FilterControlledPermanent("Bird you control");
|
private static final FilterControlledPermanent filter = new FilterControlledPermanent("a Bird you control");
|
||||||
|
|
||||||
static {
|
static {
|
||||||
filter.add(new SubtypePredicate(SubType.BIRD));
|
filter.add(new SubtypePredicate(SubType.BIRD));
|
||||||
|
|
|
||||||
|
|
@ -43,12 +43,11 @@ import mage.target.common.TargetCardInYourGraveyard;
|
||||||
public class ReapingTheGraves extends CardImpl {
|
public class ReapingTheGraves extends CardImpl {
|
||||||
|
|
||||||
public ReapingTheGraves(UUID ownerId, CardSetInfo setInfo) {
|
public ReapingTheGraves(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{B}");
|
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{B}");
|
||||||
|
|
||||||
|
|
||||||
// Return target creature card from your graveyard to your hand.
|
// Return target creature card from your graveyard to your hand.
|
||||||
this.getSpellAbility().addTarget(new TargetCardInYourGraveyard(new FilterCreatureCard("creature card from your graveyard")));
|
this.getSpellAbility().addTarget(new TargetCardInYourGraveyard(new FilterCreatureCard("creature card from your graveyard")));
|
||||||
this.getSpellAbility().addEffect(new ReturnToHandTargetEffect());
|
this.getSpellAbility().addEffect(new ReturnToHandTargetEffect().setText("Return target creature card from your graveyard to your hand."));
|
||||||
// Storm
|
// Storm
|
||||||
this.addAbility(new StormAbility());
|
this.addAbility(new StormAbility());
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -44,11 +44,11 @@ import mage.target.common.TargetControlledPermanent;
|
||||||
public class ReapingTheRewards extends CardImpl {
|
public class ReapingTheRewards extends CardImpl {
|
||||||
|
|
||||||
public ReapingTheRewards(UUID ownerId, CardSetInfo setInfo) {
|
public ReapingTheRewards(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{W}");
|
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{W}");
|
||||||
|
|
||||||
// Buyback-Sacrifice a land.
|
// Buyback-Sacrifice a land.
|
||||||
this.addAbility(new BuybackAbility(new SacrificeTargetCost(new TargetControlledPermanent(new FilterControlledLandPermanent()))));
|
this.addAbility(new BuybackAbility(new SacrificeTargetCost(new TargetControlledPermanent(new FilterControlledLandPermanent("a land")))));
|
||||||
|
|
||||||
// You gain 2 life.
|
// You gain 2 life.
|
||||||
this.getSpellAbility().addEffect(new GainLifeEffect(2));
|
this.getSpellAbility().addEffect(new GainLifeEffect(2));
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -44,13 +44,13 @@ import mage.constants.Duration;
|
||||||
public class RecklessOgre extends CardImpl {
|
public class RecklessOgre extends CardImpl {
|
||||||
|
|
||||||
public RecklessOgre(UUID ownerId, CardSetInfo setInfo) {
|
public RecklessOgre(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
|
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}");
|
||||||
this.subtype.add(SubType.OGRE);
|
this.subtype.add(SubType.OGRE);
|
||||||
this.power = new MageInt(3);
|
this.power = new MageInt(3);
|
||||||
this.toughness = new MageInt(2);
|
this.toughness = new MageInt(2);
|
||||||
|
|
||||||
// Whenever Reckless Ogre attacks alone, it gets +3/+0 until end of turn.
|
// Whenever Reckless Ogre attacks alone, it gets +3/+0 until end of turn.
|
||||||
this.addAbility(new AttacksAloneTriggeredAbility(new BoostSourceEffect(3, 0, Duration.EndOfTurn)));
|
this.addAbility(new AttacksAloneTriggeredAbility(new BoostSourceEffect(3, 0, Duration.EndOfTurn).setText("it gets +3/+0 until end of turn")));
|
||||||
}
|
}
|
||||||
|
|
||||||
public RecklessOgre(final RecklessOgre card) {
|
public RecklessOgre(final RecklessOgre card) {
|
||||||
|
|
|
||||||
|
|
@ -42,10 +42,11 @@ import mage.target.TargetPlayer;
|
||||||
public class RewardTheFaithful extends CardImpl {
|
public class RewardTheFaithful extends CardImpl {
|
||||||
|
|
||||||
public RewardTheFaithful(UUID ownerId, CardSetInfo setInfo) {
|
public RewardTheFaithful(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{W}");
|
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{W}");
|
||||||
|
|
||||||
// Any number of target players each gain life equal to the highest converted mana cost among permanents you control.
|
// Any number of target players each gain life equal to the highest converted mana cost among permanents you control.
|
||||||
this.getSpellAbility().addEffect(new GainLifeTargetEffect(new HighestConvertedManaCostValue()));
|
this.getSpellAbility().addEffect(new GainLifeTargetEffect(new HighestConvertedManaCostValue())
|
||||||
|
.setText("Any number of target players each gain life equal to the highest converted mana cost among permanents you control."));
|
||||||
this.getSpellAbility().addTarget(new TargetPlayer(0, Integer.MAX_VALUE, false));
|
this.getSpellAbility().addTarget(new TargetPlayer(0, Integer.MAX_VALUE, false));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -66,7 +66,7 @@ public class ScaldingSalamander extends CardImpl {
|
||||||
// Whenever Scalding Salamander attacks, you may have it deal 1 damage to each creature without flying defending player controls.
|
// Whenever Scalding Salamander attacks, you may have it deal 1 damage to each creature without flying defending player controls.
|
||||||
this.addAbility(new AttacksTriggeredAbility(
|
this.addAbility(new AttacksTriggeredAbility(
|
||||||
new DamageAllEffect(1, filter), true,
|
new DamageAllEffect(1, filter), true,
|
||||||
"Whenever Scalding Salamander attacks, you may have it deal 1 damage to each creature without flying defending player controls"
|
"Whenever Scalding Salamander attacks, you may have it deal 1 damage to each creature without flying defending player controls."
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -53,13 +53,13 @@ import mage.game.permanent.Permanent;
|
||||||
public class SpikeCannibal extends CardImpl {
|
public class SpikeCannibal extends CardImpl {
|
||||||
|
|
||||||
public SpikeCannibal(UUID ownerId, CardSetInfo setInfo) {
|
public SpikeCannibal(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}{B}");
|
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}{B}");
|
||||||
this.subtype.add(SubType.SPIKE);
|
this.subtype.add(SubType.SPIKE);
|
||||||
this.power = new MageInt(0);
|
this.power = new MageInt(0);
|
||||||
this.toughness = new MageInt(0);
|
this.toughness = new MageInt(0);
|
||||||
|
|
||||||
// Spike Cannibal enters the battlefield with a +1/+1 counter on it.
|
// Spike Cannibal enters the battlefield with a +1/+1 counter on it.
|
||||||
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance()), "Spike Cannibal enters the battlefield with a +1/+1 counter on it"));
|
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance()), "with a +1/+1 counter on it"));
|
||||||
|
|
||||||
// When Spike Cannibal enters the battlefield, move all +1/+1 counters from all creatures onto it.
|
// When Spike Cannibal enters the battlefield, move all +1/+1 counters from all creatures onto it.
|
||||||
this.addAbility(new EntersBattlefieldTriggeredAbility(new SpikeCannibalEffect()));
|
this.addAbility(new EntersBattlefieldTriggeredAbility(new SpikeCannibalEffect()));
|
||||||
|
|
|
||||||
|
|
@ -54,23 +54,23 @@ import mage.target.common.TargetCreaturePermanent;
|
||||||
public class SpikeRogue extends CardImpl {
|
public class SpikeRogue extends CardImpl {
|
||||||
|
|
||||||
public SpikeRogue(UUID ownerId, CardSetInfo setInfo) {
|
public SpikeRogue(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}{G}");
|
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}{G}");
|
||||||
this.subtype.add(SubType.SPIKE);
|
this.subtype.add(SubType.SPIKE);
|
||||||
this.power = new MageInt(0);
|
this.power = new MageInt(0);
|
||||||
this.toughness = new MageInt(0);
|
this.toughness = new MageInt(0);
|
||||||
|
|
||||||
// Spike Rogue enters the battlefield with two +1/+1 counters on it.
|
// Spike Rogue enters the battlefield with two +1/+1 counters on it.
|
||||||
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance(2))));
|
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance(2)), "with two +1/+1 counters on it"));
|
||||||
|
|
||||||
// {2}, Remove a +1/+1 counter from Spike Rogue: Put a +1/+1 counter on target creature.
|
// {2}, Remove a +1/+1 counter from Spike Rogue: Put a +1/+1 counter on target creature.
|
||||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new AddCountersTargetEffect(CounterType.P1P1.createInstance()), new GenericManaCost(2));
|
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new AddCountersTargetEffect(CounterType.P1P1.createInstance()), new GenericManaCost(2));
|
||||||
ability.addCost(new RemoveCountersSourceCost(CounterType.P1P1.createInstance()));
|
ability.addCost(new RemoveCountersSourceCost(CounterType.P1P1.createInstance()));
|
||||||
ability.addTarget(new TargetCreaturePermanent());
|
ability.addTarget(new TargetCreaturePermanent());
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
|
|
||||||
// {2}, Remove a +1/+1 counter from a creature you control: Put a +1/+1 counter on Spike Rogue.
|
// {2}, Remove a +1/+1 counter from a creature you control: Put a +1/+1 counter on Spike Rogue.
|
||||||
Ability ability2 = new SimpleActivatedAbility(Zone.BATTLEFIELD, new AddCountersSourceEffect(CounterType.P1P1.createInstance(1)), new GenericManaCost(2));
|
Ability ability2 = new SimpleActivatedAbility(Zone.BATTLEFIELD, new AddCountersSourceEffect(CounterType.P1P1.createInstance(1)), new GenericManaCost(2));
|
||||||
ability2.addCost(new RemoveCounterCost(new TargetControlledCreaturePermanent(1,1, new FilterControlledCreaturePermanent(), true), CounterType.P1P1));
|
ability2.addCost(new RemoveCounterCost(new TargetControlledCreaturePermanent(1, 1, new FilterControlledCreaturePermanent(), true), CounterType.P1P1));
|
||||||
this.addAbility(ability2);
|
this.addAbility(ability2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -53,21 +53,21 @@ import mage.target.common.TargetCreaturePermanent;
|
||||||
public class SpikeWeaver extends CardImpl {
|
public class SpikeWeaver extends CardImpl {
|
||||||
|
|
||||||
public SpikeWeaver(UUID ownerId, CardSetInfo setInfo) {
|
public SpikeWeaver(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{G}");
|
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}{G}");
|
||||||
this.subtype.add(SubType.SPIKE);
|
this.subtype.add(SubType.SPIKE);
|
||||||
|
|
||||||
this.power = new MageInt(0);
|
this.power = new MageInt(0);
|
||||||
this.toughness = new MageInt(0);
|
this.toughness = new MageInt(0);
|
||||||
|
|
||||||
// Spike Weaver enters the battlefield with three +1/+1 counters on it.
|
// Spike Weaver enters the battlefield with three +1/+1 counters on it.
|
||||||
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance(3))));
|
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance(3)), "with three +1/+1 counters on it"));
|
||||||
|
|
||||||
// {2}, Remove a +1/+1 counter from Spike Weaver: Put a +1/+1 counter on target creature.
|
// {2}, Remove a +1/+1 counter from Spike Weaver: Put a +1/+1 counter on target creature.
|
||||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new AddCountersTargetEffect(CounterType.P1P1.createInstance()), new GenericManaCost(2));
|
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new AddCountersTargetEffect(CounterType.P1P1.createInstance()), new GenericManaCost(2));
|
||||||
ability.addCost(new RemoveCountersSourceCost(CounterType.P1P1.createInstance()));
|
ability.addCost(new RemoveCountersSourceCost(CounterType.P1P1.createInstance()));
|
||||||
ability.addTarget(new TargetCreaturePermanent());
|
ability.addTarget(new TargetCreaturePermanent());
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
|
|
||||||
// {1}, Remove a +1/+1 counter from Spike Weaver: Prevent all combat damage that would be dealt this turn.
|
// {1}, Remove a +1/+1 counter from Spike Weaver: Prevent all combat damage that would be dealt this turn.
|
||||||
Ability ability2 = new SimpleActivatedAbility(Zone.BATTLEFIELD, new PreventAllDamageByAllPermanentsEffect(Duration.EndOfTurn, true), new GenericManaCost(1));
|
Ability ability2 = new SimpleActivatedAbility(Zone.BATTLEFIELD, new PreventAllDamageByAllPermanentsEffect(Duration.EndOfTurn, true), new GenericManaCost(1));
|
||||||
ability2.addCost(new RemoveCountersSourceCost(CounterType.P1P1.createInstance()));
|
ability2.addCost(new RemoveCountersSourceCost(CounterType.P1P1.createInstance()));
|
||||||
|
|
|
||||||
|
|
@ -42,10 +42,12 @@ import mage.target.common.TargetCreatureOrPlayer;
|
||||||
public class TorrentOfFire extends CardImpl {
|
public class TorrentOfFire extends CardImpl {
|
||||||
|
|
||||||
public TorrentOfFire(UUID ownerId, CardSetInfo setInfo) {
|
public TorrentOfFire(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{R}{R}");
|
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{R}{R}");
|
||||||
|
|
||||||
// Torrent of Fire deals damage equal to the highest converted mana cost among permanents you control to target creature or player.
|
// Torrent of Fire deals damage equal to the highest converted mana cost among permanents you control to target creature or player.
|
||||||
this.getSpellAbility().addEffect(new DamageTargetEffect(new HighestConvertedManaCostValue()));
|
this.getSpellAbility().addEffect(new DamageTargetEffect(new HighestConvertedManaCostValue())
|
||||||
|
.setText("{this} deals damage to target creature or player equal to the highest converted mana cost among permanents you control.")
|
||||||
|
);
|
||||||
this.getSpellAbility().addTarget(new TargetCreatureOrPlayer());
|
this.getSpellAbility().addTarget(new TargetCreatureOrPlayer());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -43,15 +43,15 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
|
||||||
* @author fireshoes
|
* @author fireshoes
|
||||||
*/
|
*/
|
||||||
public class VengefulDead extends CardImpl {
|
public class VengefulDead extends CardImpl {
|
||||||
|
|
||||||
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("{this} or another Zombie");
|
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Zombie");
|
||||||
|
|
||||||
static {
|
static {
|
||||||
filter.add(new SubtypePredicate(SubType.ZOMBIE));
|
filter.add(new SubtypePredicate(SubType.ZOMBIE));
|
||||||
}
|
}
|
||||||
|
|
||||||
public VengefulDead(UUID ownerId, CardSetInfo setInfo) {
|
public VengefulDead(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
|
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}");
|
||||||
this.subtype.add(SubType.ZOMBIE);
|
this.subtype.add(SubType.ZOMBIE);
|
||||||
this.power = new MageInt(3);
|
this.power = new MageInt(3);
|
||||||
this.toughness = new MageInt(2);
|
this.toughness = new MageInt(2);
|
||||||
|
|
|
||||||
|
|
@ -44,9 +44,8 @@ import mage.target.common.TargetCardInLibrary;
|
||||||
*
|
*
|
||||||
* @author fireshoes
|
* @author fireshoes
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public class WelkinHawk extends CardImpl {
|
public class WelkinHawk extends CardImpl {
|
||||||
|
|
||||||
private static final FilterCard filter = new FilterCard("card named Welkin Hawk");
|
private static final FilterCard filter = new FilterCard("card named Welkin Hawk");
|
||||||
|
|
||||||
static {
|
static {
|
||||||
|
|
@ -54,16 +53,16 @@ public class WelkinHawk extends CardImpl {
|
||||||
}
|
}
|
||||||
|
|
||||||
public WelkinHawk(UUID ownerId, CardSetInfo setInfo) {
|
public WelkinHawk(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
|
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}");
|
||||||
this.subtype.add(SubType.BIRD);
|
this.subtype.add(SubType.BIRD);
|
||||||
this.power = new MageInt(1);
|
this.power = new MageInt(1);
|
||||||
this.toughness = new MageInt(1);
|
this.toughness = new MageInt(1);
|
||||||
|
|
||||||
// Flying
|
// Flying
|
||||||
this.addAbility(FlyingAbility.getInstance());
|
this.addAbility(FlyingAbility.getInstance());
|
||||||
|
|
||||||
// When Welkin Hawk dies, you may search your library for a card named Welkin Hawk, reveal that card, put it into your hand, then shuffle your library.
|
// When Welkin Hawk dies, you may search your library for a card named Welkin Hawk, reveal that card, put it into your hand, then shuffle your library.
|
||||||
TargetCardInLibrary target = new TargetCardInLibrary(0, 1, filter);
|
TargetCardInLibrary target = new TargetCardInLibrary(1, 1, filter);
|
||||||
this.addAbility(new DiesTriggeredAbility(new SearchLibraryPutInHandEffect(target, true, true), true));
|
this.addAbility(new DiesTriggeredAbility(new SearchLibraryPutInHandEffect(target, true, true), true));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -773,7 +773,7 @@ public abstract class AbilityImpl implements Ability {
|
||||||
}
|
}
|
||||||
if (!costs.isEmpty()) {
|
if (!costs.isEmpty()) {
|
||||||
if (sbRule.length() > 0) {
|
if (sbRule.length() > 0) {
|
||||||
sbRule.append(',');
|
sbRule.append(", ");
|
||||||
}
|
}
|
||||||
sbRule.append(costs.getText());
|
sbRule.append(costs.getText());
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,6 @@ import mage.game.events.GameEvent;
|
||||||
*
|
*
|
||||||
* @author LevelX2
|
* @author LevelX2
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public class EndOfCombatTriggeredAbility extends TriggeredAbilityImpl {
|
public class EndOfCombatTriggeredAbility extends TriggeredAbilityImpl {
|
||||||
|
|
||||||
public EndOfCombatTriggeredAbility(Effect effect, boolean optional) {
|
public EndOfCombatTriggeredAbility(Effect effect, boolean optional) {
|
||||||
|
|
@ -35,7 +34,7 @@ public class EndOfCombatTriggeredAbility extends TriggeredAbilityImpl {
|
||||||
public boolean checkEventType(GameEvent event, Game game) {
|
public boolean checkEventType(GameEvent event, Game game) {
|
||||||
return event.getType() == GameEvent.EventType.END_COMBAT_STEP_PRE;
|
return event.getType() == GameEvent.EventType.END_COMBAT_STEP_PRE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean checkTrigger(GameEvent event, Game game) {
|
public boolean checkTrigger(GameEvent event, Game game) {
|
||||||
return true;
|
return true;
|
||||||
|
|
@ -43,6 +42,6 @@ public class EndOfCombatTriggeredAbility extends TriggeredAbilityImpl {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getRule() {
|
public String getRule() {
|
||||||
return "At the end of combat, " + super.getRule();
|
return "At end of combat, " + super.getRule();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,6 @@
|
||||||
* authors and should not be interpreted as representing official policies, either expressed
|
* authors and should not be interpreted as representing official policies, either expressed
|
||||||
* or implied, of BetaSteward_at_googlemail.com.
|
* or implied, of BetaSteward_at_googlemail.com.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package mage.abilities.effects.common;
|
package mage.abilities.effects.common;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
@ -52,6 +51,7 @@ public class ExileAllEffect extends OneShotEffect {
|
||||||
public ExileAllEffect(FilterPermanent filter) {
|
public ExileAllEffect(FilterPermanent filter) {
|
||||||
this(filter, null, null);
|
this(filter, null, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
public ExileAllEffect(FilterPermanent filter, UUID exileId, String exileZone) {
|
public ExileAllEffect(FilterPermanent filter, UUID exileId, String exileZone) {
|
||||||
super(Outcome.Exile);
|
super(Outcome.Exile);
|
||||||
this.filter = filter;
|
this.filter = filter;
|
||||||
|
|
@ -77,19 +77,18 @@ public class ExileAllEffect extends OneShotEffect {
|
||||||
Player controller = game.getPlayer(source.getControllerId());
|
Player controller = game.getPlayer(source.getControllerId());
|
||||||
if (controller != null) {
|
if (controller != null) {
|
||||||
List<Permanent> permanents = game.getBattlefield().getActivePermanents(filter, source.getControllerId(), source.getSourceId(), game);
|
List<Permanent> permanents = game.getBattlefield().getActivePermanents(filter, source.getControllerId(), source.getSourceId(), game);
|
||||||
for (Permanent permanent: permanents) {
|
for (Permanent permanent : permanents) {
|
||||||
controller.moveCardToExileWithInfo(permanent, exileId, exileZone, source.getSourceId(), game, Zone.BATTLEFIELD, true);
|
controller.moveCardToExileWithInfo(permanent, exileId, exileZone, source.getSourceId(), game, Zone.BATTLEFIELD, true);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setText() {
|
private void setText() {
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
sb.append("Exile all ").append(filter.getMessage());
|
sb.append("exile all ").append(filter.getMessage());
|
||||||
staticText = sb.toString();
|
staticText = sb.toString();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -106,7 +106,7 @@ public class LookLibraryTopCardTargetPlayerEffect extends OneShotEffect {
|
||||||
sb.append(CardUtil.numberToText(amount));
|
sb.append(CardUtil.numberToText(amount));
|
||||||
sb.append(" cards ");
|
sb.append(" cards ");
|
||||||
} else {
|
} else {
|
||||||
sb.append(" card ");
|
sb.append("card ");
|
||||||
}
|
}
|
||||||
sb.append("of target player's library");
|
sb.append("of target player's library");
|
||||||
if (putToGraveyard) {
|
if (putToGraveyard) {
|
||||||
|
|
|
||||||
|
|
@ -152,14 +152,20 @@ public class AddCountersSourceEffect extends OneShotEffect {
|
||||||
private void setText() {
|
private void setText() {
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
sb.append("put ");
|
sb.append("put ");
|
||||||
|
boolean plural = true;
|
||||||
if (counter.getCount() > 1) {
|
if (counter.getCount() > 1) {
|
||||||
sb.append(CardUtil.numberToText(counter.getCount())).append(' ');
|
sb.append(CardUtil.numberToText(counter.getCount())).append(' ');
|
||||||
} else if (amount.toString().equals("X") && amount.getMessage().isEmpty()) {
|
} else if (amount.toString().equals("X") && amount.getMessage().isEmpty()) {
|
||||||
sb.append("X ");
|
sb.append("X ");
|
||||||
} else {
|
} else {
|
||||||
sb.append("a ");
|
sb.append("a ");
|
||||||
|
plural = false;
|
||||||
}
|
}
|
||||||
sb.append(counter.getName().toLowerCase()).append(" counter on {this}");
|
sb.append(counter.getName().toLowerCase()).append(" counter");
|
||||||
|
if (plural) {
|
||||||
|
sb.append('s');
|
||||||
|
}
|
||||||
|
sb.append(" on {this}");
|
||||||
if (!amount.getMessage().isEmpty()) {
|
if (!amount.getMessage().isEmpty()) {
|
||||||
sb.append(" for each ").append(amount.getMessage());
|
sb.append(" for each ").append(amount.getMessage());
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -108,7 +108,7 @@ public class DiscardTargetEffect extends OneShotEffect {
|
||||||
}
|
}
|
||||||
sb.append(" discards ");
|
sb.append(" discards ");
|
||||||
if (amount.toString().equals("1")) {
|
if (amount.toString().equals("1")) {
|
||||||
sb.append(" a card");
|
sb.append("a card");
|
||||||
} else {
|
} else {
|
||||||
sb.append(CardUtil.numberToText(amount.toString())).append(" cards");
|
sb.append(CardUtil.numberToText(amount.toString())).append(" cards");
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -24,8 +24,7 @@
|
||||||
* The views and conclusions contained in the software and documentation are those of the
|
* The views and conclusions contained in the software and documentation are those of the
|
||||||
* authors and should not be interpreted as representing official policies, either expressed
|
* authors and should not be interpreted as representing official policies, either expressed
|
||||||
* or implied, of BetaSteward_at_googlemail.com.
|
* or implied, of BetaSteward_at_googlemail.com.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package mage.abilities.keyword;
|
package mage.abilities.keyword;
|
||||||
|
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
|
|
@ -46,7 +45,7 @@ import java.io.ObjectStreamException;
|
||||||
*/
|
*/
|
||||||
public class FlyingAbility extends EvasionAbility implements MageSingleton {
|
public class FlyingAbility extends EvasionAbility implements MageSingleton {
|
||||||
|
|
||||||
private static final FlyingAbility instance = new FlyingAbility();
|
private static final FlyingAbility instance = new FlyingAbility();
|
||||||
|
|
||||||
private Object readResolve() throws ObjectStreamException {
|
private Object readResolve() throws ObjectStreamException {
|
||||||
return instance;
|
return instance;
|
||||||
|
|
@ -62,7 +61,7 @@ public class FlyingAbility extends EvasionAbility implements MageSingleton {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getRule() {
|
public String getRule() {
|
||||||
return "Flying";
|
return "flying";
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -91,7 +90,7 @@ class FlyingEffect extends RestrictionEffect implements MageSingleton {
|
||||||
public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game) {
|
public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game) {
|
||||||
return blocker.getAbilities().containsKey(FlyingAbility.getInstance().getId())
|
return blocker.getAbilities().containsKey(FlyingAbility.getInstance().getId())
|
||||||
|| blocker.getAbilities().containsKey(ReachAbility.getInstance().getId())
|
|| blocker.getAbilities().containsKey(ReachAbility.getInstance().getId())
|
||||||
|| (game.getContinuousEffects().asThough(blocker.getId(), AsThoughEffectType.BLOCK_DRAGON, source, blocker.getControllerId(), game) && attacker.hasSubtype(SubType.DRAGON, game)) ;
|
|| (game.getContinuousEffects().asThough(blocker.getId(), AsThoughEffectType.BLOCK_DRAGON, source, blocker.getControllerId(), game) && attacker.hasSubtype(SubType.DRAGON, game));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
|
|
@ -56,7 +56,7 @@ public class ShroudAbility extends StaticAbility implements MageSingleton {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getRule() {
|
public String getRule() {
|
||||||
return "Shroud";
|
return "shroud";
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,6 @@
|
||||||
* authors and should not be interpreted as representing official policies, either expressed
|
* authors and should not be interpreted as representing official policies, either expressed
|
||||||
* or implied, of BetaSteward_at_googlemail.com.
|
* or implied, of BetaSteward_at_googlemail.com.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package mage.abilities.keyword;
|
package mage.abilities.keyword;
|
||||||
|
|
||||||
import mage.constants.Zone;
|
import mage.constants.Zone;
|
||||||
|
|
@ -40,7 +39,7 @@ import java.io.ObjectStreamException;
|
||||||
*/
|
*/
|
||||||
public class VigilanceAbility extends StaticAbility implements MageSingleton {
|
public class VigilanceAbility extends StaticAbility implements MageSingleton {
|
||||||
|
|
||||||
private static final VigilanceAbility instance = new VigilanceAbility();
|
private static final VigilanceAbility instance = new VigilanceAbility();
|
||||||
|
|
||||||
private Object readResolve() throws ObjectStreamException {
|
private Object readResolve() throws ObjectStreamException {
|
||||||
return instance;
|
return instance;
|
||||||
|
|
@ -56,7 +55,7 @@ public class VigilanceAbility extends StaticAbility implements MageSingleton {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getRule() {
|
public String getRule() {
|
||||||
return "Vigilance";
|
return "vigilance";
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue