Merge pull request #10399 from xenohedron/cleanup-becomescreaturesource

Cleanup: BecomesCreatureSourceEffect
This commit is contained in:
xenohedron 2023-06-02 11:57:19 +03:00 committed by GitHub
commit a7c3cb9797
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
120 changed files with 294 additions and 286 deletions

View file

@ -29,7 +29,7 @@ public final class AngelsTomb extends CardImpl {
.withColor("W")
.withSubType(SubType.ANGEL)
.withAbility(FlyingAbility.getInstance()),
"", Duration.EndOfTurn)
CardType.ARTIFACT, Duration.EndOfTurn)
.setText("have {this} become a 3/3 white Angel artifact creature with flying until end of turn");
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(
Zone.BATTLEFIELD,
@ -47,4 +47,4 @@ public final class AngelsTomb extends CardImpl {
public AngelsTomb copy() {
return new AngelsTomb(this);
}
}
}

View file

@ -72,7 +72,7 @@ class AnsweredPrayersEffect extends OneShotEffect {
return true;
}
game.addEffect(new BecomesCreatureSourceEffect(
new AnsweredPrayersToken(), "enchantment", Duration.EndOfTurn
new AnsweredPrayersToken(), CardType.ENCHANTMENT, Duration.EndOfTurn
), source);
return true;
}

View file

@ -36,7 +36,7 @@ public final class AtarkaMonument extends CardImpl {
.withSubType(SubType.DRAGON)
.withType(CardType.ARTIFACT)
.withAbility(FlyingAbility.getInstance()),
"", Duration.EndOfTurn), new ManaCostsImpl<>("{4}{R}{G}")));
CardType.ARTIFACT, Duration.EndOfTurn), new ManaCostsImpl<>("{4}{R}{G}")));
}
private AtarkaMonument(final AtarkaMonument card) {

View file

@ -36,7 +36,7 @@ public final class AzoriusKeyrune extends CardImpl {
.withSubType(SubType.BIRD)
.withType(CardType.ARTIFACT)
.withAbility(FlyingAbility.getInstance()),
"", Duration.EndOfTurn), new ManaCostsImpl<>("{W}{U}")));
CardType.ARTIFACT, Duration.EndOfTurn), new ManaCostsImpl<>("{W}{U}")));
}
private AzoriusKeyrune(final AzoriusKeyrune card) {

View file

@ -27,7 +27,7 @@ import mage.target.TargetPermanent;
*/
public final class BlinkmothNexus extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Blinkmoth");
private static final FilterPermanent filter = new FilterPermanent("Blinkmoth creature");
static {
filter.add(SubType.BLINKMOTH.getPredicate());
@ -45,7 +45,7 @@ public final class BlinkmothNexus extends CardImpl {
.withSubType(SubType.BLINKMOTH)
.withType(CardType.ARTIFACT)
.withAbility(FlyingAbility.getInstance()),
"land", Duration.EndOfTurn), new GenericManaCost(1)));
CardType.LAND, Duration.EndOfTurn), new GenericManaCost(1)));
// {1}, {T}: Target Blinkmoth creature gets +1/+1 until end of turn.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostTargetEffect(1, 1, Duration.EndOfTurn), new GenericManaCost(1));

View file

@ -32,8 +32,7 @@ public final class BogardanDragonheart extends CardImpl {
// Sacrifice another creature: Until end of turn, Bogardan Dragonheart becomes a Dragon with base power and toughness 4/4, flying, and haste.
this.addAbility(new SimpleActivatedAbility(new BecomesCreatureSourceEffect(
new BogardanDragonheartToken(), null, Duration.EndOfTurn, false,
false, null, null, false
new BogardanDragonheartToken(), CardType.CREATURE, Duration.EndOfTurn
), new SacrificeTargetCost(new TargetControlledPermanent(StaticFilters.FILTER_CONTROLLED_ANOTHER_CREATURE))));
}

View file

@ -36,7 +36,7 @@ public final class BorosKeyrune extends CardImpl {
.withSubType(SubType.SOLDIER)
.withType(CardType.ARTIFACT)
.withAbility(DoubleStrikeAbility.getInstance()),
"", Duration.EndOfTurn), new ManaCostsImpl<>("{R}{W}")));
CardType.ARTIFACT, Duration.EndOfTurn), new ManaCostsImpl<>("{R}{W}")));
}
private BorosKeyrune(final BorosKeyrune card) {

View file

@ -49,7 +49,7 @@ public final class CaveOfTheFrostDragon extends CardImpl {
.withColor("W")
.withSubType(SubType.DRAGON)
.withAbility(FlyingAbility.getInstance()),
"land", Duration.EndOfTurn), new ManaCostsImpl<>("{4}{W}")));
CardType.LAND, Duration.EndOfTurn), new ManaCostsImpl<>("{4}{W}")));
}
private CaveOfTheFrostDragon(final CaveOfTheFrostDragon card) {

View file

@ -41,7 +41,7 @@ public final class CelestialColonnade extends CardImpl {
.withSubType(SubType.ELEMENTAL)
.withAbility(FlyingAbility.getInstance())
.withAbility(VigilanceAbility.getInstance()),
"land", Duration.EndOfTurn), new ManaCostsImpl<>("{3}{W}{U}")));
CardType.LAND, Duration.EndOfTurn).withDurationRuleAtStart(true), new ManaCostsImpl<>("{3}{W}{U}")));
}
private CelestialColonnade(final CelestialColonnade card) {
@ -53,4 +53,4 @@ public final class CelestialColonnade extends CardImpl {
return new CelestialColonnade(this);
}
}
}

View file

@ -45,7 +45,7 @@ public final class ChimericEgg extends CardImpl {
.withSubType(SubType.CONSTRUCT)
.withType(CardType.ARTIFACT)
.withAbility(TrampleAbility.getInstance()),
"", Duration.EndOfTurn), new RemoveCountersSourceCost(new Counter(CounterType.CHARGE.getName(), 3))));
CardType.ARTIFACT, Duration.EndOfTurn), new RemoveCountersSourceCost(new Counter(CounterType.CHARGE.getName(), 3))));
}
private ChimericEgg(final ChimericEgg card) {

View file

@ -31,7 +31,7 @@ public final class ChimericIdol extends CardImpl {
new CreatureToken(3, 3, "3/3 Turtle artifact creature")
.withSubType(SubType.TURTLE)
.withType(CardType.ARTIFACT),
"", Duration.EndOfTurn));
CardType.ARTIFACT, Duration.EndOfTurn));
this.addAbility(ability);
}
@ -44,4 +44,4 @@ public final class ChimericIdol extends CardImpl {
public ChimericIdol copy() {
return new ChimericIdol(this);
}
}
}

View file

@ -13,10 +13,7 @@ import mage.abilities.effects.common.continuous.BecomesCreatureSourceEffect;
import mage.abilities.effects.common.continuous.SetBasePowerToughnessSourceEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Duration;
import mage.constants.Zone;
import mage.constants.*;
import mage.counters.CounterType;
import mage.game.permanent.token.custom.CreatureToken;
@ -32,13 +29,13 @@ public final class ChimericMass extends CardImpl {
this.addAbility(new EntersBattlefieldAbility(new EntersBattlefieldWithXCountersEffect(CounterType.CHARGE.createInstance())));
// {1}: Until end of turn, Chimeric Mass becomes a Construct artifact creature with "This creature's power and toughness are each equal to the number of charge counters on it."
// set to character defining to prevent setting P/T again to 0 becuase already set by CDA of the token
CountersSourceCount count = new CountersSourceCount(CounterType.CHARGE);
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BecomesCreatureSourceEffect(
new CreatureToken(0, 0, "Construct artifact creature with \"This creature's power and toughness are each equal to the number of charge counters on it.\"")
.withType(CardType.ARTIFACT)
.withSubType(SubType.CONSTRUCT)
.withAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new SetBasePowerToughnessSourceEffect(new CountersSourceCount(CounterType.CHARGE)))),
"", Duration.EndOfTurn, false, true), new GenericManaCost(1)));
.withAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new SetBasePowerToughnessSourceEffect(count, count, Duration.WhileOnBattlefield, SubLayer.SetPT_7b))),
CardType.ARTIFACT, Duration.EndOfTurn).withDurationRuleAtStart(true), new GenericManaCost(1)));
}
private ChimericMass(final ChimericMass card) {
@ -50,4 +47,4 @@ public final class ChimericMass extends CardImpl {
return new ChimericMass(this);
}
}
}

View file

@ -3,9 +3,11 @@ package mage.cards.c;
import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.continuous.BecomesCreatureSourceEffect;
import mage.abilities.effects.common.continuous.LoseAbilitySourceEffect;
import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@ -29,14 +31,17 @@ public final class ChimericSphere extends CardImpl {
.withSubType(SubType.CONSTRUCT)
.withType(CardType.ARTIFACT)
.withAbility(FlyingAbility.getInstance()),
"", Duration.EndOfTurn), new ManaCostsImpl<>("{2}")));
CardType.ARTIFACT, Duration.EndOfTurn).withDurationRuleAtStart(true), new ManaCostsImpl<>("{2}")));
// {2}: Until end of turn, Chimeric Sphere becomes a 3/2 Construct artifact creature without flying.
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BecomesCreatureSourceEffect(
new CreatureToken(3, 2, "3/2 Construct artifact creature without flying")
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new BecomesCreatureSourceEffect(
new CreatureToken(3, 2, "3/2 Construct artifact creature")
.withSubType(SubType.CONSTRUCT)
.withType(CardType.ARTIFACT),
"", Duration.EndOfTurn), new ManaCostsImpl<>("{2}")));
CardType.ARTIFACT, Duration.EndOfTurn).withDurationRuleAtStart(true), new ManaCostsImpl<>("{2}"));
ability.addEffect(new LoseAbilitySourceEffect(FlyingAbility.getInstance(), Duration.EndOfTurn).setText("and loses flying"));
this.addAbility(ability);
}
private ChimericSphere(final ChimericSphere card) {
@ -48,4 +53,3 @@ public final class ChimericSphere extends CardImpl {
return new ChimericSphere(this);
}
}

View file

