Added optional text generation to EnteresBattlefieldAbility. Deactivated "put counter on" text generation for Planeswalkers.

This commit is contained in:
LevelX2 2012-09-27 20:11:58 +02:00
parent 346c8c609f
commit 5845d56b89
34 changed files with 80 additions and 37 deletions

View file

@ -69,7 +69,7 @@ public class TamiyoTheMoonSage extends CardImpl<TamiyoTheMoonSage> {
this.color.setBlue(true);
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.LOYALTY.createInstance(4)), null));
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.LOYALTY.createInstance(4)), false));
// +1: Tap target permanent. It doesn't untap during its controller's next untap step.
LoyaltyAbility ability = new LoyaltyAbility(new TapTargetEffect(), 1);

View file

@ -69,7 +69,7 @@ public class TibaltTheFiendBlooded extends CardImpl<TibaltTheFiendBlooded> {
this.color.setRed(true);
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.LOYALTY.createInstance(2)), ""));
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.LOYALTY.createInstance(2)), false));
// +1: Draw a card, then discard a card at random.
this.addAbility(new LoyaltyAbility(new TibaltTheFiendBloodedFirstEffect(), 1));

View file

@ -65,7 +65,7 @@ public class ApocalypseHydra extends CardImpl<ApocalypseHydra> {
this.toughness = new MageInt(0);
// Apocalypse Hydra enters the battlefield with X +1/+1 counters on it. If X is 5 or more, it enters the battlefield with an additional X +1/+1 counters on it.
this.addAbility(new EntersBattlefieldAbility(new ApocalypseHydraEffect(), ""));
this.addAbility(new EntersBattlefieldAbility(new ApocalypseHydraEffect(), true));
// {1}{R}, Remove a +1/+1 counter from Apocalypse Hydra: Apocalypse Hydra deals 1 damage to target creature or player.
Ability ability = new SimpleActivatedAbility(Constants.Zone.BATTLEFIELD, new DamageTargetEffect(1), new ManaCostsImpl("{1}{R}"));
ability.addCost(new RemoveCountersSourceCost(CounterType.P1P1.createInstance()));

View file

@ -69,7 +69,7 @@ public class NicolBolasPlaneswalker extends CardImpl<NicolBolasPlaneswalker> {
this.color.setBlue(true);
this.color.setBlack(true);
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.LOYALTY.createInstance(5)), ""));
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.LOYALTY.createInstance(5)), false));
// +3: Destroy target noncreature permanent.
LoyaltyAbility ability = new LoyaltyAbility(new DestroyTargetEffect(), 3);

View file

@ -80,7 +80,7 @@ public class SorinLordOfInnistrad extends CardImpl<SorinLordOfInnistrad> {
this.color.setBlack(true);
this.color.setWhite(true);
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.LOYALTY.createInstance(3)), null));
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.LOYALTY.createInstance(3)), false));
// +1: Put a 1/1 black Vampire creature token with lifelink onto the battlefield.
this.addAbility(new LoyaltyAbility(new CreateTokenEffect(new VampireToken()), 1));

View file

@ -64,7 +64,7 @@ public class GarrukRelentless extends CardImpl<GarrukRelentless> {
this.canTransform = true;
this.secondSideCard = new GarrukTheVeilCursed(ownerId);
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.LOYALTY.createInstance(3)), ""));
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.LOYALTY.createInstance(3)), false));
// When Garruk Relentless has two or fewer loyalty counters on him, transform him.
this.addAbility(new TransformAbility());

View file

@ -64,7 +64,7 @@ public class LilianaOfTheVeil extends CardImpl<LilianaOfTheVeil> {
this.color.setBlack(true);
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.LOYALTY.createInstance(3)), ""));
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.LOYALTY.createInstance(3)), false));
// +1: Each player discards a card.
this.addAbility(new LoyaltyAbility(new DiscardEachPlayerEffect(), 1));

View file

