[AFR] Implemented Zariel, Archduke of Avernus

This commit is contained in:
Evan Kranzler 2021-07-15 19:28:40 -04:00
parent 3299641ad4
commit f9bf84e6f6
4 changed files with 123 additions and 1 deletions

View file

@ -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);
}
}

View file

@ -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));
}
}

View file

@ -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<MageObject> {

View file

@ -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.";
}
}