diff --git a/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/ScryfallImageSupportTokens.java b/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/ScryfallImageSupportTokens.java index a70aa38e89b..7c3e4b0a507 100644 --- a/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/ScryfallImageSupportTokens.java +++ b/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/ScryfallImageSupportTokens.java @@ -1,10 +1,10 @@ package org.mage.plugins.card.dl.sources; +import mage.cards.repository.TokenRepository; + import java.util.HashMap; import java.util.Map; -import mage.cards.repository.TokenRepository; - /** * @author JayDi85 */ @@ -2224,7 +2224,7 @@ public class ScryfallImageSupportTokens { put("WHO/Treasure/2", "https://api.scryfall.com/cards/twho/29?format=image"); put("WHO/Treasure/3", "https://api.scryfall.com/cards/twho/30?format=image"); put("WHO/Treasure/4", "https://api.scryfall.com/cards/twho/31?format=image"); - put("WHO/Warrior", "https://api.scryfall.com/cards/twho/9?format=image"); + put("WHO/Warrior", "https://api.scryfall.com/cards/twho/9?format=image"); // 8ED put("8ED/Bird", "https://api.scryfall.com/cards/p03/7/en?format=image"); @@ -2401,7 +2401,7 @@ public class ScryfallImageSupportTokens { put("OTP/Human Warrior", "https://api.scryfall.com/cards/totp/3/en?format=image"); put("OTP/Pest", "https://api.scryfall.com/cards/totp/4/en?format=image"); - // SCD + // SCD put("SCD/Beast", "https://api.scryfall.com/cards/tscd/19/en?format=image"); put("SCD/Bird", "https://api.scryfall.com/cards/tscd/2/en?format=image"); put("SCD/Cat", "https://api.scryfall.com/cards/tscd/3/en?format=image"); @@ -2743,7 +2743,7 @@ public class ScryfallImageSupportTokens { put("ACR/Treasure", "https://api.scryfall.com/cards/tacr/6?format=image"); // DD2 - put("DD2/Elemental Shaman", "https://api.scryfall.com/cards/tdd2/1?format=image"); + put("DD2/Elemental Shaman", "https://api.scryfall.com/cards/tdd2/1?format=image"); // FIN put("FIN/Hero/1", "https://api.scryfall.com/cards/tfin/2/en?format=image"); @@ -2844,6 +2844,7 @@ public class ScryfallImageSupportTokens { put("TLA/Clue/3", "https://api.scryfall.com/cards/ttla/16/?format=image"); put("TLA/Clue/4", "https://api.scryfall.com/cards/ttla/17/?format=image"); put("TLA/Clue/5", "https://api.scryfall.com/cards/ttla/18/?format=image"); + put("TLA/Dragon", "https://api.scryfall.com/cards/ttla/9/?format=image"); put("TLA/Food/1", "https://api.scryfall.com/cards/ttla/19/?format=image"); put("TLA/Food/2", "https://api.scryfall.com/cards/ttla/20/?format=image"); put("TLA/Food/3", "https://api.scryfall.com/cards/ttla/21/?format=image"); diff --git a/Mage.Sets/src/mage/cards/a/AvatarRoku.java b/Mage.Sets/src/mage/cards/a/AvatarRoku.java new file mode 100644 index 00000000000..c5b970958a7 --- /dev/null +++ b/Mage.Sets/src/mage/cards/a/AvatarRoku.java @@ -0,0 +1,48 @@ +package mage.cards.a; + +import mage.MageInt; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.costs.mana.GenericManaCost; +import mage.abilities.effects.common.CreateTokenEffect; +import mage.abilities.keyword.FirebendingAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.SubType; +import mage.constants.SuperType; +import mage.game.permanent.token.DragonFirebendingToken; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class AvatarRoku extends CardImpl { + + public AvatarRoku(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, ""); + + this.supertype.add(SuperType.LEGENDARY); + this.subtype.add(SubType.AVATAR); + this.power = new MageInt(4); + this.toughness = new MageInt(4); + this.nightCard = true; + + // Firebending 4 + this.addAbility(new FirebendingAbility(4)); + + // {8}: Create a 4/4 red Dragon creature token with flying and firebending 4. + this.addAbility(new SimpleActivatedAbility( + new CreateTokenEffect(new DragonFirebendingToken()), new GenericManaCost(8) + )); + } + + private AvatarRoku(final AvatarRoku card) { + super(card); + } + + @Override + public AvatarRoku copy() { + return new AvatarRoku(this); + } +} diff --git a/Mage.Sets/src/mage/cards/t/TheLegendOfRoku.java b/Mage.Sets/src/mage/cards/t/TheLegendOfRoku.java new file mode 100644 index 00000000000..7b87b91d5ff --- /dev/null +++ b/Mage.Sets/src/mage/cards/t/TheLegendOfRoku.java @@ -0,0 +1,55 @@ +package mage.cards.t; + +import mage.Mana; +import mage.abilities.common.SagaAbility; +import mage.abilities.effects.common.ExileSagaAndReturnTransformedEffect; +import mage.abilities.effects.common.ExileTopXMayPlayUntilEffect; +import mage.abilities.effects.mana.BasicManaEffect; +import mage.abilities.keyword.TransformAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.SagaChapter; +import mage.constants.SubType; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class TheLegendOfRoku extends CardImpl { + + public TheLegendOfRoku(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{R}{R}"); + + this.subtype.add(SubType.SAGA); + this.secondSideCardClazz = mage.cards.a.AvatarRoku.class; + + // (As this Saga enters and after your draw step, add a lore counter.) + SagaAbility sagaAbility = new SagaAbility(this); + + // I -- Exile the top three cards of your library. Until the end of your next turn, you may play those cards. + sagaAbility.addChapterEffect( + this, SagaChapter.CHAPTER_I, + new ExileTopXMayPlayUntilEffect(3, Duration.UntilEndOfYourNextTurn) + ); + + // II -- Add one mana of any color. + sagaAbility.addChapterEffect(this, SagaChapter.CHAPTER_II, new BasicManaEffect(Mana.AnyMana(1))); + + // III -- Exile this Saga, then return it to the battlefield transformed under your control. + this.addAbility(new TransformAbility()); + sagaAbility.addChapterEffect(this, SagaChapter.CHAPTER_III, new ExileSagaAndReturnTransformedEffect()); + this.addAbility(sagaAbility); + } + + private TheLegendOfRoku(final TheLegendOfRoku card) { + super(card); + } + + @Override + public TheLegendOfRoku copy() { + return new TheLegendOfRoku(this); + } +} diff --git a/Mage.Sets/src/mage/sets/AvatarTheLastAirbender.java b/Mage.Sets/src/mage/sets/AvatarTheLastAirbender.java index 99b05e5a654..08950b1fb44 100644 --- a/Mage.Sets/src/mage/sets/AvatarTheLastAirbender.java +++ b/Mage.Sets/src/mage/sets/AvatarTheLastAirbender.java @@ -68,6 +68,8 @@ public final class AvatarTheLastAirbender extends ExpansionSet { cards.add(new SetCardInfo("Avatar Enthusiasts", 11, Rarity.COMMON, mage.cards.a.AvatarEnthusiasts.class)); cards.add(new SetCardInfo("Avatar Kuruk", 355, Rarity.MYTHIC, mage.cards.a.AvatarKuruk.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Avatar Kuruk", 61, Rarity.MYTHIC, mage.cards.a.AvatarKuruk.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Avatar Roku", 145, Rarity.MYTHIC, mage.cards.a.AvatarRoku.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Avatar Roku", 357, Rarity.MYTHIC, mage.cards.a.AvatarRoku.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Avatar's Wrath", 12, Rarity.RARE, mage.cards.a.AvatarsWrath.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Avatar's Wrath", 365, Rarity.RARE, mage.cards.a.AvatarsWrath.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Azula Always Lies", 84, Rarity.COMMON, mage.cards.a.AzulaAlwaysLies.class)); @@ -315,6 +317,8 @@ public final class AvatarTheLastAirbender extends ExpansionSet { cards.add(new SetCardInfo("The Cave of Two Lovers", 126, Rarity.UNCOMMON, mage.cards.t.TheCaveOfTwoLovers.class)); cards.add(new SetCardInfo("The Legend of Kuruk", 355, Rarity.MYTHIC, mage.cards.t.TheLegendOfKuruk.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("The Legend of Kuruk", 61, Rarity.MYTHIC, mage.cards.t.TheLegendOfKuruk.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("The Legend of Roku", 145, Rarity.MYTHIC, mage.cards.t.TheLegendOfRoku.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("The Legend of Roku", 357, Rarity.MYTHIC, mage.cards.t.TheLegendOfRoku.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("The Lion-Turtle", 232, Rarity.RARE, mage.cards.t.TheLionTurtle.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("The Lion-Turtle", 328, Rarity.RARE, mage.cards.t.TheLionTurtle.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("The Mechanist, Aerial Artisan", 369, Rarity.RARE, mage.cards.t.TheMechanistAerialArtisan.class, NON_FULL_USE_VARIOUS)); diff --git a/Mage/src/main/java/mage/game/permanent/token/DragonFirebendingToken.java b/Mage/src/main/java/mage/game/permanent/token/DragonFirebendingToken.java new file mode 100644 index 00000000000..c6fd93d29cb --- /dev/null +++ b/Mage/src/main/java/mage/game/permanent/token/DragonFirebendingToken.java @@ -0,0 +1,32 @@ +package mage.game.permanent.token; + +import mage.MageInt; +import mage.abilities.keyword.FirebendingAbility; +import mage.abilities.keyword.FlyingAbility; +import mage.constants.CardType; +import mage.constants.SubType; + +/** + * @author TheElk801 + */ +public final class DragonFirebendingToken extends TokenImpl { + + public DragonFirebendingToken() { + super("Dragon Token", "4/4 red Dragon creature token with flying and firebending 4"); + cardType.add(CardType.CREATURE); + color.setRed(true); + subtype.add(SubType.DRAGON); + power = new MageInt(4); + toughness = new MageInt(4); + addAbility(FlyingAbility.getInstance()); + addAbility(new FirebendingAbility(4)); + } + + private DragonFirebendingToken(final DragonFirebendingToken token) { + super(token); + } + + public DragonFirebendingToken copy() { + return new DragonFirebendingToken(this); + } +} diff --git a/Mage/src/main/resources/tokens-database.txt b/Mage/src/main/resources/tokens-database.txt index ce8aa97b8f8..dd6c10c31d5 100644 --- a/Mage/src/main/resources/tokens-database.txt +++ b/Mage/src/main/resources/tokens-database.txt @@ -2897,6 +2897,7 @@ |Generate|TOK:TLA|Clue|3||ClueArtifactToken| |Generate|TOK:TLA|Clue|4||ClueArtifactToken| |Generate|TOK:TLA|Clue|5||ClueArtifactToken| +|Generate|TOK:TLA|Dragon|||DragonFirebendingToken| |Generate|TOK:TLA|Food|1||FoodToken| |Generate|TOK:TLA|Food|2||FoodToken| |Generate|TOK:TLA|Food|3||FoodToken| @@ -2989,4 +2990,4 @@ |Generate|TOK:PL24|Dragon|||DragonToken| # PL25 -|Generate|TOK:PL25|Snake|||SnakeToken| \ No newline at end of file +|Generate|TOK:PL25|Snake|||SnakeToken|