@ -46,11 +46,8 @@ public final class ChromiumTheMutable extends CardImpl {
// Discard a card: Until end of turn, Chromium, the Mutable becomes a Human with base power and toughness 1/1, loses all abilities, and gains hexproof. It can't be blocked this turn.
Ability ability = new SimpleActivatedAbility(
new BecomesCreatureSourceEffect(
new ChromiumTheMutableToken(), null, Duration.EndOfTurn,
false, false, null, null, true
).setText("Until end of turn, {this} becomes "
+ "a Human with base power and toughness 1/1, "
+ "loses all abilities, and gains hexproof"),
new ChromiumTheMutableToken(), CardType.CREATURE, Duration.EndOfTurn
).andLoseAbilities(true),
new DiscardCardCost()
);
ability.addEffect(

View file

@ -39,7 +39,7 @@ public final class ChronatogTotem extends CardImpl {
.withColor("U")
.withSubType(SubType.ATOG)
.withType(CardType.ARTIFACT),
"", Duration.EndOfTurn
CardType.ARTIFACT, Duration.EndOfTurn
), new ManaCostsImpl<>("{1}{U}")));
// {0}: Chronatog Totem gets +3/+3 until end of turn. You skip your next turn. Activate this ability only once each turn and only if Chronatog Totem is a creature.

View file

@ -73,7 +73,7 @@ class CrawlingBarrensEffect extends OneShotEffect {
}
game.addEffect(new BecomesCreatureSourceEffect(new CreatureToken(
0, 0, "0/0 Elemental creature"
).withSubType(SubType.ELEMENTAL), "land", Duration.EndOfTurn), source);
).withSubType(SubType.ELEMENTAL), CardType.LAND, Duration.EndOfTurn), source);
return true;
}
}

View file

@ -36,11 +36,13 @@ public final class CreepingTarPit extends CardImpl {
// {1}{U}{B}: Until end of turn, Creeping Tar Pit becomes a 3/2 blue and black Elemental creature and can't be blocked. It's still a land.
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BecomesCreatureSourceEffect(
new CreatureToken(3, 2, "3/2 blue and black Elemental creature and can't be blocked")
new CreatureToken(3, 2, "3/2 blue and black Elemental creature")
.withColor("BU")
.withSubType(SubType.ELEMENTAL)
.withAbility(new CantBeBlockedSourceAbility()),
"land", Duration.EndOfTurn), new ManaCostsImpl<>("{1}{U}{B}")));
CardType.LAND, Duration.EndOfTurn)
.setText("{this} becomes a 3/2 blue and black Elemental creature until end of turn and can't be blocked this turn. It's still a land"),
new ManaCostsImpl<>("{1}{U}{B}")));
}
private CreepingTarPit(final CreepingTarPit card) {

View file

@ -1,10 +1,10 @@
package mage.cards.d;
import mage.abilities.Ability;
import mage.MageInt;
import mage.abilities.common.DiesAttachedTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.effects.ContinuousEffectImpl;
import mage.abilities.effects.common.continuous.BecomesCreatureSourceEffect;
import mage.abilities.effects.common.continuous.BoostEquippedEffect;
import mage.abilities.keyword.EquipAbility;
import mage.abilities.keyword.FlyingAbility;
@ -12,11 +12,10 @@ import mage.abilities.keyword.WardAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.game.permanent.token.TokenImpl;
import mage.target.common.TargetControlledCreaturePermanent;
import java.util.UUID;
import mage.target.common.TargetControlledCreaturePermanent;
/**
* @author TheElk801
@ -33,7 +32,7 @@ public final class DancingSword extends CardImpl {
// When equipped creature dies, you may have Dancing Sword become a 2/1 Construct artifact creature with flying and ward {1}. If you do, it isn't an Equipment.
this.addAbility(new DiesAttachedTriggeredAbility(
new DancingSwordEffect(), "equipped creature", true
new BecomesCreatureSourceEffect(new DancingSwordToken(), CardType.ARTIFACT, Duration.WhileOnBattlefield).andNotEquipment(true), "equipped creature", true
).setTriggerPhrase("When equipped creature dies, "));
// Equip {1}
@ -50,65 +49,25 @@ public final class DancingSword extends CardImpl {
}
}
class DancingSwordEffect extends ContinuousEffectImpl {
class DancingSwordToken extends TokenImpl {
DancingSwordEffect() {
super(Duration.Custom, Outcome.Benefit);
staticText = "you may have {this} become a 2/1 Construct artifact creature " +
"with flying and ward {1}. If you do, it isn't an Equipment";
public DancingSwordToken() {
super("", "2/1 Construct artifact creature with flying and ward {1}. If you do, it isn't an Equipment");
cardType.add(CardType.ARTIFACT);
cardType.add(CardType.CREATURE);
subtype.add(SubType.CONSTRUCT);
power = new MageInt(2);
toughness = new MageInt(1);
this.addAbility(FlyingAbility.getInstance());
this.addAbility(new WardAbility(new GenericManaCost(1), false));
}
private DancingSwordEffect(final DancingSwordEffect effect) {
super(effect);
private DancingSwordToken(final DancingSwordToken token) {
super(token);
}
@Override
public DancingSwordEffect copy() {
return new DancingSwordEffect(this);
public DancingSwordToken copy() {
return new DancingSwordToken(this);
}
@Override
public boolean apply(Layer layer, SubLayer sublayer, Ability source, Game game) {
Permanent permanent = source.getSourcePermanentIfItStillExists(game);
if (permanent == null) {
discard();
return false;
}
switch (layer) {
case TypeChangingEffects_4:
permanent.removeAllCardTypes();
permanent.addCardType(game, CardType.ARTIFACT);
permanent.addCardType(game, CardType.CREATURE);
permanent.removeAllSubTypes(game);
permanent.addSubType(game, SubType.CONSTRUCT);
return true;
case AbilityAddingRemovingEffects_6:
permanent.addAbility(FlyingAbility.getInstance(), source.getSourceId(), game);
permanent.addAbility(new WardAbility(new GenericManaCost(1)), source.getSourceId(), game);
return true;
case PTChangingEffects_7:
if (sublayer == SubLayer.SetPT_7b) {
permanent.getPower().setModifiedBaseValue(2);
permanent.getToughness().setModifiedBaseValue(1);
return true;
}
}
return false;
}
@Override
public boolean apply(Game game, Ability source) {
return false;
}
@Override
public boolean hasLayer(Layer layer) {
switch (layer) {
case TypeChangingEffects_4:
case AbilityAddingRemovingEffects_6:
case PTChangingEffects_7:
return true;
}
return false;
}
}

View file

@ -32,7 +32,7 @@ public final class DarksteelBrute extends CardImpl {
new CreatureToken(2, 2, "2/2 Beast artifact creature")
.withSubType(SubType.BEAST)
.withType(CardType.ARTIFACT),
"", Duration.EndOfTurn), new GenericManaCost(3)));
CardType.ARTIFACT, Duration.EndOfTurn), new GenericManaCost(3)));
}
private DarksteelBrute(final DarksteelBrute card) {
@ -44,4 +44,4 @@ public final class DarksteelBrute extends CardImpl {
return new DarksteelBrute(this);
}
}
}

View file

@ -28,7 +28,7 @@ public final class DaxossTorment extends CardImpl {
.withSubType(SubType.DEMON)
.withAbility(FlyingAbility.getInstance())
.withAbility(HasteAbility.getInstance()),
"previous types", Duration.EndOfTurn)));
CardType.ENCHANTMENT, Duration.EndOfTurn)));
}
private DaxossTorment(final DaxossTorment card) {

View file

@ -53,11 +53,11 @@ public final class DenOfTheBugbear extends CardImpl {
"Whenever this creature attacks, create a 1/1 red Goblin creature token that's tapped and attacking."
);
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BecomesCreatureSourceEffect(
new CreatureToken(3, 2, "3/2 red Goblin creature with \"Whenever this creature attacks, create a 1/1 red Goblin creature token that's tapped and attacking\"")
new CreatureToken(3, 2, "3/2 red Goblin creature with \"Whenever this creature attacks, create a 1/1 red Goblin creature token that's tapped and attacking.\"")
.withColor("R")
.withSubType(SubType.GOBLIN)
.withAbility(ability),
"land", Duration.EndOfTurn), new ManaCostsImpl<>("{3}{R}")));
CardType.LAND, Duration.EndOfTurn).withDurationRuleAtStart(true), new ManaCostsImpl<>("{3}{R}")));
}
private DenOfTheBugbear(final DenOfTheBugbear card) {

View file

@ -35,7 +35,7 @@ public final class DimirKeyrune extends CardImpl {
.withColor("UB")
.withSubType(SubType.HORROR)
.withAbility(new CantBeBlockedSourceAbility()),
"", Duration.EndOfTurn), new ManaCostsImpl<>("{U}{B}")));
CardType.ARTIFACT, Duration.EndOfTurn).withDurationRuleAtStart(true), new ManaCostsImpl<>("{U}{B}")));
}
private DimirKeyrune(final DimirKeyrune card) {

View file

@ -39,7 +39,7 @@ public final class DireMimic extends CardImpl {
new CreatureToken(
5, 5, "Shapeshifter artifact creature " +
"with base power and toughness 5/5", SubType.SHAPESHIFTER
).withType(CardType.ARTIFACT), "", Duration.EndOfTurn
).withType(CardType.ARTIFACT), CardType.ARTIFACT, Duration.EndOfTurn
), new GenericManaCost(3)));
}

View file

@ -25,7 +25,7 @@ public final class DreadStatuary extends CardImpl {
public DreadStatuary(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},null);
this.addAbility(new ColorlessManaAbility());
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BecomesCreatureSourceEffect(new DreadStatuaryToken(), "land", Duration.EndOfTurn), new ManaCostsImpl<>("{4}")));
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BecomesCreatureSourceEffect(new DreadStatuaryToken(), CardType.LAND, Duration.EndOfTurn), new ManaCostsImpl<>("{4}")));
}
private DreadStatuary(final DreadStatuary card) {

View file

@ -32,7 +32,7 @@ public final class DromokaMonument extends CardImpl {
// {4}{G}{W}: Dromoka Monument becomes a 4/4 green and white Dragon artifact creature with flying until end of turn.
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BecomesCreatureSourceEffect
(new DromokaMonumentToken(), "", Duration.EndOfTurn), new ManaCostsImpl<>("{4}{G}{W}")));
(new DromokaMonumentToken(), CardType.ARTIFACT, Duration.EndOfTurn), new ManaCostsImpl<>("{4}{G}{W}")));
}
private DromokaMonument(final DromokaMonument card) {
@ -44,7 +44,7 @@ public final class DromokaMonument extends CardImpl {
return new DromokaMonument(this);
}
private class DromokaMonumentToken extends TokenImpl {
private static class DromokaMonumentToken extends TokenImpl {
DromokaMonumentToken() {
super("", "4/4 green and white Dragon artifact creature with flying");
cardType.add(CardType.ARTIFACT);

View file

@ -103,7 +103,7 @@ class EbonyFlyEffect extends OneShotEffect {
new CreatureToken(result, result)
.withType(CardType.ARTIFACT)
.withAbility(FlyingAbility.getInstance()),
"", Duration.EndOfTurn, false, false
CardType.ARTIFACT, Duration.EndOfTurn
), source);
return true;
}

View file

@ -30,7 +30,7 @@ public final class EnsouledScimitar extends CardImpl {
this.subtype.add(SubType.EQUIPMENT);
// {3}: Ensouled Scimitar becomes a 1/5 Spirit artifact creature with flying until end of turn.
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BecomesCreatureSourceEffect(new EnsouledScimitarToken(), "", Duration.EndOfTurn), new ManaCostsImpl<>("{3}")));
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BecomesCreatureSourceEffect(new EnsouledScimitarToken(), CardType.ARTIFACT, Duration.EndOfTurn), new ManaCostsImpl<>("{3}")));
// Equipped creature gets +1/+5.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEquippedEffect(1, 5)));
// Equip {2}
@ -65,4 +65,4 @@ class EnsouledScimitarToken extends TokenImpl {
public EnsouledScimitarToken copy() {
return new EnsouledScimitarToken(this);
}
}
}

View file

@ -28,7 +28,7 @@ public class EyeOfMalcator extends CardImpl {
new BecomesCreatureSourceEffect(
new CreatureToken(
4, 4, "4/4 Phyrexian Eye artifact creature", SubType.PHYREXIAN, SubType.EYE
).withType(CardType.ARTIFACT), "", Duration.EndOfTurn
).withType(CardType.ARTIFACT), CardType.ARTIFACT, Duration.EndOfTurn
).setText("{this} becomes a 4/4 Phyrexian Eye artifact creature until end of turn"),
StaticFilters.FILTER_CONTROLLED_ANOTHER_ARTIFACT
).setTriggerPhrase("Whenever another artifact enters the battlefield under your control, "));

View file

@ -30,7 +30,7 @@ public final class FacelessHaven extends CardImpl {
// {S}{S}{S}: Faceless Haven becomes a 4/3 creature with vigilance and all creature types until end of turn. It's still a land.
this.addAbility(new SimpleActivatedAbility(new BecomesCreatureSourceEffect(
new FacelessHavenToken(), "land", Duration.EndOfTurn
new FacelessHavenToken(), CardType.LAND, Duration.EndOfTurn
).setText("{this} becomes a 4/3 creature with vigilance and all creature types until end of turn. It's still a land"), new ManaCostsImpl<>("{S}{S}{S}")));
}

View file

@ -27,7 +27,7 @@ public final class FaerieConclave extends CardImpl {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
this.addAbility(new EntersBattlefieldTappedAbility());
this.addAbility(new BlueManaAbility());
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BecomesCreatureSourceEffect(new FaerieConclaveToken(), "land", Duration.EndOfTurn), new ManaCostsImpl<>("{1}{U}")));
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BecomesCreatureSourceEffect(new FaerieConclaveToken(), CardType.LAND, Duration.EndOfTurn), new ManaCostsImpl<>("{1}{U}")));
}
private FaerieConclave(final FaerieConclave card) {

View file

@ -32,7 +32,7 @@ public final class ForbiddingWatchtower extends CardImpl {
this.addAbility(new WhiteManaAbility());
// {1}{W}: Forbidding Watchtower becomes a 1/5 white Soldier creature until end of turn. It's still a land.
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BecomesCreatureSourceEffect(new ForbiddingWatchtowerToken(), "land", Duration.EndOfTurn), new ManaCostsImpl<>("{1}{W}")));
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BecomesCreatureSourceEffect(new ForbiddingWatchtowerToken(), CardType.LAND, Duration.EndOfTurn), new ManaCostsImpl<>("{1}{W}")));
}
private ForbiddingWatchtower(final ForbiddingWatchtower card) {

View file

@ -36,7 +36,7 @@ public final class ForiysianTotem extends CardImpl {
this.addAbility(new RedManaAbility());
// {4}{R}: Foriysian Totem becomes a 4/4 red Giant artifact creature with trample until end of turn.
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BecomesCreatureSourceEffect(new ForiysianTotemToken(), "", Duration.EndOfTurn), new ManaCostsImpl<>("{4}{R}")));
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BecomesCreatureSourceEffect(new ForiysianTotemToken(), CardType.ARTIFACT, Duration.EndOfTurn), new ManaCostsImpl<>("{4}{R}")));
// As long as Foriysian Totem is a creature, it can block an additional creature each combat.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinuousEffect(new CanBlockAdditionalCreatureEffect(1), new SourceMatchesFilterCondition(new FilterCreaturePermanent()), ruleText)));

View file

@ -27,7 +27,7 @@ public final class FountainOfIchor extends CardImpl {
// {3}: Fountain of Ichor becomes a 3/3 Dinosaur artifact creature until end of turn.
this.addAbility(new SimpleActivatedAbility(new BecomesCreatureSourceEffect(
new FountainOfIchorToken(), "", Duration.EndOfTurn
new FountainOfIchorToken(), CardType.ARTIFACT, Duration.EndOfTurn
), new GenericManaCost(3)));
}

View file

@ -34,8 +34,8 @@ public final class FrostwalkBastion extends CardImpl {
// {1}{S}: Until end of turn, Frostwalk Bastion becomes a 2/3 Construct artifact creature. It's still a land.
this.addAbility(new SimpleActivatedAbility(new BecomesCreatureSourceEffect(
new FrostwalkBastionToken(), "land", Duration.EndOfTurn
), new ManaCostsImpl<>("{1}{S}")));
new FrostwalkBastionToken(), CardType.LAND, Duration.EndOfTurn
).withDurationRuleAtStart(true), new ManaCostsImpl<>("{1}{S}")));
// Whenever Frostwalk Bastion deals combat damage to a creature, tap that creature and it doesn't untap during its controller's next untap step.
Ability ability = new DealsDamageToACreatureTriggeredAbility(
@ -75,4 +75,4 @@ class FrostwalkBastionToken extends TokenImpl {
public FrostwalkBastionToken copy() {
return new FrostwalkBastionToken(this);
}
}
}

View file

@ -29,7 +29,7 @@ public final class GhituEncampment extends CardImpl {
this.addAbility(new EntersBattlefieldTappedAbility());
this.addAbility(new RedManaAbility());
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD,
new BecomesCreatureSourceEffect(new GhituEncampmentToken(), "land", Duration.EndOfTurn),
new BecomesCreatureSourceEffect(new GhituEncampmentToken(), CardType.LAND, Duration.EndOfTurn),
new ManaCostsImpl<>("{1}{R}")));
}

View file

@ -34,7 +34,7 @@ public final class GideonAllyOfZendikar extends CardImpl {
this.setStartingLoyalty(4);
// +1: Until end of turn, Gideon, Ally of Zendikar becomes a 5/5 Human Soldier Ally creature with indestructible that's still a planeswalker. Prevent all damage that would be dealt to him this turn.
LoyaltyAbility ability = new LoyaltyAbility(new BecomesCreatureSourceEffect(new GideonAllyOfZendikarToken(), "planeswalker", Duration.EndOfTurn), 1);
LoyaltyAbility ability = new LoyaltyAbility(new BecomesCreatureSourceEffect(new GideonAllyOfZendikarToken(), CardType.PLANESWALKER, Duration.EndOfTurn), 1);
Effect effect = new PreventAllDamageToSourceEffect(Duration.EndOfTurn);
effect.setText("Prevent all damage that would be dealt to him this turn");
ability.addEffect(effect);

View file

@ -60,7 +60,7 @@ public final class GideonBattleForged extends CardImpl {
this.addAbility(loyaltyAbility);
// 0: Until end of turn, Gideon, Battle-Forged becomes a 4/4 Human Soldier creature with indestructible that's still a planeswalker. Prevent all damage that would be dealt to him this turn.
LoyaltyAbility ability3 = new LoyaltyAbility(new BecomesCreatureSourceEffect(new GideonBattleForgedToken(), "planeswalker", Duration.EndOfTurn), 0);
LoyaltyAbility ability3 = new LoyaltyAbility(new BecomesCreatureSourceEffect(new GideonBattleForgedToken(), CardType.PLANESWALKER, Duration.EndOfTurn), 0);
effect = new PreventAllDamageToSourceEffect(Duration.EndOfTurn);
effect.setText("Prevent all damage that would be dealt to him this turn");
ability3.addEffect(effect);

View file

@ -57,7 +57,7 @@ public final class GideonBlackblade extends CardImpl {
// As long as it's your turn, Gideon Blackblade is a 4/4 Human Soldier creature with indestructible that's still a planeswalker.
this.addAbility(new SimpleStaticAbility(new ConditionalContinuousEffect(
new BecomesCreatureSourceEffect(
new GideonBlackbladeToken(), "planeswalker", Duration.WhileOnBattlefield
new GideonBlackbladeToken(), CardType.PLANESWALKER, Duration.WhileOnBattlefield
), MyTurnCondition.instance, "As long as it's your turn, " +
"{this} is a 4/4 Human Soldier creature with indestructible that's still a planeswalker."
)).addHint(MyTurnHint.instance));
@ -165,4 +165,4 @@ class GideonBlackbladeEffect extends OneShotEffect {
}
return true;
}
}
}

View file

@ -49,7 +49,7 @@ public final class GideonChampionOfJustice extends CardImpl {
// 0: Until end of turn, Gideon becomes an indestructible Human Soldier creature with power and toughness each equal to the number of loyalty counters on him. He's still a planeswalker. Prevent all damage that would be dealt to him this turn.
LockedInDynamicValue loyaltyCount = new LockedInDynamicValue(new CountersSourceCount(CounterType.LOYALTY));
LoyaltyAbility ability2 = new LoyaltyAbility(new BecomesCreatureSourceEffect(
new GideonChampionOfJusticeToken(), "planeswalker", Duration.EndOfTurn, false, false, loyaltyCount, loyaltyCount)
new GideonChampionOfJusticeToken(), CardType.PLANESWALKER, Duration.EndOfTurn).withDynamicPT(loyaltyCount, loyaltyCount)
.setText("Until end of turn, {this} becomes a Human Soldier creature with power and toughness each equal to the number of loyalty counters on him and gains indestructible. He's still a planeswalker."), 0);
ability2.addEffect(new PreventAllDamageToSourceEffect(Duration.EndOfTurn).setText("prevent all damage that would be dealt to him this turn"));
this.addAbility(ability2);

View file

@ -51,7 +51,7 @@ public final class GideonJura extends CardImpl {
this.addAbility(ability2);
// 0: Until end of turn, Gideon Jura becomes a 6/6 Human Soldier creature that's still a planeswalker. Prevent all damage that would be dealt to him this turn.
LoyaltyAbility ability3 = new LoyaltyAbility(new BecomesCreatureSourceEffect(new GideonJuraToken(), "planeswalker", Duration.EndOfTurn), 0);
LoyaltyAbility ability3 = new LoyaltyAbility(new BecomesCreatureSourceEffect(new GideonJuraToken(), CardType.PLANESWALKER, Duration.EndOfTurn), 0);
Effect effect = new PreventAllDamageToSourceEffect(Duration.EndOfTurn);
effect.setText("Prevent all damage that would be dealt to him this turn");
ability3.addEffect(effect);

View file

@ -44,7 +44,7 @@ public final class GideonMartialParagon extends CardImpl {
// 0: Until end of turn, Gideon, Martial Paragon, becomes a 5/5 Human Soldier creature with indestructible that's still a planeswalker.
// Prevent all damage that would be dealt to him this turn.
ability = new LoyaltyAbility(new BecomesCreatureSourceEffect(new GideonMartialParagonToken(), "planeswalker", Duration.EndOfTurn), 0);
ability = new LoyaltyAbility(new BecomesCreatureSourceEffect(new GideonMartialParagonToken(), CardType.PLANESWALKER, Duration.EndOfTurn), 0);
effect = new PreventAllDamageToSourceEffect(Duration.EndOfTurn);
effect.setText("Prevent all damage that would be dealt to him this turn");
ability.addEffect(effect);

View file

@ -42,7 +42,7 @@ public final class GideonOfTheTrials extends CardImpl {
this.addAbility(ability);
// 0: Until end of turn, Gideon of the Trials becomes a 4/4 Human Soldier creature with indestructible that's still a planeswalker. Prevent all damage that would be dealt to him this turn.
ability = new LoyaltyAbility(new BecomesCreatureSourceEffect(new GideonOfTheTrialsToken(), "planeswalker", Duration.EndOfTurn), 0);
ability = new LoyaltyAbility(new BecomesCreatureSourceEffect(new GideonOfTheTrialsToken(), CardType.PLANESWALKER, Duration.EndOfTurn), 0);
effect = new PreventAllDamageToSourceEffect(Duration.EndOfTurn);
effect.setText("Prevent all damage that would be dealt to him this turn");
ability.addEffect(effect);

View file

@ -41,7 +41,7 @@ public final class GideonTheOathsworn extends CardImpl {
// +2: Until end of turn, Gideon, the Oathsworn becomes a 5/5 white Soldier creature that's still a planeswalker. Prevent all damage that would be dealt to him this turn.
Ability ability = new LoyaltyAbility(new BecomesCreatureSourceEffect(
new GideonTheOathswornToken(), "planeswalker", Duration.EndOfTurn
new GideonTheOathswornToken(), CardType.PLANESWALKER, Duration.EndOfTurn
), 2);
ability.addEffect(new PreventAllDamageToSourceEffect(
Duration.EndOfTurn

View file

@ -34,10 +34,10 @@ public final class GlintHawkIdol extends CardImpl {
// Whenever another artifact enters the battlefield under your control, you may have {this} become a 2/2 Bird artifact creature with flying until end of turn.
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(
Zone.BATTLEFIELD, new BecomesCreatureSourceEffect(new GlintHawkIdolToken(), "", Duration.EndOfTurn), filter, true));
Zone.BATTLEFIELD, new BecomesCreatureSourceEffect(new GlintHawkIdolToken(), CardType.ARTIFACT, Duration.EndOfTurn), filter, true));
// {W}: Glint Hawk Idol becomes a 2/2 Bird artifact creature with flying until end of turn.
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BecomesCreatureSourceEffect(new GlintHawkIdolToken(), "", Duration.EndOfTurn), new ColoredManaCost(ColoredManaSymbol.W)));
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BecomesCreatureSourceEffect(new GlintHawkIdolToken(), CardType.ARTIFACT, Duration.EndOfTurn), new ColoredManaCost(ColoredManaSymbol.W)));
}
public GlintHawkIdol (final GlintHawkIdol card) {

View file

@ -30,7 +30,7 @@ public final class GolgariKeyrune extends CardImpl {
this.addAbility(new GreenManaAbility());
// {B}{G}: Golgari Keyrune becomes a 2/2 black and green Insect artifact creature with deathtouch until end of turn.
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BecomesCreatureSourceEffect(new GolgariKeyruneToken(), "", Duration.EndOfTurn), new ManaCostsImpl<>("{B}{G}")));
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BecomesCreatureSourceEffect(new GolgariKeyruneToken(), CardType.ARTIFACT, Duration.EndOfTurn), new ManaCostsImpl<>("{B}{G}")));
}
private GolgariKeyrune(final GolgariKeyrune card) {

View file

@ -31,7 +31,7 @@ public final class GruulKeyrune extends CardImpl {
this.addAbility(new GreenManaAbility());
// {R}{G}: Gruul Keyrune becomes a 3/2 red and green Beast artifact creature with trample until end of turn.
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BecomesCreatureSourceEffect(new GruulKeyruneToken(), "", Duration.EndOfTurn), new ManaCostsImpl<>("{R}{G}")));
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BecomesCreatureSourceEffect(new GruulKeyruneToken(), CardType.ARTIFACT, Duration.EndOfTurn), new ManaCostsImpl<>("{R}{G}")));
}
private GruulKeyrune(final GruulKeyrune card) {

View file

@ -30,7 +30,7 @@ public final class GruulWarPlow extends CardImpl {
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityControlledEffect(TrampleAbility.getInstance(), Duration.WhileOnBattlefield, StaticFilters.FILTER_PERMANENT_CREATURES)));
// {1}{R}{G}: Gruul War Plow becomes a 4/4 Juggernaut artifact creature until end of turn.
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BecomesCreatureSourceEffect(new GruulWarPlowToken(), "", Duration.EndOfTurn), new ManaCostsImpl<>("{1}{R}{G}")));
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BecomesCreatureSourceEffect(new GruulWarPlowToken(), CardType.ARTIFACT, Duration.EndOfTurn), new ManaCostsImpl<>("{1}{R}{G}")));
}
private GruulWarPlow(final GruulWarPlow card) {

View file

@ -30,7 +30,7 @@ public final class GuardianIdol extends CardImpl {
// {tap}: Add {C}.
this.addAbility(new ColorlessManaAbility());
// {2}: Guardian Idol becomes a 2/2 Golem artifact creature until end of turn.
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BecomesCreatureSourceEffect(new GuardianIdolGolemToken(), "", Duration.EndOfTurn), new ManaCostsImpl<>("{2}")));
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BecomesCreatureSourceEffect(new GuardianIdolGolemToken(), CardType.ARTIFACT, Duration.EndOfTurn), new ManaCostsImpl<>("{2}")));
}
private GuardianIdol(final GuardianIdol card) {
@ -46,7 +46,7 @@ public final class GuardianIdol extends CardImpl {
class GuardianIdolGolemToken extends TokenImpl {
public GuardianIdolGolemToken() {
super("Golem", "2/2 Golem artifact creature token");
super("Golem", "2/2 Golem artifact creature");
cardType.add(CardType.ARTIFACT);
cardType.add(CardType.CREATURE);
subtype.add(SubType.GOLEM);
@ -60,4 +60,4 @@ class GuardianIdolGolemToken extends TokenImpl {
public GuardianIdolGolemToken copy() {
return new GuardianIdolGolemToken(this);
}
}
}

View file

@ -25,8 +25,7 @@ public final class HalcyonGlaze extends CardImpl {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{U}{U}");
// Whenever you cast a creature spell, Halcyon Glaze becomes a 4/4 Illusion creature with flying in addition to its other types until end of turn.
Effect effect = new BecomesCreatureSourceEffect(new HalcyonGlazeToken(), "enchantment", Duration.EndOfTurn);
effect.setText("{this} becomes a 4/4 Illusion creature with flying in addition to its other types until end of turn");
Effect effect = new BecomesCreatureSourceEffect(new HalcyonGlazeToken(), CardType.ENCHANTMENT, Duration.EndOfTurn);
this.addAbility(new SpellCastControllerTriggeredAbility(effect, StaticFilters.FILTER_SPELL_A_CREATURE, false));
}

View file

@ -50,7 +50,7 @@ public final class HallOfStormGiants extends CardImpl {
.withColor("U")
.withSubType(SubType.GIANT)
.withAbility(new WardAbility(new GenericManaCost(3))),
"land", Duration.EndOfTurn).setText(
CardType.LAND, Duration.EndOfTurn).setText(
"Until end of turn, Hall of Storm Giants becomes a 7/7 blue Giant creature with ward {3}. " +
"It's still a land. " +
"<i>(Whenever it becomes the target of a spell or ability an opponent controls, " +

View file

@ -37,7 +37,7 @@ public final class HauntedPlateMail extends CardImpl {
// {0}: Until end of turn, Haunted Plate Mail becomes a 4/4 Spirit artifact creature that's no longer an Equipment. Activate this ability only if you control no creatures.
Ability ability = new ConditionalActivatedAbility(
Zone.BATTLEFIELD,
new BecomesCreatureSourceEffect(new HauntedPlateMailToken(), "", Duration.EndOfTurn),
new BecomesCreatureSourceEffect(new HauntedPlateMailToken(), CardType.ARTIFACT, Duration.EndOfTurn).andNotEquipment(true),
new ManaCostsImpl<>("{0}"),
new PermanentsOnTheBattlefieldCondition(StaticFilters.FILTER_PERMANENT_CREATURE, ComparisonType.EQUAL_TO, 0),
"{0}: Until end of turn, Haunted Plate Mail becomes a 4/4 Spirit artifact creature that's no longer an Equipment. Activate only if you control no creatures.");

View file

@ -35,7 +35,7 @@ public final class HiddenAncients extends CardImpl {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{G}");
// When an opponent casts an enchantment spell, if Hidden Ancients is an enchantment, Hidden Ancients becomes a 5/5 Treefolk creature.
TriggeredAbility ability = new SpellCastOpponentTriggeredAbility(new BecomesCreatureSourceEffect(new HiddenAncientsTreefolkToken(), "", Duration.WhileOnBattlefield, true, false),
TriggeredAbility ability = new SpellCastOpponentTriggeredAbility(new BecomesCreatureSourceEffect(new HiddenAncientsTreefolkToken(), null, Duration.WhileOnBattlefield),
filter, false);
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, new SourceMatchesFilterCondition(StaticFilters.FILTER_PERMANENT_ENCHANTMENT),
"When an opponent casts an enchantment spell, if {this} is an enchantment, {this} becomes a 5/5 Treefolk creature."));

View file

@ -35,7 +35,7 @@ public final class HiddenGibbons extends CardImpl {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{G}");
// When an opponent casts an instant spell, if Hidden Gibbons is an enchantment, Hidden Gibbons becomes a 4/4 Ape creature.
TriggeredAbility ability = new SpellCastOpponentTriggeredAbility(new BecomesCreatureSourceEffect(new HiddenGibbonsApe(), "", Duration.WhileOnBattlefield, true, false),
TriggeredAbility ability = new SpellCastOpponentTriggeredAbility(new BecomesCreatureSourceEffect(new HiddenGibbonsApe(), null, Duration.WhileOnBattlefield),
filter, false);
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, new SourceMatchesFilterCondition(StaticFilters.FILTER_PERMANENT_ENCHANTMENT),
"When an opponent casts an instant spell, if {this} is an enchantment, {this} becomes a 4/4 Ape creature."));

View file

@ -30,7 +30,7 @@ public final class HiddenGuerrillas extends CardImpl {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{G}");
// When an opponent casts an artifact spell, if Hidden Guerrillas is an enchantment, Hidden Guerrillas becomes a 5/3 Soldier creature with trample.
TriggeredAbility ability = new SpellCastOpponentTriggeredAbility(new BecomesCreatureSourceEffect(new HiddenGuerrillasSoldier(), "", Duration.WhileOnBattlefield, true, false),
TriggeredAbility ability = new SpellCastOpponentTriggeredAbility(new BecomesCreatureSourceEffect(new HiddenGuerrillasSoldier(), null, Duration.WhileOnBattlefield),
new FilterArtifactSpell(), false);
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, new SourceMatchesFilterCondition(StaticFilters.FILTER_PERMANENT_ENCHANTMENT),
"When an opponent casts an artifact spell, if {this} is an enchantment, {this} becomes a 5/3 Soldier creature with trample."));

View file

@ -12,7 +12,6 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.SubType;
import mage.constants.SuperType;
import mage.constants.Zone;
import mage.filter.StaticFilters;
import mage.game.Game;
@ -50,7 +49,7 @@ public final class HiddenHerd extends CardImpl {
class HiddenHerdAbility extends TriggeredAbilityImpl {
public HiddenHerdAbility() {
super(Zone.BATTLEFIELD, new BecomesCreatureSourceEffect(new HiddenHerdBeast(), "", Duration.WhileOnBattlefield, true, false), false);
super(Zone.BATTLEFIELD, new BecomesCreatureSourceEffect(new HiddenHerdBeast(), null, Duration.WhileOnBattlefield), false);
}
public HiddenHerdAbility(final HiddenHerdAbility ability) {

View file

@ -46,8 +46,8 @@ class HiddenPredatorsStateTriggeredAbility extends StateTriggeredAbility {
}
public HiddenPredatorsStateTriggeredAbility() {
super(Zone.BATTLEFIELD, new BecomesCreatureSourceEffect(new HiddenPredatorsToken(), "", Duration.Custom, true, false));
setTriggerPhrase("When an opponent controls a creature with power 4 or greater, if {this} is an enchantment");
super(Zone.BATTLEFIELD, new BecomesCreatureSourceEffect(new HiddenPredatorsToken(), null, Duration.Custom));
setTriggerPhrase("When an opponent controls a creature with power 4 or greater, if {this} is an enchantment, ");
}
public HiddenPredatorsStateTriggeredAbility(final HiddenPredatorsStateTriggeredAbility ability) {

View file

@ -38,7 +38,7 @@ public final class HiddenSpider extends CardImpl {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{G}");
// When an opponent casts a creature spell with flying, if Hidden Spider is an enchantment, Hidden Spider becomes a 3/5 Spider creature with reach.
TriggeredAbility ability = new SpellCastOpponentTriggeredAbility(new BecomesCreatureSourceEffect(new HiddenSpiderToken(), "", Duration.WhileOnBattlefield, true, false),
TriggeredAbility ability = new SpellCastOpponentTriggeredAbility(new BecomesCreatureSourceEffect(new HiddenSpiderToken(), null, Duration.WhileOnBattlefield),
filter, false);
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, new SourceMatchesFilterCondition(StaticFilters.FILTER_PERMANENT_ENCHANTMENT),
"When an opponent casts a creature spell with flying, if {this} is an enchantment, {this} becomes a 3/5 Spider creature with reach."));

View file

@ -29,7 +29,7 @@ public final class HiddenStag extends CardImpl {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{G}");
// Whenever an opponent plays a land, if Hidden Stag is an enchantment, Hidden Stag becomes a 3/2 Elk Beast creature.
Effect effect = new BecomesCreatureSourceEffect(new ElkBeastToken(), "", Duration.WhileOnBattlefield, true, false);
Effect effect = new BecomesCreatureSourceEffect(new ElkBeastToken(), null, Duration.WhileOnBattlefield);
TriggeredAbility ability = new OpponentPlaysLandTriggeredAbility(Zone.BATTLEFIELD, effect, false);
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, new SourceMatchesFilterCondition(StaticFilters.FILTER_PERMANENT_ENCHANTMENT),
"Whenever an opponent plays a land, if Hidden Stag is an enchantment, Hidden Stag becomes a 3/2 Elk Beast creature."));

View file

@ -36,7 +36,7 @@ public final class HissingQuagmire extends CardImpl {
this.addAbility(new GreenManaAbility());
// {1}{B}{G}: Hissing Quagmire becomes a 2/2 black and green Elemental creature with deathtouch until end of turn. It's still a land.
Effect effect = new BecomesCreatureSourceEffect(new HissingQuagmireToken(), "land", Duration.EndOfTurn);
Effect effect = new BecomesCreatureSourceEffect(new HissingQuagmireToken(), CardType.LAND, Duration.EndOfTurn);
effect.setText("{this} becomes a 2/2 black and green Elemental creature with deathtouch until end of turn. It's still a land");
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, effect, new ManaCostsImpl<>("{1}{B}{G}")));
}

View file

@ -63,8 +63,8 @@ public final class HiveOfTheEyeTyrant extends CardImpl {
3, 3, "3/3 black Beholder creature with menace and " +
"\"Whenever this creature attacks, exile target card from defending player's graveyard.\""
).withSubType(SubType.BEHOLDER).withColor("B").withAbility(new MenaceAbility()).withAbility(ability),
"land", Duration.EndOfTurn
), new ManaCostsImpl<>("{3}{B}")));
CardType.LAND, Duration.EndOfTurn
).withDurationRuleAtStart(true), new ManaCostsImpl<>("{3}{B}")));
}
private HiveOfTheEyeTyrant(final HiveOfTheEyeTyrant card) {

View file

@ -34,7 +34,7 @@ public final class HostileDesert extends CardImpl {
// {2}, Exile a land card from your graveyard: Hostile Desert becomes a 3/4 Elemental creature until end of turn. It's still a land.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new BecomesCreatureSourceEffect(
new CreatureToken(3, 4, "3/4 Elemental creature", SubType.ELEMENTAL),
"land", Duration.EndOfTurn), new GenericManaCost(2));
CardType.LAND, Duration.EndOfTurn), new GenericManaCost(2));
ability.addCost(new ExileFromGraveCost(new TargetCardInYourGraveyard(new FilterLandCard("land card from your graveyard"))));
addAbility(ability);
}
@ -47,4 +47,4 @@ public final class HostileDesert extends CardImpl {
public HostileDesert copy() {
return new HostileDesert(this);
}
}
}

View file

@ -32,7 +32,7 @@ public final class InkmothNexus extends CardImpl {
this.addAbility(new ColorlessManaAbility());
// {1}: Inkmoth Nexus becomes a 1/1 Blinkmoth artifact creature with flying and infect until end of turn. It's still a land. (It deals damage to creatures in the form of -1/-1 counters and to players in the form of poison counters.)
Effect effect = new BecomesCreatureSourceEffect(new InkmothNexusToken(), "land", Duration.EndOfTurn);
Effect effect = new BecomesCreatureSourceEffect(new InkmothNexusToken(), CardType.LAND, Duration.EndOfTurn);
effect.setText("{this} becomes a 1/1 Phyrexian Blinkmoth artifact creature with flying and infect until end of turn. It's still a land. <i>(It deals damage to creatures in the form of -1/-1 counters and to players in the form of poison counters.)</i>");
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, effect, new GenericManaCost(1)));
}

View file

@ -31,8 +31,8 @@ public final class IzzetKeyrune extends CardImpl {
// {U}{R}: Until end of turn, Izzet Keyrune becomes a 2/1 blue and red Elemental artifact creature.
this.addAbility(new SimpleActivatedAbility(new BecomesCreatureSourceEffect(
new IzzetKeyruneToken(), "", Duration.EndOfTurn
), new ManaCostsImpl<>("{U}{R}")));
new IzzetKeyruneToken(), CardType.ARTIFACT, Duration.EndOfTurn
).withDurationRuleAtStart(true), new ManaCostsImpl<>("{U}{R}")));
// Whenever Izzet Keyrune deals combat damage to a player, you may draw a card. If you do, discard a card.
this.addAbility(new DealsCombatDamageToAPlayerTriggeredAbility(

View file

@ -21,7 +21,7 @@ public final class JadeIdol extends CardImpl {
public JadeIdol(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}");
this.addAbility(new SpellCastControllerTriggeredAbility(new BecomesCreatureSourceEffect(new JadeIdolToken(), "", Duration.EndOfTurn), StaticFilters.FILTER_SPIRIT_OR_ARCANE_CARD, false));
this.addAbility(new SpellCastControllerTriggeredAbility(new BecomesCreatureSourceEffect(new JadeIdolToken(), CardType.ARTIFACT, Duration.EndOfTurn), StaticFilters.FILTER_SPIRIT_OR_ARCANE_CARD, false));
}
private JadeIdol(final JadeIdol card) {
@ -51,4 +51,4 @@ class JadeIdolToken extends TokenImpl {
public JadeIdolToken copy() {
return new JadeIdolToken(this);
}
}
}

View file

@ -27,7 +27,7 @@ public final class JadeStatue extends CardImpl {
// {2}: Jade Statue becomes a 3/6 Golem artifact creature until end of combat. Activate this ability only during combat.
this.addAbility(new ConditionalActivatedAbility(Zone.BATTLEFIELD, new BecomesCreatureSourceEffect (new JadeStatueToken(), "", Duration.EndOfCombat), new ManaCostsImpl<>("{2}"), new IsPhaseCondition(TurnPhase.COMBAT), "{2}: {this} becomes a 3/6 Golem artifact creature until end of combat. Activate only during combat."));
this.addAbility(new ConditionalActivatedAbility(Zone.BATTLEFIELD, new BecomesCreatureSourceEffect (new JadeStatueToken(), CardType.ARTIFACT, Duration.EndOfCombat), new ManaCostsImpl<>("{2}"), new IsPhaseCondition(TurnPhase.COMBAT), "{2}: {this} becomes a 3/6 Golem artifact creature until end of combat. Activate only during combat."));
}
private JadeStatue(final JadeStatue card) {

View file

@ -32,7 +32,7 @@ public final class KolaghanMonument extends CardImpl {
// {4}{B}{R}: Kolaghan Monument becomes a 4/4 black and red Dragon artifact creature with flying until end of turn.
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BecomesCreatureSourceEffect
(new KolaghanMonumentToken(), "", Duration.EndOfTurn), new ManaCostsImpl<>("{4}{B}{R}")));
(new KolaghanMonumentToken(), CardType.ARTIFACT, Duration.EndOfTurn), new ManaCostsImpl<>("{4}{B}{R}")));
}
private KolaghanMonument(final KolaghanMonument card) {
@ -44,7 +44,7 @@ public final class KolaghanMonument extends CardImpl {
return new KolaghanMonument(this);
}
private class KolaghanMonumentToken extends TokenImpl {
private static class KolaghanMonumentToken extends TokenImpl {
KolaghanMonumentToken() {
super("", "4/4 black and red Dragon artifact creature with flying");
cardType.add(CardType.ARTIFACT);

View file

@ -89,7 +89,7 @@ class LairOfTheHydraEffect extends OneShotEffect {
new CreatureToken(xValue, xValue, "X/X green Hydra creature")
.withColor("G")
.withSubType(SubType.HYDRA),
"land", Duration.EndOfTurn), source
CardType.LAND, Duration.EndOfTurn), source
);
return true;
}

View file

@ -36,7 +36,7 @@ public final class LavaclawReaches extends CardImpl {
this.addAbility(new RedManaAbility());
// {1}{B}{R}: Until end of turn, Lavaclaw Reaches becomes a 2/2 black and red Elemental creature with ": This creature gets +X/+0 until end of turn." It's still a land.
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BecomesCreatureSourceEffect(new LavaclawReachesToken(), "land", Duration.EndOfTurn), new ManaCostsImpl<>("{1}{B}{R}")));
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BecomesCreatureSourceEffect(new LavaclawReachesToken(), CardType.LAND, Duration.EndOfTurn).withDurationRuleAtStart(true), new ManaCostsImpl<>("{1}{B}{R}")));
}
private LavaclawReaches(final LavaclawReaches card) {

View file

@ -38,7 +38,7 @@ public final class LevitatingStatue extends CardImpl {
this.addAbility(new SimpleActivatedAbility(new BecomesCreatureSourceEffect(
new CreatureToken(
1, 1, "1/1 Construct artifact creature", SubType.CONSTRUCT
).withType(CardType.ARTIFACT), "", Duration.EndOfTurn
).withType(CardType.ARTIFACT), CardType.ARTIFACT, Duration.EndOfTurn
), new GenericManaCost(2)));
}

View file

@ -35,7 +35,7 @@ public final class LumberingFalls extends CardImpl {
this.addAbility(new GreenManaAbility());
// {2}{G}{U}: Lumbering Falls becomes a 3/3 green and blue Elemental creature with hexproof until end of turn. It's still a land.
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BecomesCreatureSourceEffect(new LumberingFallsToken(), "land", Duration.EndOfTurn), new ManaCostsImpl<>("{2}{G}{U}")));
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BecomesCreatureSourceEffect(new LumberingFallsToken(), CardType.LAND, Duration.EndOfTurn), new ManaCostsImpl<>("{2}{G}{U}")));
}
private LumberingFalls(final LumberingFalls card) {

View file

@ -17,7 +17,6 @@ import mage.constants.SubType;
import mage.constants.Duration;
import mage.constants.Zone;
import mage.game.Game;
import mage.game.events.GameEvent;
import mage.game.permanent.token.TokenImpl;
import mage.players.Player;
import mage.util.CardUtil;
@ -32,7 +31,7 @@ public final class LurkingEvil extends CardImpl {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{B}{B}{B}");
// Pay half your life, rounded up: Lurking Evil becomes a 4/4 Horror creature with flying.
Effect effect = new BecomesCreatureSourceEffect(new LurkingEvilToken(), null, Duration.EndOfGame, true, false);
Effect effect = new BecomesCreatureSourceEffect(new LurkingEvilToken(), null, Duration.EndOfGame);
effect.setText("{this} becomes a 4/4 Phyrexian Horror creature with flying");
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, effect, new LurkingEvilCost()));
}

View file

@ -40,7 +40,7 @@ public final class LurkingJackals extends CardImpl {
class LurkingJackalsStateTriggeredAbility extends StateTriggeredAbility {
public LurkingJackalsStateTriggeredAbility() {
super(Zone.BATTLEFIELD, new BecomesCreatureSourceEffect(new LurkingJackalsToken(), "", Duration.Custom, true, false));
super(Zone.BATTLEFIELD, new BecomesCreatureSourceEffect(new LurkingJackalsToken(), null, Duration.Custom));
setTriggerPhrase("When an opponent has 10 or less life, if {this} is an enchantment, ");
}
@ -103,9 +103,9 @@ class LurkingJackalsStateTriggeredAbility extends StateTriggeredAbility {
class LurkingJackalsToken extends TokenImpl {
public LurkingJackalsToken() {
super("Dog", "3/2 Dog creature");
super("Dog", "3/2 Jackal creature");
cardType.add(CardType.CREATURE);
subtype.add(SubType.DOG);
subtype.add(SubType.JACKAL);
power = new MageInt(3);
toughness = new MageInt(2);
}

View file

@ -34,7 +34,7 @@ public final class LurkingSkirge extends CardImpl {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{B}");
// When a creature is put into an opponent's graveyard from the battlefield, if Lurking Skirge is an enchantment, Lurking Skirge becomes a 3/2 Imp creature with flying.
TriggeredAbility ability = new PutIntoGraveFromBattlefieldAllTriggeredAbility(new BecomesCreatureSourceEffect(new LurkingSkirgeToken(), "", Duration.WhileOnBattlefield, true, false), false, filter, false);
TriggeredAbility ability = new PutIntoGraveFromBattlefieldAllTriggeredAbility(new BecomesCreatureSourceEffect(new LurkingSkirgeToken(), null, Duration.WhileOnBattlefield), false, filter, false);
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, new SourceMatchesFilterCondition(StaticFilters.FILTER_PERMANENT_ENCHANTMENT),
"When a creature is put into an opponent's graveyard from the battlefield, if {this} is an enchantment, {this} becomes a 3/2 Phyrexian Imp creature with flying."));
}

View file

@ -39,7 +39,7 @@ public final class MishrasFactory extends CardImpl {
2, 2,
"2/2 Assembly-Worker artifact creature",
SubType.ASSEMBLY_WORKER
).withType(CardType.ARTIFACT), "land", Duration.EndOfTurn
).withType(CardType.ARTIFACT), CardType.LAND, Duration.EndOfTurn
), new GenericManaCost(1)));
// {tap}: Target Assembly-Worker creature gets +1/+1 until end of turn.

View file

@ -42,7 +42,7 @@ public final class MishrasFoundry extends CardImpl {
2, 2,
"2/2 Assembly-Worker artifact creature",
SubType.ASSEMBLY_WORKER
).withType(CardType.ARTIFACT), "land", Duration.EndOfTurn
).withType(CardType.ARTIFACT), CardType.LAND, Duration.EndOfTurn
), new GenericManaCost(2)));
// {1}, {T}: Target attacking Assembly-Worker gets +2/+2 until end of turn.

View file

@ -37,7 +37,7 @@ public final class MobilizedDistrict extends CardImpl {
// {4}: Mobilized District becomes a 3/3 Citizen creature with vigilance until end of turn. It's still a land. This ability costs {1} less to activate for each legendary creature and planeswalker you control.
Ability ability = new SimpleActivatedAbility(new BecomesCreatureSourceEffect(
new MobilizedDistrictToken(), "land", Duration.EndOfTurn
new MobilizedDistrictToken(), CardType.LAND, Duration.EndOfTurn
).setText("{this} becomes a 3/3 Citizen creature with vigilance until end of turn. " +
"It's still a land. This ability costs {1} less to activate " +
"for each legendary creature and planeswalker you control."

View file

@ -2,6 +2,7 @@ package mage.cards.m;
import java.util.UUID;
import mage.MageObject;
import mage.abilities.Ability;
import mage.abilities.common.ActivateIfConditionActivatedAbility;
import mage.abilities.common.SimpleActivatedAbility;
@ -21,13 +22,11 @@ import mage.cards.CardSetInfo;
import mage.constants.*;
import mage.filter.FilterCard;
import mage.filter.FilterPermanent;
import mage.filter.StaticFilters;
import mage.filter.common.FilterControlledLandPermanent;
import mage.filter.common.FilterLandCard;
import mage.filter.predicate.Predicates;
import mage.game.Game;
import mage.game.permanent.token.custom.CreatureToken;
import mage.players.Player;
import mage.target.common.TargetCardInLibrary;
/**
@ -64,9 +63,8 @@ public final class MonumentToPerfection extends CardImpl {
).withType(CardType.ARTIFACT)
.withAbility(IndestructibleAbility.getInstance())
.withAbility(new ToxicAbility(9)),
null, Duration.Custom, true,
false, null, null, true
), new GenericManaCost(3), MonumentToPerfectionCondition.instance
CardType.ARTIFACT, Duration.Custom
).andLoseAbilities(true), new GenericManaCost(3), MonumentToPerfectionCondition.instance
).addHint(MonumentToPerfectionValue.getHint()));
}
@ -102,7 +100,7 @@ enum MonumentToPerfectionValue implements DynamicValue {
.getBattlefield()
.getActivePermanents(filter, sourceAbility.getControllerId(), game)
.stream()
.map(permanent -> permanent.getName())
.map(MageObject::getName)
.filter(s -> s.length() > 0)
.distinct()
.mapToInt(x -> 1)
@ -136,4 +134,4 @@ enum MonumentToPerfectionCondition implements Condition {
public String toString() {
return "there are nine or more lands with different names among the basic, Sphere, and Locus lands you control";
}
}
}

View file

@ -27,7 +27,7 @@ public final class Mutavault extends CardImpl {
this.addAbility(new ColorlessManaAbility());
// {1}: Mutavault becomes a 2/2 creature with all creature types until end of turn. It's still a land.
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD,
new BecomesCreatureSourceEffect(new MutavaultToken(), "land", Duration.EndOfTurn),
new BecomesCreatureSourceEffect(new MutavaultToken(), CardType.LAND, Duration.EndOfTurn),
new ManaCostsImpl<>("{1}")));
}

View file

@ -44,8 +44,7 @@ public final class MythRealized extends CardImpl {
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new AddCountersSourceEffect(CounterType.LORE.createInstance()), new ManaCostsImpl<>("{2}{W}")));
// {W}: Until end of turn, Myth Realized becomes a Monk Avatar creature in addition to its other types and gains "This creature's power and toughness are each equal to the number of lore counters on it."
Effect effect = new BecomesCreatureSourceEffect(new MythRealizedToken(), null, Duration.EndOfTurn);
effect.setText("Until end of turn, {this} becomes a Monk Avatar creature in addition to its other types ");
Effect effect = new BecomesCreatureSourceEffect(new MythRealizedToken(), CardType.ENCHANTMENT, Duration.EndOfTurn).withDurationRuleAtStart(true);
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, effect, new ManaCostsImpl<>("{W}"));
ability.addEffect(new SetBasePowerToughnessSourceEffect(loreCounterCount, loreCounterCount, Duration.EndOfTurn, SubLayer.SetPT_7b).setText("and gains \"This creature's power and toughness are each equal to the number of lore counters on it.\""));
@ -65,7 +64,7 @@ public final class MythRealized extends CardImpl {
class MythRealizedToken extends TokenImpl {
public MythRealizedToken() {
super("", "Monk Avatar creature in addition to its other types and gains \"This creature's power and toughness are each equal to the number of lore counters on it.\"");
super("", "Monk Avatar creature");
cardType.add(CardType.CREATURE);
subtype.add(SubType.MONK);
subtype.add(SubType.AVATAR);

View file

@ -32,7 +32,7 @@ public final class NantukoMonastery extends CardImpl {
this.addAbility(new ColorlessManaAbility());
// Threshold - {G}{W}: Nantuko Monastery becomes a 4/4 green and white Insect Monk creature with first strike until end of turn. It's still a land. Activate this ability only if seven or more cards are in your graveyard.
Ability ability = new ConditionalActivatedAbility(Zone.BATTLEFIELD, new BecomesCreatureSourceEffect(
new NantukoMonasteryToken(), "land", Duration.EndOfTurn), new ManaCostsImpl<>("{G}{W}"),
new NantukoMonasteryToken(), CardType.LAND, Duration.EndOfTurn), new ManaCostsImpl<>("{G}{W}"),
new CardsInControllerGraveyardCondition(7));
ability.setAbilityWord(AbilityWord.THRESHOLD);
this.addAbility(ability);

View file

@ -36,7 +36,7 @@ public final class NeedleSpires extends CardImpl {
this.addAbility(new WhiteManaAbility());
// {2}{R}{W}: Needle Spires becomes a 2/1 red and white Elemental creature with double strike until end of turn. It's still a land.
Effect effect = new BecomesCreatureSourceEffect(new NeedleSpiresToken(), "land", Duration.EndOfTurn);
Effect effect = new BecomesCreatureSourceEffect(new NeedleSpiresToken(), CardType.LAND, Duration.EndOfTurn);
effect.setText("{this} becomes a 2/1 red and white Elemental creature with double strike until end of turn. It's still a land");
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, effect, new ManaCostsImpl<>("{2}{R}{W}")));
}

View file

@ -59,7 +59,7 @@ public final class NogiDracoZealot extends CardImpl {
new CreatureToken(5, 5, "Dragon with base power and toughness 5/5 and gains flying")
.withSubType(SubType.DRAGON)
.withAbility(FlyingAbility.getInstance()),
"", Duration.EndOfTurn), false
CardType.CREATURE, Duration.EndOfTurn), false
), condition, "Whenever {this} attacks, if you control three or more Dragons, until end of turn, " +
"{this} becomes a Dragon with base power and toughness 5/5 and gains flying"
);

View file

@ -32,7 +32,7 @@ public final class OjutaiMonument extends CardImpl {
// {4}{W}{U}: Ojutai Monument becomes a 4/4 white and blue Dragon artifact creature with flying until end of turn.
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BecomesCreatureSourceEffect
(new OjutaiMonumentToken(), "", Duration.EndOfTurn), new ManaCostsImpl<>("{4}{W}{U}")));
(new OjutaiMonumentToken(), CardType.ARTIFACT, Duration.EndOfTurn), new ManaCostsImpl<>("{4}{W}{U}")));
}
private OjutaiMonument(final OjutaiMonument card) {

View file

@ -36,7 +36,7 @@ public final class OpalAcrolith extends CardImpl {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{W}");
// Whenever an opponent casts a creature spell, if Opal Acrolith is an enchantment, Opal Acrolith becomes a 2/4 Soldier creature.
TriggeredAbility ability = new SpellCastOpponentTriggeredAbility(new BecomesCreatureSourceEffect(new OpalAcrolithToken(), "", Duration.WhileOnBattlefield, true, false),
TriggeredAbility ability = new SpellCastOpponentTriggeredAbility(new BecomesCreatureSourceEffect(new OpalAcrolithToken(), null, Duration.WhileOnBattlefield),
filter, false);
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, new SourceMatchesFilterCondition(StaticFilters.FILTER_PERMANENT_ENCHANTMENT),
"Whenever an opponent casts a creature spell, if Opal Acrolith is an enchantment, Opal Acrolith becomes a 2/4 Soldier creature."));

View file

@ -31,7 +31,7 @@ public final class OpalArchangel extends CardImpl {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{4}{W}");
// When an opponent casts a creature spell, if Opal Archangel is an enchantment, Opal Archangel becomes a 5/5 Angel creature with flying and vigilance.
TriggeredAbility ability = new SpellCastOpponentTriggeredAbility(new BecomesCreatureSourceEffect(new OpalArchangelToken(), "", Duration.WhileOnBattlefield, true, false),
TriggeredAbility ability = new SpellCastOpponentTriggeredAbility(new BecomesCreatureSourceEffect(new OpalArchangelToken(), null, Duration.WhileOnBattlefield),
new FilterCreatureSpell(), false);
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, new SourceMatchesFilterCondition(StaticFilters.FILTER_PERMANENT_ENCHANTMENT),
"When an opponent casts a creature spell, if {this} is an enchantment, {this} becomes a 5/5 Angel creature with flying and vigilance."));

View file

@ -40,7 +40,7 @@ public final class OpalAvenger extends CardImpl {
class OpalAvengerStateTriggeredAbility extends StateTriggeredAbility {
public OpalAvengerStateTriggeredAbility() {
super(Zone.BATTLEFIELD, new BecomesCreatureSourceEffect(new OpalAvengerToken(), "", Duration.Custom, true, false));
super(Zone.BATTLEFIELD, new BecomesCreatureSourceEffect(new OpalAvengerToken(), null, Duration.Custom));
setTriggerPhrase("When you have 10 or less life, if {this} is an enchantment, ");
}

View file

@ -29,7 +29,7 @@ public final class OpalCaryatid extends CardImpl {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{W}");
// When an opponent casts a creature spell, if Opal Caryatid is an enchantment, Opal Caryatid becomes a 2/2 Soldier creature.
TriggeredAbility ability = new SpellCastOpponentTriggeredAbility(new BecomesCreatureSourceEffect(new OpalCaryatidSoldierToken(), "", Duration.WhileOnBattlefield, true, false),
TriggeredAbility ability = new SpellCastOpponentTriggeredAbility(new BecomesCreatureSourceEffect(new OpalCaryatidSoldierToken(), null, Duration.WhileOnBattlefield),
new FilterCreatureSpell(), false);
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, new SourceMatchesFilterCondition(StaticFilters.FILTER_PERMANENT_ENCHANTMENT),
"When an opponent casts a creature spell, if {this} is an enchantment, {this} becomes a 2/2 Soldier creature."));

View file

@ -30,7 +30,7 @@ public final class OpalChampion extends CardImpl {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{W}");
// When an opponent casts a creature spell, if Opal Champion is an enchantment, Opal Champion becomes a 3/3 Knight creature with first strike.
TriggeredAbility ability = new SpellCastOpponentTriggeredAbility(new BecomesCreatureSourceEffect(new OpalChampionKnight(), "", Duration.WhileOnBattlefield, true, false),
TriggeredAbility ability = new SpellCastOpponentTriggeredAbility(new BecomesCreatureSourceEffect(new OpalChampionKnight(), null, Duration.WhileOnBattlefield),
new FilterCreatureSpell(), false);
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, new SourceMatchesFilterCondition(StaticFilters.FILTER_PERMANENT_ENCHANTMENT),
"When an opponent casts a creature spell, if {this} is an enchantment, {this} becomes a 3/3 Knight creature with first strike."));

View file

@ -30,7 +30,7 @@ public final class OpalGargoyle extends CardImpl {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{W}");
// When an opponent casts a creature spell, if Opal Gargoyle is an enchantment, Opal Gargoyle becomes a 2/2 Gargoyle creature with flying.
TriggeredAbility ability = new SpellCastOpponentTriggeredAbility(new BecomesCreatureSourceEffect(new OpalGargoyleToken(), "", Duration.WhileOnBattlefield, true, false),
TriggeredAbility ability = new SpellCastOpponentTriggeredAbility(new BecomesCreatureSourceEffect(new OpalGargoyleToken(), null, Duration.WhileOnBattlefield),
new FilterCreatureSpell(), false);
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, new SourceMatchesFilterCondition(StaticFilters.FILTER_PERMANENT_ENCHANTMENT),
"When an opponent casts a creature spell, if {this} is an enchantment, {this} becomes a 2/2 Gargoyle creature with flying."));

View file

@ -32,7 +32,7 @@ public final class OpalGuardian extends CardImpl {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{W}{W}{W}");
// When an opponent casts a creature spell, if Opal Guardian is an enchantment, Opal Guardian becomes a 3/4 Gargoyle creature with flying and protection from red.
TriggeredAbility ability = new SpellCastOpponentTriggeredAbility(new BecomesCreatureSourceEffect(new OpalGuardianGargoyle(), "", Duration.WhileOnBattlefield, true, false),
TriggeredAbility ability = new SpellCastOpponentTriggeredAbility(new BecomesCreatureSourceEffect(new OpalGuardianGargoyle(), null, Duration.WhileOnBattlefield),
new FilterCreatureSpell(), false);
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, new SourceMatchesFilterCondition(StaticFilters.FILTER_PERMANENT_ENCHANTMENT),
"When an opponent casts a creature spell, if {this} is an enchantment, {this} becomes a 3/4 Gargoyle creature with flying and protection from red."));

View file

@ -30,7 +30,7 @@ public final class OrzhovKeyrune extends CardImpl {
this.addAbility(new BlackManaAbility());
// {W}{B}: Orzhov Keyrune becomes a 1/4 white and black Thrull artifact creature with lifelink until end of turn.
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BecomesCreatureSourceEffect(new OrzhovKeyruneToken(), "", Duration.EndOfTurn), new ManaCostsImpl<>("{W}{B}")));
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BecomesCreatureSourceEffect(new OrzhovKeyruneToken(), CardType.ARTIFACT, Duration.EndOfTurn), new ManaCostsImpl<>("{W}{B}")));
}
private OrzhovKeyrune(final OrzhovKeyrune card) {

View file

@ -37,7 +37,7 @@ public final class PhyrexianTotem extends CardImpl {
this.addAbility(new BlackManaAbility());
// {2}{B}: {this} becomes a 5/5 black Horror artifact creature with trample until end of turn.
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BecomesCreatureSourceEffect(
new PhyrexianTotemToken(), "", Duration.EndOfTurn), new ManaCostsImpl<>("{2}{B}")));
new PhyrexianTotemToken(), CardType.ARTIFACT, Duration.EndOfTurn), new ManaCostsImpl<>("{2}{B}")));
// Whenever {this} is dealt damage, if it's a creature, sacrifice that many permanents.
this.addAbility(new PhyrexianTotemTriggeredAbility());
}
@ -116,4 +116,4 @@ class PhyrexianTotemTriggeredAbility extends TriggeredAbilityImpl {
public String getRule() {
return "Whenever {this} is dealt damage, if it's a creature, sacrifice that many permanents.";
}
}
}

View file

@ -40,7 +40,7 @@ public final class RagingRavine extends CardImpl {
this.addAbility(new RedManaAbility());
Effect effect = new BecomesCreatureSourceEffect(
new CreatureToken(3, 3, "3/3 red and green Elemental creature", SubType.ELEMENTAL).withColor("RG"),
"land", Duration.EndOfTurn);
CardType.LAND, Duration.EndOfTurn);
effect.setText("Until end of turn, {this} becomes a 3/3 red and green Elemental creature");
// {2}{R}{G}: Until end of turn, Raging Ravine becomes a 3/3 red and green Elemental creature with "Whenever this creature attacks, put a +1/+1 counter on it." It's still a land.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, effect, new ManaCostsImpl<>("{2}{R}{G}"));
@ -59,4 +59,4 @@ public final class RagingRavine extends CardImpl {
return new RagingRavine(this);
}
}
}

View file

@ -30,7 +30,7 @@ public final class RakdosKeyrune extends CardImpl {
this.addAbility(new RedManaAbility());
// {B}{R}: Rakdos Keyrune becomes a 3/1 black and red Devil artifact creature with first strike until end of turn.
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BecomesCreatureSourceEffect(new RakdosKeyruneToken(), "", Duration.EndOfTurn), new ManaCostsImpl<>("{B}{R}")));
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BecomesCreatureSourceEffect(new RakdosKeyruneToken(), CardType.ARTIFACT, Duration.EndOfTurn), new ManaCostsImpl<>("{B}{R}")));
}
private RakdosKeyrune(final RakdosKeyrune card) {

View file

@ -24,9 +24,7 @@ public final class ReptilianReflection extends CardImpl {
// Whenever you cycle a card, Reptilian Reflection becomes a 5/4 Dinosaur creature with trample and haste in addition to its other types until end of turn.
this.addAbility(new CycleControllerTriggeredAbility(new BecomesCreatureSourceEffect(
new ReptilianReflectionToken(), "enchantment", Duration.EndOfTurn
).setText("have {this} become a 5/4 Dinosaur creature with trample and haste " +
"in addition to its other types until end of turn"), true));
new ReptilianReflectionToken(), CardType.ENCHANTMENT, Duration.EndOfTurn), true));
}
private ReptilianReflection(final ReptilianReflection card) {

View file

@ -37,8 +37,7 @@ public final class Riddleform extends CardImpl {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{U}");
// Whenever you cast a noncreature spell, you may have Riddleform become a 3/3 Sphinx creature with flying in addition to its other types until end of turn.
Effect effect = new BecomesCreatureSourceEffect(new RiddleformToken(), "", Duration.EndOfTurn);
effect.setText("have {this} become a 3/3 Sphinx creature with flying in addition to its other types until end of turn.");
Effect effect = new BecomesCreatureSourceEffect(new RiddleformToken(), CardType.ENCHANTMENT, Duration.EndOfTurn);
this.addAbility(new SpellCastControllerTriggeredAbility(Zone.BATTLEFIELD, effect, filterNonCreature, true, true));
// {2}{U}: Scry 1.

View file

@ -24,7 +24,7 @@ public final class RustedRelic extends CardImpl {
// Metalcraft Rusted Relic is a 5/5 Golem artifact creature as long as you control three or more artifacts.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD,
new ConditionalContinuousEffect(
new BecomesCreatureSourceEffect(new RustedRelicToken(), "artifact", Duration.WhileOnBattlefield),
new BecomesCreatureSourceEffect(new RustedRelicToken(), CardType.ARTIFACT, Duration.WhileOnBattlefield),
MetalcraftCondition.instance,
"{this} is a 5/5 Golem artifact creature as long as you control three or more artifacts"))
.setAbilityWord(AbilityWord.METALCRAFT)
@ -59,4 +59,4 @@ class RustedRelicToken extends TokenImpl {
public RustedRelicToken copy() {
return new RustedRelicToken(this);
}
}
}

View file

@ -41,7 +41,7 @@ public final class SanguineStatuette extends CardImpl {
.withType(CardType.ARTIFACT)
.withSubType(SubType.VAMPIRE)
.withAbility(HasteAbility.getInstance()),
"", Duration.EndOfTurn
CardType.ARTIFACT, Duration.EndOfTurn
).setText("have {this} become a 3/3 Vampire artifact creature with haste until end of turn"), filter, false, true));
}

View file

@ -29,7 +29,7 @@ public final class SelesnyaKeyrune extends CardImpl {
this.addAbility(new WhiteManaAbility());
// {G}{W}: Selesnya Keyrune becomes a 3/3 green and white Wolf artifact creature until end of turn.
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BecomesCreatureSourceEffect(new SelesnyaKeyruneToken(), "", Duration.EndOfTurn), new ManaCostsImpl<>("{G}{W}")));
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BecomesCreatureSourceEffect(new SelesnyaKeyruneToken(), CardType.ARTIFACT, Duration.EndOfTurn), new ManaCostsImpl<>("{G}{W}")));
}
private SelesnyaKeyrune(final SelesnyaKeyrune card) {

View file

@ -36,7 +36,7 @@ public final class ShamblingVent extends CardImpl {
// {1}{W}{B}: Shambling Vent becomes a 2/3 white and black Elemental creature with lifelink until end of turn. It's still a land.
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BecomesCreatureSourceEffect(
new ShamblingVentToken(), "land", Duration.EndOfTurn), new ManaCostsImpl<>("{1}{W}{B}")));
new ShamblingVentToken(), CardType.LAND, Duration.EndOfTurn), new ManaCostsImpl<>("{1}{W}{B}")));
}
private ShamblingVent(final ShamblingVent card) {
@ -68,4 +68,4 @@ class ShamblingVentToken extends TokenImpl {
public ShamblingVentToken copy() {
return new ShamblingVentToken(this);
}
}
}

Some files were not shown because too many files have changed in this diff Show more