From 5738f582ca0b96c3ccd3983e289d09d0658d2d2e Mon Sep 17 00:00:00 2001 From: theelk801 Date: Thu, 23 Jan 2025 11:51:53 -0500 Subject: [PATCH] [DFT] Implement Prowcatcher Specialist --- .../mage/cards/p/ProwcatcherSpecialist.java | 46 +++++++++++++++++++ Mage.Sets/src/mage/sets/Aetherdrift.java | 1 + .../abilities/keyword/ExhaustAbility.java | 31 +++++++++++++ 3 files changed, 78 insertions(+) create mode 100644 Mage.Sets/src/mage/cards/p/ProwcatcherSpecialist.java create mode 100644 Mage/src/main/java/mage/abilities/keyword/ExhaustAbility.java diff --git a/Mage.Sets/src/mage/cards/p/ProwcatcherSpecialist.java b/Mage.Sets/src/mage/cards/p/ProwcatcherSpecialist.java new file mode 100644 index 00000000000..260fe793512 --- /dev/null +++ b/Mage.Sets/src/mage/cards/p/ProwcatcherSpecialist.java @@ -0,0 +1,46 @@ +package mage.cards.p; + +import mage.MageInt; +import mage.abilities.costs.mana.ManaCostsImpl; +import mage.abilities.effects.common.counter.AddCountersSourceEffect; +import mage.abilities.keyword.ExhaustAbility; +import mage.abilities.keyword.HasteAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.SubType; +import mage.counters.CounterType; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class ProwcatcherSpecialist extends CardImpl { + + public ProwcatcherSpecialist(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}"); + + this.subtype.add(SubType.GOBLIN); + this.subtype.add(SubType.WARRIOR); + this.power = new MageInt(2); + this.toughness = new MageInt(1); + + // Haste + this.addAbility(HasteAbility.getInstance()); + + // Exhaust -- {3}{R}: Put two +1/+1 counters on this creature. + this.addAbility(new ExhaustAbility( + new AddCountersSourceEffect(CounterType.P1P1.createInstance(2)), new ManaCostsImpl<>("{3}{R}") + )); + } + + private ProwcatcherSpecialist(final ProwcatcherSpecialist card) { + super(card); + } + + @Override + public ProwcatcherSpecialist copy() { + return new ProwcatcherSpecialist(this); + } +} diff --git a/Mage.Sets/src/mage/sets/Aetherdrift.java b/Mage.Sets/src/mage/sets/Aetherdrift.java index c69e66050a2..ac8e38fd80f 100644 --- a/Mage.Sets/src/mage/sets/Aetherdrift.java +++ b/Mage.Sets/src/mage/sets/Aetherdrift.java @@ -39,6 +39,7 @@ public final class Aetherdrift extends ExpansionSet { cards.add(new SetCardInfo("Lightshield Parry", 19, Rarity.COMMON, mage.cards.l.LightshieldParry.class)); cards.add(new SetCardInfo("Mountain", 286, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Plains", 272, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Prowcatcher Specialist", 142, Rarity.COMMON, mage.cards.p.ProwcatcherSpecialist.class)); cards.add(new SetCardInfo("Riverpyre Verge", 260, Rarity.RARE, mage.cards.r.RiverpyreVerge.class)); cards.add(new SetCardInfo("Rugged Highlands", 262, Rarity.COMMON, mage.cards.r.RuggedHighlands.class)); cards.add(new SetCardInfo("Scoured Barrens", 263, Rarity.COMMON, mage.cards.s.ScouredBarrens.class)); diff --git a/Mage/src/main/java/mage/abilities/keyword/ExhaustAbility.java b/Mage/src/main/java/mage/abilities/keyword/ExhaustAbility.java new file mode 100644 index 00000000000..4b325da69ed --- /dev/null +++ b/Mage/src/main/java/mage/abilities/keyword/ExhaustAbility.java @@ -0,0 +1,31 @@ +package mage.abilities.keyword; + +import mage.abilities.ActivatedAbilityImpl; +import mage.abilities.costs.Cost; +import mage.abilities.effects.Effect; +import mage.constants.Zone; + +/** + * @author TheElk801 + */ +public class ExhaustAbility extends ActivatedAbilityImpl { + + public ExhaustAbility(Effect effect, Cost cost) { + super(Zone.BATTLEFIELD, effect, cost); + } + + private ExhaustAbility(final ExhaustAbility ability) { + super(ability); + this.maxActivationsPerGame = 1; + } + + @Override + public ExhaustAbility copy() { + return new ExhaustAbility(this); + } + + @Override + public String getRule() { + return "Exhaust — " + super.getRule() + " (Activate each exhaust ability only once.)"; + } +}