fix (mostly text) for [MH3] and [M3C]

This commit is contained in:
Susucre 2024-05-28 18:56:04 +02:00
parent 3dc9f5d382
commit 60193e797d
20 changed files with 68 additions and 45 deletions

View file

@ -31,7 +31,7 @@ import java.util.UUID;
*/
public final class ArgentDais extends CardImpl {
private static final FilterNonlandPermanent filter = new FilterNonlandPermanent("another nonland permanent");
private static final FilterNonlandPermanent filter = new FilterNonlandPermanent("another target nonland permanent");
static {
filter.add(AnotherPredicate.instance);

View file

@ -54,7 +54,7 @@ public final class AzlaskTheSwellingScourge extends CardImpl {
// Scions and Spawns you control gain indestructible and annihilator 1 until end of turn.
Ability ability = new SimpleActivatedAbility(new BoostControlledEffect(
SourceControllerCountersCount.EXPERIENCE, SourceControllerCountersCount.EXPERIENCE, Duration.EndOfTurn
).setText("creatures you control get +X/+X until end of turn, where X is the number of the experience counters you have."), new ManaCostsImpl<>("{W}{U}{B}{R}{G}"));
).setText("creatures you control get +X/+X until end of turn, where X is the number of experience counters you have."), new ManaCostsImpl<>("{W}{U}{B}{R}{G}"));
ability.addEffect(new GainAbilityControlledEffect(IndestructibleAbility.getInstance(), Duration.EndOfTurn, filter2)
.setText("Scions and Spawns you control gain indestructible"));
ability.addEffect(new GainAbilityControlledEffect(new AnnihilatorAbility(1), Duration.EndOfTurn, filter2)

View file

@ -1,6 +1,5 @@
package mage.cards.b;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.AsEntersBattlefieldAbility;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
@ -8,22 +7,23 @@ import mage.abilities.costs.common.PayLifeCost;
import mage.abilities.effects.common.ExileGraveyardAllTargetPlayerEffect;
import mage.abilities.effects.common.TapSourceUnlessPaysEffect;
import mage.abilities.mana.BlackManaAbility;
import mage.constants.SubType;
import mage.target.TargetPlayer;
import mage.cards.CardSetInfo;
import mage.cards.ModalDoubleFacedCard;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.target.TargetPlayer;
import java.util.UUID;
/**
*
* @author grimreap124
*/
public final class BoggartTrawler extends ModalDoubleFacedCard {
public BoggartTrawler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo,
new CardType[] { CardType.CREATURE }, new SubType[] { SubType.GOBLIN }, "{2}{B}",
"Boggart Bog", new CardType[] { CardType.LAND }, new SubType[] {}, "");
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.GOBLIN}, "{2}{B}",
"Boggart Bog", new CardType[]{CardType.LAND}, new SubType[]{}, "");
this.getLeftHalfCard().setPT(new MageInt(3), new MageInt(1));
@ -36,7 +36,7 @@ public final class BoggartTrawler extends ModalDoubleFacedCard {
// As Boggart Bog enters the battlefield, you may pay 3 life. If you dont, it enters the battlefield tapped.
this.getRightHalfCard()
.addAbility(new AsEntersBattlefieldAbility(new TapSourceUnlessPaysEffect(new PayLifeCost(3)),
"you may pay 3 life. If you dont, it enters the battlefield tapped"));
"you may pay 3 life. If you don't, it enters the battlefield tapped"));
this.getRightHalfCard().addAbility(new BlackManaAbility());
}

View file

