forked from External/mage
[TLA] various text fixes
This commit is contained in:
parent
00c5daa5ea
commit
790361f59f
33 changed files with 68 additions and 47 deletions
|
|
@ -46,7 +46,7 @@ public final class AangAndLaOceansFury extends CardImpl {
|
||||||
this.addAbility(TrampleAbility.getInstance());
|
this.addAbility(TrampleAbility.getInstance());
|
||||||
|
|
||||||
// Whenever Aang and La attack, put a +1/+1 counter on each tapped creature you control.
|
// Whenever Aang and La attack, put a +1/+1 counter on each tapped creature you control.
|
||||||
this.addAbility(new AttacksTriggeredAbility(new AddCountersAllEffect(CounterType.P1P1.createInstance(), filter)));
|
this.addAbility(new AttacksTriggeredAbility(new AddCountersAllEffect(CounterType.P1P1.createInstance(), filter)).setTriggerPhrase("Whenever {this} attack, "));
|
||||||
}
|
}
|
||||||
|
|
||||||
private AangAndLaOceansFury(final AangAndLaOceansFury card) {
|
private AangAndLaOceansFury(final AangAndLaOceansFury card) {
|
||||||
|
|
|
||||||
|
|
@ -53,7 +53,8 @@ public final class AangAtTheCrossroads extends CardImpl {
|
||||||
this.addAbility(new TransformAbility());
|
this.addAbility(new TransformAbility());
|
||||||
this.addAbility(new LeavesBattlefieldAllTriggeredAbility(new CreateDelayedTriggeredAbilityEffect(
|
this.addAbility(new LeavesBattlefieldAllTriggeredAbility(new CreateDelayedTriggeredAbilityEffect(
|
||||||
new AtTheBeginOfNextUpkeepDelayedTriggeredAbility(new TransformSourceEffect())
|
new AtTheBeginOfNextUpkeepDelayedTriggeredAbility(new TransformSourceEffect())
|
||||||
).setText("transform {this} at the beginning of the next upkeep"), StaticFilters.FILTER_ANOTHER_CREATURE_YOU_CONTROL));
|
).setText("transform {this} at the beginning of the next upkeep"), StaticFilters.FILTER_ANOTHER_CREATURE_YOU_CONTROL)
|
||||||
|
.setTriggerPhrase("When another creature you control leaves the battlefield, "));
|
||||||
}
|
}
|
||||||
|
|
||||||
private AangAtTheCrossroads(final AangAtTheCrossroads card) {
|
private AangAtTheCrossroads(final AangAtTheCrossroads card) {
|
||||||
|
|
|
||||||
|
|
@ -12,8 +12,12 @@ import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
import mage.constants.SuperType;
|
import mage.constants.SuperType;
|
||||||
|
import mage.constants.TargetController;
|
||||||
|
import mage.filter.FilterPermanent;
|
||||||
|
import mage.filter.common.FilterNonlandPermanent;
|
||||||
|
import mage.filter.predicate.mageobject.AnotherPredicate;
|
||||||
|
import mage.target.TargetPermanent;
|
||||||
import mage.target.common.TargetControlledCreaturePermanent;
|
import mage.target.common.TargetControlledCreaturePermanent;
|
||||||
import mage.target.common.TargetNonlandPermanent;
|
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
|
|
@ -22,6 +26,13 @@ import java.util.UUID;
|
||||||
*/
|
*/
|
||||||
public final class AppaLoyalSkyBison extends CardImpl {
|
public final class AppaLoyalSkyBison extends CardImpl {
|
||||||
|
|
||||||
|
private static final FilterPermanent filter = new FilterNonlandPermanent("another target nonland permanent you control");
|
||||||
|
|
||||||
|
static {
|
||||||
|
filter.add(AnotherPredicate.instance);
|
||||||
|
filter.add(TargetController.YOU.getControllerPredicate());
|
||||||
|
}
|
||||||
|
|
||||||
public AppaLoyalSkyBison(UUID ownerId, CardSetInfo setInfo) {
|
public AppaLoyalSkyBison(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{W}{W}");
|
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{W}{W}");
|
||||||
|
|
||||||
|
|
@ -39,8 +50,8 @@ public final class AppaLoyalSkyBison extends CardImpl {
|
||||||
Ability ability = new EntersBattlefieldOrAttacksSourceTriggeredAbility(new GainAbilityTargetEffect(FlyingAbility.getInstance()));
|
Ability ability = new EntersBattlefieldOrAttacksSourceTriggeredAbility(new GainAbilityTargetEffect(FlyingAbility.getInstance()));
|
||||||
ability.addTarget(new TargetControlledCreaturePermanent());
|
ability.addTarget(new TargetControlledCreaturePermanent());
|
||||||
|
|
||||||
// * Airbend another target nonland permanent you control..
|
// * Airbend another target nonland permanent you control.
|
||||||
ability.addMode(new Mode(new AirbendTargetEffect()).addTarget(new TargetNonlandPermanent()));
|
ability.addMode(new Mode(new AirbendTargetEffect()).addTarget(new TargetPermanent(filter)));
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -47,7 +47,7 @@ public final class AzulaCunningUsurper extends CardImpl {
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
|
|
||||||
// During your turn, you may cast cards exiled with Azula and you may cast them as though they had flash. Mana of any type can be spent to cast those spells.
|
// During your turn, you may cast cards exiled with Azula and you may cast them as though they had flash. Mana of any type can be spent to cast those spells.
|
||||||
ability = new SimpleStaticAbility(new AzulaCunningUsurperFlashEffect());
|
ability = new SimpleStaticAbility(new AzulaCunningUsurperCastEffect());
|
||||||
ability.addEffect(new AzulaCunningUsurperFlashEffect());
|
ability.addEffect(new AzulaCunningUsurperFlashEffect());
|
||||||
ability.addEffect(new AzulaCunningUsurperManaEffect());
|
ability.addEffect(new AzulaCunningUsurperManaEffect());
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
|
|
|
||||||
|
|
@ -39,7 +39,7 @@ public final class Badgermole extends CardImpl {
|
||||||
this.addAbility(new SimpleStaticAbility(new GainAbilityAllEffect(
|
this.addAbility(new SimpleStaticAbility(new GainAbilityAllEffect(
|
||||||
TrampleAbility.getInstance(), Duration.WhileOnBattlefield,
|
TrampleAbility.getInstance(), Duration.WhileOnBattlefield,
|
||||||
StaticFilters.FILTER_CONTROLLED_CREATURES_P1P1
|
StaticFilters.FILTER_CONTROLLED_CREATURES_P1P1
|
||||||
)));
|
).setText("creatures you control with +1/+1 counters on them have trample")));
|
||||||
}
|
}
|
||||||
|
|
||||||
private Badgermole(final Badgermole card) {
|
private Badgermole(final Badgermole card) {
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,7 @@ import java.util.UUID;
|
||||||
public final class BoilingRockRioter extends CardImpl {
|
public final class BoilingRockRioter extends CardImpl {
|
||||||
|
|
||||||
private static final FilterControlledPermanent filter
|
private static final FilterControlledPermanent filter
|
||||||
= new FilterControlledPermanent(SubType.ALLY, "untaped Ally you control");
|
= new FilterControlledPermanent(SubType.ALLY, "untapped Ally you control");
|
||||||
|
|
||||||
static {
|
static {
|
||||||
filter.add(TappedPredicate.UNTAPPED);
|
filter.add(TappedPredicate.UNTAPPED);
|
||||||
|
|
|
||||||
|
|
@ -60,7 +60,7 @@ class BumiKingOfThreeTrialsTriggeredAbility extends EntersBattlefieldTriggeredAb
|
||||||
private static final DynamicValue xValue = new CardsInControllerGraveyardCount(new FilterCard(SubType.LESSON));
|
private static final DynamicValue xValue = new CardsInControllerGraveyardCount(new FilterCard(SubType.LESSON));
|
||||||
|
|
||||||
BumiKingOfThreeTrialsTriggeredAbility() {
|
BumiKingOfThreeTrialsTriggeredAbility() {
|
||||||
super(new AddCountersSourceEffect(CounterType.P1P1.createInstance()));
|
super(new AddCountersSourceEffect(CounterType.P1P1.createInstance(3)));
|
||||||
this.getModes().setChooseText("choose up to X, where X is the number of Lesson cards in your graveyard —");
|
this.getModes().setChooseText("choose up to X, where X is the number of Lesson cards in your graveyard —");
|
||||||
this.getModes().setMinModes(0);
|
this.getModes().setMinModes(0);
|
||||||
this.addMode(new Mode(new ScryTargetEffect(3)).addTarget(new TargetPlayer()));
|
this.addMode(new Mode(new ScryTargetEffect(3)).addTarget(new TargetPlayer()));
|
||||||
|
|
|
||||||
|
|
@ -67,7 +67,7 @@ class BumiUnleashedEffect extends OneShotEffect {
|
||||||
|
|
||||||
BumiUnleashedEffect() {
|
BumiUnleashedEffect() {
|
||||||
super(Outcome.Benefit);
|
super(Outcome.Benefit);
|
||||||
staticText = "After this main phase, there is an additional combat phase. Only land creatures can attack during that combat phase";
|
staticText = "After this phase, there is an additional combat phase. Only land creatures can attack during that combat phase";
|
||||||
}
|
}
|
||||||
|
|
||||||
private BumiUnleashedEffect(final BumiUnleashedEffect effect) {
|
private BumiUnleashedEffect(final BumiUnleashedEffect effect) {
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,7 @@ public final class CycleOfRenewal extends CardImpl {
|
||||||
// Sacrifice a land. Search your library for up to two basic land cards, put them onto the battlefield tapped, then shuffle.
|
// Sacrifice a land. Search your library for up to two basic land cards, put them onto the battlefield tapped, then shuffle.
|
||||||
this.getSpellAbility().addEffect(new SacrificeControllerEffect(StaticFilters.FILTER_LAND, 1, ""));
|
this.getSpellAbility().addEffect(new SacrificeControllerEffect(StaticFilters.FILTER_LAND, 1, ""));
|
||||||
this.getSpellAbility().addEffect(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(
|
this.getSpellAbility().addEffect(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(
|
||||||
0, 2, StaticFilters.FILTER_CARD_BASIC_LAND
|
0, 2, StaticFilters.FILTER_CARD_BASIC_LANDS
|
||||||
), true));
|
), true));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -46,7 +46,7 @@ public final class DaiLiAgents extends CardImpl {
|
||||||
this.toughness = new MageInt(4);
|
this.toughness = new MageInt(4);
|
||||||
|
|
||||||
// When this creature enters, earthbend 1, then earthbend 1.
|
// When this creature enters, earthbend 1, then earthbend 1.
|
||||||
Ability ability = new EntersBattlefieldTriggeredAbility(new EarthbendTargetEffect(1).setText("earhbend 1"));
|
Ability ability = new EntersBattlefieldTriggeredAbility(new EarthbendTargetEffect(1).setText("earthbend 1"));
|
||||||
ability.addEffect(new EarthbendTargetEffect(1)
|
ability.addEffect(new EarthbendTargetEffect(1)
|
||||||
.setTargetPointer(new SecondTargetPointer())
|
.setTargetPointer(new SecondTargetPointer())
|
||||||
.concatBy(", then"));
|
.concatBy(", then"));
|
||||||
|
|
@ -56,7 +56,7 @@ public final class DaiLiAgents extends CardImpl {
|
||||||
|
|
||||||
// Whenever this creature attacks, each opponent loses X life and you gain X life, where X is the number of creatures you control with +1/+1 counters on them.
|
// Whenever this creature attacks, each opponent loses X life and you gain X life, where X is the number of creatures you control with +1/+1 counters on them.
|
||||||
ability = new AttacksTriggeredAbility(new LoseLifeOpponentsEffect(xValue).setText("each opponent loses X life"));
|
ability = new AttacksTriggeredAbility(new LoseLifeOpponentsEffect(xValue).setText("each opponent loses X life"));
|
||||||
ability.addEffect(new GainLifeEffect(xValue).concatBy("and"));
|
ability.addEffect(new GainLifeEffect(xValue).setText("and you gain X life, where X is the number of creatures you control with +1/+1 counters on them"));
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,7 @@ import java.util.UUID;
|
||||||
*/
|
*/
|
||||||
public final class EarthKingdomGeneral extends CardImpl {
|
public final class EarthKingdomGeneral extends CardImpl {
|
||||||
|
|
||||||
private static final DynamicValue xValue = new EffectKeyValue("countersAdded", "that many");
|
private static final DynamicValue xValue = new EffectKeyValue("countersAdded", "that much");
|
||||||
|
|
||||||
public EarthKingdomGeneral(UUID ownerId, CardSetInfo setInfo) {
|
public EarthKingdomGeneral(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}");
|
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}");
|
||||||
|
|
|
||||||
|
|
@ -38,7 +38,7 @@ public final class FireNationCadets extends CardImpl {
|
||||||
|
|
||||||
// {2}: This creature gets +1/+0 until end of turn.
|
// {2}: This creature gets +1/+0 until end of turn.
|
||||||
this.addAbility(new SimpleActivatedAbility(
|
this.addAbility(new SimpleActivatedAbility(
|
||||||
new BoostSourceEffect(2, 0, Duration.EndOfTurn), new GenericManaCost(2)
|
new BoostSourceEffect(1, 0, Duration.EndOfTurn), new GenericManaCost(2)
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,7 @@ public final class FlexibleWaterbender extends CardImpl {
|
||||||
|
|
||||||
// Waterbend {3}: This creature has base power and toughness 5/2 until end of turn.
|
// Waterbend {3}: This creature has base power and toughness 5/2 until end of turn.
|
||||||
this.addAbility(new SimpleActivatedAbility(
|
this.addAbility(new SimpleActivatedAbility(
|
||||||
new SetBasePowerToughnessSourceEffect(3, 2, Duration.EndOfTurn), new WaterbendCost(3)
|
new SetBasePowerToughnessSourceEffect(5, 2, Duration.EndOfTurn), new WaterbendCost(3)
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -49,7 +49,7 @@ public final class IrohTeaMaster extends CardImpl {
|
||||||
this.addAbility(new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new FoodToken())));
|
this.addAbility(new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new FoodToken())));
|
||||||
|
|
||||||
// At the beginning of combat on your turn, you may have target opponent gain control of target permanent you control. When you do, create a 1/1 white Ally creature token. Put a +1/+1 counter on that token for each permanent you own that your opponents control.
|
// At the beginning of combat on your turn, you may have target opponent gain control of target permanent you control. When you do, create a 1/1 white Ally creature token. Put a +1/+1 counter on that token for each permanent you own that your opponents control.
|
||||||
Ability ability = new BeginningOfCombatTriggeredAbility(new IrohTeaMasterControlEffect());
|
Ability ability = new BeginningOfCombatTriggeredAbility(new IrohTeaMasterControlEffect(), true);
|
||||||
ability.addTarget(new TargetOpponent());
|
ability.addTarget(new TargetOpponent());
|
||||||
ability.addTarget(new TargetControlledPermanent());
|
ability.addTarget(new TargetControlledPermanent());
|
||||||
this.addAbility(ability.addHint(IrohTeaMasterTokenEffect.getHint()));
|
this.addAbility(ability.addHint(IrohTeaMasterTokenEffect.getHint()));
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,8 @@ public final class IrohsDemonstration extends CardImpl {
|
||||||
|
|
||||||
// Choose one --
|
// Choose one --
|
||||||
// * Iroh's Demonstration deals 1 damage to each creature your opponents control.
|
// * Iroh's Demonstration deals 1 damage to each creature your opponents control.
|
||||||
this.getSpellAbility().addEffect(new DamageAllEffect(1, StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE));
|
this.getSpellAbility().addEffect(new DamageAllEffect(1, StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE)
|
||||||
|
.setText("{this} deals 1 damage to each creature your opponents control"));
|
||||||
|
|
||||||
// * Iroh's Demonstration deals 4 damage to target creature.
|
// * Iroh's Demonstration deals 4 damage to target creature.
|
||||||
this.getSpellAbility().addMode(new Mode(new DamageTargetEffect(4)).addTarget(new TargetCreaturePermanent()));
|
this.getSpellAbility().addMode(new Mode(new DamageTargetEffect(4)).addTarget(new TargetCreaturePermanent()));
|
||||||
|
|
|
||||||
|
|
@ -35,7 +35,9 @@ public final class JetFreedomFighter extends CardImpl {
|
||||||
|
|
||||||
// When Jet enters, he deals damage equal to the number of creatures you control to target creature an opponent controls.
|
// When Jet enters, he deals damage equal to the number of creatures you control to target creature an opponent controls.
|
||||||
Ability ability = new EntersBattlefieldTriggeredAbility(
|
Ability ability = new EntersBattlefieldTriggeredAbility(
|
||||||
new DamageTargetEffect(CreaturesYouControlCount.PLURAL, "he")
|
new DamageTargetEffect(CreaturesYouControlCount.PLURAL)
|
||||||
|
.setText("he deals damage equal to the number of creatures " +
|
||||||
|
"you control to target creature an opponent controls")
|
||||||
);
|
);
|
||||||
ability.addTarget(new TargetOpponentsCreaturePermanent());
|
ability.addTarget(new TargetOpponentsCreaturePermanent());
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@ import mage.abilities.costs.common.WaterbendCost;
|
||||||
import mage.abilities.costs.mana.VariableManaCost;
|
import mage.abilities.costs.mana.VariableManaCost;
|
||||||
import mage.abilities.dynamicvalue.common.GetXValue;
|
import mage.abilities.dynamicvalue.common.GetXValue;
|
||||||
import mage.abilities.effects.common.CreateTokenEffect;
|
import mage.abilities.effects.common.CreateTokenEffect;
|
||||||
|
import mage.abilities.effects.common.InfoEffect;
|
||||||
import mage.abilities.effects.common.continuous.SetBasePowerToughnessAllEffect;
|
import mage.abilities.effects.common.continuous.SetBasePowerToughnessAllEffect;
|
||||||
import mage.abilities.keyword.VigilanceAbility;
|
import mage.abilities.keyword.VigilanceAbility;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
|
|
@ -49,6 +50,7 @@ public final class KataraWaterTribesHope extends CardImpl {
|
||||||
GetXValue.instance, GetXValue.instance, Duration.EndOfTurn,
|
GetXValue.instance, GetXValue.instance, Duration.EndOfTurn,
|
||||||
StaticFilters.FILTER_CONTROLLED_CREATURES
|
StaticFilters.FILTER_CONTROLLED_CREATURES
|
||||||
), new WaterbendCost("{X}"), MyTurnCondition.instance);
|
), new WaterbendCost("{X}"), MyTurnCondition.instance);
|
||||||
|
ability.addEffect(new InfoEffect("X can't be 0"));
|
||||||
CardUtil.castStream(ability.getCosts(), VariableManaCost.class).forEach(cost -> cost.setMinX(1));
|
CardUtil.castStream(ability.getCosts(), VariableManaCost.class).forEach(cost -> cost.setMinX(1));
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,7 @@ public final class OstrichHorse extends CardImpl {
|
||||||
// When this creature enters, mill three cards. You may put a land card from among them into your hand. If you don't, put a +1/+1 counter on this creature.
|
// When this creature enters, mill three cards. You may put a land card from among them into your hand. If you don't, put a +1/+1 counter on this creature.
|
||||||
this.addAbility(new EntersBattlefieldTriggeredAbility(new MillThenPutInHandEffect(
|
this.addAbility(new EntersBattlefieldTriggeredAbility(new MillThenPutInHandEffect(
|
||||||
3, StaticFilters.FILTER_CARD_LAND, new AddCountersSourceEffect(CounterType.P1P1.createInstance())
|
3, StaticFilters.FILTER_CARD_LAND, new AddCountersSourceEffect(CounterType.P1P1.createInstance())
|
||||||
)));
|
).withTextOptions("them")));
|
||||||
}
|
}
|
||||||
|
|
||||||
private OstrichHorse(final OstrichHorse card) {
|
private OstrichHorse(final OstrichHorse card) {
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,7 @@ public final class SozinsComet extends CardImpl {
|
||||||
// Each creature you control gains firebending 5 until end of turn.
|
// Each creature you control gains firebending 5 until end of turn.
|
||||||
this.getSpellAbility().addEffect(new GainAbilityControlledEffect(
|
this.getSpellAbility().addEffect(new GainAbilityControlledEffect(
|
||||||
new FirebendingAbility(5), Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURE
|
new FirebendingAbility(5), Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURE
|
||||||
));
|
).setText("each creature you control gains firebending 5 until end of turn"));
|
||||||
|
|
||||||
// Foretell {2}{R}
|
// Foretell {2}{R}
|
||||||
this.addAbility(new ForetellAbility(this, "{2}{R}"));
|
this.addAbility(new ForetellAbility(this, "{2}{R}"));
|
||||||
|
|
|
||||||
|
|
@ -35,7 +35,8 @@ public final class TeamAvatar extends CardImpl {
|
||||||
// {2}{W}, Discard this card: It deals damage equal to the number of creatures you control to target creature.
|
// {2}{W}, Discard this card: It deals damage equal to the number of creatures you control to target creature.
|
||||||
Ability ability = new SimpleActivatedAbility(
|
Ability ability = new SimpleActivatedAbility(
|
||||||
Zone.HAND,
|
Zone.HAND,
|
||||||
new DamageTargetEffect(CreaturesYouControlCount.PLURAL, "it"),
|
new DamageTargetEffect(CreaturesYouControlCount.PLURAL)
|
||||||
|
.setText("it deals damage equal to the number of creatures you control to target creature"),
|
||||||
new ManaCostsImpl<>("{2}{W}")
|
new ManaCostsImpl<>("{2}{W}")
|
||||||
);
|
);
|
||||||
ability.addCost(new DiscardSourceCost());
|
ability.addCost(new DiscardSourceCost());
|
||||||
|
|
|
||||||
|
|
@ -26,7 +26,7 @@ import java.util.UUID;
|
||||||
*/
|
*/
|
||||||
public final class TheBoulderReadyToRumble extends CardImpl {
|
public final class TheBoulderReadyToRumble extends CardImpl {
|
||||||
|
|
||||||
private static final FilterPermanent filter = new FilterControlledCreaturePermanent("creatures you control with power 4 or greater");
|
private static final FilterPermanent filter = new FilterControlledCreaturePermanent("the number of creatures you control with power 4 or greater");
|
||||||
|
|
||||||
static {
|
static {
|
||||||
filter.add(new PowerPredicate(ComparisonType.MORE_THAN, 3));
|
filter.add(new PowerPredicate(ComparisonType.MORE_THAN, 3));
|
||||||
|
|
|
||||||
|
|
@ -37,13 +37,15 @@ public final class TheLegendOfKyoshi extends CardImpl {
|
||||||
sagaAbility.addChapterEffect(
|
sagaAbility.addChapterEffect(
|
||||||
this, SagaChapter.CHAPTER_I,
|
this, SagaChapter.CHAPTER_I,
|
||||||
new DrawCardSourceControllerEffect(GreatestAmongPermanentsValue.POWER_CONTROLLED_CREATURES)
|
new DrawCardSourceControllerEffect(GreatestAmongPermanentsValue.POWER_CONTROLLED_CREATURES)
|
||||||
|
.setText("draw cards equal to the greatest power among creatures you control")
|
||||||
);
|
);
|
||||||
|
|
||||||
// II -- Earthbend X, where X is the number of cards in your hand. That land becomes an Island in addition to its other types.
|
// II -- Earthbend X, where X is the number of cards in your hand. That land becomes an Island in addition to its other types.
|
||||||
sagaAbility.addChapterEffect(
|
sagaAbility.addChapterEffect(
|
||||||
this, SagaChapter.CHAPTER_II,
|
this, SagaChapter.CHAPTER_II,
|
||||||
new Effects(
|
new Effects(
|
||||||
new EarthbendTargetEffect(CardsInControllerHandCount.ANY),
|
new EarthbendTargetEffect(CardsInControllerHandCount.ANY)
|
||||||
|
.setText("earthbend X, where X is the number of cards in your hand"),
|
||||||
new AddCardSubTypeTargetEffect(SubType.ISLAND, Duration.Custom)
|
new AddCardSubTypeTargetEffect(SubType.ISLAND, Duration.Custom)
|
||||||
.setText("That land becomes an Island in addition to its other types")
|
.setText("That land becomes an Island in addition to its other types")
|
||||||
), new TargetControlledLandPermanent()
|
), new TargetControlledLandPermanent()
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,9 @@
|
||||||
package mage.cards.t;
|
package mage.cards.t;
|
||||||
|
|
||||||
import mage.Mana;
|
|
||||||
import mage.abilities.common.SagaAbility;
|
import mage.abilities.common.SagaAbility;
|
||||||
import mage.abilities.effects.common.ExileSagaAndReturnTransformedEffect;
|
import mage.abilities.effects.common.ExileSagaAndReturnTransformedEffect;
|
||||||
import mage.abilities.effects.common.ExileTopXMayPlayUntilEffect;
|
import mage.abilities.effects.common.ExileTopXMayPlayUntilEffect;
|
||||||
import mage.abilities.effects.mana.BasicManaEffect;
|
import mage.abilities.effects.mana.AddManaOfAnyColorEffect;
|
||||||
import mage.abilities.keyword.TransformAbility;
|
import mage.abilities.keyword.TransformAbility;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
|
|
@ -36,7 +35,7 @@ public final class TheLegendOfRoku extends CardImpl {
|
||||||
);
|
);
|
||||||
|
|
||||||
// II -- Add one mana of any color.
|
// II -- Add one mana of any color.
|
||||||
sagaAbility.addChapterEffect(this, SagaChapter.CHAPTER_II, new BasicManaEffect(Mana.AnyMana(1)));
|
sagaAbility.addChapterEffect(this, SagaChapter.CHAPTER_II, new AddManaOfAnyColorEffect(1));
|
||||||
|
|
||||||
// III -- Exile this Saga, then return it to the battlefield transformed under your control.
|
// III -- Exile this Saga, then return it to the battlefield transformed under your control.
|
||||||
this.addAbility(new TransformAbility());
|
this.addAbility(new TransformAbility());
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,7 @@ import java.util.UUID;
|
||||||
*/
|
*/
|
||||||
public final class TigerDillo extends CardImpl {
|
public final class TigerDillo extends CardImpl {
|
||||||
|
|
||||||
private static final FilterPermanent filter = new FilterControlledCreaturePermanent();
|
private static final FilterPermanent filter = new FilterControlledCreaturePermanent("you control another creature with power 4 or greater");
|
||||||
|
|
||||||
static {
|
static {
|
||||||
filter.add(AnotherPredicate.instance);
|
filter.add(AnotherPredicate.instance);
|
||||||
|
|
@ -32,9 +32,7 @@ public final class TigerDillo extends CardImpl {
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final Condition condition = new PermanentsOnTheBattlefieldCondition(filter);
|
private static final Condition condition = new PermanentsOnTheBattlefieldCondition(filter);
|
||||||
private static final Hint hint = new ConditionHint(
|
private static final Hint hint = new ConditionHint(condition);
|
||||||
condition, "You control another creature with power 4 or greature"
|
|
||||||
);
|
|
||||||
|
|
||||||
public TigerDillo(UUID ownerId, CardSetInfo setInfo) {
|
public TigerDillo(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}");
|
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}");
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,7 @@ public final class VengefulVillagers extends CardImpl {
|
||||||
new AddCountersTargetEffect(CounterType.STUN.createInstance())
|
new AddCountersTargetEffect(CounterType.STUN.createInstance())
|
||||||
.setText("put a stun counter on the chosen creature"),
|
.setText("put a stun counter on the chosen creature"),
|
||||||
new SacrificeTargetCost(StaticFilters.FILTER_PERMANENT_ARTIFACT_OR_CREATURE)
|
new SacrificeTargetCost(StaticFilters.FILTER_PERMANENT_ARTIFACT_OR_CREATURE)
|
||||||
));
|
).concatBy(", then"));
|
||||||
ability.addTarget(new TargetOpponentsCreaturePermanent());
|
ability.addTarget(new TargetOpponentsCreaturePermanent());
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,10 @@
|
||||||
package mage.cards.w;
|
package mage.cards.w;
|
||||||
|
|
||||||
|
import mage.Mana;
|
||||||
import mage.abilities.common.EntersBattlefieldTappedAbility;
|
import mage.abilities.common.EntersBattlefieldTappedAbility;
|
||||||
import mage.abilities.costs.common.TapSourceCost;
|
import mage.abilities.costs.common.TapSourceCost;
|
||||||
import mage.abilities.dynamicvalue.common.GreatestSharedCreatureTypeCount;
|
import mage.abilities.dynamicvalue.common.GreatestSharedCreatureTypeCount;
|
||||||
import mage.abilities.mana.AnyColorManaAbility;
|
import mage.abilities.mana.DynamicManaAbility;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
|
|
@ -22,8 +23,10 @@ public final class WhiteLotusTile extends CardImpl {
|
||||||
this.addAbility(new EntersBattlefieldTappedAbility());
|
this.addAbility(new EntersBattlefieldTappedAbility());
|
||||||
|
|
||||||
// {T}: Add X mana of any one color, where X is the greatest number of creatures you control that have a creature type in common.
|
// {T}: Add X mana of any one color, where X is the greatest number of creatures you control that have a creature type in common.
|
||||||
this.addAbility(new AnyColorManaAbility(
|
this.addAbility(new DynamicManaAbility(
|
||||||
new TapSourceCost(), GreatestSharedCreatureTypeCount.instance, false
|
Mana.AnyMana(1), GreatestSharedCreatureTypeCount.instance, new TapSourceCost(),
|
||||||
|
"Add X mana of any one color, where X is the greatest number of " +
|
||||||
|
"creatures you control that have a creature type in common.", true
|
||||||
).addHint(GreatestSharedCreatureTypeCount.getHint()));
|
).addHint(GreatestSharedCreatureTypeCount.getHint()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -304,7 +304,8 @@ public class VerifyCardDataTest {
|
||||||
*/
|
*/
|
||||||
private static boolean evergreenCheck(String s) {
|
private static boolean evergreenCheck(String s) {
|
||||||
return evergreenKeywords.contains(s) || s.startsWith("protection from") || s.startsWith("hexproof from")
|
return evergreenKeywords.contains(s) || s.startsWith("protection from") || s.startsWith("hexproof from")
|
||||||
|| s.startsWith("ward ") || s.startsWith("rampage ") || s.startsWith("annihilator");
|
|| s.startsWith("ward ") || s.startsWith("rampage ") || s.startsWith("annihilator")
|
||||||
|
|| s.matches("^firebending \\d");
|
||||||
}
|
}
|
||||||
|
|
||||||
private static <T> boolean eqSet(Collection<T> a, Collection<T> b) {
|
private static <T> boolean eqSet(Collection<T> a, Collection<T> b) {
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ package mage.abilities.costs.common;
|
||||||
|
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.costs.Cost;
|
import mage.abilities.costs.Cost;
|
||||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
import mage.abilities.costs.CostImpl;
|
||||||
import mage.game.Game;
|
import mage.game.Game;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
@ -12,14 +12,14 @@ import java.util.UUID;
|
||||||
*
|
*
|
||||||
* @author TheElk801
|
* @author TheElk801
|
||||||
*/
|
*/
|
||||||
public class WaterbendCost extends ManaCostsImpl {
|
public class WaterbendCost extends CostImpl {
|
||||||
|
|
||||||
public WaterbendCost(int amount) {
|
public WaterbendCost(int amount) {
|
||||||
this("{" + amount + '}');
|
this("{" + amount + '}');
|
||||||
}
|
}
|
||||||
|
|
||||||
public WaterbendCost(String mana) {
|
public WaterbendCost(String mana) {
|
||||||
super("");
|
super();
|
||||||
this.text = "waterbend " + mana;
|
this.text = "waterbend " + mana;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -68,7 +68,7 @@ public class PutOnTopOrBottomLibraryTargetEffect extends OneShotEffect {
|
||||||
sb.append(targetText);
|
sb.append(targetText);
|
||||||
sb.append("'s owner");
|
sb.append("'s owner");
|
||||||
}
|
}
|
||||||
sb.append(" puts it");
|
sb.append(" puts it ");
|
||||||
if (position > 1) {
|
if (position > 1) {
|
||||||
sb.append("into their library ");
|
sb.append("into their library ");
|
||||||
sb.append(CardUtil.numberToOrdinalText(position));
|
sb.append(CardUtil.numberToOrdinalText(position));
|
||||||
|
|
|
||||||
|
|
@ -116,7 +116,7 @@ public class BoostControlledEffect extends ContinuousEffectImpl {
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
String message = filter.getMessage().toLowerCase(Locale.ENGLISH);
|
String message = filter.getMessage().toLowerCase(Locale.ENGLISH);
|
||||||
boolean each = message.startsWith("each");
|
boolean each = message.startsWith("each");
|
||||||
if (excludeSource && !each && !message.startsWith("all")) {
|
if (excludeSource && !each && !message.startsWith("all ")) {
|
||||||
sb.append("other ");
|
sb.append("other ");
|
||||||
}
|
}
|
||||||
sb.append(filter.getMessage());
|
sb.append(filter.getMessage());
|
||||||
|
|
|
||||||
|
|
@ -79,9 +79,10 @@ public class EarthbendTargetEffect extends OneShotEffect {
|
||||||
return staticText;
|
return staticText;
|
||||||
}
|
}
|
||||||
StringBuilder sb = new StringBuilder("earthbend ");
|
StringBuilder sb = new StringBuilder("earthbend ");
|
||||||
|
if (amount instanceof StaticValue) {
|
||||||
sb.append(amount);
|
sb.append(amount);
|
||||||
if (!(amount instanceof StaticValue)) {
|
} else {
|
||||||
sb.append(", where X is ");
|
sb.append("X, where X is ");
|
||||||
sb.append(amount.getMessage());
|
sb.append(amount.getMessage());
|
||||||
}
|
}
|
||||||
sb.append(". <i>(Target land you control becomes a 0/0 creature with haste that's still a land. Put ");
|
sb.append(". <i>(Target land you control becomes a 0/0 creature with haste that's still a land. Put ");
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,6 @@ import mage.abilities.effects.OneShotEffect;
|
||||||
import mage.constants.Outcome;
|
import mage.constants.Outcome;
|
||||||
import mage.game.Game;
|
import mage.game.Game;
|
||||||
import mage.players.Player;
|
import mage.players.Player;
|
||||||
import mage.util.CardUtil;
|
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
|
|
@ -57,7 +56,7 @@ public class ScryTargetEffect extends OneShotEffect {
|
||||||
}
|
}
|
||||||
StringBuilder sb = new StringBuilder(getTargetPointer().describeTargets(mode.getTargets(), "that player"));
|
StringBuilder sb = new StringBuilder(getTargetPointer().describeTargets(mode.getTargets(), "that player"));
|
||||||
sb.append(" scries ");
|
sb.append(" scries ");
|
||||||
sb.append(CardUtil.numberToText(amount.toString()));
|
sb.append(amount.toString());
|
||||||
return sb.toString();
|
return sb.toString();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -84,7 +84,7 @@ public final class CardUtil {
|
||||||
public static final SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss.SSS");
|
public static final SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss.SSS");
|
||||||
|
|
||||||
private static final List<String> costWords = Arrays.asList(
|
private static final List<String> costWords = Arrays.asList(
|
||||||
"put", "return", "exile", "discard", "mill", "sacrifice", "remove", "tap", "reveal", "pay", "have", "collect", "forage"
|
"put", "return", "exile", "discard", "mill", "sacrifice", "remove", "tap", "reveal", "pay", "have", "collect", "forage", "transform"
|
||||||
);
|
);
|
||||||
|
|
||||||
// search set code in commands like "set_code-card_name"
|
// search set code in commands like "set_code-card_name"
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue