This commit is contained in:
Evan Kranzler 2018-05-05 13:26:29 -04:00
commit 9db8ea612c
7 changed files with 76 additions and 105 deletions

View file

@ -44,6 +44,7 @@ import mage.constants.Zone;
import mage.filter.common.FilterLandCard; import mage.filter.common.FilterLandCard;
import mage.game.permanent.token.TokenImpl; import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token; import mage.game.permanent.token.Token;
import mage.game.permanent.token.custom.ElementalCreatureToken;
import mage.target.common.TargetCardInYourGraveyard; import mage.target.common.TargetCardInYourGraveyard;
/** /**
@ -60,7 +61,9 @@ public class HostileDesert extends CardImpl {
// {T}: Add {C}. // {T}: Add {C}.
addAbility(new ColorlessManaAbility()); 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. // {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")))); ability.addCost(new ExileFromGraveCost(new TargetCardInYourGraveyard(new FilterLandCard("land card from your graveyard"))));
addAbility(ability); addAbility(ability);
} }
@ -73,22 +76,4 @@ public class HostileDesert extends CardImpl {
public HostileDesert copy() { public HostileDesert copy() {
return new HostileDesert(this); 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);
}
}

View file

@ -29,6 +29,7 @@ package mage.cards.i;
import java.util.UUID; import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.ObjectColor;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldAbility; import mage.abilities.common.EntersBattlefieldAbility;
import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.common.SimpleActivatedAbility;
@ -50,6 +51,7 @@ import mage.filter.predicate.permanent.TappedPredicate;
import mage.game.Game; import mage.game.Game;
import mage.game.permanent.token.TokenImpl; import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token; import mage.game.permanent.token.Token;
import mage.game.permanent.token.custom.ElementalCreatureToken;
import mage.target.common.TargetLandPermanent; 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.")); "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. // {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.addCost(new RemoveCountersSourceCost(CounterType.P1P1.createInstance(1)));
ability.addTarget(new TargetLandPermanent()); ability.addTarget(new TargetLandPermanent());
this.addAbility(ability); this.addAbility(ability);
@ -115,24 +119,4 @@ class TappedLandsCount implements DynamicValue {
public String getMessage() { public String getMessage() {
return "tapped lands on the battlefield"; 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);
}
} }

View file

@ -30,6 +30,7 @@ package mage.cards.r;
import java.util.UUID; import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.ObjectColor;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.AttacksTriggeredAbility; import mage.abilities.common.AttacksTriggeredAbility;
import mage.abilities.common.EntersBattlefieldTappedAbility; import mage.abilities.common.EntersBattlefieldTappedAbility;
@ -50,6 +51,7 @@ import mage.constants.Zone;
import mage.counters.CounterType; import mage.counters.CounterType;
import mage.game.permanent.token.TokenImpl; import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token; 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. // Tap: Add Red or Green.
this.addAbility(new GreenManaAbility()); this.addAbility(new GreenManaAbility());
this.addAbility(new RedManaAbility()); 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"); 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}"));
@ -84,24 +88,4 @@ public class RagingRavine extends CardImpl {
return new RagingRavine(this); 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);
}
}

View file

@ -45,6 +45,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.common.FilterControlledLandPermanent; import mage.filter.common.FilterControlledLandPermanent;
import mage.game.permanent.token.TokenImpl; import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token; import mage.game.permanent.token.Token;
import mage.game.permanent.token.custom.ElementalCreatureToken;
import mage.target.TargetPermanent; 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"), Zone.BATTLEFIELD, new GainAbilityAllEffect(TrampleAbility.getInstance(), Duration.EndOfTurn, new FilterControlledCreaturePermanent(), "Creatures you control gain trample until end of turn"),
new ManaCostsImpl("{R}{G}"))); 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. // {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())); ability.addTarget(new TargetPermanent(new FilterControlledLandPermanent()));
this.addAbility(ability); this.addAbility(ability);
@ -80,23 +83,4 @@ public class SkarrgGuildmage extends CardImpl {
public SkarrgGuildmage copy() { public SkarrgGuildmage copy() {
return new SkarrgGuildmage(this); 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);
}
}

View file

@ -29,6 +29,7 @@ package mage.cards.v;
import java.util.UUID; import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.ObjectColor;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.DiesAttachedTriggeredAbility; import mage.abilities.common.DiesAttachedTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
@ -41,6 +42,7 @@ import mage.cards.CardSetInfo;
import mage.constants.*; import mage.constants.*;
import mage.game.permanent.token.TokenImpl; import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token; import mage.game.permanent.token.Token;
import mage.game.permanent.token.custom.ElementalCreatureToken;
import mage.target.TargetPermanent; import mage.target.TargetPermanent;
import mage.target.common.TargetLandPermanent; import mage.target.common.TargetLandPermanent;
@ -65,7 +67,9 @@ public class VastwoodZendikon extends CardImpl {
Ability ability = new EnchantAbility(auraTarget.getTargetName()); Ability ability = new EnchantAbility(auraTarget.getTargetName());
this.addAbility(ability); 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); this.addAbility(ability2);
Ability ability3 = new DiesAttachedTriggeredAbility(new ReturnToHandAttachedEffect(), "enchanted land", false); Ability ability3 = new DiesAttachedTriggeredAbility(new ReturnToHandAttachedEffect(), "enchanted land", false);
@ -80,22 +84,4 @@ public class VastwoodZendikon extends CardImpl {
public VastwoodZendikon copy() { public VastwoodZendikon copy() {
return new VastwoodZendikon(this); 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);
}
}

View file

@ -10,7 +10,7 @@ import mage.util.SubTypeList;
* *
* @author JayDi85 * @author JayDi85
*/ */
public class CreatureToken extends TokenImpl { public class CreatureToken extends TokenImpl {
public CreatureToken() { public CreatureToken() {
this(0, 0); this(0, 0);

View file

@ -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);
}
}