@ -68,7 +68,7 @@ public class AjaniGoldmane extends CardImpl<AjaniGoldmane> {
this.expansionSetCode = "M10";
this.subtype.add("Ajani");
this.color.setWhite(true);
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.LOYALTY.createInstance(4)), ""));
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.LOYALTY.createInstance(4)), false));
this.addAbility(new LoyaltyAbility(new GainLifeEffect(2), 1));

View file

@ -60,7 +60,7 @@ public class ChandraNalaar extends CardImpl<ChandraNalaar> {
this.expansionSetCode = "M10";
this.subtype.add("Chandra");
this.color.setRed(true);
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.LOYALTY.createInstance(6)), ""));
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.LOYALTY.createInstance(6)), false));
LoyaltyAbility ability1 = new LoyaltyAbility(new DamageTargetEffect(1), 1);

View file

@ -60,7 +60,7 @@ public class GarrukWildspeaker extends CardImpl<GarrukWildspeaker> {
this.expansionSetCode = "M10";
this.subtype.add("Garruk");
this.color.setGreen(true);
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.LOYALTY.createInstance(3)), ""));
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.LOYALTY.createInstance(3)), false));
LoyaltyAbility ability1 = new LoyaltyAbility(new UntapTargetEffect(), 1);

View file

@ -52,7 +52,7 @@ public class JaceBeleren extends CardImpl<JaceBeleren> {
this.expansionSetCode = "M10";
this.subtype.add("Jace");
this.color.setBlue(true);
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.LOYALTY.createInstance(3)), ""));
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.LOYALTY.createInstance(3)), false));
this.addAbility(new LoyaltyAbility(new DrawCardAllEffect(1), 2));

View file

@ -59,7 +59,7 @@ public class LilianaVess extends CardImpl<LilianaVess> {
this.expansionSetCode = "M10";
this.subtype.add("Liliana");
this.color.setBlack(true);
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.LOYALTY.createInstance(5)), ""));
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.LOYALTY.createInstance(5)), false));
LoyaltyAbility ability1 = new LoyaltyAbility(new DiscardTargetEffect(1), 1);
ability1.addTarget(new TargetPlayer());

View file

@ -58,7 +58,7 @@ public class ChandraTheFirebrand extends CardImpl<ChandraTheFirebrand> {
this.expansionSetCode = "M12";
this.subtype.add("Chandra");
this.color.setRed(true);
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.LOYALTY.createInstance(3)), ""));
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.LOYALTY.createInstance(3)), false));
LoyaltyAbility ability1 = new LoyaltyAbility(new DamageTargetEffect(1), 1);
ability1.addTarget(new TargetCreatureOrPlayer());

View file

@ -68,7 +68,7 @@ public class GarrukPrimalHunter extends CardImpl<GarrukPrimalHunter> {
this.expansionSetCode = "M12";
this.subtype.add("Garruk");
this.color.setGreen(true);
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.LOYALTY.createInstance(3)), ""));
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.LOYALTY.createInstance(3)), false));
this.addAbility(new LoyaltyAbility(new CreateTokenEffect(new BeastToken()), 1));
this.addAbility(new LoyaltyAbility(new GarrukPrimalHunterEffect(), -3));
this.addAbility(new LoyaltyAbility(new CreateTokenEffect(new WurmToken(), new PermanentsOnBattlefieldCount(filter)), -6));

View file

@ -57,7 +57,7 @@ public class JaceMemoryAdept extends CardImpl<JaceMemoryAdept> {
this.color.setBlue(true);
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.LOYALTY.createInstance(4))));
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.LOYALTY.createInstance(4)), false));
// +1: Draw a card. Target player puts the top card of his or her library into his or her graveyard.
LoyaltyAbility ability1 = new LoyaltyAbility(new DrawCardControllerEffect(1), 1);

View file

@ -66,7 +66,7 @@ public class AjaniCallerOfThePride extends CardImpl<AjaniCallerOfThePride> {
@Override
public void build() {
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.LOYALTY.createInstance(4)), ""));
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.LOYALTY.createInstance(4)), false));
// +1: Put a +1/+1 counter on up to one target creature.
Ability ability = new LoyaltyAbility(new AddCountersTargetEffect(CounterType.P1P1.createInstance()), 1);
ability.addTarget(new TargetCreaturePermanent());

