[KHM] added tokens and download support;

This commit is contained in:
Oleg Agafonov 2021-02-06 20:30:19 +04:00
parent abe65411b6
commit f7bc745f10
50 changed files with 267 additions and 194 deletions

View file

@ -17,18 +17,17 @@ import static org.mage.plugins.card.utils.CardImageUtils.getImagesDir;
*/
public class DirectLinksForDownload implements Iterable<DownloadJob> {
private static final String backsideUrl = "https://upload.wikimedia.org/wikipedia/en/a/aa/Magic_the_gathering-card_back.jpg";
private static final Map<String, String> directLinks = new LinkedHashMap<>();
public static final String cardbackFilename = "cardback.jpg";
public static final String tokenFrameFilename = "tokenFrame.png";
public static final String foretellFilename = "foretell.jpg";
static {
directLinks.put(cardbackFilename, backsideUrl);
directLinks.put(cardbackFilename, "https://upload.wikimedia.org/wikipedia/en/a/aa/Magic_the_gathering-card_back.jpg");
directLinks.put(foretellFilename, "https://api.scryfall.com/cards/tkhm/23/en?format=image");
}
private File outDir;
private final File outDir;
public DirectLinksForDownload() {
this.outDir = new File(getImagesDir() + Constants.RESOURCE_PATH_DEFAULT_IMAGES);

View file

@ -496,6 +496,30 @@ public class ScryfallImageSupportTokens {
put("CMR/Treasure", "https://api.scryfall.com/cards/tcmr/12/en?format=image");
put("CMR/Zombie", "https://api.scryfall.com/cards/tcmr/6/en?format=image");
// KHM
put("KHM/Angel Warrior", "https://api.scryfall.com/cards/tkhm/2/en?format=image");
put("KHM/Bear", "https://api.scryfall.com/cards/tkhm/13/en?format=image");
put("KHM/Bird", "https://api.scryfall.com/cards/tkhm/5/en?format=image");
put("KHM/Cat", "https://api.scryfall.com/cards/tkhm/14/en?format=image");
put("KHM/Demon Berserker", "https://api.scryfall.com/cards/tkhm/10/en?format=image");
put("KHM/Dragon", "https://api.scryfall.com/cards/tkhm/11/en?format=image");
put("KHM/Dwarf Berserker", "https://api.scryfall.com/cards/tkhm/12/en?format=image");
put("KHM/Elf Warrior", "https://api.scryfall.com/cards/tkhm/15/en?format=image");
put("KHM/Giant Wizard", "https://api.scryfall.com/cards/tkhm/6/en?format=image");
put("KHM/Human Warrior", "https://api.scryfall.com/cards/tkhm/3/en?format=image");
put("KHM/Icy Manalith", "https://api.scryfall.com/cards/tkhm/17/en?format=image");
put("KHM/Koma's Coil", "https://api.scryfall.com/cards/tkhm/7/en?format=image");
put("KHM/Replicated Ring", "https://api.scryfall.com/cards/tkhm/18/en?format=image");
put("KHM/Shapeshifter", "https://api.scryfall.com/cards/tkhm/8/en?format=image");
put("KHM/Shard", "https://api.scryfall.com/cards/tkhm/1/en?format=image");
put("KHM/Spirit", "https://api.scryfall.com/cards/tkhm/4/en?format=image");
put("KHM/Treasure", "https://api.scryfall.com/cards/tkhm/19/en?format=image");
put("KHM/Troll Warrior", "https://api.scryfall.com/cards/tkhm/16/en?format=image");
put("KHM/Zombie Berserker", "https://api.scryfall.com/cards/tkhm/9/en?format=image");
put("KHM/Emblem Kaya the Inexorable", "https://api.scryfall.com/cards/tkhm/20/en?format=image");
put("KHM/Emblem Tibalt Cosmic Imposter", "https://api.scryfall.com/cards/tkhm/21/en?format=image");
put("KHM/Emblem Tyvar Kell", "https://api.scryfall.com/cards/tkhm/22/en?format=image");
// generate supported sets
supportedSets.clear();
for (String cardName : this.keySet()) {

View file

@ -102,6 +102,9 @@
|Generate|EMBLEM:M21|Basri Ket||Emblem Basri|BasriKetEmblem|
|Generate|EMBLEM:M21|Garruk, Unleashed||Emblem Garruk|GarrukUnleashedEmblem|
|Generate|EMBLEM:M21|Liliana, Waker of the Dead||Emblem Liliana|LilianaWakerOfTheDeadEmblem|
|Generate|EMBLEM:KHM|Kaya the Inexorable||Emblem Kaya|KayaTheInexorableEmblem|
|Generate|EMBLEM:KHM|Tibalt Cosmic Imposter||Emblem Tibalt|TibaltCosmicImposterEmblem|
|Generate|EMBLEM:KHM|Tyvar Kell||Emblem Tyvar|TyvarKellEmblem|
# Planes
|Generate|PLANE:PCA|Plane - Academy at Tolaria West|||AcademyAtTolariaWestPlane|
@ -279,7 +282,7 @@
|Generate|TOK:C13|Elemental|2||WalkerOfTheGroveToken|
|Generate|TOK:C13|Elemental|3||RedElementalToken|
|Generate|TOK:C13|Elephant|||ElephantToken|
|Generate|TOK:C13|Elf Warrior|||ElfToken|
|Generate|TOK:C13|Elf Warrior|||ElfWarriorToken|
|Generate|TOK:C13|Goat|||GoatToken|
|Generate|TOK:C13|Graveborn|||SekKuarDeathkeeperGravebornToken|
|Generate|TOK:C13|Insect|||InsectToken|
@ -304,7 +307,7 @@
|Generate|TOK:C14|Elephant|||ElephantToken|
|Generate|TOK:C14|Elf Druid|||FreyaliseLlanowarsFuryToken|
|Generate|TOK:C14|Elf Druid|||LlanowarElvesToken|
|Generate|TOK:C14|Elf Warrior|||ElfToken|
|Generate|TOK:C14|Elf Warrior|||ElfWarriorToken|
|Generate|TOK:C14|Equipment|||NahiriTheLithomancerEquipmentToken|
|Generate|TOK:C14|Fish|||ReefWormFishToken|
|Generate|TOK:C14|Gargoyle|||GargoyleToken|
@ -514,7 +517,7 @@
|Generate|TOK:DVD|Spirit|||SpiritWhiteToken|
|Generate|TOK:DVD|Thrull|||BreedingPitBlackInsectToken|
|Generate|TOK:DD3D|Elemental Shaman||
|Generate|TOK:EVG|Elf Warrior|||ElfToken|
|Generate|TOK:EVG|Elf Warrior|||ElfWarriorToken|
|Generate|TOK:EVG|Goblin|||GoblinToken|
|Generate|TOK:GVL|Ape|||PongifyApeToken|
|Generate|TOK:GVL|Bat|||BatToken|
@ -627,7 +630,7 @@
|Generate|TOK:EMA|Elemental|1||RedElementalToken|
|Generate|TOK:EMA|Elemental|2||CallTheSkyBreakerElementalToken|
|Generate|TOK:EMA|Elephant|||ElephantToken|
|Generate|TOK:EMA|Elf Warrior|||ElfToken|
|Generate|TOK:EMA|Elf Warrior|||ElfWarriorToken|
|Generate|TOK:EMA|Goblin Soldier|||GoblinTrenchesToken|
|Generate|TOK:EMA|Goblin|||GoblinToken|
|Generate|TOK:EMA|Serf|||SerfToken|
@ -661,7 +664,7 @@
|Generate|TOK:EVE|Wolf|||WolfToken|
|Generate|TOK:EVE|Worm|||WormHarvestToken|
|Generate|TOK:EVG|Elemental|||VoiceOfTheWoodsElementalToken|
|Generate|TOK:EVG|Elf Warrior|||ElfToken|
|Generate|TOK:EVG|Elf Warrior|||ElfWarriorToken|
|Generate|TOK:EVG|Goblin|||GoblinToken|
|Generate|TOK:EXO|Pegasus|||PegasusToken|
|Generate|TOK:EXO|Thopter|||ThopterColorlessToken|
@ -798,7 +801,7 @@
|Generate|TOK:LRW|Elemental Shaman|||ElementalShamanToken|
|Generate|TOK:LRW|Elemental|1||WalkerOfTheGroveToken|
|Generate|TOK:LRW|Elemental|2||WhiteElementalToken|
|Generate|TOK:LRW|Elf Warrior|||ElfToken|
|Generate|TOK:LRW|Elf Warrior|||ElfWarriorToken|
|Generate|TOK:LRW|Goblin Rogue|||GoblinRogueToken|
|Generate|TOK:LRW|Kithkin Soldier|||KithkinToken|
|Generate|TOK:LRW|Merfolk Wizard||
@ -952,7 +955,7 @@
|Generate|TOK:MMQ|Spirit|||SpiritWhiteToken|
|Generate|TOK:MMQ|Zombie|||ZombieToken|
|Generate|TOK:MOR|Elemental|||WalkerOfTheGroveToken|
|Generate|TOK:MOR|Elf Warrior|||ElfToken|
|Generate|TOK:MOR|Elf Warrior|||ElfWarriorToken|
|Generate|TOK:MOR|Faerie Rogue|||FaerieRogueToken|
|Generate|TOK:MOR|Giant Warrior|||GiantWarriorToken|
|Generate|TOK:MOR|Goblin Rogue|||GoblinRogueToken|
@ -1011,7 +1014,7 @@
|Generate|TOK:ORI|Ashaya, the Awoken World|||NissaSageAnimistToken|
|Generate|TOK:ORI|Demon|||DemonToken|
|Generate|TOK:ORI|Elemental|||ZendikarsRoilElementalToken|
|Generate|TOK:ORI|Elf Warrior|||ElfToken|
|Generate|TOK:ORI|Elf Warrior|||ElfWarriorToken|
|Generate|TOK:ORI|Goblin|||GoblinToken|
|Generate|TOK:ORI|Knight|||KnightToken|
|Generate|TOK:ORI|Soldier|||SoldierToken|
@ -1084,7 +1087,7 @@
|Generate|TOK:SHM|Elemental|2||RedElementalToken|
|Generate|TOK:SHM|Elf Warrior|1|
|Generate|TOK:SHM|Elf Warrior|2|
|Generate|TOK:SHM|Elf Warrior|1||ElfToken|
|Generate|TOK:SHM|Elf Warrior|1||ElfWarriorToken|
|Generate|TOK:SHM|Elf Warrior|2||RhysTheRedeemedToken|
|Generate|TOK:SHM|Faerie Rogue|||OonaQueenFaerieToken|
|Generate|TOK:SHM|Giant Warrior|||GiantBaitingGiantWarriorToken|
@ -1315,7 +1318,7 @@
|Generate|TOK:M19|Cat|||CatToken2|
|Generate|TOK:M19|Dragon|1||DragonEggDragonToken|
|Generate|TOK:M19|Dragon|2||DragonToken2|
|Generate|TOK:M19|Elf Warrior|||ElfToken|
|Generate|TOK:M19|Elf Warrior|||ElfWarriorToken|
|Generate|TOK:M19|Goblin|||GoblinToken|
|Generate|TOK:M19|Knight|||KnightToken|
|Generate|TOK:M19|Ox|||OxToken|
@ -1465,7 +1468,7 @@
|Generate|TOK:CMR|Cat|||CatToken|
|Generate|TOK:CMR|Dragon|||DragonEggDragonToken|
|Generate|TOK:CMR|Elephant|||ElephantToken|
|Generate|TOK:CMR|Elf Warrior|||ElfToken|
|Generate|TOK:CMR|Elf Warrior|||ElfWarriorToken|
|Generate|TOK:CMR|Golem|||GolemToken|
|Generate|TOK:CMR|Horror|||PhyrexianRebirthHorrorToken|
|Generate|TOK:CMR|Illusion|||MelokuTheCloudedMirrorToken|
@ -1479,3 +1482,24 @@
|Generate|TOK:CMR|Thrull|||BreedingPitThrullToken|
|Generate|TOK:CMR|Treasure|||TreasureToken|
|Generate|TOK:CMR|Zombie|||ZombieToken|
# KHM
|Generate|TOK:KHM|Angel Warrior|||AngelWarriorVigilanceToken|
|Generate|TOK:KHM|Bear|||BearToken|
|Generate|TOK:KHM|Bird|||OwlToken|
|Generate|TOK:KHM|Cat|||GreenCat2Token|
|Generate|TOK:KHM|Demon Berserker|||DemonBerserkerToken|
|Generate|TOK:KHM|Dragon|||DragonToken2|
|Generate|TOK:KHM|Dwarf Berserker|||DwarfBerserkerToken|
|Generate|TOK:KHM|Elf Warrior|||ElfWarriorToken|
|Generate|TOK:KHM|Giant Wizard|||GiantWizardToken|
|Generate|TOK:KHM|Human Warrior|||HumanWarriorToken|
|Generate|TOK:KHM|Icy Manalith|||IcyManalithToken|
|Generate|TOK:KHM|Koma's Coil|||KomasCoilToken|
|Generate|TOK:KHM|Replicated Ring|||ReplicatedRingToken|
|Generate|TOK:KHM|Shapeshifter|||ShapeshifterBlueToken|
|Generate|TOK:KHM|Shard|||ShardToken|
|Generate|TOK:KHM|Spirit|||SpiritWhiteToken|
|Generate|TOK:KHM|Treasure|||TreasureToken|
|Generate|TOK:KHM|Troll Warrior|||TrollWarriorToken|
|Generate|TOK:KHM|Zombie Berserker|||ZombieBerserkerToken|

View file

@ -1,7 +1,5 @@
package mage.cards.a;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.effects.common.CreateTokenEffect;
@ -9,10 +7,11 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.game.permanent.token.ElfToken;
import mage.game.permanent.token.ElfWarriorToken;
import java.util.UUID;
/**
*
* @author Loki
*/
public final class AmbassadorOak extends CardImpl {
@ -24,7 +23,7 @@ public final class AmbassadorOak extends CardImpl {
this.power = new MageInt(3);
this.toughness = new MageInt(3);
this.addAbility(new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new ElfToken(), 1), false));
this.addAbility(new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new ElfWarriorToken(), 1), false));
}
private AmbassadorOak(final AmbassadorOak card) {

View file

@ -17,7 +17,7 @@ import mage.filter.predicate.Predicates;
import mage.filter.predicate.permanent.TokenPredicate;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.game.permanent.token.ElfToken;
import mage.game.permanent.token.ElfWarriorToken;
import mage.game.permanent.token.HumanWarriorToken;
import mage.players.Player;
import mage.target.TargetPermanent;
@ -45,7 +45,7 @@ public final class BattleForBretagard extends CardImpl {
sagaAbility.addChapterEffect(this, SagaChapter.CHAPTER_I, new CreateTokenEffect(new HumanWarriorToken()));
// II Create a 1/1 green Elf Warrior creature token.
sagaAbility.addChapterEffect(this, SagaChapter.CHAPTER_II, new CreateTokenEffect(new ElfToken()));
sagaAbility.addChapterEffect(this, SagaChapter.CHAPTER_II, new CreateTokenEffect(new ElfWarriorToken()));
// III Choose any number of artifact tokens and/or creature tokens you control with different names. For each of them, create a token thats a copy of it.
sagaAbility.addChapterEffect(this, SagaChapter.CHAPTER_III, new BattleForBretagardEffect());

View file

@ -1,4 +1,3 @@
package mage.cards.d;
import mage.MageInt;
@ -13,12 +12,11 @@ import mage.constants.CardType;
import mage.constants.SubType;
import mage.filter.common.FilterControlledPermanent;
import mage.filter.predicate.permanent.AnotherPredicate;
import mage.game.permanent.token.ElfToken;
import mage.game.permanent.token.ElfWarriorToken;
import java.util.UUID;
/**
*
* @author fireshoes
*/
public final class DwynensElite extends CardImpl {
@ -38,7 +36,7 @@ public final class DwynensElite extends CardImpl {
this.toughness = new MageInt(2);
// When Dwynen's Elite enters the battlefield, if you control another Elf, create a 1/1 green Elf Warrior creature token.
TriggeredAbility triggeredAbility = new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new ElfToken()));
TriggeredAbility triggeredAbility = new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new ElfWarriorToken()));
this.addAbility(new ConditionalInterveningIfTriggeredAbility(
triggeredAbility,
new PermanentsOnTheBattlefieldCondition(filter),

View file

@ -7,7 +7,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.game.permanent.token.ElfToken;
import mage.game.permanent.token.ElfWarriorToken;
import java.util.UUID;
@ -25,7 +25,7 @@ public final class ElderleafMentor extends CardImpl {
this.toughness = new MageInt(2);
// When Elderleaf Mentor enters the battlefield, create a 1/1 green Elf Warrior creature token.
this.addAbility(new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new ElfToken())));
this.addAbility(new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new ElfWarriorToken())));
}
private ElderleafMentor(final ElderleafMentor card) {

View file

@ -1,7 +1,5 @@
package mage.cards.e;
import java.util.UUID;
import mage.abilities.dynamicvalue.DynamicValue;
import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount;
import mage.abilities.effects.common.CreateTokenEffect;
@ -11,10 +9,11 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.filter.common.FilterControlledPermanent;
import mage.game.permanent.token.ElfToken;
import mage.game.permanent.token.ElfWarriorToken;
import java.util.UUID;
/**
*
* @author weirddan455
*/
public final class ElvenAmbush extends CardImpl {
@ -33,7 +32,7 @@ public final class ElvenAmbush extends CardImpl {
this.getSpellAbility().addHint(new ValueHint("Elves you control", elfCount));
// Create a 1/1 green Elf Warrior creature token for each Elf you control.
this.getSpellAbility().addEffect(new CreateTokenEffect(new ElfToken(), elfCount));
this.getSpellAbility().addEffect(new CreateTokenEffect(new ElfWarriorToken(), elfCount));
}
private ElvenAmbush(final ElvenAmbush card) {

View file

@ -15,7 +15,7 @@ import mage.cards.CardSetInfo;
import mage.constants.AttachmentType;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.game.permanent.token.ElfToken;
import mage.game.permanent.token.ElfWarriorToken;
import java.util.UUID;
@ -31,7 +31,7 @@ public final class ElvenBow extends CardImpl {
// When Elven Bow enters the battlefield, you may pay {2}. If you do, create a 1/1 green Elf Warrior creature token, then attach Elven Bow to it.
this.addAbility(new EntersBattlefieldTriggeredAbility(new DoIfCostPaid(
new CreateTokenAttachSourceEffect(new ElfToken()), new GenericManaCost(2)
new CreateTokenAttachSourceEffect(new ElfWarriorToken()), new GenericManaCost(2)
)));
// Equipped creature gets +1/+2 and has reach.

View file

@ -1,8 +1,5 @@
package mage.cards.e;
import java.util.UUID;
import mage.abilities.dynamicvalue.DynamicValue;
import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount;
import mage.abilities.effects.common.CreateTokenEffect;
@ -12,10 +9,11 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.filter.common.FilterControlledPermanent;
import mage.game.permanent.token.ElfToken;
import mage.game.permanent.token.ElfWarriorToken;
import java.util.UUID;
/**
*
* @author Loki
*/
public final class ElvishPromenade extends CardImpl {
@ -33,7 +31,7 @@ public final class ElvishPromenade extends CardImpl {
this.subtype.add(SubType.ELF);
this.getSpellAbility().addHint(new ValueHint("Elves you control", elfCount));
this.getSpellAbility().addEffect(new CreateTokenEffect(new ElfToken(), elfCount));
this.getSpellAbility().addEffect(new CreateTokenEffect(new ElfWarriorToken(), elfCount));
}
private ElvishPromenade(final ElvishPromenade card) {

View file

@ -1,6 +1,5 @@
package mage.cards.e;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility;
@ -11,21 +10,22 @@ import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.effects.common.continuous.BoostControlledEffect;
import mage.abilities.effects.common.continuous.GainAbilityControlledEffect;
import mage.abilities.keyword.DeathtouchAbility;
import mage.constants.Duration;
import mage.constants.SubType;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.SubType;
import mage.filter.FilterPermanent;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.permanent.AnotherPredicate;
import mage.game.Game;
import mage.game.events.GameEvent;
import mage.game.permanent.token.ElfToken;
import mage.game.permanent.token.ElfWarriorToken;
import mage.util.CardUtil;
import java.util.UUID;
/**
*
* @author weirddan455
*/
public final class ElvishWarmaster extends CardImpl {
@ -46,7 +46,7 @@ public final class ElvishWarmaster extends CardImpl {
this.toughness = new MageInt(2);
// Whenever one or more other Elves enters the battlefield under your control, create a 1/1 green Elf Warrior creature token. This ability triggers only once each turn.
this.addAbility(new ElvishWarmasterTriggeredAbility(new CreateTokenEffect(new ElfToken()), filter));
this.addAbility(new ElvishWarmasterTriggeredAbility(new CreateTokenEffect(new ElfWarriorToken()), filter));
// {5}{G}{G}: Elves you control get +2/+2 and gain deathtouch until end of turn.
Ability ability = new SimpleActivatedAbility(new BoostControlledEffect(

View file

@ -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.ElfToken;
import mage.game.permanent.token.ElfWarriorToken;
import java.util.UUID;
@ -27,7 +27,7 @@ public final class ExquisiteHuntmaster extends CardImpl {
this.toughness = new MageInt(2);
// When Exquisite Huntmaster dies, create a 1/1 green Elf Warrior creature token.
this.addAbility(new DiesSourceTriggeredAbility(new CreateTokenEffect(new ElfToken())));
this.addAbility(new DiesSourceTriggeredAbility(new CreateTokenEffect(new ElfWarriorToken())));
// Encore {4}{B}
this.addAbility(new EncoreAbility(new ManaCostsImpl<>("{4}{B}")));

View file

@ -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.ElfToken;
import mage.game.permanent.token.ElfWarriorToken;
import java.util.UUID;
@ -27,7 +27,7 @@ public final class EyeblightCullers extends CardImpl {
this.toughness = new MageInt(3);
// When Eyeblight Cullers dies, create three 1/1 green Elf Warrior creature tokens, then mill three cards.
Ability ability = new DiesSourceTriggeredAbility(new CreateTokenEffect(new ElfToken(), 3));
Ability ability = new DiesSourceTriggeredAbility(new CreateTokenEffect(new ElfWarriorToken(), 3));
ability.addEffect(new MillCardsControllerEffect(3).concatBy(", then"));
this.addAbility(ability);
}

View file

@ -1,7 +1,5 @@
package mage.cards.f;
import java.util.UUID;
import mage.abilities.TriggeredAbilityImpl;
import mage.abilities.effects.common.CreateTokenEffect;
import mage.cards.CardImpl;
@ -11,12 +9,12 @@ import mage.constants.Zone;
import mage.counters.CounterType;
import mage.game.Game;
import mage.game.events.GameEvent;
import mage.game.events.GameEvent.EventType;
import mage.game.permanent.Permanent;
import mage.game.permanent.token.ElfToken;
import mage.game.permanent.token.ElfWarriorToken;
import java.util.UUID;
/**
*
* @author jeffwadsworth
*/
public final class FlourishingDefenses extends CardImpl {
@ -42,7 +40,7 @@ public final class FlourishingDefenses extends CardImpl {
class FlourishingDefensesTriggeredAbility extends TriggeredAbilityImpl {
FlourishingDefensesTriggeredAbility() {
super(Zone.BATTLEFIELD, new CreateTokenEffect(new ElfToken()), true);
super(Zone.BATTLEFIELD, new CreateTokenEffect(new ElfWarriorToken()), true);
}
FlourishingDefensesTriggeredAbility(final FlourishingDefensesTriggeredAbility ability) {
@ -63,9 +61,7 @@ class FlourishingDefensesTriggeredAbility extends TriggeredAbilityImpl {
public boolean checkTrigger(GameEvent event, Game game) {
if (event.getData().equals(CounterType.M1M1.getName())) {
Permanent permanent = game.getPermanentOrLKIBattlefield(event.getTargetId());
if (permanent != null && permanent.isCreature()) {
return true;
}
return permanent != null && permanent.isCreature();
}
return false;
}

View file

@ -18,7 +18,7 @@ import mage.abilities.keyword.HexproofAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
import mage.game.permanent.token.GiantsAmuletToken;
import mage.game.permanent.token.GiantWizardToken;
import java.util.UUID;
@ -34,7 +34,7 @@ public final class GiantsAmulet extends CardImpl {
// When Giant's Amulet enters the battlefield, you may pay {3}{U}. If you do, create a 4/4 blue Giant Wizard creature token, then attach Giant's Amulet to it.
this.addAbility(new EntersBattlefieldTriggeredAbility(new DoIfCostPaid(
new CreateTokenAttachSourceEffect(new GiantsAmuletToken()), new ManaCostsImpl<>("{3}{U}")
new CreateTokenAttachSourceEffect(new GiantWizardToken()), new ManaCostsImpl<>("{3}{U}")
)));
// Equipped creature gets +0/+1 and has "This creature has hexproof as long as it's untapped."

View file

@ -1,7 +1,5 @@
package mage.cards.g;
import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.effects.ContinuousEffect;
import mage.abilities.effects.OneShotEffect;
@ -12,17 +10,18 @@ import mage.abilities.keyword.DeathtouchAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Duration;
import mage.constants.Outcome;
import mage.constants.SubType;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.game.permanent.token.ElfToken;
import mage.game.permanent.token.ElfWarriorToken;
import mage.players.Player;
import mage.target.targetpointer.FixedTarget;
import java.util.UUID;
/**
*
* @author Styxo
*/
public final class GiltLeafAmbush extends CardImpl {
@ -65,7 +64,7 @@ class GiltLeafAmbushCreateTokenEffect extends OneShotEffect {
public boolean apply(Game game, Ability source) {
Player controller = game.getPlayer(source.getControllerId());
if (controller != null) {
CreateTokenEffect effect = new CreateTokenEffect(new ElfToken(), 2);
CreateTokenEffect effect = new CreateTokenEffect(new ElfWarriorToken(), 2);
effect.apply(game, source);
if (ClashEffect.getInstance().apply(game, source)) {
for (UUID tokenId : effect.getLastAddedTokenIds()) {

View file

@ -1,7 +1,5 @@
package mage.cards.h;
import java.util.UUID;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.keyword.ReinforceAbility;
@ -9,10 +7,11 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.game.permanent.token.ElfToken;
import mage.game.permanent.token.ElfWarriorToken;
import java.util.UUID;
/**
*
* @author Loki
*/
public final class HuntingTriad extends CardImpl {
@ -21,7 +20,7 @@ public final class HuntingTriad extends CardImpl {
super(ownerId, setInfo, new CardType[]{CardType.TRIBAL, CardType.SORCERY}, "{3}{G}");
this.subtype.add(SubType.ELF);
this.getSpellAbility().addEffect(new CreateTokenEffect(new ElfToken(), 3));
this.getSpellAbility().addEffect(new CreateTokenEffect(new ElfWarriorToken(), 3));
this.addAbility(new ReinforceAbility(3, new ManaCostsImpl("{3}{G}")));
}

View file

@ -1,7 +1,5 @@
package mage.cards.i;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.SimpleActivatedAbility;
@ -14,10 +12,11 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
import mage.filter.common.FilterCreaturePermanent;
import mage.game.permanent.token.ElfToken;
import mage.game.permanent.token.ElfWarriorToken;
import java.util.UUID;
/**
*
* @author Loki
*/
public final class ImperiousPerfect extends CardImpl {
@ -36,7 +35,7 @@ public final class ImperiousPerfect extends CardImpl {
this.power = new MageInt(2);
this.toughness = new MageInt(2);
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostControlledEffect(1, 1, Duration.WhileOnBattlefield, filter, true)));
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new CreateTokenEffect(new ElfToken(), 1), new ColoredManaCost(ColoredManaSymbol.G));
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new CreateTokenEffect(new ElfWarriorToken(), 1), new ColoredManaCost(ColoredManaSymbol.G));
ability.addCost(new TapSourceCost());
this.addAbility(ability);
}

View file

@ -20,7 +20,7 @@ import mage.constants.SuperType;
import mage.filter.common.FilterControlledPermanent;
import mage.filter.predicate.permanent.UntappedPredicate;
import mage.game.Game;
import mage.game.permanent.token.ElfToken;
import mage.game.permanent.token.ElfWarriorToken;
import mage.target.common.TargetControlledPermanent;
import java.util.UUID;
@ -51,7 +51,7 @@ public final class LathrilBladeOfTheElves extends CardImpl {
// Whenever Lathril, Blade of the Elves deals combat damage to a player, create that many 1/1 green Elf Warrior creature tokens.
this.addAbility(new DealsCombatDamageToAPlayerTriggeredAbility(new CreateTokenEffect(
new ElfToken(), LathrilBladeOfTheElvesValue.instance
new ElfWarriorToken(), LathrilBladeOfTheElvesValue.instance
).setText("create that many 1/1 green Elf Warrior creature tokens"), false, true));
// {T}, Tap ten untapped Elves you control: Each opponent loses 10 life and you gain 10 life.

View file

@ -1,7 +1,5 @@
package mage.cards.l;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.SpellCastControllerTriggeredAbility;
import mage.abilities.effects.common.CreateTokenEffect;
@ -10,10 +8,11 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.filter.FilterSpell;
import mage.game.permanent.token.ElfToken;
import mage.game.permanent.token.ElfWarriorToken;
import java.util.UUID;
/**
*
* @author Loki
*/
public final class LysAlanaHuntmaster extends CardImpl {
@ -31,7 +30,7 @@ public final class LysAlanaHuntmaster extends CardImpl {
this.power = new MageInt(3);
this.toughness = new MageInt(3);
this.addAbility(new SpellCastControllerTriggeredAbility(new CreateTokenEffect(new ElfToken()), filter, true));
this.addAbility(new SpellCastControllerTriggeredAbility(new CreateTokenEffect(new ElfWarriorToken()), filter, true));
}
private LysAlanaHuntmaster(final LysAlanaHuntmaster card) {

View file

@ -19,7 +19,7 @@ import mage.filter.common.FilterControlledPermanent;
import mage.filter.predicate.permanent.TokenPredicate;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.game.permanent.token.ElfToken;
import mage.game.permanent.token.ElfWarriorToken;
import java.util.UUID;
@ -91,7 +91,7 @@ class NadierAgentOfTheDuskenelEffect extends OneShotEffect {
if (!permanent.isCreature() || permanent.getPower().getValue() < 1) {
return false;
}
return new ElfToken().putOntoBattlefield(permanent.getPower().getValue(), game, source, source.getControllerId()
return new ElfWarriorToken().putOntoBattlefield(permanent.getPower().getValue(), game, source, source.getControllerId()
);
}
}

View file

@ -1,7 +1,5 @@
package mage.cards.n;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
@ -15,13 +13,13 @@ import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.SuperType;
import mage.constants.TargetController;
import mage.game.permanent.token.ElfToken;
import mage.game.permanent.token.ElfWarriorToken;
import mage.target.common.TargetOpponent;
import java.util.UUID;
/**
*
* @author jeffwadsworth
*
*/
public final class NathOfTheGiltLeaf extends CardImpl {
@ -42,7 +40,7 @@ public final class NathOfTheGiltLeaf extends CardImpl {
this.addAbility(ability);
// Whenever an opponent discards a card, you may create a 1/1 green Elf Warrior creature token.
Effect effect2 = new CreateTokenEffect(new ElfToken());
Effect effect2 = new CreateTokenEffect(new ElfWarriorToken());
effect2.setText("you may create a 1/1 green Elf Warrior creature token");
this.addAbility(new DiscardsACardOpponentTriggeredAbility(effect2, true));

View file

@ -1,7 +1,5 @@
package mage.cards.p;
import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.common.SimpleStaticAbility;
@ -12,18 +10,14 @@ import mage.abilities.effects.common.continuous.GainAbilityAttachedEffect;
import mage.abilities.keyword.EnchantAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.AttachmentType;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Duration;
import mage.constants.Outcome;
import mage.constants.Zone;
import mage.game.permanent.token.ElfToken;
import mage.constants.*;
import mage.game.permanent.token.ElfWarriorToken;
import mage.target.TargetPermanent;
import mage.target.common.TargetCreaturePermanent;
import java.util.UUID;
/**
*
* @author LevelX2
*/
public final class PresenceOfGond extends CardImpl {
@ -41,7 +35,7 @@ public final class PresenceOfGond extends CardImpl {
this.addAbility(ability);
// Enchanted creature has "{tap}: Create a 1/1 green Elf Warrior creature token."
Ability abilityToGain = new SimpleActivatedAbility(Zone.BATTLEFIELD, new CreateTokenEffect(new ElfToken()), new TapSourceCost());
Ability abilityToGain = new SimpleActivatedAbility(Zone.BATTLEFIELD, new CreateTokenEffect(new ElfWarriorToken()), new TapSourceCost());
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(abilityToGain, AttachmentType.AURA, Duration.WhileOnBattlefield,
"Enchanted creature has \"{T}: Create a 1/1 green Elf Warrior creature token.\"")));
}

View file

@ -1,7 +1,5 @@
package mage.cards.p;
import java.util.UUID;
import mage.abilities.common.PutIntoGraveFromBattlefieldAllTriggeredAbility;
import mage.abilities.effects.common.CreateTokenEffect;
import mage.cards.CardImpl;
@ -12,10 +10,11 @@ import mage.filter.FilterPermanent;
import mage.filter.predicate.Predicates;
import mage.filter.predicate.permanent.AnotherPredicate;
import mage.filter.predicate.permanent.TokenPredicate;
import mage.game.permanent.token.ElfToken;
import mage.game.permanent.token.ElfWarriorToken;
import java.util.UUID;
/**
*
* @author LoneFox
*/
public final class ProwessOfTheFair extends CardImpl {
@ -33,7 +32,7 @@ public final class ProwessOfTheFair extends CardImpl {
this.subtype.add(SubType.ELF);
// Whenever another nontoken Elf is put into your graveyard from the battlefield, you may create a 1/1 green Elf Warrior creature token.
this.addAbility(new PutIntoGraveFromBattlefieldAllTriggeredAbility(new CreateTokenEffect(new ElfToken()),
this.addAbility(new PutIntoGraveFromBattlefieldAllTriggeredAbility(new CreateTokenEffect(new ElfWarriorToken()),
true, filter, false, true));
}

View file

@ -13,7 +13,7 @@ import mage.constants.Zone;
import mage.filter.StaticFilters;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.game.permanent.token.ElfToken;
import mage.game.permanent.token.ElfWarriorToken;
import mage.players.Player;
import mage.target.common.TargetCardInYourGraveyard;
@ -75,7 +75,7 @@ class ReturnUponTheTideEffect extends OneShotEffect {
return false;
}
if (permanent.hasSubtype(SubType.ELF, game)) {
new ElfToken().putOntoBattlefield(2, game, source, player.getId());
new ElfWarriorToken().putOntoBattlefield(2, game, source, player.getId());
}
return true;
}

View file

@ -14,7 +14,7 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Zone;
import mage.filter.StaticFilters;
import mage.game.permanent.token.ElfToken;
import mage.game.permanent.token.ElfWarriorToken;
import mage.target.TargetPermanent;
import java.util.UUID;
@ -41,7 +41,7 @@ public final class SkemfarElderhall extends CardImpl {
);
ability.addCost(new TapSourceCost());
ability.addCost(new SacrificeSourceCost());
ability.addEffect(new CreateTokenEffect(new ElfToken(), 2));
ability.addEffect(new CreateTokenEffect(new ElfWarriorToken(), 2));
ability.addTarget(new TargetPermanent(0, 1, StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL, false));
this.addAbility(ability);
}

View file

@ -1,7 +1,5 @@
package mage.cards.s;
import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.effects.Effect;
import mage.abilities.effects.OneShotEffect;
@ -11,15 +9,16 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Outcome;
import mage.game.Game;
import mage.game.permanent.token.ElfToken;
import mage.game.permanent.token.ElfWarriorToken;
import mage.game.permanent.token.SylvanOfferingTreefolkToken;
import mage.players.Player;
import mage.target.Target;
import mage.target.common.TargetOpponent;
import mage.target.targetpointer.FixedTarget;
import java.util.UUID;
/**
*
* @author LevelX2
*/
public final class SylvanOffering extends CardImpl {
@ -105,7 +104,7 @@ class SylvanOfferingEffect2 extends OneShotEffect {
Player opponent = game.getPlayer(target.getFirstTarget());
if (opponent != null) {
int xValue = source.getManaCostsToPay().getX();
Effect effect = new CreateTokenTargetEffect(new ElfToken(), xValue);
Effect effect = new CreateTokenTargetEffect(new ElfWarriorToken(), xValue);
effect.setTargetPointer(new FixedTarget(controller.getId()));
effect.apply(game, source);
effect.setTargetPointer(new FixedTarget(opponent.getId()));

View file

@ -1,22 +1,22 @@
package mage.cards.t;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.BecomesTargetTriggeredAbility;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.effects.common.continuous.BoostSourceEffect;
import mage.constants.SubType;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.SubType;
import mage.filter.StaticFilters;
import mage.game.permanent.token.ElfToken;
import mage.game.permanent.token.ElfWarriorToken;
import java.util.UUID;
/**
*
* @author TheElk801
*/
public final class ThornLieutenant extends CardImpl {
@ -31,7 +31,7 @@ public final class ThornLieutenant extends CardImpl {
// Whenever Thorn Lieutenant becomes the target of a spell or ability an opponent controls, create a 1/1 green Elf Warrior creature token.
this.addAbility(new BecomesTargetTriggeredAbility(
new CreateTokenEffect(new ElfToken()),
new CreateTokenEffect(new ElfWarriorToken()),
StaticFilters.FILTER_SPELL_OR_ABILITY_OPPONENTS
));

View file

@ -1,7 +1,5 @@
package mage.cards.t;
import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.LoyaltyAbility;
import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility;
@ -14,20 +12,21 @@ import mage.abilities.effects.common.continuous.GainAbilityTargetEffect;
import mage.abilities.effects.common.counter.AddCountersTargetEffect;
import mage.abilities.keyword.DeathtouchAbility;
import mage.abilities.mana.BlackManaAbility;
import mage.constants.Duration;
import mage.constants.SubType;
import mage.constants.SuperType;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.SubType;
import mage.constants.SuperType;
import mage.counters.CounterType;
import mage.filter.FilterPermanent;
import mage.game.command.emblems.TyvarKellEmblem;
import mage.game.permanent.token.ElfToken;
import mage.game.permanent.token.ElfWarriorToken;
import mage.target.TargetPermanent;
import java.util.UUID;
/**
*
* @author weirddan455
*/
public final class TyvarKell extends CardImpl {
@ -57,7 +56,7 @@ public final class TyvarKell extends CardImpl {
this.addAbility(ability);
// 0: Create a 1/1 green Elf Warrior creature token.
this.addAbility(new LoyaltyAbility(new CreateTokenEffect(new ElfToken()), 0));
this.addAbility(new LoyaltyAbility(new CreateTokenEffect(new ElfWarriorToken()), 0));
// 6: You get an emblem with "Whenever you cast an Elf spell, it gains haste until end of turn and you draw two cards."
this.addAbility(new LoyaltyAbility(new GetEmblemEffect(new TyvarKellEmblem()), -6));

View file

@ -17,7 +17,7 @@ import mage.filter.FilterPermanent;
import mage.filter.predicate.permanent.AnotherPredicate;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.game.permanent.token.ElfToken;
import mage.game.permanent.token.ElfWarriorToken;
import java.util.UUID;
@ -42,7 +42,7 @@ public final class WolverineRiders extends CardImpl {
// At the beginning of each upkeep, create a 1/1 green Elf Warrior creature token.
this.addAbility(new BeginningOfUpkeepTriggeredAbility(
new CreateTokenEffect(new ElfToken()), TargetController.EACH_PLAYER, false
new CreateTokenEffect(new ElfWarriorToken()), TargetController.EACH_PLAYER, false
));
// Whenever another Elf enters the battlefield under your control, you gain life equal to its toughness.

View file

@ -1,6 +1,5 @@
package mage.game.command.emblems;
import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.AsThoughEffectImpl;
@ -14,18 +13,17 @@ import mage.game.Game;
import mage.game.command.Emblem;
import mage.util.CardUtil;
import java.util.UUID;
/**
*
* @author jeffwadsworth
*/
public final class TibaltCosmicImposterEmblem extends Emblem {
// You may play cards exiled with Tibalt, Cosmic Impostor, and you may spend mana as though it were mana of any color to cast those spells."
public TibaltCosmicImposterEmblem() {
setName("Emblem Tibalt Cosmic Imposter");
this.setExpansionSetCodeForImage("KHM");
Ability ability = new SimpleStaticAbility(Zone.COMMAND, new TibaltCosmicImposterPlayFromExileEffect());
this.getAbilities().add(ability);
setName("Emblem Tibalt");
this.getAbilities().add(new SimpleStaticAbility(Zone.COMMAND, new TibaltCosmicImposterPlayFromExileEffect()));
}
}

View file

@ -6,6 +6,8 @@ import mage.abilities.keyword.VigilanceAbility;
import mage.constants.CardType;
import mage.constants.SubType;
import java.util.Arrays;
public final class AngelWarriorVigilanceToken extends TokenImpl {
public AngelWarriorVigilanceToken() {
@ -16,8 +18,11 @@ public final class AngelWarriorVigilanceToken extends TokenImpl {
subtype.add(SubType.WARRIOR);
power = new MageInt(4);
toughness = new MageInt(4);
addAbility(FlyingAbility.getInstance());
addAbility(VigilanceAbility.getInstance());
availableImageSetCodes = Arrays.asList("KHM");
}
private AngelWarriorVigilanceToken(final AngelWarriorVigilanceToken token) {

View file

@ -1,13 +1,12 @@
package mage.game.permanent.token;
import mage.MageInt;
import mage.constants.CardType;
import mage.constants.SubType;
import java.util.Arrays;
/**
*
* @author BetaSteward_at_googlemail.com
*/
public final class BearToken extends TokenImpl {
@ -19,6 +18,8 @@ public final class BearToken extends TokenImpl {
subtype.add(SubType.BEAR);
power = new MageInt(2);
toughness = new MageInt(2);
availableImageSetCodes = Arrays.asList("C15", "JUD", "LGN", "ODY", "ONS", "VMA", "MH1", "ELD", "KHM");
}
public BearToken(final BearToken token) {

View file

@ -5,20 +5,25 @@ import mage.abilities.keyword.MenaceAbility;
import mage.constants.CardType;
import mage.constants.SubType;
import java.util.Arrays;
/**
* @author TheElk801
*/
public final class DemonBerserkerToken extends TokenImpl {
public DemonBerserkerToken() {
super("Demon", "2/3 red Demon Berserker creature token with menace");
super("Demon Berserker", "2/3 red Demon Berserker creature token with menace");
cardType.add(CardType.CREATURE);
color.setRed(true);
subtype.add(SubType.DEMON);
subtype.add(SubType.BERSERKER);
power = new MageInt(2);
toughness = new MageInt(3);
addAbility(new MenaceAbility());
availableImageSetCodes.addAll(Arrays.asList("KHM"));
}
private DemonBerserkerToken(final DemonBerserkerToken token) {

View file

@ -5,35 +5,24 @@ import mage.abilities.keyword.FlyingAbility;
import mage.constants.CardType;
import mage.constants.SubType;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
* @author LoneFox
*/
public final class DragonToken2 extends TokenImpl {
static final private List<String> tokenImageSets = new ArrayList<>();
static {
tokenImageSets.addAll(Arrays.asList("WWK", "10E", "BFZ", "C15", "CN2", "CMA", "C19"));
}
public DragonToken2() {
this((String) null);
}
public DragonToken2(String setCode) {
super("Dragon", "5/5 red Dragon creature token with flying");
availableImageSetCodes = tokenImageSets;
setOriginalExpansionSetCode(setCode);
cardType.add(CardType.CREATURE);
color.setRed(true);
subtype.add(SubType.DRAGON);
power = new MageInt(5);
toughness = new MageInt(5);
addAbility(FlyingAbility.getInstance());
availableImageSetCodes = Arrays.asList("10E", "BFZ", "C15", "C19", "CMA", "CMD", "ONS", "ROE", "SCG", "WWK", "M19", "KHM");
}
public DragonToken2(final DragonToken2 token) {
@ -43,4 +32,13 @@ public final class DragonToken2 extends TokenImpl {
public DragonToken2 copy() {
return new DragonToken2(this);
}
@Override
public void setExpansionSetCodeForImage(String code) {
super.setExpansionSetCodeForImage(code);
if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("M19")) {
this.setTokenType(2);
}
}
}

View file

@ -4,6 +4,8 @@ import mage.MageInt;
import mage.constants.CardType;
import mage.constants.SubType;
import java.util.Arrays;
public final class DwarfBerserkerToken extends TokenImpl {
public DwarfBerserkerToken() {
@ -14,6 +16,8 @@ public final class DwarfBerserkerToken extends TokenImpl {
subtype.add(SubType.BERSERKER);
power = new MageInt(2);
toughness = new MageInt(1);
availableImageSetCodes = Arrays.asList("KHM");
}
public DwarfBerserkerToken(final DwarfBerserkerToken token) {

View file

@ -9,9 +9,9 @@ import java.util.Arrays;
/**
* @author Loki
*/
public final class ElfToken extends TokenImpl {
public final class ElfWarriorToken extends TokenImpl {
public ElfToken() {
public ElfWarriorToken() {
super("Elf Warrior", "1/1 green Elf Warrior creature token");
cardType.add(CardType.CREATURE);
color.setGreen(true);
@ -20,16 +20,16 @@ public final class ElfToken extends TokenImpl {
power = new MageInt(1);
toughness = new MageInt(1);
availableImageSetCodes = Arrays.asList("C13", "C14", "EVG", "EMA", "LRW", "MOR", "ORI", "SHM", "M19", "CMR");
availableImageSetCodes = Arrays.asList("C13", "C14", "EVG", "EMA", "LRW", "MOR", "ORI", "SHM", "M19", "CMR", "KHM");
}
public ElfToken(final ElfToken token) {
public ElfWarriorToken(final ElfWarriorToken token) {
super(token);
}
@Override
public ElfToken copy() {
return new ElfToken(this);
public ElfWarriorToken copy() {
return new ElfWarriorToken(this);
}
@Override

View file

@ -4,9 +4,11 @@ import mage.MageInt;
import mage.constants.CardType;
import mage.constants.SubType;
public final class GiantsAmuletToken extends TokenImpl {
import java.util.Arrays;
public GiantsAmuletToken() {
public final class GiantWizardToken extends TokenImpl {
public GiantWizardToken() {
super("Giant Wizard", "4/4 blue Giant Wizard creature token");
cardType.add(CardType.CREATURE);
color.setBlue(true);
@ -14,13 +16,15 @@ public final class GiantsAmuletToken extends TokenImpl {
subtype.add(SubType.WIZARD);
power = new MageInt(4);
toughness = new MageInt(4);
availableImageSetCodes = Arrays.asList("KHM");
}
public GiantsAmuletToken(final GiantsAmuletToken token) {
public GiantWizardToken(final GiantWizardToken token) {
super(token);
}
public GiantsAmuletToken copy() {
return new GiantsAmuletToken(this);
public GiantWizardToken copy() {
return new GiantWizardToken(this);
}
}

View file

@ -19,7 +19,7 @@ public final class GreenCat2Token extends TokenImpl {
power = new MageInt(2);
toughness = new MageInt(2);
availableImageSetCodes.addAll(Arrays.asList("M21", "KHM"));
availableImageSetCodes = Arrays.asList("M21", "KHM");
}
private GreenCat2Token(final GreenCat2Token token) {

View file

@ -4,6 +4,8 @@ import mage.MageInt;
import mage.constants.CardType;
import mage.constants.SubType;
import java.util.Arrays;
/**
* @author TheElk801
*/
@ -17,6 +19,8 @@ public final class HumanWarriorToken extends TokenImpl {
subtype.add(SubType.WARRIOR);
power = new MageInt(1);
toughness = new MageInt(1);
availableImageSetCodes = Arrays.asList("KHM");
}
private HumanWarriorToken(final HumanWarriorToken token) {

View file

@ -4,6 +4,8 @@ import mage.abilities.mana.AnyColorManaAbility;
import mage.constants.CardType;
import mage.constants.SuperType;
import java.util.Arrays;
/**
* @author TheElk801
*/
@ -12,8 +14,11 @@ public final class IcyManalithToken extends TokenImpl {
public IcyManalithToken() {
super("Icy Manalith", "colorless snow artifact token named Icy Manalith with \"{T}: Add one mana of any color.\"");
this.addSuperType(SuperType.SNOW);
cardType.add(CardType.ARTIFACT);
this.cardType.add(CardType.ARTIFACT);
this.addAbility(new AnyColorManaAbility());
availableImageSetCodes = Arrays.asList("KHM");
}
private IcyManalithToken(final IcyManalithToken token) {

View file

@ -4,6 +4,8 @@ import mage.MageInt;
import mage.constants.CardType;
import mage.constants.SubType;
import java.util.Arrays;
public final class KomasCoilToken extends TokenImpl {
public KomasCoilToken() {
@ -13,6 +15,8 @@ public final class KomasCoilToken extends TokenImpl {
color.setBlue(true);
power = new MageInt(3);
toughness = new MageInt(3);
availableImageSetCodes = Arrays.asList("KHM");
}
private KomasCoilToken(final KomasCoilToken token) {

View file

@ -1,13 +1,13 @@
package mage.game.permanent.token;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.MageInt;
import mage.abilities.keyword.FlyingAbility;
import mage.constants.CardType;
import mage.constants.SubType;
import java.util.Arrays;
/**
*
* @author spjspj
*/
public final class OwlToken extends TokenImpl {
@ -19,7 +19,10 @@ public final class OwlToken extends TokenImpl {
subtype.add(SubType.BIRD);
power = new MageInt(1);
toughness = new MageInt(1);
this.addAbility(FlyingAbility.getInstance());
availableImageSetCodes = Arrays.asList("EVE", "INV", "KHM");
}
public OwlToken(final OwlToken token) {

View file

@ -4,6 +4,8 @@ import mage.abilities.mana.AnyColorManaAbility;
import mage.constants.CardType;
import mage.constants.SuperType;
import java.util.Arrays;
/**
* @author TheElk801
*/
@ -13,7 +15,10 @@ public final class ReplicatedRingToken extends TokenImpl {
super("Replicated Ring", "colorless snow artifact token named Replicated Ring with \"{T}: Add one mana of any color.\"");
this.addSuperType(SuperType.SNOW);
cardType.add(CardType.ARTIFACT);
this.addAbility(new AnyColorManaAbility());
availableImageSetCodes = Arrays.asList("KHM");
}

View file

@ -5,6 +5,8 @@ import mage.abilities.keyword.ChangelingAbility;
import mage.constants.CardType;
import mage.constants.SubType;
import java.util.Arrays;
/**
* @author TheElk801
*/
@ -17,7 +19,10 @@ public final class ShapeshifterBlueToken extends TokenImpl {
color.setBlue(true);
power = new MageInt(2);
toughness = new MageInt(2);
addAbility(new ChangelingAbility());
availableImageSetCodes = Arrays.asList("KHM");
}
private ShapeshifterBlueToken(final ShapeshifterBlueToken token) {

View file

@ -9,6 +9,8 @@ import mage.abilities.effects.keyword.ScryEffect;
import mage.constants.CardType;
import mage.constants.SubType;
import java.util.Arrays;
/**
* @author TheElk801
*/
@ -27,6 +29,8 @@ public final class ShardToken extends TokenImpl {
cost.setText("Sacrifice this enchantment");
ability.addCost(cost);
this.addAbility(ability);
availableImageSetCodes = Arrays.asList("KHM");
}
public ShardToken(final ShardToken token) {

View file

@ -23,7 +23,7 @@ public final class SpiritWhiteToken extends TokenImpl {
addAbility(FlyingAbility.getInstance());
availableImageSetCodes = Arrays.asList("AVR", "C14", "CNS", "DDC", "DDK", "FRF", "ISD", "KTK", "M15", "MM2", "SHM",
"SOI", "EMA", "C16", "MM3", "CMA", "E01", "ANA", "GPT", "RAV", "EMN", "RNA", "M20", "C20", "CMR");
"SOI", "EMA", "C16", "MM3", "CMA", "E01", "ANA", "GPT", "RAV", "EMN", "RNA", "M20", "C20", "CMR", "KHM");
}
@Override

View file

@ -29,7 +29,7 @@ public final class TreasureToken extends TokenImpl {
ability.addCost(new SacrificeSourceCost());
this.addAbility(ability);
availableImageSetCodes = Arrays.asList("XLN", "RNA", "M20", "C19", "C20", "M21", "CMR");
availableImageSetCodes = Arrays.asList("XLN", "RNA", "M20", "C19", "C20", "M21", "CMR", "KHM");
}
public TreasureToken(final TreasureToken token) {

View file

@ -5,6 +5,8 @@ import mage.abilities.keyword.TrampleAbility;
import mage.constants.CardType;
import mage.constants.SubType;
import java.util.Arrays;
/**
* @author TheElk801
*/
@ -18,7 +20,10 @@ public final class TrollWarriorToken extends TokenImpl {
subtype.add(SubType.WARRIOR);
power = new MageInt(4);
toughness = new MageInt(4);
addAbility(TrampleAbility.getInstance());
availableImageSetCodes = Arrays.asList("KHM");
}
private TrollWarriorToken(final TrollWarriorToken token) {

View file

@ -1,13 +1,12 @@
package mage.game.permanent.token;
import mage.MageInt;
import mage.constants.CardType;
import mage.constants.SubType;
import java.util.Arrays;
/**
*
* @author TheElk801
*/
public final class ZombieBerserkerToken extends TokenImpl {
@ -20,6 +19,8 @@ public final class ZombieBerserkerToken extends TokenImpl {
subtype.add(SubType.BERSERKER);
power = new MageInt(2);
toughness = new MageInt(2);
availableImageSetCodes = Arrays.asList("KHM");
}
private ZombieBerserkerToken(final ZombieBerserkerToken token) {