From 018b43633b22417263deec636ab2849dc3599386 Mon Sep 17 00:00:00 2001 From: theelk801 Date: Wed, 9 Jul 2025 09:21:20 -0400 Subject: [PATCH] [EOE] Implement Consult the Star Charts --- .../mage/cards/c/ConsultTheStarCharts.java | 44 +++++++++++++++++++ Mage.Sets/src/mage/sets/EdgeOfEternities.java | 2 + 2 files changed, 46 insertions(+) create mode 100644 Mage.Sets/src/mage/cards/c/ConsultTheStarCharts.java diff --git a/Mage.Sets/src/mage/cards/c/ConsultTheStarCharts.java b/Mage.Sets/src/mage/cards/c/ConsultTheStarCharts.java new file mode 100644 index 00000000000..6a2cfcbbe25 --- /dev/null +++ b/Mage.Sets/src/mage/cards/c/ConsultTheStarCharts.java @@ -0,0 +1,44 @@ +package mage.cards.c; + +import mage.abilities.condition.common.KickedCondition; +import mage.abilities.decorator.ConditionalOneShotEffect; +import mage.abilities.dynamicvalue.common.ManaSpentToCastCount; +import mage.abilities.effects.common.LookLibraryAndPickControllerEffect; +import mage.abilities.keyword.KickerAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.PutCards; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class ConsultTheStarCharts extends CardImpl { + + public ConsultTheStarCharts(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{U}"); + + // Kicker {1}{U} + this.addAbility(new KickerAbility("{1}{U}")); + + // Look at the top X cards of your library, where X is the number of lands you control. Put one of those cards into your hand. If this spell was kicked, put two of those cards into your hand instead. Put the rest on the bottom of your library in a random order. + this.getSpellAbility().addEffect(new ConditionalOneShotEffect( + new LookLibraryAndPickControllerEffect(ManaSpentToCastCount.instance, 2, PutCards.HAND, PutCards.BOTTOM_RANDOM), + new LookLibraryAndPickControllerEffect(ManaSpentToCastCount.instance, 1, PutCards.HAND, PutCards.BOTTOM_RANDOM), + KickedCondition.ONCE, "look at the top X cards of your library, where X is the number of lands you control. " + + "Put one of those cards into your hand. If this spell was kicked, put two of those cards into your hand instead. " + + "Put the rest on the bottom of your library in a random order" + )); + } + + private ConsultTheStarCharts(final ConsultTheStarCharts card) { + super(card); + } + + @Override + public ConsultTheStarCharts copy() { + return new ConsultTheStarCharts(this); + } +} diff --git a/Mage.Sets/src/mage/sets/EdgeOfEternities.java b/Mage.Sets/src/mage/sets/EdgeOfEternities.java index 2f65792fbee..2bcf3793d62 100644 --- a/Mage.Sets/src/mage/sets/EdgeOfEternities.java +++ b/Mage.Sets/src/mage/sets/EdgeOfEternities.java @@ -37,6 +37,8 @@ public final class EdgeOfEternities extends ExpansionSet { cards.add(new SetCardInfo("Breeding Pool", 373, Rarity.RARE, mage.cards.b.BreedingPool.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Bygone Colossus", 235, Rarity.UNCOMMON, mage.cards.b.BygoneColossus.class)); cards.add(new SetCardInfo("Command Bridge", 252, Rarity.COMMON, mage.cards.c.CommandBridge.class)); + cards.add(new SetCardInfo("Consult the Star Charts", 325, Rarity.RARE, mage.cards.c.ConsultTheStarCharts.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Consult the Star Charts", 51, Rarity.RARE, mage.cards.c.ConsultTheStarCharts.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Decode Transmissions", 94, Rarity.COMMON, mage.cards.d.DecodeTransmissions.class)); cards.add(new SetCardInfo("Embrace Oblivion", 98, Rarity.COMMON, mage.cards.e.EmbraceOblivion.class)); cards.add(new SetCardInfo("Emergency Eject", 14, Rarity.UNCOMMON, mage.cards.e.EmergencyEject.class));