Added [YDMU] Alchemy: Dominaria set. Implemented Vinesoul Spider, Slimefoot, Thallid Transplant. (#12157)

This commit is contained in:
karapuzz14 2024-05-05 00:34:25 +03:00 committed by GitHub
parent 017e3eb62a
commit bb783a318e
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
9 changed files with 266 additions and 1 deletions

View file

@ -100,7 +100,7 @@ public class GathererSets implements Iterable<DownloadJob> {
"C19", "ELD", "MB1", "GN2", "J20", "THB", "UND", "C20", "IKO", "M21",
"JMP", "2XM", "ZNR", "KLR", "CMR", "KHC", "KHM", "TSR", "STX", "STA",
"C21", "MH2", "AFR", "AFC", "J21", "MID", "MIC", "VOW", "VOC", "YMID",
"NEC", "NEO", "SNC", "NCC", "CLB", "2X2", "DMU", "DMC", "40K", "GN3",
"NEC", "NEO", "SNC", "NCC", "CLB", "2X2", "DMU", "DMC", "YDMU", "40K", "GN3",
"UNF", "BRO", "BRC", "BOT", "30A", "J22", "SCD", "DMR", "ONE", "ONC",
"MOM", "MOC", "MUL", "MAT", "LTR", "CMM", "WOE", "WHO", "RVR", "WOT",
"WOC", "SPG", "LCI", "LCC", "REX", "PIP", "MKM", "MKC", "CLU", "OTJ",

View file

@ -510,6 +510,7 @@ public class ScryfallImageSupportCards {
add("2X2"); // Double Masters 2022
add("DMU"); // Dominaria United
add("DMC"); // Dominaria United Commander
add("YDMU"); // Alchemy: Dominaria
add("40K"); // Warhammer 40,000
add("UNF"); // Unfinity
add("GN3"); // Game Night 2022

View file

@ -0,0 +1,74 @@
package mage.cards.s;
import mage.MageInt;
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility;
import mage.abilities.effects.common.DraftFromSpellbookEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.SuperType;
import mage.filter.FilterPermanent;
import mage.filter.predicate.Predicates;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.UUID;
/**
* @author Svyatoslav28
*/
public final class SlimefootThallidTransplant extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("a Swamp or Forest");
static {
filter.add(Predicates.or(
SubType.SWAMP.getPredicate(),
SubType.FOREST.getPredicate()
));
}
private static final List<String> spellbook = Collections.unmodifiableList(Arrays.asList(
"Deathbloom Thallid",
"Deathbonnet Sprout",
"Fungal Plots",
"Rhizome Lurcher",
"Saproling Migration",
"Spore Crawler",
"Sporecrown Thallid",
"Sporemound",
"Spore Swarm",
"Swarm Shambler",
"Thallid Omnivore",
"Thallid Soothsayer",
"Verdant Embrace",
"Verdant Force",
"Yavimaya Sapherd"
));
public SlimefootThallidTransplant (UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{B}{G}");
this.supertype.add(SuperType.LEGENDARY);
this.subtype.add(SubType.FUNGUS);
this.power = new MageInt(2);
this.toughness = new MageInt(2);
// Whenever a Swamp or Forest enters the battlefield under your control, draft a card from Slimefoot, Thallid Transplants spellbook.
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(
new DraftFromSpellbookEffect(spellbook), filter
));
}
private SlimefootThallidTransplant(final SlimefootThallidTransplant card) {
super(card);
}
@Override
public SlimefootThallidTransplant copy() {
return new SlimefootThallidTransplant(this);
}
}

View file

@ -0,0 +1,46 @@
package mage.cards.v;
import mage.MageInt;
import mage.abilities.common.BeginningOfEndStepTriggeredAbility;
import mage.abilities.effects.common.PutRandomCardFromLibraryIntoGraveyardEffect;
import mage.abilities.keyword.ReachAbility;
import mage.cards.*;
import mage.constants.*;
import mage.filter.StaticFilters;
import java.util.UUID;
/**
* @author karapuzz14
*/
public final class VinesoulSpider extends CardImpl {
public VinesoulSpider(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}");
this.subtype.add(SubType.ELEMENTAL);
this.subtype.add(SubType.SPIDER);
this.power = new MageInt(3);
this.toughness = new MageInt(2);
this.addAbility(ReachAbility.getInstance());
// At the beginning of your end step, put a random land card from your library into your graveyard.
this.addAbility(new BeginningOfEndStepTriggeredAbility(
new PutRandomCardFromLibraryIntoGraveyardEffect(StaticFilters.FILTER_CARD_LAND), TargetController.YOU, false
));
}
private VinesoulSpider(final VinesoulSpider card) {
super(card);
}
@Override
public VinesoulSpider copy() {
return new VinesoulSpider(this);
}
}

