From 34a0e9546a94ef3bb9f9b779e1c680db8006030e Mon Sep 17 00:00:00 2001 From: Evan Kranzler Date: Mon, 19 Jul 2021 12:50:18 -0400 Subject: [PATCH] [AFC] Implemented Sefris of the Hidden Ways --- .../mage/cards/s/SefrisOfTheHiddenWays.java | 57 +++++++++++++++++++ .../mage/sets/ForgottenRealmsCommander.java | 1 + ...oGraveFromAnywhereAllTriggeredAbility.java | 6 +- 3 files changed, 61 insertions(+), 3 deletions(-) create mode 100644 Mage.Sets/src/mage/cards/s/SefrisOfTheHiddenWays.java diff --git a/Mage.Sets/src/mage/cards/s/SefrisOfTheHiddenWays.java b/Mage.Sets/src/mage/cards/s/SefrisOfTheHiddenWays.java new file mode 100644 index 00000000000..6ddb6ca649c --- /dev/null +++ b/Mage.Sets/src/mage/cards/s/SefrisOfTheHiddenWays.java @@ -0,0 +1,57 @@ +package mage.cards.s; + +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.common.CompletedDungeonTriggeredAbility; +import mage.abilities.common.PutCardIntoGraveFromAnywhereAllTriggeredAbility; +import mage.abilities.effects.common.ReturnFromGraveyardToBattlefieldTargetEffect; +import mage.abilities.effects.keyword.VentureIntoTheDungeonEffect; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.SubType; +import mage.constants.SuperType; +import mage.constants.TargetController; +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 SefrisOfTheHiddenWays extends CardImpl { + + private static final FilterCard filter = new FilterCreatureCard("one or more creature cards"); + + public SefrisOfTheHiddenWays(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{W}{U}{B}"); + + this.addSuperType(SuperType.LEGENDARY); + this.subtype.add(SubType.HUMAN); + this.subtype.add(SubType.WIZARD); + this.power = new MageInt(2); + this.toughness = new MageInt(3); + + // Whenever one or more creature cards are put into your graveyard from anywhere, venture into the dungeon. This ability triggers only once each turn. + this.addAbility(new PutCardIntoGraveFromAnywhereAllTriggeredAbility( + new VentureIntoTheDungeonEffect(), false, filter, TargetController.YOU + ).setTriggersOnce(true)); + + // Create Undead — Whenever you complete a dungeon, return target creature card from your graveyard to the battlefield. + Ability ability = new CompletedDungeonTriggeredAbility(new ReturnFromGraveyardToBattlefieldTargetEffect()); + ability.addTarget(new TargetCardInYourGraveyard(StaticFilters.FILTER_CARD_CREATURE_YOUR_GRAVEYARD)); + this.addAbility(ability.withFlavorWord("Create Undead")); + } + + private SefrisOfTheHiddenWays(final SefrisOfTheHiddenWays card) { + super(card); + } + + @Override + public SefrisOfTheHiddenWays copy() { + return new SefrisOfTheHiddenWays(this); + } +} diff --git a/Mage.Sets/src/mage/sets/ForgottenRealmsCommander.java b/Mage.Sets/src/mage/sets/ForgottenRealmsCommander.java index 9eb47ee64cb..18484e3f9ab 100644 --- a/Mage.Sets/src/mage/sets/ForgottenRealmsCommander.java +++ b/Mage.Sets/src/mage/sets/ForgottenRealmsCommander.java @@ -191,6 +191,7 @@ public final class ForgottenRealmsCommander extends ExpansionSet { cards.add(new SetCardInfo("Savage Ventmaw", 191, Rarity.UNCOMMON, mage.cards.s.SavageVentmaw.class)); cards.add(new SetCardInfo("Scourge of Valkas", 137, Rarity.RARE, mage.cards.s.ScourgeOfValkas.class)); cards.add(new SetCardInfo("Seaside Citadel", 258, Rarity.UNCOMMON, mage.cards.s.SeasideCitadel.class)); + cards.add(new SetCardInfo("Sefris of the Hidden Ways", 3, Rarity.MYTHIC, mage.cards.s.SefrisOfTheHiddenWays.class)); cards.add(new SetCardInfo("Serum Visions", 94, Rarity.UNCOMMON, mage.cards.s.SerumVisions.class)); cards.add(new SetCardInfo("Shadowblood Ridge", 259, Rarity.RARE, mage.cards.s.ShadowbloodRidge.class)); cards.add(new SetCardInfo("Shamanic Revelation", 171, Rarity.RARE, mage.cards.s.ShamanicRevelation.class)); diff --git a/Mage/src/main/java/mage/abilities/common/PutCardIntoGraveFromAnywhereAllTriggeredAbility.java b/Mage/src/main/java/mage/abilities/common/PutCardIntoGraveFromAnywhereAllTriggeredAbility.java index 7cbafb00ad2..c6f29a79277 100644 --- a/Mage/src/main/java/mage/abilities/common/PutCardIntoGraveFromAnywhereAllTriggeredAbility.java +++ b/Mage/src/main/java/mage/abilities/common/PutCardIntoGraveFromAnywhereAllTriggeredAbility.java @@ -14,7 +14,6 @@ import mage.game.events.ZoneChangeEvent; import mage.target.targetpointer.FixedTarget; /** - * * @author LevelX2 */ public class PutCardIntoGraveFromAnywhereAllTriggeredAbility extends TriggeredAbilityImpl { @@ -42,7 +41,8 @@ public class PutCardIntoGraveFromAnywhereAllTriggeredAbility extends TriggeredAb this.filter.add(targetController.getOwnerPredicate()); StringBuilder sb = new StringBuilder("Whenever "); sb.append(filter.getMessage()); - sb.append(" is put into "); + sb.append(filter.getMessage().startsWith("one or more") ? " are" : "is"); + sb.append(" put into "); switch (targetController) { case OPPONENT: sb.append("an opponent's"); @@ -103,6 +103,6 @@ public class PutCardIntoGraveFromAnywhereAllTriggeredAbility extends TriggeredAb @Override public String getTriggerPhrase() { - return ruleText ; + return ruleText; } }