This commit is contained in:
Jeff Wadsworth 2021-11-10 11:21:26 -06:00
parent 395136259f
commit 2839681b72

View file

@ -1,9 +1,9 @@
package mage.cards.s; package mage.cards.s;
import java.util.Set;
import mage.MageInt; import mage.MageInt;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.CompletedDungeonTriggeredAbility; import mage.abilities.common.CompletedDungeonTriggeredAbility;
import mage.abilities.common.PutCardIntoGraveFromAnywhereAllTriggeredAbility;
import mage.abilities.effects.common.ReturnFromGraveyardToBattlefieldTargetEffect; import mage.abilities.effects.common.ReturnFromGraveyardToBattlefieldTargetEffect;
import mage.abilities.effects.keyword.VentureIntoTheDungeonEffect; import mage.abilities.effects.keyword.VentureIntoTheDungeonEffect;
import mage.cards.CardImpl; import mage.cards.CardImpl;
@ -11,21 +11,23 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.SuperType; import mage.constants.SuperType;
import mage.constants.TargetController;
import mage.filter.FilterCard;
import mage.filter.StaticFilters; import mage.filter.StaticFilters;
import mage.filter.common.FilterCreatureCard;
import mage.target.common.TargetCardInYourGraveyard; import mage.target.common.TargetCardInYourGraveyard;
import java.util.UUID; import java.util.UUID;
import mage.abilities.TriggeredAbilityImpl;
import mage.abilities.effects.Effect;
import mage.cards.Card;
import mage.constants.Zone;
import mage.game.Game;
import mage.game.events.GameEvent;
import mage.game.events.ZoneChangeGroupEvent;
/** /**
* @author TheElk801 * @author TheElk801
*/ */
public final class SefrisOfTheHiddenWays extends CardImpl { public final class SefrisOfTheHiddenWays extends CardImpl {
private static final FilterCard filter = new FilterCreatureCard("one or more creature cards");
public SefrisOfTheHiddenWays(UUID ownerId, CardSetInfo setInfo) { public SefrisOfTheHiddenWays(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{W}{U}{B}"); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{W}{U}{B}");
@ -36,8 +38,8 @@ public final class SefrisOfTheHiddenWays extends CardImpl {
this.toughness = new MageInt(3); 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. // 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( this.addAbility(new SefrisOfTheHiddenWaysTriggeredAbility(
new VentureIntoTheDungeonEffect(), false, filter, TargetController.YOU new VentureIntoTheDungeonEffect().setText("")
).setTriggersOnce(true)); ).setTriggersOnce(true));
// Create Undead Whenever you complete a dungeon, return target creature card from your graveyard to the battlefield. // Create Undead Whenever you complete a dungeon, return target creature card from your graveyard to the battlefield.
@ -55,3 +57,49 @@ public final class SefrisOfTheHiddenWays extends CardImpl {
return new SefrisOfTheHiddenWays(this); return new SefrisOfTheHiddenWays(this);
} }
} }
class SefrisOfTheHiddenWaysTriggeredAbility extends TriggeredAbilityImpl {
public SefrisOfTheHiddenWaysTriggeredAbility(Effect effect) {
super(Zone.ALL, effect, false);
}
public SefrisOfTheHiddenWaysTriggeredAbility(final SefrisOfTheHiddenWaysTriggeredAbility ability) {
super(ability);
}
@Override
public SefrisOfTheHiddenWaysTriggeredAbility copy() {
return new SefrisOfTheHiddenWaysTriggeredAbility(this);
}
@Override
public boolean checkEventType(GameEvent event, Game game) {
return event.getType() == GameEvent.EventType.ZONE_CHANGE_GROUP;
}
@Override
public boolean checkTrigger(GameEvent event, Game game) {
Boolean applies = false;
Card sourceCard = game.getCard(sourceId);
if (((ZoneChangeGroupEvent) event).getToZone() != Zone.GRAVEYARD
|| sourceCard == null) {
return false;
}
ZoneChangeGroupEvent zEvent = (ZoneChangeGroupEvent) event;
Set<Card> cards = zEvent.getCards();
for (Card card : cards) {
if (card.isCreature(game)
&& sourceCard != card // 603.6c, 603.10a, and 603.10.
&& !card.isCopy()) {
applies = true;
}
}
return applies;
}
@Override
public String getTriggerPhrase() {
return "Whenever one or more creature cards are put into your graveyard from anywhere, venture into the dungeon.";
}
}