mirror of
https://github.com/correl/mage.git
synced 2024-12-25 11:11:16 +00:00
[AFC] various text fixes
This commit is contained in:
parent
01fefff1b9
commit
13949d8e3e
33 changed files with 135 additions and 116 deletions
|
@ -1,8 +1,6 @@
|
|||
|
||||
|
||||
package mage.cards.b;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.costs.mana.GenericManaCost;
|
||||
import mage.abilities.effects.common.continuous.GainAbilityAttachedEffect;
|
||||
|
@ -11,20 +9,30 @@ import mage.abilities.keyword.EquipAbility;
|
|||
import mage.abilities.keyword.LifelinkAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.*;
|
||||
import mage.constants.AttachmentType;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Outcome;
|
||||
import mage.constants.SubType;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author BetaSteward_at_googlemail.com
|
||||
*/
|
||||
public final class BasiliskCollar extends CardImpl {
|
||||
|
||||
public BasiliskCollar(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
|
||||
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{1}");
|
||||
this.subtype.add(SubType.EQUIPMENT);
|
||||
|
||||
Ability ability = new SimpleStaticAbility(new GainAbilityAttachedEffect(
|
||||
DeathtouchAbility.getInstance(), AttachmentType.EQUIPMENT
|
||||
));
|
||||
ability.addEffect(new GainAbilityAttachedEffect(
|
||||
LifelinkAbility.getInstance(), AttachmentType.EQUIPMENT
|
||||
).setText("and lifelink"));
|
||||
|
||||
this.addAbility(new EquipAbility(Outcome.AddAbility, new GenericManaCost(2)));
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(LifelinkAbility.getInstance(), AttachmentType.EQUIPMENT)));
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(DeathtouchAbility.getInstance(), AttachmentType.EQUIPMENT)));
|
||||
}
|
||||
|
||||
private BasiliskCollar(final BasiliskCollar card) {
|
||||
|
|
|
@ -31,7 +31,7 @@ public final class BeltOfGiantStrength extends CardImpl {
|
|||
|
||||
// Equip {10}. This ability costs {X} less to activate where X is the power of the creature it targets.
|
||||
EquipAbility ability = new EquipAbility(10);
|
||||
ability.setCostReduceText("This ability costs {X} less to activate where X is the power of the creature it targets.");
|
||||
ability.setCostReduceText("This ability costs {X} less to activate, where X is the power of the creature it targets.");
|
||||
ability.setCostAdjuster(BeltOfGiantStrengthAdjuster.instance);
|
||||
this.addAbility(ability);
|
||||
}
|
||||
|
|
|
@ -30,7 +30,7 @@ public final class BogardanHellkite extends CardImpl {
|
|||
|
||||
this.addAbility(FlashAbility.getInstance());
|
||||
this.addAbility(FlyingAbility.getInstance());
|
||||
Ability ability = new EntersBattlefieldTriggeredAbility(new DamageMultiEffect(5), false);
|
||||
Ability ability = new EntersBattlefieldTriggeredAbility(new DamageMultiEffect(5, "it"), false);
|
||||
ability.addTarget(new TargetAnyTargetAmount(5));
|
||||
this.addAbility(ability);
|
||||
}
|
||||
|
|
|
@ -81,7 +81,7 @@ class CataclysmicGearhulkEffect extends OneShotEffect {
|
|||
public CataclysmicGearhulkEffect() {
|
||||
super(Outcome.DestroyPermanent);
|
||||
staticText = "each player chooses an artifact, a creature, an enchantment, and a planeswalker " +
|
||||
"from among the nonland permanents they control then sacrifices the rest";
|
||||
"from among the nonland permanents they control, then sacrifices the rest";
|
||||
}
|
||||
|
||||
public CataclysmicGearhulkEffect(CataclysmicGearhulkEffect effect) {
|
||||
|
|
|
@ -60,13 +60,13 @@ public final class CattiBrieOfMithralHall extends CardImpl {
|
|||
// each Equipment attached to it.
|
||||
EquipmentAttachedCount amount = new EquipmentAttachedCount();
|
||||
this.addAbility(new AttacksTriggeredAbility(
|
||||
new AddCountersSourceEffect(CounterType.P1P1.createInstance(), amount, false)));
|
||||
new AddCountersSourceEffect(CounterType.P1P1.createInstance(), amount, false).setText("put a +1/+1 counter on it for each Equipment attached to it")));
|
||||
|
||||
// {1}, Remove all +1/+1 counters from Catti-brie: It deals X damage to target
|
||||
// attacking or blocking creature an opponent controls, where X is the number of
|
||||
// counters removed this way.
|
||||
Ability damageAbility = new SimpleActivatedAbility(Zone.BATTLEFIELD,
|
||||
new DamageTargetEffect(CattiBrieRemovedCounterValue.instance), new ManaCostsImpl("{1}"));
|
||||
new DamageTargetEffect(CattiBrieRemovedCounterValue.instance).setText("it deals X damage to target attacking or blocking creature an opponent controls, where X is the number of counters removed this way"), new ManaCostsImpl("{1}"));
|
||||
damageAbility.addTarget(new TargetCreaturePermanent(filter));
|
||||
damageAbility.addCost(new RemoveAllCountersSourceCost(CounterType.P1P1));
|
||||
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
|
||||
package mage.cards.c;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.ObjectColor;
|
||||
import mage.abilities.common.SimpleActivatedAbility;
|
||||
|
@ -13,18 +11,20 @@ import mage.abilities.keyword.ProtectionAbility;
|
|||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.Zone;
|
||||
import mage.constants.SubType;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Loki
|
||||
*/
|
||||
public final class ChameleonColossus extends CardImpl {
|
||||
|
||||
private static final SourcePermanentPowerCount xValue = new SourcePermanentPowerCount();
|
||||
|
||||
public ChameleonColossus(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.SHAPESHIFTER);
|
||||
|
||||
this.power = new MageInt(4);
|
||||
|
@ -37,8 +37,11 @@ public final class ChameleonColossus extends CardImpl {
|
|||
this.addAbility(ProtectionAbility.from(ObjectColor.BLACK));
|
||||
|
||||
// {2}{G}{G}: Chameleon Colossus gets +X/+X until end of turn, where X is its power.
|
||||
SourcePermanentPowerCount x = new SourcePermanentPowerCount();
|
||||
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(x, x, Duration.EndOfTurn, true), new ManaCostsImpl("{2}{G}{G}")));
|
||||
this.addAbility(new SimpleActivatedAbility(
|
||||
new BoostSourceEffect(xValue, xValue, Duration.EndOfTurn, true)
|
||||
.setText("{this} gets +X/+X until end of turn, where X is its power"),
|
||||
new ManaCostsImpl<>("{2}{G}{G}")
|
||||
));
|
||||
}
|
||||
|
||||
private ChameleonColossus(final ChameleonColossus card) {
|
||||
|
|
|
@ -28,8 +28,8 @@ import java.util.UUID;
|
|||
*/
|
||||
public final class CitadelSiege extends CardImpl {
|
||||
|
||||
private static final String ruleTrigger1 = "&bull Khans — At the beginning of combat on your turn, put two +1/+1 counters on target creature you control.";
|
||||
private static final String ruleTrigger2 = "&bull Dragons — At the beginning of combat on each opponent's turn, tap target creature that player controls.";
|
||||
private static final String ruleTrigger1 = "&bull Khans — At the beginning of combat on your turn, put two +1/+1 counters on target creature you control.";
|
||||
private static final String ruleTrigger2 = "&bull Dragons — At the beginning of combat on each opponent's turn, tap target creature that player controls.";
|
||||
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature controlled by the active player");
|
||||
|
||||
static {
|
||||
|
|
|
@ -30,7 +30,7 @@ public final class CuratorOfMysteries extends CardImpl {
|
|||
this.addAbility(FlyingAbility.getInstance());
|
||||
|
||||
// Whenever you cycle or discard another card, scry 1.
|
||||
this.addAbility(new CycleOrDiscardControllerTriggeredAbility(new ScryEffect(1)));
|
||||
this.addAbility(new CycleOrDiscardControllerTriggeredAbility(new ScryEffect(1)).setTriggerPhrase("Whenever you cycle or discard another card, "));
|
||||
|
||||
// Cycling {U}
|
||||
this.addAbility(new CyclingAbility(new ManaCostsImpl("{U}")));
|
||||
|
|
|
@ -56,7 +56,7 @@ class CurseOfVerbosityEffect extends OneShotEffect {
|
|||
|
||||
CurseOfVerbosityEffect() {
|
||||
super(Outcome.Benefit);
|
||||
this.staticText = "draw a card. Each opponent attacking that player does the same.";
|
||||
this.staticText = "you draw a card. Each opponent attacking that player does the same.";
|
||||
}
|
||||
|
||||
CurseOfVerbosityEffect(final CurseOfVerbosityEffect effect) {
|
||||
|
|
|
@ -64,7 +64,7 @@ class DanseMacabreEffect extends OneShotEffect {
|
|||
"<br>1-14 | Return a creature card put into a graveyard " +
|
||||
"this way to the battlefield under your control." +
|
||||
"<br>15+ | Return up to two creature cards put into " +
|
||||
"a graveyard this way to the battlefield under your control";
|
||||
"graveyards this way to the battlefield under your control";
|
||||
}
|
||||
|
||||
private DanseMacabreEffect(final DanseMacabreEffect effect) {
|
||||
|
|
|
@ -22,7 +22,7 @@ public final class Explore extends CardImpl {
|
|||
this.getSpellAbility().addEffect(new PlayAdditionalLandsControllerEffect(1, Duration.EndOfTurn));
|
||||
|
||||
// Draw a card.
|
||||
this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1));
|
||||
this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1).concatBy("<br>"));
|
||||
}
|
||||
|
||||
private Explore(final Explore card) {
|
||||
|
|
|
@ -100,7 +100,7 @@ class FeySteedTriggeredAbility extends TriggeredAbilityImpl {
|
|||
|
||||
@Override
|
||||
public String getRule() {
|
||||
return "Whenever a creature or planeswalker you control becomes the target of a spell or ability an opponent controls, you may draw a card";
|
||||
return "Whenever a creature or planeswalker you control becomes the target of a spell or ability an opponent controls, you may draw a card.";
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -36,8 +36,8 @@ public final class FrontierSiege extends CardImpl {
|
|||
filter.add(new AbilityPredicate(FlyingAbility.class));
|
||||
}
|
||||
|
||||
private static final String ruleTrigger1 = "&bull Khans — At the beginning of each of your main phases, add {G}{G}.";
|
||||
private static final String ruleTrigger2 = "&bull Dragons — Whenever a creature with flying enters the battlefield under your control, you may have it fight target creature you don't control.";
|
||||
private static final String ruleTrigger1 = "&bull Khans — At the beginning of each of your main phases, add {G}{G}.";
|
||||
private static final String ruleTrigger2 = "&bull Dragons — Whenever a creature with flying enters the battlefield under your control, you may have it fight target creature you don't control.";
|
||||
|
||||
public FrontierSiege(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{G}");
|
||||
|
|
|
@ -43,7 +43,7 @@ class GratuitousViolenceReplacementEffect extends ReplacementEffectImpl {
|
|||
|
||||
GratuitousViolenceReplacementEffect() {
|
||||
super(Duration.WhileOnBattlefield, Outcome.Damage);
|
||||
staticText = "If a creature you control would deal damage to a permanent or player, it deals double that permanent to that creature or player instead";
|
||||
staticText = "If a creature you control would deal damage to a permanent or player, it deals double that damage to that creature or player instead";
|
||||
}
|
||||
|
||||
GratuitousViolenceReplacementEffect(final GratuitousViolenceReplacementEffect effect) {
|
||||
|
|
|
@ -6,6 +6,8 @@ import mage.abilities.effects.common.DestroyTargetEffect;
|
|||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.target.TargetPermanent;
|
||||
import mage.target.common.TargetCreaturePermanent;
|
||||
|
||||
/**
|
||||
|
@ -20,7 +22,7 @@ public final class Hex extends CardImpl {
|
|||
|
||||
// Destroy six target creatures.
|
||||
this.getSpellAbility().addEffect(new DestroyTargetEffect());
|
||||
this.getSpellAbility().addTarget(new TargetCreaturePermanent(6));
|
||||
this.getSpellAbility().addTarget(new TargetPermanent(6, StaticFilters.FILTER_PERMANENT_CREATURES));
|
||||
}
|
||||
|
||||
private Hex(final Hex card) {
|
||||
|
|
|
@ -38,7 +38,7 @@ public final class ImmovableRod extends CardImpl {
|
|||
this.addAbility(new SkipUntapOptionalAbility());
|
||||
|
||||
// Whenever Immovable Rod becomes untapped, venture into the dungeon.
|
||||
this.addAbility(new InspiredAbility(new VentureIntoTheDungeonEffect()));
|
||||
this.addAbility(new InspiredAbility(new VentureIntoTheDungeonEffect(), false, false));
|
||||
|
||||
// {3}{W}, {T}: For as long as Immovable Rod remains tapped, another target permanent loses all abilities and can't attack or block.
|
||||
Ability ability = new SimpleActivatedAbility(new ImmovableRodAbilityEffect(), new ManaCostsImpl<>("{3}{W}"));
|
||||
|
|
|
@ -60,7 +60,7 @@ class IndomitableMightEffect extends AsThoughEffectImpl {
|
|||
IndomitableMightEffect() {
|
||||
super(AsThoughEffectType.DAMAGE_NOT_BLOCKED, Duration.WhileOnBattlefield, Outcome.Damage);
|
||||
this.staticText = "enchanted creature's controller may have it " +
|
||||
"assign combat damage as though it weren't blocked";
|
||||
"assign its combat damage as though it weren't blocked";
|
||||
}
|
||||
|
||||
private IndomitableMightEffect(IndomitableMightEffect effect) {
|
||||
|
|
|
@ -1,29 +1,27 @@
|
|||
package mage.cards.l;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.BeginningOfCombatTriggeredAbility;
|
||||
import mage.abilities.condition.common.CommanderInPlayCondition;
|
||||
import mage.abilities.decorator.ConditionalTriggeredAbility;
|
||||
import mage.abilities.effects.ContinuousEffect;
|
||||
import mage.abilities.effects.OneShotEffect;
|
||||
import mage.abilities.effects.common.CreateTokenEffect;
|
||||
import mage.abilities.effects.common.continuous.GainAbilityTargetEffect;
|
||||
import mage.constants.SubType;
|
||||
import mage.abilities.keyword.HasteAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.Outcome;
|
||||
import mage.constants.TargetController;
|
||||
import mage.constants.*;
|
||||
import mage.game.Game;
|
||||
import mage.game.permanent.token.ThopterColorlessToken;
|
||||
import mage.target.targetpointer.FixedTarget;
|
||||
import mage.game.permanent.token.Token;
|
||||
import mage.target.targetpointer.FixedTargets;
|
||||
|
||||
import java.util.Objects;
|
||||
import java.util.UUID;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class LoyalApprentice extends CardImpl {
|
||||
|
@ -42,13 +40,11 @@ public final class LoyalApprentice extends CardImpl {
|
|||
// Lieutenant — At the beginning of combat on your turn, if you control your commander, create a 1/1 colorless Thopter artifact creature token with flying. That token gains haste until end of turn.
|
||||
this.addAbility(new ConditionalTriggeredAbility(
|
||||
new BeginningOfCombatTriggeredAbility(
|
||||
new LoyalApprenticeEffect(),
|
||||
TargetController.YOU, false
|
||||
), CommanderInPlayCondition.instance,
|
||||
"<i>Lieutenant</i> — At the beginning of combat "
|
||||
+ "on your turn, create a 1/1 colorless Thopter "
|
||||
+ "artifact creature token with flying. "
|
||||
+ "That token gains haste until end of turn"
|
||||
new LoyalApprenticeEffect(), TargetController.YOU, false
|
||||
), CommanderInPlayCondition.instance, "<i>Lieutenant</i> — " +
|
||||
"At the beginning of combat on your turn, if you control your commander, " +
|
||||
"create a 1/1 colorless Thopter artifact creature token with flying. " +
|
||||
"That token gains haste until end of turn."
|
||||
));
|
||||
}
|
||||
|
||||
|
@ -81,15 +77,17 @@ class LoyalApprenticeEffect extends OneShotEffect {
|
|||
public boolean apply(Game game, Ability source) {
|
||||
CreateTokenEffect effect = new CreateTokenEffect(new ThopterColorlessToken());
|
||||
effect.apply(game, source);
|
||||
effect.getLastAddedTokenIds().stream().map((tokenId) -> {
|
||||
ContinuousEffect continuousEffect = new GainAbilityTargetEffect(
|
||||
HasteAbility.getInstance(), Duration.EndOfTurn
|
||||
);
|
||||
continuousEffect.setTargetPointer(new FixedTarget(tokenId, game));
|
||||
return continuousEffect;
|
||||
}).forEachOrdered((continuousEffect) -> {
|
||||
game.addEffect(continuousEffect, source);
|
||||
});
|
||||
Token token = new ThopterColorlessToken();
|
||||
token.putOntoBattlefield(1, game, source, source.getControllerId());
|
||||
game.addEffect(new GainAbilityTargetEffect(
|
||||
HasteAbility.getInstance(), Duration.EndOfTurn
|
||||
).setTargetPointer(new FixedTargets(
|
||||
token.getLastAddedTokenIds()
|
||||
.stream()
|
||||
.map(game::getPermanent)
|
||||
.filter(Objects::nonNull)
|
||||
.collect(Collectors.toList()), game
|
||||
)), source);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -47,7 +47,7 @@ public final class Nihiloor extends CardImpl {
|
|||
|
||||
// Whenever you attack with a creature an opponent owns, you gain 2 life and that player loses 2 life.
|
||||
Ability ability = new AttacksAllTriggeredAbility(
|
||||
new GainLifeEffect(1), false, filter,
|
||||
new GainLifeEffect(2), false, filter,
|
||||
SetTargetPointer.PERMANENT, false
|
||||
).setTriggerPhrase("Whenever you attack with a creature an opponent owns, ");
|
||||
ability.addEffect(new NihiloorLoseLifeEffect());
|
||||
|
@ -145,7 +145,7 @@ class NihiloorLoseLifeEffect extends OneShotEffect {
|
|||
|
||||
NihiloorLoseLifeEffect() {
|
||||
super(Outcome.Benefit);
|
||||
staticText = "you gain 2 life and that player loses 2 life";
|
||||
staticText = "and that player loses 2 life";
|
||||
}
|
||||
|
||||
private NihiloorLoseLifeEffect(final NihiloorLoseLifeEffect effect) {
|
||||
|
|
|
@ -35,8 +35,8 @@ import mage.target.targetpointer.FixedTarget;
|
|||
*/
|
||||
public final class OutpostSiege extends CardImpl {
|
||||
|
||||
private static final String ruleTrigger1 = "&bull Khans — At the beginning of your upkeep, exile the top card of your library. Until end of turn, you may play that card.";
|
||||
private static final String ruleTrigger2 = "&bull Dragons — Whenever a creature you control leaves the battlefield, {this} deals 1 damage to any target.";
|
||||
private static final String ruleTrigger1 = "&bull Khans — At the beginning of your upkeep, exile the top card of your library. Until end of turn, you may play that card.";
|
||||
private static final String ruleTrigger2 = "&bull Dragons — Whenever a creature you control leaves the battlefield, {this} deals 1 damage to any target.";
|
||||
|
||||
public OutpostSiege(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{R}");
|
||||
|
|
|
@ -24,8 +24,8 @@ import mage.target.common.TargetCardInYourGraveyard;
|
|||
*/
|
||||
public final class PalaceSiege extends CardImpl {
|
||||
|
||||
private static final String ruleTrigger1 = "&bull Khans — At the beginning of your upkeep, return target creature card from your graveyard to your hand.";
|
||||
private static final String ruleTrigger2 = "&bull Dragons — At the beginning of your upkeep, each opponent loses 2 life and you gain 2 life.";
|
||||
private static final String ruleTrigger1 = "&bull Khans — At the beginning of your upkeep, return target creature card from your graveyard to your hand.";
|
||||
private static final String ruleTrigger2 = "&bull Dragons — At the beginning of your upkeep, each opponent loses 2 life and you gain 2 life.";
|
||||
|
||||
public PalaceSiege(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{B}{B}");
|
||||
|
|
|
@ -24,7 +24,7 @@ import java.util.UUID;
|
|||
*/
|
||||
public final class PhantasmalImage extends CardImpl {
|
||||
|
||||
private static final String effectText = "a copy of any creature on the battlefield, except it's an Illusion in addition to its other types and it has \"When this creature becomes the target of a spell or ability, sacrifice it.\"";
|
||||
private static final String effectText = "as a copy of any creature on the battlefield, except it's an Illusion in addition to its other types and it has \"When this creature becomes the target of a spell or ability, sacrifice it.\"";
|
||||
|
||||
private static final CopyApplier phantasmalImageApplier = new CopyApplier() {
|
||||
@Override
|
||||
|
|
|
@ -22,11 +22,9 @@ import java.util.UUID;
|
|||
* @author Loki
|
||||
*/
|
||||
public final class PuresteelPaladin extends CardImpl {
|
||||
private static final FilterPermanent filter = new FilterControlledPermanent("Equipment");
|
||||
|
||||
static {
|
||||
filter.add(SubType.EQUIPMENT.getPredicate());
|
||||
}
|
||||
private static final FilterPermanent filter
|
||||
= new FilterControlledPermanent(SubType.EQUIPMENT, "an Equipment");
|
||||
|
||||
public PuresteelPaladin(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{W}{W}");
|
||||
|
@ -37,16 +35,17 @@ public final class PuresteelPaladin extends CardImpl {
|
|||
this.toughness = new MageInt(2);
|
||||
|
||||
// Whenever an Equipment enters the battlefield under your control, you may draw a card.
|
||||
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(Zone.BATTLEFIELD, new DrawCardSourceControllerEffect(1), filter, true));
|
||||
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(
|
||||
Zone.BATTLEFIELD, new DrawCardSourceControllerEffect(1), filter, true
|
||||
));
|
||||
|
||||
// <i>Metalcraft</i> — Equipment you control have equip {0} as long as you control three or more artifacts
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinuousEffect(
|
||||
new GainAbilityControlledEffect(new EquipAbility(Outcome.AddAbility, new GenericManaCost(0)), Duration.WhileOnBattlefield, filter),
|
||||
MetalcraftCondition.instance,
|
||||
"<i>Metalcraft</i> — Equipment you control have equip {0} as long as you control three or more artifacts"))
|
||||
.setAbilityWord(AbilityWord.METALCRAFT)
|
||||
.addHint(MetalcraftHint.instance)
|
||||
);
|
||||
this.addAbility(new SimpleStaticAbility(new ConditionalContinuousEffect(
|
||||
new GainAbilityControlledEffect(new EquipAbility(
|
||||
Outcome.AddAbility, new GenericManaCost(0)
|
||||
), Duration.WhileOnBattlefield, filter), MetalcraftCondition.instance,
|
||||
"equipment you control have equip {0} as long as you control three or more artifacts"
|
||||
)).setAbilityWord(AbilityWord.METALCRAFT).addHint(MetalcraftHint.instance));
|
||||
}
|
||||
|
||||
private PuresteelPaladin(final PuresteelPaladin card) {
|
||||
|
|
|
@ -27,7 +27,7 @@ public final class ReassemblingSkeleton extends CardImpl {
|
|||
this.toughness = new MageInt(1);
|
||||
|
||||
// {1}{B}: Return Reassembling Skeleton from your graveyard to the battlefield tapped.
|
||||
this.addAbility(new SimpleActivatedAbility(Zone.GRAVEYARD, new ReturnSourceFromGraveyardToBattlefieldEffect(true), new ManaCostsImpl("{1}{B}")));
|
||||
this.addAbility(new SimpleActivatedAbility(Zone.GRAVEYARD, new ReturnSourceFromGraveyardToBattlefieldEffect(true, false), new ManaCostsImpl("{1}{B}")));
|
||||
}
|
||||
|
||||
private ReassemblingSkeleton(final ReassemblingSkeleton card) {
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
|
||||
package mage.cards.s;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
|
||||
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
||||
|
@ -15,11 +13,11 @@ import mage.cards.CardSetInfo;
|
|||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.TargetController;
|
||||
import mage.constants.Zone;
|
||||
import mage.game.permanent.token.DragonToken2;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author LevelX2
|
||||
*/
|
||||
public final class SkylineDespot extends CardImpl {
|
||||
|
@ -37,10 +35,12 @@ public final class SkylineDespot extends CardImpl {
|
|||
this.addAbility(new EntersBattlefieldTriggeredAbility(new BecomesMonarchSourceEffect(), false));
|
||||
|
||||
// At the beginning of your upkeep, if you're the monarch, put a 5/5 red Dragon creature token with flying onto the battlefield.
|
||||
this.addAbility(new ConditionalInterveningIfTriggeredAbility(new BeginningOfUpkeepTriggeredAbility(Zone.BATTLEFIELD,
|
||||
new CreateTokenEffect(new DragonToken2()),
|
||||
TargetController.YOU, false), MonarchIsSourceControllerCondition.instance,
|
||||
"At the beginning of your upkeep, if you're the monarch, put a 5/5 red Dragon creature token with flying onto the battlefield."));
|
||||
this.addAbility(new ConditionalInterveningIfTriggeredAbility(
|
||||
new BeginningOfUpkeepTriggeredAbility(
|
||||
new CreateTokenEffect(new DragonToken2()), TargetController.YOU, false
|
||||
), MonarchIsSourceControllerCondition.instance, "At the beginning of your upkeep, " +
|
||||
"if you're the monarch, create a 5/5 red Dragon creature token with flying."
|
||||
));
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -40,7 +40,7 @@ public final class StorvaldFrostGiantJarl extends CardImpl {
|
|||
// Other creatures you control have ward {3}.
|
||||
this.addAbility(new SimpleStaticAbility(new GainAbilityControlledEffect(
|
||||
new WardAbility(new GenericManaCost(3)), Duration.WhileOnBattlefield,
|
||||
StaticFilters.FILTER_CONTROLLED_CREATURES, true
|
||||
StaticFilters.FILTER_PERMANENT_CREATURES, true
|
||||
)));
|
||||
|
||||
// Whenever Storvald, Frost Giant Jarl enters the battlefield or attacks, choose one or both —
|
||||
|
@ -54,6 +54,8 @@ public final class StorvaldFrostGiantJarl extends CardImpl {
|
|||
Mode mode = new Mode(new SetPowerToughnessTargetEffect(1, 1, Duration.EndOfTurn));
|
||||
mode.addTarget(new TargetCreaturePermanent());
|
||||
ability.addMode(mode);
|
||||
ability.getModes().setMinModes(1);
|
||||
ability.getModes().setMaxModes(2);
|
||||
this.addAbility(ability);
|
||||
}
|
||||
|
||||
|
|
|
@ -90,6 +90,6 @@ class ThunderbreakRegentTriggeredAbility extends TriggeredAbilityImpl {
|
|||
|
||||
@Override
|
||||
public String getRule() {
|
||||
return "Whenever a Dragon you control becomes the target of a spell or ability your opponent controls, {this} deals 3 damage to that player.";
|
||||
return "Whenever a Dragon you control becomes the target of a spell or ability an opponent controls, {this} deals 3 damage to that player.";
|
||||
}
|
||||
}
|
||||
|
|
|
@ -63,7 +63,7 @@ class UnderdarkRiftEffect extends OneShotEffect {
|
|||
|
||||
UnderdarkRiftEffect() {
|
||||
super(Outcome.Benefit);
|
||||
staticText = "roll a d10. Put a target artifact, creature, or planeswalker into its owner's library " +
|
||||
staticText = "roll a d10. Put target artifact, creature, or planeswalker into its owner's library " +
|
||||
"just beneath the top X cards of that library, where X is the result";
|
||||
}
|
||||
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
package mage.cards.w;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.AttacksOrBlocksEnchantedTriggeredAbility;
|
||||
import mage.abilities.common.DealsDamageToAPlayerAttachedTriggeredAbility;
|
||||
|
@ -13,19 +11,14 @@ import mage.abilities.keyword.DeathtouchAbility;
|
|||
import mage.abilities.keyword.EquipAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.AttachmentType;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.Outcome;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.SuperType;
|
||||
import mage.constants.Zone;
|
||||
import mage.constants.*;
|
||||
import mage.filter.common.FilterCreaturePermanent;
|
||||
import mage.game.Game;
|
||||
import mage.game.permanent.token.ZombieToken;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author zeffirojoe
|
||||
*/
|
||||
public final class WandOfOrcus extends CardImpl {
|
||||
|
@ -37,24 +30,30 @@ public final class WandOfOrcus extends CardImpl {
|
|||
}
|
||||
|
||||
public WandOfOrcus(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[] { CardType.ARTIFACT }, "{2}{B}");
|
||||
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}{B}");
|
||||
|
||||
this.addSuperType(SuperType.LEGENDARY);
|
||||
this.subtype.add(SubType.EQUIPMENT);
|
||||
|
||||
// Whenever equipped creature attacks or blocks, it and Zombies you control gain
|
||||
// deathtouch until end of turn.
|
||||
Ability deathTouchAbility = new AttacksOrBlocksEnchantedTriggeredAbility(Zone.BATTLEFIELD,
|
||||
new GainAbilityAttachedEffect(DeathtouchAbility.getInstance(), AttachmentType.EQUIPMENT,
|
||||
Duration.EndOfTurn));
|
||||
deathTouchAbility.addEffect(
|
||||
new GainAbilityControlledEffect(DeathtouchAbility.getInstance(), Duration.EndOfTurn, filter));
|
||||
Ability deathTouchAbility = new AttacksOrBlocksEnchantedTriggeredAbility(
|
||||
Zone.BATTLEFIELD,
|
||||
new GainAbilityAttachedEffect(
|
||||
DeathtouchAbility.getInstance(), AttachmentType.EQUIPMENT, Duration.EndOfTurn
|
||||
).setText("it")
|
||||
);
|
||||
deathTouchAbility.addEffect(new GainAbilityControlledEffect(
|
||||
DeathtouchAbility.getInstance(), Duration.EndOfTurn, filter
|
||||
).concatBy("and"));
|
||||
this.addAbility(deathTouchAbility);
|
||||
|
||||
// Whenever equipped creature deals combat damage to a player, create that many
|
||||
// 2/2 black Zombie creature tokens.
|
||||
this.addAbility(new DealsDamageToAPlayerAttachedTriggeredAbility(new WandOfOrcusZombieEffect(), "equipped",
|
||||
false, true));
|
||||
this.addAbility(new DealsDamageToAPlayerAttachedTriggeredAbility(
|
||||
new WandOfOrcusZombieEffect(), "equipped creature",
|
||||
false, true
|
||||
));
|
||||
|
||||
// Equip {3}
|
||||
this.addAbility(new EquipAbility(Outcome.AddAbility, new ManaCostsImpl<>("{3}")));
|
||||
|
|
|
@ -57,7 +57,7 @@ public class VerifyCardDataTest {
|
|||
|
||||
private static final Logger logger = Logger.getLogger(VerifyCardDataTest.class);
|
||||
|
||||
private static final String FULL_ABILITIES_CHECK_SET_CODE = "AFR"; // check all abilities and output cards with wrong abilities texts;
|
||||
private static final String FULL_ABILITIES_CHECK_SET_CODE = "AFC"; // 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 ONLY_TEXT = false; // use when checking text locally, suppresses unnecessary checks and output messages
|
||||
|
||||
|
|
|
@ -41,7 +41,7 @@ public class PutCardIntoGraveFromAnywhereAllTriggeredAbility extends TriggeredAb
|
|||
this.filter.add(targetController.getOwnerPredicate());
|
||||
StringBuilder sb = new StringBuilder("Whenever ");
|
||||
sb.append(filter.getMessage());
|
||||
sb.append(filter.getMessage().startsWith("one or more") ? " are" : "is");
|
||||
sb.append(filter.getMessage().startsWith("one or more") ? " are" : " is");
|
||||
sb.append(" put into ");
|
||||
switch (targetController) {
|
||||
case OPPONENT:
|
||||
|
|
|
@ -18,18 +18,30 @@ import mage.util.CardUtil;
|
|||
*/
|
||||
public class FabricateAbility extends EntersBattlefieldTriggeredAbility {
|
||||
|
||||
private final int value;
|
||||
|
||||
public FabricateAbility(int value) {
|
||||
super(new FabricateEffect(value), false, true);
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
public FabricateAbility(final FabricateAbility ability) {
|
||||
super(ability);
|
||||
this.value = ability.value;
|
||||
}
|
||||
|
||||
@Override
|
||||
public FabricateAbility copy() {
|
||||
return new FabricateAbility(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getRule() {
|
||||
return "Fabricate " + value + " <i>(When this creature enters the battlefield, put "
|
||||
+ CardUtil.numberToText(value, "a") + " +1/+1 counter" + (value > 1 ? "s" : "")
|
||||
+ " on it or create " + CardUtil.numberToText(value, "a")
|
||||
+ " 1/1 colorless Servo artifact creature token" + (value > 1 ? "s" : "") + ".)</i>";
|
||||
}
|
||||
}
|
||||
|
||||
class FabricateEffect extends OneShotEffect {
|
||||
|
@ -39,9 +51,6 @@ class FabricateEffect extends OneShotEffect {
|
|||
FabricateEffect(int value) {
|
||||
super(Outcome.Benefit);
|
||||
this.value = value;
|
||||
this.staticText = "Fabricate " + value
|
||||
+ " <i>(When this creature enters the battlefield, put " + CardUtil.numberToText(value, "a") + " +1/+1 counter" + (value > 1 ? "s" : "")
|
||||
+ " on it or create " + CardUtil.numberToText(value, "a") + " 1/1 colorless Servo artifact creature token" + (value > 1 ? "s" : "") + ".)</i>";
|
||||
}
|
||||
|
||||
FabricateEffect(final FabricateEffect effect) {
|
||||
|
@ -68,8 +77,7 @@ class FabricateEffect extends OneShotEffect {
|
|||
source,
|
||||
game)) {
|
||||
((Card) sourceObject).addCounters(CounterType.P1P1.createInstance(value), source.getControllerId(), source, game);
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
new ServoToken().putOntoBattlefield(value, game, source, controller.getId());
|
||||
}
|
||||
return true;
|
||||
|
|
|
@ -13,7 +13,7 @@ public enum PhaseStep {
|
|||
DECLARE_BLOCKERS("Declare Blockers", 6, "declare blockers step", "DB"),
|
||||
FIRST_COMBAT_DAMAGE("First Combat Damage", 7, "first combat damage", "FCD"),
|
||||
COMBAT_DAMAGE("Combat Damage", 8, "combat damage step", "CD"),
|
||||
END_COMBAT("End Combat", 9, "end combat step", "EC"),
|
||||
END_COMBAT("End Combat", 9, "end of combat step", "EC"),
|
||||
POSTCOMBAT_MAIN("Postcombat Main", 10, "postcombat main step", "M2"),
|
||||
END_TURN("End Turn", 11, "end turn step", "ET"),
|
||||
CLEANUP("Cleanup", 12, "cleanup step", "CL");
|
||||
|
|
Loading…
Reference in a new issue