View file

@ -0,0 +1,39 @@
package mage.sets;
import mage.cards.ExpansionSet;
import mage.constants.Rarity;
import mage.constants.SetType;
/**
* @author karapuzz14
*/
public final class AlchemyDominaria extends ExpansionSet {
private static final AlchemyDominaria instance = new AlchemyDominaria();
public static AlchemyDominaria getInstance() {
return instance;
}
private AlchemyDominaria() {
super("Alchemy: Dominaria", "YDMU", ExpansionSet.buildDate(2022, 10, 5), SetType.MAGIC_ARENA);
this.blockName = "Alchemy";
this.hasBoosters = false;
this.hasBasicLands = false;
cards.add(new SetCardInfo("Ancestral Recall", 32, Rarity.MYTHIC, mage.cards.a.AncestralRecall.class));
cards.add(new SetCardInfo("Black Lotus", 35, Rarity.MYTHIC, mage.cards.b.BlackLotus.class));
cards.add(new SetCardInfo("Mox Emerald", 36, Rarity.MYTHIC, mage.cards.m.MoxEmerald.class));
cards.add(new SetCardInfo("Mox Jet", 37, Rarity.MYTHIC, mage.cards.m.MoxJet.class));
cards.add(new SetCardInfo("Mox Pearl", 38, Rarity.MYTHIC, mage.cards.m.MoxPearl.class));
cards.add(new SetCardInfo("Mox Ruby", 39, Rarity.MYTHIC, mage.cards.m.MoxRuby.class));
cards.add(new SetCardInfo("Mox Sapphire", 40, Rarity.MYTHIC, mage.cards.m.MoxSapphire.class));
cards.add(new SetCardInfo("Slimefoot, Thallid Transplant", 26, Rarity.RARE, mage.cards.s.SlimefootThallidTransplant.class));
cards.add(new SetCardInfo("Time Walk", 33, Rarity.MYTHIC, mage.cards.t.TimeWalk.class));
cards.add(new SetCardInfo("Timetwister", 34, Rarity.MYTHIC, mage.cards.t.Timetwister.class));
cards.add(new SetCardInfo("Vinesoul Spider", 18, Rarity.UNCOMMON, mage.cards.v.VinesoulSpider.class));
}
}

View file

@ -0,0 +1,64 @@
package mage.abilities.effects.common;
import mage.abilities.Ability;
import mage.abilities.effects.OneShotEffect;
import mage.cards.Card;
import mage.constants.Outcome;
import mage.constants.Zone;
import mage.filter.FilterCard;
import mage.game.Game;
import mage.players.Player;
import mage.util.RandomUtil;
import java.util.Set;
import java.util.stream.Collectors;
/**
* @author karapuzz14
*/
public class PutRandomCardFromLibraryIntoGraveyardEffect extends OneShotEffect {
private FilterCard filter;
/**
* @param filter for selecting a card
*/
public PutRandomCardFromLibraryIntoGraveyardEffect(FilterCard filter) {
super(Outcome.Discard);
this.filter = filter;
this.staticText = "put a random " + filter.getMessage() + " from your library into your graveyard";
}
private PutRandomCardFromLibraryIntoGraveyardEffect(final PutRandomCardFromLibraryIntoGraveyardEffect effect) {
super(effect);
this.filter = effect.filter;
}
@Override
public PutRandomCardFromLibraryIntoGraveyardEffect copy() {
return new PutRandomCardFromLibraryIntoGraveyardEffect(this);
}
@Override
public boolean apply(Game game, Ability source) {
Player controller = game.getPlayer(source.getControllerId());
if (controller == null) {
return false;
}
Set<Card> cards = controller.getLibrary()
.getCards(game)
.stream()
.filter(card -> filter.match(card, getId(), source, game))
.collect(Collectors.toSet());
Card card = RandomUtil.randomFromCollection(cards);
if (card == null) {
return false;
}
game.informPlayers(controller.getLogName() + " puts a random " + filter.getMessage() + " from their library into their graveyard.");
controller.moveCards(card, Zone.GRAVEYARD, source, game);
return true;
}
}

View file

