diff --git a/Mage.Sets/src/mage/cards/h/HostileDesert.java b/Mage.Sets/src/mage/cards/h/HostileDesert.java index 135d824827..bae7586829 100644 --- a/Mage.Sets/src/mage/cards/h/HostileDesert.java +++ b/Mage.Sets/src/mage/cards/h/HostileDesert.java @@ -44,6 +44,7 @@ import mage.constants.Zone; import mage.filter.common.FilterLandCard; import mage.game.permanent.token.TokenImpl; import mage.game.permanent.token.Token; +import mage.game.permanent.token.custom.ElementalCreatureToken; import mage.target.common.TargetCardInYourGraveyard; /** @@ -60,7 +61,9 @@ public class HostileDesert extends CardImpl { // {T}: Add {C}. addAbility(new ColorlessManaAbility()); // {2}, Exile a land card from your graveyard: Hostile Desert becomes a 3/4 Elemental creature until end of turn. It's still a land. - Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new BecomesCreatureSourceEffect(new HostileDesertToken(), "land", Duration.EndOfTurn), new GenericManaCost(2)); + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new BecomesCreatureSourceEffect( + new ElementalCreatureToken(3, 4, "3/4 Elemental creature"), + "land", Duration.EndOfTurn), new GenericManaCost(2)); ability.addCost(new ExileFromGraveCost(new TargetCardInYourGraveyard(new FilterLandCard("land card from your graveyard")))); addAbility(ability); } @@ -73,22 +76,4 @@ public class HostileDesert extends CardImpl { public HostileDesert copy() { return new HostileDesert(this); } -} - -class HostileDesertToken extends TokenImpl { - - public HostileDesertToken() { - super("", "3/4 elemental creature"); - cardType.add(CardType.CREATURE); - subtype.add(SubType.ELEMENTAL); - power = new MageInt(3); - toughness = new MageInt(4); - } - public HostileDesertToken(final HostileDesertToken token) { - super(token); - } - - public HostileDesertToken copy() { - return new HostileDesertToken(this); - } -} +} \ No newline at end of file diff --git a/Mage.Sets/src/mage/cards/i/IgnitionTeam.java b/Mage.Sets/src/mage/cards/i/IgnitionTeam.java index 84132dab69..a4fa959347 100644 --- a/Mage.Sets/src/mage/cards/i/IgnitionTeam.java +++ b/Mage.Sets/src/mage/cards/i/IgnitionTeam.java @@ -29,6 +29,7 @@ package mage.cards.i; import java.util.UUID; import mage.MageInt; +import mage.ObjectColor; import mage.abilities.Ability; import mage.abilities.common.EntersBattlefieldAbility; import mage.abilities.common.SimpleActivatedAbility; @@ -50,6 +51,7 @@ import mage.filter.predicate.permanent.TappedPredicate; import mage.game.Game; import mage.game.permanent.token.TokenImpl; import mage.game.permanent.token.Token; +import mage.game.permanent.token.custom.ElementalCreatureToken; import mage.target.common.TargetLandPermanent; /** @@ -72,7 +74,9 @@ public class IgnitionTeam extends CardImpl { "with X +1/+1 counters on it, where X is the number of tapped lands on the battlefield.")); // {2}{R}, Remove a +1/+1 counter from Ignition Team: Target land becomes a 4/4 red Elemental creature until end of turn. It's still a land. - Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new BecomesCreatureTargetEffect(new IgnitionTeamToken(), false, true, Duration.EndOfTurn), new ManaCostsImpl("{2}{R}")); + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new BecomesCreatureTargetEffect( + new ElementalCreatureToken(4, 4, "4/4 red Elemental creature", new ObjectColor("R")), + false, true, Duration.EndOfTurn), new ManaCostsImpl("{2}{R}")); ability.addCost(new RemoveCountersSourceCost(CounterType.P1P1.createInstance(1))); ability.addTarget(new TargetLandPermanent()); this.addAbility(ability); @@ -115,24 +119,4 @@ class TappedLandsCount implements DynamicValue { public String getMessage() { return "tapped lands on the battlefield"; } -} - -class IgnitionTeamToken extends TokenImpl { - - public IgnitionTeamToken() { - super("", "4/4 red Elemental creature"); - this.cardType.add(CardType.CREATURE); - this.getSubtype(null).add(SubType.ELEMENTAL); - this.color.setRed(true); - - this.power = new MageInt(4); - this.toughness = new MageInt(4); - } - public IgnitionTeamToken(final IgnitionTeamToken token) { - super(token); - } - - public IgnitionTeamToken copy() { - return new IgnitionTeamToken(this); - } } \ No newline at end of file diff --git a/Mage.Sets/src/mage/cards/r/RagingRavine.java b/Mage.Sets/src/mage/cards/r/RagingRavine.java index 035b2aab59..099b2e8533 100644 --- a/Mage.Sets/src/mage/cards/r/RagingRavine.java +++ b/Mage.Sets/src/mage/cards/r/RagingRavine.java @@ -30,6 +30,7 @@ package mage.cards.r; import java.util.UUID; import mage.MageInt; +import mage.ObjectColor; import mage.abilities.Ability; import mage.abilities.common.AttacksTriggeredAbility; import mage.abilities.common.EntersBattlefieldTappedAbility; @@ -50,6 +51,7 @@ import mage.constants.Zone; import mage.counters.CounterType; import mage.game.permanent.token.TokenImpl; import mage.game.permanent.token.Token; +import mage.game.permanent.token.custom.ElementalCreatureToken; /** * @@ -65,7 +67,9 @@ public class RagingRavine extends CardImpl { // Tap: Add Red or Green. this.addAbility(new GreenManaAbility()); this.addAbility(new RedManaAbility()); - Effect effect = new BecomesCreatureSourceEffect(new RagingRavineToken(), "land", Duration.EndOfTurn); + Effect effect = new BecomesCreatureSourceEffect( + new ElementalCreatureToken(3, 3, "3/3 red and green Elemental creature", new ObjectColor("RG")), + "land", Duration.EndOfTurn); effect.setText("Until end of turn, {this} becomes a 3/3 red and green Elemental creature"); // {2}{R}{G}: Until end of turn, Raging Ravine becomes a 3/3 red and green Elemental creature with "Whenever this creature attacks, put a +1/+1 counter on it." It's still a land. Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, effect, new ManaCostsImpl("{2}{R}{G}")); @@ -84,24 +88,4 @@ public class RagingRavine extends CardImpl { return new RagingRavine(this); } -} - -class RagingRavineToken extends TokenImpl { - - public RagingRavineToken() { - super("", "3/3 red and green Elemental creature"); - cardType.add(CardType.CREATURE); - subtype.add(SubType.ELEMENTAL); - color.setRed(true); - color.setGreen(true); - power = new MageInt(3); - toughness = new MageInt(3); - } - public RagingRavineToken(final RagingRavineToken token) { - super(token); - } - - public RagingRavineToken copy() { - return new RagingRavineToken(this); - } -} +} \ No newline at end of file diff --git a/Mage.Sets/src/mage/cards/s/SkarrgGuildmage.java b/Mage.Sets/src/mage/cards/s/SkarrgGuildmage.java index c21d85e4de..cb82b89b26 100644 --- a/Mage.Sets/src/mage/cards/s/SkarrgGuildmage.java +++ b/Mage.Sets/src/mage/cards/s/SkarrgGuildmage.java @@ -45,6 +45,7 @@ import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.common.FilterControlledLandPermanent; import mage.game.permanent.token.TokenImpl; import mage.game.permanent.token.Token; +import mage.game.permanent.token.custom.ElementalCreatureToken; import mage.target.TargetPermanent; /** @@ -66,7 +67,9 @@ public class SkarrgGuildmage extends CardImpl { Zone.BATTLEFIELD, new GainAbilityAllEffect(TrampleAbility.getInstance(), Duration.EndOfTurn, new FilterControlledCreaturePermanent(), "Creatures you control gain trample until end of turn"), new ManaCostsImpl("{R}{G}"))); // {1}{R}{G}: Target land you control becomes a 4/4 Elemental creature until end of turn. It's still a land. - Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new BecomesCreatureTargetEffect(new SkarrgGuildmageToken(), false, true, Duration.EndOfTurn), new ManaCostsImpl("{1}{R}{G}") ); + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new BecomesCreatureTargetEffect( + new ElementalCreatureToken(4, 4, "4/4 Elemental creature"), + false, true, Duration.EndOfTurn), new ManaCostsImpl("{1}{R}{G}") ); ability.addTarget(new TargetPermanent(new FilterControlledLandPermanent())); this.addAbility(ability); @@ -80,23 +83,4 @@ public class SkarrgGuildmage extends CardImpl { public SkarrgGuildmage copy() { return new SkarrgGuildmage(this); } -} - -class SkarrgGuildmageToken extends TokenImpl { - - public SkarrgGuildmageToken() { - super("", "4/4 Elemental creature"); - this.cardType.add(CardType.CREATURE); - - this.subtype.add(SubType.ELEMENTAL); - this.power = new MageInt(4); - this.toughness = new MageInt(4); - } - public SkarrgGuildmageToken(final SkarrgGuildmageToken token) { - super(token); - } - - public SkarrgGuildmageToken copy() { - return new SkarrgGuildmageToken(this); - } -} +} \ No newline at end of file diff --git a/Mage.Sets/src/mage/cards/v/VastwoodZendikon.java b/Mage.Sets/src/mage/cards/v/VastwoodZendikon.java index 23acc3dda6..2e667eb368 100644 --- a/Mage.Sets/src/mage/cards/v/VastwoodZendikon.java +++ b/Mage.Sets/src/mage/cards/v/VastwoodZendikon.java @@ -29,6 +29,7 @@ package mage.cards.v; import java.util.UUID; import mage.MageInt; +import mage.ObjectColor; import mage.abilities.Ability; import mage.abilities.common.DiesAttachedTriggeredAbility; import mage.abilities.common.SimpleStaticAbility; @@ -41,6 +42,7 @@ import mage.cards.CardSetInfo; import mage.constants.*; import mage.game.permanent.token.TokenImpl; import mage.game.permanent.token.Token; +import mage.game.permanent.token.custom.ElementalCreatureToken; import mage.target.TargetPermanent; import mage.target.common.TargetLandPermanent; @@ -65,7 +67,9 @@ public class VastwoodZendikon extends CardImpl { Ability ability = new EnchantAbility(auraTarget.getTargetName()); this.addAbility(ability); - Ability ability2 = new SimpleStaticAbility(Zone.BATTLEFIELD, new BecomesCreatureAttachedEffect(new VastwoodElementalToken(), "Enchanted land is a 6/4 green Elemental creature. It's still a land", Duration.WhileOnBattlefield )); + Ability ability2 = new SimpleStaticAbility(Zone.BATTLEFIELD, new BecomesCreatureAttachedEffect( + new ElementalCreatureToken(6, 4, "6/4 green Elemental creature", new ObjectColor("G")), + "Enchanted land is a 6/4 green Elemental creature. It's still a land", Duration.WhileOnBattlefield )); this.addAbility(ability2); Ability ability3 = new DiesAttachedTriggeredAbility(new ReturnToHandAttachedEffect(), "enchanted land", false); @@ -80,22 +84,4 @@ public class VastwoodZendikon extends CardImpl { public VastwoodZendikon copy() { return new VastwoodZendikon(this); } -} - -class VastwoodElementalToken extends TokenImpl { - VastwoodElementalToken() { - super("", "6/4 green Elemental creature"); - cardType.add(CardType.CREATURE); - color.setGreen(true); - subtype.add(SubType.ELEMENTAL); - power = new MageInt(6); - toughness = new MageInt(4); - } - public VastwoodElementalToken(final VastwoodElementalToken token) { - super(token); - } - - public VastwoodElementalToken copy() { - return new VastwoodElementalToken(this); - } -} +} \ No newline at end of file diff --git a/Mage/src/main/java/mage/game/permanent/token/custom/CreatureToken.java b/Mage/src/main/java/mage/game/permanent/token/custom/CreatureToken.java index 0cbe256802..ed54559d73 100644 --- a/Mage/src/main/java/mage/game/permanent/token/custom/CreatureToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/custom/CreatureToken.java @@ -10,7 +10,7 @@ import mage.util.SubTypeList; * * @author JayDi85 */ -public class CreatureToken extends TokenImpl { +public class CreatureToken extends TokenImpl { public CreatureToken() { this(0, 0); diff --git a/Mage/src/main/java/mage/game/permanent/token/custom/ElementalCreatureToken.java b/Mage/src/main/java/mage/game/permanent/token/custom/ElementalCreatureToken.java new file mode 100644 index 0000000000..125bbbd8ee --- /dev/null +++ b/Mage/src/main/java/mage/game/permanent/token/custom/ElementalCreatureToken.java @@ -0,0 +1,48 @@ +package mage.game.permanent.token.custom; + +import mage.MageInt; +import mage.ObjectColor; +import mage.constants.CardType; +import mage.constants.SubType; +import mage.game.permanent.token.TokenImpl; +import mage.util.SubTypeList; + +/** + * + * @author JayDi85 + */ +public class ElementalCreatureToken extends TokenImpl { + + public ElementalCreatureToken() { + this(0, 0); + } + + public ElementalCreatureToken(int power, int toughness) { + this(power, toughness, String.format("%d/%d Elemental creature", power, toughness)); + } + + public ElementalCreatureToken(int power, int toughness, String description) { + this(power, toughness, description, (ObjectColor) null); + } + + public ElementalCreatureToken(int power, int toughness, String description, ObjectColor color) { + super("", description); + this.cardType.add(CardType.CREATURE); + this.subtype.add(SubType.ELEMENTAL); + + this.power = new MageInt(power); + this.toughness = new MageInt(toughness); + + if (color != null) { + this.color.addColor(color); + } + } + + public ElementalCreatureToken(final ElementalCreatureToken token) { + super(token); + } + + public ElementalCreatureToken copy() { + return new ElementalCreatureToken(this); + } +}