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

View file

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

View file

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

View file

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

View file

@ -27,7 +27,7 @@ import mage.target.TargetPermanent;
*/ */
public final class BlinkmothNexus extends CardImpl { public final class BlinkmothNexus extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("Blinkmoth"); private static final FilterPermanent filter = new FilterPermanent("Blinkmoth creature");
static { static {
filter.add(SubType.BLINKMOTH.getPredicate()); filter.add(SubType.BLINKMOTH.getPredicate());
@ -45,7 +45,7 @@ public final class BlinkmothNexus extends CardImpl {
.withSubType(SubType.BLINKMOTH) .withSubType(SubType.BLINKMOTH)
.withType(CardType.ARTIFACT) .withType(CardType.ARTIFACT)
.withAbility(FlyingAbility.getInstance()), .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. // {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)); 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. // 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( this.addAbility(new SimpleActivatedAbility(new BecomesCreatureSourceEffect(
new BogardanDragonheartToken(), null, Duration.EndOfTurn, false, new BogardanDragonheartToken(), CardType.CREATURE, Duration.EndOfTurn
false, null, null, false
), new SacrificeTargetCost(new TargetControlledPermanent(StaticFilters.FILTER_CONTROLLED_ANOTHER_CREATURE)))); ), new SacrificeTargetCost(new TargetControlledPermanent(StaticFilters.FILTER_CONTROLLED_ANOTHER_CREATURE))));
} }

View file

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

View file

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

View file

@ -41,7 +41,7 @@ public final class CelestialColonnade extends CardImpl {
.withSubType(SubType.ELEMENTAL) .withSubType(SubType.ELEMENTAL)
.withAbility(FlyingAbility.getInstance()) .withAbility(FlyingAbility.getInstance())
.withAbility(VigilanceAbility.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) { private CelestialColonnade(final CelestialColonnade card) {
@ -53,4 +53,4 @@ public final class CelestialColonnade extends CardImpl {
return new CelestialColonnade(this); return new CelestialColonnade(this);
} }
} }

View file

@ -45,7 +45,7 @@ public final class ChimericEgg extends CardImpl {
.withSubType(SubType.CONSTRUCT) .withSubType(SubType.CONSTRUCT)
.withType(CardType.ARTIFACT) .withType(CardType.ARTIFACT)
.withAbility(TrampleAbility.getInstance()), .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) { 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") new CreatureToken(3, 3, "3/3 Turtle artifact creature")
.withSubType(SubType.TURTLE) .withSubType(SubType.TURTLE)
.withType(CardType.ARTIFACT), .withType(CardType.ARTIFACT),
"", Duration.EndOfTurn)); CardType.ARTIFACT, Duration.EndOfTurn));
this.addAbility(ability); this.addAbility(ability);
} }
@ -44,4 +44,4 @@ public final class ChimericIdol extends CardImpl {
public ChimericIdol copy() { public ChimericIdol copy() {
return new ChimericIdol(this); 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.abilities.effects.common.continuous.SetBasePowerToughnessSourceEffect;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.*;
import mage.constants.SubType;
import mage.constants.Duration;
import mage.constants.Zone;
import mage.counters.CounterType; import mage.counters.CounterType;
import mage.game.permanent.token.custom.CreatureToken; 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()))); 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." // {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( 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.\"") 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) .withType(CardType.ARTIFACT)
.withSubType(SubType.CONSTRUCT) .withSubType(SubType.CONSTRUCT)
.withAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new SetBasePowerToughnessSourceEffect(new CountersSourceCount(CounterType.CHARGE)))), .withAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new SetBasePowerToughnessSourceEffect(count, count, Duration.WhileOnBattlefield, SubLayer.SetPT_7b))),
"", Duration.EndOfTurn, false, true), new GenericManaCost(1))); CardType.ARTIFACT, Duration.EndOfTurn).withDurationRuleAtStart(true), new GenericManaCost(1)));
} }
private ChimericMass(final ChimericMass card) { private ChimericMass(final ChimericMass card) {
@ -50,4 +47,4 @@ public final class ChimericMass extends CardImpl {
return new ChimericMass(this); return new ChimericMass(this);
} }
} }

View file

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

View file