@ -1,3 +1,4 @@
Alchemy: Dominaria|AlchemyDominaria|
Alchemy: Innistrad|AlchemyInnistrad|
Adventures in the Forgotten Realms|AdventuresInTheForgottenRealms|
Forgotten Realms Commander|ForgottenRealmsCommander|

View file

@ -40795,6 +40795,45 @@ Snowfield Sinkhole|Kaldheim|269|C||Snow Land - Plains Swamp|||({T}: Add {W} or {
Sulfurous Mire|Kaldheim|270|C||Snow Land - Swamp Mountain|||({T}: Add {B} or {R}.)$Sulfurous Mire enters the battlefield tapped.|
Surtland Frostpyre|Kaldheim|271|U||Land|||Surtland Frostpyre enters the battlefield tapped.${T}: Add {R}.${2}{U}{U}{R}, {T}, Sacrifice Surtland Frostpyre: Scry 2. Surtland Frostpyre deals 2 damage to each creature. Activate this ability only any time you could cast a sorcery.|
Tyrite Sanctum|Kaldheim|272|R||Land|||{T}: Add {C}.${2}, {T}: Target legendary creature becomes a God in addition to its other types. Put a +1/+1 counter on it.${4}, {T}, Sacrifice Tyrite Sanctum: Put an indestructible counter on target God.|
Benalish Knight-Counselor|Alchemy: Dominaria|1|U|{W}|Creature - Human Knight|2|1|Enlist$Whenever Benalish Knight-Counselor enlists a creature, you get a boon with "When you cast your next creature spell, that creature enters the battlefield with a +1/+1 counter on it."|
Priest of Possibility|Alchemy: Dominaria|2|R|{1}{W}|Creature - Kor Cleric|2|2|When Priest of Possibility enters the battlefield, look at the top seven cards of your library. If a card among them has flying, Priest of Possibility perpetually gains flying. The same is true for first strike, double strike, deathtouch, haste, hexproof, indestructible, lifelink, menace, protection, reach, trample, and vigilance. Then shuffle.|
Pull of the Mist Moon|Alchemy: Dominaria|3|U|{1}{W}{W}|Enchantment|Kicker {1}{U}|When Pull of the Mist Moon enters the battlefield, exile target nonland permanent an opponent controls until Pull of the Mist Moon leaves the battlefield.$When Pull of the Mist Moon enters the battlefield, if it was kicked, choose a nonland permanent card in your hand. It perpetually gains "When this permanent enters the battlefield, exile target nonland permanent an opponent controls until this permanent leaves the battlefield."|
Oracle of the Alpha|Alchemy: Dominaria|4|M|{2}{U}|Creature - Bird Wizard|2|3|Flying$When Oracle of the Alpha enters the battlefield, conjure the Power Nine into your library, then shuffle.$Whenever Oracle of the Alpha attacks, scry 1.|
Skywriter Djinn|Alchemy: Dominaria|5|R|{3}{U}|Creature - Djinn|3|4|Flying$Domain -- When Skywriter Djinn enters the battlefield, conjure a random card from Skywriter Djinn's spellbook into your hand. Then if you have fewer cards in hand than the number of basic land types among lands you control, repeat this process.|
Trove Mage|Alchemy: Dominaria|6|U|{2}{U}|Creature - Human Wizard|2|2|When Trove Mage enters the battlefield, seek an artifact card from among the top ten cards of your library, then shuffle.|
Vesuvan Mist|Alchemy: Dominaria|7|U|{1}{U}|Instant|||Kicker|{1}{B}$Return target nontoken, nonland permanent to its owner's hand. If this spell was kicked, conjure a duplicate of that card into your hand. It perpetually gains "You may spend mana as though it were mana of any color to cast this spell."|
Darigaaz's Whelp|Alchemy: Dominaria|8|U|{1}{B}|Creature - Dragon|2|1|Kicker {1}{R}$Flying$Whenever you draw a Dragon card, it perpetually gets +1/+1.$When Darigaaz's Whelp enters the battlefield, if it was kicked, seek a Dragon card. Darigaaz's Whelp and that Dragon card each perpetually get +1/+1.|
Diminished Returner|Alchemy: Dominaria|9|U|{1}{B}{B}|Creature - Phyrexian Skeleton|4|3|Diminished Returner enters the battlefield tapped.${B}{B}: Diminished Returner perpetually gets -1/-1, then return it to the battlefield. Activate only if Diminished Returner is in your graveyard and its toughness is 2 or greater.|
Reezug, the Bonecobbler|Alchemy: Dominaria|10|M|{1}{B}|Legendary Creature - Spirit Artificer|1|3|{T}: Target creature card in your graveyard perpetually becomes an artifact. You may cast that card this turn. (It loses all other card types.)|
Smogbelcher Chariot|Alchemy: Dominaria|11|R|{2}{B}|Artifact - Vehicle|3|3|Menace, deathtouch, lifelink$Whenever Smogbelcher Chariot attacks, target creature that crewed it this turn perpetually gains your choice of menace, deathtouch, or lifelink.$Crew 3|
Ghitu Embercoiler|Alchemy: Dominaria|12|R|{1}{R}|Creature - Human Wizard|2|2|Prowess$At the beginning of your precombat main phase, you may discard a card. If you do, seek a card with greater mana value and exile it. Until the end of your next turn, you may play the exiled card.|
Goblin Influx Array|Alchemy: Dominaria|13|R|{3}{R}|Enchantment|||Goblin spells you cast cost{R} less to cast. (If it doesn't require{R}, it costs{1} less to cast.)$At the beginning of your end step, conjure a random card from Goblin Influx Array's spellbook into your hand.|
Goblin Morale Sergeant|Alchemy: Dominaria|14|U|{1}{R}|Creature - Goblin Soldier|2|1|Haste$Enlist$Whenever Goblin Morale Sergeant enlists a nontoken creature, you may conjure a duplicate of that creature into the top five cards of your library at random. The duplicate perpetually gets +1/+0 and gains haste.|
Spellchain Scatter|Alchemy: Dominaria|15|U|{R}|Instant|||Kicker {U}$When you cast your next instant or sorcery spell this turn, conjure a duplicate of that spell into your hand. If this spell wasn't kicked, discard the duplicate at the beginning of your next end step.|
Marwyn's Kindred|Alchemy: Dominaria|16|M|{X}{2}{G}{G}|Sorcery|||Conjure a card named Marwyn, the Nurturer and X cards named Llanowar Elves onto the battlefield.|
Nantuko Slicer|Alchemy: Dominaria|17|R|{2}{G}{G}|Creature - Insect|3|2|Kicker {B}$When Nantuko Slicer enters the battlefield, return target card from your graveyard to your hand. If this spell was kicked, conjure a duplicate of target card in an opponent's graveyard into your hand. It perpetually gains "You may spend mana as though it were mana of any color to cast this spell."|
Vinesoul Spider|Alchemy: Dominaria|18|U|{1}{G}|Creature - Elemental Spider|3|2|Reach$At the beginning of your end step, put a random land card from your library into your graveyard.|
Wandering Treefolk|Alchemy: Dominaria|19|U|{1}{G}|Creature - Treefolk|2|3|Vigilance$Domain -- {7}{G}: Seek a creature card. This ability costs{1} less to activate for each basic land type among lands you control.|
Arvad, Weatherlight Smuggler|Alchemy: Dominaria|20|R|{W}{B}|Legendary Creature - Vampire Knight|1|1|Deathtouch, lifelink$At the beginning of your end step, if a creature died this turn, Arvad, Weatherlight Smuggler perpetually gets +X/+X where X is the number of creatures that died this turn. This ability also triggers if Arvad is in your graveyard.|
Bloodsprout Talisman|Alchemy: Dominaria|21|R|{B}{G}|Artifact|||Bloodsprout Talisman enters the battlefield tapped.${T}, Pay 1 life: Choose a nonland card in your hand. It perpetually gains "This spell costs{1} less to cast."|
Darigaaz, Shivan Champion|Alchemy: Dominaria|22|M|{2}{B}{R}{G}|Legendary Creature - Dragon|5|5|Flying$At the beginning of your end step, conjure a random card from Darigaaz, Shivan Champion's spellbook into exile face down with three egg counters on it. It gains "At the beginning of your upkeep, if this card is exiled, remove an egg counter from it. Then if it has no egg counters on it, put it onto the battlefield."|
Juggernaut Peddler|Alchemy: Dominaria|23|R|{W}{B}|Creature - Human Artificer|2|2|Vigilance$When Juggernaut Peddler enters the battlefield, target player reveals all nonland cards in their hand. You may choose one of those cards. If you do, that player exiles it and conjures a card named Juggernaut into their hand.|
Niambi, Beloved Protector|Alchemy: Dominaria|24|R|{W}{U}|Legendary Creature - Human Cleric|2|2|Flash$When Niambi, Beloved Protector enters the battlefield, if you cast it, choose target nonlegendary creature card in your graveyard that was put there from the battlefield this turn. Return it to the battlefield. It perpetually gains "Whenever this creature becomes the target of a spell or ability, draw a card. This ability triggers only once each turn."|
Protean War Engine|Alchemy: Dominaria|25|M|{R}{W}|Artifact - Vehicle|0|4|As Protean War Engine enters the battlefield, draft a card from Protean War Engine's spellbook and exile it.$Whenever Protean War Engine becomes crewed, until end of turn, it becomes a copy of the exiled card, except it's a Vehicle artifact in addition to its other types.$Crew 3|
Slimefoot, Thallid Transplant|Alchemy: Dominaria|26|R|{B}{G}|Legendary Creature - Fungus|2|2|Whenever a Swamp or Forest enters the battlefield under your control, draft a card from Slimefoot, Thallid Transplant's spellbook.|
Teferi's Contingency|Alchemy: Dominaria|27|R|{W}{U}{U}|Instant|||Counter target spell. Each card in its controller's graveyard, hand, and library with the same name as that spell perpetually gains "This spell costs{2} more to cast."|
Tiana, Angelic Mechanic|Alchemy: Dominaria|28|R|{1}{R}{W}|Legendary Creature - Angel Artificer|3|2|Flying$When Tiana, Angelic Mechanic or another legendary creature you control crews a Vehicle, that Vehicle perpetually gets +1/+0.|
Vodalian Tide Mage|Alchemy: Dominaria|29|R|{1}{G}{U}|Creature - Merfolk Wizard|3|3|Whenever one or more other nontoken creatures you control deal combat damage to a player, choose one of those creatures. Conjure a duplicate of the chosen creature into your hand.|
Coalition Construct|Alchemy: Dominaria|30|R|{3}|Artifact Creature - Construct|2|2|As Coalition Construct enters the battlefield, choose a creature type.$Coalition Construct is the chosen type in addition to its other types.$When Coalition Construct enters the battlefield, other creatures you control of the chosen type and creature cards of that type in your hand perpetually get +1/+1.|
Ancestral Recall|Alchemy: Dominaria|32|M|{U}|Instant|||Target player draws three cards.|
Time Walk|Alchemy: Dominaria|33|M|{1}{U}|Sorcery|||Take an extra turn after this one.|
Timetwister|Alchemy: Dominaria|34|M|{2}{U}|Sorcery|||Each player shuffles their hand and graveyard into their library, then draws seven cards. (Then put Timetwister into its owner's graveyard.)|
Black Lotus|Alchemy: Dominaria|35|M|{0}|Artifact|||{T}, Sacrifice Black Lotus: Add three mana of any one color.|
Mox Emerald|Alchemy: Dominaria|36|M|{0}|Artifact|||{T}: Add {G}.|
Mox Jet|Alchemy: Dominaria|37|M|{0}|Artifact|||{T}: Add {B}.|
Mox Pearl|Alchemy: Dominaria|38|M|{0}|Artifact|||{T}: Add {W}.|
Mox Ruby|Alchemy: Dominaria|39|M|{0}|Artifact|||{T}: Add {R}.|
Mox Sapphire|Alchemy: Dominaria|40|M|{0}|Artifact|||{T}: Add {U}.|
Volatile Fjord|Kaldheim|273|C||Snow Land - Island Mountain|||({T}: Add {U} or {R}.)$Volatile Fjord enters the battlefield tapped.|
Woodland Chasm|Kaldheim|274|C||Snow Land - Swamp Forest|||({T}: Add {B} or {G}.)$Woodland Chasm enters the battlefield tapped.|
The World Tree|Kaldheim|275|R||Land|||The World Tree enters the battlefield tapped.${T}: Add {G}.$As long as you control six or more lands, lands you control have "{T}: Add one mana of any color."${W}{W}{U}{U}{B}{B}{R}{R}{G}{G}, {T}, Sacrifice The World Tree: Search your library for any number of God cards, put them onto the battlefield, then shuffle your library.|

View file

@ -8,6 +8,7 @@ Classic Sixth Edition|6ED|
Seventh Edition|7ED|
Eighth Edition|8ED|
Ninth Edition|9ED|
Alchemy: Dominaria|YDMU|
Alchemy: Innistrad|Y22|
Adventures in the Forgotten Realms|AFR|
Forgotten Realms Commander|AFC|