[AFC] various text fixes

This commit is contained in:
Evan Kranzler 2021-08-22 17:56:22 -04:00
parent 01fefff1b9
commit 13949d8e3e
33 changed files with 135 additions and 116 deletions

View file

@ -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) {

View file

@ -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);
}

View file

@ -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);
}

View file

@ -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) {

View file

@ -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));

View file

@ -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) {

View file

@ -28,8 +28,8 @@ import java.util.UUID;
*/
public final class CitadelSiege extends CardImpl {
private static final String ruleTrigger1 = "&bull Khans &mdash; 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 &mdash; At the beginning of combat on each opponent's turn, tap target creature that player controls.";
private static final String ruleTrigger1 = "&bull Khans &mdash; 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 &mdash; 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 {

View file

@ -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}")));

View file

@ -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) {

View file

@ -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) {

View file

@ -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) {

View file

@ -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

View file

@ -36,8 +36,8 @@ public final class FrontierSiege extends CardImpl {
filter.add(new AbilityPredicate(FlyingAbility.class));
}
private static final String ruleTrigger1 = "&bull Khans &mdash; At the beginning of each of your main phases, add {G}{G}.";
private static final String ruleTrigger2 = "&bull Dragons &mdash; 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 &mdash; At the beginning of each of your main phases, add {G}{G}.";
private static final String ruleTrigger2 = "&bull Dragons &mdash; 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}");

View file

@ -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) {

View file

@ -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) {

View file

@ -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}"));

View file

@ -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) {

View file

@ -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> &mdash; 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> &mdash; " +
"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;
}
}

View file

@ -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) {

View file

@ -35,8 +35,8 @@ import mage.target.targetpointer.FixedTarget;
*/
public final class OutpostSiege extends CardImpl {
private static final String ruleTrigger1 = "&bull Khans &mdash; 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 &mdash; Whenever a creature you control leaves the battlefield, {this} deals 1 damage to any target.";
private static final String ruleTrigger1 = "&bull Khans &mdash; 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 &mdash; 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}");

View file

@ -24,8 +24,8 @@ import mage.target.common.TargetCardInYourGraveyard;
*/
public final class PalaceSiege extends CardImpl {
private static final String ruleTrigger1 = "&bull Khans &mdash; At the beginning of your upkeep, return target creature card from your graveyard to your hand.";
private static final String ruleTrigger2 = "&bull Dragons &mdash; At the beginning of your upkeep, each opponent loses 2 life and you gain 2 life.";
private static final String ruleTrigger1 = "&bull Khans &mdash; At the beginning of your upkeep, return target creature card from your graveyard to your hand.";
private static final String ruleTrigger2 = "&bull Dragons &mdash; 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}");

View file

@ -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

View file

@ -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> &mdash; 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> &mdash; 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) {

View file

@ -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) {

View file

@ -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."
));
}

View file

@ -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);
}

View file

@ -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.";
}
}

View file

@ -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";
}

View file

@ -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}")));

View file

@ -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

View file

@ -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:

View file

@ -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;

View file

@ -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");