mirror of
https://github.com/correl/mage.git
synced 2024-11-15 03:00:16 +00:00
[SLD] various text fixes
This commit is contained in:
parent
9407d15dad
commit
a55cfe2589
24 changed files with 95 additions and 125 deletions
|
@ -38,7 +38,7 @@ class AllIsDustEffect extends OneShotEffect {
|
||||||
|
|
||||||
AllIsDustEffect() {
|
AllIsDustEffect() {
|
||||||
super(Outcome.DestroyPermanent);
|
super(Outcome.DestroyPermanent);
|
||||||
staticText = "Each player sacrifices all colored permanents they control";
|
staticText = "Each player sacrifices all permanents they control that are one or more colors";
|
||||||
}
|
}
|
||||||
|
|
||||||
AllIsDustEffect(final AllIsDustEffect effect) {
|
AllIsDustEffect(final AllIsDustEffect effect) {
|
||||||
|
|
|
@ -57,7 +57,7 @@ public final class ArahboRoarOfTheWorld extends CardImpl {
|
||||||
Ability ability = new ConditionalInterveningIfTriggeredAbility(
|
Ability ability = new ConditionalInterveningIfTriggeredAbility(
|
||||||
new BeginningOfCombatTriggeredAbility(Zone.ALL, new BoostTargetEffect(3, 3, Duration.EndOfTurn), TargetController.YOU, false, false),
|
new BeginningOfCombatTriggeredAbility(Zone.ALL, new BoostTargetEffect(3, 3, Duration.EndOfTurn), TargetController.YOU, false, false),
|
||||||
SourceOnBattlefieldOrCommandZoneCondition.instance,
|
SourceOnBattlefieldOrCommandZoneCondition.instance,
|
||||||
"<i>Eminence</i> — At the beginning of combat on your turn, if Arahbo, Roar of the World is in the command zone or on the battlefield, another target Cat you control gets +3/+3 until end of turn.");
|
"At the beginning of combat on your turn, if {this} is in the command zone or on the battlefield, another target Cat you control gets +3/+3 until end of turn.");
|
||||||
ability.addTarget(new TargetCreaturePermanent(filter));
|
ability.addTarget(new TargetCreaturePermanent(filter));
|
||||||
ability.setAbilityWord(AbilityWord.EMINENCE);
|
ability.setAbilityWord(AbilityWord.EMINENCE);
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
|
|
|
@ -25,7 +25,7 @@ public final class Bitterblossom extends CardImpl {
|
||||||
|
|
||||||
// At the beginning of your upkeep, you lose 1 life and create a 1/1 black Faerie Rogue creature token with flying.
|
// At the beginning of your upkeep, you lose 1 life and create a 1/1 black Faerie Rogue creature token with flying.
|
||||||
Ability ability = new BeginningOfUpkeepTriggeredAbility(new LoseLifeSourceControllerEffect(1), TargetController.YOU, false);
|
Ability ability = new BeginningOfUpkeepTriggeredAbility(new LoseLifeSourceControllerEffect(1), TargetController.YOU, false);
|
||||||
ability.addEffect(new CreateTokenEffect(new FaerieRogueToken(), 1));
|
ability.addEffect(new CreateTokenEffect(new FaerieRogueToken(), 1).concatBy("and"));
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
|
|
||||||
package mage.cards.b;
|
package mage.cards.b;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.common.CantBlockAbility;
|
import mage.abilities.common.CantBlockAbility;
|
||||||
import mage.abilities.common.LandfallAbility;
|
import mage.abilities.common.LandfallAbility;
|
||||||
|
@ -19,8 +18,9 @@ import mage.constants.Duration;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
import mage.constants.Zone;
|
import mage.constants.Zone;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author maurer.it_at_gmail.com
|
* @author maurer.it_at_gmail.com
|
||||||
*/
|
*/
|
||||||
public final class Bloodghast extends CardImpl {
|
public final class Bloodghast extends CardImpl {
|
||||||
|
@ -38,9 +38,9 @@ public final class Bloodghast extends CardImpl {
|
||||||
ContinuousEffect effect = new GainAbilitySourceEffect(HasteAbility.getInstance(), Duration.WhileOnBattlefield);
|
ContinuousEffect effect = new GainAbilitySourceEffect(HasteAbility.getInstance(), Duration.WhileOnBattlefield);
|
||||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinuousEffect(effect,
|
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinuousEffect(effect,
|
||||||
new XorLessLifeCondition(XorLessLifeCondition.CheckType.AN_OPPONENT, 10),
|
new XorLessLifeCondition(XorLessLifeCondition.CheckType.AN_OPPONENT, 10),
|
||||||
"Bloodghast has haste as long as an opponent has 10 or less life")));
|
"{this} has haste as long as an opponent has 10 or less life")));
|
||||||
// Landfall — Whenever a land enters the battlefield under your control, you may return Bloodghast from your graveyard to the battlefield.
|
// Landfall — Whenever a land enters the battlefield under your control, you may return Bloodghast from your graveyard to the battlefield.
|
||||||
this.addAbility(new LandfallAbility(Zone.GRAVEYARD, new ReturnSourceFromGraveyardToBattlefieldEffect(), true));
|
this.addAbility(new LandfallAbility(Zone.GRAVEYARD, new ReturnSourceFromGraveyardToBattlefieldEffect(false, false), true));
|
||||||
}
|
}
|
||||||
|
|
||||||
private Bloodghast(final Bloodghast card) {
|
private Bloodghast(final Bloodghast card) {
|
||||||
|
|
|
@ -25,7 +25,7 @@ public final class CrashThrough extends CardImpl {
|
||||||
getSpellAbility().addEffect(new GainAbilityAllEffect(TrampleAbility.getInstance(), Duration.EndOfTurn, new FilterControlledCreaturePermanent(), "Creatures you control gain trample until end of turn"));
|
getSpellAbility().addEffect(new GainAbilityAllEffect(TrampleAbility.getInstance(), Duration.EndOfTurn, new FilterControlledCreaturePermanent(), "Creatures you control gain trample until end of turn"));
|
||||||
|
|
||||||
// Draw a card.
|
// Draw a card.
|
||||||
getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1));
|
getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1).concatBy("<br>"));
|
||||||
}
|
}
|
||||||
|
|
||||||
private CrashThrough(final CrashThrough card) {
|
private CrashThrough(final CrashThrough card) {
|
||||||
|
|
|
@ -40,8 +40,13 @@ public final class CraterhoofBehemoth extends CardImpl {
|
||||||
this.addAbility(HasteAbility.getInstance());
|
this.addAbility(HasteAbility.getInstance());
|
||||||
|
|
||||||
// When Craterhoof Behemoth enters the battlefield, creatures you control gain trample and get +X/+X until end of turn, where X is the number of creatures you control.
|
// When Craterhoof Behemoth enters the battlefield, creatures you control gain trample and get +X/+X until end of turn, where X is the number of creatures you control.
|
||||||
Ability ability = new EntersBattlefieldTriggeredAbility(new GainAbilityControlledEffect(TrampleAbility.getInstance(), Duration.EndOfTurn, filter));
|
Ability ability = new EntersBattlefieldTriggeredAbility(new GainAbilityControlledEffect(
|
||||||
ability.addEffect(new BoostControlledEffect(CreaturesYouControlCount.instance, CreaturesYouControlCount.instance, Duration.EndOfTurn, filter, false, true));
|
TrampleAbility.getInstance(), Duration.EndOfTurn, filter
|
||||||
|
).setText("creatures you control gain trample"));
|
||||||
|
ability.addEffect(new BoostControlledEffect(
|
||||||
|
CreaturesYouControlCount.instance, CreaturesYouControlCount.instance,
|
||||||
|
Duration.EndOfTurn, filter, false, true
|
||||||
|
).setText("and get +X/+X until end of turn, where X is the number of creatures you control"));
|
||||||
ability.addHint(CreaturesYouControlHint.instance);
|
ability.addHint(CreaturesYouControlHint.instance);
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,14 +1,11 @@
|
||||||
|
|
||||||
package mage.cards.e;
|
package mage.cards.e;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.OnEventTriggeredAbility;
|
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
|
||||||
import mage.abilities.common.SimpleStaticAbility;
|
import mage.abilities.common.SimpleStaticAbility;
|
||||||
import mage.abilities.effects.Effect;
|
import mage.abilities.costs.common.SacrificeTargetCost;
|
||||||
import mage.abilities.effects.OneShotEffect;
|
import mage.abilities.effects.common.SacrificeSourceUnlessPaysEffect;
|
||||||
import mage.abilities.effects.common.continuous.BoostControlledEffect;
|
import mage.abilities.effects.common.continuous.BoostControlledEffect;
|
||||||
import mage.abilities.effects.common.continuous.GainAbilityAllEffect;
|
|
||||||
import mage.abilities.effects.common.continuous.GainAbilityControlledEffect;
|
import mage.abilities.effects.common.continuous.GainAbilityControlledEffect;
|
||||||
import mage.abilities.keyword.FlyingAbility;
|
import mage.abilities.keyword.FlyingAbility;
|
||||||
import mage.abilities.keyword.IndestructibleAbility;
|
import mage.abilities.keyword.IndestructibleAbility;
|
||||||
|
@ -16,20 +13,13 @@ import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.Duration;
|
import mage.constants.Duration;
|
||||||
import mage.constants.Outcome;
|
import mage.constants.TargetController;
|
||||||
import mage.constants.Zone;
|
|
||||||
import mage.filter.StaticFilters;
|
import mage.filter.StaticFilters;
|
||||||
import mage.filter.common.FilterControlledCreaturePermanent;
|
|
||||||
import mage.filter.common.FilterCreaturePermanent;
|
|
||||||
import mage.game.Game;
|
|
||||||
import mage.game.events.GameEvent.EventType;
|
|
||||||
import mage.game.permanent.Permanent;
|
|
||||||
import mage.players.Player;
|
|
||||||
import mage.target.common.TargetControlledCreaturePermanent;
|
|
||||||
import mage.target.common.TargetControlledPermanent;
|
import mage.target.common.TargetControlledPermanent;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author BetaSteward_at_googlemail.com
|
* @author BetaSteward_at_googlemail.com
|
||||||
*/
|
*/
|
||||||
public final class EldraziMonument extends CardImpl {
|
public final class EldraziMonument extends CardImpl {
|
||||||
|
@ -38,13 +28,26 @@ public final class EldraziMonument extends CardImpl {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{5}");
|
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{5}");
|
||||||
|
|
||||||
// Creatures you control get +1/+1, have flying, and are indestructible.
|
// Creatures you control get +1/+1, have flying, and are indestructible.
|
||||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostControlledEffect(1, 1, Duration.WhileOnBattlefield, StaticFilters.FILTER_PERMANENT_CREATURE, false)));
|
Ability ability = new SimpleStaticAbility(new BoostControlledEffect(
|
||||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityControlledEffect(FlyingAbility.getInstance(), Duration.WhileOnBattlefield, new FilterCreaturePermanent())));
|
1, 1, Duration.WhileOnBattlefield,
|
||||||
Effect effect = new GainAbilityAllEffect(IndestructibleAbility.getInstance(), Duration.WhileOnBattlefield, new FilterControlledCreaturePermanent("Creatures you control"), false);
|
StaticFilters.FILTER_PERMANENT_CREATURES, false
|
||||||
effect.setText("Creatures you control are indestructible");
|
));
|
||||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect));
|
ability.addEffect(new GainAbilityControlledEffect(
|
||||||
|
FlyingAbility.getInstance(), Duration.WhileOnBattlefield,
|
||||||
|
StaticFilters.FILTER_PERMANENT_CREATURES
|
||||||
|
).setText("and have flying"));
|
||||||
|
ability.addEffect(new GainAbilityControlledEffect(
|
||||||
|
IndestructibleAbility.getInstance(), Duration.WhileOnBattlefield,
|
||||||
|
StaticFilters.FILTER_PERMANENT_CREATURES
|
||||||
|
).setText("and indestructible"));
|
||||||
|
this.addAbility(ability);
|
||||||
|
|
||||||
// At the beginning of your upkeep, sacrifice a creature. If you can't, sacrifice Eldrazi Monument.
|
// At the beginning of your upkeep, sacrifice a creature. If you can't, sacrifice Eldrazi Monument.
|
||||||
this.addAbility(new OnEventTriggeredAbility(EventType.UPKEEP_STEP_PRE, "beginning of your upkeep", new EldraziMonumentEffect()));
|
this.addAbility(new BeginningOfUpkeepTriggeredAbility(
|
||||||
|
new SacrificeSourceUnlessPaysEffect(new SacrificeTargetCost(
|
||||||
|
new TargetControlledPermanent(StaticFilters.FILTER_CONTROLLED_CREATURE_SHORT_TEXT)
|
||||||
|
)).setText("sacrifice a creature. If you can't, sacrifice {this}"), TargetController.YOU, false
|
||||||
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
private EldraziMonument(final EldraziMonument card) {
|
private EldraziMonument(final EldraziMonument card) {
|
||||||
|
@ -55,42 +58,4 @@ public final class EldraziMonument extends CardImpl {
|
||||||
public EldraziMonument copy() {
|
public EldraziMonument copy() {
|
||||||
return new EldraziMonument(this);
|
return new EldraziMonument(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
class EldraziMonumentEffect extends OneShotEffect {
|
|
||||||
|
|
||||||
public EldraziMonumentEffect() {
|
|
||||||
super(Outcome.Sacrifice);
|
|
||||||
staticText = "sacrifice a creature. If you can't, sacrifice {this}";
|
|
||||||
}
|
|
||||||
|
|
||||||
public EldraziMonumentEffect(final EldraziMonumentEffect ability) {
|
|
||||||
super(ability);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public EldraziMonumentEffect copy() {
|
|
||||||
return new EldraziMonumentEffect(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean apply(Game game, Ability source) {
|
|
||||||
TargetControlledPermanent target = new TargetControlledCreaturePermanent();
|
|
||||||
Player player = game.getPlayer(source.getControllerId());
|
|
||||||
if (target.canChoose(source.getSourceId(), source.getControllerId(), game)) {
|
|
||||||
player.choose(this.outcome, target, source.getSourceId(), game);
|
|
||||||
Permanent permanent = game.getPermanent(target.getFirstTarget());
|
|
||||||
if (permanent != null) {
|
|
||||||
return permanent.sacrifice(source, game);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Permanent permanent = game.getPermanent(source.getSourceId());
|
|
||||||
if (permanent != null) {
|
|
||||||
return permanent.sacrifice(source, game);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -48,7 +48,7 @@ class FleetSwallowerEffect extends OneShotEffect {
|
||||||
|
|
||||||
public FleetSwallowerEffect() {
|
public FleetSwallowerEffect() {
|
||||||
super(Outcome.Detriment);
|
super(Outcome.Detriment);
|
||||||
staticText = "target player puts the top half of their library, rounded up, into their graveyard";
|
staticText = "target player mills half their library, rounded up";
|
||||||
}
|
}
|
||||||
|
|
||||||
public FleetSwallowerEffect(final FleetSwallowerEffect effect) {
|
public FleetSwallowerEffect(final FleetSwallowerEffect effect) {
|
||||||
|
|
|
@ -31,7 +31,7 @@ public final class GoblinKing extends CardImpl {
|
||||||
|
|
||||||
// Other Goblin creatures get +1/+1 and have mountainwalk.
|
// Other Goblin creatures get +1/+1 and have mountainwalk.
|
||||||
Effect effect = new BoostAllEffect(1, 1, Duration.WhileOnBattlefield, StaticFilters.FILTER_PERMANENT_CREATURE_GOBLINS, true);
|
Effect effect = new BoostAllEffect(1, 1, Duration.WhileOnBattlefield, StaticFilters.FILTER_PERMANENT_CREATURE_GOBLINS, true);
|
||||||
effect.setText("Other Goblin creatures get +1/+1");
|
effect.setText("Other Goblins get +1/+1");
|
||||||
Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, effect);
|
Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, effect);
|
||||||
effect = new GainAbilityAllEffect(new MountainwalkAbility(), Duration.WhileOnBattlefield, StaticFilters.FILTER_PERMANENT_CREATURE_GOBLINS, true);
|
effect = new GainAbilityAllEffect(new MountainwalkAbility(), Duration.WhileOnBattlefield, StaticFilters.FILTER_PERMANENT_CREATURE_GOBLINS, true);
|
||||||
effect.setText("and have mountainwalk");
|
effect.setText("and have mountainwalk");
|
||||||
|
|
|
@ -1,28 +1,28 @@
|
||||||
|
|
||||||
package mage.cards.g;
|
package mage.cards.g;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.common.AttacksTriggeredAbility;
|
import mage.abilities.common.AttacksTriggeredAbility;
|
||||||
import mage.abilities.common.BeginningOfCombatTriggeredAbility;
|
import mage.abilities.common.BeginningOfCombatTriggeredAbility;
|
||||||
import mage.abilities.common.SimpleStaticAbility;
|
import mage.abilities.common.SimpleStaticAbility;
|
||||||
import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount;
|
import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount;
|
||||||
import mage.abilities.dynamicvalue.common.StaticValue;
|
import mage.abilities.dynamicvalue.common.StaticValue;
|
||||||
import mage.abilities.effects.Effect;
|
|
||||||
import mage.abilities.effects.common.CreateTokenEffect;
|
import mage.abilities.effects.common.CreateTokenEffect;
|
||||||
import mage.abilities.effects.common.combat.AttacksIfAbleAllEffect;
|
import mage.abilities.effects.common.combat.AttacksIfAbleAllEffect;
|
||||||
import mage.abilities.effects.common.continuous.BoostSourceEffect;
|
import mage.abilities.effects.common.continuous.BoostSourceEffect;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.*;
|
import mage.constants.CardType;
|
||||||
|
import mage.constants.Duration;
|
||||||
|
import mage.constants.SubType;
|
||||||
|
import mage.constants.TargetController;
|
||||||
import mage.filter.common.FilterCreaturePermanent;
|
import mage.filter.common.FilterCreaturePermanent;
|
||||||
import mage.filter.predicate.mageobject.AnotherPredicate;
|
import mage.filter.predicate.mageobject.AnotherPredicate;
|
||||||
import mage.filter.predicate.permanent.AttackingPredicate;
|
import mage.filter.predicate.permanent.AttackingPredicate;
|
||||||
import mage.game.permanent.token.GoblinToken;
|
import mage.game.permanent.token.GoblinToken;
|
||||||
import mage.watchers.common.AttackedThisTurnWatcher;
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author Quercitron
|
* @author Quercitron
|
||||||
*/
|
*/
|
||||||
public final class GoblinRabblemaster extends CardImpl {
|
public final class GoblinRabblemaster extends CardImpl {
|
||||||
|
@ -47,8 +47,7 @@ public final class GoblinRabblemaster extends CardImpl {
|
||||||
this.toughness = new MageInt(2);
|
this.toughness = new MageInt(2);
|
||||||
|
|
||||||
// Other Goblin creatures you control attack each turn if able.
|
// Other Goblin creatures you control attack each turn if able.
|
||||||
Effect effect = new AttacksIfAbleAllEffect(otherGoblinFilter);
|
this.addAbility(new SimpleStaticAbility(new AttacksIfAbleAllEffect(otherGoblinFilter, Duration.WhileOnBattlefield, true)));
|
||||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect), new AttackedThisTurnWatcher());
|
|
||||||
|
|
||||||
// At the beginning of combat on your turn, create a 1/1 red Goblin creature token with haste.
|
// At the beginning of combat on your turn, create a 1/1 red Goblin creature token with haste.
|
||||||
this.addAbility(new BeginningOfCombatTriggeredAbility(new CreateTokenEffect(new GoblinToken(true)), TargetController.YOU, false));
|
this.addAbility(new BeginningOfCombatTriggeredAbility(new CreateTokenEffect(new GoblinToken(true)), TargetController.YOU, false));
|
||||||
|
|
|
@ -26,7 +26,7 @@ import mage.target.common.TargetControlledPermanent;
|
||||||
public final class GoblinTrashmaster extends CardImpl {
|
public final class GoblinTrashmaster extends CardImpl {
|
||||||
|
|
||||||
private static final FilterCreaturePermanent filter
|
private static final FilterCreaturePermanent filter
|
||||||
= new FilterCreaturePermanent(SubType.GOBLIN, "Goblins you control");
|
= new FilterCreaturePermanent(SubType.GOBLIN, "Goblins");
|
||||||
private static final FilterControlledCreaturePermanent filter2
|
private static final FilterControlledCreaturePermanent filter2
|
||||||
= new FilterControlledCreaturePermanent(SubType.GOBLIN, "a Goblin");
|
= new FilterControlledCreaturePermanent(SubType.GOBLIN, "a Goblin");
|
||||||
|
|
||||||
|
|
|
@ -44,7 +44,7 @@ public final class HeliodGodOfTheSun extends CardImpl {
|
||||||
// Other creatures you control have vigilance.
|
// Other creatures you control have vigilance.
|
||||||
this.addAbility(new SimpleStaticAbility(new GainAbilityControlledEffect(
|
this.addAbility(new SimpleStaticAbility(new GainAbilityControlledEffect(
|
||||||
VigilanceAbility.getInstance(), Duration.WhileOnBattlefield,
|
VigilanceAbility.getInstance(), Duration.WhileOnBattlefield,
|
||||||
StaticFilters.FILTER_PERMANENT_CREATURE, true
|
StaticFilters.FILTER_PERMANENT_CREATURES, true
|
||||||
)));
|
)));
|
||||||
|
|
||||||
// {2}{W}{W}: Create a 2/1 white Cleric enchantment creature token.
|
// {2}{W}{W}: Create a 2/1 white Cleric enchantment creature token.
|
||||||
|
|
|
@ -48,9 +48,9 @@ public final class KothophedSoulHoarder extends CardImpl {
|
||||||
|
|
||||||
// Whenever a permanent owned by another player is put into the graveyard from the battlefield, you draw one card and lose 1 life.
|
// Whenever a permanent owned by another player is put into the graveyard from the battlefield, you draw one card and lose 1 life.
|
||||||
Effect effect = new DrawCardSourceControllerEffect(1);
|
Effect effect = new DrawCardSourceControllerEffect(1);
|
||||||
effect.setText("you draw one card");
|
effect.setText("you draw a card");
|
||||||
Ability ability = new ZoneChangeAllTriggeredAbility(Zone.BATTLEFIELD, Zone.BATTLEFIELD, Zone.GRAVEYARD, effect, filter,
|
Ability ability = new ZoneChangeAllTriggeredAbility(Zone.BATTLEFIELD, Zone.BATTLEFIELD, Zone.GRAVEYARD, effect, filter,
|
||||||
"Whenever a permanent owned by another player is put into the graveyard from the battlefield, ", false);
|
"Whenever a permanent owned by another player is put into a graveyard from the battlefield, ", false);
|
||||||
effect = new LoseLifeSourceControllerEffect(1);
|
effect = new LoseLifeSourceControllerEffect(1);
|
||||||
effect.setText("and lose 1 life");
|
effect.setText("and lose 1 life");
|
||||||
ability.addEffect(effect);
|
ability.addEffect(effect);
|
||||||
|
|
|
@ -1,8 +1,6 @@
|
||||||
|
|
||||||
package mage.cards.l;
|
package mage.cards.l;
|
||||||
|
|
||||||
import java.util.UUID;
|
import mage.abilities.effects.common.ReturnFromGraveyardToHandTargetEffect;
|
||||||
import mage.abilities.effects.common.ReturnToHandTargetEffect;
|
|
||||||
import mage.abilities.keyword.DredgeAbility;
|
import mage.abilities.keyword.DredgeAbility;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
|
@ -10,8 +8,9 @@ import mage.constants.CardType;
|
||||||
import mage.filter.common.FilterLandCard;
|
import mage.filter.common.FilterLandCard;
|
||||||
import mage.target.common.TargetCardInYourGraveyard;
|
import mage.target.common.TargetCardInYourGraveyard;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author jonubuu
|
* @author jonubuu
|
||||||
*/
|
*/
|
||||||
public final class LifeFromTheLoam extends CardImpl {
|
public final class LifeFromTheLoam extends CardImpl {
|
||||||
|
@ -19,9 +18,8 @@ public final class LifeFromTheLoam extends CardImpl {
|
||||||
public LifeFromTheLoam(UUID ownerId, CardSetInfo setInfo) {
|
public LifeFromTheLoam(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{G}");
|
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{G}");
|
||||||
|
|
||||||
|
|
||||||
// Return up to three target land cards from your graveyard to your hand.
|
// Return up to three target land cards from your graveyard to your hand.
|
||||||
this.getSpellAbility().addEffect(new ReturnToHandTargetEffect());
|
this.getSpellAbility().addEffect(new ReturnFromGraveyardToHandTargetEffect());
|
||||||
this.getSpellAbility().addTarget(new TargetCardInYourGraveyard(0, 3, new FilterLandCard("land cards from your graveyard")));
|
this.getSpellAbility().addTarget(new TargetCardInYourGraveyard(0, 3, new FilterLandCard("land cards from your graveyard")));
|
||||||
// Dredge 3 (If you would draw a card, instead you may put exactly three cards from the top of your library into your graveyard. If you do, return this card from your graveyard to your hand. Otherwise, draw a card.)
|
// Dredge 3 (If you would draw a card, instead you may put exactly three cards from the top of your library into your graveyard. If you do, return this card from your graveyard to your hand. Otherwise, draw a card.)
|
||||||
this.addAbility(new DredgeAbility(3));
|
this.addAbility(new DredgeAbility(3));
|
||||||
|
|
|
@ -15,6 +15,7 @@ import mage.cards.CardSetInfo;
|
||||||
import mage.constants.*;
|
import mage.constants.*;
|
||||||
import mage.game.Game;
|
import mage.game.Game;
|
||||||
import mage.game.events.GameEvent;
|
import mage.game.events.GameEvent;
|
||||||
|
import mage.game.permanent.token.WalkerToken;
|
||||||
import mage.game.permanent.token.ZombieToken;
|
import mage.game.permanent.token.ZombieToken;
|
||||||
|
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
@ -35,7 +36,7 @@ public final class MichonneRuthlessSurvivor extends CardImpl {
|
||||||
this.toughness = new MageInt(3);
|
this.toughness = new MageInt(3);
|
||||||
|
|
||||||
// When Michonne enters the battlefield, create two Walker tokens.
|
// When Michonne enters the battlefield, create two Walker tokens.
|
||||||
this.addAbility(new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new ZombieToken(), 2)));
|
this.addAbility(new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new WalkerToken(), 2)));
|
||||||
|
|
||||||
// As long as Michonne is equipped, she must be blocked if able.
|
// As long as Michonne is equipped, she must be blocked if able.
|
||||||
this.addAbility(new SimpleStaticAbility(new ConditionalRequirementEffect(
|
this.addAbility(new SimpleStaticAbility(new ConditionalRequirementEffect(
|
||||||
|
@ -44,7 +45,7 @@ public final class MichonneRuthlessSurvivor extends CardImpl {
|
||||||
)));
|
)));
|
||||||
|
|
||||||
// Whenever Michonne and at least two Zombies attack, she gains indestructible until end of turn.
|
// Whenever Michonne and at least two Zombies attack, she gains indestructible until end of turn.
|
||||||
this.addAbility(new BattalionAbility());
|
this.addAbility(new MichonneRuthlessSurvivorAbility());
|
||||||
}
|
}
|
||||||
|
|
||||||
private MichonneRuthlessSurvivor(final MichonneRuthlessSurvivor card) {
|
private MichonneRuthlessSurvivor(final MichonneRuthlessSurvivor card) {
|
||||||
|
@ -57,19 +58,19 @@ public final class MichonneRuthlessSurvivor extends CardImpl {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class BattalionAbility extends TriggeredAbilityImpl {
|
class MichonneRuthlessSurvivorAbility extends TriggeredAbilityImpl {
|
||||||
|
|
||||||
public BattalionAbility() {
|
public MichonneRuthlessSurvivorAbility() {
|
||||||
super(Zone.BATTLEFIELD, new GainAbilitySourceEffect(IndestructibleAbility.getInstance(), Duration.EndOfTurn));
|
super(Zone.BATTLEFIELD, new GainAbilitySourceEffect(IndestructibleAbility.getInstance(), Duration.EndOfTurn));
|
||||||
}
|
}
|
||||||
|
|
||||||
public BattalionAbility(final BattalionAbility ability) {
|
public MichonneRuthlessSurvivorAbility(final MichonneRuthlessSurvivorAbility ability) {
|
||||||
super(ability);
|
super(ability);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BattalionAbility copy() {
|
public MichonneRuthlessSurvivorAbility copy() {
|
||||||
return new BattalionAbility(this);
|
return new MichonneRuthlessSurvivorAbility(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -46,7 +46,7 @@ public final class NeganTheColdBlooded extends CardImpl {
|
||||||
|
|
||||||
// Whenever an opponent sacrifices a creature, you create a Treasure token.
|
// Whenever an opponent sacrifices a creature, you create a Treasure token.
|
||||||
this.addAbility(new SacrificeAllTriggeredAbility(
|
this.addAbility(new SacrificeAllTriggeredAbility(
|
||||||
new CreateTokenEffect(new TreasureToken()),
|
new CreateTokenEffect(new TreasureToken()).setText("you create a Treasure token"),
|
||||||
StaticFilters.FILTER_PERMANENT_A_CREATURE,
|
StaticFilters.FILTER_PERMANENT_A_CREATURE,
|
||||||
TargetController.OPPONENT, false
|
TargetController.OPPONENT, false
|
||||||
));
|
));
|
||||||
|
|
|
@ -45,7 +45,7 @@ public final class NyleaGodOfTheHunt extends CardImpl {
|
||||||
// Other creatures you control have trample.
|
// Other creatures you control have trample.
|
||||||
this.addAbility(new SimpleStaticAbility(new GainAbilityControlledEffect(
|
this.addAbility(new SimpleStaticAbility(new GainAbilityControlledEffect(
|
||||||
TrampleAbility.getInstance(), Duration.WhileOnBattlefield,
|
TrampleAbility.getInstance(), Duration.WhileOnBattlefield,
|
||||||
StaticFilters.FILTER_PERMANENT_CREATURE, true
|
StaticFilters.FILTER_PERMANENT_CREATURES, true
|
||||||
)));
|
)));
|
||||||
|
|
||||||
// {3}{G}: Target creature gets +2/+2 until end of turn.
|
// {3}{G}: Target creature gets +2/+2 until end of turn.
|
||||||
|
|
|
@ -18,7 +18,7 @@ import mage.filter.FilterSpell;
|
||||||
*/
|
*/
|
||||||
public final class RekiTheHistoryOfKamigawa extends CardImpl {
|
public final class RekiTheHistoryOfKamigawa extends CardImpl {
|
||||||
|
|
||||||
private static final FilterSpell filter = new FilterSpell("legendary spell");
|
private static final FilterSpell filter = new FilterSpell("a legendary spell");
|
||||||
|
|
||||||
static {
|
static {
|
||||||
filter.add(SuperType.LEGENDARY.getPredicate());
|
filter.add(SuperType.LEGENDARY.getPredicate());
|
||||||
|
|
|
@ -1,14 +1,12 @@
|
||||||
|
|
||||||
package mage.cards.s;
|
package mage.cards.s;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.SimpleActivatedAbility;
|
import mage.abilities.common.SimpleActivatedAbility;
|
||||||
import mage.abilities.costs.common.SacrificeTargetCost;
|
import mage.abilities.costs.common.SacrificeTargetCost;
|
||||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||||
import mage.abilities.effects.common.CreateTokenEffect;
|
import mage.abilities.effects.common.CreateTokenEffect;
|
||||||
import mage.abilities.effects.common.continuous.BoostControlledEffect;
|
import mage.abilities.effects.common.continuous.BoostAllEffect;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
|
@ -20,8 +18,9 @@ import mage.filter.common.FilterCreaturePermanent;
|
||||||
import mage.game.permanent.token.SquirrelToken;
|
import mage.game.permanent.token.SquirrelToken;
|
||||||
import mage.target.common.TargetControlledPermanent;
|
import mage.target.common.TargetControlledPermanent;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author LevelX2
|
* @author LevelX2
|
||||||
*/
|
*/
|
||||||
public final class SquirrelWrangler extends CardImpl {
|
public final class SquirrelWrangler extends CardImpl {
|
||||||
|
@ -42,7 +41,7 @@ public final class SquirrelWrangler extends CardImpl {
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
|
|
||||||
// {1}{G}, Sacrifice a land: Squirrel creatures get +1/+1 until end of turn.
|
// {1}{G}, Sacrifice a land: Squirrel creatures get +1/+1 until end of turn.
|
||||||
ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostControlledEffect(1,1,Duration.EndOfTurn, filter), new ManaCostsImpl("{1}{G}"));
|
ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostAllEffect(1, 1, Duration.EndOfTurn, filter, false), new ManaCostsImpl("{1}{G}"));
|
||||||
ability.addCost(new SacrificeTargetCost(new TargetControlledPermanent(new FilterControlledLandPermanent("a land"))));
|
ability.addCost(new SacrificeTargetCost(new TargetControlledPermanent(new FilterControlledLandPermanent("a land"))));
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
|
|
||||||
|
|
|
@ -22,7 +22,7 @@ import mage.target.TargetSpell;
|
||||||
*/
|
*/
|
||||||
public final class SwanSong extends CardImpl {
|
public final class SwanSong extends CardImpl {
|
||||||
|
|
||||||
private static final FilterSpell filter = new FilterSpell("enchantment, instant or sorcery spell");
|
private static final FilterSpell filter = new FilterSpell("enchantment, instant, or sorcery spell");
|
||||||
|
|
||||||
static {
|
static {
|
||||||
filter.add(Predicates.or(CardType.ENCHANTMENT.getPredicate(),
|
filter.add(Predicates.or(CardType.ENCHANTMENT.getPredicate(),
|
||||||
|
@ -52,7 +52,7 @@ class SwanSongEffect extends OneShotEffect {
|
||||||
|
|
||||||
public SwanSongEffect() {
|
public SwanSongEffect() {
|
||||||
super(Outcome.Benefit);
|
super(Outcome.Benefit);
|
||||||
this.staticText = "Counter target enchantment, instant or sorcery spell. Its controller creates a 2/2 blue Bird creature token with flying";
|
this.staticText = "Counter target enchantment, instant, or sorcery spell. Its controller creates a 2/2 blue Bird creature token with flying";
|
||||||
}
|
}
|
||||||
|
|
||||||
public SwanSongEffect(final SwanSongEffect effect) {
|
public SwanSongEffect(final SwanSongEffect effect) {
|
||||||
|
|
|
@ -96,7 +96,7 @@ class ThraximundarTriggeredAbility extends TriggeredAbilityImpl {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getTriggerPhrase() {
|
public String getRule() {
|
||||||
return "Whenever {this} attacks, defending player sacrifices a creature.";
|
return "Whenever {this} attacks, defending player sacrifices a creature.";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -123,7 +123,7 @@ class PlayerSacrificesCreatureTriggeredAbility extends TriggeredAbilityImpl {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getRule() {
|
public String getTriggerPhrase() {
|
||||||
return "Whenever a player sacrifices a creature, " ;
|
return "Whenever a player sacrifices a creature, " ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -72,8 +72,8 @@ class ToshiroUmezawaEffect extends OneShotEffect {
|
||||||
|
|
||||||
public ToshiroUmezawaEffect() {
|
public ToshiroUmezawaEffect() {
|
||||||
super(Outcome.Benefit);
|
super(Outcome.Benefit);
|
||||||
this.staticText = "cast target instant card from your graveyard. "
|
this.staticText = "you may cast target instant card from your graveyard. "
|
||||||
+ "If that card would be put into a graveyard this turn, exile it instead";
|
+ "If that spell would be put into a graveyard this turn, exile it instead";
|
||||||
}
|
}
|
||||||
|
|
||||||
public ToshiroUmezawaEffect(final ToshiroUmezawaEffect effect) {
|
public ToshiroUmezawaEffect(final ToshiroUmezawaEffect effect) {
|
||||||
|
|
|
@ -1,7 +1,5 @@
|
||||||
|
|
||||||
package mage.cards.v;
|
package mage.cards.v;
|
||||||
|
|
||||||
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.costs.common.TapSourceCost;
|
import mage.abilities.costs.common.TapSourceCost;
|
||||||
|
@ -14,11 +12,11 @@ import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.Duration;
|
import mage.constants.Duration;
|
||||||
import mage.constants.Zone;
|
import mage.filter.StaticFilters;
|
||||||
import mage.filter.common.FilterControlledCreaturePermanent;
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author North
|
* @author North
|
||||||
*/
|
*/
|
||||||
public final class VaultOfTheArchangel extends CardImpl {
|
public final class VaultOfTheArchangel extends CardImpl {
|
||||||
|
@ -28,11 +26,16 @@ public final class VaultOfTheArchangel extends CardImpl {
|
||||||
|
|
||||||
// {tap}: Add {C}.
|
// {tap}: Add {C}.
|
||||||
this.addAbility(new ColorlessManaAbility());
|
this.addAbility(new ColorlessManaAbility());
|
||||||
|
|
||||||
// {2}{W}{B}, {tap}: Creatures you control gain deathtouch and lifelink until end of turn.
|
// {2}{W}{B}, {tap}: Creatures you control gain deathtouch and lifelink until end of turn.
|
||||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
|
Ability ability = new SimpleActivatedAbility(new GainAbilityControlledEffect(
|
||||||
new GainAbilityControlledEffect(DeathtouchAbility.getInstance(), Duration.EndOfTurn, new FilterControlledCreaturePermanent("Creatures"), false),
|
DeathtouchAbility.getInstance(), Duration.EndOfTurn,
|
||||||
new ManaCostsImpl("{2}{W}{B}"));
|
StaticFilters.FILTER_PERMANENT_CREATURE
|
||||||
ability.addEffect(new GainAbilityControlledEffect(LifelinkAbility.getInstance(), Duration.EndOfTurn, new FilterControlledCreaturePermanent("Creatures"), false));
|
).setText("creatures you control gain deathtouch"), new ManaCostsImpl<>("{2}{W}{B}"));
|
||||||
|
ability.addEffect(new GainAbilityControlledEffect(
|
||||||
|
LifelinkAbility.getInstance(), Duration.EndOfTurn,
|
||||||
|
StaticFilters.FILTER_PERMANENT_CREATURE
|
||||||
|
).setText("and lifelink until end of turn"));
|
||||||
ability.addCost(new TapSourceCost());
|
ability.addCost(new TapSourceCost());
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
|
@ -58,7 +58,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 = "GRN"; // check all abilities and output cards with wrong abilities texts;
|
private static final String FULL_ABILITIES_CHECK_SET_CODE = "SLD"; // check all abilities and output cards with wrong abilities texts;
|
||||||
private static final boolean AUTO_FIX_SAMPLE_DECKS = false; // debug only: auto-fix sample decks by test_checkSampleDecks test run
|
private static final boolean AUTO_FIX_SAMPLE_DECKS = false; // debug only: auto-fix sample decks by test_checkSampleDecks test run
|
||||||
private static final boolean ONLY_TEXT = false; // use when checking text locally, suppresses unnecessary checks and output messages
|
private static final boolean ONLY_TEXT = false; // use when checking text locally, suppresses unnecessary checks and output messages
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue