From 504889b7b43fd6ff14f5577808672ce63022da7b Mon Sep 17 00:00:00 2001 From: PurpleCrowbar <26198472+PurpleCrowbar@users.noreply.github.com> Date: Fri, 23 Feb 2024 03:18:27 +0000 Subject: [PATCH] [MKC] Implement Tesak, Judith's Hellhound (#11831) --- .../mage/cards/t/TesakJudithsHellhound.java | 79 +++++++++++++++++++ .../sets/MurdersAtKarlovManorCommander.java | 2 + .../abilities/keyword/UnleashAbility.java | 2 +- 3 files changed, 82 insertions(+), 1 deletion(-) create mode 100644 Mage.Sets/src/mage/cards/t/TesakJudithsHellhound.java diff --git a/Mage.Sets/src/mage/cards/t/TesakJudithsHellhound.java b/Mage.Sets/src/mage/cards/t/TesakJudithsHellhound.java new file mode 100644 index 000000000000..fda6b0e25f78 --- /dev/null +++ b/Mage.Sets/src/mage/cards/t/TesakJudithsHellhound.java @@ -0,0 +1,79 @@ +package mage.cards.t; + +import mage.MageInt; +import mage.Mana; +import mage.abilities.Ability; +import mage.abilities.common.AttacksTriggeredAbility; +import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; +import mage.abilities.effects.common.continuous.GainAbilityControlledEffect; +import mage.abilities.effects.common.continuous.GainAbilityControlledSpellsEffect; +import mage.abilities.effects.mana.DynamicManaEffect; +import mage.abilities.keyword.HasteAbility; +import mage.abilities.keyword.UnleashAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.SubType; +import mage.constants.SuperType; +import mage.filter.FilterCard; +import mage.filter.StaticFilters; +import mage.filter.common.FilterControlledCreaturePermanent; +import mage.filter.common.FilterCreatureCard; +import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.permanent.CounterAnyPredicate; + +import java.util.UUID; + +/** + * @author PurpleCrowbar + */ +public final class TesakJudithsHellhound extends CardImpl { + + private static final FilterCreaturePermanent filter1 = new FilterCreaturePermanent(SubType.DOG, "Dogs"); + private static final FilterControlledCreaturePermanent filter2 = new FilterControlledCreaturePermanent("Creatures you control with counters on them"); + private static final FilterCard filter3 = new FilterCreatureCard(); + + static { + filter2.add(CounterAnyPredicate.instance); + filter3.add(SubType.DOG.getPredicate()); + } + + public TesakJudithsHellhound(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}"); + this.supertype.add(SuperType.LEGENDARY); + this.subtype.add(SubType.ELEMENTAL, SubType.DOG); + this.power = new MageInt(3); + this.toughness = new MageInt(3); + + // Unleash + this.addAbility(new UnleashAbility()); + + // Other Dogs you control have unleash. + Ability ability = new SimpleStaticAbility(new GainAbilityControlledEffect( + new UnleashAbility(), Duration.WhileOnBattlefield, filter1, true + )); + ability.addEffect(new GainAbilityControlledSpellsEffect(new UnleashAbility(), filter3).setText("")); + this.addAbility(ability); + + // Creatures you control with counters on them have haste. + this.addAbility(new SimpleStaticAbility(new GainAbilityControlledEffect( + HasteAbility.getInstance(), Duration.WhileOnBattlefield, filter2 + ))); + + // Whenever Tesak, Judith's Hellhound attacks, add {R} for each attacking creature. + this.addAbility(new AttacksTriggeredAbility( + new DynamicManaEffect(Mana.RedMana(1), new PermanentsOnBattlefieldCount(StaticFilters.FILTER_ATTACKING_CREATURE)) + )); + } + + private TesakJudithsHellhound(final TesakJudithsHellhound card) { + super(card); + } + + @Override + public TesakJudithsHellhound copy() { + return new TesakJudithsHellhound(this); + } +} diff --git a/Mage.Sets/src/mage/sets/MurdersAtKarlovManorCommander.java b/Mage.Sets/src/mage/sets/MurdersAtKarlovManorCommander.java index 97dfa8120722..1b9927585e89 100644 --- a/Mage.Sets/src/mage/sets/MurdersAtKarlovManorCommander.java +++ b/Mage.Sets/src/mage/sets/MurdersAtKarlovManorCommander.java @@ -257,6 +257,8 @@ private MurdersAtKarlovManorCommander() { cards.add(new SetCardInfo("Temple of Triumph", 306, Rarity.RARE, mage.cards.t.TempleOfTriumph.class)); cards.add(new SetCardInfo("Temple of the False God", 305, Rarity.UNCOMMON, mage.cards.t.TempleOfTheFalseGod.class)); cards.add(new SetCardInfo("Temur War Shaman", 187, Rarity.RARE, mage.cards.t.TemurWarShaman.class)); + cards.add(new SetCardInfo("Tesak, Judith's Hellhound", 36, Rarity.RARE, mage.cards.t.TesakJudithsHellhound.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Tesak, Judith's Hellhound", 346, Rarity.RARE, mage.cards.t.TesakJudithsHellhound.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Tezzeret, Betrayer of Flesh", 120, Rarity.MYTHIC, mage.cards.t.TezzeretBetrayerOfFlesh.class)); cards.add(new SetCardInfo("Thelonite Hermit", 188, Rarity.RARE, mage.cards.t.TheloniteHermit.class)); cards.add(new SetCardInfo("Thought Monitor", 121, Rarity.RARE, mage.cards.t.ThoughtMonitor.class)); diff --git a/Mage/src/main/java/mage/abilities/keyword/UnleashAbility.java b/Mage/src/main/java/mage/abilities/keyword/UnleashAbility.java index 77bf702e3919..cb490fc9efb5 100644 --- a/Mage/src/main/java/mage/abilities/keyword/UnleashAbility.java +++ b/Mage/src/main/java/mage/abilities/keyword/UnleashAbility.java @@ -39,7 +39,7 @@ public UnleashAbility copy() { @Override public String getRule() { - return "Unleash (You may have this creature enter the battlefield with a +1/+1 counter on it. It can't block as long as it has a +1/+1 counter on it.)"; + return "unleash (You may have this creature enter the battlefield with a +1/+1 counter on it. It can't block as long as it has a +1/+1 counter on it.)"; } }