diff --git a/Mage.Sets/src/mage/cards/z/ZarielArchdukeOfAvernus.java b/Mage.Sets/src/mage/cards/z/ZarielArchdukeOfAvernus.java new file mode 100644 index 00000000000..8a36922cf41 --- /dev/null +++ b/Mage.Sets/src/mage/cards/z/ZarielArchdukeOfAvernus.java @@ -0,0 +1,60 @@ +package mage.cards.z; + +import mage.abilities.Ability; +import mage.abilities.LoyaltyAbility; +import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; +import mage.abilities.effects.common.CreateTokenEffect; +import mage.abilities.effects.common.GetEmblemEffect; +import mage.abilities.effects.common.continuous.BoostControlledEffect; +import mage.abilities.effects.common.continuous.GainAbilityControlledEffect; +import mage.abilities.keyword.HasteAbility; +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.StaticFilters; +import mage.game.command.emblems.ZarielArchdukeOfAvernusEmblem; +import mage.game.permanent.token.DevilToken; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class ZarielArchdukeOfAvernus extends CardImpl { + + public ZarielArchdukeOfAvernus(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{2}{R}{R}"); + + this.addSuperType(SuperType.LEGENDARY); + this.subtype.add(SubType.ZARIEL); + this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(4)); + + // +1: Creatures you control get +1/+0 and gain haste until end of turn. + Ability ability = new LoyaltyAbility(new BoostControlledEffect( + 1, 0, Duration.EndOfTurn + ).setText("creatures you control get +1/+0"), 1); + ability.addEffect(new GainAbilityControlledEffect( + HasteAbility.getInstance(), Duration.EndOfTurn, + StaticFilters.FILTER_PERMANENT_CREATURES + ).setText("and gain haste until end of turn")); + this.addAbility(ability); + + // 0: Create a 1/1 red Devil creature token with "When this creature dies, it deals 1 damage to any target." + this.addAbility(new LoyaltyAbility(new CreateTokenEffect(new DevilToken()), 0)); + + // −6: You get an emblem with "At the end of the first combat phase on your turn, untap target creature you control. After this phase, there is an additional combat phase." + this.addAbility(new LoyaltyAbility(new GetEmblemEffect(new ZarielArchdukeOfAvernusEmblem()), -6)); + } + + private ZarielArchdukeOfAvernus(final ZarielArchdukeOfAvernus card) { + super(card); + } + + @Override + public ZarielArchdukeOfAvernus copy() { + return new ZarielArchdukeOfAvernus(this); + } +} diff --git a/Mage.Sets/src/mage/sets/AdventuresInTheForgottenRealms.java b/Mage.Sets/src/mage/sets/AdventuresInTheForgottenRealms.java index 15e688cfe87..94d4825a6aa 100644 --- a/Mage.Sets/src/mage/sets/AdventuresInTheForgottenRealms.java +++ b/Mage.Sets/src/mage/sets/AdventuresInTheForgottenRealms.java @@ -269,6 +269,7 @@ public final class AdventuresInTheForgottenRealms extends ExpansionSet { cards.add(new SetCardInfo("Yuan-Ti Fang-Blade", 128, Rarity.COMMON, mage.cards.y.YuanTiFangBlade.class)); cards.add(new SetCardInfo("Yuan-Ti Malison", 86, Rarity.RARE, mage.cards.y.YuanTiMalison.class)); cards.add(new SetCardInfo("Zalto, Fire Giant Duke", 171, Rarity.RARE, mage.cards.z.ZaltoFireGiantDuke.class)); + cards.add(new SetCardInfo("Zariel, Archduke of Avernus", 172, Rarity.MYTHIC, mage.cards.z.ZarielArchdukeOfAvernus.class)); cards.add(new SetCardInfo("Zombie Ogre", 129, Rarity.COMMON, mage.cards.z.ZombieOgre.class)); } } diff --git a/Mage/src/main/java/mage/constants/SubType.java b/Mage/src/main/java/mage/constants/SubType.java index 961900b6956..70374d6f864 100644 --- a/Mage/src/main/java/mage/constants/SubType.java +++ b/Mage/src/main/java/mage/constants/SubType.java @@ -467,7 +467,8 @@ public enum SubType { XENAGOS("Xenagos", SubTypeSet.PlaneswalkerType), YANGGU("Yanggu", SubTypeSet.PlaneswalkerType), YANLING("Yanling", SubTypeSet.PlaneswalkerType), - YODA("Yoda", SubTypeSet.PlaneswalkerType, true); // Star Wars + YODA("Yoda", SubTypeSet.PlaneswalkerType, true), // Star Wars, + ZARIEL("Zariel", SubTypeSet.PlaneswalkerType); public static class SubTypePredicate implements Predicate { diff --git a/Mage/src/main/java/mage/game/command/emblems/ZarielArchdukeOfAvernusEmblem.java b/Mage/src/main/java/mage/game/command/emblems/ZarielArchdukeOfAvernusEmblem.java new file mode 100644 index 00000000000..efceb70f38f --- /dev/null +++ b/Mage/src/main/java/mage/game/command/emblems/ZarielArchdukeOfAvernusEmblem.java @@ -0,0 +1,60 @@ +package mage.game.command.emblems; + +import mage.abilities.TriggeredAbilityImpl; +import mage.abilities.effects.common.AdditionalCombatPhaseEffect; +import mage.abilities.effects.common.UntapTargetEffect; +import mage.constants.TurnPhase; +import mage.constants.Zone; +import mage.game.Game; +import mage.game.command.Emblem; +import mage.game.events.GameEvent; +import mage.target.common.TargetControlledCreaturePermanent; + +/** + * @author TheElk801 + */ +public final class ZarielArchdukeOfAvernusEmblem extends Emblem { + + // −6: You get an emblem with "At the end of the first combat phase on your turn, untap target creature you control. After this phase, there is an additional combat phase." + public ZarielArchdukeOfAvernusEmblem() { + this.setName("Emblem Zariel"); + this.setExpansionSetCodeForImage("AFR"); + this.getAbilities().add(new ZarielArchdukeOfAvernusEmblemAbility()); + } +} + +class ZarielArchdukeOfAvernusEmblemAbility extends TriggeredAbilityImpl { + + ZarielArchdukeOfAvernusEmblemAbility() { + super(Zone.COMMAND, new UntapTargetEffect()); + this.addEffect(new AdditionalCombatPhaseEffect()); + this.addTarget(new TargetControlledCreaturePermanent()); + } + + private ZarielArchdukeOfAvernusEmblemAbility(final ZarielArchdukeOfAvernusEmblemAbility ability) { + super(ability); + } + + @Override + public ZarielArchdukeOfAvernusEmblemAbility copy() { + return new ZarielArchdukeOfAvernusEmblemAbility(this); + } + + @Override + public boolean checkEventType(GameEvent event, Game game) { + return event.getType() == GameEvent.EventType.END_COMBAT_STEP_PRE; + } + + @Override + public boolean checkTrigger(GameEvent event, Game game) { + return game.isActivePlayer(getControllerId()) + && game.getTurn().getPhase(TurnPhase.COMBAT).getCount() == 0; + } + + @Override + public String getRule() { + return "At the end of the first combat phase on your turn, untap target creature you control. " + + "After this phase, there is an additional combat phase."; + } + +} \ No newline at end of file