From 02e863b0f4afc94611fa4a8694629bf12d40e431 Mon Sep 17 00:00:00 2001 From: Evan Kranzler Date: Sat, 1 Jun 2019 10:06:35 -0400 Subject: [PATCH] Implemented Rank Officer --- Mage.Sets/src/mage/cards/r/RankOfficer.java | 61 +++++++++++++++++++++ Mage.Sets/src/mage/sets/ModernHorizons.java | 1 + 2 files changed, 62 insertions(+) create mode 100644 Mage.Sets/src/mage/cards/r/RankOfficer.java diff --git a/Mage.Sets/src/mage/cards/r/RankOfficer.java b/Mage.Sets/src/mage/cards/r/RankOfficer.java new file mode 100644 index 00000000000..a8fa8964710 --- /dev/null +++ b/Mage.Sets/src/mage/cards/r/RankOfficer.java @@ -0,0 +1,61 @@ +package mage.cards.r; + +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.common.EntersBattlefieldTriggeredAbility; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.costs.common.DiscardCardCost; +import mage.abilities.costs.common.ExileFromGraveCost; +import mage.abilities.costs.common.TapSourceCost; +import mage.abilities.costs.mana.ManaCostsImpl; +import mage.abilities.effects.common.CreateTokenEffect; +import mage.abilities.effects.common.DoIfCostPaid; +import mage.abilities.effects.common.LoseLifeOpponentsEffect; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.SubType; +import mage.filter.StaticFilters; +import mage.game.permanent.token.ZombieToken; +import mage.target.common.TargetCardInYourGraveyard; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class RankOfficer extends CardImpl { + + public RankOfficer(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}"); + + this.subtype.add(SubType.ZOMBIE); + this.subtype.add(SubType.SOLDIER); + this.power = new MageInt(3); + this.toughness = new MageInt(1); + + // When Rank Officer enters the battlefield, you may discard a card. If you do, create a 2/2 black Zombie creature token. + this.addAbility(new EntersBattlefieldTriggeredAbility( + new DoIfCostPaid(new CreateTokenEffect(new ZombieToken()), new DiscardCardCost()) + )); + + // {1}{B}, {T}, Exile a creature card from your graveyard: Each opponent loses 2 life. + Ability ability = new SimpleActivatedAbility( + new LoseLifeOpponentsEffect(2), new ManaCostsImpl("{1}{B}") + ); + ability.addCost(new TapSourceCost()); + ability.addCost(new ExileFromGraveCost(new TargetCardInYourGraveyard( + StaticFilters.FILTER_CARD_CREATURE_YOUR_GRAVEYARD + ))); + this.addAbility(ability); + } + + private RankOfficer(final RankOfficer card) { + super(card); + } + + @Override + public RankOfficer copy() { + return new RankOfficer(this); + } +} diff --git a/Mage.Sets/src/mage/sets/ModernHorizons.java b/Mage.Sets/src/mage/sets/ModernHorizons.java index 72e22d8acad..38eb1d05ec2 100644 --- a/Mage.Sets/src/mage/sets/ModernHorizons.java +++ b/Mage.Sets/src/mage/sets/ModernHorizons.java @@ -166,6 +166,7 @@ public final class ModernHorizons extends ExpansionSet { cards.add(new SetCardInfo("Pyrophobia", 141, Rarity.COMMON, mage.cards.p.Pyrophobia.class)); cards.add(new SetCardInfo("Rain of Revelation", 65, Rarity.COMMON, mage.cards.r.RainOfRevelation.class)); cards.add(new SetCardInfo("Ranger-Captain of Eos", 21, Rarity.MYTHIC, mage.cards.r.RangerCaptainOfEos.class)); + cards.add(new SetCardInfo("Rank Officer", 102, Rarity.COMMON, mage.cards.r.RankOfficer.class)); cards.add(new SetCardInfo("Ransack the Lab", 103, Rarity.COMMON, mage.cards.r.RansackTheLab.class)); cards.add(new SetCardInfo("Ravenous Giant", 143, Rarity.UNCOMMON, mage.cards.r.RavenousGiant.class)); cards.add(new SetCardInfo("Reap the Past", 211, Rarity.RARE, mage.cards.r.ReapThePast.class));