View file

@ -80,7 +80,7 @@ public class LilianaOfTheDarkRealms extends CardImpl<LilianaOfTheDarkRealms> {
this.color.setBlack(true);
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.LOYALTY.createInstance(3)), ""));
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.LOYALTY.createInstance(3)), false));
// +1: Search your library for a Swamp card, reveal it, and put it into your hand. Then shuffle your library.
this.addAbility(new LoyaltyAbility(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(filter), true), 1));

View file

@ -70,7 +70,7 @@ public class TezzeretAgentOfBolas extends CardImpl<TezzeretAgentOfBolas> {
this.subtype.add("Tezzeret");
this.color.setBlue(true);
this.color.setBlack(true);
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.LOYALTY.createInstance(3)), ""));
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.LOYALTY.createInstance(3)), false));
this.addAbility(new LoyaltyAbility(new TezzeretAgentOfBolasEffect1(), 1));

View file

@ -67,7 +67,7 @@ public class KarnLiberated extends CardImpl<KarnLiberated> {
super(ownerId, 1, "Karn Liberated", Rarity.MYTHIC, new CardType[]{CardType.PLANESWALKER}, "{7}");
this.expansionSetCode = "NPH";
this.subtype.add("Karn");
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.LOYALTY.createInstance(6)), ""));
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.LOYALTY.createInstance(6)), false));
// +4: Target player exiles a card from his or her hand.
LoyaltyAbility ability1 = new LoyaltyAbility(new ExileFromZoneTargetEffect(Zone.HAND, exileId, "Karn Liberated", new FilterCard()), 4);

View file

@ -69,7 +69,7 @@ public class GideonJura extends CardImpl<GideonJura> {
this.expansionSetCode = "ROE";
this.subtype.add("Gideon");
this.color.setWhite(true);
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.LOYALTY.createInstance(6)), ""));
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.LOYALTY.createInstance(6)), false));
LoyaltyAbility ability1 = new LoyaltyAbility(new GideonJuraEffect(), 2);
ability1.addTarget(new TargetOpponent());

View file

@ -45,7 +45,7 @@ import mage.target.common.TargetControlledPermanent;
*/
public class HandOfEmrakul extends CardImpl<HandOfEmrakul> {
private static final String ALTERNATIVE_COST_DESCRIPTION = "You may sacrifice four Eldrazi Spawn rather than pay Hand of Emrakul's mana cost.";
private static final String ALTERNATIVE_COST_DESCRIPTION = "You may sacrifice four Eldrazi Spawn rather than pay Hand of Emrakul's mana cost";
private static final FilterControlledPermanent filter = new FilterControlledPermanent("Eldrazi Spawn");
static {

View file

@ -65,7 +65,7 @@ public class SarkhanTheMad extends CardImpl<SarkhanTheMad> {
super(ownerId, 214, "Sarkhan the Mad", Rarity.MYTHIC, new CardType[]{CardType.PLANESWALKER}, "{3}{B}{R}");
this.expansionSetCode = "ROE";
this.subtype.add("Sarkhan");
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.LOYALTY.createInstance(7)), ""));
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.LOYALTY.createInstance(7)), false));
this.color.setBlack(true);
this.color.setRed(true);

View file

@ -59,7 +59,7 @@ public class ElspethTirel extends CardImpl<ElspethTirel> {
this.expansionSetCode = "SOM";
this.subtype.add("Elspeth");
this.color.setWhite(true);
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.LOYALTY.createInstance(4)), ""));
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.LOYALTY.createInstance(4)), false));
this.addAbility(new LoyaltyAbility(new ElspethTirelFirstEffect(), 2));

View file

@ -80,7 +80,7 @@ public class KothOfTheHammer extends CardImpl<KothOfTheHammer> {
this.expansionSetCode = "SOM";
this.subtype.add("Koth");
this.color.setRed(true);
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.LOYALTY.createInstance(3)), ""));
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.LOYALTY.createInstance(3)), false));
Ability ability = new LoyaltyAbility(new UntapTargetEffect(), 1);
ability.addEffect(new BecomesCreatureTargetEffect(new KothOfTheHammerToken(), "land", Duration.EndOfTurn));

