diff --git a/Mage.Sets/src/mage/cards/g/GollumPatientPlotter.java b/Mage.Sets/src/mage/cards/g/GollumPatientPlotter.java new file mode 100644 index 0000000000..46e6d6b98c --- /dev/null +++ b/Mage.Sets/src/mage/cards/g/GollumPatientPlotter.java @@ -0,0 +1,54 @@ +package mage.cards.g; + +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.common.ActivateAsSorceryActivatedAbility; +import mage.abilities.common.LeavesBattlefieldTriggeredAbility; +import mage.abilities.costs.common.SacrificeTargetCost; +import mage.abilities.costs.mana.ManaCostsImpl; +import mage.abilities.effects.common.ReturnSourceFromGraveyardToHandEffect; +import mage.abilities.effects.keyword.TheRingTemptsYouEffect; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.SubType; +import mage.constants.SuperType; +import mage.constants.Zone; +import mage.filter.StaticFilters; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class GollumPatientPlotter extends CardImpl { + + public GollumPatientPlotter(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}"); + + this.addSuperType(SuperType.LEGENDARY); + this.subtype.add(SubType.HALFLING); + this.subtype.add(SubType.HORROR); + this.power = new MageInt(3); + this.toughness = new MageInt(1); + + // When Gollum, Patient Plotter leaves the battlefield, the Ring tempts you. + this.addAbility(new LeavesBattlefieldTriggeredAbility(new TheRingTemptsYouEffect(), false)); + + // {B}, Sacrifice a creature: Return Gollum from your graveyard to your hand. Activate only as a sorcery. + Ability ability = new ActivateAsSorceryActivatedAbility( + Zone.GRAVEYARD, new ReturnSourceFromGraveyardToHandEffect(), new ManaCostsImpl<>("{B}") + ); + ability.addCost(new SacrificeTargetCost(StaticFilters.FILTER_CONTROLLED_CREATURE_SHORT_TEXT)); + this.addAbility(ability); + } + + private GollumPatientPlotter(final GollumPatientPlotter card) { + super(card); + } + + @Override + public GollumPatientPlotter copy() { + return new GollumPatientPlotter(this); + } +} diff --git a/Mage.Sets/src/mage/sets/TheLordOfTheRingsTalesOfMiddleEarth.java b/Mage.Sets/src/mage/sets/TheLordOfTheRingsTalesOfMiddleEarth.java index cf59b48f06..f23abcfb5b 100644 --- a/Mage.Sets/src/mage/sets/TheLordOfTheRingsTalesOfMiddleEarth.java +++ b/Mage.Sets/src/mage/sets/TheLordOfTheRingsTalesOfMiddleEarth.java @@ -4,8 +4,12 @@ import mage.cards.ExpansionSet; import mage.constants.Rarity; import mage.constants.SetType; +import java.util.Arrays; +import java.util.List; + public final class TheLordOfTheRingsTalesOfMiddleEarth extends ExpansionSet { + private static final List unfinished = Arrays.asList("Frodo, Sauron's Bane", "Gollum, Patient Plotter", "Samwise the Stouthearted"); private static final TheLordOfTheRingsTalesOfMiddleEarth instance = new TheLordOfTheRingsTalesOfMiddleEarth(); public static TheLordOfTheRingsTalesOfMiddleEarth getInstance() { @@ -21,6 +25,7 @@ public final class TheLordOfTheRingsTalesOfMiddleEarth extends ExpansionSet { cards.add(new SetCardInfo("Aragorn and Arwen, Wed", 287, Rarity.MYTHIC, mage.cards.a.AragornAndArwenWed.class)); cards.add(new SetCardInfo("Forest", 280, Rarity.LAND, mage.cards.basiclands.Forest.class, FULL_ART_BFZ_VARIOUS)); cards.add(new SetCardInfo("Gandalf the Grey", 207, Rarity.RARE, mage.cards.g.GandalfTheGrey.class)); + cards.add(new SetCardInfo("Gollum, Patient Plotter", 84, Rarity.UNCOMMON, mage.cards.g.GollumPatientPlotter.class)); cards.add(new SetCardInfo("Island", 274, Rarity.LAND, mage.cards.basiclands.Island.class, FULL_ART_BFZ_VARIOUS)); cards.add(new SetCardInfo("Mount Doom", 258, Rarity.MYTHIC, mage.cards.m.MountDoom.class)); cards.add(new SetCardInfo("Mountain", 278, Rarity.LAND, mage.cards.basiclands.Mountain.class, FULL_ART_BFZ_VARIOUS)); @@ -32,5 +37,7 @@ public final class TheLordOfTheRingsTalesOfMiddleEarth extends ExpansionSet { cards.add(new SetCardInfo("The Shire", 260, Rarity.RARE, mage.cards.t.TheShire.class)); cards.add(new SetCardInfo("Trailblazer's Boots", 398, Rarity.RARE, mage.cards.t.TrailblazersBoots.class)); cards.add(new SetCardInfo("You Cannot Pass!", 38, Rarity.UNCOMMON, mage.cards.y.YouCannotPass.class)); + + cards.removeIf(setCardInfo -> unfinished.contains(setCardInfo.getName())); // remove when mechanic is implemented } } diff --git a/Mage/src/main/java/mage/abilities/effects/keyword/TheRingTemptsYouEffect.java b/Mage/src/main/java/mage/abilities/effects/keyword/TheRingTemptsYouEffect.java new file mode 100644 index 0000000000..ac12b00e50 --- /dev/null +++ b/Mage/src/main/java/mage/abilities/effects/keyword/TheRingTemptsYouEffect.java @@ -0,0 +1,32 @@ +package mage.abilities.effects.keyword; + +import mage.abilities.Ability; +import mage.abilities.effects.OneShotEffect; +import mage.constants.Outcome; +import mage.game.Game; + +/** + * @author TheElk801 + */ +public class TheRingTemptsYouEffect extends OneShotEffect { + + public TheRingTemptsYouEffect() { + super(Outcome.Benefit); + staticText = "the Ring tempts you"; + } + + private TheRingTemptsYouEffect(final TheRingTemptsYouEffect effect) { + super(effect); + } + + @Override + public TheRingTemptsYouEffect copy() { + return new TheRingTemptsYouEffect(this); + } + + @Override + public boolean apply(Game game, Ability source) { + // TODO: Implement when we know what the mechanic does + return false; + } +}