From f78ff4860fc5f510d4f552a6cbb3143bb4566dd4 Mon Sep 17 00:00:00 2001 From: Daniel Bomar Date: Wed, 7 Jul 2021 09:10:50 -0500 Subject: [PATCH] [AFR] Implemented Inferno of the Star Mounts --- .../mage/cards/i/InfernoOfTheStarMounts.java | 90 +++++++++++++++++++ .../sets/AdventuresInTheForgottenRealms.java | 1 + 2 files changed, 91 insertions(+) create mode 100644 Mage.Sets/src/mage/cards/i/InfernoOfTheStarMounts.java diff --git a/Mage.Sets/src/mage/cards/i/InfernoOfTheStarMounts.java b/Mage.Sets/src/mage/cards/i/InfernoOfTheStarMounts.java new file mode 100644 index 00000000000..1b408e79cc4 --- /dev/null +++ b/Mage.Sets/src/mage/cards/i/InfernoOfTheStarMounts.java @@ -0,0 +1,90 @@ +package mage.cards.i; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.common.CantBeCounteredSourceAbility; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.common.delayed.ReflexiveTriggeredAbility; +import mage.abilities.costs.mana.ManaCostsImpl; +import mage.abilities.effects.OneShotEffect; +import mage.abilities.effects.common.DamageTargetEffect; +import mage.abilities.effects.common.continuous.BoostSourceEffect; +import mage.abilities.keyword.FlyingAbility; +import mage.abilities.keyword.HasteAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.*; +import mage.game.Game; +import mage.game.permanent.Permanent; +import mage.target.common.TargetAnyTarget; + +/** + * + * @author weirddan455 + */ +public final class InfernoOfTheStarMounts extends CardImpl { + + public InfernoOfTheStarMounts(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{R}{R}"); + + this.addSuperType(SuperType.LEGENDARY); + this.subtype.add(SubType.DRAGON); + this.power = new MageInt(6); + this.toughness = new MageInt(6); + + // This spell can't be countered. + this.addAbility(new CantBeCounteredSourceAbility()); + + // Flying + this.addAbility(FlyingAbility.getInstance()); + + // Haste + this.addAbility(HasteAbility.getInstance()); + + // {R}: Inferno of the Star Mounts gets +1/+0 until end of turn. When its power becomes 20 this way, it deals 20 damage to any target. + Ability ability = new SimpleActivatedAbility(new BoostSourceEffect(1, 0, Duration.EndOfTurn), new ManaCostsImpl("{R}")); + ability.addEffect(new InfernoOfTheStarMountsEffect()); + this.addAbility(ability); + } + + private InfernoOfTheStarMounts(final InfernoOfTheStarMounts card) { + super(card); + } + + @Override + public InfernoOfTheStarMounts copy() { + return new InfernoOfTheStarMounts(this); + } +} + +class InfernoOfTheStarMountsEffect extends OneShotEffect { + + public InfernoOfTheStarMountsEffect() { + super(Outcome.Damage); + this.staticText = "When its power becomes 20 this way, it deals 20 damage to any target"; + } + + private InfernoOfTheStarMountsEffect(final InfernoOfTheStarMountsEffect effect) { + super(effect); + } + + @Override + public InfernoOfTheStarMountsEffect copy() { + return new InfernoOfTheStarMountsEffect(this); + } + + @Override + public boolean apply(Game game, Ability source) { + Permanent permanent = source.getSourcePermanentIfItStillExists(game); + if (permanent != null && permanent.getPower().getValue() == 20) { + ReflexiveTriggeredAbility ability = new ReflexiveTriggeredAbility( + new DamageTargetEffect(20), false, this.staticText + ); + ability.addTarget(new TargetAnyTarget()); + game.fireReflexiveTriggeredAbility(ability, source); + return true; + } + return false; + } +} diff --git a/Mage.Sets/src/mage/sets/AdventuresInTheForgottenRealms.java b/Mage.Sets/src/mage/sets/AdventuresInTheForgottenRealms.java index 3fb16333750..8c2d683c701 100644 --- a/Mage.Sets/src/mage/sets/AdventuresInTheForgottenRealms.java +++ b/Mage.Sets/src/mage/sets/AdventuresInTheForgottenRealms.java @@ -123,6 +123,7 @@ public final class AdventuresInTheForgottenRealms extends ExpansionSet { cards.add(new SetCardInfo("Hunter's Mark", 188, Rarity.UNCOMMON, mage.cards.h.HuntersMark.class)); cards.add(new SetCardInfo("Icingdeath, Frost Tyrant", 20, Rarity.MYTHIC, mage.cards.i.IcingdeathFrostTyrant.class)); cards.add(new SetCardInfo("Improvised Weaponry", 150, Rarity.COMMON, mage.cards.i.ImprovisedWeaponry.class)); + cards.add(new SetCardInfo("Inferno of the Star Mounts", 151, Rarity.MYTHIC, mage.cards.i.InfernoOfTheStarMounts.class)); cards.add(new SetCardInfo("Inspiring Bard", 189, Rarity.COMMON, mage.cards.i.InspiringBard.class)); cards.add(new SetCardInfo("Intrepid Outlander", 191, Rarity.UNCOMMON, mage.cards.i.IntrepidOutlander.class)); cards.add(new SetCardInfo("Iron Golem", 247, Rarity.UNCOMMON, mage.cards.i.IronGolem.class));