View file

@ -71,7 +71,7 @@ public class VenserTheSojourner extends CardImpl<VenserTheSojourner> {
this.subtype.add("Venser");
this.color.setWhite(true);
this.color.setBlue(true);
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.LOYALTY.createInstance(3)), null));
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.LOYALTY.createInstance(3)), false));
// +2: Exile target permanent you own. Return it to the battlefield under your control at the beginning of the next end step.
LoyaltyAbility ability1 = new LoyaltyAbility(new VenserTheSojournerEffect(), 2);

View file

@ -64,7 +64,7 @@ public class AjaniVengeant extends CardImpl<AjaniVengeant> {
this.subtype.add("Ajani");
this.color.setRed(true);
this.color.setWhite(true);
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.LOYALTY.createInstance(3)), ""));
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.LOYALTY.createInstance(3)), false));
LoyaltyAbility ability1 = new LoyaltyAbility(new SkipNextUntapTargetEffect(), 1);

View file

@ -65,7 +65,7 @@ public class ElspethKnightErrant extends CardImpl<ElspethKnightErrant> {
this.subtype.add("Elspeth");
this.color.setWhite(true);
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.LOYALTY.createInstance(4)), ""));
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.LOYALTY.createInstance(4)), false));
// +1: Put a 1/1 white Soldier creature token onto the battlefield.
this.addAbility(new LoyaltyAbility(new CreateTokenEffect(new SoldierToken()), 1));

View file

@ -62,7 +62,7 @@ public class SarkhanVol extends CardImpl<SarkhanVol> {
this.subtype.add("Sarkhan");
this.color.setRed(true);
this.color.setGreen(true);
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.LOYALTY.createInstance(4)), ""));
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.LOYALTY.createInstance(4)), false));
Effects effects1 = new Effects();
effects1.add(new BoostControlledEffect(1, 1, Duration.EndOfTurn));

View file

@ -65,7 +65,7 @@ public class TezzeretTheSeeker extends CardImpl<TezzeretTheSeeker> {
this.subtype.add("Tezzeret");
this.color.setBlue(true);
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.LOYALTY.createInstance(4)), ""));
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.LOYALTY.createInstance(4)), false));
// +1: Untap up to two target artifacts.
LoyaltyAbility ability = new LoyaltyAbility(new UntapTargetEffect(), 1);

View file

