diff --git a/Mage.Sets/src/mage/cards/r/RysorianBadger.java b/Mage.Sets/src/mage/cards/r/RysorianBadger.java new file mode 100644 index 0000000000..0b188d906f --- /dev/null +++ b/Mage.Sets/src/mage/cards/r/RysorianBadger.java @@ -0,0 +1,105 @@ +package mage.cards.r; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.common.AttacksAndIsNotBlockedTriggeredAbility; +import mage.abilities.effects.OneShotEffect; +import mage.abilities.effects.common.continuous.AssignNoCombatDamageSourceEffect; +import mage.cards.Card; +import mage.constants.SubType; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.cards.Cards; +import mage.cards.CardsImpl; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.Outcome; +import mage.constants.Zone; +import mage.filter.common.FilterCreatureCard; +import mage.filter.predicate.permanent.DefendingPlayerOwnsCardPredicate; +import mage.game.Game; +import mage.players.Player; +import mage.target.common.TargetCardInGraveyard; + +/** + * + * @author TheElk801 + */ +public final class RysorianBadger extends CardImpl { + + private static final FilterCreatureCard filter = new FilterCreatureCard("creature cards from defending player's graveyard"); + + static { + filter.add(new DefendingPlayerOwnsCardPredicate()); + } + + public RysorianBadger(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}"); + + this.subtype.add(SubType.BADGER); + this.power = new MageInt(2); + this.toughness = new MageInt(2); + + // Whenever Rysorian Badger attacks and isn't blocked, you may exile up to two target creature cards from defending player's graveyard. If you do, you gain 1 life for each card exiled this way and Rysorian Badger assigns no combat damage this turn. + Ability ability = new AttacksAndIsNotBlockedTriggeredAbility( + new RysorianBadgerEffect(), true + ); + ability.addTarget(new TargetCardInGraveyard(0, 2, filter)); + this.addAbility(ability); + } + + public RysorianBadger(final RysorianBadger card) { + super(card); + } + + @Override + public RysorianBadger copy() { + return new RysorianBadger(this); + } +} + +class RysorianBadgerEffect extends OneShotEffect { + + public RysorianBadgerEffect() { + super(Outcome.Benefit); + this.staticText = "you may exile up to two target creature cards " + + "from defending player's graveyard. If you do, " + + "you gain 1 life for each card exiled this way " + + "and {this} assigns no combat damage this turn."; + } + + public RysorianBadgerEffect(final RysorianBadgerEffect effect) { + super(effect); + } + + @Override + public RysorianBadgerEffect copy() { + return new RysorianBadgerEffect(this); + } + + @Override + public boolean apply(Game game, Ability source) { + Player player = game.getPlayer(source.getControllerId()); + if (player == null) { + return false; + } + Cards cardsToExile = new CardsImpl(); + for (UUID cardId : this.getTargetPointer().getTargets(game, source)) { + Card card = game.getCard(cardId); + if (card != null) { + cardsToExile.add(card); + } + } + int cardsExiled = 0; + player.moveCardsToExile(cardsToExile.getCards(game), source, game, false, null, null); + for (Card card : cardsToExile.getCards(game)) { + if (game.getState().getZone(card.getId()) == Zone.EXILED) { + cardsExiled++; + } + } + player.gainLife(cardsExiled, game, source); + game.addEffect(new AssignNoCombatDamageSourceEffect(Duration.EndOfTurn), source); + return true; + } +} diff --git a/Mage.Sets/src/mage/sets/Homelands.java b/Mage.Sets/src/mage/sets/Homelands.java index 16621bcbed..a9c872ebbc 100644 --- a/Mage.Sets/src/mage/sets/Homelands.java +++ b/Mage.Sets/src/mage/sets/Homelands.java @@ -142,6 +142,7 @@ public final class Homelands extends ExpansionSet { cards.add(new SetCardInfo("Root Spider", 94, Rarity.UNCOMMON, mage.cards.r.RootSpider.class)); cards.add(new SetCardInfo("Roots", 95, Rarity.UNCOMMON, mage.cards.r.Roots.class)); cards.add(new SetCardInfo("Roterothopter", 109, Rarity.COMMON, mage.cards.r.Roterothopter.class)); + cards.add(new SetCardInfo("Rysorian Badger", 96, Rarity.RARE, mage.cards.r.RysorianBadger.class)); cards.add(new SetCardInfo("Samite Alchemist", 117, Rarity.COMMON, mage.cards.s.SamiteAlchemist.class)); cards.add(new SetCardInfo("Sea Sprite", 38, Rarity.UNCOMMON, mage.cards.s.SeaSprite.class)); cards.add(new SetCardInfo("Sengir Autocrat", 56, Rarity.UNCOMMON, mage.cards.s.SengirAutocrat.class));