From b95d7d202dd3d5497b0072fffccf7cc259d19b74 Mon Sep 17 00:00:00 2001 From: theelk801 Date: Tue, 10 Sep 2024 18:26:47 -0400 Subject: [PATCH] [DSK] Implement Abhorrent Oculus --- .../src/mage/cards/a/AbhorrentOculus.java | 52 +++++++++++++++++++ .../src/mage/sets/DuskmournHouseOfHorror.java | 1 + 2 files changed, 53 insertions(+) create mode 100644 Mage.Sets/src/mage/cards/a/AbhorrentOculus.java diff --git a/Mage.Sets/src/mage/cards/a/AbhorrentOculus.java b/Mage.Sets/src/mage/cards/a/AbhorrentOculus.java new file mode 100644 index 00000000000..e318c452ab8 --- /dev/null +++ b/Mage.Sets/src/mage/cards/a/AbhorrentOculus.java @@ -0,0 +1,52 @@ +package mage.cards.a; + +import mage.MageInt; +import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; +import mage.abilities.costs.common.ExileFromGraveCost; +import mage.abilities.effects.keyword.ManifestDreadEffect; +import mage.abilities.keyword.FlyingAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.SubType; +import mage.constants.TargetController; +import mage.filter.StaticFilters; +import mage.target.common.TargetCardInYourGraveyard; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class AbhorrentOculus extends CardImpl { + + public AbhorrentOculus(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}"); + + this.subtype.add(SubType.EYE); + this.power = new MageInt(5); + this.toughness = new MageInt(5); + + // As an additional cost to cast this spell, exile six cards from your graveyard. + this.getSpellAbility().addCost(new ExileFromGraveCost( + new TargetCardInYourGraveyard(StaticFilters.FILTER_CARDS_FROM_YOUR_GRAVEYARD) + )); + + // Flying + this.addAbility(FlyingAbility.getInstance()); + + // At the beginning of each opponent's upkeep, manifest dread. + this.addAbility(new BeginningOfUpkeepTriggeredAbility( + new ManifestDreadEffect(), TargetController.OPPONENT, false + )); + } + + private AbhorrentOculus(final AbhorrentOculus card) { + super(card); + } + + @Override + public AbhorrentOculus copy() { + return new AbhorrentOculus(this); + } +} diff --git a/Mage.Sets/src/mage/sets/DuskmournHouseOfHorror.java b/Mage.Sets/src/mage/sets/DuskmournHouseOfHorror.java index aede1b8bc82..30cfc793f78 100644 --- a/Mage.Sets/src/mage/sets/DuskmournHouseOfHorror.java +++ b/Mage.Sets/src/mage/sets/DuskmournHouseOfHorror.java @@ -22,6 +22,7 @@ public final class DuskmournHouseOfHorror extends ExpansionSet { this.hasBoosters = false; // temporary cards.add(new SetCardInfo("Abandoned Campground", 255, Rarity.COMMON, mage.cards.a.AbandonedCampground.class)); + cards.add(new SetCardInfo("Abhorrent Oculus", 42, Rarity.MYTHIC, mage.cards.a.AbhorrentOculus.class)); cards.add(new SetCardInfo("Altanak, the Thrice-Called", 166, Rarity.UNCOMMON, mage.cards.a.AltanakTheThriceCalled.class)); cards.add(new SetCardInfo("Anthropede", 167, Rarity.COMMON, mage.cards.a.Anthropede.class)); cards.add(new SetCardInfo("Appendage Amalgam", 83, Rarity.COMMON, mage.cards.a.AppendageAmalgam.class));