diff --git a/Mage.Sets/src/mage/cards/b/BelunaGrandsquall.java b/Mage.Sets/src/mage/cards/b/BelunaGrandsquall.java new file mode 100644 index 00000000000..2034292c245 --- /dev/null +++ b/Mage.Sets/src/mage/cards/b/BelunaGrandsquall.java @@ -0,0 +1,110 @@ +package mage.cards.b; + +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.effects.OneShotEffect; +import mage.abilities.effects.common.cost.SpellsCostReductionControllerEffect; +import mage.abilities.keyword.TrampleAbility; +import mage.cards.AdventureCard; +import mage.cards.Card; +import mage.cards.CardSetInfo; +import mage.cards.Cards; +import mage.constants.*; +import mage.filter.FilterCard; +import mage.filter.common.FilterPermanentCard; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.AdventurePredicate; +import mage.game.Game; +import mage.players.Player; + +import java.util.UUID; + +/** + * @author Susucr + */ +public final class BelunaGrandsquall extends AdventureCard { + + private static final FilterCard filter = new FilterPermanentCard("permanent spells you cast that have an Adventure"); + + static { + filter.add(AdventurePredicate.instance); + } + + public BelunaGrandsquall(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, new CardType[]{CardType.INSTANT}, "{G}{U}{R}", "Seek Thrills", "{2}{G}{U}{R}"); + + this.supertype.add(SuperType.LEGENDARY); + this.subtype.add(SubType.GIANT); + this.subtype.add(SubType.NOBLE); + this.power = new MageInt(4); + this.toughness = new MageInt(4); + + // Trample + this.addAbility(TrampleAbility.getInstance()); + + // Permanent spells you cast that have an Adventure cost {1} less to cast. + this.addAbility(new SimpleStaticAbility(new SpellsCostReductionControllerEffect(filter, 1))); + + // Seek Thrills + // Mill seven cards. Then put all cards that have an Adventure from among the milled cards into your hand. + this.getSpellCard().getSpellAbility().addEffect(new SeekThrillsEffect()); + } + + private BelunaGrandsquall(final BelunaGrandsquall card) { + super(card); + } + + @Override + public BelunaGrandsquall copy() { + return new BelunaGrandsquall(this); + } +} + + +class SeekThrillsEffect extends OneShotEffect { + + private static final FilterCard filter = new FilterCard("creature, enchantment, or land card"); + + static { + filter.add(Predicates.or( + CardType.CREATURE.getPredicate(), + CardType.ENCHANTMENT.getPredicate(), + CardType.LAND.getPredicate() + )); + } + + SeekThrillsEffect() { + super(Outcome.Benefit); + staticText = "mill seven cards. Then put all cards that have an Adventure from among the milled cards into your hand."; + } + + private SeekThrillsEffect(final SeekThrillsEffect effect) { + super(effect); + } + + @Override + public SeekThrillsEffect copy() { + return new SeekThrillsEffect(this); + } + + @Override + public boolean apply(Game game, Ability source) { + Player player = game.getPlayer(source.getControllerId()); + if (player == null) { + return false; + } + + Cards cards = player.millCards(7, source, game); + cards.retainZone(Zone.GRAVEYARD, game); + for (Card card : cards.getCards(game)) { + if (!AdventurePredicate.instance.apply(card, game)) { + cards.remove(card); + } + } + + player.moveCardsToHandWithInfo(cards, source, game, true); + return true; + } + +} \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/WildsOfEldraine.java b/Mage.Sets/src/mage/sets/WildsOfEldraine.java index 147cb095c5e..37944aa7cd6 100644 --- a/Mage.Sets/src/mage/sets/WildsOfEldraine.java +++ b/Mage.Sets/src/mage/sets/WildsOfEldraine.java @@ -26,6 +26,7 @@ public final class WildsOfEldraine extends ExpansionSet { cards.add(new SetCardInfo("Ashiok's Reaper", 79, Rarity.UNCOMMON, mage.cards.a.AshioksReaper.class)); cards.add(new SetCardInfo("Asinine Antics", 42, Rarity.MYTHIC, mage.cards.a.AsinineAntics.class)); cards.add(new SetCardInfo("Beanstalk Wurm", 161, Rarity.COMMON, mage.cards.b.BeanstalkWurm.class)); + cards.add(new SetCardInfo("Beluna Grandsquall", 220, Rarity.MYTHIC, mage.cards.b.BelunaGrandsquall.class)); cards.add(new SetCardInfo("Beseech the Mirror", 82, Rarity.MYTHIC, mage.cards.b.BeseechTheMirror.class)); cards.add(new SetCardInfo("Besotted Knight", 4, Rarity.COMMON, mage.cards.b.BesottedKnight.class)); cards.add(new SetCardInfo("Bitter Chill", 44, Rarity.UNCOMMON, mage.cards.b.BitterChill.class));