mirror of
https://github.com/magefree/mage.git
synced 2025-12-20 02:30:08 -08:00
refactor: improved tokens structure (#13487)
- removed duplicate tokens - fixed names of some tokens - corrected tokens used in tokens database
This commit is contained in:
parent
08135af525
commit
730bd8e63d
33 changed files with 112 additions and 367 deletions
|
|
@ -12,7 +12,7 @@ import mage.cards.CardImpl;
|
|||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.filter.common.FilterNonlandPermanent;
|
||||
import mage.game.permanent.token.CrushOfTentaclesToken;
|
||||
import mage.game.permanent.token.OctopusToken;
|
||||
|
||||
/**
|
||||
*
|
||||
|
|
@ -25,7 +25,7 @@ public final class CrushOfTentacles extends CardImpl {
|
|||
|
||||
// Return all nonland permanents to their owners' hands. If Crush of Tentacles surge cost was paid, create an 8/8 blue Octopus creature token.
|
||||
getSpellAbility().addEffect(new ReturnToHandFromBattlefieldAllEffect(new FilterNonlandPermanent("nonland permanents")));
|
||||
Effect effect = new ConditionalOneShotEffect(new CreateTokenEffect(new CrushOfTentaclesToken()), SurgedCondition.instance);
|
||||
Effect effect = new ConditionalOneShotEffect(new CreateTokenEffect(new OctopusToken()), SurgedCondition.instance);
|
||||
effect.setText("If this spell's surge cost was paid, create an 8/8 blue Octopus creature token");
|
||||
getSpellAbility().addEffect(effect);
|
||||
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ import mage.constants.SuperType;
|
|||
import mage.filter.FilterCard;
|
||||
import mage.filter.predicate.Predicates;
|
||||
import mage.game.Game;
|
||||
import mage.game.permanent.token.SeedGuardianToken;
|
||||
import mage.game.permanent.token.ElementalXXGreenToken;
|
||||
import mage.target.common.TargetCardInLibrary;
|
||||
|
||||
import java.util.UUID;
|
||||
|
|
@ -83,7 +83,7 @@ class DanceOfTheTumbleweedsEffect extends OneShotEffect {
|
|||
|
||||
@Override
|
||||
public boolean apply(Game game, Ability source) {
|
||||
return new SeedGuardianToken(LandsYouControlCount.instance.calculate(game, source, this))
|
||||
return new ElementalXXGreenToken(LandsYouControlCount.instance.calculate(game, source, this))
|
||||
.putOntoBattlefield(1, game, source);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ import mage.constants.CardType;
|
|||
import mage.constants.SubType;
|
||||
import mage.filter.FilterSpell;
|
||||
import mage.filter.predicate.mageobject.ColorPredicate;
|
||||
import mage.game.permanent.token.EyesOfTheWisentElementalToken;
|
||||
import mage.game.permanent.token.Elemental44GreenToken;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
|
|
@ -33,7 +33,7 @@ public final class EyesOfTheWisent extends CardImpl {
|
|||
|
||||
// Whenever an opponent casts a blue spell during your turn, you may create a 4/4 green Elemental creature token.
|
||||
this.addAbility(new ConditionalTriggeredAbility(
|
||||
new SpellCastOpponentTriggeredAbility(new CreateTokenEffect(new EyesOfTheWisentElementalToken()), filter, true),
|
||||
new SpellCastOpponentTriggeredAbility(new CreateTokenEffect(new Elemental44GreenToken()), filter, true),
|
||||
MyTurnCondition.instance,
|
||||
"Whenever an opponent casts a blue spell during your turn, you may create a 4/4 green Elemental creature token."
|
||||
).addHint(MyTurnHint.instance));
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ import mage.filter.StaticFilters;
|
|||
import mage.game.Game;
|
||||
import mage.game.events.GameEvent;
|
||||
import mage.game.permanent.Permanent;
|
||||
import mage.game.permanent.token.FleshCarverHorrorToken;
|
||||
import mage.game.permanent.token.HorrorXXBlackToken;
|
||||
import mage.players.Player;
|
||||
import mage.target.common.TargetControlledPermanent;
|
||||
|
||||
|
|
@ -110,7 +110,7 @@ class FleshCarverEffect extends OneShotEffect {
|
|||
Player controller = game.getPlayer(source.getControllerId());
|
||||
if (controller != null) {
|
||||
int xValue = (Integer) getValue("power");
|
||||
return new CreateTokenEffect(new FleshCarverHorrorToken(xValue)).apply(game, source);
|
||||
return new CreateTokenEffect(new HorrorXXBlackToken(xValue)).apply(game, source);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ import mage.counters.CounterType;
|
|||
import mage.filter.FilterPermanent;
|
||||
import mage.filter.common.FilterCreaturePermanent;
|
||||
import mage.filter.predicate.permanent.TokenPredicate;
|
||||
import mage.game.permanent.token.GrismoldPlantToken;
|
||||
import mage.game.permanent.token.Plant11Token;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
|
|
@ -45,7 +45,7 @@ public final class GrismoldTheDreadsower extends CardImpl {
|
|||
|
||||
// At the beginning of your end step, each player creates a 1/1 green Plant creature token.
|
||||
this.addAbility(new BeginningOfEndStepTriggeredAbility(
|
||||
new CreateTokenAllEffect(new GrismoldPlantToken(), TargetController.EACH_PLAYER)
|
||||
new CreateTokenAllEffect(new Plant11Token(), TargetController.EACH_PLAYER)
|
||||
));
|
||||
|
||||
// Whenever a creature token dies, put a +1/+1 counter on Grismold, the Dreadsower.
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ import mage.cards.CardImpl;
|
|||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.game.permanent.token.GrovetenderDruidsPlantToken;
|
||||
import mage.game.permanent.token.Plant11Token;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
|
|
@ -29,7 +29,7 @@ public final class GrovetenderDruids extends CardImpl {
|
|||
// <i>Rally</i>-Whenever Grovetender Druids or another Ally you control enters, you may pay {1}.
|
||||
// If you do, create a 1/1 green Plant creature token.
|
||||
this.addAbility(new AllyEntersBattlefieldTriggeredAbility(new DoIfCostPaid(
|
||||
new CreateTokenEffect(new GrovetenderDruidsPlantToken()), new GenericManaCost(1)
|
||||
new CreateTokenEffect(new Plant11Token()), new GenericManaCost(1)
|
||||
), false));
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ import mage.constants.CardType;
|
|||
import mage.constants.Outcome;
|
||||
import mage.constants.TargetController;
|
||||
import mage.game.Game;
|
||||
import mage.game.permanent.token.MinionToken2;
|
||||
import mage.game.permanent.token.MinionToken;
|
||||
import mage.game.permanent.token.Token;
|
||||
import mage.players.Player;
|
||||
|
||||
|
|
@ -42,7 +42,7 @@ public final class InfernalGenesis extends CardImpl {
|
|||
|
||||
class InfernalGenesisEffect extends OneShotEffect {
|
||||
|
||||
private static final Token token = new MinionToken2();
|
||||
private static final Token token = new MinionToken();
|
||||
|
||||
InfernalGenesisEffect() {
|
||||
super(Outcome.PutCreatureInPlay);
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@ import mage.abilities.dynamicvalue.common.ManaSpentToCastCount;
|
|||
import mage.abilities.dynamicvalue.common.GetXValue;
|
||||
import mage.abilities.effects.Effect;
|
||||
import mage.abilities.effects.OneShotEffect;
|
||||
import mage.abilities.effects.common.CreateTokenEffect;
|
||||
import mage.abilities.effects.common.DamageTargetEffect;
|
||||
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
|
||||
import mage.abilities.effects.common.counter.AddCountersTargetEffect;
|
||||
|
|
@ -27,11 +28,10 @@ import mage.constants.SuperType;
|
|||
import mage.counters.CounterType;
|
||||
import mage.game.Game;
|
||||
import mage.game.permanent.Permanent;
|
||||
import mage.game.permanent.token.MarathWillOfTheWildElementalToken;
|
||||
import mage.game.permanent.token.Token;
|
||||
import mage.players.Player;
|
||||
import mage.target.common.TargetAnyTarget;
|
||||
import mage.target.common.TargetCreaturePermanent;
|
||||
import mage.game.permanent.token.ElementalXXGreenToken;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
|
|
@ -110,12 +110,8 @@ class MarathWillOfTheWildCreateTokenEffect extends OneShotEffect {
|
|||
public boolean apply(Game game, Ability source) {
|
||||
Player player = game.getPlayer(source.getControllerId());
|
||||
if (player != null) {
|
||||
int amount = GetXValue.instance.calculate(game, source, this);
|
||||
Token token = new MarathWillOfTheWildElementalToken();
|
||||
token.setPower(amount);
|
||||
token.setToughness(amount);
|
||||
token.putOntoBattlefield(1, game, source, source.getControllerId());
|
||||
return true;
|
||||
int xvalue = GetXValue.instance.calculate(game, source, this);
|
||||
return new CreateTokenEffect(new ElementalXXGreenToken(xvalue)).apply(game, source);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ import mage.abilities.costs.common.PayLifeCost;
|
|||
import mage.abilities.costs.common.TapSourceCost;
|
||||
import mage.abilities.costs.mana.GenericManaCost;
|
||||
import mage.abilities.effects.OneShotEffect;
|
||||
import mage.abilities.effects.common.CreateTokenEffect;
|
||||
import mage.cards.Card;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
|
|
@ -15,7 +16,7 @@ import mage.constants.CardType;
|
|||
import mage.constants.Outcome;
|
||||
import mage.game.Game;
|
||||
import mage.game.permanent.Permanent;
|
||||
import mage.game.permanent.token.MinionToken;
|
||||
import mage.game.permanent.token.PhyrexianMinionToken;
|
||||
import mage.players.Player;
|
||||
import mage.util.CardUtil;
|
||||
|
||||
|
|
@ -110,12 +111,8 @@ class PhyrexianProcessorCreateTokenEffect extends OneShotEffect {
|
|||
String key = CardUtil.getCardZoneString("lifePaid", source.getSourceId(), game, true);
|
||||
Object object = game.getState().getValue(key);
|
||||
if (object instanceof Integer) {
|
||||
int lifePaid = (int) object;
|
||||
MinionToken token = new MinionToken();
|
||||
token.setPower(lifePaid);
|
||||
token.setToughness(lifePaid);
|
||||
token.putOntoBattlefield(1, game, source, source.getControllerId());
|
||||
return true;
|
||||
int xvalue = (int) object;
|
||||
return new CreateTokenEffect(new PhyrexianMinionToken(xvalue)).apply(game, source);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ import mage.constants.CardType;
|
|||
import mage.constants.Outcome;
|
||||
import mage.constants.Zone;
|
||||
import mage.game.Game;
|
||||
import mage.game.permanent.token.RallyTheHordeWarriorToken;
|
||||
import mage.game.permanent.token.RedWarriorToken;
|
||||
import mage.players.Player;
|
||||
|
||||
/**
|
||||
|
|
@ -72,7 +72,7 @@ class RallyTheHordeEffect extends OneShotEffect {
|
|||
nonLandCardsExiled += nonLands;
|
||||
}
|
||||
}
|
||||
return new CreateTokenEffect(new RallyTheHordeWarriorToken(), nonLandCardsExiled).apply(game, source);
|
||||
return new CreateTokenEffect(new RedWarriorToken(), nonLandCardsExiled).apply(game, source);
|
||||
|
||||
}
|
||||
return false;
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ import mage.constants.Outcome;
|
|||
import mage.constants.SubType;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.game.Game;
|
||||
import mage.game.permanent.token.SeedGuardianToken;
|
||||
import mage.game.permanent.token.ElementalXXGreenToken;
|
||||
import mage.players.Player;
|
||||
|
||||
/**
|
||||
|
|
@ -66,7 +66,7 @@ class SeedGuardianEffect extends OneShotEffect {
|
|||
Player controller = game.getPlayer(source.getControllerId());
|
||||
if (controller != null) {
|
||||
int creaturesInGraveyard = controller.getGraveyard().count(StaticFilters.FILTER_CARD_CREATURE, game);
|
||||
return new CreateTokenEffect(new SeedGuardianToken(creaturesInGraveyard)).apply(game, source);
|
||||
return new CreateTokenEffect(new ElementalXXGreenToken(creaturesInGraveyard)).apply(game, source);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ import mage.constants.Duration;
|
|||
import mage.constants.SuperType;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.game.command.emblems.SorinSolemnVisitorEmblem;
|
||||
import mage.game.permanent.token.SorinSolemnVisitorVampireToken;
|
||||
import mage.game.permanent.token.VampireToken;
|
||||
|
||||
/**
|
||||
*
|
||||
|
|
@ -42,7 +42,7 @@ public final class SorinSolemnVisitor extends CardImpl {
|
|||
this.addAbility(loyaltyAbility);
|
||||
|
||||
// -2: Create a 2/2 black Vampire creature token with flying.
|
||||
this.addAbility(new LoyaltyAbility(new CreateTokenEffect(new SorinSolemnVisitorVampireToken()), -2));
|
||||
this.addAbility(new LoyaltyAbility(new CreateTokenEffect(new VampireToken()), -2));
|
||||
|
||||
// -6: You get an emblem with "At the beginning of each opponent's upkeep, that player sacrifices a creature."
|
||||
this.addAbility(new LoyaltyAbility(new GetEmblemEffect(new SorinSolemnVisitorEmblem()), -6));
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ import mage.cards.CardSetInfo;
|
|||
import mage.constants.CardType;
|
||||
import mage.constants.Outcome;
|
||||
import mage.game.Game;
|
||||
import mage.game.permanent.token.SpoilsOfBloodHorrorToken;
|
||||
import mage.game.permanent.token.HorrorXXBlackToken;
|
||||
import mage.players.Player;
|
||||
|
||||
/**
|
||||
|
|
@ -54,7 +54,7 @@ class SpoilsOfBloodEffect extends OneShotEffect {
|
|||
Player controller = game.getPlayer(source.getControllerId());
|
||||
if (controller != null) {
|
||||
new CreateTokenEffect(
|
||||
new SpoilsOfBloodHorrorToken(CreaturesDiedThisTurnCount.instance.calculate(game, source, this)))
|
||||
new HorrorXXBlackToken(CreaturesDiedThisTurnCount.instance.calculate(game, source, this)))
|
||||
.apply(game, source);
|
||||
return true;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ import mage.cards.CardSetInfo;
|
|||
import mage.constants.CardType;
|
||||
import mage.constants.Outcome;
|
||||
import mage.game.Game;
|
||||
import mage.game.permanent.token.SeedGuardianToken;
|
||||
import mage.game.permanent.token.ElementalXXGreenToken;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
|
|
@ -61,6 +61,6 @@ class TumbleweedRisingEffect extends OneShotEffect {
|
|||
@Override
|
||||
public boolean apply(Game game, Ability source) {
|
||||
int xvalue = GreatestPowerAmongControlledCreaturesValue.instance.calculate(game, source, this);
|
||||
return new CreateTokenEffect(new SeedGuardianToken(xvalue)).apply(game, source);
|
||||
return new CreateTokenEffect(new ElementalXXGreenToken(xvalue)).apply(game, source);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ import mage.cards.CardImpl;
|
|||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.game.permanent.token.WalkerOfTheGroveToken;
|
||||
import mage.game.permanent.token.Elemental44GreenToken;
|
||||
|
||||
/**
|
||||
*
|
||||
|
|
@ -26,7 +26,7 @@ public final class WalkerOfTheGrove extends CardImpl {
|
|||
this.toughness = new MageInt(7);
|
||||
|
||||
// When Walker of the Grove leaves the battlefield, create a 4/4 green Elemental creature token.
|
||||
this.addAbility(new LeavesBattlefieldTriggeredAbility(new CreateTokenEffect(new WalkerOfTheGroveToken(), 1), false));
|
||||
this.addAbility(new LeavesBattlefieldTriggeredAbility(new CreateTokenEffect(new Elemental44GreenToken(), 1), false));
|
||||
// Evoke {4}{G}
|
||||
this.addAbility(new EvokeAbility("{4}{G}"));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,29 +0,0 @@
|
|||
package mage.game.permanent.token;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
|
||||
/**
|
||||
* @author spjspj
|
||||
*/
|
||||
public final class CrushOfTentaclesToken extends TokenImpl {
|
||||
|
||||
public CrushOfTentaclesToken() {
|
||||
super("Octopus Token", "8/8 blue Octopus creature");
|
||||
this.cardType.add(CardType.CREATURE);
|
||||
this.color.setBlue(true);
|
||||
this.subtype.add(SubType.OCTOPUS);
|
||||
this.power = new MageInt(8);
|
||||
this.toughness = new MageInt(8);
|
||||
}
|
||||
|
||||
private CrushOfTentaclesToken(final CrushOfTentaclesToken token) {
|
||||
super(token);
|
||||
}
|
||||
|
||||
public CrushOfTentaclesToken copy() {
|
||||
return new CrushOfTentaclesToken(this);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -11,7 +11,7 @@ import mage.constants.SubType;
|
|||
public final class DinDragonToken extends TokenImpl {
|
||||
|
||||
public DinDragonToken() {
|
||||
super("Dragon Token", "4/4 red Dinosaur Dragon creature token with flying");
|
||||
super("Dinosaur Dragon Token", "4/4 red Dinosaur Dragon creature token with flying");
|
||||
cardType.add(CardType.CREATURE);
|
||||
color.setRed(true);
|
||||
subtype.add(SubType.DINOSAUR);
|
||||
|
|
|
|||
|
|
@ -7,9 +7,9 @@ import mage.constants.SubType;
|
|||
/**
|
||||
* @author spjspj
|
||||
*/
|
||||
public final class EyesOfTheWisentElementalToken extends TokenImpl {
|
||||
public final class Elemental44GreenToken extends TokenImpl {
|
||||
|
||||
public EyesOfTheWisentElementalToken() {
|
||||
public Elemental44GreenToken() {
|
||||
super("Elemental Token", "4/4 green Elemental creature token");
|
||||
cardType.add(CardType.CREATURE);
|
||||
color.setGreen(true);
|
||||
|
|
@ -18,11 +18,11 @@ public final class EyesOfTheWisentElementalToken extends TokenImpl {
|
|||
toughness = new MageInt(4);
|
||||
}
|
||||
|
||||
private EyesOfTheWisentElementalToken(final EyesOfTheWisentElementalToken token) {
|
||||
private Elemental44GreenToken(final Elemental44GreenToken token) {
|
||||
super(token);
|
||||
}
|
||||
|
||||
public EyesOfTheWisentElementalToken copy() {
|
||||
return new EyesOfTheWisentElementalToken(this);
|
||||
public Elemental44GreenToken copy() {
|
||||
return new Elemental44GreenToken(this);
|
||||
}
|
||||
}
|
||||
|
|
@ -7,13 +7,13 @@ import mage.constants.SubType;
|
|||
/**
|
||||
* @author spjspj
|
||||
*/
|
||||
public final class SeedGuardianToken extends TokenImpl {
|
||||
public final class ElementalXXGreenToken extends TokenImpl {
|
||||
|
||||
public SeedGuardianToken() {
|
||||
public ElementalXXGreenToken() {
|
||||
this(1);
|
||||
}
|
||||
|
||||
public SeedGuardianToken(int xValue) {
|
||||
public ElementalXXGreenToken(int xValue) {
|
||||
super("Elemental Token", "X/X green Elemental creature token");
|
||||
cardType.add(CardType.CREATURE);
|
||||
color.setGreen(true);
|
||||
|
|
@ -22,11 +22,11 @@ public final class SeedGuardianToken extends TokenImpl {
|
|||
toughness = new MageInt(xValue);
|
||||
}
|
||||
|
||||
private SeedGuardianToken(final SeedGuardianToken token) {
|
||||
private ElementalXXGreenToken(final ElementalXXGreenToken token) {
|
||||
super(token);
|
||||
}
|
||||
|
||||
public SeedGuardianToken copy() {
|
||||
return new SeedGuardianToken(this);
|
||||
public ElementalXXGreenToken copy() {
|
||||
return new ElementalXXGreenToken(this);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,28 +0,0 @@
|
|||
package mage.game.permanent.token;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
|
||||
/**
|
||||
* @author spjspj
|
||||
*/
|
||||
public final class GrovetenderDruidsPlantToken extends TokenImpl {
|
||||
|
||||
public GrovetenderDruidsPlantToken() {
|
||||
super("Plant Token", "1/1 green Plant creature token");
|
||||
cardType.add(CardType.CREATURE);
|
||||
color.setGreen(true);
|
||||
subtype.add(SubType.PLANT);
|
||||
power = new MageInt(1);
|
||||
toughness = new MageInt(1);
|
||||
}
|
||||
|
||||
private GrovetenderDruidsPlantToken(final GrovetenderDruidsPlantToken token) {
|
||||
super(token);
|
||||
}
|
||||
|
||||
public GrovetenderDruidsPlantToken copy() {
|
||||
return new GrovetenderDruidsPlantToken(this);
|
||||
}
|
||||
}
|
||||
|
|
@ -7,13 +7,13 @@ import mage.constants.SubType;
|
|||
/**
|
||||
* @author spjspj
|
||||
*/
|
||||
public final class FleshCarverHorrorToken extends TokenImpl {
|
||||
public final class HorrorXXBlackToken extends TokenImpl {
|
||||
|
||||
public FleshCarverHorrorToken() {
|
||||
public HorrorXXBlackToken() {
|
||||
this(1);
|
||||
}
|
||||
|
||||
public FleshCarverHorrorToken(int xValue) {
|
||||
public HorrorXXBlackToken(int xValue) {
|
||||
super("Horror Token", "X/X black Horror creature token");
|
||||
cardType.add(CardType.CREATURE);
|
||||
color.setBlack(true);
|
||||
|
|
@ -22,11 +22,11 @@ public final class FleshCarverHorrorToken extends TokenImpl {
|
|||
toughness = new MageInt(xValue);
|
||||
}
|
||||
|
||||
private FleshCarverHorrorToken(final FleshCarverHorrorToken token) {
|
||||
private HorrorXXBlackToken(final HorrorXXBlackToken token) {
|
||||
super(token);
|
||||
}
|
||||
|
||||
public FleshCarverHorrorToken copy() {
|
||||
return new FleshCarverHorrorToken(this);
|
||||
public HorrorXXBlackToken copy() {
|
||||
return new HorrorXXBlackToken(this);
|
||||
}
|
||||
}
|
||||
|
|
@ -10,7 +10,7 @@ import mage.constants.SubType;
|
|||
public final class HumanRogueToken extends TokenImpl {
|
||||
|
||||
public HumanRogueToken() {
|
||||
super("Human Token", "1/1 white Human Rogue creature token");
|
||||
super("Human Rogue Token", "1/1 white Human Rogue creature token");
|
||||
cardType.add(CardType.CREATURE);
|
||||
color.setWhite(true);
|
||||
subtype.add(SubType.HUMAN);
|
||||
|
|
|
|||
|
|
@ -1,30 +0,0 @@
|
|||
|
||||
|
||||
package mage.game.permanent.token;
|
||||
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.MageInt;
|
||||
|
||||
/**
|
||||
* @author spjspj
|
||||
*/
|
||||
public final class MarathWillOfTheWildElementalToken extends TokenImpl {
|
||||
|
||||
public MarathWillOfTheWildElementalToken() {
|
||||
super("Elemental Token", "X/X green Elemental creature token");
|
||||
cardType.add(CardType.CREATURE);
|
||||
subtype.add(SubType.ELEMENTAL);
|
||||
color.setGreen(true);
|
||||
power = new MageInt(0);
|
||||
toughness = new MageInt(0);
|
||||
}
|
||||
|
||||
private MarathWillOfTheWildElementalToken(final MarathWillOfTheWildElementalToken token) {
|
||||
super(token);
|
||||
}
|
||||
|
||||
public MarathWillOfTheWildElementalToken copy() {
|
||||
return new MarathWillOfTheWildElementalToken(this);
|
||||
}
|
||||
}
|
||||
|
|
@ -5,25 +5,20 @@ import mage.constants.CardType;
|
|||
import mage.constants.SubType;
|
||||
|
||||
/**
|
||||
* @author FenrisulfrX
|
||||
* @author Quercitron
|
||||
*/
|
||||
public final class MinionToken extends TokenImpl {
|
||||
|
||||
public MinionToken() {
|
||||
this("DDE");
|
||||
}
|
||||
|
||||
public MinionToken(String setCode) {
|
||||
super("Phyrexian Minion Token", "X/X black Phyrexian Minion creature token");
|
||||
super("Minion Token", "1/1 black Minion creature token");
|
||||
cardType.add(CardType.CREATURE);
|
||||
subtype.add(SubType.PHYREXIAN);
|
||||
subtype.add(SubType.MINION);
|
||||
color.setBlack(true);
|
||||
power = new MageInt(0);
|
||||
toughness = new MageInt(0);
|
||||
power = new MageInt(1);
|
||||
toughness = new MageInt(1);
|
||||
}
|
||||
|
||||
private MinionToken(final MinionToken token) {
|
||||
protected MinionToken(final MinionToken token) {
|
||||
super(token);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,28 +0,0 @@
|
|||
package mage.game.permanent.token;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
|
||||
/**
|
||||
* @author Quercitron
|
||||
*/
|
||||
public final class MinionToken2 extends TokenImpl {
|
||||
|
||||
public MinionToken2() {
|
||||
super("Minion Token", "1/1 black Minion creature token");
|
||||
cardType.add(CardType.CREATURE);
|
||||
subtype.add(SubType.MINION);
|
||||
color.setBlack(true);
|
||||
power = new MageInt(1);
|
||||
toughness = new MageInt(1);
|
||||
}
|
||||
|
||||
protected MinionToken2(final MinionToken2 token) {
|
||||
super(token);
|
||||
}
|
||||
|
||||
public MinionToken2 copy() {
|
||||
return new MinionToken2(this);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,44 +0,0 @@
|
|||
|
||||
|
||||
package mage.game.permanent.token;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.SimpleActivatedAbility;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.effects.common.ReturnFromGraveyardToBattlefieldTargetEffect;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.SuperType;
|
||||
import mage.constants.Zone;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.target.common.TargetCardInGraveyard;
|
||||
|
||||
/**
|
||||
* @author spjspj
|
||||
*/
|
||||
public final class NighteyesTheDesecratorToken extends TokenImpl {
|
||||
|
||||
public NighteyesTheDesecratorToken() {
|
||||
super("Nighteyes the Desecrator Token", "");
|
||||
this.supertype.add(SuperType.LEGENDARY);
|
||||
cardType.add(CardType.CREATURE);
|
||||
color.setBlack(true);
|
||||
subtype.add(SubType.RAT);
|
||||
subtype.add(SubType.WIZARD);
|
||||
power = new MageInt(4);
|
||||
toughness = new MageInt(2);
|
||||
// {4}{B}: Put target creature card from a graveyard onto the battlefield under your control.
|
||||
Ability ability = new SimpleActivatedAbility(new ReturnFromGraveyardToBattlefieldTargetEffect(), new ManaCostsImpl<>("{4}{B}"));
|
||||
ability.addTarget(new TargetCardInGraveyard(StaticFilters.FILTER_CARD_CREATURE_A_GRAVEYARD));
|
||||
this.addAbility(ability);
|
||||
}
|
||||
|
||||
private NighteyesTheDesecratorToken(final NighteyesTheDesecratorToken token) {
|
||||
super(token);
|
||||
}
|
||||
|
||||
public NighteyesTheDesecratorToken copy() {
|
||||
return new NighteyesTheDesecratorToken(this);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
package mage.game.permanent.token;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
|
||||
/**
|
||||
* @author FenrisulfrX
|
||||
*/
|
||||
public final class PhyrexianMinionToken extends TokenImpl {
|
||||
|
||||
public PhyrexianMinionToken() {
|
||||
this(1);
|
||||
}
|
||||
|
||||
public PhyrexianMinionToken(int xValue) {
|
||||
super("Phyrexian Minion Token", "X/X black Phyrexian Minion creature token");
|
||||
cardType.add(CardType.CREATURE);
|
||||
subtype.add(SubType.PHYREXIAN);
|
||||
subtype.add(SubType.MINION);
|
||||
color.setBlack(true);
|
||||
power = new MageInt(xValue);
|
||||
toughness = new MageInt(xValue);
|
||||
}
|
||||
|
||||
private PhyrexianMinionToken(final PhyrexianMinionToken token) {
|
||||
super(token);
|
||||
}
|
||||
|
||||
public PhyrexianMinionToken copy() {
|
||||
return new PhyrexianMinionToken(this);
|
||||
}
|
||||
}
|
||||
|
|
@ -4,9 +4,12 @@ import mage.MageInt;
|
|||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
|
||||
public final class GrismoldPlantToken extends TokenImpl {
|
||||
/**
|
||||
* @author spjspj
|
||||
*/
|
||||
public final class Plant11Token extends TokenImpl {
|
||||
|
||||
public GrismoldPlantToken() {
|
||||
public Plant11Token() {
|
||||
super("Plant Token", "1/1 green Plant creature token");
|
||||
cardType.add(CardType.CREATURE);
|
||||
color.setGreen(true);
|
||||
|
|
@ -15,11 +18,11 @@ public final class GrismoldPlantToken extends TokenImpl {
|
|||
toughness = new MageInt(1);
|
||||
}
|
||||
|
||||
private GrismoldPlantToken(final GrismoldPlantToken token) {
|
||||
private Plant11Token(final Plant11Token token) {
|
||||
super(token);
|
||||
}
|
||||
|
||||
public GrismoldPlantToken copy() {
|
||||
return new GrismoldPlantToken(this);
|
||||
public Plant11Token copy() {
|
||||
return new Plant11Token(this);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,29 +0,0 @@
|
|||
|
||||
package mage.game.permanent.token;
|
||||
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.MageInt;
|
||||
|
||||
/**
|
||||
* @author spjspj
|
||||
*/
|
||||
public final class RallyTheHordeWarriorToken extends TokenImpl {
|
||||
|
||||
public RallyTheHordeWarriorToken() {
|
||||
super("Warrior Token", "1/1 red Warrior creature token");
|
||||
cardType.add(CardType.CREATURE);
|
||||
color.setRed(true);
|
||||
subtype.add(SubType.WARRIOR);
|
||||
power = new MageInt(1);
|
||||
toughness = new MageInt(1);
|
||||
}
|
||||
|
||||
private RallyTheHordeWarriorToken(final RallyTheHordeWarriorToken token) {
|
||||
super(token);
|
||||
}
|
||||
|
||||
public RallyTheHordeWarriorToken copy() {
|
||||
return new RallyTheHordeWarriorToken(this);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,30 +0,0 @@
|
|||
package mage.game.permanent.token;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.keyword.FlyingAbility;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
|
||||
/**
|
||||
* @author spjspj
|
||||
*/
|
||||
public final class SorinSolemnVisitorVampireToken extends TokenImpl {
|
||||
|
||||
public SorinSolemnVisitorVampireToken() {
|
||||
super("Vampire Token", "2/2 black Vampire creature token with flying");
|
||||
cardType.add(CardType.CREATURE);
|
||||
color.setBlack(true);
|
||||
subtype.add(SubType.VAMPIRE);
|
||||
power = new MageInt(2);
|
||||
toughness = new MageInt(2);
|
||||
addAbility(FlyingAbility.getInstance());
|
||||
}
|
||||
|
||||
private SorinSolemnVisitorVampireToken(final SorinSolemnVisitorVampireToken token) {
|
||||
super(token);
|
||||
}
|
||||
|
||||
public SorinSolemnVisitorVampireToken copy() {
|
||||
return new SorinSolemnVisitorVampireToken(this);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,32 +0,0 @@
|
|||
package mage.game.permanent.token;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
|
||||
/**
|
||||
* @author spjspj
|
||||
*/
|
||||
public final class SpoilsOfBloodHorrorToken extends TokenImpl {
|
||||
|
||||
public SpoilsOfBloodHorrorToken() {
|
||||
this(1);
|
||||
}
|
||||
|
||||
public SpoilsOfBloodHorrorToken(int xValue) {
|
||||
super("Horror Token", "X/X black Horror creature token");
|
||||
cardType.add(CardType.CREATURE);
|
||||
color.setBlack(true);
|
||||
subtype.add(SubType.HORROR);
|
||||
power = new MageInt(xValue);
|
||||
toughness = new MageInt(xValue);
|
||||
}
|
||||
|
||||
private SpoilsOfBloodHorrorToken(final SpoilsOfBloodHorrorToken token) {
|
||||
super(token);
|
||||
}
|
||||
|
||||
public SpoilsOfBloodHorrorToken copy() {
|
||||
return new SpoilsOfBloodHorrorToken(this);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,29 +0,0 @@
|
|||
package mage.game.permanent.token;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
|
||||
/**
|
||||
* @author spjspj
|
||||
*/
|
||||
|
||||
public final class WalkerOfTheGroveToken extends TokenImpl {
|
||||
|
||||
public WalkerOfTheGroveToken() {
|
||||
super("Elemental Token", "4/4 green Elemental creature token");
|
||||
cardType.add(CardType.CREATURE);
|
||||
this.subtype.add(SubType.ELEMENTAL);
|
||||
this.color.setGreen(true);
|
||||
power = new MageInt(4);
|
||||
toughness = new MageInt(4);
|
||||
}
|
||||
|
||||
private WalkerOfTheGroveToken(final WalkerOfTheGroveToken token) {
|
||||
super(token);
|
||||
}
|
||||
|
||||
public WalkerOfTheGroveToken copy() {
|
||||
return new WalkerOfTheGroveToken(this);
|
||||
}
|
||||
}
|
||||
|
|
@ -242,7 +242,7 @@
|
|||
|Generate|TOK:ARN|Djinn|||DjinnToken|
|
||||
|Generate|TOK:AVR|Angel|||AngelToken|
|
||||
|Generate|TOK:AVR|Demon|||DemonToken|
|
||||
|Generate|TOK:AVR|Human|1||RedHumanToken|
|
||||
|Generate|TOK:AVR|Human|1||ThatcherHumanToken|
|
||||
|Generate|TOK:AVR|Human|2||HumanToken|
|
||||
|Generate|TOK:AVR|Spirit|1||SpiritBlueToken|
|
||||
|Generate|TOK:AVR|Spirit|2||SpiritWhiteToken|
|
||||
|
|
@ -257,7 +257,7 @@
|
|||
|Generate|TOK:BFZ|Knight Ally|||KnightAllyToken|
|
||||
|Generate|TOK:BFZ|Kor Ally|||KorAllyToken|
|
||||
|Generate|TOK:BFZ|Octopus|||OctopusToken|
|
||||
|Generate|TOK:BFZ|Plant|||GrovetenderDruidsPlantToken|
|
||||
|Generate|TOK:BFZ|Plant|||Plant11Token|
|
||||
|Generate|TOK:BNG|Bird|1||EnchantmentBirdToken|
|
||||
|Generate|TOK:BNG|Bird|2||BirdToken|
|
||||
|Generate|TOK:BNG|Cat Soldier|||CatSoldierCreatureToken|
|
||||
|
|
@ -284,7 +284,7 @@
|
|||
|Generate|TOK:C14|Phyrexian Germ|||PhyrexianGermToken|
|
||||
|Generate|TOK:C14|Goat|||GoatToken|
|
||||
|Generate|TOK:C14|Goblin|||GoblinToken|
|
||||
|Generate|TOK:C14|Horror|||SpoilsOfBloodHorrorToken|
|
||||
|Generate|TOK:C14|Horror|||HorrorXXBlackToken|
|
||||
|Generate|TOK:C14|Kor Soldier|||KorSoldierToken|
|
||||
|Generate|TOK:C14|Kraken|||Kraken99Token|
|
||||
|Generate|TOK:C14|Myr|||MyrToken|
|
||||
|
|
@ -395,7 +395,7 @@
|
|||
|Generate|TOK:C19|Phyrexian Horror|||PhyrexianRebirthHorrorToken|
|
||||
|Generate|TOK:C19|Human|||HumanToken|
|
||||
|Generate|TOK:C19|Pegasus|||PegasusToken|
|
||||
|Generate|TOK:C19|Plant|||GrismoldPlantToken|
|
||||
|Generate|TOK:C19|Plant|||Plant11Token|
|
||||
|Generate|TOK:C19|Rhino|||RhinoToken|
|
||||
|Generate|TOK:C19|Saproling|||SaprolingToken|
|
||||
|Generate|TOK:C19|Sculpture|||DoomedArtisanToken|
|
||||
|
|
@ -457,7 +457,7 @@
|
|||
|Generate|TOK:DDD|Beast|2||BeastToken2|
|
||||
|Generate|TOK:DDD|Elephant|||ElephantToken|
|
||||
|Generate|TOK:DDE|Hornet|||HornetToken|
|
||||
|Generate|TOK:DDE|Minion|||MinionToken|
|
||||
|Generate|TOK:DDE|Phyrexian Minion|||PhyrexianMinionToken|
|
||||
|Generate|TOK:DDE|Saproling|||SaprolingToken|
|
||||
|Generate|TOK:DDF|Soldier|||SoldierToken|
|
||||
|Generate|TOK:DDG|Goblin|||GoblinToken|
|
||||
|
|
@ -612,7 +612,7 @@
|
|||
# LGN don't have tokens, from wiki: A Sliver token for Brood Sliver and a Goblin token for Warbreak Trumpeter were featured as a Magic Player Reward.
|
||||
|Generate|TOK:LRW|Avatar|||AvatarToken|
|
||||
|Generate|TOK:LRW|Beast|||BeastToken|
|
||||
|Generate|TOK:LRW|Elemental|1||WalkerOfTheGroveToken|
|
||||
|Generate|TOK:LRW|Elemental|1||Elemental44GreenToken|
|
||||
|Generate|TOK:LRW|Elemental|2||WhiteElementalToken|
|
||||
|Generate|TOK:LRW|Elemental Shaman|||ElementalShamanToken|
|
||||
|Generate|TOK:LRW|Elf Warrior|||ElfWarriorToken|
|
||||
|
|
@ -724,7 +724,7 @@
|
|||
|Generate|TOK:MM3|Zombie|||ZombieToken|
|
||||
|Generate|TOK:MMA|Bat|||BatToken|
|
||||
|Generate|TOK:MMA|Dragon|||DragonToken|
|
||||
|Generate|TOK:MMA|Elemental|||WalkerOfTheGroveToken|
|
||||
|Generate|TOK:MMA|Elemental|||Elemental44GreenToken|
|
||||
|Generate|TOK:MMA|Faerie Rogue|||OonaQueenFaerieRogueToken|
|
||||
|Generate|TOK:MMA|Giant Warrior|||GiantWarriorToken|
|
||||
|Generate|TOK:MMA|Goblin Rogue|||GoblinRogueToken|
|
||||
|
|
@ -757,7 +757,7 @@
|
|||
|Generate|TOK:OGW|Eldrazi Scion|4||EldraziScionToken|
|
||||
|Generate|TOK:OGW|Eldrazi Scion|5||EldraziScionToken|
|
||||
|Generate|TOK:OGW|Eldrazi Scion|6||EldraziScionToken|
|
||||
|Generate|TOK:OGW|Elemental|1||SeedGuardianToken|
|
||||
|Generate|TOK:OGW|Elemental|1||ElementalXXGreenToken|
|
||||
|Generate|TOK:OGW|Elemental|2||ElementalTokenWithHaste|
|
||||
|Generate|TOK:OGW|Plant|||PlantToken|
|
||||
|Generate|TOK:OGW|Zombie|||ZombieToken|
|
||||
|
|
@ -1073,7 +1073,7 @@
|
|||
# OonaQueenFaerieRogueToken is FaerieRogueToken with additional blue color, but ZNC contains only one token - so don't use normal token for it
|
||||
#|Generate|TOK:ZNC|Faerie Rogue|||OonaQueenFaerieRogueToken|
|
||||
# Germ token uses in chest and antology, but scryfall put it here
|
||||
#|Generate|TOK:ZNC|Phyrexian Germ|||PhyrexianGermToken|
|
||||
|Generate|TOK:ZNC|Phyrexian Germ|||PhyrexianGermToken|
|
||||
#
|
||||
|Generate|TOK:ZNC|Goblin Rogue|||GoblinRogueToken|
|
||||
|Generate|TOK:ZNC|Kor Ally|||KorAllyToken|
|
||||
|
|
@ -1308,7 +1308,7 @@
|
|||
# UMA
|
||||
|Generate|TOK:UMA|Citizen|||CitizenToken|
|
||||
|Generate|TOK:UMA|Drake|||DrakeToken|
|
||||
|Generate|TOK:UMA|Elemental|1||WalkerOfTheGroveToken|
|
||||
|Generate|TOK:UMA|Elemental|1||Elemental44GreenToken|
|
||||
|Generate|TOK:UMA|Elemental|2||RedElementalToken|
|
||||
|Generate|TOK:UMA|Elemental|3||RedElementalToken|
|
||||
|Generate|TOK:UMA|Faerie Rogue|||FaerieRogueToken|
|
||||
|
|
@ -1536,7 +1536,7 @@
|
|||
|Generate|TOK:DDR|Eldrazi Scion|||EldraziScionToken|
|
||||
|Generate|TOK:DDR|Demon|||DemonToken|
|
||||
|Generate|TOK:DDR|Zombie Giant|||QuestForTheGravelordZombieToken|
|
||||
|Generate|TOK:DDR|Elemental|||WalkerOfTheGroveToken|
|
||||
|Generate|TOK:DDR|Elemental|||Elemental44GreenToken|
|
||||
|Generate|TOK:DDR|Plant|||PlantToken|
|
||||
|
||||
# DDS
|
||||
|
|
@ -2176,7 +2176,7 @@
|
|||
|Generate|TOK:OTJ|Bird|||BlueBirdToken|
|
||||
|Generate|TOK:OTJ|Clue|||ClueArtifactToken|
|
||||
|Generate|TOK:OTJ|Dinosaur|||Dinosaur31Token|
|
||||
|Generate|TOK:OTJ|Elemental|||SeedGuardianToken|
|
||||
|Generate|TOK:OTJ|Elemental|||ElementalXXGreenToken|
|
||||
|Generate|TOK:OTJ|Elk|||ElkToken|
|
||||
|Generate|TOK:OTJ|Mercenary|||MercenaryToken|
|
||||
|Generate|TOK:OTJ|Meteorite|||MeteoriteToken|
|
||||
|
|
@ -2460,7 +2460,7 @@
|
|||
|Generate|TOK:DFT|Elephant|||ElephantToken|
|
||||
|Generate|TOK:DFT|Goblin|||GoblinToken|
|
||||
|Generate|TOK:DFT|Insect|||InsectToken|
|
||||
|Generate|TOK:DFT|Pilot|||PilotCrewToken|
|
||||
|Generate|TOK:DFT|Pilot|||PilotSaddleCrewToken|
|
||||
|Generate|TOK:DFT|Servo|||ServoToken|
|
||||
|Generate|TOK:DFT|Thopter|1||ThopterColorlessToken|
|
||||
|Generate|TOK:DFT|Thopter|2||ThopterColorlessToken|
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue