Remove more duplicate tokens and rename some tokens to more generic names

This commit is contained in:
Alex W. Jackson 2022-03-15 04:23:10 -04:00
parent 6b0115157b
commit 77433d7ee6
20 changed files with 64 additions and 229 deletions

View file

@ -234,7 +234,7 @@
|Generate|TOK:ALL|Zombie|||ZombieToken| |Generate|TOK:ALL|Zombie|||ZombieToken|
|Generate|TOK:APC|Angel|||HauntedAngelToken| |Generate|TOK:APC|Angel|||HauntedAngelToken|
|Generate|TOK:APC|Cat|||PenumbraBobcatToken| |Generate|TOK:APC|Cat|||PenumbraBobcatToken|
|Generate|TOK:APC|Goblin Soldier|||GoblinTrenchesToken| |Generate|TOK:APC|Goblin Soldier|||GoblinSoldierToken|
|Generate|TOK:APC|Kavu|||PenumbraKavuToken| |Generate|TOK:APC|Kavu|||PenumbraKavuToken|
|Generate|TOK:APC|Saproling|||SaprolingToken| |Generate|TOK:APC|Saproling|||SaprolingToken|
|Generate|TOK:APC|Wurm|||PenumbraWurmToken| |Generate|TOK:APC|Wurm|||PenumbraWurmToken|
@ -589,7 +589,7 @@
|Generate|TOK:DGM|Spirit|||TeysaEnvoyOfGhostsToken| |Generate|TOK:DGM|Spirit|||TeysaEnvoyOfGhostsToken|
|Generate|TOK:DGM|Wurm|1||WurmWithTrampleToken| |Generate|TOK:DGM|Wurm|1||WurmWithTrampleToken|
|Generate|TOK:DGM|Wurm|2||Wurm55Token| |Generate|TOK:DGM|Wurm|2||Wurm55Token|
|Generate|TOK:DIS|Bird|||DovescapeToken| |Generate|TOK:DIS|Bird|||WhiteBlueBirdToken|
|Generate|TOK:DIS|Drake|||LeafdrakeRoostDrakeToken| |Generate|TOK:DIS|Drake|||LeafdrakeRoostDrakeToken|
|Generate|TOK:DIS|Elemental|||ResearchDevelopmentToken| |Generate|TOK:DIS|Elemental|||ResearchDevelopmentToken|
|Generate|TOK:DIS|Goblin|||RakdosGuildmageGoblinToken| |Generate|TOK:DIS|Goblin|||RakdosGuildmageGoblinToken|
@ -643,7 +643,7 @@
|Generate|TOK:EMA|Elemental|2||CallTheSkyBreakerElementalToken| |Generate|TOK:EMA|Elemental|2||CallTheSkyBreakerElementalToken|
|Generate|TOK:EMA|Elephant|||ElephantToken| |Generate|TOK:EMA|Elephant|||ElephantToken|
|Generate|TOK:EMA|Elf Warrior|||ElfWarriorToken| |Generate|TOK:EMA|Elf Warrior|||ElfWarriorToken|
|Generate|TOK:EMA|Goblin Soldier|||GoblinTrenchesToken| |Generate|TOK:EMA|Goblin Soldier|||GoblinSoldierToken|
|Generate|TOK:EMA|Goblin|||GoblinToken| |Generate|TOK:EMA|Goblin|||GoblinToken|
|Generate|TOK:EMA|Serf|||SerfToken| |Generate|TOK:EMA|Serf|||SerfToken|
|Generate|TOK:EMA|Soldier|||SoldierToken| |Generate|TOK:EMA|Soldier|||SoldierToken|
@ -667,10 +667,10 @@
|Generate|TOK:EMN|Zombie|3||ZombieToken| |Generate|TOK:EMN|Zombie|3||ZombieToken|
|Generate|TOK:EMN|Zombie|4||ZombieToken2| |Generate|TOK:EMN|Zombie|4||ZombieToken2|
|Generate|TOK:EVE|Beast|||BeastToken| |Generate|TOK:EVE|Beast|||BeastToken|
|Generate|TOK:EVE|Bird|||OwlToken| |Generate|TOK:EVE|Bird|||BlueBirdToken|
|Generate|TOK:EVE|Elemental|||CallTheSkyBreakerElementalToken| |Generate|TOK:EVE|Elemental|||CallTheSkyBreakerElementalToken|
|Generate|TOK:EVE|Goat|||GoatToken| |Generate|TOK:EVE|Goat|||GoatToken|
|Generate|TOK:EVE|Goblin Soldier|||GoblinTrenchesToken| |Generate|TOK:EVE|Goblin Soldier|||GoblinSoldierToken|
|Generate|TOK:EVE|Kithkin Soldier|||KithkinSoldierToken| |Generate|TOK:EVE|Kithkin Soldier|||KithkinSoldierToken|
|Generate|TOK:EVE|Spirit|||BeckonApparitionToken| |Generate|TOK:EVE|Spirit|||BeckonApparitionToken|
|Generate|TOK:EVE|Wolf|||WolfToken| |Generate|TOK:EVE|Wolf|||WolfToken|
@ -733,7 +733,7 @@
|Generate|TOK:HOU|Steadfast Sentinel|||| |Generate|TOK:HOU|Steadfast Sentinel||||
|Generate|TOK:HOU|Sunscourge Champion|||| |Generate|TOK:HOU|Sunscourge Champion||||
|Generate|TOK:ICE|Caribou|||CaribouToken| |Generate|TOK:ICE|Caribou|||CaribouToken|
|Generate|TOK:INV|Bird|||OwlToken| |Generate|TOK:INV|Bird|||BlueBirdToken|
|Generate|TOK:INV|Elephant|||ElephantToken| |Generate|TOK:INV|Elephant|||ElephantToken|
|Generate|TOK:INV|Reflection|||ReflectionToken| |Generate|TOK:INV|Reflection|||ReflectionToken|
|Generate|TOK:INV|Saproling|||SaprolingToken| |Generate|TOK:INV|Saproling|||SaprolingToken|
@ -1082,10 +1082,8 @@
|Generate|TOK:SCG|Soldier|||SoldierToken| |Generate|TOK:SCG|Soldier|||SoldierToken|
|Generate|TOK:SHM|Elemental|1||DinOfTheFireherdToken| |Generate|TOK:SHM|Elemental|1||DinOfTheFireherdToken|
|Generate|TOK:SHM|Elemental|2||RedElementalToken| |Generate|TOK:SHM|Elemental|2||RedElementalToken|
|Generate|TOK:SHM|Elf Warrior|1|
|Generate|TOK:SHM|Elf Warrior|2|
|Generate|TOK:SHM|Elf Warrior|1||ElfWarriorToken| |Generate|TOK:SHM|Elf Warrior|1||ElfWarriorToken|
|Generate|TOK:SHM|Elf Warrior|2||RhysTheRedeemedToken| |Generate|TOK:SHM|Elf Warrior|2||GreenWhiteElfWarriorToken|
|Generate|TOK:SHM|Faerie Rogue|||OonaQueenFaerieToken| |Generate|TOK:SHM|Faerie Rogue|||OonaQueenFaerieToken|
|Generate|TOK:SHM|Giant Warrior|||GiantBaitingGiantWarriorToken| |Generate|TOK:SHM|Giant Warrior|||GiantBaitingGiantWarriorToken|
|Generate|TOK:SHM|Goblin Warrior|||WortTheRaidmotherToken| |Generate|TOK:SHM|Goblin Warrior|||WortTheRaidmotherToken|
@ -1139,7 +1137,7 @@
|Generate|TOK:THS|Cleric|||HeliodGodOfTheSunToken| |Generate|TOK:THS|Cleric|||HeliodGodOfTheSunToken|
|Generate|TOK:THS|Elemental|||MasterOfWavesElementalToken| |Generate|TOK:THS|Elemental|||MasterOfWavesElementalToken|
|Generate|TOK:THS|Golem|||HammerOfPurphorosGolemToken| |Generate|TOK:THS|Golem|||HammerOfPurphorosGolemToken|
|Generate|TOK:THS|Harpy|||AbhorrentOverlordHarpyToken| |Generate|TOK:THS|Harpy|||HarpyToken|
|Generate|TOK:THS|Satyr|||XenagosSatyrToken| |Generate|TOK:THS|Satyr|||XenagosSatyrToken|
|Generate|TOK:THS|Soldier|1||SoldierToken| |Generate|TOK:THS|Soldier|1||SoldierToken|
|Generate|TOK:THS|Soldier|2||SoldierToken| |Generate|TOK:THS|Soldier|2||SoldierToken|
@ -1192,7 +1190,7 @@
|Generate|TOK:VMA|Boar|||BoarToken| |Generate|TOK:VMA|Boar|||BoarToken|
|Generate|TOK:VMA|Demon|||ReignOfThePitToken| |Generate|TOK:VMA|Demon|||ReignOfThePitToken|
|Generate|TOK:VMA|Elephant|||ElephantToken| |Generate|TOK:VMA|Elephant|||ElephantToken|
|Generate|TOK:VMA|Goblin Soldier|||GoblinTrenchesToken| |Generate|TOK:VMA|Goblin Soldier|||GoblinSoldierToken|
|Generate|TOK:VMA|Goblin|||GoblinToken| |Generate|TOK:VMA|Goblin|||GoblinToken|
|Generate|TOK:VMA|Insect|||InsectToken| |Generate|TOK:VMA|Insect|||InsectToken|
|Generate|TOK:VMA|Reflection|||ReflectionToken| |Generate|TOK:VMA|Reflection|||ReflectionToken|
@ -1467,7 +1465,7 @@
# KHM # KHM
|Generate|TOK:KHM|Angel Warrior|||AngelWarriorVigilanceToken| |Generate|TOK:KHM|Angel Warrior|||AngelWarriorVigilanceToken|
|Generate|TOK:KHM|Bear|||BearToken| |Generate|TOK:KHM|Bear|||BearToken|
|Generate|TOK:KHM|Bird|||OwlToken| |Generate|TOK:KHM|Bird|||BlueBirdToken|
|Generate|TOK:KHM|Cat|||GreenCat2Token| |Generate|TOK:KHM|Cat|||GreenCat2Token|
|Generate|TOK:KHM|Demon Berserker|||DemonBerserkerToken| |Generate|TOK:KHM|Demon Berserker|||DemonBerserkerToken|
|Generate|TOK:KHM|Dragon|||DragonToken2| |Generate|TOK:KHM|Dragon|||DragonToken2|

View file

@ -14,7 +14,7 @@ import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.TargetController; import mage.constants.TargetController;
import mage.filter.StaticFilters; import mage.filter.StaticFilters;
import mage.game.permanent.token.TokenImpl; import mage.game.permanent.token.HarpyToken;
import java.util.UUID; import java.util.UUID;
@ -34,7 +34,7 @@ public final class AbhorrentOverlord extends CardImpl {
this.addAbility(FlyingAbility.getInstance()); this.addAbility(FlyingAbility.getInstance());
// When Abhorrent Overlord enters the battlefield, create a number of 1/1 black Harpy creature tokens with flying equal to your devotion to black. // When Abhorrent Overlord enters the battlefield, create a number of 1/1 black Harpy creature tokens with flying equal to your devotion to black.
Effect effect = new CreateTokenEffect(new AbhorrentOverlordHarpyToken(), DevotionCount.B); Effect effect = new CreateTokenEffect(new HarpyToken(), DevotionCount.B);
effect.setText("create a number of 1/1 black Harpy creature tokens with flying equal to your devotion to black. <i>(Each {B} in the mana costs of permanents you control counts toward your devotion to black.)</i>"); effect.setText("create a number of 1/1 black Harpy creature tokens with flying equal to your devotion to black. <i>(Each {B} in the mana costs of permanents you control counts toward your devotion to black.)</i>");
this.addAbility(new EntersBattlefieldTriggeredAbility(effect).addHint(DevotionCount.B.getHint())); this.addAbility(new EntersBattlefieldTriggeredAbility(effect).addHint(DevotionCount.B.getHint()));
@ -51,25 +51,3 @@ public final class AbhorrentOverlord extends CardImpl {
return new AbhorrentOverlord(this); return new AbhorrentOverlord(this);
} }
} }
class AbhorrentOverlordHarpyToken extends TokenImpl {
AbhorrentOverlordHarpyToken() {
super("Harpy Token", "1/1 black Harpy creature tokens with flying");
cardType.add(CardType.CREATURE);
color.setBlack(true);
subtype.add(SubType.HARPY);
power = new MageInt(1);
toughness = new MageInt(1);
this.addAbility(FlyingAbility.getInstance());
}
private AbhorrentOverlordHarpyToken(final AbhorrentOverlordHarpyToken token) {
super(token);
}
public AbhorrentOverlordHarpyToken copy() {
return new AbhorrentOverlordHarpyToken(this);
}
}

View file

@ -7,7 +7,7 @@ import mage.abilities.keyword.ForetellAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.game.permanent.token.OwlToken; import mage.game.permanent.token.BlueBirdToken;
import java.util.UUID; import java.util.UUID;
@ -20,7 +20,7 @@ public final class AlrundsEpiphany extends CardImpl {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{5}{U}{U}"); super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{5}{U}{U}");
// Create two 1/1 blue Bird creature tokens with flying. Take an extra turn after this one. Exile Alrund's Epiphany. // Create two 1/1 blue Bird creature tokens with flying. Take an extra turn after this one. Exile Alrund's Epiphany.
this.getSpellAbility().addEffect(new CreateTokenEffect(new OwlToken(), 2)); this.getSpellAbility().addEffect(new CreateTokenEffect(new BlueBirdToken(), 2));
this.getSpellAbility().addEffect(new AddExtraTurnControllerEffect()); this.getSpellAbility().addEffect(new AddExtraTurnControllerEffect());
this.getSpellAbility().addEffect(new ExileSpellEffect()); this.getSpellAbility().addEffect(new ExileSpellEffect());

View file

@ -1,4 +1,3 @@
package mage.cards.d; package mage.cards.d;
import java.util.UUID; import java.util.UUID;
@ -10,11 +9,9 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.Outcome; import mage.constants.Outcome;
import mage.constants.SetTargetPointer; import mage.constants.SetTargetPointer;
import mage.filter.FilterSpell; import mage.filter.StaticFilters;
import mage.filter.predicate.Predicates;
import mage.game.Game; import mage.game.Game;
import mage.game.permanent.token.DovescapeToken; import mage.game.permanent.token.WhiteBlueBirdToken;
import mage.game.permanent.token.Token;
import mage.game.stack.Spell; import mage.game.stack.Spell;
/** /**
@ -23,17 +20,11 @@ import mage.game.stack.Spell;
*/ */
public final class Dovescape extends CardImpl { public final class Dovescape extends CardImpl {
private static final FilterSpell filter = new FilterSpell("a noncreature spell");
static {
filter.add(Predicates.not(CardType.CREATURE.getPredicate()));
}
public Dovescape(UUID ownerId, CardSetInfo setInfo) { public Dovescape(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{W/U}{W/U}{W/U}"); super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{W/U}{W/U}{W/U}");
// Whenever a player casts a noncreature spell, counter that spell. That player creates X 1/1 white and blue Bird creature tokens with flying, where X is the spell's converted mana cost. // Whenever a player casts a noncreature spell, counter that spell. That player creates X 1/1 white and blue Bird creature tokens with flying, where X is the spell's converted mana cost.
this.addAbility(new SpellCastAllTriggeredAbility(new DovescapeEffect(), filter, false, SetTargetPointer.SPELL)); this.addAbility(new SpellCastAllTriggeredAbility(new DovescapeEffect(), StaticFilters.FILTER_SPELL_A_NON_CREATURE, false, SetTargetPointer.SPELL));
} }
private Dovescape(final Dovescape card) { private Dovescape(final Dovescape card) {
@ -72,8 +63,7 @@ class DovescapeEffect extends OneShotEffect {
spellControllerID = spell.getControllerId(); spellControllerID = spell.getControllerId();
game.getStack().counter(spell.getId(), source, game); game.getStack().counter(spell.getId(), source, game);
} }
Token token = new DovescapeToken(); new WhiteBlueBirdToken().putOntoBattlefield(spellCMC, game, source, spellControllerID);
token.putOntoBattlefield(spellCMC, game, source, spellControllerID);
return true; return true;
} }
} }