@ -31,6 +31,7 @@ import java.util.UUID;
import mage.Constants.CardType;
import mage.Constants.Rarity;
import mage.Constants.TargetController;
import mage.abilities.Ability;
import mage.abilities.costs.AlternativeCostImpl;
import mage.abilities.costs.common.SacrificeTargetCost;
import mage.abilities.effects.common.DamageTargetEffect;
@ -39,6 +40,7 @@ import mage.filter.FilterPermanent;
import mage.filter.predicate.mageobject.CardTypePredicate;
import mage.filter.predicate.mageobject.SubtypePredicate;
import mage.filter.predicate.permanent.ControllerPredicate;
import mage.game.Game;
import mage.target.common.TargetControlledPermanent;
import mage.target.common.TargetCreatureOrPlayer;
@ -56,8 +58,6 @@ public class Fireblast extends CardImpl<Fireblast> {
filter.add(new SubtypePredicate("Mountain"));
filter.add(new ControllerPredicate(TargetController.YOU));
}
private static final String ALTERNATIVE_COST_DESCRIPTION = "You may sacrifice two Mountains rather than pay Fireblast's mana cost";
public Fireblast(UUID ownerId) {
super(ownerId, 79, "Fireblast", Rarity.COMMON, new CardType[]{CardType.INSTANT}, "{4}{R}{R}");
@ -66,7 +66,7 @@ public class Fireblast extends CardImpl<Fireblast> {
this.color.setRed(true);
// You may sacrifice two Mountains rather than pay Fireblast's mana cost.
this.getSpellAbility().addAlternativeCost(new AlternativeCostImpl(ALTERNATIVE_COST_DESCRIPTION, new SacrificeTargetCost(new TargetControlledPermanent(2, 2, filter, true), true)));
this.getSpellAbility().addAlternativeCost(new FireblastAlternativeCost());
// Fireblast deals 4 damage to target creature or player.
this.getSpellAbility().addEffect(new DamageTargetEffect(4));
@ -83,3 +83,37 @@ public class Fireblast extends CardImpl<Fireblast> {
return new Fireblast(this);
}
}
class FireblastAlternativeCost extends AlternativeCostImpl<FireblastAlternativeCost> {
private static final FilterPermanent filter = new FilterPermanent("Mountain");
static {
filter.add(new CardTypePredicate(CardType.LAND));
filter.add(new SubtypePredicate("Mountain"));
filter.add(new ControllerPredicate(TargetController.YOU));
}
public FireblastAlternativeCost() {
super("You may sacrifice two Mountains rather than pay Fireblast's mana cost");
this.add(new SacrificeTargetCost(new TargetControlledPermanent(2, 2, filter, true)));
}
public FireblastAlternativeCost(final FireblastAlternativeCost cost) {
super(cost);
}
@Override
public FireblastAlternativeCost copy() {
return new FireblastAlternativeCost(this);
}
@Override
public boolean isAvailable(Game game, Ability source) {
return true;
}
@Override
public String getText() {
return "You may sacrifice two Mountains rather than pay Fireblast's mana cost";
}
}

View file

@ -66,7 +66,7 @@ public class ChandraAblaze extends CardImpl<ChandraAblaze> {
this.color.setRed(true);
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.LOYALTY.createInstance(5)), ""));
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.LOYALTY.createInstance(5)), false));
// +1: Discard a card. If a red card is discarded this way, Chandra Ablaze deals 4 damage to target creature or player.
LoyaltyAbility ability = new LoyaltyAbility(new ChandraAblazeEffect1(), 1);

View file

@ -65,7 +65,7 @@ public class NissaRevane extends CardImpl<NissaRevane> {
super(ownerId, 170, "Nissa Revane", Rarity.MYTHIC, new CardType[]{ CardType.PLANESWALKER }, "{2}{G}{G}");
this.expansionSetCode = "ZEN";
this.subtype.add("Nissa");
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.LOYALTY.createInstance(2)), ""));
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.LOYALTY.createInstance(2)), false));
this.color.setGreen(true);

View file

@ -61,7 +61,7 @@ public class SorinMarkov extends CardImpl<SorinMarkov> {
this.color.setBlack(true);
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.LOYALTY.createInstance(4))));
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.LOYALTY.createInstance(4)), false));
// +2: Sorin Markov deals 2 damage to target creature or player and you gain 2 life.
LoyaltyAbility ability1 = new LoyaltyAbility(new DamageTargetEffect(2), 2);

View file

@ -38,15 +38,24 @@ import mage.abilities.effects.EntersBattlefieldEffect;
* @author BetaSteward_at_googlemail.com
*/
public class EntersBattlefieldAbility extends StaticAbility<EntersBattlefieldAbility> {
protected Boolean generateRule;
public EntersBattlefieldAbility(Effect effect) {
this(new EntersBattlefieldEffect(effect), true);
}
public EntersBattlefieldAbility(Effect effect, Boolean generateRule) {
super(Zone.BATTLEFIELD, new EntersBattlefieldEffect(effect));
this.generateRule = generateRule;
}
public EntersBattlefieldAbility(Effect effect, String rule) {
super(Zone.BATTLEFIELD, new EntersBattlefieldEffect(effect, rule));
this.generateRule = true;
}
public EntersBattlefieldAbility(EntersBattlefieldAbility ability) {
super(ability);
}
@ -58,6 +67,6 @@ public class EntersBattlefieldAbility extends StaticAbility<EntersBattlefieldAbi
@Override
public String getRule() {
return "{this} enters the battlefield " + super.getRule();
return (generateRule ? "{this} enters the battlefield " + super.getRule():"");
}
}