@ -39,7 +39,7 @@ public final class ChronatogTotem extends CardImpl {
.withColor("U") .withColor("U")
.withSubType(SubType.ATOG) .withSubType(SubType.ATOG)
.withType(CardType.ARTIFACT), .withType(CardType.ARTIFACT),
"", Duration.EndOfTurn CardType.ARTIFACT, Duration.EndOfTurn
), new ManaCostsImpl<>("{1}{U}"))); ), 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. // {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( game.addEffect(new BecomesCreatureSourceEffect(new CreatureToken(
0, 0, "0/0 Elemental creature" 0, 0, "0/0 Elemental creature"
).withSubType(SubType.ELEMENTAL), "land", Duration.EndOfTurn), source); ).withSubType(SubType.ELEMENTAL), CardType.LAND, Duration.EndOfTurn), source);
return true; 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. // {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( 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") .withColor("BU")
.withSubType(SubType.ELEMENTAL) .withSubType(SubType.ELEMENTAL)
.withAbility(new CantBeBlockedSourceAbility()), .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) { private CreepingTarPit(final CreepingTarPit card) {

View file

@ -1,10 +1,10 @@
package mage.cards.d; package mage.cards.d;
import mage.abilities.Ability; import mage.MageInt;
import mage.abilities.common.DiesAttachedTriggeredAbility; import mage.abilities.common.DiesAttachedTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.effects.ContinuousEffectImpl; import mage.abilities.effects.common.continuous.BecomesCreatureSourceEffect;
import mage.abilities.effects.common.continuous.BoostEquippedEffect; import mage.abilities.effects.common.continuous.BoostEquippedEffect;
import mage.abilities.keyword.EquipAbility; import mage.abilities.keyword.EquipAbility;
import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.FlyingAbility;
@ -12,11 +12,10 @@ import mage.abilities.keyword.WardAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.*; import mage.constants.*;
import mage.game.Game; import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.Permanent; import mage.target.common.TargetControlledCreaturePermanent;
import java.util.UUID; import java.util.UUID;
import mage.target.common.TargetControlledCreaturePermanent;
/** /**
* @author TheElk801 * @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. // 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( 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, ")); ).setTriggerPhrase("When equipped creature dies, "));
// Equip {1} // Equip {1}
@ -50,65 +49,25 @@ public final class DancingSword extends CardImpl {
} }
} }
class DancingSwordEffect extends ContinuousEffectImpl { class DancingSwordToken extends TokenImpl {
DancingSwordEffect() { public DancingSwordToken() {
super(Duration.Custom, Outcome.Benefit); super("", "2/1 Construct artifact creature with flying and ward {1}. If you do, it isn't an Equipment");
staticText = "you may have {this} become a 2/1 Construct artifact creature " + cardType.add(CardType.ARTIFACT);
"with flying and ward {1}. If you do, it isn't an Equipment"; 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) { private DancingSwordToken(final DancingSwordToken token) {
super(effect); super(token);
} }
@Override public DancingSwordToken copy() {
public DancingSwordEffect copy() { return new DancingSwordToken(this);
return new DancingSwordEffect(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") new CreatureToken(2, 2, "2/2 Beast artifact creature")
.withSubType(SubType.BEAST) .withSubType(SubType.BEAST)
.withType(CardType.ARTIFACT), .withType(CardType.ARTIFACT),
"", Duration.EndOfTurn), new GenericManaCost(3))); CardType.ARTIFACT, Duration.EndOfTurn), new GenericManaCost(3)));
} }
private DarksteelBrute(final DarksteelBrute card) { private DarksteelBrute(final DarksteelBrute card) {
@ -44,4 +44,4 @@ public final class DarksteelBrute extends CardImpl {
return new DarksteelBrute(this); return new DarksteelBrute(this);
} }
} }

View file

@ -28,7 +28,7 @@ public final class DaxossTorment extends CardImpl {
.withSubType(SubType.DEMON) .withSubType(SubType.DEMON)
.withAbility(FlyingAbility.getInstance()) .withAbility(FlyingAbility.getInstance())
.withAbility(HasteAbility.getInstance()), .withAbility(HasteAbility.getInstance()),
"previous types", Duration.EndOfTurn))); CardType.ENCHANTMENT, Duration.EndOfTurn)));
} }
private DaxossTorment(final DaxossTorment card) { 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." "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( 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") .withColor("R")
.withSubType(SubType.GOBLIN) .withSubType(SubType.GOBLIN)
.withAbility(ability), .withAbility(ability),
"land", Duration.EndOfTurn), new ManaCostsImpl<>("{3}{R}"))); CardType.LAND, Duration.EndOfTurn).withDurationRuleAtStart(true), new ManaCostsImpl<>("{3}{R}")));
} }
private DenOfTheBugbear(final DenOfTheBugbear card) { private DenOfTheBugbear(final DenOfTheBugbear card) {

View file

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

View file

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

View file

@ -25,7 +25,7 @@ public final class DreadStatuary extends CardImpl {
public DreadStatuary(UUID ownerId, CardSetInfo setInfo) { public DreadStatuary(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},null); super(ownerId,setInfo,new CardType[]{CardType.LAND},null);
this.addAbility(new ColorlessManaAbility()); 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) { 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. // {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 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) { private DromokaMonument(final DromokaMonument card) {
@ -44,7 +44,7 @@ public final class DromokaMonument extends CardImpl {
return new DromokaMonument(this); return new DromokaMonument(this);
} }
private class DromokaMonumentToken extends TokenImpl { private static class DromokaMonumentToken extends TokenImpl {
DromokaMonumentToken() { DromokaMonumentToken() {
super("", "4/4 green and white Dragon artifact creature with flying"); super("", "4/4 green and white Dragon artifact creature with flying");
cardType.add(CardType.ARTIFACT); cardType.add(CardType.ARTIFACT);

View file

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

View file

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

View file

@ -28,7 +28,7 @@ public class EyeOfMalcator extends CardImpl {
new BecomesCreatureSourceEffect( new BecomesCreatureSourceEffect(
new CreatureToken( new CreatureToken(
4, 4, "4/4 Phyrexian Eye artifact creature", SubType.PHYREXIAN, SubType.EYE 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"), ).setText("{this} becomes a 4/4 Phyrexian Eye artifact creature until end of turn"),
StaticFilters.FILTER_CONTROLLED_ANOTHER_ARTIFACT StaticFilters.FILTER_CONTROLLED_ANOTHER_ARTIFACT
).setTriggerPhrase("Whenever another artifact enters the battlefield under your control, ")); ).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. // {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( 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}"))); ).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},""); super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
this.addAbility(new EntersBattlefieldTappedAbility()); this.addAbility(new EntersBattlefieldTappedAbility());
this.addAbility(new BlueManaAbility()); 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) { private FaerieConclave(final FaerieConclave card) {

View file

@ -32,7 +32,7 @@ public final class ForbiddingWatchtower extends CardImpl {
this.addAbility(new WhiteManaAbility()); this.addAbility(new WhiteManaAbility());
// {1}{W}: Forbidding Watchtower becomes a 1/5 white Soldier creature until end of turn. It's still a land. // {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) { private ForbiddingWatchtower(final ForbiddingWatchtower card) {

View file

@ -36,7 +36,7 @@ public final class ForiysianTotem extends CardImpl {
this.addAbility(new RedManaAbility()); this.addAbility(new RedManaAbility());
// {4}{R}: Foriysian Totem becomes a 4/4 red Giant artifact creature with trample until end of turn. // {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. // 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))); 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. // {3}: Fountain of Ichor becomes a 3/3 Dinosaur artifact creature until end of turn.
this.addAbility(new SimpleActivatedAbility(new BecomesCreatureSourceEffect( this.addAbility(new SimpleActivatedAbility(new BecomesCreatureSourceEffect(
new FountainOfIchorToken(), "", Duration.EndOfTurn new FountainOfIchorToken(), CardType.ARTIFACT, Duration.EndOfTurn
), new GenericManaCost(3))); ), 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. // {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( this.addAbility(new SimpleActivatedAbility(new BecomesCreatureSourceEffect(
new FrostwalkBastionToken(), "land", Duration.EndOfTurn new FrostwalkBastionToken(), CardType.LAND, Duration.EndOfTurn
), new ManaCostsImpl<>("{1}{S}"))); ).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. // 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( Ability ability = new DealsDamageToACreatureTriggeredAbility(
@ -75,4 +75,4 @@ class FrostwalkBastionToken extends TokenImpl {
public FrostwalkBastionToken copy() { public FrostwalkBastionToken copy() {
return new FrostwalkBastionToken(this); return new FrostwalkBastionToken(this);
} }
} }

View file

@ -29,7 +29,7 @@ public final class GhituEncampment extends CardImpl {
this.addAbility(new EntersBattlefieldTappedAbility()); this.addAbility(new EntersBattlefieldTappedAbility());
this.addAbility(new RedManaAbility()); this.addAbility(new RedManaAbility());
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, 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}"))); new ManaCostsImpl<>("{1}{R}")));
} }

View file

@ -34,7 +34,7 @@ public final class GideonAllyOfZendikar extends CardImpl {
this.setStartingLoyalty(4); 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. // +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 effect = new PreventAllDamageToSourceEffect(Duration.EndOfTurn);
effect.setText("Prevent all damage that would be dealt to him this turn"); effect.setText("Prevent all damage that would be dealt to him this turn");
ability.addEffect(effect); ability.addEffect(effect);

View file

@ -60,7 +60,7 @@ public final class GideonBattleForged extends CardImpl {
this.addAbility(loyaltyAbility); 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. // 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 = new PreventAllDamageToSourceEffect(Duration.EndOfTurn);
effect.setText("Prevent all damage that would be dealt to him this turn"); effect.setText("Prevent all damage that would be dealt to him this turn");
ability3.addEffect(effect); 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. // 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( this.addAbility(new SimpleStaticAbility(new ConditionalContinuousEffect(
new BecomesCreatureSourceEffect( new BecomesCreatureSourceEffect(
new GideonBlackbladeToken(), "planeswalker", Duration.WhileOnBattlefield new GideonBlackbladeToken(), CardType.PLANESWALKER, Duration.WhileOnBattlefield
), MyTurnCondition.instance, "As long as it's your turn, " + ), MyTurnCondition.instance, "As long as it's your turn, " +
"{this} is a 4/4 Human Soldier creature with indestructible that's still a planeswalker." "{this} is a 4/4 Human Soldier creature with indestructible that's still a planeswalker."
)).addHint(MyTurnHint.instance)); )).addHint(MyTurnHint.instance));
@ -165,4 +165,4 @@ class GideonBlackbladeEffect extends OneShotEffect {
} }
return true; 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. // 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)); LockedInDynamicValue loyaltyCount = new LockedInDynamicValue(new CountersSourceCount(CounterType.LOYALTY));
LoyaltyAbility ability2 = new LoyaltyAbility(new BecomesCreatureSourceEffect( 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); .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")); ability2.addEffect(new PreventAllDamageToSourceEffect(Duration.EndOfTurn).setText("prevent all damage that would be dealt to him this turn"));
this.addAbility(ability2); this.addAbility(ability2);

View file

@ -51,7 +51,7 @@ public final class GideonJura extends CardImpl {
this.addAbility(ability2); 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. // 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 effect = new PreventAllDamageToSourceEffect(Duration.EndOfTurn);
effect.setText("Prevent all damage that would be dealt to him this turn"); effect.setText("Prevent all damage that would be dealt to him this turn");
ability3.addEffect(effect); 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. // 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. // 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 = new PreventAllDamageToSourceEffect(Duration.EndOfTurn);
effect.setText("Prevent all damage that would be dealt to him this turn"); effect.setText("Prevent all damage that would be dealt to him this turn");
ability.addEffect(effect); ability.addEffect(effect);

View file

@ -42,7 +42,7 @@ public final class GideonOfTheTrials extends CardImpl {
this.addAbility(ability); 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. // 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 = new PreventAllDamageToSourceEffect(Duration.EndOfTurn);
effect.setText("Prevent all damage that would be dealt to him this turn"); effect.setText("Prevent all damage that would be dealt to him this turn");
ability.addEffect(effect); 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. // +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( Ability ability = new LoyaltyAbility(new BecomesCreatureSourceEffect(
new GideonTheOathswornToken(), "planeswalker", Duration.EndOfTurn new GideonTheOathswornToken(), CardType.PLANESWALKER, Duration.EndOfTurn
), 2); ), 2);
ability.addEffect(new PreventAllDamageToSourceEffect( ability.addEffect(new PreventAllDamageToSourceEffect(
Duration.EndOfTurn 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. // 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( 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. // {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) { public GlintHawkIdol (final GlintHawkIdol card) {

View file

@ -30,7 +30,7 @@ public final class GolgariKeyrune extends CardImpl {
this.addAbility(new GreenManaAbility()); this.addAbility(new GreenManaAbility());
// {B}{G}: Golgari Keyrune becomes a 2/2 black and green Insect artifact creature with deathtouch until end of turn. // {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) { private GolgariKeyrune(final GolgariKeyrune card) {

View file

@ -31,7 +31,7 @@ public final class GruulKeyrune extends CardImpl {
this.addAbility(new GreenManaAbility()); this.addAbility(new GreenManaAbility());
// {R}{G}: Gruul Keyrune becomes a 3/2 red and green Beast artifact creature with trample until end of turn. // {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) { 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))); 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. // {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) { private GruulWarPlow(final GruulWarPlow card) {

View file

@ -30,7 +30,7 @@ public final class GuardianIdol extends CardImpl {
// {tap}: Add {C}. // {tap}: Add {C}.
this.addAbility(new ColorlessManaAbility()); this.addAbility(new ColorlessManaAbility());
// {2}: Guardian Idol becomes a 2/2 Golem artifact creature until end of turn. // {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) { private GuardianIdol(final GuardianIdol card) {
@ -46,7 +46,7 @@ public final class GuardianIdol extends CardImpl {
class GuardianIdolGolemToken extends TokenImpl { class GuardianIdolGolemToken extends TokenImpl {
public GuardianIdolGolemToken() { public GuardianIdolGolemToken() {
super("Golem", "2/2 Golem artifact creature token"); super("Golem", "2/2 Golem artifact creature");
cardType.add(CardType.ARTIFACT); cardType.add(CardType.ARTIFACT);
cardType.add(CardType.CREATURE); cardType.add(CardType.CREATURE);
subtype.add(SubType.GOLEM); subtype.add(SubType.GOLEM);
@ -60,4 +60,4 @@ class GuardianIdolGolemToken extends TokenImpl {
public GuardianIdolGolemToken copy() { public GuardianIdolGolemToken copy() {
return new GuardianIdolGolemToken(this); 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}"); 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. // 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 effect = new BecomesCreatureSourceEffect(new HalcyonGlazeToken(), CardType.ENCHANTMENT, Duration.EndOfTurn);
effect.setText("{this} becomes a 4/4 Illusion creature with flying in addition to its other types until end of turn");
this.addAbility(new SpellCastControllerTriggeredAbility(effect, StaticFilters.FILTER_SPELL_A_CREATURE, false)); 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") .withColor("U")
.withSubType(SubType.GIANT) .withSubType(SubType.GIANT)
.withAbility(new WardAbility(new GenericManaCost(3))), .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}. " + "Until end of turn, Hall of Storm Giants becomes a 7/7 blue Giant creature with ward {3}. " +
"It's still a land. " + "It's still a land. " +
"<i>(Whenever it becomes the target of a spell or ability an opponent controls, " + "<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. // {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( Ability ability = new ConditionalActivatedAbility(
Zone.BATTLEFIELD, Zone.BATTLEFIELD,
new BecomesCreatureSourceEffect(new HauntedPlateMailToken(), "", Duration.EndOfTurn), new BecomesCreatureSourceEffect(new HauntedPlateMailToken(), CardType.ARTIFACT, Duration.EndOfTurn).andNotEquipment(true),
new ManaCostsImpl<>("{0}"), new ManaCostsImpl<>("{0}"),
new PermanentsOnTheBattlefieldCondition(StaticFilters.FILTER_PERMANENT_CREATURE, ComparisonType.EQUAL_TO, 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."); "{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}"); 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. // 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); filter, false);
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, new SourceMatchesFilterCondition(StaticFilters.FILTER_PERMANENT_ENCHANTMENT), 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.")); "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}"); 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. // 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); filter, false);
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, new SourceMatchesFilterCondition(StaticFilters.FILTER_PERMANENT_ENCHANTMENT), 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.")); "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}"); 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. // 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); new FilterArtifactSpell(), false);
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, new SourceMatchesFilterCondition(StaticFilters.FILTER_PERMANENT_ENCHANTMENT), 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.")); "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.CardType;
import mage.constants.Duration; import mage.constants.Duration;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.SuperType;
import mage.constants.Zone; import mage.constants.Zone;
import mage.filter.StaticFilters; import mage.filter.StaticFilters;
import mage.game.Game; import mage.game.Game;
@ -50,7 +49,7 @@ public final class HiddenHerd extends CardImpl {
class HiddenHerdAbility extends TriggeredAbilityImpl { class HiddenHerdAbility extends TriggeredAbilityImpl {
public HiddenHerdAbility() { 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) { public HiddenHerdAbility(final HiddenHerdAbility ability) {

View file

@ -46,8 +46,8 @@ class HiddenPredatorsStateTriggeredAbility extends StateTriggeredAbility {
} }
public HiddenPredatorsStateTriggeredAbility() { public HiddenPredatorsStateTriggeredAbility() {
super(Zone.BATTLEFIELD, new BecomesCreatureSourceEffect(new HiddenPredatorsToken(), "", Duration.Custom, true, false)); 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"); setTriggerPhrase("When an opponent controls a creature with power 4 or greater, if {this} is an enchantment, ");
} }
public HiddenPredatorsStateTriggeredAbility(final HiddenPredatorsStateTriggeredAbility ability) { 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}"); 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. // 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); filter, false);
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, new SourceMatchesFilterCondition(StaticFilters.FILTER_PERMANENT_ENCHANTMENT), 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.")); "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}"); 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. // 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); TriggeredAbility ability = new OpponentPlaysLandTriggeredAbility(Zone.BATTLEFIELD, effect, false);
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, new SourceMatchesFilterCondition(StaticFilters.FILTER_PERMANENT_ENCHANTMENT), 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.")); "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()); 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. // {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"); 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}"))); 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 " + 3, 3, "3/3 black Beholder creature with menace and " +
"\"Whenever this creature attacks, exile target card from defending player's graveyard.\"" "\"Whenever this creature attacks, exile target card from defending player's graveyard.\""
).withSubType(SubType.BEHOLDER).withColor("B").withAbility(new MenaceAbility()).withAbility(ability), ).withSubType(SubType.BEHOLDER).withColor("B").withAbility(new MenaceAbility()).withAbility(ability),
"land", Duration.EndOfTurn CardType.LAND, Duration.EndOfTurn
), new ManaCostsImpl<>("{3}{B}"))); ).withDurationRuleAtStart(true), new ManaCostsImpl<>("{3}{B}")));
} }
private HiveOfTheEyeTyrant(final HiveOfTheEyeTyrant card) { 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. // {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( Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new BecomesCreatureSourceEffect(
new CreatureToken(3, 4, "3/4 Elemental creature", SubType.ELEMENTAL), 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")))); ability.addCost(new ExileFromGraveCost(new TargetCardInYourGraveyard(new FilterLandCard("land card from your graveyard"))));
addAbility(ability); addAbility(ability);
} }
@ -47,4 +47,4 @@ public final class HostileDesert extends CardImpl {
public HostileDesert copy() { public HostileDesert copy() {
return new HostileDesert(this); return new HostileDesert(this);
} }
} }

View file

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

View file

@ -21,7 +21,7 @@ public final class JadeIdol extends CardImpl {
public JadeIdol(UUID ownerId, CardSetInfo setInfo) { public JadeIdol(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}"); 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) { private JadeIdol(final JadeIdol card) {
@ -51,4 +51,4 @@ class JadeIdolToken extends TokenImpl {
public JadeIdolToken copy() { public JadeIdolToken copy() {
return new JadeIdolToken(this); 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. // {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) { 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. // {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 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) { private KolaghanMonument(final KolaghanMonument card) {
@ -44,7 +44,7 @@ public final class KolaghanMonument extends CardImpl {
return new KolaghanMonument(this); return new KolaghanMonument(this);
} }
private class KolaghanMonumentToken extends TokenImpl { private static class KolaghanMonumentToken extends TokenImpl {
KolaghanMonumentToken() { KolaghanMonumentToken() {
super("", "4/4 black and red Dragon artifact creature with flying"); super("", "4/4 black and red Dragon artifact creature with flying");
cardType.add(CardType.ARTIFACT); cardType.add(CardType.ARTIFACT);

View file

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

View file

@ -36,7 +36,7 @@ public final class LavaclawReaches extends CardImpl {
this.addAbility(new RedManaAbility()); 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. // {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) { private LavaclawReaches(final LavaclawReaches card) {

View file

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

View file

@ -35,7 +35,7 @@ public final class LumberingFalls extends CardImpl {
this.addAbility(new GreenManaAbility()); 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. // {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) { private LumberingFalls(final LumberingFalls card) {

View file

@ -17,7 +17,6 @@ import mage.constants.SubType;
import mage.constants.Duration; import mage.constants.Duration;
import mage.constants.Zone; import mage.constants.Zone;
import mage.game.Game; import mage.game.Game;
import mage.game.events.GameEvent;
import mage.game.permanent.token.TokenImpl; import mage.game.permanent.token.TokenImpl;
import mage.players.Player; import mage.players.Player;
import mage.util.CardUtil; import mage.util.CardUtil;
@ -32,7 +31,7 @@ public final class LurkingEvil extends CardImpl {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{B}{B}{B}"); 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. // 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"); effect.setText("{this} becomes a 4/4 Phyrexian Horror creature with flying");
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, effect, new LurkingEvilCost())); 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 { class LurkingJackalsStateTriggeredAbility extends StateTriggeredAbility {
public LurkingJackalsStateTriggeredAbility() { 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, "); 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 { class LurkingJackalsToken extends TokenImpl {
public LurkingJackalsToken() { public LurkingJackalsToken() {
super("Dog", "3/2 Dog creature"); super("Dog", "3/2 Jackal creature");
cardType.add(CardType.CREATURE); cardType.add(CardType.CREATURE);
subtype.add(SubType.DOG); subtype.add(SubType.JACKAL);
power = new MageInt(3); power = new MageInt(3);
toughness = new MageInt(2); 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}"); 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. // 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), 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.")); "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,
"2/2 Assembly-Worker artifact creature", "2/2 Assembly-Worker artifact creature",
SubType.ASSEMBLY_WORKER SubType.ASSEMBLY_WORKER
).withType(CardType.ARTIFACT), "land", Duration.EndOfTurn ).withType(CardType.ARTIFACT), CardType.LAND, Duration.EndOfTurn
), new GenericManaCost(1))); ), new GenericManaCost(1)));
// {tap}: Target Assembly-Worker creature gets +1/+1 until end of turn. // {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,
"2/2 Assembly-Worker artifact creature", "2/2 Assembly-Worker artifact creature",
SubType.ASSEMBLY_WORKER SubType.ASSEMBLY_WORKER
).withType(CardType.ARTIFACT), "land", Duration.EndOfTurn ).withType(CardType.ARTIFACT), CardType.LAND, Duration.EndOfTurn
), new GenericManaCost(2))); ), new GenericManaCost(2)));
// {1}, {T}: Target attacking Assembly-Worker gets +2/+2 until end of turn. // {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. // {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( 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. " + ).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 " + "It's still a land. This ability costs {1} less to activate " +
"for each legendary creature and planeswalker you control." "for each legendary creature and planeswalker you control."

View file

@ -2,6 +2,7 @@ package mage.cards.m;
import java.util.UUID; import java.util.UUID;
import mage.MageObject;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.ActivateIfConditionActivatedAbility; import mage.abilities.common.ActivateIfConditionActivatedAbility;
import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.common.SimpleActivatedAbility;
@ -21,13 +22,11 @@ import mage.cards.CardSetInfo;
import mage.constants.*; import mage.constants.*;
import mage.filter.FilterCard; import mage.filter.FilterCard;
import mage.filter.FilterPermanent; import mage.filter.FilterPermanent;
import mage.filter.StaticFilters;
import mage.filter.common.FilterControlledLandPermanent; import mage.filter.common.FilterControlledLandPermanent;
import mage.filter.common.FilterLandCard; import mage.filter.common.FilterLandCard;
import mage.filter.predicate.Predicates; import mage.filter.predicate.Predicates;
import mage.game.Game; import mage.game.Game;
import mage.game.permanent.token.custom.CreatureToken; import mage.game.permanent.token.custom.CreatureToken;
import mage.players.Player;
import mage.target.common.TargetCardInLibrary; import mage.target.common.TargetCardInLibrary;
/** /**
@ -64,9 +63,8 @@ public final class MonumentToPerfection extends CardImpl {
).withType(CardType.ARTIFACT) ).withType(CardType.ARTIFACT)
.withAbility(IndestructibleAbility.getInstance()) .withAbility(IndestructibleAbility.getInstance())
.withAbility(new ToxicAbility(9)), .withAbility(new ToxicAbility(9)),
null, Duration.Custom, true, CardType.ARTIFACT, Duration.Custom
false, null, null, true ).andLoseAbilities(true), new GenericManaCost(3), MonumentToPerfectionCondition.instance
), new GenericManaCost(3), MonumentToPerfectionCondition.instance
).addHint(MonumentToPerfectionValue.getHint())); ).addHint(MonumentToPerfectionValue.getHint()));
} }
@ -102,7 +100,7 @@ enum MonumentToPerfectionValue implements DynamicValue {
.getBattlefield() .getBattlefield()
.getActivePermanents(filter, sourceAbility.getControllerId(), game) .getActivePermanents(filter, sourceAbility.getControllerId(), game)
.stream() .stream()
.map(permanent -> permanent.getName()) .map(MageObject::getName)
.filter(s -> s.length() > 0) .filter(s -> s.length() > 0)
.distinct() .distinct()
.mapToInt(x -> 1) .mapToInt(x -> 1)
@ -136,4 +134,4 @@ enum MonumentToPerfectionCondition implements Condition {
public String toString() { public String toString() {
return "there are nine or more lands with different names among the basic, Sphere, and Locus lands you control"; 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()); this.addAbility(new ColorlessManaAbility());
// {1}: Mutavault becomes a 2/2 creature with all creature types until end of turn. It's still a land. // {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, this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD,
new BecomesCreatureSourceEffect(new MutavaultToken(), "land", Duration.EndOfTurn), new BecomesCreatureSourceEffect(new MutavaultToken(), CardType.LAND, Duration.EndOfTurn),
new ManaCostsImpl<>("{1}"))); 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}"))); 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." // {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 effect = new BecomesCreatureSourceEffect(new MythRealizedToken(), CardType.ENCHANTMENT, Duration.EndOfTurn).withDurationRuleAtStart(true);
effect.setText("Until end of turn, {this} becomes a Monk Avatar creature in addition to its other types ");
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, effect, new ManaCostsImpl<>("{W}")); 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.\"")); 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 { class MythRealizedToken extends TokenImpl {
public MythRealizedToken() { 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); cardType.add(CardType.CREATURE);
subtype.add(SubType.MONK); subtype.add(SubType.MONK);
subtype.add(SubType.AVATAR); subtype.add(SubType.AVATAR);

View file

@ -32,7 +32,7 @@ public final class NantukoMonastery extends CardImpl {
this.addAbility(new ColorlessManaAbility()); 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. // 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( 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)); new CardsInControllerGraveyardCondition(7));
ability.setAbilityWord(AbilityWord.THRESHOLD); ability.setAbilityWord(AbilityWord.THRESHOLD);
this.addAbility(ability); this.addAbility(ability);

View file

@ -36,7 +36,7 @@ public final class NeedleSpires extends CardImpl {
this.addAbility(new WhiteManaAbility()); 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. // {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"); 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}"))); 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") new CreatureToken(5, 5, "Dragon with base power and toughness 5/5 and gains flying")
.withSubType(SubType.DRAGON) .withSubType(SubType.DRAGON)
.withAbility(FlyingAbility.getInstance()), .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, " + ), 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" "{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. // {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 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) { 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}"); 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. // 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); filter, false);
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, new SourceMatchesFilterCondition(StaticFilters.FILTER_PERMANENT_ENCHANTMENT), 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.")); "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}"); 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. // 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); new FilterCreatureSpell(), false);
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, new SourceMatchesFilterCondition(StaticFilters.FILTER_PERMANENT_ENCHANTMENT), 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.")); "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 { class OpalAvengerStateTriggeredAbility extends StateTriggeredAbility {
public OpalAvengerStateTriggeredAbility() { 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, "); 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}"); 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. // 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); new FilterCreatureSpell(), false);
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, new SourceMatchesFilterCondition(StaticFilters.FILTER_PERMANENT_ENCHANTMENT), 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.")); "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}"); 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. // 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); new FilterCreatureSpell(), false);
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, new SourceMatchesFilterCondition(StaticFilters.FILTER_PERMANENT_ENCHANTMENT), 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.")); "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}"); 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. // 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); new FilterCreatureSpell(), false);
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, new SourceMatchesFilterCondition(StaticFilters.FILTER_PERMANENT_ENCHANTMENT), 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.")); "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}"); 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. // 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); new FilterCreatureSpell(), false);
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, new SourceMatchesFilterCondition(StaticFilters.FILTER_PERMANENT_ENCHANTMENT), 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.")); "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()); this.addAbility(new BlackManaAbility());
// {W}{B}: Orzhov Keyrune becomes a 1/4 white and black Thrull artifact creature with lifelink until end of turn. // {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) { private OrzhovKeyrune(final OrzhovKeyrune card) {

View file

@ -37,7 +37,7 @@ public final class PhyrexianTotem extends CardImpl {
this.addAbility(new BlackManaAbility()); this.addAbility(new BlackManaAbility());
// {2}{B}: {this} becomes a 5/5 black Horror artifact creature with trample until end of turn. // {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( 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. // Whenever {this} is dealt damage, if it's a creature, sacrifice that many permanents.
this.addAbility(new PhyrexianTotemTriggeredAbility()); this.addAbility(new PhyrexianTotemTriggeredAbility());
} }
@ -116,4 +116,4 @@ class PhyrexianTotemTriggeredAbility extends TriggeredAbilityImpl {
public String getRule() { public String getRule() {
return "Whenever {this} is dealt damage, if it's a creature, sacrifice that many permanents."; 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()); this.addAbility(new RedManaAbility());
Effect effect = new BecomesCreatureSourceEffect( Effect effect = new BecomesCreatureSourceEffect(
new CreatureToken(3, 3, "3/3 red and green Elemental creature", SubType.ELEMENTAL).withColor("RG"), 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"); 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. // {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}")); 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); return new RagingRavine(this);
} }
} }

View file

@ -30,7 +30,7 @@ public final class RakdosKeyrune extends CardImpl {
this.addAbility(new RedManaAbility()); 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. // {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) { 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. // 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( this.addAbility(new CycleControllerTriggeredAbility(new BecomesCreatureSourceEffect(
new ReptilianReflectionToken(), "enchantment", Duration.EndOfTurn new ReptilianReflectionToken(), CardType.ENCHANTMENT, Duration.EndOfTurn), true));
).setText("have {this} become a 5/4 Dinosaur creature with trample and haste " +
"in addition to its other types until end of turn"), true));
} }
private ReptilianReflection(final ReptilianReflection card) { 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}"); 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. // 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 effect = new BecomesCreatureSourceEffect(new RiddleformToken(), CardType.ENCHANTMENT, Duration.EndOfTurn);
effect.setText("have {this} become a 3/3 Sphinx creature with flying in addition to its other types until end of turn.");
this.addAbility(new SpellCastControllerTriggeredAbility(Zone.BATTLEFIELD, effect, filterNonCreature, true, true)); this.addAbility(new SpellCastControllerTriggeredAbility(Zone.BATTLEFIELD, effect, filterNonCreature, true, true));
// {2}{U}: Scry 1. // {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. // 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, this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD,
new ConditionalContinuousEffect( new ConditionalContinuousEffect(
new BecomesCreatureSourceEffect(new RustedRelicToken(), "artifact", Duration.WhileOnBattlefield), new BecomesCreatureSourceEffect(new RustedRelicToken(), CardType.ARTIFACT, Duration.WhileOnBattlefield),
MetalcraftCondition.instance, MetalcraftCondition.instance,
"{this} is a 5/5 Golem artifact creature as long as you control three or more artifacts")) "{this} is a 5/5 Golem artifact creature as long as you control three or more artifacts"))
.setAbilityWord(AbilityWord.METALCRAFT) .setAbilityWord(AbilityWord.METALCRAFT)
@ -59,4 +59,4 @@ class RustedRelicToken extends TokenImpl {
public RustedRelicToken copy() { public RustedRelicToken copy() {
return new RustedRelicToken(this); return new RustedRelicToken(this);
} }
} }

View file

@ -41,7 +41,7 @@ public final class SanguineStatuette extends CardImpl {
.withType(CardType.ARTIFACT) .withType(CardType.ARTIFACT)
.withSubType(SubType.VAMPIRE) .withSubType(SubType.VAMPIRE)
.withAbility(HasteAbility.getInstance()), .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)); ).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()); this.addAbility(new WhiteManaAbility());
// {G}{W}: Selesnya Keyrune becomes a 3/3 green and white Wolf artifact creature until end of turn. // {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) { 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. // {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( 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) { private ShamblingVent(final ShamblingVent card) {
@ -68,4 +68,4 @@ class ShamblingVentToken extends TokenImpl {
public ShamblingVentToken copy() { public ShamblingVentToken copy() {
return new ShamblingVentToken(this); return new ShamblingVentToken(this);
} }
} }

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