View file

@ -10,7 +10,7 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.filter.FilterSpell; import mage.filter.FilterSpell;
import mage.filter.predicate.mageobject.ColorPredicate; import mage.filter.predicate.mageobject.ColorPredicate;
import mage.game.permanent.token.OwlToken; import mage.game.permanent.token.BlueBirdToken;
import mage.game.permanent.token.WolfToken; import mage.game.permanent.token.WolfToken;
/** /**
@ -30,7 +30,7 @@ public final class FableOfWolfAndOwl extends CardImpl {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{G/U}{G/U}{G/U}"); super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{G/U}{G/U}{G/U}");
this.addAbility(new SpellCastControllerTriggeredAbility(new CreateTokenEffect(new WolfToken(), 1), filterGreenSpell, true)); this.addAbility(new SpellCastControllerTriggeredAbility(new CreateTokenEffect(new WolfToken(), 1), filterGreenSpell, true));
this.addAbility(new SpellCastControllerTriggeredAbility(new CreateTokenEffect(new OwlToken(), 1), filterBlueSpell, true)); this.addAbility(new SpellCastControllerTriggeredAbility(new CreateTokenEffect(new BlueBirdToken(), 1), filterBlueSpell, true));
} }
private FableOfWolfAndOwl(final FableOfWolfAndOwl card) { private FableOfWolfAndOwl(final FableOfWolfAndOwl card) {

View file

@ -1,4 +1,3 @@
package mage.cards.g; package mage.cards.g;
import java.util.UUID; import java.util.UUID;
@ -10,10 +9,8 @@ import mage.abilities.effects.common.CreateTokenEffect;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.Zone; import mage.filter.StaticFilters;
import mage.filter.common.FilterControlledLandPermanent; import mage.game.permanent.token.GoblinSoldierToken;
import mage.filter.common.FilterControlledPermanent;
import mage.game.permanent.token.GoblinTrenchesToken;
import mage.target.common.TargetControlledPermanent; import mage.target.common.TargetControlledPermanent;
/** /**
@ -22,14 +19,12 @@ import mage.target.common.TargetControlledPermanent;
*/ */
public final class GoblinTrenches extends CardImpl { public final class GoblinTrenches extends CardImpl {
static final FilterControlledPermanent filter = new FilterControlledLandPermanent("a land");
public GoblinTrenches(UUID ownerId, CardSetInfo setInfo) { public GoblinTrenches(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{R}{W}"); super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{R}{W}");
// {2}, Sacrifice a land: Create two 1/1 red and white Goblin Soldier creature tokens. // {2}, Sacrifice a land: Create two 1/1 red and white Goblin Soldier creature tokens.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new CreateTokenEffect(new GoblinTrenchesToken(), 2), new GenericManaCost(2)); Ability ability = new SimpleActivatedAbility(new CreateTokenEffect(new GoblinSoldierToken(), 2), new GenericManaCost(2));
ability.addCost(new SacrificeTargetCost(new TargetControlledPermanent(filter))); ability.addCost(new SacrificeTargetCost(new TargetControlledPermanent(StaticFilters.FILTER_CONTROLLED_LAND_SHORT_TEXT)));
this.addAbility(ability); this.addAbility(ability);
} }

View file

@ -1,4 +1,3 @@
package mage.cards.m; package mage.cards.m;
import java.util.UUID; import java.util.UUID;
@ -11,7 +10,7 @@ import mage.constants.CardType;
import mage.constants.Outcome; import mage.constants.Outcome;
import mage.game.Game; import mage.game.Game;
import mage.game.permanent.Permanent; import mage.game.permanent.Permanent;
import mage.game.permanent.token.MercyKillingToken; import mage.game.permanent.token.GreenWhiteElfWarriorToken;
import mage.target.common.TargetCreaturePermanent; import mage.target.common.TargetCreaturePermanent;
/** /**
@ -59,7 +58,7 @@ class MercyKillingTokenEffect extends OneShotEffect {
Permanent permanent = getTargetPointer().getFirstTargetPermanentOrLKI(game, source); Permanent permanent = getTargetPointer().getFirstTargetPermanentOrLKI(game, source);
if (permanent != null) { if (permanent != null) {
int power = permanent.getPower().getValue(); int power = permanent.getPower().getValue();
return new MercyKillingToken().putOntoBattlefield(power, game, source, permanent.getControllerId()); return new GreenWhiteElfWarriorToken().putOntoBattlefield(power, game, source, permanent.getControllerId());
} }
return false; return false;
} }

View file

@ -1,4 +1,3 @@
package mage.cards.o; package mage.cards.o;
import java.util.UUID; import java.util.UUID;
@ -9,7 +8,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.AbilityWord; import mage.constants.AbilityWord;
import mage.constants.CardType; import mage.constants.CardType;
import mage.game.permanent.token.OrderedMigrationBirdToken; import mage.game.permanent.token.BlueBirdToken;
/** /**
* *
@ -22,7 +21,7 @@ public final class OrderedMigration extends CardImpl {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{W}{U}"); super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{W}{U}");
// Domain - Create a 1/1 blue Bird creature token with flying for each basic land type among lands you control. // Domain - Create a 1/1 blue Bird creature token with flying for each basic land type among lands you control.
this.getSpellAbility().addEffect(new CreateTokenEffect(new OrderedMigrationBirdToken(), DomainValue.REGULAR)); this.getSpellAbility().addEffect(new CreateTokenEffect(new BlueBirdToken(), DomainValue.REGULAR));
this.getSpellAbility().setAbilityWord(AbilityWord.DOMAIN); this.getSpellAbility().setAbilityWord(AbilityWord.DOMAIN);
this.getSpellAbility().addHint(DomainHint.instance); this.getSpellAbility().addHint(DomainHint.instance);
} }

View file

@ -1,4 +1,3 @@
package mage.cards.p; package mage.cards.p;
import java.util.UUID; import java.util.UUID;
@ -16,11 +15,11 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.Duration; import mage.constants.Duration;
import mage.constants.Zone;
import mage.filter.common.FilterCreaturePermanent; import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.mageobject.AbilityPredicate; import mage.filter.predicate.mageobject.AbilityPredicate;
import mage.filter.predicate.mageobject.AnotherPredicate; import mage.filter.predicate.mageobject.AnotherPredicate;
import mage.game.permanent.token.TokenImpl; import mage.game.permanent.token.WhiteBlueBirdToken;
/** /**
* *
* @author fireshoes * @author fireshoes
@ -33,6 +32,8 @@ public final class PrideOfTheClouds extends CardImpl {
filter.add(AnotherPredicate.instance); filter.add(AnotherPredicate.instance);
filter.add(new AbilityPredicate(FlyingAbility.class)); filter.add(new AbilityPredicate(FlyingAbility.class));
} }
private static final DynamicValue xValue = new PermanentsOnBattlefieldCount(filter);
public PrideOfTheClouds(UUID ownerId, CardSetInfo setInfo) { public PrideOfTheClouds(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}{U}"); super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}{U}");
@ -43,13 +44,12 @@ public final class PrideOfTheClouds extends CardImpl {
// Flying // Flying
this.addAbility(FlyingAbility.getInstance()); this.addAbility(FlyingAbility.getInstance());
// Pride of the Clouds gets +1/+1 for each other creature with flying on the battlefield. // Pride of the Clouds gets +1/+1 for each other creature with flying on the battlefield.
DynamicValue xValue = new PermanentsOnBattlefieldCount(filter); this.addAbility(new SimpleStaticAbility(new BoostSourceEffect(xValue, xValue, Duration.WhileOnBattlefield)));
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostSourceEffect(xValue, xValue, Duration.WhileOnBattlefield)));
// Forecast - {2}{W}{U}, Reveal Pride of the Clouds from your hand: Create a 1/1 white and blue Bird creature token with flying. // Forecast - {2}{W}{U}, Reveal Pride of the Clouds from your hand: Create a 1/1 white and blue Bird creature token with flying.
this.addAbility(new ForecastAbility(new CreateTokenEffect(new BirdToken()), new ManaCostsImpl("{2}{W}{U}"))); this.addAbility(new ForecastAbility(new CreateTokenEffect(new WhiteBlueBirdToken()), new ManaCostsImpl("{2}{W}{U}")));
} }
private PrideOfTheClouds(final PrideOfTheClouds card) { private PrideOfTheClouds(final PrideOfTheClouds card) {
@ -60,25 +60,4 @@ public final class PrideOfTheClouds extends CardImpl {
public PrideOfTheClouds copy() { public PrideOfTheClouds copy() {
return new PrideOfTheClouds(this); return new PrideOfTheClouds(this);
} }
private static class BirdToken extends TokenImpl {
public BirdToken() {
super("Bird Token", "1/1 white and blue Bird creature token with flying");
cardType.add(CardType.CREATURE);
color.setWhite(true);
color.setBlue(true);
subtype.add(SubType.BIRD);
power = new MageInt(1);
toughness = new MageInt(1);
addAbility(FlyingAbility.getInstance());
}
public BirdToken(final BirdToken token) {
super(token);
}
public BirdToken copy() {
return new BirdToken(this);
}
}
} }

View file

@ -11,7 +11,7 @@ import mage.constants.Zone;
import mage.filter.StaticFilters; import mage.filter.StaticFilters;
import mage.game.Game; import mage.game.Game;
import mage.game.permanent.Permanent; import mage.game.permanent.Permanent;
import mage.game.permanent.token.OwlToken; import mage.game.permanent.token.BlueBirdToken;
import mage.players.Player; import mage.players.Player;
import mage.target.TargetPermanent; import mage.target.TargetPermanent;
@ -68,7 +68,7 @@ class RavenformEffect extends OneShotEffect {
} }
Player player = game.getPlayer(permanent.getControllerId()); Player player = game.getPlayer(permanent.getControllerId());
player.moveCards(permanent, Zone.EXILED, source, game); player.moveCards(permanent, Zone.EXILED, source, game);
new OwlToken().putOntoBattlefield(1, game, source, player.getId()); new BlueBirdToken().putOntoBattlefield(1, game, source, player.getId());
return true; return true;
} }
} }

View file

@ -1,4 +1,3 @@
package mage.cards.r; package mage.cards.r;
import java.util.UUID; import java.util.UUID;
@ -22,7 +21,7 @@ import mage.filter.FilterPermanent;
import mage.filter.predicate.permanent.TokenPredicate; import mage.filter.predicate.permanent.TokenPredicate;
import mage.game.Game; import mage.game.Game;
import mage.game.permanent.Permanent; import mage.game.permanent.Permanent;
import mage.game.permanent.token.RhysTheRedeemedToken; import mage.game.permanent.token.GreenWhiteElfWarriorToken;
import mage.players.Player; import mage.players.Player;
import mage.target.targetpointer.FixedTarget; import mage.target.targetpointer.FixedTarget;
@ -42,7 +41,7 @@ public final class RhysTheRedeemed extends CardImpl {
this.toughness = new MageInt(1); this.toughness = new MageInt(1);
// {2}{GW}, {tap}: Create a 1/1 green and white Elf Warrior creature token. // {2}{GW}, {tap}: Create a 1/1 green and white Elf Warrior creature token.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new CreateTokenEffect(new RhysTheRedeemedToken()), new ManaCostsImpl("{2}{G/W}")); Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new CreateTokenEffect(new GreenWhiteElfWarriorToken()), new ManaCostsImpl("{2}{G/W}"));
ability.addCost(new TapSourceCost()); ability.addCost(new TapSourceCost());
this.addAbility(ability); this.addAbility(ability);

View file

@ -19,7 +19,7 @@ import mage.game.Game;
import mage.game.events.DamagedPlayerEvent; import mage.game.events.DamagedPlayerEvent;
import mage.game.events.GameEvent; import mage.game.events.GameEvent;
import mage.game.permanent.Permanent; import mage.game.permanent.Permanent;
import mage.game.permanent.token.OwlToken; import mage.game.permanent.token.BlueBirdToken;
import mage.target.targetpointer.FixedTarget; import mage.target.targetpointer.FixedTarget;
/** /**
@ -38,7 +38,7 @@ public final class TheRavensWarning extends CardImpl {
// I Create a 1/1 blue Bird creature token with flying. You gain 2 life. // I Create a 1/1 blue Bird creature token with flying. You gain 2 life.
sagaAbility.addChapterEffect(this, SagaChapter.CHAPTER_I, sagaAbility.addChapterEffect(this, SagaChapter.CHAPTER_I,
new CreateTokenEffect(new OwlToken()), new GainLifeEffect(2) new CreateTokenEffect(new BlueBirdToken()), new GainLifeEffect(2)
); );
// II Whenever one or more creatures you control with flying deal combat damage to a player this turn, // II Whenever one or more creatures you control with flying deal combat damage to a player this turn,

View file

@ -10,9 +10,9 @@ import java.util.Arrays;
/** /**
* @author spjspj * @author spjspj
*/ */
public final class OwlToken extends TokenImpl { public final class BlueBirdToken extends TokenImpl {
public OwlToken() { public BlueBirdToken() {
super("Bird Token", "1/1 blue Bird creature token with flying"); super("Bird Token", "1/1 blue Bird creature token with flying");
cardType.add(CardType.CREATURE); cardType.add(CardType.CREATURE);
color.setBlue(true); color.setBlue(true);
@ -25,11 +25,11 @@ public final class OwlToken extends TokenImpl {
availableImageSetCodes = Arrays.asList("EVE", "INV", "KHM"); availableImageSetCodes = Arrays.asList("EVE", "INV", "KHM");
} }
public OwlToken(final OwlToken token) { public BlueBirdToken(final BlueBirdToken token) {
super(token); super(token);
} }
public OwlToken copy() { public BlueBirdToken copy() {
return new OwlToken(this); return new BlueBirdToken(this);
} }
} }

View file

@ -1,5 +1,3 @@
package mage.game.permanent.token; package mage.game.permanent.token;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
@ -12,7 +10,7 @@ import mage.MageInt;
public final class GoblinSoldierToken extends TokenImpl { public final class GoblinSoldierToken extends TokenImpl {
public GoblinSoldierToken() { public GoblinSoldierToken() {
super("Goblin Soldier Token", "1/1 red and white Goblin Soldier creature tokens"); super("Goblin Soldier Token", "1/1 red and white Goblin Soldier creature token");
cardType.add(CardType.CREATURE); cardType.add(CardType.CREATURE);
color.setRed(true); color.setRed(true);
color.setWhite(true); color.setWhite(true);
@ -21,6 +19,7 @@ public final class GoblinSoldierToken extends TokenImpl {
power = new MageInt(1); power = new MageInt(1);
toughness = new MageInt(1); toughness = new MageInt(1);
} }
public GoblinSoldierToken(final GoblinSoldierToken token) { public GoblinSoldierToken(final GoblinSoldierToken token) {
super(token); super(token);
} }
@ -28,5 +27,4 @@ public final class GoblinSoldierToken extends TokenImpl {
public GoblinSoldierToken copy() { public GoblinSoldierToken copy() {
return new GoblinSoldierToken(this); return new GoblinSoldierToken(this);
} }
} }

View file

@ -1,32 +0,0 @@
package mage.game.permanent.token;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.MageInt;
/**
*
* @author spjspj
*/
public final class GoblinTrenchesToken extends TokenImpl {
public GoblinTrenchesToken() {
super("Goblin Soldier Token", "1/1 red and white Goblin Soldier creature tokens");
cardType.add(CardType.CREATURE);
color.setRed(true);
color.setWhite(true);
subtype.add(SubType.GOBLIN);
subtype.add(SubType.SOLDIER);
power = new MageInt(1);
toughness = new MageInt(1);
}
public GoblinTrenchesToken(final GoblinTrenchesToken token) {
super(token);
}
public GoblinTrenchesToken copy() {
return new GoblinTrenchesToken(this);
}
}

View file

@ -9,9 +9,9 @@ import java.util.Arrays;
/** /**
* @author spjspj * @author spjspj
*/ */
public final class RhysTheRedeemedToken extends TokenImpl { public final class GreenWhiteElfWarriorToken extends TokenImpl {
public RhysTheRedeemedToken() { public GreenWhiteElfWarriorToken() {
super("Elf Warrior Token", "1/1 green and white Elf Warrior creature token"); super("Elf Warrior Token", "1/1 green and white Elf Warrior creature token");
cardType.add(CardType.CREATURE); cardType.add(CardType.CREATURE);
color.setGreen(true); color.setGreen(true);
@ -24,12 +24,12 @@ public final class RhysTheRedeemedToken extends TokenImpl {
availableImageSetCodes = Arrays.asList("SHM"); availableImageSetCodes = Arrays.asList("SHM");
} }
public RhysTheRedeemedToken(final RhysTheRedeemedToken token) { public GreenWhiteElfWarriorToken(final GreenWhiteElfWarriorToken token) {
super(token); super(token);
} }
public RhysTheRedeemedToken copy() { public GreenWhiteElfWarriorToken copy() {
return new RhysTheRedeemedToken(this); return new GreenWhiteElfWarriorToken(this);
} }
@Override @Override

View file

@ -1,5 +1,3 @@
package mage.game.permanent.token; package mage.game.permanent.token;
import mage.constants.CardType; import mage.constants.CardType;
@ -11,10 +9,10 @@ import mage.abilities.keyword.FlyingAbility;
* *
* @author spjspj * @author spjspj
*/ */
public final class AbhorrentOverlordHarpyToken extends TokenImpl { public final class HarpyToken extends TokenImpl {
public AbhorrentOverlordHarpyToken() { public HarpyToken() {
super("Harpy Token", "1/1 black Harpy creature tokens with flying"); super("Harpy Token", "1/1 black Harpy creature token with flying");
cardType.add(CardType.CREATURE); cardType.add(CardType.CREATURE);
color.setBlack(true); color.setBlack(true);
subtype.add(SubType.HARPY); subtype.add(SubType.HARPY);
@ -24,11 +22,11 @@ public final class AbhorrentOverlordHarpyToken extends TokenImpl {
this.addAbility(FlyingAbility.getInstance()); this.addAbility(FlyingAbility.getInstance());
} }
public AbhorrentOverlordHarpyToken(final AbhorrentOverlordHarpyToken token) { public HarpyToken(final HarpyToken token) {
super(token); super(token);
} }
public AbhorrentOverlordHarpyToken copy() { public HarpyToken copy() {
return new AbhorrentOverlordHarpyToken(this); return new HarpyToken(this);
} }
} }

View file

@ -1,32 +0,0 @@
package mage.game.permanent.token;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.MageInt;
/**
*
* @author spjspj
*/
public final class MercyKillingToken extends TokenImpl {
public MercyKillingToken() {
super("Elf Warrior Token", "1/1 green and white Elf Warrior creature token");
cardType.add(CardType.CREATURE);
color.setGreen(true);
color.setWhite(true);
subtype.add(SubType.ELF);
subtype.add(SubType.WARRIOR);
power = new MageInt(1);
toughness = new MageInt(1);
}
public MercyKillingToken(final MercyKillingToken token) {
super(token);
}
public MercyKillingToken copy() {
return new MercyKillingToken(this);
}
}

View file

@ -1,32 +0,0 @@
package mage.game.permanent.token;
import mage.MageInt;
import mage.abilities.keyword.FlyingAbility;
import mage.constants.CardType;
import mage.constants.SubType;
/**
*
* @author LoneFox
*/
public final class OrderedMigrationBirdToken extends TokenImpl {
public OrderedMigrationBirdToken() {
super("Bird Token", "1/1 blue Bird creature token with flying");
cardType.add(CardType.CREATURE);
color.setBlue(true);
subtype.add(SubType.BIRD);
power = new MageInt(1);
toughness = new MageInt(1);
addAbility(FlyingAbility.getInstance());
}
public OrderedMigrationBirdToken(final OrderedMigrationBirdToken token) {
super(token);
}
public OrderedMigrationBirdToken copy() {
return new OrderedMigrationBirdToken(this);
}
}

View file

@ -1,5 +1,3 @@
package mage.game.permanent.token; package mage.game.permanent.token;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
@ -10,9 +8,9 @@ import mage.abilities.keyword.FlyingAbility;
* *
* @author spjspj * @author spjspj
*/ */
public final class DovescapeToken extends TokenImpl { public final class WhiteBlueBirdToken extends TokenImpl {
public DovescapeToken() { public WhiteBlueBirdToken() {
super("Bird Token", "1/1 white and blue Bird creature token with flying"); super("Bird Token", "1/1 white and blue Bird creature token with flying");
cardType.add(CardType.CREATURE); cardType.add(CardType.CREATURE);
color.setWhite(true); color.setWhite(true);
@ -22,11 +20,11 @@ public final class DovescapeToken extends TokenImpl {
toughness = new MageInt(1); toughness = new MageInt(1);
this.addAbility(FlyingAbility.getInstance()); this.addAbility(FlyingAbility.getInstance());
} }
public DovescapeToken(final DovescapeToken token) { public WhiteBlueBirdToken(final WhiteBlueBirdToken token) {
super(token); super(token);
} }
public DovescapeToken copy() { public WhiteBlueBirdToken copy() {
return new DovescapeToken(this); return new WhiteBlueBirdToken(this);
} }
} }