mirror of
https://github.com/correl/mage.git
synced 2024-11-15 03:00: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;
|
package mage.cards.b;
|
||||||
|
|
||||||
import java.util.UUID;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.SimpleStaticAbility;
|
import mage.abilities.common.SimpleStaticAbility;
|
||||||
import mage.abilities.costs.mana.GenericManaCost;
|
import mage.abilities.costs.mana.GenericManaCost;
|
||||||
import mage.abilities.effects.common.continuous.GainAbilityAttachedEffect;
|
import mage.abilities.effects.common.continuous.GainAbilityAttachedEffect;
|
||||||
|
@ -11,20 +9,30 @@ import mage.abilities.keyword.EquipAbility;
|
||||||
import mage.abilities.keyword.LifelinkAbility;
|
import mage.abilities.keyword.LifelinkAbility;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
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
|
* @author BetaSteward_at_googlemail.com
|
||||||
*/
|
*/
|
||||||
public final class BasiliskCollar extends CardImpl {
|
public final class BasiliskCollar extends CardImpl {
|
||||||
|
|
||||||
public BasiliskCollar(UUID ownerId, CardSetInfo setInfo) {
|
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);
|
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 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) {
|
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.
|
// Equip {10}. This ability costs {X} less to activate where X is the power of the creature it targets.
|
||||||
EquipAbility ability = new EquipAbility(10);
|
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);
|
ability.setCostAdjuster(BeltOfGiantStrengthAdjuster.instance);
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,7 +30,7 @@ public final class BogardanHellkite extends CardImpl {
|
||||||
|
|
||||||
this.addAbility(FlashAbility.getInstance());
|
this.addAbility(FlashAbility.getInstance());
|
||||||
this.addAbility(FlyingAbility.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));
|
ability.addTarget(new TargetAnyTargetAmount(5));
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
|
@ -81,7 +81,7 @@ class CataclysmicGearhulkEffect extends OneShotEffect {
|
||||||
public CataclysmicGearhulkEffect() {
|
public CataclysmicGearhulkEffect() {
|
||||||
super(Outcome.DestroyPermanent);
|
super(Outcome.DestroyPermanent);
|
||||||
staticText = "each player chooses an artifact, a creature, an enchantment, and a planeswalker " +
|
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) {
|
public CataclysmicGearhulkEffect(CataclysmicGearhulkEffect effect) {
|
||||||
|
|
|
@ -60,13 +60,13 @@ public final class CattiBrieOfMithralHall extends CardImpl {
|
||||||
// each Equipment attached to it.
|
// each Equipment attached to it.
|
||||||
EquipmentAttachedCount amount = new EquipmentAttachedCount();
|
EquipmentAttachedCount amount = new EquipmentAttachedCount();
|
||||||
this.addAbility(new AttacksTriggeredAbility(
|
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
|
// {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
|
// attacking or blocking creature an opponent controls, where X is the number of
|
||||||
// counters removed this way.
|
// counters removed this way.
|
||||||
Ability damageAbility = new SimpleActivatedAbility(Zone.BATTLEFIELD,
|
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.addTarget(new TargetCreaturePermanent(filter));
|
||||||
damageAbility.addCost(new RemoveAllCountersSourceCost(CounterType.P1P1));
|
damageAbility.addCost(new RemoveAllCountersSourceCost(CounterType.P1P1));
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,5 @@
|
||||||
|
|
||||||
package mage.cards.c;
|
package mage.cards.c;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.ObjectColor;
|
import mage.ObjectColor;
|
||||||
import mage.abilities.common.SimpleActivatedAbility;
|
import mage.abilities.common.SimpleActivatedAbility;
|
||||||
|
@ -13,18 +11,20 @@ import mage.abilities.keyword.ProtectionAbility;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.SubType;
|
|
||||||
import mage.constants.Duration;
|
import mage.constants.Duration;
|
||||||
import mage.constants.Zone;
|
import mage.constants.SubType;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author Loki
|
* @author Loki
|
||||||
*/
|
*/
|
||||||
public final class ChameleonColossus extends CardImpl {
|
public final class ChameleonColossus extends CardImpl {
|
||||||
|
|
||||||
|
private static final SourcePermanentPowerCount xValue = new SourcePermanentPowerCount();
|
||||||
|
|
||||||
public ChameleonColossus(UUID ownerId, CardSetInfo setInfo) {
|
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.subtype.add(SubType.SHAPESHIFTER);
|
||||||
|
|
||||||
this.power = new MageInt(4);
|
this.power = new MageInt(4);
|
||||||
|
@ -37,8 +37,11 @@ public final class ChameleonColossus extends CardImpl {
|
||||||
this.addAbility(ProtectionAbility.from(ObjectColor.BLACK));
|
this.addAbility(ProtectionAbility.from(ObjectColor.BLACK));
|
||||||
|
|
||||||
// {2}{G}{G}: Chameleon Colossus gets +X/+X until end of turn, where X is its power.
|
// {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(
|
||||||
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(x, x, Duration.EndOfTurn, true), new ManaCostsImpl("{2}{G}{G}")));
|
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) {
|
private ChameleonColossus(final ChameleonColossus card) {
|
||||||
|
|
|
@ -28,8 +28,8 @@ import java.util.UUID;
|
||||||
*/
|
*/
|
||||||
public final class CitadelSiege extends CardImpl {
|
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 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 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");
|
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature controlled by the active player");
|
||||||
|
|
||||||
static {
|
static {
|
||||||
|
|
|
@ -30,7 +30,7 @@ public final class CuratorOfMysteries extends CardImpl {
|
||||||
this.addAbility(FlyingAbility.getInstance());
|
this.addAbility(FlyingAbility.getInstance());
|
||||||
|
|
||||||
// Whenever you cycle or discard another card, scry 1.
|
// 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}
|
// Cycling {U}
|
||||||
this.addAbility(new CyclingAbility(new ManaCostsImpl("{U}")));
|
this.addAbility(new CyclingAbility(new ManaCostsImpl("{U}")));
|
||||||
|
|
|
@ -56,7 +56,7 @@ class CurseOfVerbosityEffect extends OneShotEffect {
|
||||||
|
|
||||||
CurseOfVerbosityEffect() {
|
CurseOfVerbosityEffect() {
|
||||||
super(Outcome.Benefit);
|
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) {
|
CurseOfVerbosityEffect(final CurseOfVerbosityEffect effect) {
|
||||||
|
|
|
@ -64,7 +64,7 @@ class DanseMacabreEffect extends OneShotEffect {
|
||||||
"<br>1-14 | Return a creature card put into a graveyard " +
|
"<br>1-14 | Return a creature card put into a graveyard " +
|
||||||
"this way to the battlefield under your control." +
|
"this way to the battlefield under your control." +
|
||||||
"<br>15+ | Return up to two creature cards put into " +
|
"<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) {
|
private DanseMacabreEffect(final DanseMacabreEffect effect) {
|
||||||
|
|
|
@ -22,7 +22,7 @@ public final class Explore extends CardImpl {
|
||||||
this.getSpellAbility().addEffect(new PlayAdditionalLandsControllerEffect(1, Duration.EndOfTurn));
|
this.getSpellAbility().addEffect(new PlayAdditionalLandsControllerEffect(1, Duration.EndOfTurn));
|
||||||
|
|
||||||
// Draw a card.
|
// Draw a card.
|
||||||
this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1));
|
this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1).concatBy("<br>"));
|
||||||
}
|
}
|
||||||
|
|
||||||
private Explore(final Explore card) {
|
private Explore(final Explore card) {
|
||||||
|
|
|
@ -100,7 +100,7 @@ class FeySteedTriggeredAbility extends TriggeredAbilityImpl {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getRule() {
|
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
|
@Override
|
||||||
|
|
|
@ -36,8 +36,8 @@ public final class FrontierSiege extends CardImpl {
|
||||||
filter.add(new AbilityPredicate(FlyingAbility.class));
|
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 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 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) {
|
public FrontierSiege(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{G}");
|
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{G}");
|
||||||
|
|
|
@ -43,7 +43,7 @@ class GratuitousViolenceReplacementEffect extends ReplacementEffectImpl {
|
||||||
|
|
||||||
GratuitousViolenceReplacementEffect() {
|
GratuitousViolenceReplacementEffect() {
|
||||||
super(Duration.WhileOnBattlefield, Outcome.Damage);
|
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) {
|
GratuitousViolenceReplacementEffect(final GratuitousViolenceReplacementEffect effect) {
|
||||||
|
|
|
@ -6,6 +6,8 @@ import mage.abilities.effects.common.DestroyTargetEffect;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
|
import mage.filter.StaticFilters;
|
||||||
|
import mage.target.TargetPermanent;
|
||||||
import mage.target.common.TargetCreaturePermanent;
|
import mage.target.common.TargetCreaturePermanent;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -20,7 +22,7 @@ public final class Hex extends CardImpl {
|
||||||
|
|
||||||
// Destroy six target creatures.
|
// Destroy six target creatures.
|
||||||
this.getSpellAbility().addEffect(new DestroyTargetEffect());
|
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) {
|
private Hex(final Hex card) {
|
||||||
|
|
|
@ -38,7 +38,7 @@ public final class ImmovableRod extends CardImpl {
|
||||||
this.addAbility(new SkipUntapOptionalAbility());
|
this.addAbility(new SkipUntapOptionalAbility());
|
||||||
|
|
||||||
// Whenever Immovable Rod becomes untapped, venture into the dungeon.
|
// 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.
|
// {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}"));
|
Ability ability = new SimpleActivatedAbility(new ImmovableRodAbilityEffect(), new ManaCostsImpl<>("{3}{W}"));
|
||||||
|
|
|
@ -60,7 +60,7 @@ class IndomitableMightEffect extends AsThoughEffectImpl {
|
||||||
IndomitableMightEffect() {
|
IndomitableMightEffect() {
|
||||||
super(AsThoughEffectType.DAMAGE_NOT_BLOCKED, Duration.WhileOnBattlefield, Outcome.Damage);
|
super(AsThoughEffectType.DAMAGE_NOT_BLOCKED, Duration.WhileOnBattlefield, Outcome.Damage);
|
||||||
this.staticText = "enchanted creature's controller may have it " +
|
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) {
|
private IndomitableMightEffect(IndomitableMightEffect effect) {
|
||||||
|
|
|
@ -1,29 +1,27 @@
|
||||||
package mage.cards.l;
|
package mage.cards.l;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.BeginningOfCombatTriggeredAbility;
|
import mage.abilities.common.BeginningOfCombatTriggeredAbility;
|
||||||
import mage.abilities.condition.common.CommanderInPlayCondition;
|
import mage.abilities.condition.common.CommanderInPlayCondition;
|
||||||
import mage.abilities.decorator.ConditionalTriggeredAbility;
|
import mage.abilities.decorator.ConditionalTriggeredAbility;
|
||||||
import mage.abilities.effects.ContinuousEffect;
|
|
||||||
import mage.abilities.effects.OneShotEffect;
|
import mage.abilities.effects.OneShotEffect;
|
||||||
import mage.abilities.effects.common.CreateTokenEffect;
|
import mage.abilities.effects.common.CreateTokenEffect;
|
||||||
import mage.abilities.effects.common.continuous.GainAbilityTargetEffect;
|
import mage.abilities.effects.common.continuous.GainAbilityTargetEffect;
|
||||||
import mage.constants.SubType;
|
|
||||||
import mage.abilities.keyword.HasteAbility;
|
import mage.abilities.keyword.HasteAbility;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.*;
|
||||||
import mage.constants.Duration;
|
|
||||||
import mage.constants.Outcome;
|
|
||||||
import mage.constants.TargetController;
|
|
||||||
import mage.game.Game;
|
import mage.game.Game;
|
||||||
import mage.game.permanent.token.ThopterColorlessToken;
|
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
|
* @author TheElk801
|
||||||
*/
|
*/
|
||||||
public final class LoyalApprentice extends CardImpl {
|
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.
|
// 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(
|
this.addAbility(new ConditionalTriggeredAbility(
|
||||||
new BeginningOfCombatTriggeredAbility(
|
new BeginningOfCombatTriggeredAbility(
|
||||||
new LoyalApprenticeEffect(),
|
new LoyalApprenticeEffect(), TargetController.YOU, false
|
||||||
TargetController.YOU, false
|
), CommanderInPlayCondition.instance, "<i>Lieutenant</i> — " +
|
||||||
), CommanderInPlayCondition.instance,
|
"At the beginning of combat on your turn, if you control your commander, " +
|
||||||
"<i>Lieutenant</i> — At the beginning of combat "
|
"create a 1/1 colorless Thopter artifact creature token with flying. " +
|
||||||
+ "on your turn, create a 1/1 colorless Thopter "
|
"That token gains haste until end of turn."
|
||||||
+ "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) {
|
public boolean apply(Game game, Ability source) {
|
||||||
CreateTokenEffect effect = new CreateTokenEffect(new ThopterColorlessToken());
|
CreateTokenEffect effect = new CreateTokenEffect(new ThopterColorlessToken());
|
||||||
effect.apply(game, source);
|
effect.apply(game, source);
|
||||||
effect.getLastAddedTokenIds().stream().map((tokenId) -> {
|
Token token = new ThopterColorlessToken();
|
||||||
ContinuousEffect continuousEffect = new GainAbilityTargetEffect(
|
token.putOntoBattlefield(1, game, source, source.getControllerId());
|
||||||
HasteAbility.getInstance(), Duration.EndOfTurn
|
game.addEffect(new GainAbilityTargetEffect(
|
||||||
);
|
HasteAbility.getInstance(), Duration.EndOfTurn
|
||||||
continuousEffect.setTargetPointer(new FixedTarget(tokenId, game));
|
).setTargetPointer(new FixedTargets(
|
||||||
return continuousEffect;
|
token.getLastAddedTokenIds()
|
||||||
}).forEachOrdered((continuousEffect) -> {
|
.stream()
|
||||||
game.addEffect(continuousEffect, source);
|
.map(game::getPermanent)
|
||||||
});
|
.filter(Objects::nonNull)
|
||||||
|
.collect(Collectors.toList()), game
|
||||||
|
)), source);
|
||||||
return true;
|
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.
|
// Whenever you attack with a creature an opponent owns, you gain 2 life and that player loses 2 life.
|
||||||
Ability ability = new AttacksAllTriggeredAbility(
|
Ability ability = new AttacksAllTriggeredAbility(
|
||||||
new GainLifeEffect(1), false, filter,
|
new GainLifeEffect(2), false, filter,
|
||||||
SetTargetPointer.PERMANENT, false
|
SetTargetPointer.PERMANENT, false
|
||||||
).setTriggerPhrase("Whenever you attack with a creature an opponent owns, ");
|
).setTriggerPhrase("Whenever you attack with a creature an opponent owns, ");
|
||||||
ability.addEffect(new NihiloorLoseLifeEffect());
|
ability.addEffect(new NihiloorLoseLifeEffect());
|
||||||
|
@ -145,7 +145,7 @@ class NihiloorLoseLifeEffect extends OneShotEffect {
|
||||||
|
|
||||||
NihiloorLoseLifeEffect() {
|
NihiloorLoseLifeEffect() {
|
||||||
super(Outcome.Benefit);
|
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) {
|
private NihiloorLoseLifeEffect(final NihiloorLoseLifeEffect effect) {
|
||||||
|
|
|
@ -35,8 +35,8 @@ import mage.target.targetpointer.FixedTarget;
|
||||||
*/
|
*/
|
||||||
public final class OutpostSiege extends CardImpl {
|
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 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 ruleTrigger2 = "&bull Dragons — Whenever a creature you control leaves the battlefield, {this} deals 1 damage to any target.";
|
||||||
|
|
||||||
public OutpostSiege(UUID ownerId, CardSetInfo setInfo) {
|
public OutpostSiege(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{R}");
|
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{R}");
|
||||||
|
|
|
@ -24,8 +24,8 @@ import mage.target.common.TargetCardInYourGraveyard;
|
||||||
*/
|
*/
|
||||||
public final class PalaceSiege extends CardImpl {
|
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 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 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) {
|
public PalaceSiege(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{B}{B}");
|
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{B}{B}");
|
||||||
|
|
|
@ -24,7 +24,7 @@ import java.util.UUID;
|
||||||
*/
|
*/
|
||||||
public final class PhantasmalImage extends CardImpl {
|
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() {
|
private static final CopyApplier phantasmalImageApplier = new CopyApplier() {
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -22,11 +22,9 @@ import java.util.UUID;
|
||||||
* @author Loki
|
* @author Loki
|
||||||
*/
|
*/
|
||||||
public final class PuresteelPaladin extends CardImpl {
|
public final class PuresteelPaladin extends CardImpl {
|
||||||
private static final FilterPermanent filter = new FilterControlledPermanent("Equipment");
|
|
||||||
|
|
||||||
static {
|
private static final FilterPermanent filter
|
||||||
filter.add(SubType.EQUIPMENT.getPredicate());
|
= new FilterControlledPermanent(SubType.EQUIPMENT, "an Equipment");
|
||||||
}
|
|
||||||
|
|
||||||
public PuresteelPaladin(UUID ownerId, CardSetInfo setInfo) {
|
public PuresteelPaladin(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{W}{W}");
|
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{W}{W}");
|
||||||
|
@ -37,16 +35,17 @@ public final class PuresteelPaladin extends CardImpl {
|
||||||
this.toughness = new MageInt(2);
|
this.toughness = new MageInt(2);
|
||||||
|
|
||||||
// Whenever an Equipment enters the battlefield under your control, you may draw a card.
|
// 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
|
// <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(
|
this.addAbility(new SimpleStaticAbility(new ConditionalContinuousEffect(
|
||||||
new GainAbilityControlledEffect(new EquipAbility(Outcome.AddAbility, new GenericManaCost(0)), Duration.WhileOnBattlefield, filter),
|
new GainAbilityControlledEffect(new EquipAbility(
|
||||||
MetalcraftCondition.instance,
|
Outcome.AddAbility, new GenericManaCost(0)
|
||||||
"<i>Metalcraft</i> — Equipment you control have equip {0} as long as you control three or more artifacts"))
|
), Duration.WhileOnBattlefield, filter), MetalcraftCondition.instance,
|
||||||
.setAbilityWord(AbilityWord.METALCRAFT)
|
"equipment you control have equip {0} as long as you control three or more artifacts"
|
||||||
.addHint(MetalcraftHint.instance)
|
)).setAbilityWord(AbilityWord.METALCRAFT).addHint(MetalcraftHint.instance));
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private PuresteelPaladin(final PuresteelPaladin card) {
|
private PuresteelPaladin(final PuresteelPaladin card) {
|
||||||
|
|
|
@ -27,7 +27,7 @@ public final class ReassemblingSkeleton extends CardImpl {
|
||||||
this.toughness = new MageInt(1);
|
this.toughness = new MageInt(1);
|
||||||
|
|
||||||
// {1}{B}: Return Reassembling Skeleton from your graveyard to the battlefield tapped.
|
// {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) {
|
private ReassemblingSkeleton(final ReassemblingSkeleton card) {
|
||||||
|
|
|
@ -1,7 +1,5 @@
|
||||||
|
|
||||||
package mage.cards.s;
|
package mage.cards.s;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
|
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
|
||||||
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
||||||
|
@ -15,11 +13,11 @@ import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
import mage.constants.TargetController;
|
import mage.constants.TargetController;
|
||||||
import mage.constants.Zone;
|
|
||||||
import mage.game.permanent.token.DragonToken2;
|
import mage.game.permanent.token.DragonToken2;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author LevelX2
|
* @author LevelX2
|
||||||
*/
|
*/
|
||||||
public final class SkylineDespot extends CardImpl {
|
public final class SkylineDespot extends CardImpl {
|
||||||
|
@ -37,10 +35,12 @@ public final class SkylineDespot extends CardImpl {
|
||||||
this.addAbility(new EntersBattlefieldTriggeredAbility(new BecomesMonarchSourceEffect(), false));
|
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.
|
// 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,
|
this.addAbility(new ConditionalInterveningIfTriggeredAbility(
|
||||||
new CreateTokenEffect(new DragonToken2()),
|
new BeginningOfUpkeepTriggeredAbility(
|
||||||
TargetController.YOU, false), MonarchIsSourceControllerCondition.instance,
|
new CreateTokenEffect(new DragonToken2()), TargetController.YOU, 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."));
|
), 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}.
|
// Other creatures you control have ward {3}.
|
||||||
this.addAbility(new SimpleStaticAbility(new GainAbilityControlledEffect(
|
this.addAbility(new SimpleStaticAbility(new GainAbilityControlledEffect(
|
||||||
new WardAbility(new GenericManaCost(3)), Duration.WhileOnBattlefield,
|
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 —
|
// 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 mode = new Mode(new SetPowerToughnessTargetEffect(1, 1, Duration.EndOfTurn));
|
||||||
mode.addTarget(new TargetCreaturePermanent());
|
mode.addTarget(new TargetCreaturePermanent());
|
||||||
ability.addMode(mode);
|
ability.addMode(mode);
|
||||||
|
ability.getModes().setMinModes(1);
|
||||||
|
ability.getModes().setMaxModes(2);
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -90,6 +90,6 @@ class ThunderbreakRegentTriggeredAbility extends TriggeredAbilityImpl {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getRule() {
|
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() {
|
UnderdarkRiftEffect() {
|
||||||
super(Outcome.Benefit);
|
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";
|
"just beneath the top X cards of that library, where X is the result";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,5 @@
|
||||||
package mage.cards.w;
|
package mage.cards.w;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
|
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.AttacksOrBlocksEnchantedTriggeredAbility;
|
import mage.abilities.common.AttacksOrBlocksEnchantedTriggeredAbility;
|
||||||
import mage.abilities.common.DealsDamageToAPlayerAttachedTriggeredAbility;
|
import mage.abilities.common.DealsDamageToAPlayerAttachedTriggeredAbility;
|
||||||
|
@ -13,19 +11,14 @@ import mage.abilities.keyword.DeathtouchAbility;
|
||||||
import mage.abilities.keyword.EquipAbility;
|
import mage.abilities.keyword.EquipAbility;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.AttachmentType;
|
import mage.constants.*;
|
||||||
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.filter.common.FilterCreaturePermanent;
|
import mage.filter.common.FilterCreaturePermanent;
|
||||||
import mage.game.Game;
|
import mage.game.Game;
|
||||||
import mage.game.permanent.token.ZombieToken;
|
import mage.game.permanent.token.ZombieToken;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author zeffirojoe
|
* @author zeffirojoe
|
||||||
*/
|
*/
|
||||||
public final class WandOfOrcus extends CardImpl {
|
public final class WandOfOrcus extends CardImpl {
|
||||||
|
@ -37,24 +30,30 @@ public final class WandOfOrcus extends CardImpl {
|
||||||
}
|
}
|
||||||
|
|
||||||
public WandOfOrcus(UUID ownerId, CardSetInfo setInfo) {
|
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.addSuperType(SuperType.LEGENDARY);
|
||||||
this.subtype.add(SubType.EQUIPMENT);
|
this.subtype.add(SubType.EQUIPMENT);
|
||||||
|
|
||||||
// Whenever equipped creature attacks or blocks, it and Zombies you control gain
|
// Whenever equipped creature attacks or blocks, it and Zombies you control gain
|
||||||
// deathtouch until end of turn.
|
// deathtouch until end of turn.
|
||||||
Ability deathTouchAbility = new AttacksOrBlocksEnchantedTriggeredAbility(Zone.BATTLEFIELD,
|
Ability deathTouchAbility = new AttacksOrBlocksEnchantedTriggeredAbility(
|
||||||
new GainAbilityAttachedEffect(DeathtouchAbility.getInstance(), AttachmentType.EQUIPMENT,
|
Zone.BATTLEFIELD,
|
||||||
Duration.EndOfTurn));
|
new GainAbilityAttachedEffect(
|
||||||
deathTouchAbility.addEffect(
|
DeathtouchAbility.getInstance(), AttachmentType.EQUIPMENT, Duration.EndOfTurn
|
||||||
new GainAbilityControlledEffect(DeathtouchAbility.getInstance(), Duration.EndOfTurn, filter));
|
).setText("it")
|
||||||
|
);
|
||||||
|
deathTouchAbility.addEffect(new GainAbilityControlledEffect(
|
||||||
|
DeathtouchAbility.getInstance(), Duration.EndOfTurn, filter
|
||||||
|
).concatBy("and"));
|
||||||
this.addAbility(deathTouchAbility);
|
this.addAbility(deathTouchAbility);
|
||||||
|
|
||||||
// Whenever equipped creature deals combat damage to a player, create that many
|
// Whenever equipped creature deals combat damage to a player, create that many
|
||||||
// 2/2 black Zombie creature tokens.
|
// 2/2 black Zombie creature tokens.
|
||||||
this.addAbility(new DealsDamageToAPlayerAttachedTriggeredAbility(new WandOfOrcusZombieEffect(), "equipped",
|
this.addAbility(new DealsDamageToAPlayerAttachedTriggeredAbility(
|
||||||
false, true));
|
new WandOfOrcusZombieEffect(), "equipped creature",
|
||||||
|
false, true
|
||||||
|
));
|
||||||
|
|
||||||
// Equip {3}
|
// Equip {3}
|
||||||
this.addAbility(new EquipAbility(Outcome.AddAbility, new ManaCostsImpl<>("{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 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 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
|
||||||
|
|
||||||
|
|
|
@ -41,7 +41,7 @@ public class PutCardIntoGraveFromAnywhereAllTriggeredAbility extends TriggeredAb
|
||||||
this.filter.add(targetController.getOwnerPredicate());
|
this.filter.add(targetController.getOwnerPredicate());
|
||||||
StringBuilder sb = new StringBuilder("Whenever ");
|
StringBuilder sb = new StringBuilder("Whenever ");
|
||||||
sb.append(filter.getMessage());
|
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 ");
|
sb.append(" put into ");
|
||||||
switch (targetController) {
|
switch (targetController) {
|
||||||
case OPPONENT:
|
case OPPONENT:
|
||||||
|
|
|
@ -18,18 +18,30 @@ import mage.util.CardUtil;
|
||||||
*/
|
*/
|
||||||
public class FabricateAbility extends EntersBattlefieldTriggeredAbility {
|
public class FabricateAbility extends EntersBattlefieldTriggeredAbility {
|
||||||
|
|
||||||
|
private final int value;
|
||||||
|
|
||||||
public FabricateAbility(int value) {
|
public FabricateAbility(int value) {
|
||||||
super(new FabricateEffect(value), false, true);
|
super(new FabricateEffect(value), false, true);
|
||||||
|
this.value = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
public FabricateAbility(final FabricateAbility ability) {
|
public FabricateAbility(final FabricateAbility ability) {
|
||||||
super(ability);
|
super(ability);
|
||||||
|
this.value = ability.value;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public FabricateAbility copy() {
|
public FabricateAbility copy() {
|
||||||
return new FabricateAbility(this);
|
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 {
|
class FabricateEffect extends OneShotEffect {
|
||||||
|
@ -39,9 +51,6 @@ class FabricateEffect extends OneShotEffect {
|
||||||
FabricateEffect(int value) {
|
FabricateEffect(int value) {
|
||||||
super(Outcome.Benefit);
|
super(Outcome.Benefit);
|
||||||
this.value = value;
|
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) {
|
FabricateEffect(final FabricateEffect effect) {
|
||||||
|
@ -68,8 +77,7 @@ class FabricateEffect extends OneShotEffect {
|
||||||
source,
|
source,
|
||||||
game)) {
|
game)) {
|
||||||
((Card) sourceObject).addCounters(CounterType.P1P1.createInstance(value), source.getControllerId(), source, game);
|
((Card) sourceObject).addCounters(CounterType.P1P1.createInstance(value), source.getControllerId(), source, game);
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
new ServoToken().putOntoBattlefield(value, game, source, controller.getId());
|
new ServoToken().putOntoBattlefield(value, game, source, controller.getId());
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -13,7 +13,7 @@ public enum PhaseStep {
|
||||||
DECLARE_BLOCKERS("Declare Blockers", 6, "declare blockers step", "DB"),
|
DECLARE_BLOCKERS("Declare Blockers", 6, "declare blockers step", "DB"),
|
||||||
FIRST_COMBAT_DAMAGE("First Combat Damage", 7, "first combat damage", "FCD"),
|
FIRST_COMBAT_DAMAGE("First Combat Damage", 7, "first combat damage", "FCD"),
|
||||||
COMBAT_DAMAGE("Combat Damage", 8, "combat damage step", "CD"),
|
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"),
|
POSTCOMBAT_MAIN("Postcombat Main", 10, "postcombat main step", "M2"),
|
||||||
END_TURN("End Turn", 11, "end turn step", "ET"),
|
END_TURN("End Turn", 11, "end turn step", "ET"),
|
||||||
CLEANUP("Cleanup", 12, "cleanup step", "CL");
|
CLEANUP("Cleanup", 12, "cleanup step", "CL");
|
||||||
|
|
Loading…
Reference in a new issue