From e30beb81cfca799afa7d9736b3a703f3a26c7113 Mon Sep 17 00:00:00 2001 From: Susucre <34709007+Susucre@users.noreply.github.com> Date: Tue, 4 Jun 2024 18:02:41 +0200 Subject: [PATCH] implement [MH3] Monumental Henge --- .../src/mage/cards/m/MonumentalHenge.java | 70 +++++++++++++++++++ Mage.Sets/src/mage/sets/ModernHorizons3.java | 1 + 2 files changed, 71 insertions(+) create mode 100644 Mage.Sets/src/mage/cards/m/MonumentalHenge.java diff --git a/Mage.Sets/src/mage/cards/m/MonumentalHenge.java b/Mage.Sets/src/mage/cards/m/MonumentalHenge.java new file mode 100644 index 00000000000..06e305430ce --- /dev/null +++ b/Mage.Sets/src/mage/cards/m/MonumentalHenge.java @@ -0,0 +1,70 @@ +package mage.cards.m; + +import mage.abilities.Ability; +import mage.abilities.common.EntersBattlefieldAbility; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.condition.Condition; +import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition; +import mage.abilities.costs.common.TapSourceCost; +import mage.abilities.costs.mana.ManaCostsImpl; +import mage.abilities.decorator.ConditionalOneShotEffect; +import mage.abilities.effects.common.LookLibraryAndPickControllerEffect; +import mage.abilities.effects.common.TapSourceEffect; +import mage.abilities.mana.WhiteManaAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.ComparisonType; +import mage.constants.PutCards; +import mage.constants.SubType; +import mage.filter.FilterCard; +import mage.filter.FilterPermanent; +import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.HistoricPredicate; + +import java.util.UUID; + +/** + * @author Susucr + */ +public final class MonumentalHenge extends CardImpl { + + private static final FilterPermanent filter = new FilterControlledPermanent(SubType.PLAINS); + private static final Condition condition + = new PermanentsOnTheBattlefieldCondition(filter, ComparisonType.EQUAL_TO, 0); + + private static final FilterCard filterCard = new FilterCard("a historic card"); + + static { + filterCard.add(HistoricPredicate.instance); + } + + public MonumentalHenge(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.LAND}, ""); + + // Monumental Henge enters the battlefield tapped unless you control a Plains. + this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect( + new TapSourceEffect(), condition + ), "tapped unless you control a Plains")); + + // {T}: Add {W}. + this.addAbility(new WhiteManaAbility()); + + // {2}{W}{W}, {T}: Look at the top five cards of your library. You may reveal a historic card from among them and put it into your hand. Put the rest on the bottom of your library in a random order. + Ability ability = new SimpleActivatedAbility( + new LookLibraryAndPickControllerEffect(5, 1, filterCard, PutCards.HAND, PutCards.BOTTOM_RANDOM, true), + new ManaCostsImpl<>("{2}{W}{W}") + ); + ability.addCost(new TapSourceCost()); + this.addAbility(ability); + } + + private MonumentalHenge(final MonumentalHenge card) { + super(card); + } + + @Override + public MonumentalHenge copy() { + return new MonumentalHenge(this); + } +} diff --git a/Mage.Sets/src/mage/sets/ModernHorizons3.java b/Mage.Sets/src/mage/sets/ModernHorizons3.java index 7f6cc7c2a85..c5987b272c4 100644 --- a/Mage.Sets/src/mage/sets/ModernHorizons3.java +++ b/Mage.Sets/src/mage/sets/ModernHorizons3.java @@ -177,6 +177,7 @@ public final class ModernHorizons3 extends ExpansionSet { cards.add(new SetCardInfo("Mogg Mob", 127, Rarity.UNCOMMON, mage.cards.m.MoggMob.class)); cards.add(new SetCardInfo("Molten Gatekeeper", 128, Rarity.COMMON, mage.cards.m.MoltenGatekeeper.class)); cards.add(new SetCardInfo("Monstrous Vortex", 162, Rarity.UNCOMMON, mage.cards.m.MonstrousVortex.class)); + cards.add(new SetCardInfo("Monumental Henge", 222, Rarity.RARE, mage.cards.m.MonumentalHenge.class)); cards.add(new SetCardInfo("Mountain", 307, Rarity.LAND, mage.cards.basiclands.Mountain.class, FULL_ART_BFZ_VARIOUS)); cards.add(new SetCardInfo("Muster the Departed", 36, Rarity.UNCOMMON, mage.cards.m.MusterTheDeparted.class)); cards.add(new SetCardInfo("Nadier's Nightblade", 275, Rarity.UNCOMMON, mage.cards.n.NadiersNightblade.class));