@ -38,7 +38,10 @@ public final class BreakerOfCreation extends CardImpl {
this.toughness = new MageInt(4);
// When you cast this spell, you gain 1 life for each colorless permanent you control.
this.addAbility(new CastSourceTriggeredAbility(new GainLifeEffect(xValue)));
this.addAbility(new CastSourceTriggeredAbility(
new GainLifeEffect(xValue)
.setText("you gain 1 life for each colorless permanent you control")
));
// Hexproof from each color
this.addAbility(HexproofFromEachColorAbility.getInstance());

View file

@ -41,7 +41,7 @@ public final class CaythFamedMechanist extends CardImpl {
// Other nontoken creatures you control have fabricate 1.
this.addAbility(new SimpleStaticAbility(new GainAbilityControlledEffect(
new FabricateAbility(1), Duration.WhileOnBattlefield,
StaticFilters.FILTER_CREATURES_NON_TOKEN
StaticFilters.FILTER_CREATURES_NON_TOKEN, true
)));
// {2}, {T}: Choose one --

View file

@ -27,7 +27,7 @@ public final class ConsumingCorruption extends CardImpl {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{B}{B}");
// Consuming Corruption deals X damage to target creature or planeswalker and you gain X life, where X is the number of Swamps you control.
this.getSpellAbility().addEffect(new DamageTargetEffect(xValue).setText("deals X damage to target creature or planeswalker"));
this.getSpellAbility().addEffect(new DamageTargetEffect(xValue).setText("{this} deals X damage to target creature or planeswalker"));
this.getSpellAbility().addEffect(new GainLifeEffect(xValue).setText("and you gain X life, where X is the number of Swamps you control"));
this.getSpellAbility().addTarget(new TargetCreatureOrPlaneswalker());
this.getSpellAbility().addHint(hint);

View file

@ -39,8 +39,8 @@ public final class FlareOfFortitude extends CardImpl {
// Until end of turn, your life total can't change, and permanents you control gain hexproof and indestructible.
this.getSpellAbility().addEffect(
new LifeTotalCantChangeControllerEffect(Duration.UntilYourNextTurn)
.setText("Until your next turn, your life total can't change")
new LifeTotalCantChangeControllerEffect(Duration.EndOfTurn)
.setText("Until end of turn, your life total can't change")
);
this.getSpellAbility().addEffect(
new GainAbilityAllEffect(

View file

@ -44,7 +44,7 @@ public final class FlareOfMalice extends CardImpl {
this.addAbility(new AlternativeCostSourceAbility(new SacrificeTargetCost(filter)).setRuleAtTheTop(true));
// Each opponent sacrifices a creature or planeswalker with the greatest converted mana value among creatures and planeswalkers they control.
this.getSpellAbility().addEffect(new SacrificeOpponentsEffect(filter));
this.getSpellAbility().addEffect(new SacrificeOpponentsEffect(filterCreatureOrPlaneswalker));
}
private FlareOfMalice(final FlareOfMalice card) {

View file

@ -1,33 +1,33 @@
package mage.cards.h;
import java.util.UUID;
import mage.MageInt;
import mage.constants.SubType;
import mage.abilities.Ability;
import mage.abilities.effects.common.CastSourceTriggeredAbility;
import mage.abilities.effects.common.UntapTargetEffect;
import mage.abilities.effects.common.continuous.GainAbilityTargetEffect;
import mage.abilities.effects.common.continuous.GainControlTargetEffect;
import mage.abilities.keyword.DevoidAbility;
import mage.abilities.keyword.TrampleAbility;
import mage.abilities.keyword.HasteAbility;
import mage.abilities.keyword.AnnihilatorAbility;
import mage.abilities.keyword.DevoidAbility;
import mage.abilities.keyword.HasteAbility;
import mage.abilities.keyword.TrampleAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.SubType;
import mage.target.common.TargetCreaturePermanent;
import mage.target.targetadjustment.EachOpponentPermanentTargetsAdjuster;
import mage.target.targetpointer.EachTargetPointer;
import java.util.UUID;
/**
*
* @author grimreap124
*/
public final class HideousTaskmaster extends CardImpl {
public HideousTaskmaster(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[] { CardType.CREATURE }, "{6}{R}");
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{6}{R}");
this.subtype.add(SubType.ELDRAZI);
this.power = new MageInt(7);
@ -48,10 +48,19 @@ public final class HideousTaskmaster extends CardImpl {
ability.addEffect(new GainAbilityTargetEffect(TrampleAbility.getInstance(), Duration.EndOfTurn)
.setTargetPointer(new EachTargetPointer()).setText("They gain trample"));
ability.addEffect(new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.EndOfTurn)
.setTargetPointer(new EachTargetPointer()).setText("haste"));
.setTargetPointer(new EachTargetPointer()).setText(", haste"));
ability.addEffect(new GainAbilityTargetEffect(new AnnihilatorAbility(1), Duration.EndOfTurn)
.setTargetPointer(new EachTargetPointer()).setText("and annihilator 1 until end of turn"));
.setTargetPointer(new EachTargetPointer()).setText(", and annihilator 1 until end of turn"));
this.addAbility(ability);
// Trample
this.addAbility(TrampleAbility.getInstance());
// Haste
this.addAbility(HasteAbility.getInstance());
// Annihilator 1
this.addAbility(new AnnihilatorAbility(1));
}
private HideousTaskmaster(final HideousTaskmaster card) {

View file

@ -41,7 +41,7 @@ public final class KamiOfJealousThirst extends CardImpl {
);
ability.addEffect(new GainLifeEffect(2).concatBy("and"));
ability.setMaxActivationsPerTurn(1);
ability.addEffect(new InfoEffect("This ability costs {4}{B} less to activate if you've drawn three or more cards this turn."));
ability.addEffect(new InfoEffect("This ability costs {4}{B} less to activate if you've drawn three or more cards this turn. Activate only once each turn."));
ability.setCostAdjuster(KamiOfJealousThirstAdjuster.instance);
this.addAbility(ability.addHint(CardsDrawnThisTurnDynamicValue.getHint()));
}

View file

@ -8,6 +8,7 @@ import mage.abilities.keyword.HasteAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.SubType;
import java.util.UUID;
@ -29,7 +30,7 @@ public final class RecklessPyrosurfer extends CardImpl {
this.addAbility(HasteAbility.getInstance());
// Landfall -- Whenever a land enters the battlefield under your control, Reckless Pyrosurfer gains battle cry until end of turn.
this.addAbility(new LandfallAbility(new GainAbilitySourceEffect(new BattleCryAbility())));
this.addAbility(new LandfallAbility(new GainAbilitySourceEffect(new BattleCryAbility(), Duration.EndOfTurn)));
}
private RecklessPyrosurfer(final RecklessPyrosurfer card) {

View file

@ -31,7 +31,7 @@ public final class RipplesOfUndeath extends CardImpl {
public RipplesOfUndeath(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{B}");
// At the beginning of your precombat main phase, mill three cards. Then you may pay {1} and 3 life. If you do, put a card from among those cards into your hand.
// At the beginning of your precombat main phase, mill three cards. Then you may pay {1} and 3 life. If you do, put one of the cards milled this way into your hand.
this.addAbility(new BeginningOfPreCombatMainTriggeredAbility(
new RipplesOfUndeathEffect(), TargetController.YOU, false
));
@ -51,7 +51,7 @@ class RipplesOfUndeathEffect extends OneShotEffect {
RipplesOfUndeathEffect() {
super(Outcome.Benefit);
staticText = "mill three cards. Then you may pay {1} and 3 life. If you do, put a card from among those cards into your hand.";
staticText = "mill three cards. Then you may pay {1} and 3 life. If you do, put one of the cards milled this way into your hand.";
}
private RipplesOfUndeathEffect(final RipplesOfUndeathEffect effect) {

View file

@ -69,7 +69,11 @@ public final class SorinRavenousNeonate extends CardImpl {
this.addAbility(new LoyaltyAbility(new CreateTokenEffect(new FoodToken()), 2));
// -1: Sorin, Ravenous Neonate deals damage equal to the amount of life you gained this turn to any target.
Ability ability = new LoyaltyAbility(new DamageTargetEffect(ControllerGainedLifeCount.instance), -1);
Ability ability = new LoyaltyAbility(
new DamageTargetEffect(ControllerGainedLifeCount.instance)
.setText("{this} deals damage equal to the amount of life you gained this turn to any target"),
-1
);
ability.addTarget(new TargetAnyTarget());
this.addAbility(ability.addHint(ControllerGainedLifeCount.getHint()), new PlayerGainedLifeWatcher());

View file

@ -27,9 +27,7 @@ public final class StaticPrison extends CardImpl {
// When Static Prison enters the battlefield, exile target nonland permanent an opponent controls until Static Prison leaves the battlefield. You get {E}{E}.
Ability ability = new EntersBattlefieldTriggeredAbility(new ExileUntilSourceLeavesEffect());
ability.addEffect(new GetEnergyCountersControllerEffect(2));
ability.addTarget(new TargetPermanent(
0, 1, StaticFilters.FILTER_OPPONENTS_PERMANENT_NON_LAND
));
ability.addTarget(new TargetPermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_NON_LAND));
this.addAbility(ability);
// At the beginning of your precombat main phase, sacrifice Static Prison unless you pay {E}.

View file

@ -76,7 +76,7 @@ class SuppressionRayTargetEffect extends OneShotEffect {
SuppressionRayTargetEffect() {
super(Outcome.Tap);
staticText = "Tap all creatures target player controls."
staticText = "Tap all creatures target player controls. "
+ "You may pay X {E}, then choose up to X creatures tapped this way. "
+ "Put a stun counter on each of them.";
}

View file

@ -1,6 +1,5 @@
package mage.cards.t;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.LandfallAbility;
@ -11,24 +10,25 @@ import mage.abilities.effects.ContinuousEffectImpl;
import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.keyword.DredgeAbility;
import mage.cards.Card;
import mage.constants.*;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
import mage.filter.StaticFilters;
import mage.game.Game;
import mage.game.permanent.token.PlantToken;
import mage.game.permanent.token.ZombieToken;
import mage.players.Player;
import java.util.UUID;
/**
*
* @author Grath
*/
public final class TheNecrobloom extends CardImpl {
public TheNecrobloom(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}{B}{G}");
this.supertype.add(SuperType.LEGENDARY);
this.subtype.add(SubType.PLANT);
this.power = new MageInt(2);
@ -41,7 +41,7 @@ public final class TheNecrobloom extends CardImpl {
new CreateTokenEffect(new ZombieToken()),
new CreateTokenEffect(new PlantToken()),
TheNecrobloomCondition.instance, "create a 0/1 green Plant creature token. If you control " +
"seven or more lands with different names, create 2/2 black Zombie creature token instead"
"seven or more lands with different names, create a 2/2 black Zombie creature token instead"
)));
// Land cards in your graveyard have dredge 2.

View file

@ -38,7 +38,7 @@ public final class ThrabenCharm extends CardImpl {
// Choose one --
// * Thraben Charm deals damage equal to twice the number of creatures you control to target creature.
this.getSpellAbility().addEffect(new DamageTargetEffect(xValue)
.setText("{this} deals damage equal to the number of creatures you control to target creature or planeswalker"));
.setText("{this} deals damage equal to twice the number of creatures you control to target creature"));
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
this.getSpellAbility().addHint(CreaturesYouControlHint.instance);

View file

@ -6,7 +6,7 @@ import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.Condition;
import mage.abilities.condition.common.SourceMatchesFilterCondition;
import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.effects.common.continuous.BoostEquippedEffect;
import mage.abilities.effects.common.continuous.BoostEnchantedEffect;
import mage.abilities.effects.common.continuous.GainAbilityAttachedEffect;
import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
import mage.abilities.keyword.BestowAbility;
@ -46,7 +46,7 @@ public final class TritonWavebreaker extends CardImpl {
)));
// Enchanted creature gets +1/+1 and has prowess.
Ability ability = new SimpleStaticAbility(new BoostEquippedEffect(1, 1));
Ability ability = new SimpleStaticAbility(new BoostEnchantedEffect(1, 1));
ability.addEffect(new GainAbilityAttachedEffect(
new ProwessAbility(), AttachmentType.AURA
).setText("and has prowess"));

View file

@ -36,7 +36,7 @@ public final class WhiteOrchidPhantom extends CardImpl {
// When White Orchid Phantom enters the battlefield, destroy up to one target nonbasic land. Its controller may search their library for a basic land card, put it onto the battlefield tapped, then shuffle.
Ability ability = new EntersBattlefieldTriggeredAbility(new DestroyTargetEffect());
ability.addTarget(new TargetNonBasicLandPermanent());
ability.addTarget(new TargetNonBasicLandPermanent(0, 1));
ability.addEffect(new SearchLibraryPutInPlayTargetControllerEffect(true));
this.addAbility(ability);
}

View file

@ -11,10 +11,18 @@ import mage.filter.predicate.Predicates;
*/
public class TargetNonBasicLandPermanent extends TargetLandPermanent {
private static final FilterLandPermanent filter = new FilterLandPermanent("nonbasic land");
static {
filter.add(Predicates.not(SuperType.BASIC.getPredicate()));
}
public TargetNonBasicLandPermanent() {
this.filter = new FilterLandPermanent();
this.filter.add(Predicates.not(SuperType.BASIC.getPredicate()));
this.targetName = "nonbasic land";
this(1, 1);
}
public TargetNonBasicLandPermanent(int minNumTargets, int maxNumTargets) {
super(minNumTargets, maxNumTargets, filter, false);
}
protected TargetNonBasicLandPermanent(final TargetNonBasicLandPermanent target) {