From e783d40efda1994064b4eb73af5e0f2f4e85b18d Mon Sep 17 00:00:00 2001 From: theelk801 Date: Wed, 27 Mar 2024 11:22:24 -0400 Subject: [PATCH] [OTJ] Implement Honest Rutstein --- .../src/mage/cards/e/EtheriumSculptor.java | 17 +++--- .../src/mage/cards/h/HonestRutstein.java | 54 +++++++++++++++++++ .../mage/sets/OutlawsOfThunderJunction.java | 1 + 3 files changed, 62 insertions(+), 10 deletions(-) create mode 100644 Mage.Sets/src/mage/cards/h/HonestRutstein.java diff --git a/Mage.Sets/src/mage/cards/e/EtheriumSculptor.java b/Mage.Sets/src/mage/cards/e/EtheriumSculptor.java index 598231fe3a3..e8a37bcc953 100644 --- a/Mage.Sets/src/mage/cards/e/EtheriumSculptor.java +++ b/Mage.Sets/src/mage/cards/e/EtheriumSculptor.java @@ -1,7 +1,5 @@ - package mage.cards.e; -import java.util.UUID; import mage.MageInt; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.common.cost.SpellsCostReductionControllerEffect; @@ -9,21 +7,20 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; -import mage.constants.Zone; import mage.filter.FilterCard; +import mage.filter.common.FilterArtifactCard; + +import java.util.UUID; /** - * * @author North */ public final class EtheriumSculptor extends CardImpl { - private static final FilterCard filter = new FilterCard("Artifact spells"); - static { - filter.add(CardType.ARTIFACT.getPredicate()); - } + + private static final FilterCard filter = new FilterArtifactCard("artifact spells"); public EtheriumSculptor(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{1}{U}"); + super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{1}{U}"); this.subtype.add(SubType.VEDALKEN); this.subtype.add(SubType.ARTIFICER); @@ -31,7 +28,7 @@ public final class EtheriumSculptor extends CardImpl { this.toughness = new MageInt(2); // Artifact spells you cast cost {1} less to cast. - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new SpellsCostReductionControllerEffect(filter, 1))); + this.addAbility(new SimpleStaticAbility(new SpellsCostReductionControllerEffect(filter, 1))); } private EtheriumSculptor(final EtheriumSculptor card) { diff --git a/Mage.Sets/src/mage/cards/h/HonestRutstein.java b/Mage.Sets/src/mage/cards/h/HonestRutstein.java new file mode 100644 index 00000000000..4ae57cc1521 --- /dev/null +++ b/Mage.Sets/src/mage/cards/h/HonestRutstein.java @@ -0,0 +1,54 @@ +package mage.cards.h; + +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.common.EntersBattlefieldTriggeredAbility; +import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.effects.common.ReturnFromGraveyardToHandTargetEffect; +import mage.abilities.effects.common.cost.SpellsCostReductionControllerEffect; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.SubType; +import mage.constants.SuperType; +import mage.filter.FilterCard; +import mage.filter.StaticFilters; +import mage.filter.common.FilterCreatureCard; +import mage.target.common.TargetCardInYourGraveyard; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class HonestRutstein extends CardImpl { + + private static final FilterCard filter = new FilterCreatureCard("creature spells"); + + public HonestRutstein(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}{G}"); + + this.supertype.add(SuperType.LEGENDARY); + this.subtype.add(SubType.HUMAN); + this.subtype.add(SubType.WARLOCK); + this.power = new MageInt(3); + this.toughness = new MageInt(2); + + // When Honest Rutstein enters the battlefield, return target creature card from your graveyard to your hand. + Ability ability = new EntersBattlefieldTriggeredAbility(new ReturnFromGraveyardToHandTargetEffect()); + ability.addTarget(new TargetCardInYourGraveyard(StaticFilters.FILTER_CARD_CREATURE_YOUR_GRAVEYARD)); + this.addAbility(ability); + + // Creature spells you cast cost {1} less to cast. + this.addAbility(new SimpleStaticAbility(new SpellsCostReductionControllerEffect(filter, 1))); + } + + private HonestRutstein(final HonestRutstein card) { + super(card); + } + + @Override + public HonestRutstein copy() { + return new HonestRutstein(this); + } +} diff --git a/Mage.Sets/src/mage/sets/OutlawsOfThunderJunction.java b/Mage.Sets/src/mage/sets/OutlawsOfThunderJunction.java index da5dd401f15..ba265068682 100644 --- a/Mage.Sets/src/mage/sets/OutlawsOfThunderJunction.java +++ b/Mage.Sets/src/mage/sets/OutlawsOfThunderJunction.java @@ -41,6 +41,7 @@ public final class OutlawsOfThunderJunction extends ExpansionSet { cards.add(new SetCardInfo("Hell to Pay", 126, Rarity.RARE, mage.cards.h.HellToPay.class)); cards.add(new SetCardInfo("High Noon", 15, Rarity.RARE, mage.cards.h.HighNoon.class)); cards.add(new SetCardInfo("Holy Cow", 16, Rarity.COMMON, mage.cards.h.HolyCow.class)); + cards.add(new SetCardInfo("Honest Rutstein", 207, Rarity.UNCOMMON, mage.cards.h.HonestRutstein.class)); cards.add(new SetCardInfo("Inspiring Vantage", 269, Rarity.RARE, mage.cards.i.InspiringVantage.class)); cards.add(new SetCardInfo("Island", 273, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Jagged Barrens", 259, Rarity.COMMON, mage.cards.j.JaggedBarrens.class));